Skip to content

Commit

Permalink
setup.c: convert is_git_directory() to use strbuf
Browse files Browse the repository at this point in the history
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
Nguyễn Thái Ngọc Duy authored and Junio C Hamano committed Dec 1, 2014
1 parent 337959b commit 1d186b6
Showing 1 changed file with 21 additions and 16 deletions.
37 changes: 21 additions & 16 deletions setup.c
Original file line number Diff line number Diff line change
Expand Up @@ -238,31 +238,36 @@ void verify_non_filename(const char *prefix, const char *arg)
*/
int is_git_directory(const char *suspect)
{
char path[PATH_MAX];
size_t len = strlen(suspect);
struct strbuf path = STRBUF_INIT;
int ret = 0;
size_t len;

if (PATH_MAX <= len + strlen("/objects"))
die("Too long path: %.*s", 60, suspect);
strcpy(path, suspect);
strbuf_addstr(&path, suspect);
len = path.len;
if (getenv(DB_ENVIRONMENT)) {
if (access(getenv(DB_ENVIRONMENT), X_OK))
return 0;
goto done;
}
else {
strcpy(path + len, "/objects");
if (access(path, X_OK))
return 0;
strbuf_addstr(&path, "/objects");
if (access(path.buf, X_OK))
goto done;
}

strcpy(path + len, "/refs");
if (access(path, X_OK))
return 0;
strbuf_setlen(&path, len);
strbuf_addstr(&path, "/refs");
if (access(path.buf, X_OK))
goto done;

strcpy(path + len, "/HEAD");
if (validate_headref(path))
return 0;
strbuf_setlen(&path, len);
strbuf_addstr(&path, "/HEAD");
if (validate_headref(path.buf))
goto done;

return 1;
ret = 1;
done:
strbuf_release(&path);
return ret;
}

int is_inside_git_dir(void)
Expand Down

0 comments on commit 1d186b6

Please sign in to comment.