William Orr added the comment:

After a considerable amount of rework, I've gotten something worth submitting. 
All unit tests pass, and it handles some of the more unfortunate differences 
between FreeBSD's extended attribute syscalls and Linux's.

One of the bigger changes is that I reworked the calls to getxattr and 
listxattr. These used to be called with a small buffer, and if the size of the 
extended attribute(s) exceeded the buffer length, we'd throw out that buffer 
and start again with a buffer of the maximum possible attribute size allocated.

I threw this out, and opted for always making two calls - one to get the size 
of the buffer, and one to actually get the contents (or list of attributes). 
This works the same for both FreeBSD and Linux. FreeBSD's extattr_get_* and 
extattr_list_* unfortunately only return the number of bytes read, *not* the 
number of bytes in the attribute value or the list. That means that there's no 
real way to determine if we've read less data than there is in the attribute.

This passes the unit tests (on FreeBSD 10.1). I'd be interested to see results 
from other users and comments.

----------
Added file: http://bugs.python.org/file40946/extattrs.patch

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue12978>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to