summaryrefslogtreecommitdiffstats
path: root/gl/strcasecmp.c
diff options
context:
space:
mode:
authorLorenz Kästle <12514511+RincewindsHat@users.noreply.github.com>2026-03-26 12:53:53 +0100
committerGitHub <noreply@github.com>2026-03-26 12:53:53 +0100
commit13e14a6bfd9f29cbfeab0c5161d2a994f97532e7 (patch)
tree3aa7186fe092e42783dc7e981dc39a74ea61c466 /gl/strcasecmp.c
parent9d8503f90ef25b2cecd324dc118e441f40233ea8 (diff)
downloadmonitoring-plugins-13e14a6bfd9f29cbfeab0c5161d2a994f97532e7.tar.gz
Update/gnulib 2026 03 (#2247)
* Sync with the 202601-stable Gnulib code (4a3650d887) * Ignore more deps stuff in gnulib * Remove autogenerated gnulib files * Ignore more gnulib generated headers
Diffstat (limited to 'gl/strcasecmp.c')
-rw-r--r--gl/strcasecmp.c35
1 files changed, 15 insertions, 20 deletions
diff --git a/gl/strcasecmp.c b/gl/strcasecmp.c
index 16626d4d..67192a31 100644
--- a/gl/strcasecmp.c
+++ b/gl/strcasecmp.c
@@ -1,5 +1,5 @@
1/* Case-insensitive string comparison function for unibyte locales. 1/* Case-insensitive string comparison function for unibyte locales.
2 Copyright (C) 1998-1999, 2005-2007, 2009-2025 Free Software Foundation, Inc. 2 Copyright (C) 1998-1999, 2005-2007, 2009-2026 Free Software Foundation, Inc.
3 3
4 This file is free software: you can redistribute it and/or modify 4 This file is free software: you can redistribute it and/or modify
5 it under the terms of the GNU Lesser General Public License as 5 it under the terms of the GNU Lesser General Public License as
@@ -32,29 +32,24 @@ strcasecmp (const char *s1, const char *s2)
32{ 32{
33 const unsigned char *p1 = (const unsigned char *) s1; 33 const unsigned char *p1 = (const unsigned char *) s1;
34 const unsigned char *p2 = (const unsigned char *) s2; 34 const unsigned char *p2 = (const unsigned char *) s2;
35 unsigned char c1, c2;
36 35
37 if (p1 == p2) 36 if (p1 == p2)
38 return 0; 37 return 0;
39 38
40 do 39 for (;; p1++, p2++)
41 { 40 {
42 c1 = tolower (*p1); 41 unsigned char c1 = tolower (*p1);
43 c2 = tolower (*p2); 42 unsigned char c2 = tolower (*p2);
44 43
45 if (c1 == '\0') 44 if (c1 == '\0' || c1 != c2)
46 break; 45 {
47 46 if (UCHAR_MAX <= INT_MAX)
48 ++p1; 47 return c1 - c2;
49 ++p2; 48 else
49 /* On machines where 'char' and 'int' are types of the same size,
50 the difference of two 'unsigned char' values - including the
51 sign bit - doesn't fit in an 'int'. */
52 return _GL_CMP (c1, c2);
53 }
50 } 54 }
51 while (c1 == c2);
52
53 if (UCHAR_MAX <= INT_MAX)
54 return c1 - c2;
55 else
56 /* On machines where 'char' and 'int' are types of the same size, the
57 difference of two 'unsigned char' values - including the sign bit -
58 doesn't fit in an 'int'. */
59 return _GL_CMP (c1, c2);
60} 55}