config.c: guard config parser from value=NULL

user.{name,email}, core.{pager,editor,excludesfile,whitespace} and
i18n.{commit,logoutput}encoding all expect string values.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
diff --git a/config.c b/config.c
index 03c94a2..3f4d3b1 100644
--- a/config.c
+++ b/config.c
@@ -408,21 +408,29 @@
 	}
 
 	if (!strcmp(var, "user.name")) {
+		if (!value)
+			return config_error_nonbool(var);
 		strlcpy(git_default_name, value, sizeof(git_default_name));
 		return 0;
 	}
 
 	if (!strcmp(var, "user.email")) {
+		if (!value)
+			return config_error_nonbool(var);
 		strlcpy(git_default_email, value, sizeof(git_default_email));
 		return 0;
 	}
 
 	if (!strcmp(var, "i18n.commitencoding")) {
+		if (!value)
+			return config_error_nonbool(var);
 		git_commit_encoding = xstrdup(value);
 		return 0;
 	}
 
 	if (!strcmp(var, "i18n.logoutputencoding")) {
+		if (!value)
+			return config_error_nonbool(var);
 		git_log_output_encoding = xstrdup(value);
 		return 0;
 	}
@@ -434,23 +442,29 @@
 	}
 
 	if (!strcmp(var, "core.pager")) {
+		if (!value)
+			return config_error_nonbool(var);
 		pager_program = xstrdup(value);
 		return 0;
 	}
 
 	if (!strcmp(var, "core.editor")) {
+		if (!value)
+			return config_error_nonbool(var);
 		editor_program = xstrdup(value);
 		return 0;
 	}
 
 	if (!strcmp(var, "core.excludesfile")) {
 		if (!value)
-			die("core.excludesfile without value");
+			return config_error_nonbool(var);
 		excludes_file = xstrdup(value);
 		return 0;
 	}
 
 	if (!strcmp(var, "core.whitespace")) {
+		if (!value)
+			return config_error_nonbool(var);
 		whitespace_rule_cfg = parse_whitespace_rule(value);
 		return 0;
 	}