summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/libc/stdio/getdelim.c6
-rw-r--r--lib/libc/stdio/getline.34
2 files changed, 6 insertions, 4 deletions
diff --git a/lib/libc/stdio/getdelim.c b/lib/libc/stdio/getdelim.c
index fb02889..7af154f 100644
--- a/lib/libc/stdio/getdelim.c
+++ b/lib/libc/stdio/getdelim.c
@@ -120,7 +120,6 @@ getdelim(char ** __restrict linep, size_t * __restrict linecapp, int delim,
goto error;
}
- linelen = 0;
if (*linecapp == 0)
*linep = NULL;
@@ -128,9 +127,12 @@ getdelim(char ** __restrict linep, size_t * __restrict linecapp, int delim,
/* If fp is at EOF already, we just need space for the NUL. */
if (__sferror(fp) || expandtofit(linep, 1, linecapp))
goto error;
- goto done;
+ FUNLOCKFILE(fp);
+ (*linep)[0] = '\0';
+ return (-1);
}
+ linelen = 0;
while ((endp = memchr(fp->_p, delim, fp->_r)) == NULL) {
if (sappend(linep, &linelen, linecapp, fp->_p, fp->_r))
goto error;
diff --git a/lib/libc/stdio/getline.3 b/lib/libc/stdio/getline.3
index 096331a..0465f93 100644
--- a/lib/libc/stdio/getline.3
+++ b/lib/libc/stdio/getline.3
@@ -24,7 +24,7 @@
.\"
.\" $FreeBSD$
.\"
-.Dd February 28, 2009
+.Dd March 29, 2009
.Dt GETLINE 3
.Os
.Sh NAME
@@ -79,7 +79,7 @@ and
functions return the number of characters written, excluding the
terminating
.Dv NUL .
-The value \-1 is returned if an error occurs.
+The value \-1 is returned if an error occurs, or if end-of-file is reached.
.Sh EXAMPLES
The following code fragment reads lines from a file and
writes them to standard output.
OpenPOWER on IntegriCloud