| Line | Source | Count |
| 1 | | - |
| 2 | | - |
| 3 | | - |
| 4 | | - |
| 5 | | - |
| 6 | | - |
| 7 | | - |
| 8 | | - |
| 9 | | - |
| 10 | | - |
| 11 | | - |
| 12 | | - |
| 13 | | - |
| 14 | | - |
| 15 | | - |
| 16 | | - |
| 17 | | - |
| 18 | | - |
| 19 | | - |
| 20 | | - |
| 21 | | - |
| 22 | | - |
| 23 | | - |
| 24 | | - |
| 25 | | - |
| 26 | | - |
| 27 | | - |
| 28 | | - |
| 29 | | - |
| 30 | | - |
| 31 | | - |
| 32 | | - |
| 33 | #include "includes.h" | - |
| 34 | #if !defined(HAVE_STRNVIS) || defined(BROKEN_STRNVIS) | - |
| 35 | | - |
| 36 | #include <sys/types.h> | - |
| 37 | #include <errno.h> | - |
| 38 | #include <ctype.h> | - |
| 39 | #include <limits.h> | - |
| 40 | #include <string.h> | - |
| 41 | #include <stdlib.h> | - |
| 42 | | - |
| 43 | #include "vis.h" | - |
| 44 | | - |
| 45 | #define isoctal(c) (((u_char)(c)) >= '0' && ((u_char)(c)) <= '7') | - |
| 46 | #define isvisible(c,flag) \ | - |
| 47 | (((c) == '\\' || (flag & VIS_ALL) == 0) && \ | - |
| 48 | (((u_int)(c) <= UCHAR_MAX && isascii((u_char)(c)) && \ | - |
| 49 | (((c) != '*' && (c) != '?' && (c) != '[' && (c) != '#') || \ | - |
| 50 | (flag & VIS_GLOB) == 0) && isgraph((u_char)(c))) || \ | - |
| 51 | ((flag & VIS_SP) == 0 && (c) == ' ') || \ | - |
| 52 | ((flag & VIS_TAB) == 0 && (c) == '\t') || \ | - |
| 53 | ((flag & VIS_NL) == 0 && (c) == '\n') || \ | - |
| 54 | ((flag & VIS_SAFE) && ((c) == '\b' || \ | - |
| 55 | (c) == '\007' || (c) == '\r' || \ | - |
| 56 | isgraph((u_char)(c)))))) | - |
| 57 | | - |
| 58 | | - |
| 59 | | - |
| 60 | | - |
| 61 | char * | - |
| 62 | vis(char *dst, int c, int flag, int nextc) | - |
| 63 | { | - |
| 64 | if (isvisible(c, flag)) {| TRUE | never evaluated | | FALSE | evaluated 12 times by 1 test |
| TRUE | never evaluated | | FALSE | evaluated 12 times by 1 test |
| TRUE | never evaluated | | FALSE | never evaluated |
| TRUE | never evaluated | | FALSE | never evaluated |
| TRUE | never evaluated | | FALSE | never evaluated |
| TRUE | never evaluated | | FALSE | never evaluated |
| TRUE | never evaluated | | FALSE | never evaluated |
| TRUE | never evaluated | | FALSE | never evaluated |
| TRUE | never evaluated | | FALSE | never evaluated |
| TRUE | never evaluated | | FALSE | never evaluated |
| TRUE | never evaluated | | FALSE | never evaluated |
| TRUE | never evaluated | | FALSE | never evaluated |
| TRUE | never evaluated | | FALSE | never evaluated |
| TRUE | never evaluated | | FALSE | never evaluated |
| TRUE | never evaluated | | FALSE | never evaluated |
| TRUE | never evaluated | | FALSE | never evaluated |
| TRUE | never evaluated | | FALSE | never evaluated |
| TRUE | never evaluated | | FALSE | never evaluated |
| TRUE | never evaluated | | FALSE | never evaluated |
| TRUE | never evaluated | | FALSE | never evaluated |
| TRUE | never evaluated | | FALSE | never evaluated |
| 0-12 |
| 65 | if ((c == '"' && (flag & VIS_DQ) != 0) ||| TRUE | never evaluated | | FALSE | never evaluated |
| TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 66 | (c == '\\' && (flag & VIS_NOSLASH) == 0))| TRUE | never evaluated | | FALSE | never evaluated |
| TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 67 | *dst++ = '\\'; never executed: *dst++ = '\\'; | 0 |
| 68 | *dst++ = c; | - |
| 69 | *dst = '\0'; | - |
| 70 | return (dst); never executed: return (dst); | 0 |
| 71 | } | - |
| 72 | | - |
| 73 | if (flag & VIS_CSTYLE) {| TRUE | never evaluated | | FALSE | evaluated 12 times by 1 test |
| 0-12 |
| 74 | switch(c) { | - |
| 75 | case '\n': never executed: case '\n': | 0 |
| 76 | *dst++ = '\\'; | - |
| 77 | *dst++ = 'n'; | - |
| 78 | goto done; never executed: goto done; | 0 |
| 79 | case '\r': never executed: case '\r': | 0 |
| 80 | *dst++ = '\\'; | - |
| 81 | *dst++ = 'r'; | - |
| 82 | goto done; never executed: goto done; | 0 |
| 83 | case '\b': never executed: case '\b': | 0 |
| 84 | *dst++ = '\\'; | - |
| 85 | *dst++ = 'b'; | - |
| 86 | goto done; never executed: goto done; | 0 |
| 87 | case '\a': never executed: case '\a': | 0 |
| 88 | *dst++ = '\\'; | - |
| 89 | *dst++ = 'a'; | - |
| 90 | goto done; never executed: goto done; | 0 |
| 91 | case '\v': never executed: case '\v': | 0 |
| 92 | *dst++ = '\\'; | - |
| 93 | *dst++ = 'v'; | - |
| 94 | goto done; never executed: goto done; | 0 |
| 95 | case '\t': never executed: case '\t': | 0 |
| 96 | *dst++ = '\\'; | - |
| 97 | *dst++ = 't'; | - |
| 98 | goto done; never executed: goto done; | 0 |
| 99 | case '\f': never executed: case '\f': | 0 |
| 100 | *dst++ = '\\'; | - |
| 101 | *dst++ = 'f'; | - |
| 102 | goto done; never executed: goto done; | 0 |
| 103 | case ' ': never executed: case ' ': | 0 |
| 104 | *dst++ = '\\'; | - |
| 105 | *dst++ = 's'; | - |
| 106 | goto done; never executed: goto done; | 0 |
| 107 | case '\0': never executed: case '\0': | 0 |
| 108 | *dst++ = '\\'; | - |
| 109 | *dst++ = '0'; | - |
| 110 | if (isoctal(nextc)) {| TRUE | never evaluated | | FALSE | never evaluated |
| TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 111 | *dst++ = '0'; | - |
| 112 | *dst++ = '0'; | - |
| 113 | } never executed: end of block | 0 |
| 114 | goto done; never executed: goto done; | 0 |
| 115 | } | - |
| 116 | } never executed: end of block | 0 |
| 117 | if (((c & 0177) == ' ') || (flag & VIS_OCTAL) ||| TRUE | never evaluated | | FALSE | evaluated 12 times by 1 test |
| TRUE | evaluated 12 times by 1 test | | FALSE | never evaluated |
| 0-12 |
| 118 | ((flag & VIS_GLOB) && (c == '*' || c == '?' || c == '[' || c == '#'))) {| TRUE | never evaluated | | FALSE | never evaluated |
| TRUE | never evaluated | | FALSE | never evaluated |
| TRUE | never evaluated | | FALSE | never evaluated |
| TRUE | never evaluated | | FALSE | never evaluated |
| TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 119 | *dst++ = '\\'; | - |
| 120 | *dst++ = ((u_char)c >> 6 & 07) + '0'; | - |
| 121 | *dst++ = ((u_char)c >> 3 & 07) + '0'; | - |
| 122 | *dst++ = ((u_char)c & 07) + '0'; | - |
| 123 | goto done;executed 12 times by 1 test: goto done; | 12 |
| 124 | } | - |
| 125 | if ((flag & VIS_NOSLASH) == 0)| TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 126 | *dst++ = '\\'; never executed: *dst++ = '\\'; | 0 |
| 127 | if (c & 0200) {| TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 128 | c &= 0177; | - |
| 129 | *dst++ = 'M'; | - |
| 130 | } never executed: end of block | 0 |
| 131 | if (iscntrl((u_char)c)) {| TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 132 | *dst++ = '^'; | - |
| 133 | if (c == 0177)| TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 134 | *dst++ = '?'; never executed: *dst++ = '?'; | 0 |
| 135 | else | - |
| 136 | *dst++ = c + '@'; never executed: *dst++ = c + '@'; | 0 |
| 137 | } else { | - |
| 138 | *dst++ = '-'; | - |
| 139 | *dst++ = c; | - |
| 140 | } never executed: end of block | 0 |
| 141 | done: code before this statement never executed: done: | 0 |
| 142 | *dst = '\0'; | - |
| 143 | return (dst);executed 12 times by 1 test: return (dst); | 12 |
| 144 | } | - |
| 145 | DEF_WEAK(vis); | - |
| 146 | | - |
| 147 | | - |
| 148 | | - |
| 149 | | - |
| 150 | | - |
| 151 | | - |
| 152 | | - |
| 153 | | - |
| 154 | | - |
| 155 | | - |
| 156 | | - |
| 157 | | - |
| 158 | | - |
| 159 | | - |
| 160 | int | - |
| 161 | strvis(char *dst, const char *src, int flag) | - |
| 162 | { | - |
| 163 | char c; | - |
| 164 | char *start; | - |
| 165 | | - |
| 166 | for (start = dst; (c = *src);)| TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 167 | dst = vis(dst, c, flag, *++src); never executed: dst = vis(dst, c, flag, *++src); | 0 |
| 168 | *dst = '\0'; | - |
| 169 | return (dst - start); never executed: return (dst - start); | 0 |
| 170 | } | - |
| 171 | DEF_WEAK(strvis); | - |
| 172 | | - |
| 173 | int | - |
| 174 | strnvis(char *dst, const char *src, size_t siz, int flag) | - |
| 175 | { | - |
| 176 | char *start, *end; | - |
| 177 | char tbuf[5]; | - |
| 178 | int c, i; | - |
| 179 | | - |
| 180 | i = 0; | - |
| 181 | for (start = dst, end = start + siz - 1; (c = *src) && dst < end; ) {| TRUE | evaluated 4200 times by 1 test | | FALSE | evaluated 40 times by 1 test |
| TRUE | evaluated 4200 times by 1 test | | FALSE | never evaluated |
| 0-4200 |
| 182 | if (isvisible(c, flag)) {| TRUE | never evaluated | | FALSE | evaluated 4200 times by 1 test |
| TRUE | evaluated 4200 times by 1 test | | FALSE | never evaluated |
| TRUE | evaluated 4200 times by 1 test | | FALSE | never evaluated |
| TRUE | evaluated 4200 times by 1 test | | FALSE | never evaluated |
| TRUE | evaluated 4200 times by 1 test | | FALSE | never evaluated |
| TRUE | evaluated 4200 times by 1 test | | FALSE | never evaluated |
| TRUE | evaluated 4200 times by 1 test | | FALSE | never evaluated |
| TRUE | evaluated 4200 times by 1 test | | FALSE | never evaluated |
| TRUE | never evaluated | | FALSE | never evaluated |
| TRUE | evaluated 3720 times by 1 test | | FALSE | evaluated 480 times by 1 test |
| TRUE | evaluated 480 times by 1 test | | FALSE | never evaluated |
| TRUE | evaluated 480 times by 1 test | | FALSE | never evaluated |
| TRUE | never evaluated | | FALSE | never evaluated |
| TRUE | never evaluated | | FALSE | never evaluated |
| TRUE | never evaluated | | FALSE | never evaluated |
| TRUE | never evaluated | | FALSE | never evaluated |
| TRUE | never evaluated | | FALSE | never evaluated |
| TRUE | never evaluated | | FALSE | never evaluated |
| TRUE | never evaluated | | FALSE | never evaluated |
| TRUE | never evaluated | | FALSE | never evaluated |
| TRUE | never evaluated | | FALSE | never evaluated |
| 0-4200 |
| 183 | if ((c == '"' && (flag & VIS_DQ) != 0) ||| TRUE | never evaluated | | FALSE | evaluated 4200 times by 1 test |
| TRUE | never evaluated | | FALSE | never evaluated |
| 0-4200 |
| 184 | (c == '\\' && (flag & VIS_NOSLASH) == 0)) {| TRUE | never evaluated | | FALSE | evaluated 4200 times by 1 test |
| TRUE | never evaluated | | FALSE | never evaluated |
| 0-4200 |
| 185 | | - |
| 186 | if (dst + 1 >= end) {| TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 187 | i = 2; | - |
| 188 | break; never executed: break; | 0 |
| 189 | } | - |
| 190 | *dst++ = '\\'; | - |
| 191 | } never executed: end of block | 0 |
| 192 | i = 1; | - |
| 193 | *dst++ = c; | - |
| 194 | src++; | - |
| 195 | } else {executed 4200 times by 1 test: end of block | 4200 |
| 196 | i = vis(tbuf, c, flag, *++src) - tbuf; | - |
| 197 | if (dst + i <= end) {| TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 198 | memcpy(dst, tbuf, i); | - |
| 199 | dst += i; | - |
| 200 | } else { never executed: end of block | 0 |
| 201 | src--; | - |
| 202 | break; never executed: break; | 0 |
| 203 | } | - |
| 204 | } | - |
| 205 | } | - |
| 206 | if (siz > 0)| TRUE | evaluated 40 times by 1 test | | FALSE | never evaluated |
| 0-40 |
| 207 | *dst = '\0';executed 40 times by 1 test: *dst = '\0'; | 40 |
| 208 | if (dst + i > end) {| TRUE | never evaluated | | FALSE | evaluated 40 times by 1 test |
| 0-40 |
| 209 | | - |
| 210 | while ((c = *src))| TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 211 | dst += vis(tbuf, c, flag, *++src) - tbuf; never executed: dst += vis(tbuf, c, flag, *++src) - tbuf; | 0 |
| 212 | } never executed: end of block | 0 |
| 213 | return (dst - start);executed 40 times by 1 test: return (dst - start); | 40 |
| 214 | } | - |
| 215 | | - |
| 216 | int | - |
| 217 | stravis(char **outp, const char *src, int flag) | - |
| 218 | { | - |
| 219 | char *buf; | - |
| 220 | int len, serrno; | - |
| 221 | | - |
| 222 | buf = reallocarray(NULL, 4, strlen(src) + 1); | - |
| 223 | if (buf == NULL)| TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 224 | return -1; never executed: return -1; | 0 |
| 225 | len = strvis(buf, src, flag); | - |
| 226 | serrno = errno; | - |
| 227 | *outp = realloc(buf, len + 1); | - |
| 228 | if (*outp == NULL) {| TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 229 | *outp = buf; | - |
| 230 | errno = serrno; | - |
| 231 | } never executed: end of block | 0 |
| 232 | return (len); never executed: return (len); | 0 |
| 233 | } | - |
| 234 | | - |
| 235 | int | - |
| 236 | strvisx(char *dst, const char *src, size_t len, int flag) | - |
| 237 | { | - |
| 238 | char c; | - |
| 239 | char *start; | - |
| 240 | | - |
| 241 | for (start = dst; len > 1; len--) {| TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 242 | c = *src; | - |
| 243 | dst = vis(dst, c, flag, *++src); | - |
| 244 | } never executed: end of block | 0 |
| 245 | if (len)| TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 246 | dst = vis(dst, *src, flag, '\0'); never executed: dst = vis(dst, *src, flag, '\0'); | 0 |
| 247 | *dst = '\0'; | - |
| 248 | return (dst - start); never executed: return (dst - start); | 0 |
| 249 | } | - |
| 250 | | - |
| 251 | #endif | - |
| | |