| Absolute File Name: | /home/opencoverage/opencoverage/guest-scripts/coreutils/src/gnulib/lib/careadlinkat.c |
| Switch to Source code | Preprocessed file |
| Line | Source | Count | ||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | - | |||||||||||||||||||
| 2 | - | |||||||||||||||||||
| 3 | char * | - | ||||||||||||||||||
| 4 | careadlinkat (int fd, char const *filename, | - | ||||||||||||||||||
| 5 | char *buffer, size_t buffer_size, | - | ||||||||||||||||||
| 6 | struct allocator const *alloc, | - | ||||||||||||||||||
| 7 | ssize_t (*preadlinkat) (int, char const *, char *, size_t)) | - | ||||||||||||||||||
| 8 | { | - | ||||||||||||||||||
| 9 | char *buf; | - | ||||||||||||||||||
| 10 | size_t buf_size; | - | ||||||||||||||||||
| 11 | size_t buf_size_max = | - | ||||||||||||||||||
| 12 | 0x7fffffffffffffffL < ((size_t) -1)
| 0-2 | ||||||||||||||||||
| 13 | char stack_buf[1024]; | - | ||||||||||||||||||
| 14 | - | |||||||||||||||||||
| 15 | if (! alloc
| 0-2 | ||||||||||||||||||
| 16 | alloc = &stdlib_allocator; executed 2 times by 1 test: alloc = &stdlib_allocator;Executed by:
| 2 | ||||||||||||||||||
| 17 | - | |||||||||||||||||||
| 18 | if (! buffer_size
| 0-2 | ||||||||||||||||||
| 19 | { | - | ||||||||||||||||||
| 20 | - | |||||||||||||||||||
| 21 | - | |||||||||||||||||||
| 22 | - | |||||||||||||||||||
| 23 | - | |||||||||||||||||||
| 24 | buffer = stack_buf; | - | ||||||||||||||||||
| 25 | buffer_size = sizeof stack_buf; | - | ||||||||||||||||||
| 26 | } executed 2 times by 1 test: end of blockExecuted by:
| 2 | ||||||||||||||||||
| 27 | - | |||||||||||||||||||
| 28 | buf = buffer; | - | ||||||||||||||||||
| 29 | buf_size = buffer_size; | - | ||||||||||||||||||
| 30 | - | |||||||||||||||||||
| 31 | do | - | ||||||||||||||||||
| 32 | { | - | ||||||||||||||||||
| 33 | - | |||||||||||||||||||
| 34 | ssize_t link_length = preadlinkat (fd, filename, buf, buf_size); | - | ||||||||||||||||||
| 35 | size_t link_size; | - | ||||||||||||||||||
| 36 | if (link_length < 0
| 0-2 | ||||||||||||||||||
| 37 | { | - | ||||||||||||||||||
| 38 | - | |||||||||||||||||||
| 39 | - | |||||||||||||||||||
| 40 | int readlinkat_errno = | - | ||||||||||||||||||
| 41 | (*__errno_location ()) | - | ||||||||||||||||||
| 42 | ; | - | ||||||||||||||||||
| 43 | if (readlinkat_errno !=
| 0 | ||||||||||||||||||
| 44 | 34
| 0 | ||||||||||||||||||
| 45 | ) | - | ||||||||||||||||||
| 46 | { | - | ||||||||||||||||||
| 47 | if (buf != buffer
| 0 | ||||||||||||||||||
| 48 | { | - | ||||||||||||||||||
| 49 | alloc->free (buf); | - | ||||||||||||||||||
| 50 | - | |||||||||||||||||||
| 51 | (*__errno_location ()) | - | ||||||||||||||||||
| 52 | = readlinkat_errno; | - | ||||||||||||||||||
| 53 | } never executed: end of block | 0 | ||||||||||||||||||
| 54 | return never executed: return ((void *)0) ;never executed: return ((void *)0) ; | 0 | ||||||||||||||||||
| 55 | ((void *)0) never executed: return ((void *)0) ; | 0 | ||||||||||||||||||
| 56 | ; never executed: return ((void *)0) ; | 0 | ||||||||||||||||||
| 57 | } | - | ||||||||||||||||||
| 58 | } never executed: end of block | 0 | ||||||||||||||||||
| 59 | - | |||||||||||||||||||
| 60 | link_size = link_length; | - | ||||||||||||||||||
| 61 | - | |||||||||||||||||||
| 62 | if (link_size < buf_size
| 0-2 | ||||||||||||||||||
| 63 | { | - | ||||||||||||||||||
| 64 | buf[link_size++] = '\0'; | - | ||||||||||||||||||
| 65 | - | |||||||||||||||||||
| 66 | if (buf == stack_buf
| 0-2 | ||||||||||||||||||
| 67 | { | - | ||||||||||||||||||
| 68 | char *b = (char *) alloc->allocate (link_size); | - | ||||||||||||||||||
| 69 | buf_size = link_size; | - | ||||||||||||||||||
| 70 | if (! b
| 0-2 | ||||||||||||||||||
| 71 | break; never executed: break; | 0 | ||||||||||||||||||
| 72 | memcpy (b, buf, link_size); | - | ||||||||||||||||||
| 73 | buf = b; | - | ||||||||||||||||||
| 74 | } executed 2 times by 1 test: end of blockExecuted by:
| 2 | ||||||||||||||||||
| 75 | else if (link_size < buf_size
| 0 | ||||||||||||||||||
| 76 | { | - | ||||||||||||||||||
| 77 | - | |||||||||||||||||||
| 78 | char *b = (char *) alloc->reallocate (buf, link_size); | - | ||||||||||||||||||
| 79 | if (b
| 0 | ||||||||||||||||||
| 80 | buf = b; never executed: buf = b; | 0 | ||||||||||||||||||
| 81 | } never executed: end of block | 0 | ||||||||||||||||||
| 82 | - | |||||||||||||||||||
| 83 | return executed 2 times by 1 test: buf;return buf;Executed by:
executed 2 times by 1 test: return buf;Executed by:
| 2 | ||||||||||||||||||
| 84 | } | - | ||||||||||||||||||
| 85 | - | |||||||||||||||||||
| 86 | if (buf != buffer
| 0 | ||||||||||||||||||
| 87 | alloc->free (buf); never executed: alloc->free (buf); | 0 | ||||||||||||||||||
| 88 | - | |||||||||||||||||||
| 89 | if (buf_size <= buf_size_max / 2
| 0 | ||||||||||||||||||
| 90 | buf_size *= 2; never executed: buf_size *= 2; | 0 | ||||||||||||||||||
| 91 | else if (buf_size < buf_size_max
| 0 | ||||||||||||||||||
| 92 | buf_size = buf_size_max; never executed: buf_size = buf_size_max; | 0 | ||||||||||||||||||
| 93 | else if (buf_size_max < ((size_t) -1)
| 0 | ||||||||||||||||||
| 94 | { | - | ||||||||||||||||||
| 95 | - | |||||||||||||||||||
| 96 | (*__errno_location ()) | - | ||||||||||||||||||
| 97 | = | - | ||||||||||||||||||
| 98 | 36 | - | ||||||||||||||||||
| 99 | ; | - | ||||||||||||||||||
| 100 | return never executed: return ((void *)0) ;never executed: return ((void *)0) ; | 0 | ||||||||||||||||||
| 101 | ((void *)0) never executed: return ((void *)0) ; | 0 | ||||||||||||||||||
| 102 | ; never executed: return ((void *)0) ; | 0 | ||||||||||||||||||
| 103 | } | - | ||||||||||||||||||
| 104 | else | - | ||||||||||||||||||
| 105 | break; never executed: break; | 0 | ||||||||||||||||||
| 106 | buf = (char *) alloc->allocate (buf_size); | - | ||||||||||||||||||
| 107 | } never executed: end of block | 0 | ||||||||||||||||||
| 108 | while (buf
| 0 | ||||||||||||||||||
| 109 | - | |||||||||||||||||||
| 110 | if (alloc->die
| 0 | ||||||||||||||||||
| 111 | alloc->die (buf_size); never executed: alloc->die (buf_size); | 0 | ||||||||||||||||||
| 112 | - | |||||||||||||||||||
| 113 | (*__errno_location ()) | - | ||||||||||||||||||
| 114 | = | - | ||||||||||||||||||
| 115 | 12 | - | ||||||||||||||||||
| 116 | ; | - | ||||||||||||||||||
| 117 | return never executed: return ((void *)0) ;never executed: return ((void *)0) ; | 0 | ||||||||||||||||||
| 118 | ((void *)0) never executed: return ((void *)0) ; | 0 | ||||||||||||||||||
| 119 | ; never executed: return ((void *)0) ; | 0 | ||||||||||||||||||
| 120 | } | - | ||||||||||||||||||
| Switch to Source code | Preprocessed file |