One small trap to getdelim()/getline() is that the caller needs to free
lineptr, even if it NULL when called and the call failed, ala:
char *buf = NULL;
size_t len = 0;
ssize_t ret;
ret = getline(&buf, &len, fp);
if (ret == -1) {
free(buf);
return or do whatever...
}
Does this make that clear in the manpage?
Philip
Index: stdio/getdelim.3
===================================================================
RCS file: /data/src/openbsd/src/lib/libc/stdio/getdelim.3,v
retrieving revision 1.3
diff -u -p -r1.3 getdelim.3
--- stdio/getdelim.3 7 Oct 2015 16:53:00 -0000 1.3
+++ stdio/getdelim.3 3 Apr 2016 20:59:28 -0000
@@ -81,6 +81,10 @@ It is the responsibility of the caller t
.Xr free 3
.Fa *lineptr
when it is no longer needed.
+Even when it fails,
+.Fn getdelim
+may update
+.Fa *lineptr .
.Pp
The
.Fn getline