From d75b3c29729522e0698ed17be2079465c0c72da5 Mon Sep 17 00:00:00 2001 From: Laurent Bercot Date: Fri, 5 Dec 2014 14:46:57 +0000 Subject: Add skagetln_nofill --- src/libstddjb/skagetln.c | 12 ++---------- src/libstddjb/skagetln_nofill.c | 19 +++++++++++++++++++ 2 files changed, 21 insertions(+), 10 deletions(-) create mode 100644 src/libstddjb/skagetln_nofill.c (limited to 'src/libstddjb') diff --git a/src/libstddjb/skagetln.c b/src/libstddjb/skagetln.c index 056cc38..05775f6 100644 --- a/src/libstddjb/skagetln.c +++ b/src/libstddjb/skagetln.c @@ -2,7 +2,6 @@ #include #include -#include #include #include @@ -11,15 +10,8 @@ int skagetln (buffer *b, stralloc *sa, char sep) unsigned int start = sa->len ; for (;;) { - siovec_t v[2] ; - unsigned int pos ; - int r ; - buffer_rpeek(b, v) ; - pos = siovec_bytechr(v, 2, sep) ; - r = pos < buffer_len(b) ; pos += r ; - if (!stralloc_readyplus(sa, pos)) return -1 ; - buffer_getnofill(b, sa->s + sa->len, pos) ; sa->len += pos ; - if (r) return 1 ; + register int r = skagetln_nofill(b, sa, sep) ; + if (r) return r ; r = buffer_fill(b) ; if (r < 0) return r ; if (!r) return (sa->s && (sa->len > start)) ? (errno = EPIPE, -1) : 0 ; diff --git a/src/libstddjb/skagetln_nofill.c b/src/libstddjb/skagetln_nofill.c new file mode 100644 index 0000000..7e25760 --- /dev/null +++ b/src/libstddjb/skagetln_nofill.c @@ -0,0 +1,19 @@ +/* ISC license. */ + +#include +#include +#include +#include + +int skagetln_nofill (buffer *b, stralloc *sa, char sep) +{ + siovec_t v[2] ; + unsigned int pos ; + int r ; + buffer_rpeek(b, v) ; + pos = siovec_bytechr(v, 2, sep) ; + r = pos < buffer_len(b) ; pos += r ; + if (!stralloc_readyplus(sa, pos)) return -1 ; + buffer_getnofill(b, sa->s + sa->len, pos) ; sa->len += pos ; + return r ; +} -- cgit v1.3.1