Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 13 May 2016 10:52:02 +0000 (UTC)
From:      Garrett Cooper <ngie@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r299654 - head/lib/libc/tests/nss
Message-ID:  <201605131052.u4DAq2Jw009458@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: ngie
Date: Fri May 13 10:52:02 2016
New Revision: 299654
URL: https://svnweb.freebsd.org/changeset/base/299654

Log:
  Read the contents of the snapshot files properly
  
  - Use fgetln instead of fgets; localize complexity related to fgetln(3)
    inside the loop.
  - Skip over blank lines.
  - Skip over lines (properly) that start with a "#"
  
  MFC after: 1 week
  Sponsored by: EMC / Isilon Storage Division

Modified:
  head/lib/libc/tests/nss/testutil.h

Modified: head/lib/libc/tests/nss/testutil.h
==============================================================================
--- head/lib/libc/tests/nss/testutil.h	Fri May 13 10:10:43 2016	(r299653)
+++ head/lib/libc/tests/nss/testutil.h	Fri May 13 10:52:02 2016	(r299654)
@@ -252,9 +252,7 @@ int									\
 __##ent##_snapshot_read(char const *fname, struct ent##_test_data *td,	\
 	int (*read_func)(struct ent *, char *))				\
 {									\
-	char buffer[1024];						\
 	struct ent data;						\
-	char *s;							\
 	FILE *fi;							\
 	size_t len;							\
 	int rv;								\
@@ -267,23 +265,22 @@ __##ent##_snapshot_read(char const *fnam
 		return (-1);						\
 									\
 	rv = 0;								\
-	memset(buffer, 0, sizeof(buffer));				\
 	while (!feof(fi)) {						\
-		s = fgets(buffer, sizeof(buffer), fi);			\
-		if (s != NULL && s[0] != '#') {				\
-			len = strlen(s);				\
-			if (len == 0)					\
-				continue;				\
-			if (buffer[len - 1] == '\n')			\
-				buffer[len -1] = '\0';			\
-									\
-			rv = read_func(&data, s);			\
-			if (rv == 0) {					\
-				__##ent##_test_data_append(td, &data);	\
-				td->free_func(&data);			\
-			} else 						\
-				goto fin;				\
-		}							\
+		char *buf = fgetln(fi, &len);				\
+		if (buf == NULL || len <= 1)				\
+			continue;					\
+		if (buf[len - 1] == '\n')				\
+			buf[len - 1] = '\0';				\
+		else							\
+			buf[len] = '\0';				\
+		if (buf[0] == '#')					\
+			continue;					\
+		rv = read_func(&data, buf);				\
+		if (rv == 0) {						\
+			__##ent##_test_data_append(td, &data);		\
+			td->free_func(&data);				\
+		} else 							\
+			goto fin;					\
 	}								\
 									\
 fin:									\



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201605131052.u4DAq2Jw009458>