From: Felipe Contreras Date: Sun, 15 Feb 2009 13:30:12 GMT Subject: Re: [PATCH 7/8] config: Don't return negative exit codes. Message-ID: <20090215133012.GA13801@annwn> In-Reply-To: <94a0d4530902150439peac228ckec79f8c692b84e4e@mail.gmail.com> On Sun, Feb 15, 2009 at 02:39:47PM +0200, Felipe Contreras wrote: > On Sun, Feb 15, 2009 at 2:22 PM, Johannes Schindelin > wrote: > > Hi, > > > > On Sun, 15 Feb 2009, Felipe Contreras wrote: > > > > > >> else if (actions & ACTION_RENAME_SECTION) { > >> - int ret; > >> check_argc(argc, 2, 2); > >> ret = git_config_rename_section(argv[0], argv[1]); > >> - if (ret < 0) > >> - return ret; > >> if (ret == 0) > >> die("No such section!"); > >> } > > > > You need an "if (ret > 0) ret = 0;" to avoid regressions. > > > >> else if (actions & ACTION_REMOVE_SECTION) { > >> - int ret; > >> check_argc(argc, 1, 1); > >> ret = git_config_rename_section(argv[0], NULL); > >> - if (ret < 0) > >> - return ret; > >> if (ret == 0) > >> die("No such section!"); > >> } > > > > Likewise. > > True. Fixed in the attached patch. I'm inlining the patch as Johannes requested: --- builtin-config.c | 31 +++++++++++++++---------------- 1 files changed, 15 insertions(+), 16 deletions(-) diff --git a/builtin-config.c b/builtin-config.c index 5891a4e..0606ada 100644 --- a/builtin-config.c +++ b/builtin-config.c @@ -307,6 +307,7 @@ int cmd_config(int argc, const char **argv, const char *unused_prefix) { int nongit; char* value; + int ret = 0; const char *prefix = setup_git_directory_gently(&nongit); config_exclusive_filename = getenv(CONFIG_ENVIRONMENT); @@ -380,57 +381,55 @@ int cmd_config(int argc, const char **argv, const char *unused_prefix) else if (actions & ACTION_ADD) { check_argc(argc, 2, 2); value = normalize_value(argv[0], argv[1]); - return git_config_set_multivar(argv[0], value, "^$", 0); + ret = git_config_set_multivar(argv[0], value, "^$", 0); } else if (actions & ACTION_REPLACE_ALL) { check_argc(argc, 2, 3); value = normalize_value(argv[0], argv[1]); - return git_config_set_multivar(argv[0], value, argv[2], 1); + ret = git_config_set_multivar(argv[0], value, argv[2], 1); } else if (actions & ACTION_GET) { check_argc(argc, 1, 2); - return get_value(argv[0], argv[1]); + ret = get_value(argv[0], argv[1]); } else if (actions & ACTION_GET_ALL) { do_all = 1; check_argc(argc, 1, 2); - return get_value(argv[0], argv[1]); + ret = get_value(argv[0], argv[1]); } else if (actions & ACTION_GET_REGEXP) { show_keys = 1; use_key_regexp = 1; do_all = 1; check_argc(argc, 1, 2); - return get_value(argv[0], argv[1]); + ret = get_value(argv[0], argv[1]); } else if (actions & ACTION_UNSET) { check_argc(argc, 1, 2); if (argc == 2) - return git_config_set_multivar(argv[0], NULL, argv[1], 0); + ret = git_config_set_multivar(argv[0], NULL, argv[1], 0); else - return git_config_set(argv[0], NULL); + ret = git_config_set(argv[0], NULL); } else if (actions & ACTION_UNSET_ALL) { check_argc(argc, 1, 2); - return git_config_set_multivar(argv[0], NULL, argv[1], 1); + ret = git_config_set_multivar(argv[0], NULL, argv[1], 1); } else if (actions & ACTION_RENAME_SECTION) { - int ret; check_argc(argc, 2, 2); ret = git_config_rename_section(argv[0], argv[1]); - if (ret < 0) - return ret; if (ret == 0) die("No such section!"); + if (ret > 0) + ret = 0; } else if (actions & ACTION_REMOVE_SECTION) { - int ret; check_argc(argc, 1, 1); ret = git_config_rename_section(argv[0], NULL); - if (ret < 0) - return ret; if (ret == 0) die("No such section!"); + if (ret > 0) + ret = 0; } else if (get_color_slot) { get_color(argv[0]); @@ -440,8 +439,8 @@ int cmd_config(int argc, const char **argv, const char *unused_prefix) stdout_is_tty = git_config_bool("command line", argv[0]); else if (argc == 0) stdout_is_tty = isatty(1); - return get_colorbool(argc != 1); + ret = get_colorbool(argc != 1); } - return 0; + return !!ret; } -- 1.6.1.3 -- Felipe Contreras