git_config_maybe_bool()
Some configuration variables can take boolean values in addition to enumeration specific to them. Introduce git_config_maybe_bool() that returns 0 or 1 if the given value is boolean, or -1 if not, so that a parser for such a variable can check for boolean first and then parse other kinds of values as a fallback. Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
e923eaeb90
commit
8420ccd8b8
1
cache.h
1
cache.h
@ -924,6 +924,7 @@ extern int git_config_int(const char *, const char *);
|
||||
extern unsigned long git_config_ulong(const char *, const char *);
|
||||
extern int git_config_bool_or_int(const char *, const char *, int *);
|
||||
extern int git_config_bool(const char *, const char *);
|
||||
extern int git_config_maybe_bool(const char *, const char *);
|
||||
extern int git_config_string(const char **, const char *, const char *);
|
||||
extern int git_config_pathname(const char **, const char *, const char *);
|
||||
extern int git_config_set(const char *, const char *);
|
||||
|
21
config.c
21
config.c
@ -322,17 +322,30 @@ unsigned long git_config_ulong(const char *name, const char *value)
|
||||
return ret;
|
||||
}
|
||||
|
||||
int git_config_bool_or_int(const char *name, const char *value, int *is_bool)
|
||||
int git_config_maybe_bool(const char *name, const char *value)
|
||||
{
|
||||
*is_bool = 1;
|
||||
if (!value)
|
||||
return 1;
|
||||
if (!*value)
|
||||
return 0;
|
||||
if (!strcasecmp(value, "true") || !strcasecmp(value, "yes") || !strcasecmp(value, "on"))
|
||||
if (!strcasecmp(value, "true")
|
||||
|| !strcasecmp(value, "yes")
|
||||
|| !strcasecmp(value, "on"))
|
||||
return 1;
|
||||
if (!strcasecmp(value, "false") || !strcasecmp(value, "no") || !strcasecmp(value, "off"))
|
||||
if (!strcasecmp(value, "false")
|
||||
|| !strcasecmp(value, "no")
|
||||
|| !strcasecmp(value, "off"))
|
||||
return 0;
|
||||
return -1;
|
||||
}
|
||||
|
||||
int git_config_bool_or_int(const char *name, const char *value, int *is_bool)
|
||||
{
|
||||
int v = git_config_maybe_bool(name, value);
|
||||
if (0 <= v) {
|
||||
*is_bool = 1;
|
||||
return v;
|
||||
}
|
||||
*is_bool = 0;
|
||||
return git_config_int(name, value);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user