|
|
@ -13,15 +13,17 @@ ssize_t getdelim(char **restrict s, size_t *restrict n, int delim, FILE *restric |
|
|
size_t i=0; |
|
|
size_t i=0; |
|
|
int c; |
|
|
int c; |
|
|
|
|
|
|
|
|
|
|
|
FLOCK(f); |
|
|
|
|
|
|
|
|
if (!n || !s) { |
|
|
if (!n || !s) { |
|
|
|
|
|
f->flags |= F_ERR; |
|
|
|
|
|
FUNLOCK(f); |
|
|
errno = EINVAL; |
|
|
errno = EINVAL; |
|
|
return -1; |
|
|
return -1; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
if (!*s) *n=0; |
|
|
if (!*s) *n=0; |
|
|
|
|
|
|
|
|
FLOCK(f); |
|
|
|
|
|
|
|
|
|
|
|
for (;;) { |
|
|
for (;;) { |
|
|
z = memchr(f->rpos, delim, f->rend - f->rpos); |
|
|
z = memchr(f->rpos, delim, f->rend - f->rpos); |
|
|
k = z ? z - f->rpos + 1 : f->rend - f->rpos; |
|
|
k = z ? z - f->rpos + 1 : f->rend - f->rpos; |
|
|
@ -56,6 +58,7 @@ ssize_t getdelim(char **restrict s, size_t *restrict n, int delim, FILE *restric |
|
|
|
|
|
|
|
|
return i; |
|
|
return i; |
|
|
oom: |
|
|
oom: |
|
|
|
|
|
f->flags |= F_ERR; |
|
|
FUNLOCK(f); |
|
|
FUNLOCK(f); |
|
|
errno = ENOMEM; |
|
|
errno = ENOMEM; |
|
|
return -1; |
|
|
return -1; |
|
|
|