OpenCoverage

filevercmp.c

Absolute File Name:/home/opencoverage/opencoverage/guest-scripts/coreutils/src/gnulib/lib/filevercmp.c
Source codeSwitch to Preprocessed file
LineSourceCount
1/*-
2 Copyright (C) 1995 Ian Jackson <iwj10@cus.cam.ac.uk>-
3 Copyright (C) 2001 Anthony Towns <aj@azure.humbug.org.au>-
4 Copyright (C) 2008-2018 Free Software Foundation, Inc.-
5-
6 This program is free software: you can redistribute it and/or modify-
7 it under the terms of the GNU General Public License as published by-
8 the Free Software Foundation, either version 3 of the License, or-
9 (at your option) any later version.-
10-
11 This program is distributed in the hope that it will be useful,-
12 but WITHOUT ANY WARRANTY; without even the implied warranty of-
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the-
14 GNU General Public License for more details.-
15-
16 You should have received a copy of the GNU General Public License-
17 along with this program. If not, see <https://www.gnu.org/licenses/>. */-
18-
19#include <config.h>-
20#include "filevercmp.h"-
21-
22#include <sys/types.h>-
23#include <stdlib.h>-
24#include <stdbool.h>-
25#include <string.h>-
26#include <c-ctype.h>-
27#include <limits.h>-
28-
29/* Match a file suffix defined by this regular expression:-
30 /(\.[A-Za-z~][A-Za-z0-9~]*)*$/-
31 Scan the string *STR and return a pointer to the matching suffix, or-
32 NULL if not found. Upon return, *STR points to terminating NUL. */-
33static const char *-
34match_suffix (const char **str)-
35{-
36 const char *match = NULL;-
37 bool read_alpha = false;-
38 while (**str)
**strDescription
TRUEevaluated 6446 times by 2 tests
Evaluated by:
  • ls
  • sort
FALSEevaluated 336 times by 2 tests
Evaluated by:
  • ls
  • sort
336-6446
39 {-
40 if (read_alpha)
read_alphaDescription
TRUEevaluated 586 times by 2 tests
Evaluated by:
  • ls
  • sort
FALSEevaluated 5860 times by 2 tests
Evaluated by:
  • ls
  • sort
586-5860
41 {-
42 read_alpha = false;-
43 if (!c_isalpha (**str) && '~' != **str)
!c_isalpha (**str)Description
TRUEevaluated 387 times by 2 tests
Evaluated by:
  • ls
  • sort
FALSEevaluated 199 times by 1 test
Evaluated by:
  • sort
'~' != **strDescription
TRUEevaluated 379 times by 2 tests
Evaluated by:
  • ls
  • sort
FALSEevaluated 8 times by 1 test
Evaluated by:
  • ls
8-387
44 match = NULL;
executed 379 times by 2 tests: match = ((void *)0) ;
Executed by:
  • ls
  • sort
379
45 }
executed 586 times by 2 tests: end of block
Executed by:
  • ls
  • sort
586
46 else if ('.' == **str)
'.' == **strDescription
TRUEevaluated 586 times by 2 tests
Evaluated by:
  • ls
  • sort
FALSEevaluated 5274 times by 2 tests
Evaluated by:
  • ls
  • sort
586-5274
47 {-
48 read_alpha = true;-
49 if (!match)
!matchDescription
TRUEevaluated 480 times by 2 tests
Evaluated by:
  • ls
  • sort
FALSEevaluated 106 times by 1 test
Evaluated by:
  • sort
106-480
50 match = *str;
executed 480 times by 2 tests: match = *str;
Executed by:
  • ls
  • sort
480
51 }
executed 586 times by 2 tests: end of block
Executed by:
  • ls
  • sort
586
52 else if (!c_isalnum (**str) && '~' != **str)
!c_isalnum (**str)Description
TRUEevaluated 933 times by 2 tests
Evaluated by:
  • ls
  • sort
FALSEevaluated 4341 times by 2 tests
Evaluated by:
  • ls
  • sort
'~' != **strDescription
TRUEevaluated 917 times by 1 test
Evaluated by:
  • sort
FALSEevaluated 16 times by 1 test
Evaluated by:
  • ls
16-4341
53 match = NULL;
executed 917 times by 1 test: match = ((void *)0) ;
Executed by:
  • sort
917
54 (*str)++;-
55 }
executed 6446 times by 2 tests: end of block
Executed by:
  • ls
  • sort
6446
56 return match;
executed 336 times by 2 tests: return match;
Executed by:
  • ls
  • sort
336
57}-
58-
59/* verrevcmp helper function */-
60static int-
61order (unsigned char c)-
62{-
63 if (c_isdigit (c))
c_isdigit (c)Description
TRUEevaluated 20 times by 2 tests
Evaluated by:
  • ls
  • sort
FALSEevaluated 2132 times by 2 tests
Evaluated by:
  • ls
  • sort
20-2132
64 return 0;
executed 20 times by 2 tests: return 0;
Executed by:
  • ls
  • sort
20
65 else if (c_isalpha (c))
c_isalpha (c)Description
TRUEevaluated 1689 times by 2 tests
Evaluated by:
  • ls
  • sort
FALSEevaluated 443 times by 2 tests
Evaluated by:
  • ls
  • sort
443-1689
66 return c;
executed 1689 times by 2 tests: return c;
Executed by:
  • ls
  • sort
1689
67 else if (c == '~')
c == '~'Description
TRUEevaluated 4 times by 1 test
Evaluated by:
  • ls
FALSEevaluated 439 times by 2 tests
Evaluated by:
  • ls
  • sort
4-439
68 return -1;
executed 4 times by 1 test: return -1;
Executed by:
  • ls
4
69 else-
70 return (int) c + UCHAR_MAX + 1;
executed 439 times by 2 tests: return (int) c + (0x7f * 2 + 1) + 1;
Executed by:
  • ls
  • sort
439
71}-
72-
73/* slightly modified verrevcmp function from dpkg-
74 S1, S2 - compared string-
75 S1_LEN, S2_LEN - length of strings to be scanned-
76-
77 This implements the algorithm for comparison of version strings-
78 specified by Debian and now widely adopted. The detailed-
79 specification can be found in the Debian Policy Manual in the-
80 section on the 'Version' control field. This version of the code-
81 implements that from s5.6.12 of Debian Policy v3.8.0.1-
82 https://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Version */-
83static int _GL_ATTRIBUTE_PURE-
84verrevcmp (const char *s1, size_t s1_len, const char *s2, size_t s2_len)-
85{-
86 size_t s1_pos = 0;-
87 size_t s2_pos = 0;-
88 while (s1_pos < s1_len || s2_pos < s2_len)
s1_pos < s1_lenDescription
TRUEevaluated 229 times by 2 tests
Evaluated by:
  • ls
  • sort
FALSEevaluated 4 times by 1 test
Evaluated by:
  • sort
s2_pos < s2_lenDescription
TRUEevaluated 4 times by 1 test
Evaluated by:
  • sort
FALSEnever evaluated
0-229
89 {-
90 int first_diff = 0;-
91 while ((s1_pos < s1_len && !c_isdigit (s1[s1_pos]))
s1_pos < s1_lenDescription
TRUEevaluated 1196 times by 2 tests
Evaluated by:
  • ls
  • sort
FALSEevaluated 20 times by 2 tests
Evaluated by:
  • ls
  • sort
!c_isdigit (s1[s1_pos])Description
TRUEevaluated 1048 times by 2 tests
Evaluated by:
  • ls
  • sort
FALSEevaluated 148 times by 2 tests
Evaluated by:
  • ls
  • sort
20-1196
92 || (s2_pos < s2_len && !c_isdigit (s2[s2_pos])))
s2_pos < s2_lenDescription
TRUEevaluated 168 times by 2 tests
Evaluated by:
  • ls
  • sort
FALSEnever evaluated
!c_isdigit (s2[s2_pos])Description
TRUEevaluated 40 times by 2 tests
Evaluated by:
  • ls
  • sort
FALSEevaluated 128 times by 2 tests
Evaluated by:
  • ls
  • sort
0-168
93 {-
94 int s1_c = (s1_pos == s1_len) ? 0 : order (s1[s1_pos]);
(s1_pos == s1_len)Description
TRUEevaluated 20 times by 2 tests
Evaluated by:
  • ls
  • sort
FALSEevaluated 1068 times by 2 tests
Evaluated by:
  • ls
  • sort
20-1068
95 int s2_c = (s2_pos == s2_len) ? 0 : order (s2[s2_pos]);
(s2_pos == s2_len)Description
TRUEevaluated 4 times by 1 test
Evaluated by:
  • ls
FALSEevaluated 1084 times by 2 tests
Evaluated by:
  • ls
  • sort
4-1084
96 if (s1_c != s2_c)
s1_c != s2_cDescription
TRUEevaluated 105 times by 2 tests
Evaluated by:
  • ls
  • sort
FALSEevaluated 983 times by 2 tests
Evaluated by:
  • ls
  • sort
105-983
97 return s1_c - s2_c;
executed 105 times by 2 tests: return s1_c - s2_c;
Executed by:
  • ls
  • sort
105
98 s1_pos++;-
99 s2_pos++;-
100 }
executed 983 times by 2 tests: end of block
Executed by:
  • ls
  • sort
983
101 while (s1[s1_pos] == '0')
s1[s1_pos] == '0'Description
TRUEevaluated 12 times by 2 tests
Evaluated by:
  • ls
  • sort
FALSEevaluated 128 times by 2 tests
Evaluated by:
  • ls
  • sort
12-128
102 s1_pos++;
executed 12 times by 2 tests: s1_pos++;
Executed by:
  • ls
  • sort
12
103 while (s2[s2_pos] == '0')
s2[s2_pos] == '0'Description
TRUEevaluated 2 times by 1 test
Evaluated by:
  • sort
FALSEevaluated 128 times by 2 tests
Evaluated by:
  • ls
  • sort
2-128
104 s2_pos++;
executed 2 times by 1 test: s2_pos++;
Executed by:
  • sort
2
105 while (c_isdigit (s1[s1_pos]) && c_isdigit (s2[s2_pos]))
c_isdigit (s1[s1_pos])Description
TRUEevaluated 150 times by 1 test
Evaluated by:
  • sort
FALSEevaluated 109 times by 2 tests
Evaluated by:
  • ls
  • sort
c_isdigit (s2[s2_pos])Description
TRUEevaluated 131 times by 1 test
Evaluated by:
  • sort
FALSEevaluated 19 times by 1 test
Evaluated by:
  • sort
19-150
106 {-
107 if (!first_diff)
!first_diffDescription
TRUEevaluated 119 times by 1 test
Evaluated by:
  • sort
FALSEevaluated 12 times by 1 test
Evaluated by:
  • sort
12-119
108 first_diff = s1[s1_pos] - s2[s2_pos];
executed 119 times by 1 test: first_diff = s1[s1_pos] - s2[s2_pos];
Executed by:
  • sort
119
109 s1_pos++;-
110 s2_pos++;-
111 }
executed 131 times by 1 test: end of block
Executed by:
  • sort
131
112 if (c_isdigit (s1[s1_pos]))
c_isdigit (s1[s1_pos])Description
TRUEevaluated 19 times by 1 test
Evaluated by:
  • sort
FALSEevaluated 109 times by 2 tests
Evaluated by:
  • ls
  • sort
19-109
113 return 1;
executed 19 times by 1 test: return 1;
Executed by:
  • sort
19
114 if (c_isdigit (s2[s2_pos]))
c_isdigit (s2[s2_pos])Description
TRUEevaluated 16 times by 2 tests
Evaluated by:
  • ls
  • sort
FALSEevaluated 93 times by 1 test
Evaluated by:
  • sort
16-93
115 return -1;
executed 16 times by 2 tests: return -1;
Executed by:
  • ls
  • sort
16
116 if (first_diff)
first_diffDescription
TRUEevaluated 28 times by 1 test
Evaluated by:
  • sort
FALSEevaluated 65 times by 1 test
Evaluated by:
  • sort
28-65
117 return first_diff;
executed 28 times by 1 test: return first_diff;
Executed by:
  • sort
28
118 }
executed 65 times by 1 test: end of block
Executed by:
  • sort
65
119 return 0;
never executed: return 0;
0
120}-
121-
122/* Compare version strings S1 and S2.-
123 See filevercmp.h for function description. */-
124int-
125filevercmp (const char *s1, const char *s2)-
126{-
127 const char *s1_pos;-
128 const char *s2_pos;-
129 const char *s1_suffix, *s2_suffix;-
130 size_t s1_len, s2_len;-
131 int result;-
132-
133 /* easy comparison to see if strings are identical */-
134 int simple_cmp = strcmp (s1, s2);
never executed: __result = (((const unsigned char *) (const char *) ( s1 ))[3] - __s2[3]);
never executed: end of block
never executed: end of block
never executed: __result = (((const unsigned char *) (const char *) ( s2 ))[3] - __s2[3]);
never executed: end of block
never executed: end of block
__s1_len > 0Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 1Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 2Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 0Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 1Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 2Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
135 if (simple_cmp == 0)
simple_cmp == 0Description
TRUEevaluated 21 times by 1 test
Evaluated by:
  • sort
FALSEevaluated 188 times by 2 tests
Evaluated by:
  • ls
  • sort
21-188
136 return 0;
executed 21 times by 1 test: return 0;
Executed by:
  • sort
21
137-
138 /* special handle for "", "." and ".." */-
139 if (!*s1)
!*s1Description
TRUEnever evaluated
FALSEevaluated 188 times by 2 tests
Evaluated by:
  • ls
  • sort
0-188
140 return -1;
never executed: return -1;
0
141 if (!*s2)
!*s2Description
TRUEnever evaluated
FALSEevaluated 188 times by 2 tests
Evaluated by:
  • ls
  • sort
0-188
142 return 1;
never executed: return 1;
0
143 if (0 == strcmp (".", s1))
never executed: __result = (((const unsigned char *) (const char *) ( "." ))[3] - __s2[3]);
never executed: end of block
executed 50 times by 1 test: end of block
Executed by:
  • ls
never executed: __result = (((const unsigned char *) (const char *) ( s1 ))[3] - __s2[3]);
never executed: end of block
never executed: end of block
0 == __extensi... , s1 )))); })Description
TRUEnever evaluated
FALSEevaluated 188 times by 2 tests
Evaluated by:
  • ls
  • sort
