OpenCoverage

c-strcaseeq.h

Absolute File Name:/home/opencoverage/opencoverage/guest-scripts/coreutils/src/lib/c-strcaseeq.h
Source codeSwitch to Preprocessed file
LineSourceCount
1/* Optimized case-insensitive string comparison in C locale.-
2 Copyright (C) 2001-2002, 2007, 2009-2018 Free Software Foundation, Inc.-
3-
4 This program is free software: you can redistribute it and/or modify it-
5 under the terms of the GNU General Public License as published-
6 by the Free Software Foundation; either version 3 of the License, or-
7 (at your option) 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 GNU-
12 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/* Written by Bruno Haible <bruno@clisp.org>. */-
18-
19#include "c-strcase.h"-
20#include "c-ctype.h"-
21-
22/* STRCASEEQ allows to optimize string comparison with a small literal string.-
23 STRCASEEQ (s, "UTF-8", 'U','T','F','-','8',0,0,0,0)-
24 is semantically equivalent to-
25 c_strcasecmp (s, "UTF-8") == 0-
26 just faster. */-
27-
28/* Help GCC to generate good code for string comparisons with-
29 immediate strings. */-
30#if defined (__GNUC__) && defined (__OPTIMIZE__)-
31-
32/* Case insensitive comparison of ASCII characters. */-
33# if C_CTYPE_ASCII-
34# define CASEEQ(other,upper) \-
35 (c_isupper (upper) ? ((other) & ~0x20) == (upper) : (other) == (upper))-
36# else-
37# define CASEEQ(other,upper) \-
38 (c_toupper (other) == (upper))-
39# endif-
40-
41static inline int-
42strcaseeq9 (const char *s1, const char *s2)-
43{-
44 return c_strcasecmp (s1 + 9, s2 + 9) == 0;
never executed: return c_strcasecmp (s1 + 9, s2 + 9) == 0;
0
45}-
46-
47static inline int-
48strcaseeq8 (const char *s1, const char *s2, char s28)-
49{-
50 if (CASEEQ (s1[8], s28))
(c_isupper (s2...[8]) == (s28))Description
TRUEnever evaluated
FALSEnever evaluated
c_isupper (s28)Description
TRUEnever evaluated
FALSEnever evaluated
0
51 {-
52 if (s28 == 0)
s28 == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
53 return 1;
never executed: return 1;
0
54 else-
55 return strcaseeq9 (s1, s2);
never executed: return strcaseeq9 (s1, s2);
0
56 }-
57 else-
58 return 0;
never executed: return 0;
0
59}-
60-
61static inline int-
62strcaseeq7 (const char *s1, const char *s2, char s27, char s28)-
63{-
64 if (CASEEQ (s1[7], s27))
(c_isupper (s2...[7]) == (s27))Description
TRUEnever evaluated
FALSEnever evaluated
c_isupper (s27)Description
TRUEnever evaluated
FALSEnever evaluated
0
65 {-
66 if (s27 == 0)
s27 == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
67 return 1;
never executed: return 1;
0
68 else-
69 return strcaseeq8 (s1, s2, s28);
never executed: return strcaseeq8 (s1, s2, s28);
0
70 }-
71 else-
72 return 0;
never executed: return 0;
0
73}-
74-
75static inline int-
76strcaseeq6 (const char *s1, const char *s2, char s26, char s27, char s28)-
77{-
78 if (CASEEQ (s1[6], s26))
(c_isupper (s2...[6]) == (s26))Description
TRUEnever evaluated
FALSEnever evaluated
c_isupper (s26)Description
TRUEnever evaluated
FALSEnever evaluated
0
79 {-
80 if (s26 == 0)
s26 == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
81 return 1;
never executed: return 1;
0
82 else-
83 return strcaseeq7 (s1, s2, s27, s28);
never executed: return strcaseeq7 (s1, s2, s27, s28);
0
84 }-
85 else-
86 return 0;
never executed: return 0;
0
87}-
88-
89static inline int-
90strcaseeq5 (const char *s1, const char *s2, char s25, char s26, char s27, char s28)-
91{-
92 if (CASEEQ (s1[5], s25))
(c_isupper (s2...[5]) == (s25))Description
TRUEnever evaluated
FALSEnever evaluated
c_isupper (s25)Description
TRUEnever evaluated
FALSEnever evaluated
0
93 {-
94 if (s25 == 0)
s25 == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
95 return 1;
never executed: return 1;
0
96 else-
97 return strcaseeq6 (s1, s2, s26, s27, s28);
never executed: return strcaseeq6 (s1, s2, s26, s27, s28);
0
98 }-
99 else-
100 return 0;
never executed: return 0;
0
101}-
102-
103static inline int-
104strcaseeq4 (const char *s1, const char *s2, char s24, char s25, char s26, char s27, char s28)-
105{-
106 if (CASEEQ (s1[4], s24))
(c_isupper (s2...[4]) == (s24))Description
TRUEnever evaluated
FALSEnever evaluated
c_isupper (s24)Description
TRUEnever evaluated
FALSEnever evaluated
0
107 {-
108 if (s24 == 0)
s24 == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
109 return 1;
never executed: return 1;
0
110 else-
111 return strcaseeq5 (s1, s2, s25, s26, s27, s28);
never executed: return strcaseeq5 (s1, s2, s25, s26, s27, s28);
0
112 }-
113 else-
114 return 0;
never executed: return 0;
0
115}-
116-
117static inline int-
118strcaseeq3 (const char *s1, const char *s2, char s23, char s24, char s25, char s26, char s27, char s28)-
119{-
120 if (CASEEQ (s1[3], s23))
(c_isupper (s2...[3]) == (s23))Description
TRUEnever evaluated
FALSEnever evaluated
c_isupper (s23)Description
TRUEnever evaluated
FALSEnever evaluated
0
121 {-
122 if (s23 == 0)
s23 == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
123 return 1;
never executed: return 1;
0
124 else-
125 return strcaseeq4 (s1, s2, s24, s25, s26, s27, s28);
never executed: return strcaseeq4 (s1, s2, s24, s25, s26, s27, s28);
0
126 }-
127 else-
128 return 0;
never executed: return 0;
0
129}-
130-
131static inline int-
132strcaseeq2 (const char *s1, const char *s2, char s22, char s23, char s24, char s25, char s26, char s27, char s28)-
133{-
134 if (CASEEQ (s1[2], s22))
(c_isupper (s2...[2]) == (s22))Description
TRUEnever evaluated
FALSEnever evaluated
c_isupper (s22)Description
TRUEnever evaluated
FALSEnever evaluated
0
135 {-
136 if (s22 == 0)
s22 == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
137 return 1;
never executed: return 1;
0
138 else-
139 return strcaseeq3 (s1, s2, s23, s24, s25, s26, s27, s28);
never executed: return strcaseeq3 (s1, s2, s23, s24, s25, s26, s27, s28);
0
140 }-
141 else-
142 return 0;
never executed: return 0;
0
143}-
144-
145static inline int-
146strcaseeq1 (const char *s1, const char *s2, char s21, char s22, char s23, char s24, char s25, char s26, char s27, char s28)-
147{-
148 if (CASEEQ (s1[1], s21))
(c_isupper (s2...[1]) == (s21))Description
TRUEnever evaluated
FALSEnever evaluated
c_isupper (s21)Description
TRUEnever evaluated
FALSEnever evaluated
0
149 {-
150 if (s21 == 0)
s21 == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
151 return 1;
never executed: return 1;
0
152 else-
153 return strcaseeq2 (s1, s2, s22, s23, s24, s25, s26, s27, s28);
never executed: return strcaseeq2 (s1, s2, s22, s23, s24, s25, s26, s27, s28);
0
154 }-
155 else-
156 return 0;
never executed: return 0;
0
157}-
158-
159static inline int-
160strcaseeq0 (const char *s1, const char *s2, char s20, char s21, char s22, char s23, char s24, char s25, char s26, char s27, char s28)-
161{-
162 if (CASEEQ (s1[0], s20))
(c_isupper (s2...[0]) == (s20))Description
TRUEnever evaluated
FALSEevaluated 3276 times by 58 tests
Evaluated by:
  • b2sum
  • base32
  • base64
  • basename
  • chcon
  • chmod
  • chown
  • comm
  • cp
  • csplit
  • cut
  • date
  • dd
  • df
  • dir
  • du
  • env
  • expand
  • expr
  • factor
  • fmt
  • fold
  • ginstall
  • groups
  • head
  • ...
c_isupper (s20)Description
TRUEevaluated 3276 times by 58 tests
Evaluated by:
  • b2sum
  • base32
  • base64
  • basename
  • chcon
  • chmod
  • chown
  • comm
  • cp
  • csplit
  • cut
  • date
  • dd
  • df
  • dir
  • du
  • env
  • expand
  • expr
  • factor
  • fmt
  • fold
  • ginstall
  • groups
  • head
  • ...
FALSEnever evaluated
0-3276
163 {-
164 if (s20 == 0)
s20 == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
165 return 1;
never executed: return 1;
0
166 else-
167 return strcaseeq1 (s1, s2, s21, s22, s23, s24, s25, s26, s27, s28);
never executed: return strcaseeq1 (s1, s2, s21, s22, s23, s24, s25, s26, s27, s28);
0
168 }-
169 else-
170 return 0;
executed 3276 times by 58 tests: return 0;
Executed by:
  • b2sum
  • base32
  • base64
  • basename
  • chcon
  • chmod
  • chown
  • comm
  • cp
  • csplit
  • cut
  • date
  • dd
  • df
  • dir
  • du
  • env
  • expand
  • expr
  • factor
  • fmt
  • fold
  • ginstall
  • groups
  • head
  • ...
3276
171}-
172-
173#define STRCASEEQ(s1,s2,s20,s21,s22,s23,s24,s25,s26,s27,s28) \-
174 strcaseeq0 (s1, s2, s20, s21, s22, s23, s24, s25, s26, s27, s28)-
175-
176#else-
177-
178#define STRCASEEQ(s1,s2,s20,s21,s22,s23,s24,s25,s26,s27,s28) \-
179 (c_strcasecmp (s1, s2) == 0)-
180-
181#endif-
Source codeSwitch to Preprocessed file

Generated by Squish Coco 4.1.2