Merge branch 'rj/path-cleanup'

* 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
This commit is contained in:
Junio C Hamano 2012-09-14 11:53:53 -07:00
commit 8c11b25de4
7 changed files with 24 additions and 30 deletions

View File

@ -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) 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; struct stat st;
int fd; int fd;

View 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) 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", const char *apply_argv[] = { "apply", "--recount", "--cached",
NULL, NULL }; NULL, NULL };
struct child_process child; 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); die (_("Could not apply '%s'"), file);
unlink(file); unlink(file);
free(file);
return 0; return 0;
} }

View File

@ -197,7 +197,7 @@ static int delete_branches(int argc, const char **argv, int force, int kinds,
free(name); free(name);
name = xstrdup(mkpath(fmt, bname.buf)); name = mkpathdup(fmt, bname.buf);
if (read_ref(name, sha1)) { if (read_ref(name, sha1)) {
error(remote_branch error(remote_branch
? _("remote branch '%s' not found.") ? _("remote branch '%s' not found.")

View 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 */ /* Beware: real_path() and mkpath() return static buffer */
ref_git = xstrdup(real_path(item->string)); ref_git = xstrdup(real_path(item->string));
if (is_directory(mkpath("%s/.git/objects", ref_git))) { 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); free(ref_git);
ref_git = ref_git_git; ref_git = ref_git_git;
} else if (!is_directory(mkpath("%s/objects", ref_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); git_dir = xstrdup(dir);
else { else {
work_tree = dir; work_tree = dir;
git_dir = xstrdup(mkpath("%s/.git", dir)); git_dir = mkpathdup("%s/.git", dir);
} }
if (!option_bare) { if (!option_bare) {

View File

@ -169,7 +169,7 @@ int cmd_prune(int argc, const char **argv, const char *prefix)
prune_packed_objects(show_only); prune_packed_objects(show_only);
remove_temporary_files(get_object_directory()); 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); remove_temporary_files(s);
free(s); free(s);
return 0; return 0;

View File

@ -844,14 +844,14 @@ static int merge_3way(struct merge_options *o,
if (strcmp(a->path, b->path) || if (strcmp(a->path, b->path) ||
(o->ancestor != NULL && strcmp(a->path, one->path) != 0)) { (o->ancestor != NULL && strcmp(a->path, one->path) != 0)) {
base_name = o->ancestor == NULL ? NULL : base_name = o->ancestor == NULL ? NULL :
xstrdup(mkpath("%s:%s", o->ancestor, one->path)); mkpathdup("%s:%s", o->ancestor, one->path);
name1 = xstrdup(mkpath("%s:%s", branch1, a->path)); name1 = mkpathdup("%s:%s", branch1, a->path);
name2 = xstrdup(mkpath("%s:%s", branch2, b->path)); name2 = mkpathdup("%s:%s", branch2, b->path);
} else { } else {
base_name = o->ancestor == NULL ? NULL : base_name = o->ancestor == NULL ? NULL :
xstrdup(mkpath("%s", o->ancestor)); mkpathdup("%s", o->ancestor);
name1 = xstrdup(mkpath("%s", branch1)); name1 = mkpathdup("%s", branch1);
name2 = xstrdup(mkpath("%s", branch2)); name2 = mkpathdup("%s", branch2);
} }
read_mmblob(&orig, one->sha1); 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, merge_status = ll_merge(result_buf, a->path, &orig, base_name,
&src1, name1, &src2, name2, &ll_opts); &src1, name1, &src2, name2, &ll_opts);
free(base_name);
free(name1); free(name1);
free(name2); free(name2);
free(orig.ptr); free(orig.ptr);

28
path.c
View File

@ -48,7 +48,7 @@ char *mksnpath(char *buf, size_t n, const char *fmt, ...)
return cleanup_path(buf); 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(); const char *git_dir = get_git_dir();
size_t len; size_t len;
@ -70,21 +70,22 @@ bad:
char *git_snpath(char *buf, size_t n, const char *fmt, ...) char *git_snpath(char *buf, size_t n, const char *fmt, ...)
{ {
char *ret;
va_list args; va_list args;
va_start(args, fmt); va_start(args, fmt);
(void)git_vsnpath(buf, n, fmt, args); ret = vsnpath(buf, n, fmt, args);
va_end(args); va_end(args);
return buf; return ret;
} }
char *git_pathdup(const char *fmt, ...) char *git_pathdup(const char *fmt, ...)
{ {
char path[PATH_MAX]; char path[PATH_MAX], *ret;
va_list args; va_list args;
va_start(args, fmt); va_start(args, fmt);
(void)git_vsnpath(path, sizeof(path), fmt, args); ret = vsnpath(path, sizeof(path), fmt, args);
va_end(args); va_end(args);
return xstrdup(path); return xstrdup(ret);
} }
char *mkpathdup(const char *fmt, ...) char *mkpathdup(const char *fmt, ...)
@ -118,23 +119,14 @@ char *mkpath(const char *fmt, ...)
char *git_path(const char *fmt, ...) char *git_path(const char *fmt, ...)
{ {
const char *git_dir = get_git_dir();
char *pathname = get_pathname(); char *pathname = get_pathname();
va_list args; 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); va_start(args, fmt);
len += vsnprintf(pathname + len, PATH_MAX - len, fmt, args); ret = vsnpath(pathname, PATH_MAX, fmt, args);
va_end(args); va_end(args);
if (len >= PATH_MAX) return ret;
return bad_path;
return cleanup_path(pathname);
} }
void home_config_paths(char **global, char **xdg, char *file) void home_config_paths(char **global, char **xdg, char *file)