__s1_len > 0Description
TRUEevaluated 188 times by 2 tests
Evaluated by:
  • ls
  • sort
FALSEnever evaluated
__result == 0Description
TRUEevaluated 50 times by 1 test
Evaluated by:
  • ls
FALSEevaluated 138 times by 2 tests
Evaluated by:
  • ls
  • sort
__s1_len > 1Description
TRUEnever evaluated
FALSEevaluated 50 times by 1 test
Evaluated by:
  • ls
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 2Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 0Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 1Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 2Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
0-188
144 return -1;
never executed: return -1;
0
145 if (0 == strcmp (".", s2))
never executed: __result = (((const unsigned char *) (const char *) ( "." ))[3] - __s2[3]);
never executed: end of block
executed 30 times by 1 test: end of block
Executed by:
  • ls
never executed: __result = (((const unsigned char *) (const char *) ( s2 ))[3] - __s2[3]);
never executed: end of block
never executed: end of block
0 == __extensi... , s2 )))); })Description
TRUEnever evaluated
FALSEevaluated 188 times by 2 tests
Evaluated by:
  • ls
  • sort
__s1_len > 0Description
TRUEevaluated 188 times by 2 tests
Evaluated by:
  • ls
  • sort
FALSEnever evaluated
__result == 0Description
TRUEevaluated 30 times by 1 test
Evaluated by:
  • ls
