svn commit: r270031 - stable/10/lib/libutil
Pedro F. Giffuni
pfg at FreeBSD.org
Sat Aug 16 00:54:56 UTC 2014
Author: pfg
Date: Sat Aug 16 00:54:56 2014
New Revision: 270031
URL: http://svnweb.freebsd.org/changeset/base/270031
Log:
MFC r269015:
fparseln(3): Update from NetBSD sources.
-fix a condition so that fparseln() doesn't report spurious empty lines
eg after 2 comment lines, or on EOF after a single comment line
-no escape character means no escaped characters
modify the previous fix so that no pointless realloc()s are done in
the case of multiple empty continuation lines, and comment the code
to make the logics obvious.
fparseln is now part of libc in NetBSD so this changes the previous
revision numbering.
Obtained from: NetBSD (CVS Rev. 1.6-1.7)
Modified:
stable/10/lib/libutil/fparseln.c
Directory Properties:
stable/10/ (props changed)
Modified: stable/10/lib/libutil/fparseln.c
==============================================================================
--- stable/10/lib/libutil/fparseln.c Sat Aug 16 00:52:13 2014 (r270030)
+++ stable/10/lib/libutil/fparseln.c Sat Aug 16 00:54:56 2014 (r270031)
@@ -1,4 +1,4 @@
-/* $NetBSD: fparseln.c,v 1.9 1999/09/20 04:48:06 lukem Exp $ */
+/* $NetBSD: fparseln.c,v 1.7 2007/03/08 19:57:53 drochner Exp $ */
/*
* Copyright (c) 1997 Christos Zoulas. All rights reserved.
@@ -59,7 +59,7 @@ isescaped(const char *sp, const char *p,
/* No escape character */
if (esc == '\0')
- return 1;
+ return 0;
/* Count the number of escape characters that precede ours */
for (ne = 0, cp = p; --cp >= sp && *cp == esc; ne++)
@@ -135,13 +135,19 @@ fparseln(FILE *fp, size_t *size, size_t
cp = &ptr[s - 1];
if (*cp == con && !isescaped(ptr, cp, esc)) {
- s--; /* forget escape */
+ s--; /* forget continuation char */
cnt = 1;
}
}
- if (s == 0 && buf != NULL)
- continue;
+ if (s == 0) {
+ /*
+ * nothing to add, skip realloc except in case
+ * we need a minimal buf to return an empty line
+ */
+ if (cnt || buf != NULL)
+ continue;
+ }
if ((cp = realloc(buf, len + s + 1)) == NULL) {
free(buf);
More information about the svn-src-stable
mailing list