Commit Diff


commit - 15cc6a0a0dfee48d9c101a5e4e589e3cb55ad343
commit + 277ed191b926ae1e6b7ca037f3304903aa162828
blob - fb36ae7b486e18f8304639efc3c0a4df840ce546
blob + 5382a6cf8d17e10cec59c8629b221a1dbf6cf6d2
--- gotsysd/parse.y
+++ gotsysd/parse.y
@@ -612,29 +612,31 @@ gotsysd_parse_config(const char *filename, enum gotsys
 	gotsysd->uid_end = GOTSYSD_UID_DEFAULT_END;
 
 	file = newfile(filename, 0, 0);
-	if (file == NULL)
-		return require_config_file ? -1 : 0;
+	if (file == NULL) {
+		if (require_config_file)
+			return -1;
+	} else {
+		yyparse();
+		errors = file->errors;
+		closefile(file);
 
-	yyparse();
-	errors = file->errors;
-	closefile(file);
-
-	/* Free macros and check which have not been used. */
-	TAILQ_FOREACH_SAFE(sym, &symhead, entry, next) {
-		if ((gotsysd->verbosity > 1) && !sym->used)
-			fprintf(stderr, "warning: macro '%s' not used\n",
-			    sym->nam);
-		if (!sym->persist) {
-			free(sym->nam);
-			free(sym->val);
-			TAILQ_REMOVE(&symhead, sym, entry);
-			free(sym);
+		/* Free macros and check which have not been used. */
+		TAILQ_FOREACH_SAFE(sym, &symhead, entry, next) {
+			if ((gotsysd->verbosity > 1) && !sym->used)
+				fprintf(stderr,
+				    "warning: macro '%s' not used\n", sym->nam);
+			if (!sym->persist) {
+				free(sym->nam);
+				free(sym->val);
+				TAILQ_REMOVE(&symhead, sym, entry);
+				free(sym);
+			}
 		}
+
+		if (errors)
+			return (-1);
 	}
 
-	if (errors)
-		return (-1);
-
 	if (proc_id == GOTSYSD_PROC_AUTH &&
 	    STAILQ_EMPTY(&gotsysd->access_rules)) {
 		char *identifier = strdup("0"); /* root */