extattr_set_* return type
mdf at FreeBSD.org
mdf at FreeBSD.org
Sat Mar 30 21:38:29 UTC 2013
Despite the man page correctly describing the return value for
extattr_set_*, I thought recently that they returned 0/-1 for
success/failure, not the number of bytes written, like write(2). This is
because extattr_set_* is declared as returning an int, not an ssize_t.
Both extattr_get and extattr_list return ssize_t, so this is inconsistent.
The patch at
http://people.freebsd.org/~mdf/0001-Fix-return-type-of-extattr_set_-and-fix-rmextattr-8-.patchfixes
this. It compiles but it's untested.
I don't think any compat shims are needed, since an old application will
still sign extend and this will work (it's very unlikely anyone does
extattr_set for 2GB or more).
If anyone actually uses extattr on 64-bit, please test a new kernel but old
userspace to be sure nothing is broken. I plan to commit this next week if
I don't hear otherwise.
Thanks,
matthew
More information about the freebsd-hackers
mailing list