mirror of
https://github.com/git/git.git
synced 2025-12-12 20:36:24 +01:00
config: really treat missing optional path as not configured
These callers expect that git_config_pathname() that returns 0 is a signal that the variable they passed has a string they need to act on. But with the introduction of ":(optional)path" earlier, that is no longer the case. If the path specified by the configuration variable is missing, their variable will get a NULL in it, and they need to act on it (often, just refraining from copying it elsewhere). Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
@@ -739,6 +739,7 @@ static int git_blame_config(const char *var, const char *value,
|
||||
ret = git_config_pathname(&str, var, value);
|
||||
if (ret)
|
||||
return ret;
|
||||
if (str)
|
||||
string_list_insert(&ignore_revs_file_list, str);
|
||||
free(str);
|
||||
return 0;
|
||||
|
||||
@@ -177,6 +177,7 @@ static int receive_pack_config(const char *var, const char *value,
|
||||
|
||||
if (git_config_pathname(&path, var, value))
|
||||
return -1;
|
||||
if (path)
|
||||
strbuf_addf(&fsck_msg_types, "%cskiplist=%s",
|
||||
fsck_msg_types.len ? ',' : '=', path);
|
||||
free(path);
|
||||
|
||||
@@ -1872,6 +1872,7 @@ int fetch_pack_fsck_config(const char *var, const char *value,
|
||||
|
||||
if (git_config_pathname(&path, var, value))
|
||||
return -1;
|
||||
if (path)
|
||||
strbuf_addf(msg_types, "%cskiplist=%s",
|
||||
msg_types->len ? ',' : '=', path);
|
||||
free(path);
|
||||
|
||||
4
fsck.c
4
fsck.c
@@ -1351,14 +1351,16 @@ int git_fsck_config(const char *var, const char *value,
|
||||
|
||||
if (strcmp(var, "fsck.skiplist") == 0) {
|
||||
char *path;
|
||||
struct strbuf sb = STRBUF_INIT;
|
||||
|
||||
if (git_config_pathname(&path, var, value))
|
||||
return -1;
|
||||
if (path) {
|
||||
struct strbuf sb = STRBUF_INIT;
|
||||
strbuf_addf(&sb, "skiplist=%s", path);
|
||||
free(path);
|
||||
fsck_set_msg_types(options, sb.buf);
|
||||
strbuf_release(&sb);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -794,8 +794,16 @@ static int git_gpg_config(const char *var, const char *value,
|
||||
fmtname = "ssh";
|
||||
|
||||
if (fmtname) {
|
||||
char *program;
|
||||
int status;
|
||||
|
||||
fmt = get_format_by_name(fmtname);
|
||||
return git_config_pathname((char **) &fmt->program, var, value);
|
||||
status = git_config_pathname(&program, var, value);
|
||||
if (status)
|
||||
return status;
|
||||
if (program)
|
||||
fmt->program = program;
|
||||
return status;
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
||||
Reference in New Issue
Block a user