aboutsummaryrefslogtreecommitdiffstats
path: root/builtin
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2022-12-14 15:55:47 +0900
committerJunio C Hamano <gitster@pobox.com>2022-12-14 15:55:47 +0900
commitd818458088af2b3d6b83619668d52c9dad41b2cd (patch)
treeacd17bf681bfa13031d5c044cbdbdf82599564aa /builtin
parentMerge branch 'rs/multi-filter-args' (diff)
parentvar: allow GIT_EDITOR to return null (diff)
downloadgit-d818458088af2b3d6b83619668d52c9dad41b2cd.tar.gz
git-d818458088af2b3d6b83619668d52c9dad41b2cd.zip
Merge branch 'sa/git-var-empty'
"git var UNKNOWN_VARIABLE" and "git var VARIABLE" with the variable given an empty value used to behave identically. Now the latter just gives an empty output, while the former still gives an error message. * sa/git-var-empty: var: allow GIT_EDITOR to return null var: do not print usage() with a correct invocation
Diffstat (limited to 'builtin')
-rw-r--r--builtin/var.c29
1 files changed, 14 insertions, 15 deletions
diff --git a/builtin/var.c b/builtin/var.c
index 491db27429..a1a2522126 100644
--- a/builtin/var.c
+++ b/builtin/var.c
@@ -11,12 +11,7 @@ static const char var_usage[] = "git var (-l | <variable>)";
static const char *editor(int flag)
{
- const char *pgm = git_editor();
-
- if (!pgm && flag & IDENT_STRICT)
- die("Terminal is dumb, but EDITOR unset");
-
- return pgm;
+ return git_editor();
}
static const char *pager(int flag)
@@ -56,18 +51,15 @@ static void list_vars(void)
printf("%s=%s\n", ptr->name, val);
}
-static const char *read_var(const char *var)
+static const struct git_var *get_git_var(const char *var)
{
struct git_var *ptr;
- const char *val;
- val = NULL;
for (ptr = git_vars; ptr->read; ptr++) {
if (strcmp(var, ptr->name) == 0) {
- val = ptr->read(IDENT_STRICT);
- break;
+ return ptr;
}
}
- return val;
+ return NULL;
}
static int show_config(const char *var, const char *value, void *cb)
@@ -81,7 +73,9 @@ static int show_config(const char *var, const char *value, void *cb)
int cmd_var(int argc, const char **argv, const char *prefix)
{
- const char *val = NULL;
+ const struct git_var *git_var;
+ const char *val;
+
if (argc != 2)
usage(var_usage);
@@ -91,10 +85,15 @@ int cmd_var(int argc, const char **argv, const char *prefix)
return 0;
}
git_config(git_default_config, NULL);
- val = read_var(argv[1]);
- if (!val)
+
+ git_var = get_git_var(argv[1]);
+ if (!git_var)
usage(var_usage);
+ val = git_var->read(IDENT_STRICT);
+ if (!val)
+ return 1;
+
printf("%s\n", val);
return 0;