Index: subversion/include/svn_string.h
===================================================================
--- subversion/include/svn_string.h	(revision 28645)
+++ subversion/include/svn_string.h	(working copy)
@@ -158,6 +158,10 @@
 svn_boolean_t svn_string_compare(const svn_string_t *str1,
                                  const svn_string_t *str2);
 
+/**  Return @c 0 if str1 and str2 is equal ignoring the case, return @c 1 otherwise */
+int ascii_casecompare(const char *str1,
+                      const char *str2);
+
 /** Return offset of first non-whitespace character in @a str, or return
  * @a str->len if none.
  */
Index: subversion/libsvn_subr/svn_string.c
===================================================================
--- subversion/libsvn_subr/svn_string.c	(revision 28645)
+++ subversion/libsvn_subr/svn_string.c	(working copy)
@@ -198,8 +198,37 @@
     string_compare(str1->data, str2->data, str1->len, str2->len);
 }
 
+int
+ascii_casecompare(const char *str1, const char *str2)
+{
+  char ch1, ch2;
+  int i, length;
 
+  length = strlen(str1);
 
+  if (length != strlen(str2))
+    return 1;
+
+  for (i=0; i < length; ++i)
+    {
+      ch1 = str1[i];
+      ch2 = str2[i];
+
+      /* ascii only lowercase */
+
+      if (ch1 >= 'A' && ch1 <= 'Z')
+        ch1 = ch1 - 'A' + 'a';
+
+      if (ch2 >= 'A' && ch2 <= 'Z')
+        ch2 = ch2 - 'A' + 'a';
+
+      if ( ch1 != ch2)
+        return 1;
+    }
+
+  return 0;
+}
+
 apr_size_t
 svn_string_first_non_whitespace(const svn_string_t *str)
 {
Index: subversion/libsvn_subr/opt.c
===================================================================
--- subversion/libsvn_subr/opt.c	(revision 28645)
+++ subversion/libsvn_subr/opt.c	(working copy)
@@ -565,7 +565,7 @@
     {
       revision->kind = svn_opt_revision_base;
     }
-  else if (strcasecmp(word, "committed") == 0)
+  else if ( ascii_casecompare(word, "committed") == 0 )
     {
       revision->kind = svn_opt_revision_committed;
     }

