| Absolute File Name: | /home/opencoverage/opencoverage/guest-scripts/coreutils/src/gnulib/lib/getndelim2.c |
| Switch to Source code | Preprocessed file |
| Line | Source | Count | ||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | - | |||||||||||||||||||
| 2 | - | |||||||||||||||||||
| 3 | - | |||||||||||||||||||
| 4 | - | |||||||||||||||||||
| 5 | - | |||||||||||||||||||
| 6 | ssize_t | - | ||||||||||||||||||
| 7 | getndelim2 (char **lineptr, size_t *linesize, size_t offset, size_t nmax, | - | ||||||||||||||||||
| 8 | int delim1, int delim2, FILE *stream) | - | ||||||||||||||||||
| 9 | { | - | ||||||||||||||||||
| 10 | size_t nbytes_avail; | - | ||||||||||||||||||
| 11 | char *read_pos; | - | ||||||||||||||||||
| 12 | ssize_t bytes_stored = -1; | - | ||||||||||||||||||
| 13 | char *ptr = *lineptr; | - | ||||||||||||||||||
| 14 | size_t size = *linesize; | - | ||||||||||||||||||
| 15 | - | |||||||||||||||||||
| 16 | _Bool | - | ||||||||||||||||||
| 17 | found_delimiter; | - | ||||||||||||||||||
| 18 | - | |||||||||||||||||||
| 19 | if (!ptr
| 83 | ||||||||||||||||||
| 20 | { | - | ||||||||||||||||||
| 21 | size = nmax < 64
| 0-83 | ||||||||||||||||||
| 22 | ptr = malloc (size); | - | ||||||||||||||||||
| 23 | if (!ptr
| 0-83 | ||||||||||||||||||
| 24 | return never executed: -1;return -1;never executed: return -1; | 0 | ||||||||||||||||||
| 25 | } executed 83 times by 1 test: end of blockExecuted by:
| 83 | ||||||||||||||||||
| 26 | - | |||||||||||||||||||
| 27 | if (size < offset
| 0-166 | ||||||||||||||||||
| 28 | goto never executed: done;goto done;never executed: goto done; | 0 | ||||||||||||||||||
| 29 | - | |||||||||||||||||||
| 30 | nbytes_avail = size - offset; | - | ||||||||||||||||||
| 31 | read_pos = ptr + offset; | - | ||||||||||||||||||
| 32 | - | |||||||||||||||||||
| 33 | if (nbytes_avail == 0
| 0-166 | ||||||||||||||||||
| 34 | goto never executed: done;goto done;never executed: goto done; | 0 | ||||||||||||||||||
| 35 | - | |||||||||||||||||||
| 36 | - | |||||||||||||||||||
| 37 | if (delim1 ==
| 0-166 | ||||||||||||||||||
| 38 | (-1)
| 0-166 | ||||||||||||||||||
| 39 | ) | - | ||||||||||||||||||
| 40 | delim1 = delim2; never executed: delim1 = delim2; | 0 | ||||||||||||||||||
| 41 | else if (delim2 ==
| 0-166 | ||||||||||||||||||
| 42 | (-1)
| 0-166 | ||||||||||||||||||
| 43 | ) | - | ||||||||||||||||||
| 44 | delim2 = delim1; never executed: delim2 = delim1; | 0 | ||||||||||||||||||
| 45 | - | |||||||||||||||||||
| 46 | ((void) 0); | - | ||||||||||||||||||
| 47 | - | |||||||||||||||||||
| 48 | found_delimiter = | - | ||||||||||||||||||
| 49 | 0 | - | ||||||||||||||||||
| 50 | ; | - | ||||||||||||||||||
| 51 | do | - | ||||||||||||||||||
| 52 | { | - | ||||||||||||||||||
| 53 | - | |||||||||||||||||||
| 54 | - | |||||||||||||||||||
| 55 | - | |||||||||||||||||||
| 56 | int c ; | - | ||||||||||||||||||
| 57 | const char *buffer; | - | ||||||||||||||||||
| 58 | size_t buffer_len; | - | ||||||||||||||||||
| 59 | - | |||||||||||||||||||
| 60 | buffer = freadptr (stream, &buffer_len); | - | ||||||||||||||||||
| 61 | if (buffer
| 61-110 | ||||||||||||||||||
| 62 | { | - | ||||||||||||||||||
| 63 | if (delim1 !=
| 0-110 | ||||||||||||||||||
| 64 | (-1)
| 0-110 | ||||||||||||||||||
| 65 | ) | - | ||||||||||||||||||
| 66 | { | - | ||||||||||||||||||
| 67 | const char *end = memchr2 (buffer, delim1, delim2, buffer_len); | - | ||||||||||||||||||
| 68 | if (end
| 5-105 | ||||||||||||||||||
| 69 | { | - | ||||||||||||||||||
| 70 | buffer_len = end - buffer + 1; | - | ||||||||||||||||||
| 71 | found_delimiter = | - | ||||||||||||||||||
| 72 | 1 | - | ||||||||||||||||||
| 73 | ; | - | ||||||||||||||||||
| 74 | } executed 105 times by 1 test: end of blockExecuted by:
| 105 | ||||||||||||||||||
| 75 | } executed 110 times by 1 test: end of blockExecuted by:
| 110 | ||||||||||||||||||
| 76 | } executed 110 times by 1 test: end of blockExecuted by:
| 110 | ||||||||||||||||||
| 77 | else | - | ||||||||||||||||||
| 78 | { | - | ||||||||||||||||||
| 79 | c = getc_unlocked (stream); | - | ||||||||||||||||||
| 80 | if (c ==
| 0-61 | ||||||||||||||||||
| 81 | (-1)
| 0-61 | ||||||||||||||||||
| 82 | ) | - | ||||||||||||||||||
| 83 | { | - | ||||||||||||||||||
| 84 | - | |||||||||||||||||||
| 85 | if (read_pos == ptr
| 5-56 | ||||||||||||||||||
| 86 | goto executed 56 times by 1 test: unlock_done;goto unlock_done;Executed by:
executed 56 times by 1 test: goto unlock_done;Executed by:
| 56 | ||||||||||||||||||
| 87 | else | - | ||||||||||||||||||
| 88 | break; executed 5 times by 1 test: break;Executed by:
| 5 | ||||||||||||||||||
| 89 | } | - | ||||||||||||||||||
| 90 | if (c == delim1
| 0 | ||||||||||||||||||
| 91 | found_delimiter = never executed: found_delimiter = 1 ; | 0 | ||||||||||||||||||
| 92 | 1 never executed: found_delimiter = 1 ; | 0 | ||||||||||||||||||
| 93 | ; never executed: found_delimiter = 1 ; | 0 | ||||||||||||||||||
| 94 | buffer_len = 1; | - | ||||||||||||||||||
| 95 | } never executed: end of block | 0 | ||||||||||||||||||
| 96 | - | |||||||||||||||||||
| 97 | - | |||||||||||||||||||
| 98 | - | |||||||||||||||||||
| 99 | - | |||||||||||||||||||
| 100 | - | |||||||||||||||||||
| 101 | if (nbytes_avail < buffer_len + 1
| 0-110 | ||||||||||||||||||
| 102 | { | - | ||||||||||||||||||
| 103 | - | |||||||||||||||||||
| 104 | - | |||||||||||||||||||
| 105 | size_t newsize = size < 64
| 0 | ||||||||||||||||||
| 106 | char *newptr; | - | ||||||||||||||||||
| 107 | - | |||||||||||||||||||
| 108 | - | |||||||||||||||||||
| 109 | - | |||||||||||||||||||
| 110 | if (newsize - (read_pos - ptr) < buffer_len + 1
| 0 | ||||||||||||||||||
| 111 | newsize = (read_pos - ptr) + buffer_len + 1; never executed: newsize = (read_pos - ptr) + buffer_len + 1; | 0 | ||||||||||||||||||
| 112 | - | |||||||||||||||||||
| 113 | if (! (size < newsize
| 0 | ||||||||||||||||||
| 114 | newsize = nmax; never executed: newsize = nmax; | 0 | ||||||||||||||||||
| 115 | - | |||||||||||||||||||
| 116 | if ((
| 0 | ||||||||||||||||||
| 117 | (
| 0 | ||||||||||||||||||
| 118 | < 0x7fffffffffffffffL
| 0 | ||||||||||||||||||
| 119 | (9223372036854775807L)
| 0 | ||||||||||||||||||
| 120 | : 0x7fffffffffffffffL) < newsize - offset
| 0 | ||||||||||||||||||
| 121 | { | - | ||||||||||||||||||
| 122 | size_t newsizemax = offset + ( | - | ||||||||||||||||||
| 123 | (
| 0 | ||||||||||||||||||
| 124 | < 0x7fffffffffffffffL
| 0 | ||||||||||||||||||
| 125 | (9223372036854775807L) | - | ||||||||||||||||||
| 126 | : 0x7fffffffffffffffL) + 1; | - | ||||||||||||||||||
| 127 | if (size == newsizemax
| 0 | ||||||||||||||||||
| 128 | goto never executed: unlock_done;goto unlock_done;never executed: goto unlock_done; | 0 | ||||||||||||||||||
| 129 | newsize = newsizemax; | - | ||||||||||||||||||
| 130 | } never executed: end of block | 0 | ||||||||||||||||||
| 131 | - | |||||||||||||||||||
| 132 | nbytes_avail = newsize - (read_pos - ptr); | - | ||||||||||||||||||
| 133 | newptr = realloc (ptr, newsize); | - | ||||||||||||||||||
| 134 | if (!newptr
| 0 | ||||||||||||||||||
| 135 | goto never executed: unlock_done;goto unlock_done;never executed: goto unlock_done; | 0 | ||||||||||||||||||
| 136 | ptr = newptr; | - | ||||||||||||||||||
| 137 | size = newsize; | - | ||||||||||||||||||
| 138 | read_pos = size - nbytes_avail + ptr; | - | ||||||||||||||||||
| 139 | } never executed: end of block | 0 | ||||||||||||||||||
| 140 | - | |||||||||||||||||||
| 141 | - | |||||||||||||||||||
| 142 | - | |||||||||||||||||||
| 143 | - | |||||||||||||||||||
| 144 | if (1 < nbytes_avail
| 0-110 | ||||||||||||||||||
| 145 | { | - | ||||||||||||||||||
| 146 | size_t copy_len = nbytes_avail - 1; | - | ||||||||||||||||||
| 147 | if (buffer_len < copy_len
| 0-110 | ||||||||||||||||||
| 148 | copy_len = buffer_len; executed 110 times by 1 test: copy_len = buffer_len;Executed by:
| 110 | ||||||||||||||||||
| 149 | if (buffer
| 0-110 | ||||||||||||||||||
| 150 | memcpy (read_pos, buffer, copy_len); executed 110 times by 1 test: memcpy (read_pos, buffer, copy_len);Executed by:
| 110 | ||||||||||||||||||
| 151 | else | - | ||||||||||||||||||
| 152 | * never executed: read_pos = c;*read_pos = c;never executed: *read_pos = c; | 0 | ||||||||||||||||||
| 153 | read_pos += copy_len; | - | ||||||||||||||||||
| 154 | nbytes_avail -= copy_len; | - | ||||||||||||||||||
| 155 | } executed 110 times by 1 test: end of blockExecuted by:
| 110 | ||||||||||||||||||
| 156 | - | |||||||||||||||||||
| 157 | - | |||||||||||||||||||
| 158 | - | |||||||||||||||||||
| 159 | if (buffer
| 0-110 | ||||||||||||||||||
| 160 | goto never executed: unlock_done;goto unlock_done;never executed: goto unlock_done; | 0 | ||||||||||||||||||
| 161 | } executed 110 times by 1 test: end of blockExecuted by:
| 110 | ||||||||||||||||||
| 162 | while (!found_delimiter
| 5-105 | ||||||||||||||||||
| 163 | - | |||||||||||||||||||
| 164 | - | |||||||||||||||||||
| 165 | - | |||||||||||||||||||
| 166 | *read_pos = '\0'; | - | ||||||||||||||||||
| 167 | - | |||||||||||||||||||
| 168 | bytes_stored = read_pos - (ptr + offset); | - | ||||||||||||||||||
| 169 | - | |||||||||||||||||||
| 170 | unlock_done: code before this statement executed 110 times by 1 test: unlock_done:Executed by:
| 110 | ||||||||||||||||||
| 171 | ((void) 0); | - | ||||||||||||||||||
| 172 | - | |||||||||||||||||||
| 173 | done: code before this statement executed 166 times by 1 test: done:Executed by:
| 166 | ||||||||||||||||||
| 174 | *lineptr = ptr; | - | ||||||||||||||||||
| 175 | *linesize = size; | - | ||||||||||||||||||
| 176 | return executed 166 times by 1 test: bytes_stored ? bytes_stored : -1;return bytes_stored ? bytes_stored : -1;Executed by:
executed 166 times by 1 test: return bytes_stored ? bytes_stored : -1;Executed by:
| 166 | ||||||||||||||||||
| 177 | } | - | ||||||||||||||||||
| Switch to Source code | Preprocessed file |