gsasl  1.10.0
About: GNU SASL is an implementation of the Simple Authentication and Security Layer (SASL). Development version.
  Fossies Dox: gsasl-1.10.0.tar.gz  ("unofficial" and yet experimental doxygen-generated source code documentation)  

c-strcasecmp.c
Go to the documentation of this file.
1 /* c-strcasecmp.c -- case insensitive string comparator in C locale
2  Copyright (C) 1998-1999, 2005-2006, 2009-2021 Free Software Foundation, Inc.
3 
4  This program is free software; you can redistribute it and/or modify
5  it under the terms of the GNU General Public License as published by
6  the Free Software Foundation; either version 3, or (at your option)
7  any later version.
8 
9  This program is distributed in the hope that it will be useful,
10  but WITHOUT ANY WARRANTY; without even the implied warranty of
11  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  GNU General Public License for more details.
13 
14  You should have received a copy of the GNU General Public License
15  along with this program; if not, see <https://www.gnu.org/licenses/>. */
16 
17 #include <config.h>
18 
19 /* Specification. */
20 #include "c-strcase.h"
21 
22 #include <limits.h>
23 
24 #include "c-ctype.h"
25 
26 int
27 c_strcasecmp (const char *s1, const char *s2)
28 {
29  register const unsigned char *p1 = (const unsigned char *) s1;
30  register const unsigned char *p2 = (const unsigned char *) s2;
31  unsigned char c1, c2;
32 
33  if (p1 == p2)
34  return 0;
35 
36  do
37  {
38  c1 = c_tolower (*p1);
39  c2 = c_tolower (*p2);
40 
41  if (c1 == '\0')
42  break;
43 
44  ++p1;
45  ++p2;
46  }
47  while (c1 == c2);
48 
49  if (UCHAR_MAX <= INT_MAX)
50  return c1 - c2;
51  else
52  /* On machines where 'char' and 'int' are types of the same size, the
53  difference of two 'unsigned char' values - including the sign bit -
54  doesn't fit in an 'int'. */
55  return _GL_CMP (c1, c2);
56 }
int c_strcasecmp(const char *s1, const char *s2)
Definition: c-strcasecmp.c:27
_GL_INLINE int c_tolower(int c)
Definition: c-ctype.h:337