builtin/config: refactor functions to have common exit paths
Refactor functions to have a single exit path. This will make it easier in subsequent commits to add common cleanup code. Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Patrick Steinhardt committed
May 15, 2024 at 08:42 UTC
999425cb12face7e8e67c87d255003d40a3d3cf8
1 file changed
+38
-26
builtin/config.c
+38
-26
@@ -798,6 +798,7 @@ static int cmd_config_get(int argc, const char **argv, const char *prefix)
798
OPT_STRING(0, "default", &default_value, N_("value"), N_("use default value when missing entry")),
799
OPT_END(),
800
};
801
+ int ret;
802
803
argc = parse_options(argc, argv, prefix, opts, builtin_config_get_usage,
804
PARSE_OPT_STOP_AT_NON_OPTION);
@@ -816,8 +817,11 @@ static int cmd_config_get(int argc, const char **argv, const char *prefix)
817
setup_auto_pager("config", 1);
818
819
if (url)
819
- return get_urlmatch(argv[0], url);
820
- return get_value(argv[0], value_pattern, flags);
820
+ ret = get_urlmatch(argv[0], url);
821
+ else
822
+ ret = get_value(argv[0], value_pattern, flags);
823
+
824
+ return ret;
825
}
826
827
static int cmd_config_set(int argc, const char **argv, const char *prefix)
@@ -888,6 +892,7 @@ static int cmd_config_unset(int argc, const char **argv, const char *prefix)
892
OPT_BIT(0, "fixed-value", &flags, N_("use string equality when comparing values to value pattern"), CONFIG_FLAGS_FIXED_VALUE),
893
OPT_END(),
894
};
895
+ int ret;
896
897
argc = parse_options(argc, argv, prefix, opts, builtin_config_unset_usage,
898
PARSE_OPT_STOP_AT_NON_OPTION);
@@ -900,12 +905,14 @@ static int cmd_config_unset(int argc, const char **argv, const char *prefix)
905
check_write();
906
907
if ((flags & CONFIG_FLAGS_MULTI_REPLACE) || value_pattern)
903
- return git_config_set_multivar_in_file_gently(given_config_source.file,
904
- argv[0], NULL, value_pattern,
905
- NULL, flags);
908
+ ret = git_config_set_multivar_in_file_gently(given_config_source.file,
909
+ argv[0], NULL, value_pattern,
910
+ NULL, flags);
911
else
907
- return git_config_set_in_file_gently(given_config_source.file, argv[0],
908
- NULL, NULL);
912
+ ret = git_config_set_in_file_gently(given_config_source.file, argv[0],
913
+ NULL, NULL);
914
+
915
+ return ret;
916
}
917
918
static int cmd_config_rename_section(int argc, const char **argv, const char *prefix)
@@ -926,11 +933,13 @@ static int cmd_config_rename_section(int argc, const char **argv, const char *pr
933
ret = git_config_rename_section_in_file(given_config_source.file,
934
argv[0], argv[1]);
935
if (ret < 0)
929
- return ret;
936
+ goto out;
937
else if (!ret)
938
die(_("no such section: %s"), argv[0]);
939
+ ret = 0;
940
933
- return 0;
941
+out:
942
+ return ret;
943
}
944
945
static int cmd_config_remove_section(int argc, const char **argv, const char *prefix)
@@ -951,11 +960,13 @@ static int cmd_config_remove_section(int argc, const char **argv, const char *pr
960
ret = git_config_rename_section_in_file(given_config_source.file,
961
argv[0], NULL);
962
if (ret < 0)
954
- return ret;
963
+ goto out;
964
else if (!ret)
965
die(_("no such section: %s"), argv[0]);
966
+ ret = 0;
967
958
- return 0;
968
+out:
969
+ return ret;
970
}
971
972
static int show_editor(void)
@@ -1199,41 +1210,41 @@ static int cmd_config_actions(int argc, const char **argv, const char *prefix)
1210
}
1211
else if (actions == ACTION_GET) {
1212
check_argc(argc, 1, 2);
1202
- return get_value(argv[0], argv[1], flags);
1213
+ ret = get_value(argv[0], argv[1], flags);
1214
}
1215
else if (actions == ACTION_GET_ALL) {
1216
do_all = 1;
1217
check_argc(argc, 1, 2);
1207
- return get_value(argv[0], argv[1], flags);
1218
+ ret = get_value(argv[0], argv[1], flags);
1219
}
1220
else if (actions == ACTION_GET_REGEXP) {
1221
show_keys = 1;
1222
use_key_regexp = 1;
1223
do_all = 1;
1224
check_argc(argc, 1, 2);
1214
- return get_value(argv[0], argv[1], flags);
1225
+ ret = get_value(argv[0], argv[1], flags);
1226
}
1227
else if (actions == ACTION_GET_URLMATCH) {
1228
check_argc(argc, 2, 2);
1218
- return get_urlmatch(argv[0], argv[1]);
1229
+ ret = get_urlmatch(argv[0], argv[1]);
1230
}
1231
else if (actions == ACTION_UNSET) {
1232
check_write();
1233
check_argc(argc, 1, 2);
1234
if (argc == 2)
1224
- return git_config_set_multivar_in_file_gently(given_config_source.file,
1225
- argv[0], NULL, argv[1],
1226
- NULL, flags);
1235
+ ret = git_config_set_multivar_in_file_gently(given_config_source.file,
1236
+ argv[0], NULL, argv[1],
1237
+ NULL, flags);
1238
else
1228
- return git_config_set_in_file_gently(given_config_source.file,
1229
- argv[0], NULL, NULL);
1239
+ ret = git_config_set_in_file_gently(given_config_source.file,
1240
+ argv[0], NULL, NULL);
1241
}
1242
else if (actions == ACTION_UNSET_ALL) {
1243
check_write();
1244
check_argc(argc, 1, 2);
1234
- return git_config_set_multivar_in_file_gently(given_config_source.file,
1235
- argv[0], NULL, argv[1],
1236
- NULL, flags | CONFIG_FLAGS_MULTI_REPLACE);
1245
+ ret = git_config_set_multivar_in_file_gently(given_config_source.file,
1246
+ argv[0], NULL, argv[1],
1247
+ NULL, flags | CONFIG_FLAGS_MULTI_REPLACE);
1248
}
1249
else if (actions == ACTION_RENAME_SECTION) {
1250
check_write();
@@ -1241,7 +1252,7 @@ static int cmd_config_actions(int argc, const char **argv, const char *prefix)
1252
ret = git_config_rename_section_in_file(given_config_source.file,
1253
argv[0], argv[1]);
1254
if (ret < 0)
1244
- return ret;
1255
+ goto out;
1256
else if (!ret)
1257
die(_("no such section: %s"), argv[0]);
1258
else
@@ -1253,7 +1264,7 @@ static int cmd_config_actions(int argc, const char **argv, const char *prefix)
1264
ret = git_config_rename_section_in_file(given_config_source.file,
1265
argv[0], NULL);
1266
if (ret < 0)
1256
- return ret;
1267
+ goto out;
1268
else if (!ret)
1269
die(_("no such section: %s"), argv[0]);
1270
else
@@ -1267,9 +1278,10 @@ static int cmd_config_actions(int argc, const char **argv, const char *prefix)
1278
check_argc(argc, 1, 2);
1279
if (argc == 2)
1280
color_stdout_is_tty = git_config_bool("command line", argv[1]);
1270
- return get_colorbool(argv[0], argc == 2);
1281
+ ret = get_colorbool(argv[0], argc == 2);
1282
}
1283
1284
+out:
1285
free(comment);
1286
free(value);
1287
return ret;