Xattr on FreeBSD ... Good Luck ?

Wesley W. Terpstra wesley at terpstra.ca
Thu Nov 2 01:14:29 GMT 2006

On Nov 2, 2006, at 1:39 AM, Wayne Davison wrote:
> On Thu, Nov 02, 2006 at 12:24:36AM +0100, Wesley W. Terpstra wrote:
>> Urp! Found a bug already. Sorry. It will segfault on FreeBSD without
>> this small little fix.
> One more fix was needed:  the new sys_llistxattr() function needs to
> return "len" when it is larger than "size", or longer lists of keys  
> will
> not get processed (i.e. we use a size of 0 to ask for the size of the
> data).

Ahh right. I added that to prevent possible buffer overrun when  
parsing the string. Your way dodges the problem as well, so all is good.

Did you try it on FreeBSD? I don't have a machine.

Why did you move the loop increment in sys_llistxattr to inside the  
loop? It's valid the way I had it, and expressed the concept of  
iteration cleanly. The optimizer also detects uninitialized values in  
this case as well, so it's not a maintenance problem. Also, my idiom  
works with continue.
Not important, I know. :-)

I note that both you and I missed:
+            AC_MSG_RESULT(Xattrs requested but not Linux or OS X.   
Good luck...)
+            AC_MSG_RESULT(Xattrs requested, but not implemented on  
this platform. Good luck...)

> I like your change that gets rid of the ".0S%" part of the Mac OS  
> keys.
> What is your reason for wanting to get rid of the '%' from the fake
> stat attribute?  Do some implementations not allow a % in the key?

No, but others are using 'reverse-DNS naming style' and this seems to  
be standard-ish. That means a '.' and not a '%'.
Did you check the second link in my original email?: http:// 

Here's a general question: should linux really be sync'ing system and  
root namespaces?
I don't think even root has permission to write arbitrary stuff in  

For the FreeBSD case, I dropped the system namespace.

If you want to continue to sync root.*, then there is a problem right  
now with linux->{mac,bsd}->linux. I didn't catch that case before,  

root.foo (linux) -> root.foo (osx) -> user.root.foo (linux)

More information about the rsync mailing list