FALSEevaluated 158 times by 2 tests
Evaluated by:
  • ls
  • sort
__s1_len > 1Description
TRUEnever evaluated
FALSEevaluated 30 times by 1 test
Evaluated by:
  • ls
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 2Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 0Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 1Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 2Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
0-188
146 return 1;
never executed: return 1;
0
147 if (0 == strcmp ("..", s1))
never executed: __result = (((const unsigned char *) (const char *) ( ".." ))[3] - __s2[3]);
never executed: end of block
executed 50 times by 1 test: end of block
Executed by:
  • ls
never executed: __result = (((const unsigned char *) (const char *) ( s1 ))[3] - __s2[3]);
never executed: end of block
never executed: end of block
0 == __extensi... , s1 )))); })Description
TRUEnever evaluated
FALSEevaluated 188 times by 2 tests
Evaluated by:
  • ls
  • sort
__s1_len > 0Description
TRUEevaluated 188 times by 2 tests
Evaluated by:
  • ls
  • sort
FALSEnever evaluated
__result == 0Description
TRUEevaluated 50 times by 1 test
Evaluated by:
  • ls
FALSEevaluated 138 times by 2 tests
Evaluated by:
  • ls
  • sort
__s1_len > 1Description
TRUEevaluated 50 times by 1 test
Evaluated by:
  • ls
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEevaluated 50 times by 1 test
Evaluated by:
  • ls
