Merge branch 'rj/path-cleanup'
authorJunio C Hamano <gitster@pobox.com>
Fri, 14 Sep 2012 18:53:53 +0000 (11:53 -0700)
committerJunio C Hamano <gitster@pobox.com>
Fri, 14 Sep 2012 18:53:53 +0000 (11:53 -0700)
* rj/path-cleanup:
Call mkpathdup() rather than xstrdup(mkpath(...))
Call git_pathdup() rather than xstrdup(git_path("..."))
path.c: Use vsnpath() in the implementation of git_path()
path.c: Don't discard the return value of vsnpath()
path.c: Remove the 'git_' prefix from a file scope function

bisect.c
builtin/add.c
builtin/branch.c
builtin/clone.c
builtin/prune.c
merge-recursive.c
path.c
index 48acf73391271c1d9061b178a53653357f07f391..1aad49b1a642a308f449001960958ccab79347d1 100644 (file)
--- a/bisect.c
+++ b/bisect.c
@@ -833,7 +833,7 @@ static int check_ancestors(const char *prefix)
  */
 static void check_good_are_ancestors_of_bad(const char *prefix, int no_checkout)
 {
-       char *filename = xstrdup(git_path("BISECT_ANCESTORS_OK"));
+       char *filename = git_pathdup("BISECT_ANCESTORS_OK");
        struct stat st;
        int fd;
 
index 2816789b9d8e0976e24e110ce21de12a4eb9bafe..e664100c7122d6c4116763716c2260756feffac2 100644 (file)
@@ -260,7 +260,7 @@ int interactive_add(int argc, const char **argv, const char *prefix, int patch)
 
 static int edit_patch(int argc, const char **argv, const char *prefix)
 {
-       char *file = xstrdup(git_path("ADD_EDIT.patch"));
+       char *file = git_pathdup("ADD_EDIT.patch");
        const char *apply_argv[] = { "apply", "--recount", "--cached",
                NULL, NULL };
        struct child_process child;
@@ -303,6 +303,7 @@ static int edit_patch(int argc, const char **argv, const char *prefix)
                die (_("Could not apply '%s'"), file);
 
        unlink(file);
+       free(file);
        return 0;
 }
 
index 5cb6d78f2c472cc6e579bf6618898f0e44e5ef03..ffd26849c7ad20ff470323621486ae8a2aeb2501 100644 (file)
@@ -197,7 +197,7 @@ static int delete_branches(int argc, const char **argv, int force, int kinds,
 
                free(name);
 
-               name = xstrdup(mkpath(fmt, bname.buf));
+               name = mkpathdup(fmt, bname.buf);
                if (read_ref(name, sha1)) {
                        error(remote_branch
                              ? _("remote branch '%s' not found.")
index 5e8f3ba22c3df9ee5ec7b6ae061c97ccc1740fdd..5a9b2bce2495cac1a343b10300804867e0f067e7 100644 (file)
@@ -236,7 +236,7 @@ static int add_one_reference(struct string_list_item *item, void *cb_data)
        /* Beware: real_path() and mkpath() return static buffer */
        ref_git = xstrdup(real_path(item->string));
        if (is_directory(mkpath("%s/.git/objects", ref_git))) {
-               char *ref_git_git = xstrdup(mkpath("%s/.git", ref_git));
+               char *ref_git_git = mkpathdup("%s/.git", ref_git);
                free(ref_git);
                ref_git = ref_git_git;
        } else if (!is_directory(mkpath("%s/objects", ref_git)))
@@ -700,7 +700,7 @@ int cmd_clone(int argc, const char **argv, const char *prefix)
                git_dir = xstrdup(dir);
        else {
                work_tree = dir;
-               git_dir = xstrdup(mkpath("%s/.git", dir));
+               git_dir = mkpathdup("%s/.git", dir);
        }
 
        if (!option_bare) {
index 9a03d24dadaaba8bc1fc0c778dbfe33b1651607e..8cb8b9186a3a268630680e4b224d3767017e1e38 100644 (file)
@@ -169,7 +169,7 @@ int cmd_prune(int argc, const char **argv, const char *prefix)
 
        prune_packed_objects(show_only);
        remove_temporary_files(get_object_directory());
-       s = xstrdup(mkpath("%s/pack", get_object_directory()));
+       s = mkpathdup("%s/pack", get_object_directory());
        remove_temporary_files(s);
        free(s);
        return 0;
index 7866ca1026730e2e0446f711e3c621e44cef9f60..d8820604ca3535ce25796012412fe69f1cbdd37b 100644 (file)
@@ -844,14 +844,14 @@ static int merge_3way(struct merge_options *o,
        if (strcmp(a->path, b->path) ||
            (o->ancestor != NULL && strcmp(a->path, one->path) != 0)) {
                base_name = o->ancestor == NULL ? NULL :
-                       xstrdup(mkpath("%s:%s", o->ancestor, one->path));
-               name1 = xstrdup(mkpath("%s:%s", branch1, a->path));
-               name2 = xstrdup(mkpath("%s:%s", branch2, b->path));
+                       mkpathdup("%s:%s", o->ancestor, one->path);
+               name1 = mkpathdup("%s:%s", branch1, a->path);
+               name2 = mkpathdup("%s:%s", branch2, b->path);
        } else {
                base_name = o->ancestor == NULL ? NULL :
-                       xstrdup(mkpath("%s", o->ancestor));
-               name1 = xstrdup(mkpath("%s", branch1));
-               name2 = xstrdup(mkpath("%s", branch2));
+                       mkpathdup("%s", o->ancestor);
+               name1 = mkpathdup("%s", branch1);
+               name2 = mkpathdup("%s", branch2);
        }
 
        read_mmblob(&orig, one->sha1);
@@ -861,6 +861,7 @@ static int merge_3way(struct merge_options *o,
        merge_status = ll_merge(result_buf, a->path, &orig, base_name,
                                &src1, name1, &src2, name2, &ll_opts);
 
+       free(base_name);
        free(name1);
        free(name2);
        free(orig.ptr);
diff --git a/path.c b/path.c
index 66acd24fa8821861d032fc216f6ea6fdd711a969..cbbdf7d6ba68160a3a9936976e53d773d181ceac 100644 (file)
--- a/path.c
+++ b/path.c
@@ -48,7 +48,7 @@ char *mksnpath(char *buf, size_t n, const char *fmt, ...)
        return cleanup_path(buf);
 }
 
-static char *git_vsnpath(char *buf, size_t n, const char *fmt, va_list args)
+static char *vsnpath(char *buf, size_t n, const char *fmt, va_list args)
 {
        const char *git_dir = get_git_dir();
        size_t len;
@@ -70,21 +70,22 @@ static char *git_vsnpath(char *buf, size_t n, const char *fmt, va_list args)
 
 char *git_snpath(char *buf, size_t n, const char *fmt, ...)
 {
+       char *ret;
        va_list args;
        va_start(args, fmt);
-       (void)git_vsnpath(buf, n, fmt, args);
+       ret = vsnpath(buf, n, fmt, args);
        va_end(args);
-       return buf;
+       return ret;
 }
 
 char *git_pathdup(const char *fmt, ...)
 {
-       char path[PATH_MAX];
+       char path[PATH_MAX], *ret;
        va_list args;
        va_start(args, fmt);
-       (void)git_vsnpath(path, sizeof(path), fmt, args);
+       ret = vsnpath(path, sizeof(path), fmt, args);
        va_end(args);
-       return xstrdup(path);
+       return xstrdup(ret);
 }
 
 char *mkpathdup(const char *fmt, ...)
@@ -118,23 +119,14 @@ char *mkpath(const char *fmt, ...)
 
 char *git_path(const char *fmt, ...)
 {
-       const char *git_dir = get_git_dir();
        char *pathname = get_pathname();
        va_list args;
-       unsigned len;
+       char *ret;
 
-       len = strlen(git_dir);
-       if (len > PATH_MAX-100)
-               return bad_path;
-       memcpy(pathname, git_dir, len);
-       if (len && git_dir[len-1] != '/')
-               pathname[len++] = '/';
        va_start(args, fmt);
-       len += vsnprintf(pathname + len, PATH_MAX - len, fmt, args);
+       ret = vsnpath(pathname, PATH_MAX, fmt, args);
        va_end(args);
-       if (len >= PATH_MAX)
-               return bad_path;
-       return cleanup_path(pathname);
+       return ret;
 }
 
 void home_config_paths(char **global, char **xdg, char *file)