In our case it came up in the context of disting between NTFS and FAT
remote systems. I think we ended up not needing it, but it does make
rsync match filenames in a case insensitive manner, so it might at
-least be worth trying to see if it resolves your issue. [NOTE: patch
-updated for latest CVS source way Wayne Davison, but UNTESTED!]
+least be worth trying to see if it resolves your issue.
A few caveats - both ends have to support the option - I couldn't make
it backwards compatible because both ends exchange information about a
sorted file list that has to sort the same way on either side (which
very subtly bit me when I first did this). I also didn't bump the
protocol in this patch (wasn't quite sure it was appropriate just for an
-incompatible command line option) since since it was for local use.
+incompatible command line option) since it was for local use.
-The patch is based on a 2.4.x series rsync, but if it doesn't apply
-cleanly to 2.5.x, it's should be simple enough to just apply manually.
+NOTE: patch updated for latest CVS source by Wayne Davison, but UNTESTED!
-- David
- - - - - - - - - - - - - - - - - - - - - - - - -
-Index: options.c
--- options.c 22 Feb 2004 08:56:43 -0000 1.139
+++ options.c 23 Feb 2004 19:25:19 -0000
@@ -87,6 +87,7 @@ int opt_ignore_existing = 0;
if (keep_partial)
args[ac++] = "--partial";
-Index: util.c
--- util.c 17 Feb 2004 23:13:10 -0000 1.132
+++ util.c 23 Feb 2004 19:25:20 -0000
@@ -890,6 +890,19 @@ int u_strcmp(const char *cs1, const char
+ uchar c1 = islower(*s1) ? toupper(*s1) : *s1;
+ uchar c2 = islower(*s2) ? toupper(*s2) : *s2;
+ if (c1 != c2)
-+ return c1 - c2;
++ return (int)c1 - (int)c2;
+ s1++; s2++;
+ }
+
while (*s1 && *s2 && (*s1 == *s2)) {
s1++; s2++;
-Index: lib/wildmatch.c
--- lib/wildmatch.c 14 Jul 2003 15:12:59 -0000 1.12
+++ lib/wildmatch.c 23 Feb 2004 19:25:20 -0000
@@ -76,8 +76,20 @@ static int domatch(const unsigned char *