__s1_len > 2Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 0Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 1Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 2Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
0-188
148 return -1;
never executed: return -1;
0
149 if (0 == strcmp ("..", s2))
never executed: __result = (((const unsigned char *) (const char *) ( ".." ))[3] - __s2[3]);
never executed: end of block
executed 30 times by 1 test: end of block
Executed by:
  • ls
never executed: __result = (((const unsigned char *) (const char *) ( s2 ))[3] - __s2[3]);
never executed: end of block
never executed: end of block
0 == __extensi... , s2 )))); })Description
TRUEnever evaluated
FALSEevaluated 188 times by 2 tests
Evaluated by:
  • ls
  • sort
__s1_len > 0Description
TRUEevaluated 188 times by 2 tests
Evaluated by:
  • ls
  • sort
FALSEnever evaluated
__result == 0Description
TRUEevaluated 30 times by 1 test
Evaluated by:
  • ls
FALSEevaluated 158 times by 2 tests
Evaluated by:
  • ls
  • sort
__s1_len > 1Description
TRUEevaluated 30 times by 1 test
Evaluated by:
  • ls
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEevaluated 30 times by 1 test
Evaluated by:
  • ls
__s1_len > 2Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 0Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 1Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 2Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
0-188
150 return 1;
never executed: return 1;
0
151-
152 /* special handle for other hidden files */-
153 if (*s1 == '.' && *s2 != '.')
*s1 == '.'Description
TRUEevaluated 50 times by 1 test
Evaluated by:
  • ls
