summaryrefslogtreecommitdiff
path: root/buffer.c
diff options
context:
space:
mode:
Diffstat (limited to 'buffer.c')
-rw-r--r--buffer.c48
1 files changed, 38 insertions, 10 deletions
diff --git a/buffer.c b/buffer.c
index 9217cb269..1a25004ba 100644
--- a/buffer.c
+++ b/buffer.c
@@ -12,7 +12,7 @@
12 */ 12 */
13 13
14#include "includes.h" 14#include "includes.h"
15RCSID("$OpenBSD: buffer.c,v 1.21 2003/11/21 11:57:03 djm Exp $"); 15RCSID("$OpenBSD: buffer.c,v 1.22 2004/10/29 23:56:17 djm Exp $");
16 16
17#include "xmalloc.h" 17#include "xmalloc.h"
18#include "buffer.h" 18#include "buffer.h"
@@ -126,34 +126,62 @@ buffer_len(Buffer *buffer)
126 126
127/* Gets data from the beginning of the buffer. */ 127/* Gets data from the beginning of the buffer. */
128 128
129void 129int
130buffer_get(Buffer *buffer, void *buf, u_int len) 130buffer_get_ret(Buffer *buffer, void *buf, u_int len)
131{ 131{
132 if (len > buffer->end - buffer->offset) 132 if (len > buffer->end - buffer->offset) {
133 fatal("buffer_get: trying to get more bytes %d than in buffer %d", 133 error("buffer_get_ret: trying to get more bytes %d than in buffer %d",
134 len, buffer->end - buffer->offset); 134 len, buffer->end - buffer->offset);
135 return (-1);
136 }
135 memcpy(buf, buffer->buf + buffer->offset, len); 137 memcpy(buf, buffer->buf + buffer->offset, len);
136 buffer->offset += len; 138 buffer->offset += len;
139 return (0);
140}
141
142void
143buffer_get(Buffer *buffer, void *buf, u_int len)
144{
145 if (buffer_get_ret(buffer, buf, len) == -1)
146 fatal("buffer_get: buffer error");
137} 147}
138 148
139/* Consumes the given number of bytes from the beginning of the buffer. */ 149/* Consumes the given number of bytes from the beginning of the buffer. */
140 150
151int
152buffer_consume_ret(Buffer *buffer, u_int bytes)
153{
154 if (bytes > buffer->end - buffer->offset) {
155 error("buffer_consume_ret: trying to get more bytes than in buffer");
156 return (-1);
157 }
158 buffer->offset += bytes;
159 return (0);
160}
161
141void 162void
142buffer_consume(Buffer *buffer, u_int bytes) 163buffer_consume(Buffer *buffer, u_int bytes)
143{ 164{
144 if (bytes > buffer->end - buffer->offset) 165 if (buffer_consume_ret(buffer, bytes) == -1)
145 fatal("buffer_consume: trying to get more bytes than in buffer"); 166 fatal("buffer_consume: buffer error");
146 buffer->offset += bytes;
147} 167}
148 168
149/* Consumes the given number of bytes from the end of the buffer. */ 169/* Consumes the given number of bytes from the end of the buffer. */
150 170
171int
172buffer_consume_end_ret(Buffer *buffer, u_int bytes)
173{
174 if (bytes > buffer->end - buffer->offset)
175 return (-1);
176 buffer->end -= bytes;
177 return (0);
178}
179
151void 180void
152buffer_consume_end(Buffer *buffer, u_int bytes) 181buffer_consume_end(Buffer *buffer, u_int bytes)
153{ 182{
154 if (bytes > buffer->end - buffer->offset) 183 if (buffer_consume_end_ret(buffer, bytes) == -1)
155 fatal("buffer_consume_end: trying to get more bytes than in buffer"); 184 fatal("buffer_consume_end: trying to get more bytes than in buffer");
156 buffer->end -= bytes;
157} 185}
158 186
159/* Returns a pointer to the first used byte in the buffer. */ 187/* Returns a pointer to the first used byte in the buffer. */