compat: Add simplified merge sort implementation from glibc
[gitweb.git] / builtin-config.c
index d10b03f50cbcecd10b3a82a3fea53293c3e50806..e4a12e316648e6b0ab1ee0b424773f3c672c751e 100644 (file)
@@ -210,11 +210,17 @@ static int get_color(int argc, const char **argv)
 
 static int stdout_is_tty;
 static int get_colorbool_found;
+static int get_diff_color_found;
 static int git_get_colorbool_config(const char *var, const char *value)
 {
-       if (!strcmp(var, get_color_slot))
+       if (!strcmp(var, get_color_slot)) {
                get_colorbool_found =
                        git_config_colorbool(var, value, stdout_is_tty);
+       }
+       if (!strcmp(var, "diff.color")) {
+               get_diff_color_found =
+                       git_config_colorbool(var, value, stdout_is_tty);
+       }
        return 0;
 }
 
@@ -233,10 +239,18 @@ static int get_colorbool(int argc, const char **argv)
                stdout_is_tty = isatty(1);
        else
                usage(git_config_set_usage);
-       get_colorbool_found = 0;
+       get_colorbool_found = -1;
+       get_diff_color_found = -1;
        get_color_slot = argv[0];
        git_config(git_get_colorbool_config);
 
+       if (get_colorbool_found < 0) {
+               if (!strcmp(get_color_slot, "color.diff"))
+                       get_colorbool_found = get_diff_color_found;
+               if (get_colorbool_found < 0)
+                       get_colorbool_found = 0;
+       }
+
        if (argc == 1) {
                return get_colorbool_found ? 0 : 1;
        } else {