FALSEevaluated 138 times by 2 tests
Evaluated by:
  • ls
  • sort
*s2 != '.'Description
TRUEevaluated 20 times by 1 test
Evaluated by:
  • ls
FALSEevaluated 30 times by 1 test
Evaluated by:
  • ls
20-138
154 return -1;
executed 20 times by 1 test: return -1;
Executed by:
  • ls
20
155 if (*s1 != '.' && *s2 == '.')
*s1 != '.'Description
TRUEevaluated 138 times by 2 tests
Evaluated by:
  • ls
  • sort
FALSEevaluated 30 times by 1 test
Evaluated by:
  • ls
*s2 == '.'Description
TRUEnever evaluated
FALSEevaluated 138 times by 2 tests
Evaluated by:
  • ls
  • sort
0-138
156 return 1;
never executed: return 1;
0
157 if (*s1 == '.' && *s2 == '.')
*s1 == '.'Description
TRUEevaluated 30 times by 1 test
Evaluated by:
  • ls
FALSEevaluated 138 times by 2 tests
Evaluated by:
  • ls
  • sort
*s2 == '.'Description
TRUEevaluated 30 times by 1 test
Evaluated by:
  • ls
FALSEnever evaluated
0-138
158 {-
159 s1++;-
160 s2++;-
161 }
executed 30 times by 1 test: end of block
Executed by:
  • ls
