Rsync with OS X 10.3

Mac User FR macuserfr at free.fr
Sat Jan 24 22:57:39 GMT 2009


Le 24 janv. 09 à 21:41, Jason a écrit :

> I've done some digging around and using the condition  
> if(unicharName[index]==0x003B) /* == ':' */ we never meet this  
> case.  I tried changing the unicharName[index]==':' and the  
> subsequent slash unicharName.  After rsync is compiled I am able to  
> handle the slash cases again.
>
> We are dealing with the single character in the array so would this  
> be safe?
>
> The only oddity now is if I run this for the first time on the  
> backupbouncer src and dst folder I get the following error:
> rsync: rsync_xal_set: lsetxattr("Src/60-bsd-flags/dir-with- 
> flags","com.apple.FinderInfo") failed: Unknown error: -5000 (-5000)
>
> When I run again I get no error.
>
> I'm using the following argumens: -aNXxH --protect-args --fileflags  
> --force-change
>
> Jason
>

Shame on me, I've made a stupid line following mistake on the ASCII  
table I looked at. Colon is 0x003A and NOT 0x003B. The code I gave you  
would change semicolon to slashes... Something useless. So, this mod  
should be the good one:

init:
+	unsigned int index=0;

code:
= 	CFStringGetCharacters(cfStringName, range, unicharName);
	while(index<range.length)
	{
		if(unicharName[index]==0x003A) /* == ':' */
			unicharName[index]=0x002F; /* == '/' */
		index++;
	}
= 	carbon_error=FSMakeFSRefUnicode(&parentRef, range.length,  
unicharName, kTextEncodingUnknown, ref);

Almost the same of your mod. Using ':' works, as you tested, but I  
prefer to use 0x003A instead of ':' because it makes a comparison  
between same variable sizes. It's a personal preference.

As always, let me know if it works. If so, I will update the patch.

Best regards,

Vitorio


More information about the rsync mailing list