X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=lib%2Fmemcasecmp.c;h=cddf76aed6a168963541569572499d68053bbf84;hb=a0a86efb418fd595d9154cf6ca70c78ea777afb9;hp=00519f51ad549038b3459aad1639bc8ca4ed4a04;hpb=267a39bafd249d7eb9c37df06dc6defcf41cb343;p=gnulib.git diff --git a/lib/memcasecmp.c b/lib/memcasecmp.c index 00519f51a..cddf76aed 100644 --- a/lib/memcasecmp.c +++ b/lib/memcasecmp.c @@ -1,5 +1,5 @@ /* Case-insensitive buffer comparator. - Copyright (C) 1996, 1997, 2000, 2003 Free Software Foundation, Inc. + Copyright (C) 1996, 1997, 2000, 2003, 2006 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -17,27 +17,13 @@ /* Written by Jim Meyering. */ -#if HAVE_CONFIG_H -# include -#endif - -#include - -#if defined STDC_HEADERS || (!defined isascii && !defined HAVE_ISASCII) -# define IN_CTYPE_DOMAIN(Char) 1 -#else -# define IN_CTYPE_DOMAIN(Char) isascii (Char) -#endif -#define ISLOWER(Char) (IN_CTYPE_DOMAIN (Char) && islower (Char)) - -#if _LIBC || STDC_HEADERS -# define TOUPPER(Char) toupper (Char) -#else -# define TOUPPER(Char) (ISLOWER (Char) ? toupper (Char) : (Char)) -#endif +#include #include "memcasecmp.h" +#include +#include + /* Like memcmp, but ignore differences in case. Convert to upper case (not lower) before comparing so that join -i works with sort -f. */ @@ -52,7 +38,10 @@ memcasecmp (const void *vs1, const void *vs2, size_t n) { unsigned char u1 = s1[i]; unsigned char u2 = s2[i]; - int diff = TOUPPER (u1) - TOUPPER (u2); + int U1 = toupper (u1); + int U2 = toupper (u2); + int diff = (UCHAR_MAX <= INT_MAX ? U1 - U2 + : U1 < U2 ? -1 : U2 < U1); if (diff) return diff; }