30
162-
163 /* "cut" file suffixes */-
164 s1_pos = s1;-
165 s2_pos = s2;-
166 s1_suffix = match_suffix (&s1_pos);-
167 s2_suffix = match_suffix (&s2_pos);-
168 s1_len = (s1_suffix ? s1_suffix : s1_pos) - s1;
s1_suffixDescription
TRUEevaluated 60 times by 2 tests
Evaluated by:
  • ls
  • sort
FALSEevaluated 108 times by 2 tests
Evaluated by:
  • ls
  • sort
60-108
169 s2_len = (s2_suffix ? s2_suffix : s2_pos) - s2;
s2_suffixDescription
TRUEevaluated 41 times by 2 tests
Evaluated by:
  • ls
  • sort
FALSEevaluated 127 times by 2 tests
Evaluated by:
  • ls
  • sort
41-127
170-
171 /* restore file suffixes if strings are identical after "cut" */-
172 if ((s1_suffix || s2_suffix) && (s1_len == s2_len)
s1_suffixDescription
TRUEevaluated 60 times by 2 tests
Evaluated by:
  • ls
  • sort
FALSEevaluated 108 times by 2 tests
Evaluated by:
  • ls
  • sort
s2_suffixDescription
TRUEevaluated 4 times by 1 test
Evaluated by:
  • ls
FALSEevaluated 104 times by 2 tests
Evaluated by:
  • ls
  • sort
(s1_len == s2_len)Description
TRUEevaluated 5 times by 2 tests
Evaluated by:
  • ls
  • sort
FALSEevaluated 59 times by 2 tests
Evaluated by:
  • ls
  • sort
4-108
173 && 0 == strncmp (s1, s2, s1_len))
never executed: __result = (((const unsigned char *) (const char *) ( s1 ))[3] - __s2[3]);
never executed: end of block
never executed: end of block
never executed: __result = (((const unsigned char *) (const char *) ( s2 ))[3] - __s2[3]);
never executed: end of block
never executed: end of block
0 == (__extens...2 , s1_len )))Description
TRUEevaluated 4 times by 1 test
Evaluated by:
  • ls
FALSEevaluated 1 time by 1 test
Evaluated by:
  • sort
__builtin_cons...t_p ( s1_len )Description
TRUEnever evaluated
FALSEevaluated 5 times by 2 tests
Evaluated by:
  • ls
  • sort
__builtin_constant_p ( s1 )Description
TRUEnever evaluated
FALSEnever evaluated
strlen ( s1 ) ...t) ( s1_len ))Description
TRUEnever evaluated
FALSEnever evaluated
__builtin_constant_p ( s2 )Description
TRUEnever evaluated
FALSEnever evaluated
strlen ( s2 ) ...t) ( s1_len ))Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 0Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 1Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 2Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 0Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 1Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 2Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
0-5
174 {-
175 s1_len = s1_pos - s1;-
176 s2_len = s2_pos - s2;-
177 }
executed 4 times by 1 test: end of block
Executed by:
  • ls
4
178-
179 result = verrevcmp (s1, s1_len, s2, s2_len);-
180 return result == 0 ? simple_cmp : result;
executed 168 times by 2 tests: return result == 0 ? simple_cmp : result;
Executed by:
  • ls
  • sort
168
181}-
Source codeSwitch to Preprocessed file

Generated by Squish Coco 4.1.2