Skip to content

Commit

Permalink
find_containing_dir(): use strbuf in implementation of this function
Browse files Browse the repository at this point in the history
Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
Michael Haggerty authored and Junio C Hamano committed May 3, 2012
1 parent 144e709 commit 5fa0441
Showing 1 changed file with 10 additions and 9 deletions.
19 changes: 10 additions & 9 deletions refs.c
Original file line number Diff line number Diff line change
Expand Up @@ -309,20 +309,21 @@ static struct ref_entry *search_for_subdir(struct ref_dir *dir,
static struct ref_dir *find_containing_dir(struct ref_dir *dir,
const char *refname, int mkdir)
{
char *refname_copy = xstrdup(refname);
char *slash;
struct ref_entry *entry;
for (slash = strchr(refname_copy, '/'); slash; slash = strchr(slash + 1, '/')) {
char tmp = slash[1];
slash[1] = '\0';
entry = search_for_subdir(dir, refname_copy, mkdir);
slash[1] = tmp;
struct strbuf dirname;
const char *slash;
strbuf_init(&dirname, PATH_MAX);
for (slash = strchr(refname, '/'); slash; slash = strchr(slash + 1, '/')) {
struct ref_entry *entry;
strbuf_add(&dirname,
refname + dirname.len,
(slash + 1) - (refname + dirname.len));
entry = search_for_subdir(dir, dirname.buf, mkdir);
if (!entry)
break;
dir = &entry->u.subdir;
}

free(refname_copy);
strbuf_release(&dirname);
return dir;
}

Expand Down

0 comments on commit 5fa0441

Please sign in to comment.