Browse Source

add buffer_fromsa (make virtual buffer from stralloc)

master
Felix von Leitner 18 years ago
parent
commit
1e0728abd0
5 changed files with 62 additions and 0 deletions
  1. +3
    -0
      CHANGES
  2. +4
    -0
      buffer.h
  3. +19
    -0
      buffer/buffer_fromsa.3
  4. +15
    -0
      buffer/buffer_fromsa.c
  5. +21
    -0
      test/buffer_fromsa.c

+ 3
- 0
CHANGES View File

@ -1,3 +1,6 @@
0.16:
add buffer_fromsa (make buffer from stralloc)
0.15:
man page update (document stralloc return values)
add stralloc_chop and stralloc_chomp


+ 4
- 0
buffer.h View File

@ -102,6 +102,10 @@ typedef int (*sa_predicate)(stralloc* sa);
/* like buffer_get_token_sa but the token ends when your predicate says so */
extern int buffer_get_token_sa_pred(buffer* b,stralloc* sa,sa_predicate p);
/* make a buffer from a stralloc.
* Do not change the stralloc after this! */
void buffer_fromsa(buffer* b,stralloc* sa);
#endif
#endif

+ 19
- 0
buffer/buffer_fromsa.3 View File

@ -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)

+ 15
- 0
buffer/buffer_fromsa.c View File

@ -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;
}

+ 21
- 0
test/buffer_fromsa.c View File

@ -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…
Cancel
Save