checkout: fix bug with ambiguous refs
[gitweb.git] / config.c
index 4b0a82040e7982ab936ed52b2bb3405bc85b80f8..9918b9351d8b8b9b33fea479bd4f4997a5d6528a 100644 (file)
--- a/config.c
+++ b/config.c
@@ -410,7 +410,7 @@ unsigned long git_config_ulong(const char *name, const char *value)
        return ret;
 }
 
-int git_config_maybe_bool(const char *name, const char *value)
+static int git_config_maybe_bool_text(const char *name, const char *value)
 {
        if (!value)
                return 1;
@@ -427,9 +427,21 @@ int git_config_maybe_bool(const char *name, const char *value)
        return -1;
 }
 
+int git_config_maybe_bool(const char *name, const char *value)
+{
+       int v = git_config_maybe_bool_text(name, value);
+       if (0 <= v)
+               return v;
+       if (!strcmp(value, "0"))
+               return 0;
+       if (!strcmp(value, "1"))
+               return 1;
+       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);
+       int v = git_config_maybe_bool_text(name, value);
        if (0 <= v) {
                *is_bool = 1;
                return v;