Absolute File Name: | /home/opencoverage/opencoverage/guest-scripts/coreutils/src/gnulib/lib/mbswidth.c |
Switch to Source code | Preprocessed file |
Line | Source | Count | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | - | |||||||||||||
2 | - | |||||||||||||
3 | - | |||||||||||||
4 | - | |||||||||||||
5 | - | |||||||||||||
6 | - | |||||||||||||
7 | - | |||||||||||||
8 | - | |||||||||||||
9 | - | |||||||||||||
10 | - | |||||||||||||
11 | - | |||||||||||||
12 | - | |||||||||||||
13 | - | |||||||||||||
14 | - | |||||||||||||
15 | - | |||||||||||||
16 | - | |||||||||||||
17 | - | |||||||||||||
18 | - | |||||||||||||
19 | - | |||||||||||||
20 | - | |||||||||||||
21 | int | - | ||||||||||||
22 | gnu_mbswidth (const char *string, int flags) | - | ||||||||||||
23 | { | - | ||||||||||||
24 | return executed 7664 times by 4 tests: mbsnwidth (string, strlen (string), flags);return mbsnwidth (string, strlen (string), flags); Executed by:
executed 7664 times by 4 tests: return mbsnwidth (string, strlen (string), flags); Executed by:
| 7664 | ||||||||||||
25 | } | - | ||||||||||||
26 | - | |||||||||||||
27 | - | |||||||||||||
28 | - | |||||||||||||
29 | - | |||||||||||||
30 | - | |||||||||||||
31 | int | - | ||||||||||||
32 | mbsnwidth (const char *string, size_t nbytes, int flags) | - | ||||||||||||
33 | { | - | ||||||||||||
34 | const char *p = string; | - | ||||||||||||
35 | const char *plimit = p + nbytes; | - | ||||||||||||
36 | int width; | - | ||||||||||||
37 | - | |||||||||||||
38 | width = 0; | - | ||||||||||||
39 | if ( | - | ||||||||||||
40 | (
| 0-7886 | ||||||||||||
41 | > 1
| 0-7886 | ||||||||||||
42 | { | - | ||||||||||||
43 | while (p < plimit
| 0 | ||||||||||||
44 | switch (*p) | - | ||||||||||||
45 | { | - | ||||||||||||
46 | case never executed: ' ':case ' ': never executed: casecase ' ': never executed: '!':case '!': never executed: casecase '!': never executed: '"':case '"': never executed: casecase '"': never executed: '#':case '#': never executed: casecase '#': never executed: '%':case '%': never executed: case '%': | 0 | ||||||||||||
47 | case never executed: '&':case '&': never executed: casecase '&': never executed: '\'':case '\'': never executed: casecase '\'': never executed: '(':case '(': never executed: casecase '(': never executed: ')':case ')': never executed: casecase ')': never executed: '*':case '*': never executed: case '*': | 0 | ||||||||||||
48 | case never executed: '+':case '+': never executed: casecase '+': never executed: ',':case ',': never executed: casecase ',': never executed: '-':case '-': never executed: casecase '-': never executed: '.':case '.': never executed: casecase '.': never executed: '/':case '/': never executed: case '/': | 0 | ||||||||||||
49 | case never executed: '0':case '0': never executed: casecase '0': never executed: '1':case '1': never executed: casecase '1': never executed: '2':case '2': never executed: casecase '2': never executed: '3':case '3': never executed: casecase '3': never executed: '4':case '4': never executed: case '4': | 0 | ||||||||||||
50 | case never executed: '5':case '5': never executed: casecase '5': never executed: '6':case '6': never executed: casecase '6': never executed: '7':case '7': never executed: casecase '7': never executed: '8':case '8': never executed: casecase '8': never executed: '9':case '9': never executed: case '9': | 0 | ||||||||||||
51 | case never executed: ':':case ':': never executed: casecase ':': never executed: ';':case ';': never executed: casecase ';': never executed: '<':case '<': never executed: casecase '<': never executed: '=':case '=': never executed: casecase '=': never executed: '>':case '>': never executed: case '>': | 0 | ||||||||||||
52 | case never executed: '?':case '?': never executed: case '?': | 0 | ||||||||||||
53 | case never executed: 'A':case 'A': never executed: casecase 'A': never executed: 'B':case 'B': never executed: casecase 'B': never executed: 'C':case 'C': never executed: casecase 'C': never executed: 'D':case 'D': never executed: casecase 'D': never executed: 'E':case 'E': never executed: case 'E': | 0 | ||||||||||||
54 | case never executed: 'F':case 'F': never executed: casecase 'F': never executed: 'G':case 'G': never executed: casecase 'G': never executed: 'H':case 'H': never executed: casecase 'H': never executed: 'I':case 'I': never executed: casecase 'I': never executed: 'J':case 'J': never executed: case 'J': | 0 | ||||||||||||
55 | case never executed: 'K':case 'K': never executed: casecase 'K': never executed: 'L':case 'L': never executed: casecase 'L': never executed: 'M':case 'M': never executed: casecase 'M': never executed: 'N':case 'N': never executed: casecase 'N': never executed: 'O':case 'O': never executed: case 'O': | 0 | ||||||||||||
56 | case never executed: 'P':case 'P': never executed: casecase 'P': never executed: 'Q':case 'Q': never executed: casecase 'Q': never executed: 'R':case 'R': never executed: casecase 'R': never executed: 'S':case 'S': never executed: casecase 'S': never executed: 'T':case 'T': never executed: case 'T': | 0 | ||||||||||||
57 | case never executed: 'U':case 'U': never executed: casecase 'U': never executed: 'V':case 'V': never executed: casecase 'V': never executed: 'W':case 'W': never executed: casecase 'W': never executed: 'X':case 'X': never executed: casecase 'X': never executed: 'Y':case 'Y': never executed: case 'Y': | 0 | ||||||||||||
58 | case never executed: 'Z':case 'Z': never executed: case 'Z': | 0 | ||||||||||||
59 | case never executed: '[':case '[': never executed: casecase '[': never executed: '\\':case '\\': never executed: casecase '\\': never executed: ']':case ']': never executed: casecase ']': never executed: '^':case '^': never executed: casecase '^': never executed: '_':case '_': never executed: case '_': | 0 | ||||||||||||
60 | case never executed: 'a':case 'a': never executed: casecase 'a': never executed: 'b':case 'b': never executed: casecase 'b': never executed: 'c':case 'c': never executed: casecase 'c': never executed: 'd':case 'd': never executed: casecase 'd': never executed: 'e':case 'e': never executed: case 'e': | 0 | ||||||||||||
61 | case never executed: 'f':case 'f': never executed: casecase 'f': never executed: 'g':case 'g': never executed: casecase 'g': never executed: 'h':case 'h': never executed: casecase 'h': never executed: 'i':case 'i': never executed: casecase 'i': never executed: 'j':case 'j': never executed: case 'j': | 0 | ||||||||||||
62 | case never executed: 'k':case 'k': never executed: casecase 'k': never executed: 'l':case 'l': never executed: casecase 'l': never executed: 'm':case 'm': never executed: casecase 'm': never executed: 'n':case 'n': never executed: casecase 'n': never executed: 'o':case 'o': never executed: case 'o': | 0 | ||||||||||||
63 | case never executed: 'p':case 'p': never executed: casecase 'p': never executed: 'q':case 'q': never executed: casecase 'q': never executed: 'r':case 'r': never executed: casecase 'r': never executed: 's':case 's': never executed: casecase 's': never executed: 't':case 't': never executed: case 't': | 0 | ||||||||||||
64 | case never executed: 'u':case 'u': never executed: casecase 'u': never executed: 'v':case 'v': never executed: casecase 'v': never executed: 'w':case 'w': never executed: casecase 'w': never executed: 'x':case 'x': never executed: casecase 'x': never executed: 'y':case 'y': never executed: case 'y': | 0 | ||||||||||||
65 | case never executed: 'z':case 'z': never executed: casecase 'z': never executed: '{':case '{': never executed: casecase '{': never executed: '|':case '|': never executed: casecase '|': never executed: '}':case '}': never executed: casecase '}': never executed: '~':case '~': never executed: case '~': | 0 | ||||||||||||
66 | - | |||||||||||||
67 | p++; | - | ||||||||||||
68 | width++; | - | ||||||||||||
69 | break; never executed: break; | 0 | ||||||||||||
70 | default never executed: :default: never executed: default: | 0 | ||||||||||||
71 | - | |||||||||||||
72 | { | - | ||||||||||||
73 | mbstate_t mbstate; | - | ||||||||||||
74 | memset (&mbstate, 0, sizeof mbstate); | - | ||||||||||||
75 | do | - | ||||||||||||
76 | { | - | ||||||||||||
77 | wchar_t wc; | - | ||||||||||||
78 | size_t bytes; | - | ||||||||||||
79 | int w; | - | ||||||||||||
80 | - | |||||||||||||
81 | bytes = | - | ||||||||||||
82 | rpl_mbrtowc | - | ||||||||||||
83 | (&wc, p, plimit - p, &mbstate); | - | ||||||||||||
84 | - | |||||||||||||
85 | if (bytes == (size_t) -1
| 0 | ||||||||||||
86 | - | |||||||||||||
87 | { | - | ||||||||||||
88 | if (!(flags & 1)
| 0 | ||||||||||||
89 | { | - | ||||||||||||
90 | p++; | - | ||||||||||||
91 | width++; | - | ||||||||||||
92 | break; never executed: break; | 0 | ||||||||||||
93 | } | - | ||||||||||||
94 | else | - | ||||||||||||
95 | return never executed: -1;return -1; never executed: return -1; | 0 | ||||||||||||
96 | } | - | ||||||||||||
97 | - | |||||||||||||
98 | if (bytes == (size_t) -2
| 0 | ||||||||||||
99 | - | |||||||||||||
100 | { | - | ||||||||||||
101 | if (!(flags & 1)
| 0 | ||||||||||||
102 | { | - | ||||||||||||
103 | p = plimit; | - | ||||||||||||
104 | width++; | - | ||||||||||||
105 | break; never executed: break; | 0 | ||||||||||||
106 | } | - | ||||||||||||
107 | else | - | ||||||||||||
108 | return never executed: -1;return -1; never executed: return -1; | 0 | ||||||||||||
109 | } | - | ||||||||||||
110 | - | |||||||||||||
111 | if (bytes == 0
| 0 | ||||||||||||
112 | - | |||||||||||||
113 | bytes = 1; never executed: bytes = 1; | 0 | ||||||||||||
114 | - | |||||||||||||
115 | w = wcwidth (wc); | - | ||||||||||||
116 | if (w >= 0
| 0 | ||||||||||||
117 | - | |||||||||||||
118 | { | - | ||||||||||||
119 | if (w > 0x7fffffff - width
| 0 | ||||||||||||
120 | goto never executed: overflow;goto overflow; never executed: goto overflow; | 0 | ||||||||||||
121 | width += w; | - | ||||||||||||
122 | } never executed: end of block | 0 | ||||||||||||
123 | else | - | ||||||||||||
124 | - | |||||||||||||
125 | if (!(flags & 2)
| 0 | ||||||||||||
126 | { | - | ||||||||||||
127 | if (!iswcntrl (wc)
| 0 | ||||||||||||
128 | { | - | ||||||||||||
129 | if (width == 0x7fffffff
| 0 | ||||||||||||
130 | goto never executed: overflow;goto overflow; never executed: goto overflow; | 0 | ||||||||||||
131 | width++; | - | ||||||||||||
132 | } never executed: end of block | 0 | ||||||||||||
133 | } never executed: end of block | 0 | ||||||||||||
134 | else | - | ||||||||||||
135 | return never executed: -1;return -1; never executed: return -1; | 0 | ||||||||||||
136 | - | |||||||||||||
137 | p += bytes; | - | ||||||||||||
138 | } never executed: end of block | 0 | ||||||||||||
139 | while (! mbsinit (&mbstate)
| 0 | ||||||||||||
140 | } | - | ||||||||||||
141 | break; never executed: break; | 0 | ||||||||||||
142 | } | - | ||||||||||||
143 | return never executed: width;return width; never executed: return width; | 0 | ||||||||||||
144 | } | - | ||||||||||||
145 | - | |||||||||||||
146 | while (p < plimit
| 7886-48607 | ||||||||||||
147 | { | - | ||||||||||||
148 | unsigned char c = (unsigned char) *p++; | - | ||||||||||||
149 | - | |||||||||||||
150 | if ( | - | ||||||||||||
151 | ((*
| 24-48583 | ||||||||||||
152 | c
| 24-48583 | ||||||||||||
153 | ))] & (unsigned short int) _ISprint)
| 24-48583 | ||||||||||||
154 | ) | - | ||||||||||||
155 | { | - | ||||||||||||
156 | if (width == 0x7fffffff
| 0-48583 | ||||||||||||
157 | goto never executed: overflow;goto overflow; never executed: goto overflow; | 0 | ||||||||||||
158 | width++; | - | ||||||||||||
159 | } executed 48583 times by 5 tests: end of block Executed by:
| 48583 | ||||||||||||
160 | else if (!(flags & 2)
| 0-24 | ||||||||||||
161 | { | - | ||||||||||||
162 | if (!
| 0-24 | ||||||||||||
163 | ((*__ctype_b_loc ())[(int) ((
| 0-24 | ||||||||||||
164 | c
| 0-24 | ||||||||||||
165 | ))] & (unsigned short int) _IScntrl)
| 0-24 | ||||||||||||
166 | ) | - | ||||||||||||
167 | { | - | ||||||||||||
168 | if (width == 0x7fffffff
| 0 | ||||||||||||
169 | goto never executed: overflow;goto overflow; never executed: goto overflow; | 0 | ||||||||||||
170 | width++; | - | ||||||||||||
171 | } never executed: end of block | 0 | ||||||||||||
172 | } executed 24 times by 1 test: end of block Executed by:
| 24 | ||||||||||||
173 | else | - | ||||||||||||
174 | return never executed: -1;return -1; never executed: return -1; | 0 | ||||||||||||
175 | } | - | ||||||||||||
176 | return executed 7886 times by 5 tests: width;return width; Executed by:
executed 7886 times by 5 tests: return width; Executed by:
| 7886 | ||||||||||||
177 | - | |||||||||||||
178 | overflow: | - | ||||||||||||
179 | return never executed: 0x7fffffff;return 0x7fffffff; never executed: return 0x7fffffff; | 0 | ||||||||||||
180 | } | - | ||||||||||||
Switch to Source code | Preprocessed file |