Vitorio Machado
2008-Feb-25 14:54 UTC
Fwd: Making rsync compile under Mac OS X 10.3.9 with extended attributes
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