1 /* Copyright (C) 1991, 1992 Free Software Foundation, Inc. 2 3 This program is free software; you can redistribute it and/or modify 4 it under the terms of the GNU General Public License as published by 5 the Free Software Foundation; either version 2, or (at your option) 6 any later version. 7 8 This program is distributed in the hope that it will be useful, 9 but WITHOUT ANY WARRANTY; without even the implied warranty of 10 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 GNU General Public License for more details. 12 13 You should have received a copy of the GNU General Public License 14 along with this program; if not, write to the Free Software 15 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ 16 17 #ifdef HAVE_CONFIG_H 18 # include <config.h> 19 #endif 20 21 #include <string.h> 22 #include <ctype.h> 23 24 /* Compare S1 and S2, ignoring case, returning less than, equal to or 25 greater than zero if S1 is lexiographically less than, 26 equal to or greater than S2. */ 27 int 28 strcasecmp (s1, s2) 29 const char *s1; 30 const char *s2; 31 { 32 register const unsigned char *p1 = (const unsigned char *) s1; 33 register const unsigned char *p2 = (const unsigned char *) s2; 34 unsigned char c1, c2; 35 36 if (p1 == p2) 37 return 0; 38 39 do 40 { 41 c1 = tolower (*p1++); 42 c2 = tolower (*p2++); 43 if (c1 == '\0') 44 break; 45 } 46 while (c1 == c2); 47 48 return c1 - c2; 49 } 50