Fwd: Making rsync compile under Mac OS X 10.3.9 with extended attributes

Vitorio Machado v.machado at permanence-informatique.fr
Mon Feb 25 13:52:22 GMT 2008


Precisions:
If I run my patched rsync on 10.4 instead of 10.3, it's my function  
that returns an error:
rsync: rsync_xal_set: lsetxattr("Src/60-bsd-flags/dir-with- 
flags","com.apple.FinderInfo") failed: Unknown error: -5000 (-5000)

And error -5000 means:
afpAccessDenied
-5000
User does not have the correct access to the file
Directory cannot be shared
Available in Mac OS X v10.0 and later.

In another hand, if I run rsync with options:

-aHXN --fileflags -> error
-aHN --fileflags -> no error
-aHX -> no error
-aHXN -> no error

So it's seems that there is a conflict between fileflags and my patch.  
I guess that both are trying to set things on the same file at the  
(almost) same time and one is blocking the other to do its work.

Otherwise backup bouncer test seems good:
Verifying:    basic-permissions ... ok
Verifying:           timestamps ...
   Sub-test:    modification time ... ok
ok
Verifying:             symlinks ... ok
Verifying:    symlink-ownership ... ok
Verifying:            hardlinks ... ok
Verifying:       resource-forks ... ok
Verifying:         finder-flags ... ok
Verifying:         finder-locks ... ok
Verifying:        creation-date ... ok
Verifying:            bsd-flags ... ok
Verifying:       extended-attrs ...
   Sub-test:             on files ... FAIL
   Sub-test:       on directories ... FAIL
   Sub-test:          on symlinks ... FAIL
FAIL
Verifying: access-control-lists ...
   Sub-test:             on files ... FAIL
   Sub-test:              on dirs ... FAIL
FAIL
Verifying:                 fifo ... ok
Verifying:              devices ... ok
Verifying:          combo-tests ...
   Sub-test:  xattrs + rsrc forks ... FAIL
   Sub-test:     lots of metadata ... FAIL
FAIL

I'm thinking about implementing real extended attributes. They are  
stored in "named forks" in HFS, no?
http://developer.apple.com/documentation/Carbon/Reference/File_Manager/Reference/reference.html#/ 
/apple_ref/c/func/FSIterateForks should do the work, no?

Good Weekend,

Vitorio

Le 23 févr. 08 à 12:35, Vitorio Machado a écrit :

> There is still a strange little bug:
> Running
> sudo ./rsync -aHXNvvvv --fileflags /Volumes/Src /Volumes/Dst/80- 
> rsync-test
> for the first time gives an error
> rsync: failed to set times on "/Volumes/Dst/80-rsync-test/Src/60-bsd- 
> flags/dir-with-flags": Operation not permitted (1)
> The dir dir-with-flags it's created and appears to have the good  
> times:
> iLaG:~/Desktop/rsync-3.0.0pre10 patched lag$ /Developer/Tools/ 
> GetFileInfo /Volumes/Dst/80-rsync-test/Src/60-bsd-flags/dir-with-flags
> directory: "/Volumes/Dst/80-rsync-test/Src/60-bsd-flags/dir-with- 
> flags"
> attributes: avbstcLinmed
> created: 02/17/2008 21:58:36
> modified: 02/17/2008 21:58:36
> iLaG:~/Desktop/rsync-3.0.0pre10 patched lag$ /Developer/Tools/ 
> GetFileInfo /Volumes/Src/60-bsd-flags/dir-with-flags
> directory: "/Volumes/Src/60-bsd-flags/dir-with-flags"
> attributes: avbstcLinmed
> created: 02/17/2008 21:58:36
> modified: 02/17/2008 21:58:36
>
> If I rerun the rsync it makes no error. If I run rsync for the first  
> time without -X option it makes no error neither. What's strange is  
> that the time setting have nothing to do with my mods.
> What I've seen is that crtimes patch uses getattrlist/setattrlist  
> that I'm avoiding because it doesn't have the same behaviour on 10.3  
> and 10.4 (man getattrlist doesn't even exist on 10.3, the function  
> was undocumented). But I don't know why it doesn't bug running  
> without -X, as crtimes.diff is still active. There is maybe a bug  
> mixing Carbon and getattrlist calls.
>
> I'm attaching the verbose log of the operations before the error.  
> And the patch, of course!
>
> Vitorio
>
> recv_files(Src/60-bsd-flags/file-with-flags)
> got file_sum
> sys_llistxattr(Src/60-bsd-flags/.file-with-flags.CqNyUX, 0x2800400,  
> 1024);
> fsreffrompath(Src/60-bsd-flags/.file-with-flags.CqNyUX, 0xbfffcc00);
> PWD=/Volumes/Dst/80-rsync-test
> name=.file-with-flags.CqNyUX
> list lenght=21, list content:
> com.apple.FinderInfo
> sys_lsetxattr(Src/60-bsd-flags/.file-with-flags.CqNyUX,  
> com.apple.FinderInfo, 32);
> value=
> fsreffrompath(Src/60-bsd-flags/.file-with-flags.CqNyUX, 0xbfffca80);
> PWD=/Volumes/Dst/80-rsync-test
> name=.file-with-flags.CqNyUX
> set modtime of Src/60-bsd-flags/.file-with-flags.CqNyUX to  
> (1203281916) Sun Feb 17 21:58:36 2008
> renaming Src/60-bsd-flags/.file-with-flags.CqNyUX to Src/60-bsd- 
> flags/file-with-flags
> touch_up_dirs: Src/60-bsd-flags (11)
> set modtime of Src/60-bsd-flags to (1203281916) Sun Feb 17 21:58:36  
> 2008
> touch_up_dirs: Src/60-bsd-flags/dir-with-flags (22)
> set modtime of Src/60-bsd-flags/dir-with-flags to (1203281916) Sun  
> Feb 17 21:58:36 2008
> recv_files(Src/60-bsd-flags/dir-with-flags)
> sys_llistxattr(Src/60-bsd-flags/dir-with-flags, 0x2800400, 1024);
> fsreffrompath(Src/60-bsd-flags/dir-with-flags, 0xbfffcc60);
> PWD=/Volumes/Dst/80-rsync-test
> name=dir-with-flags
> list lenght=21, list content:
> com.apple.FinderInfo
> sys_lsetxattr(Src/60-bsd-flags/dir-with-flags, com.apple.FinderInfo,  
> 32);
> value=
> fsreffrompath(Src/60-bsd-flags/dir-with-flags, 0xbfffcae0);
> PWD=/Volumes/Dst/80-rsync-test
> name=dir-with-flags
> set modtime of Src/60-bsd-flags/dir-with-flags to (1203281916) Sun  
> Feb 17 21:58:36 2008
> rsync: failed to set times on "/Volumes/Dst/80-rsync-test/Src/60-bsd- 
> flags/dir-with-flags": Operation not permitted (1)
> recv_files(Src/70-extended-attrs)
>
> <rsync10.3xattr_supportv0.5.diff>--
> To unsubscribe or change options: https://lists.samba.org/mailman/listinfo/rsync
> Before posting, read: http://www.catb.org/~esr/faqs/smart-questions.html




More information about the rsync mailing list