diff -uNr grub2.cvs/include/grub/misc.h grub2/include/grub/misc.h --- grub2.cvs/include/grub/misc.h 2005-10-24 04:23:46.000000000 -0600 +++ grub2/include/grub/misc.h 2005-12-27 16:57:45.000000000 -0700 @@ -44,6 +44,7 @@ int EXPORT_FUNC(grub_memcmp) (const void *s1, const void *s2, grub_size_t n); int EXPORT_FUNC(grub_strcmp) (const char *s1, const char *s2); int EXPORT_FUNC(grub_strncmp) (const char *s1, const char *s2, grub_size_t n); +int EXPORT_FUNC(grub_strcasecmp) (const char *s1, const char *s2); int EXPORT_FUNC(grub_strncasecmp) (const char *s1, const char *s2, int c); char *EXPORT_FUNC(grub_strchr) (const char *s, int c); char *EXPORT_FUNC(grub_strrchr) (const char *s, int c); diff -uNr grub2.cvs/kern/misc.c grub2/kern/misc.c --- grub2.cvs/kern/misc.c 2005-10-27 21:14:33.000000000 -0600 +++ grub2/kern/misc.c 2005-12-27 16:57:45.000000000 -0700 @@ -209,6 +209,21 @@ } int +grub_strcasecmp (const char *s1, const char *s2) +{ + while (grub_tolower (*s1) && grub_tolower (*s2)) + { + if (grub_tolower (*s1) != grub_tolower (*s2)) + return (int) grub_tolower (*s1) - (int) grub_tolower (*s2); + + s1++; + s2++; + } + + return (int) *s1 - (int) *s2; +} + +int grub_strncasecmp (const char *s1, const char *s2, int c) { int p = 1;