| Line | Source | Count |
| 1 | | - |
| 2 | | - |
| 3 | | - |
| 4 | | - |
| 5 | | - |
| 6 | | - |
| 7 | | - |
| 8 | | - |
| 9 | | - |
| 10 | | - |
| 11 | extern ssize_t zread (int, char *, size_t); | - |
| 12 | extern ssize_t zreadc (int, char *); | - |
| 13 | extern ssize_t zreadintr (int, char *, size_t); | - |
| 14 | extern ssize_t zreadcintr (int, char *); | - |
| 15 | | - |
| 16 | typedef ssize_t breadfunc_t (int, char *, size_t); | - |
| 17 | typedef ssize_t creadfunc_t (int, char *); | - |
| 18 | ssize_t | - |
| 19 | zgetline (fd, lineptr, n, delim, unbuffered_read) | - |
| 20 | int fd; | - |
| 21 | char **lineptr; | - |
| 22 | size_t *n; | - |
| 23 | int delim; | - |
| 24 | int unbuffered_read; | - |
| 25 | { | - |
| 26 | int nr, retval; | - |
| 27 | char *line, c; | - |
| 28 | | - |
| 29 | if (lineptr == 0| TRUE | never evaluated | | FALSE | evaluated 161 times by 1 test |
|| n == 0| TRUE | never evaluated | | FALSE | evaluated 161 times by 1 test |
|| (*| TRUE | evaluated 23 times by 1 test | | FALSE | evaluated 138 times by 1 test |
lineptr == 0| TRUE | evaluated 23 times by 1 test | | FALSE | evaluated 138 times by 1 test |
&& *| TRUE | never evaluated | | FALSE | evaluated 23 times by 1 test |
n != 0| TRUE | never evaluated | | FALSE | evaluated 23 times by 1 test |
)) | 0-161 |
| 30 | return never executed: return -1; -1;never executed: return -1; | 0 |
| 31 | | - |
| 32 | nr = 0; | - |
| 33 | line = *lineptr; | - |
| 34 | | - |
| 35 | while (1) | - |
| 36 | { | - |
| 37 | retval = unbuffered_read| TRUE | evaluated 24 times by 1 test | | FALSE | evaluated 2509 times by 1 test |
? zread (fd, &c, 1) : zreadc(fd, &c); | 24-2509 |
| 38 | | - |
| 39 | if (retval <= 0| TRUE | evaluated 27 times by 1 test | | FALSE | evaluated 2506 times by 1 test |
) | 27-2506 |
| 40 | { | - |
| 41 | if (line| TRUE | evaluated 16 times by 1 test | | FALSE | evaluated 11 times by 1 test |
&& nr > 0| TRUE | evaluated 7 times by 1 test | | FALSE | evaluated 9 times by 1 test |
) | 7-16 |
| 42 | line[nr] = '\0';executed 7 times by 1 test: line[nr] = '\0'; | 7 |
| 43 | break;executed 27 times by 1 test: break; | 27 |
| 44 | } | - |
| 45 | | - |
| 46 | if (nr + 2 >= *n| TRUE | evaluated 20 times by 1 test | | FALSE | evaluated 2486 times by 1 test |
) | 20-2486 |
| 47 | { | - |
| 48 | size_t new_size; | - |
| 49 | | - |
| 50 | new_size = (*| TRUE | evaluated 12 times by 1 test | | FALSE | evaluated 8 times by 1 test |
n == 0)| TRUE | evaluated 12 times by 1 test | | FALSE | evaluated 8 times by 1 test |
? 16 : *n * 2; | 8-12 |
| 51 | line = (*| TRUE | never evaluated | | FALSE | evaluated 20 times by 1 test |
n >= new_size)| TRUE | never evaluated | | FALSE | evaluated 20 times by 1 test |
? | 0-20 |
| 52 | ((void *)0) | - |
| 53 | : sh_xrealloc((*lineptr), (new_size), "zgetline.c", 96); | - |
| 54 | | - |
| 55 | if (line| TRUE | evaluated 20 times by 1 test | | FALSE | never evaluated |
) | 0-20 |
| 56 | { | - |
| 57 | *lineptr = line; | - |
| 58 | *n = new_size; | - |
| 59 | }executed 20 times by 1 test: end of block | 20 |
| 60 | else | - |
| 61 | { | - |
| 62 | if (*| TRUE | never evaluated | | FALSE | never evaluated |
n > 0| TRUE | never evaluated | | FALSE | never evaluated |
) | 0 |
| 63 | { | - |
| 64 | (*lineptr)[*n - 1] = '\0'; | - |
| 65 | nr = *n - 2; | - |
| 66 | } never executed: end of block | 0 |
| 67 | break; never executed: break; | 0 |
| 68 | } | - |
| 69 | } | - |
| 70 | | - |
| 71 | line[nr] = c; | - |
| 72 | nr++; | - |
| 73 | | - |
| 74 | if (c == delim| TRUE | evaluated 134 times by 1 test | | FALSE | evaluated 2372 times by 1 test |
) | 134-2372 |
| 75 | { | - |
| 76 | line[nr] = '\0'; | - |
| 77 | break;executed 134 times by 1 test: break; | 134 |
| 78 | } | - |
| 79 | }executed 2372 times by 1 test: end of block | 2372 |
| 80 | | - |
| 81 | returnexecuted 161 times by 1 test: return nr - 1; nr - 1;executed 161 times by 1 test: return nr - 1; | 161 |
| 82 | } | - |
| | |