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