Subject: Re: [PATCH v2] config: Use parseopt.

From: Junio C Hamano <[email-masked]>
Date: Sun, 15 Feb 2009 11:36:49 -0800

Johannes Schindelin <[email-masked]> writes:

> On Sat, 14 Feb 2009, Felipe Contreras wrote:
>> On Sat, Feb 14, 2009 at 9:59 PM, Johannes Schindelin
>> <[email-masked]> wrote:
>> > Or maybe even better: set a variable "ret" and at the end of 
>> > cmd_config(), "return !!ret;"?
>> 
>> Huh? So git commands don't return negative error values?
>
> AFAICT an exit status is supposed to be between 0 and 127.

Are you two talking about the return value from cmd_config()?

git.c::run_builtin() already knows what to do with status codes from the
builtins to protect you from (rare) shells that do not cope with a
negative return that come from the common pattern of doing:

	return error("it is wrong in this way")

So "negative" is not really a problem.  See 2488df8 (builtin run_command:
do not exit with -1., 2007-11-13).

But if the old code was doing:

	ret = git_config_set_multivar(...);
        if (ret)
		return ret;

and if you are changing it to:

	ret = git_config_set_multivar(...);
        if (ret)
		return !!ret;

you are changing an externally observable behaviour.