46 char *line = &linebuf->
data[ linebuf->
len ];
49 if ( ( linebuf->
len == 0 ) || ( linebuf->
consumed == 0 ) ||
50 ( *(--line) !=
'\0' ) )
54 while ( ( line > linebuf->
data ) && ( line[-1] !=
'\0' ) )
101 consume = ( eol -
data + 1 );
111 new_len = ( linebuf->
len + consume );
112 new_data =
realloc ( linebuf->
data, ( new_len + 1 ) );
116 new_data[new_len] =
'\0';
117 linebuf->
data = new_data;
118 linebuf->
len = new_len;
125 lf = &linebuf->
data[ linebuf->
len - 1 ];
130 if ( linebuf->
len > 1 ) {
#define EINVAL
Invalid argument.
void * memchr(const void *src, int character, size_t len)
Find character within a memory region.
size_t consumed
Most recently consumed length.
#define ENOMEM
Not enough space.
void * memcpy(void *dest, const void *src, size_t len) __nonnull
assert((readw(&hdr->flags) &(GTF_reading|GTF_writing))==0)
FILE_LICENCE(GPL2_OR_LATER_OR_UBDL)
void empty_line_buffer(struct line_buffer *linebuf)
Discard line buffer contents.
size_t len
Length of buffered data.
static void(* free)(struct refcnt *refcnt))
char * buffered_line(struct line_buffer *linebuf)
Retrieve buffered-up line.
uint8_t data[48]
Additional event data.
void * realloc(void *old_ptr, size_t new_size)
Reallocate memory.
int line_buffer(struct line_buffer *linebuf, const char *data, size_t len)
Buffer up received data by lines.
#define NULL
NULL pointer (VOID *)