Buffer offset must point to a valid event_header struct */
| 127 | |
| 128 | /* Buffer offset must point to a valid event_header struct */ |
| 129 | static size_t next_available_event_offset(const struct buffer *buf) |
| 130 | { |
| 131 | const struct event_header *event; |
| 132 | struct buffer copy, *iter = © |
| 133 | |
| 134 | assert(buffer_offset(buf) >= sizeof(struct elog_header)); |
| 135 | |
| 136 | buffer_clone(iter, buf); |
| 137 | |
| 138 | while (buffer_size(iter) >= sizeof(struct event_header)) { |
| 139 | event = buffer_get(iter); |
| 140 | if (event->type == ELOG_TYPE_EOL || event->length == 0) |
| 141 | break; |
| 142 | |
| 143 | assert(event->length <= buffer_size(iter)); |
| 144 | buffer_seek(iter, event->length); |
| 145 | } |
| 146 | |
| 147 | return buffer_offset(iter) - buffer_offset(buf); |
| 148 | } |
| 149 | |
| 150 | /* |
| 151 | * Shrinks buffer by ~bytes_to_shrink, then appends a LOG_CLEAR event, |
no test coverage detected