Browse Source

add buffer_peekc

master
Felix von Leitner 1 year ago
parent
commit
6c1276294d
  1. 1
      buffer.h
  2. 17
      buffer/buffer_peekc.3
  3. 11
      buffer/buffer_peekc.c

1
buffer.h

@ -125,6 +125,7 @@ __writememsz__(2,3)
ssize_t buffer_get(buffer* b,char* x,size_t len);
ssize_t buffer_feed(buffer* b);
ssize_t buffer_getc(buffer* b,char* x);
ssize_t buffer_peekc(buffer* b,char* x);
__writememsz__(2,3)
ssize_t buffer_getn(buffer* b,char* x,size_t len);

17
buffer/buffer_peekc.3

@ -0,0 +1,17 @@
.TH buffer_peekc 3
.SH NAME
buffer_peekc \- read one char from buffer
.SH SYNTAX
.B #include <libowfat/buffer.h>
int \fBbuffer_peekc\fP(buffer* \fIb\fR,char* \fIx\fR);
.SH DESCRIPTION
buffer_peekc(b,x) is like buffer_get(b,x,1) but without
advancing the buffer pointer. If you call it again, or call
\fIbuffer_getc\fR after it, you will get the same data again.
.SH "RETURN VALUE"
\fIbuffer_peekc\fR returns 1 on success, 0 when at the end of the file,
or -1 if there was an I/O error (setting \fIerrno\fR appropriately).
.SH "SEE ALSO"
buffer_init(3), buffer_get(3), buffer_getc(3), buffer(3)

11
buffer/buffer_peekc.c

@ -0,0 +1,11 @@
#include "byte.h"
#include "buffer.h"
ssize_t buffer_peekc(buffer* b,char* x) {
if (b->p==b->n) {
register ssize_t blen;
if ((blen=buffer_feed(b))<=0) return blen;
}
*x=b->x[b->p];
return 1;
}
Loading…
Cancel
Save