-Peter Tattam [peter@jazz-1.trumpet.com.au] writes:
-
-> I believe a suitable workaround would be to ignore case for file names
-> when the rsync process is undertaken. Is this facility available or
-> planned in the near future?
-
-I've attached a context diff for some changes I made to our local copy
-a while back to add an "--ignore-case" option just for this purpose.
-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.
-
-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 it was for local use.
-
-NOTE: patch updated for latest CVS source by Wayne Davison, but UNTESTED!
-
--- David
-
-/-----------------------------------------------------------------------\
- \ David Bolen \ E-mail: db3l@fitlinxx.com /
- | FitLinxx, Inc. \ Phone: (203) 708-5192 |
- / 860 Canal Street, Stamford, CT 06902 \ Fax: (203) 316-5150 \
-\-----------------------------------------------------------------------/
-
- - - - - - - - - - - - - - - - - - - - - - - - - -
-
---- options.c 14 Apr 2004 23:33:34 -0000 1.146
-+++ options.c 15 Apr 2004 19:16:00 -0000
-@@ -89,6 +89,7 @@ int opt_ignore_existing = 0;
- int max_delete = 0;
+--- orig/lib/wildmatch.c 2005-01-28 23:01:12
++++ lib/wildmatch.c 2004-08-13 16:43:27
+@@ -53,6 +53,8 @@
+ #define ISUPPER(c) (ISASCII(c) && isupper(c))
+ #define ISXDIGIT(c) (ISASCII(c) && isxdigit(c))
+
++extern int ignore_case;
++
+ #ifdef WILD_TEST_ITERATIONS
+ int wildmatch_iteration_count;
+ #endif
+@@ -76,9 +78,19 @@ static int domatch(const uchar *p, const
+ ch = *++p;
+ /* FALLTHROUGH */
+ default:
+- if (*text != ch)
+- return FALSE;
+- continue;
++ if (*text == ch)
++ continue;
++ if (ignore_case) {
++ if (ISUPPER(*text)) {
++ if (tolower(*text) == ch)
++ continue;
++ }
++ else if (ISUPPER(ch)) {
++ if (*text == tolower(ch))
++ continue;
++ }
++ }
++ return FALSE;
+ case '?':
+ /* Match anything but '/'. */
+ if (*text == '/')
+--- orig/options.c 2005-02-01 10:39:22
++++ options.c 2004-10-14 17:22:51
+@@ -97,6 +97,7 @@ int max_delete = 0;
+ OFF_T max_size = 0;