diff --git a/buffer.h b/buffer.h index e8de491..7358565 100644 --- a/buffer.h +++ b/buffer.h @@ -32,6 +32,9 @@ extern int buffer_putsflush(buffer* b,const char* x); extern int buffer_get(buffer* b,char* x,unsigned int len); extern int buffer_bget(buffer* b,char* x,unsigned int len); extern int buffer_feed(buffer* b); +extern int buffer_getc(buffer* b,char* x); +extern int buffer_getn(buffer* b,char* x,unsigned int len); +extern int buffer_get_token(buffer* b,char* x,unsigned int len,const char* charset,unsigned int setlen); extern char *buffer_peek(buffer* b); extern void buffer_seek(buffer* b,unsigned int len); diff --git a/buffer/buffer_get_token.c b/buffer/buffer_get_token.c new file mode 100644 index 0000000..954679b --- /dev/null +++ b/buffer/buffer_get_token.c @@ -0,0 +1,15 @@ +#include "byte.h" +#include "buffer.h" +#include "scan.h" + +int buffer_get_token(buffer* b,char* x,unsigned int len,const char* charset,unsigned int setlen) { + int blen; + + for (blen=0;blenp==b->n) { + register int blen; + if ((blen=buffer_feed(b))<=0) return blen; + } + *x=b->x[b->p]; + ++b->p; + return 1; +} diff --git a/buffer/buffer_getn.c b/buffer/buffer_getn.c new file mode 100644 index 0000000..de8da12 --- /dev/null +++ b/buffer/buffer_getn.c @@ -0,0 +1,13 @@ +#include "byte.h" +#include "buffer.h" + +int buffer_getn(buffer* b,char* x,unsigned int len) { + int blen; + + for(blen=0;blen