setup.c: convert is_git_directory() to use strbuf
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
337959b491
commit
1d186b6f35
37
setup.c
37
setup.c
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user