add buffer_putsa, buffer_get_token_sa, buffer_getline_sa, stralloc_chomp

and stralloc_chop
This commit is contained in:
leitner
2002-10-17 20:32:03 +00:00
parent 2354c458a8
commit 053aadde58
14 changed files with 174 additions and 0 deletions

View File

@@ -0,0 +1,23 @@
.TH buffer_get_token_sa 3
.SH NAME
buffer_get_token_sa \- read token from buffer
.SH SYNTAX
.nf
.B #include <stralloc.h>
.B #include <buffer.h>
int \fBbuffer_get_token_sa\fP(buffer* \fIb\fR,stralloc* \fIsa\fR,
const char* \fIcharset\fR,unsigned int \fIsetlen\fR);
.SH DESCRIPTION
buffer_get_token_sa copies data from the \fIb\fR to \fIsa\fR until one
of the delimiters in \fIcharset\fR is found, overwriting the previous
content of \fIsa\fR. That delimiter is also appended to \fIsa\fR.
If reading from the buffer or allocating memory fails,
buffer_get_token_sa returns -1 and sets \fIerrno\fR appropriately. At
that point \fIsa\fR may be empty or it may already contain a partial
token.
On success, buffer_get_token_sa returns 0.
.SH "SEE ALSO"
buffer_getline_sa(3), buffer_get_token(3), buffer(3)

View File

@@ -0,0 +1,22 @@
#include "byte.h"
#include "stralloc.h"
#include "buffer.h"
#include <errno.h>
int buffer_get_token_sa(buffer* b,stralloc* sa,const char* charset,unsigned int setlen) {
sa->len=0;
for (;;) {
char x;
if (!stralloc_readyplus(sa,1)) goto nomem;
switch (buffer_getc(b,&x)) {
case -1: return -1;
case 0: return 0;
}
stralloc_append(sa,&x);
if (byte_chr(charset,setlen,x)<setlen) break;
}
return 0;
nomem:
errno=ENOMEM;
return -1;
}

View File

@@ -0,0 +1,22 @@
.TH buffer_getline_sa 3
.SH NAME
buffer_getline_sa \- read line from buffer
.SH SYNTAX
.nf
.B #include <stralloc.h>
.B #include <buffer.h>
int \fBbuffer_getline_sa\fP(buffer* \fIb\fR,stralloc* \fIsa\fR);
.SH DESCRIPTION
buffer_getline_sa copies data from the \fIb\fR to \fIsa\fR until a '\\n'
is found, overwriting the previous content of \fIsa\fR. The new-line
is also appended to \fIsa\fR.
If reading from the buffer or allocating memory fails,
buffer_getline_sa returns -1 and sets \fIerrno\fR appropriately. At
that point \fIsa\fR may be empty or it may already contain a partial
token.
On success, buffer_getline_sa returns 0.
.SH "SEE ALSO"
buffer_get_token_sa(3), buffer(3)

View File

@@ -0,0 +1,6 @@
#include "stralloc.h"
#include "buffer.h"
int buffer_getline_sa(buffer* b,stralloc* sa) {
return buffer_get_token_sa(b,sa,"\n",1);
}

14
buffer/buffer_putsa.3 Normal file
View File

@@ -0,0 +1,14 @@
.TH buffer_putsa 3
.SH NAME
buffer_putsa \- write stralloc to buffer
.SH SYNTAX
.nf
.B #include <stralloc.h>
.B #include <buffer.h>
int \fBbuffer_putsa\fP(buffer* \fIb\fR,const char* \fIx\fR);
.SH DESCRIPTION
buffer_putsa is equivalent to buffer_put(b,x.sa,x.len).
.SH "SEE ALSO"
buffer_puts(3), buffer_flush(3), buffer(3)

6
buffer/buffer_putsa.c Normal file
View File

@@ -0,0 +1,6 @@
#include "stralloc.h"
#include "buffer.h"
int buffer_putsa(buffer* b,stralloc* sa) {
return buffer_put(b,sa->s,sa->len);
}