Andrew's git
/
gitweb.git
/ diff
summary
|
log
|
commit
| diff |
tree
commit
grep
author
committer
pickaxe
?
re
setup.c: convert is_git_directory() to use strbuf
author
Nguyễn Thái Ngọc Duy
<pclouds@gmail.com>
Sun, 30 Nov 2014 08:24:40 +0000
(15:24 +0700)
committer
Junio C Hamano
<gitster@pobox.com>
Mon, 1 Dec 2014 19:00:14 +0000
(11:00 -0800)
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
setup.c
patch
|
blob
|
history
raw
|
patch
|
inline
| side by side (parent:
337959b
)
diff --git
a/setup.c
b/setup.c
index 979b13f0c6cd6bc3c265187e8ea79628bfe99f87..afd6742cd789e910761e96b4338baa82aae14e5e 100644
(file)
--- a/
setup.c
+++ b/
setup.c
@@
-238,31
+238,36
@@
void verify_non_filename(const char *prefix, const char *arg)
*/
int is_git_directory(const char *suspect)
{
*/
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))
if (getenv(DB_ENVIRONMENT)) {
if (access(getenv(DB_ENVIRONMENT), X_OK))
-
return 0
;
+
goto done
;
}
else {
}
else {
- str
cpy(path + len
, "/objects");
- if (access(path, X_OK))
-
return 0
;
+ str
buf_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)
}
int is_inside_git_dir(void)