Re: [PATCH 1/2] config api: Add git_config_magic_int()
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Feb 12, 2008, 21:41 UTC
- Message-ID
- <7vir0t3l9s.fsf@gitster.siamese.dyndns.org>
- In-Reply-To
- <47B15701.8040803@op5.se>
Andreas Ericsson <ae@op5.se> writes:
Show 8 quoted lines
> +int git_config_magic_int(const char *name, const char *value,
> + const char *magic_value, int magic_setting)
> +{
> + if (value && !strcasecmp(value, magic_value))
> + return magic_setting;
> +
> + return git_config_int(name, value);
> +}I do not think this has much to do with any "magic".
An instruction "use 0 threads" when taken literally would mean "do not use any CPU" which would not make much sense. In that sense, giving a magic meaning of "guess an appropriate value" to 0 may be a good idea. A valid alternative would be to make 0 mean the same thing as 1, but that is much more boring ;-)
But if you did so, that means "var = 0" invokes the same magic as "var = auto". The magic lives in "0", and not in "auto".
I think the direction your patch leads us is good, but I think it should allow an array of symbolic ways to spell values to be useful, that is:
struct config_symbolic_int {
const char *name;
int value;
};
int git_config_symbolic_int(const char *var, const char *value,
struct config_symbolic_int *);That way, you can have
{ { "high", 9 }, { "default", 0 }, { "low", 1 } };and say things like "zlevel = high|default|low".