Merge branch 'fix' into maint
[git.git] / repo-config.c
index 9cf6519..58b6c52 100644 (file)
@@ -14,6 +14,9 @@ static enum { T_RAW, T_INT, T_BOOL } type = T_RAW;
 
 static int show_config(const char* key_, const char* value_)
 {
+       if (value_ == NULL)
+               value_ = "";
+
        if (!strcmp(key_, key) &&
                        (regexp == NULL ||
                         (do_not_match ^
@@ -35,7 +38,7 @@ static int show_config(const char* key_, const char* value_)
                        sprintf(value, "%s", git_config_bool(key_, value_)
                                             ? "true" : "false");
                } else {
-                       value = strdup(value_ ? value_ : "");
+                       value = strdup(value_);
                }
                seen++;
        }
@@ -45,11 +48,13 @@ static int show_config(const char* key_, const char* value_)
 static int get_value(const char* key_, const char* regex_)
 {
        int i;
+       char *tl;
 
-       key = malloc(strlen(key_)+1);
-       for (i = 0; key_[i]; i++)
-               key[i] = tolower(key_[i]);
-       key[i] = 0;
+       key = strdup(key_);
+       for (tl=key+strlen(key)-1; tl >= key && *tl != '.'; --tl)
+               *tl = tolower(*tl);
+       for (tl=key; *tl && *tl != '.'; ++tl)
+               *tl = tolower(*tl);
 
        if (regex_) {
                if (regex_[0] == '!') {