Lines Matching refs:buffer

14 clear_line_buffer(struct line_buffer &buffer)
16 buffer.in = 0;
17 buffer.first = 0;
23 init_line_buffer(struct line_buffer &buffer, size_t size)
25 clear_line_buffer(buffer);
27 buffer.buffer = (char *)malloc(size);
28 if (buffer.buffer == NULL)
31 buffer.size = size;
38 uninit_line_buffer(struct line_buffer &buffer)
40 free(buffer.buffer);
46 line_buffer_readable(struct line_buffer &buffer)
48 return buffer.in;
53 line_buffer_readable_line(struct line_buffer &buffer, char eol, char eof)
55 size_t size = buffer.in;
61 char c = buffer.buffer[(buffer.first + i) % buffer.size];
66 // If the buffer is full, but doesn't contain a EOL or EOF, we report the
68 return buffer.in == buffer.size ? buffer.in : 0;
73 line_buffer_writable(struct line_buffer &buffer)
75 return buffer.size - buffer.in;
80 line_buffer_user_read(struct line_buffer &buffer, char *data, size_t length,
83 size_t available = buffer.in;
95 char c = buffer.buffer[(buffer.first + i) % buffer.size];
106 if (buffer.first + length < buffer.size) {
108 if (user_memcpy(data, buffer.buffer + buffer.first, length) != B_OK)
112 size_t upper = buffer.size - buffer.first;
115 if (user_memcpy(data, buffer.buffer + buffer.first, upper) != B_OK
116 || user_memcpy(data + upper, buffer.buffer, lower) != B_OK)
121 buffer.first = (buffer.first + bytesRead) % buffer.size;
122 buffer.in -= bytesRead;
127 buffer.first = (buffer.first + 1) % buffer.size;
128 buffer.in--;
136 line_buffer_putc(struct line_buffer &buffer, char c)
138 if (buffer.in == buffer.size)
141 buffer.buffer[(buffer.first + buffer.in++) % buffer.size] = c;
148 line_buffer_getc(struct line_buffer &buffer, char *_c)
154 line_buffer_ungetc(struct line_buffer &buffer, char *c)
162 line_buffer_tail_getc(struct line_buffer &buffer, char *c)
164 if (buffer.in == 0)
167 *c = buffer.buffer[(buffer.first + --buffer.in) % buffer.size];