Simplify char16_t implementation
[glibc.git] / wcsmbs / wcscasecmp.c
blobd9fbecf629b63146916ac4b007336fbcecb7c340
1 /* Copyright (C) 1991, 1992, 1995, 1996, 1997 Free Software Foundation, Inc.
2 This file is part of the GNU C Library.
4 The GNU C Library is free software; you can redistribute it and/or
5 modify it under the terms of the GNU Lesser General Public
6 License as published by the Free Software Foundation; either
7 version 2.1 of the License, or (at your option) any later version.
9 The GNU C Library 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 GNU
12 Lesser General Public License for more details.
14 You should have received a copy of the GNU Lesser General Public
15 License along with the GNU C Library; if not, write to the Free
16 Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
17 02111-1307 USA. */
19 #ifdef HAVE_CONFIG_H
20 # include <config.h>
21 #endif
23 #include <wctype.h>
24 #include <wchar.h>
26 #ifndef weak_alias
27 # define __wcscasecmp wcscasecmp
28 # define TOLOWER(Ch) towlower (Ch)
29 #else
30 # ifdef USE_IN_EXTENDED_LOCALE_MODEL
31 # define __wcscasecmp __wcscasecmp_l
32 # define TOLOWER(Ch) __towlower_l ((Ch), loc)
33 # else
34 # define TOLOWER(Ch) towlower (Ch)
35 # endif
36 #endif
38 #ifdef USE_IN_EXTENDED_LOCALE_MODEL
39 # define LOCALE_PARAM , loc
40 # define LOCALE_PARAM_DECL __locale_t loc;
41 #else
42 # define LOCALE_PARAM
43 # define LOCALE_PARAM_DECL
44 #endif
46 /* Compare S1 and S2, ignoring case, returning less than, equal to or
47 greater than zero if S1 is lexicographically less than,
48 equal to or greater than S2. */
49 int
50 __wcscasecmp (s1, s2 LOCALE_PARAM)
51 const wchar_t *s1;
52 const wchar_t *s2;
53 LOCALE_PARAM_DECL
55 wint_t c1, c2;
57 if (s1 == s2)
58 return 0;
62 c1 = TOLOWER (*s1++);
63 c2 = TOLOWER (*s2++);
64 if (c1 == L'\0')
65 break;
67 while (c1 == c2);
69 return c1 - c2;
71 #ifndef __wcscasecmp
72 weak_alias (__wcscasecmp, wcscasecmp)
73 #endif