Code

Rework cvsexportcommit to handle binary files for all cases.
[git.git] / builtin-repo-config.c
index c4164802081e03c8061f77498e08dd2ca8501af7..f60cee1dc54497d8ba00069a56e14b431f6a0852 100644 (file)
@@ -72,19 +72,19 @@ static int get_value(const char* key_, const char* regex_)
                const char *home = getenv("HOME");
                local = getenv("GIT_CONFIG_LOCAL");
                if (!local)
-                       local = repo_config = strdup(git_path("config"));
+                       local = repo_config = xstrdup(git_path("config"));
                if (home)
-                       global = strdup(mkpath("%s/.gitconfig", home));
+                       global = xstrdup(mkpath("%s/.gitconfig", home));
        }
 
-       key = strdup(key_);
+       key = xstrdup(key_);
        for (tl=key+strlen(key)-1; tl >= key && *tl != '.'; --tl)
                *tl = tolower(*tl);
        for (tl=key; *tl && *tl != '.'; ++tl)
                *tl = tolower(*tl);
 
        if (use_key_regexp) {
-               key_regexp = (regex_t*)malloc(sizeof(regex_t));
+               key_regexp = (regex_t*)xmalloc(sizeof(regex_t));
                if (regcomp(key_regexp, key, REG_EXTENDED)) {
                        fprintf(stderr, "Invalid key pattern: %s\n", key_);
                        goto free_strings;
@@ -97,7 +97,7 @@ static int get_value(const char* key_, const char* regex_)
                        regex_++;
                }
 
-               regexp = (regex_t*)malloc(sizeof(regex_t));
+               regexp = (regex_t*)xmalloc(sizeof(regex_t));
                if (regcomp(regexp, regex_, REG_EXTENDED)) {
                        fprintf(stderr, "Invalid pattern: %s\n", regex_);
                        goto free_strings;
@@ -119,13 +119,11 @@ static int get_value(const char* key_, const char* regex_)
        if (do_all)
                ret = !seen;
        else
-               ret =  (seen == 1) ? 0 : 1;
+               ret = (seen == 1) ? 0 : seen > 1 ? 2 : 1;
 
 free_strings:
-       if (repo_config)
-               free(repo_config);
-       if (global)
-               free(global);
+       free(repo_config);
+       free(global);
        return ret;
 }