--- lib/lwres/lwconfig.c.old	2007-06-20 01:47:22.000000000 +0200
+++ lib/lwres/lwconfig.c	2008-06-15 02:57:02.000000000 +0200
@@ -175,13 +175,8 @@
 	REQUIRE(buffer != NULL);
 	REQUIRE(size > 0U);
 
-	*p = '\0';
-
 	ch = eatwhite(fp);
 
-	if (ch == EOF)
-		return (EOF);
-
 	do {
 		*p = '\0';
 
@@ -592,23 +587,37 @@
 		if (strlen(word) == 0U)
 			rval = LWRES_R_SUCCESS;
 		else if (strcmp(word, "nameserver") == 0)
-			rval = lwres_conf_parsenameserver(ctx, fp);
+			rval = (stopchar != '\n')? /* fail instantly if EOL is reached */
+				lwres_conf_parsenameserver(ctx, fp)
+				: LWRES_R_FAILURE;
 		else if (strcmp(word, "lwserver") == 0)
-			rval = lwres_conf_parselwserver(ctx, fp);
+			rval = (stopchar != '\n')?
+				lwres_conf_parselwserver(ctx, fp)
+				: LWRES_R_FAILURE;
 		else if (strcmp(word, "domain") == 0)
-			rval = lwres_conf_parsedomain(ctx, fp);
+			rval = (stopchar != '\n')?
+				lwres_conf_parsedomain(ctx, fp)
+				: LWRES_R_FAILURE;
 		else if (strcmp(word, "search") == 0)
-			rval = lwres_conf_parsesearch(ctx, fp);
+			rval = (stopchar != '\n')?
+				lwres_conf_parsesearch(ctx, fp)
+				: LWRES_R_FAILURE;
 		else if (strcmp(word, "sortlist") == 0)
-			rval = lwres_conf_parsesortlist(ctx, fp);
+			rval = (stopchar != '\n')?
+				lwres_conf_parsesortlist(ctx, fp)
+				: LWRES_R_FAILURE;
 		else if (strcmp(word, "options") == 0)
-			rval = lwres_conf_parseoption(ctx, fp);
+			rval = (stopchar != '\n')?
+				lwres_conf_parseoption(ctx, fp)
+				: LWRES_R_FAILURE;
 		else {
 			/* unrecognised word. Ignore entire line */
 			rval = LWRES_R_SUCCESS;
-			stopchar = eatline(fp);
-			if (stopchar == EOF) {
-				break;
+			if (stopchar != '\n') { /* do not eat the next line */
+				stopchar = eatline(fp);
+				if (stopchar == EOF) {
+					break;
+				}
 			}
 		}
 		if (ret == LWRES_R_SUCCESS && rval != LWRES_R_SUCCESS)
