1 2 3 /* Copyright 1998 by the Massachusetts Institute of Technology. 4 * 5 * Permission to use, copy, modify, and distribute this 6 * software and its documentation for any purpose and without 7 * fee is hereby granted, provided that the above copyright 8 * notice appear in all copies and that both that copyright 9 * notice and this permission notice appear in supporting 10 * documentation, and that the name of M.I.T. not be used in 11 * advertising or publicity pertaining to distribution of the 12 * software without specific, written prior permission. 13 * M.I.T. makes no representations about the suitability of 14 * this software for any purpose. It is provided "as is" 15 * without express or implied warranty. 16 */ 17 18 #include "ares_setup.h" 19 #include "ares_strcasecmp.h" 20 21 #ifndef HAVE_STRCASECMP 22 int ares_strcasecmp(const char *a, const char *b) 23 { 24 #if defined(HAVE_STRCMPI) 25 return strcmpi(a, b); 26 #elif defined(HAVE_STRICMP) 27 return stricmp(a, b); 28 #else 29 size_t i; 30 31 for (i = 0; i < (size_t)-1; i++) { 32 int c1 = ISUPPER(a[i]) ? tolower(a[i]) : a[i]; 33 int c2 = ISUPPER(b[i]) ? tolower(b[i]) : b[i]; 34 if (c1 != c2) 35 return c1-c2; 36 if (!c1) 37 break; 38 } 39 return 0; 40 #endif 41 } 42 #endif 43 44 #ifndef HAVE_STRNCASECMP 45 int ares_strncasecmp(const char *a, const char *b, size_t n) 46 { 47 #if defined(HAVE_STRNCMPI) 48 return strncmpi(a, b, n); 49 #elif defined(HAVE_STRNICMP) 50 return strnicmp(a, b, n); 51 #else 52 size_t i; 53 54 for (i = 0; i < n; i++) { 55 int c1 = ISUPPER(a[i]) ? tolower(a[i]) : a[i]; 56 int c2 = ISUPPER(b[i]) ? tolower(b[i]) : b[i]; 57 if (c1 != c2) 58 return c1-c2; 59 if (!c1) 60 break; 61 } 62 return 0; 63 #endif 64 } 65 #endif 66 67