svn commit: r299654 - head/lib/libc/tests/nss

Garrett Cooper ngie at FreeBSD.org
Fri May 13 10:52:04 UTC 2016


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:									\


More information about the svn-src-head mailing list