| 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 blockExecuted 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 blockExecuted 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 |