add buffer_fromsa (make virtual buffer from stralloc)
parent
558c6128fe
commit
a327b75831
@ -0,0 +1,19 @@
|
||||
.TH buffer_fromsa 3
|
||||
.SH NAME
|
||||
buffer_fromsa \- initialize buffer structure from stralloc
|
||||
.SH SYNTAX
|
||||
.B #include <buffer.h>
|
||||
|
||||
int \fBbuffer_fromsa\fR(buffer* \fIb\fR,stralloc* \fIsa\fR);
|
||||
.SH DESCRIPTION
|
||||
buffer_fromsa makes a virtual read buffer from a stralloc. The buffer
|
||||
reading functions will be able to read until the end of the data in the
|
||||
stralloc, then signal EOF. The buffer does not have its own buffer
|
||||
space, it reuses the one in the stralloc.
|
||||
|
||||
Do not touch the stralloc until your are done with the buffer! In
|
||||
particular, do not call stralloc_free on it!
|
||||
|
||||
Reading data from the buffer will not change the stralloc.
|
||||
.SH "SEE ALSO"
|
||||
buffer_init(3), buffer(3)
|
@ -0,0 +1,15 @@
|
||||
#include "stralloc.h"
|
||||
#include "buffer.h"
|
||||
|
||||
static int dummyreadwrite(int fd,char* buf,unsigned long int len) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
void buffer_fromsa(buffer* b,stralloc* sa) {
|
||||
b->x=sa->s;
|
||||
b->p=0;
|
||||
b->n=sa->len;
|
||||
b->a=sa->a;
|
||||
b->fd=0;
|
||||
b->op=dummyreadwrite;
|
||||
}
|
@ -0,0 +1,21 @@
|
||||
#include "stralloc.h"
|
||||
#include "buffer.h"
|
||||
|
||||
int main() {
|
||||
stralloc sa;
|
||||
buffer b;
|
||||
stralloc line;
|
||||
|
||||
stralloc_init(&sa);
|
||||
stralloc_init(&line);
|
||||
stralloc_copys(&sa,"this is a test\nline 2\n");
|
||||
buffer_fromsa(&b,&sa);
|
||||
|
||||
while (buffer_getline_sa(&b,&line)==0) {
|
||||
buffer_puts(buffer_1,"got line: \"");
|
||||
if (stralloc_chop(&line)!='\n') break;
|
||||
buffer_putsa(buffer_1,&line);
|
||||
buffer_putsflush(buffer_1,"\"\n");
|
||||
stralloc_copys(&line,"");
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue