/*
* reimplementation of Daniel Bernstein's unix library.
* placed in the public domain by Uwe Ohse, uwe@ohse.de.
*/
#include "byte.h"
#include "getln.h"
int
getln (buffer * b, stralloc * sa, int *gotit, int termchar)
{
if (!stralloc_ready (sa, 0))
return -1;
sa->len = 0;
while (1) {
int r;
char *p;
int off;
r = buffer_feed (b);
if (r < 0)
return -1;
if (r == 0) {
*gotit = 0;
return 0;
}
p = buffer_PEEK (b);
off = byte_chr (p, r, termchar);
if (off!=r)
r=off+1; /* byte_chr returns index, not length */
if (!stralloc_catb (sa, p, r))
return -1;
buffer_SEEK (b, r);
if (off!=r) {
*gotit = 1;
return 0;
}
}
}
syntax highlighted by Code2HTML, v. 0.9.1