Commit | Line | Data |
---|---|---|
dc0d77d7 CE |
1 | #include "byte.h" |
2 | #include "getln.h" | |
3 | ||
4 | int getln2(buffer *ss,stralloc *sa,char **cont,unsigned int *clen,int sep) | |
5 | { | |
6 | register char *x; | |
7 | register unsigned int i; | |
8 | int n; | |
9 | ||
10 | if (!stralloc_ready(sa,0)) return -1; | |
11 | sa->len = 0; | |
12 | ||
13 | for (;;) { | |
14 | n = buffer_feed(ss); | |
15 | if (n < 0) return -1; | |
16 | if (n == 0) { *clen = 0; return 0; } | |
17 | x = buffer_PEEK(ss); | |
18 | i = byte_chr(x,n,sep); | |
19 | if (i < n) { buffer_SEEK(ss,*clen = i + 1); *cont = x; return 0; } | |
20 | if (!stralloc_readyplus(sa,n)) return -1; | |
21 | i = sa->len; | |
22 | sa->len = i + buffer_get(ss,sa->s + i,n); | |
23 | } | |
24 | } |