Skip to content

Commit 8b908f9

Browse files
pks-tgitster
authored andcommitted
builtin/config: move subcommand options into cmd_config()
Move the subcommand options as well as the `subcommand` variable into `cmd_config()`. This reduces our reliance on global state. Signed-off-by: Patrick Steinhardt <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent 0336d00 commit 8b908f9

File tree

1 file changed

+14
-14
lines changed

1 file changed

+14
-14
lines changed

builtin/config.c

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,6 @@ static char delim = '=';
7575
static char key_delim = ' ';
7676
static char term = '\n';
7777

78-
static parse_opt_subcommand_fn *subcommand;
7978
static int use_global_config, use_system_config, use_local_config;
8079
static int use_worktree_config;
8180
static struct git_config_source given_config_source;
@@ -1058,17 +1057,6 @@ static int cmd_config_edit(int argc, const char **argv, const char *prefix)
10581057
return show_editor();
10591058
}
10601059

1061-
static struct option builtin_subcommand_options[] = {
1062-
OPT_SUBCOMMAND("list", &subcommand, cmd_config_list),
1063-
OPT_SUBCOMMAND("get", &subcommand, cmd_config_get),
1064-
OPT_SUBCOMMAND("set", &subcommand, cmd_config_set),
1065-
OPT_SUBCOMMAND("unset", &subcommand, cmd_config_unset),
1066-
OPT_SUBCOMMAND("rename-section", &subcommand, cmd_config_rename_section),
1067-
OPT_SUBCOMMAND("remove-section", &subcommand, cmd_config_remove_section),
1068-
OPT_SUBCOMMAND("edit", &subcommand, cmd_config_edit),
1069-
OPT_END(),
1070-
};
1071-
10721060
static int cmd_config_actions(int argc, const char **argv, const char *prefix)
10731061
{
10741062
char *value = NULL, *comment = NULL;
@@ -1291,6 +1279,18 @@ static int cmd_config_actions(int argc, const char **argv, const char *prefix)
12911279

12921280
int cmd_config(int argc, const char **argv, const char *prefix)
12931281
{
1282+
parse_opt_subcommand_fn *subcommand = NULL;
1283+
struct option subcommand_opts[] = {
1284+
OPT_SUBCOMMAND("list", &subcommand, cmd_config_list),
1285+
OPT_SUBCOMMAND("get", &subcommand, cmd_config_get),
1286+
OPT_SUBCOMMAND("set", &subcommand, cmd_config_set),
1287+
OPT_SUBCOMMAND("unset", &subcommand, cmd_config_unset),
1288+
OPT_SUBCOMMAND("rename-section", &subcommand, cmd_config_rename_section),
1289+
OPT_SUBCOMMAND("remove-section", &subcommand, cmd_config_remove_section),
1290+
OPT_SUBCOMMAND("edit", &subcommand, cmd_config_edit),
1291+
OPT_END(),
1292+
};
1293+
12941294
given_config_source.file = xstrdup_or_null(getenv(CONFIG_ENVIRONMENT));
12951295

12961296
/*
@@ -1301,10 +1301,10 @@ int cmd_config(int argc, const char **argv, const char *prefix)
13011301
* line in case no subcommand was given, which would otherwise confuse
13021302
* us when parsing the legacy-style modes that don't use subcommands.
13031303
*/
1304-
argc = parse_options(argc, argv, prefix, builtin_subcommand_options, builtin_config_usage,
1304+
argc = parse_options(argc, argv, prefix, subcommand_opts, builtin_config_usage,
13051305
PARSE_OPT_SUBCOMMAND_OPTIONAL|PARSE_OPT_KEEP_ARGV0|PARSE_OPT_KEEP_UNKNOWN_OPT);
13061306
if (subcommand) {
1307-
argc = parse_options(argc, argv, prefix, builtin_subcommand_options, builtin_config_usage,
1307+
argc = parse_options(argc, argv, prefix, subcommand_opts, builtin_config_usage,
13081308
PARSE_OPT_SUBCOMMAND_OPTIONAL|PARSE_OPT_KEEP_UNKNOWN_OPT);
13091309
return subcommand(argc, argv, prefix);
13101310
}

0 commit comments

Comments
 (0)