|
|
|
@ -47,10 +47,9 @@ char *mksnpath(char *buf, size_t n, const char *fmt, ...)
@@ -47,10 +47,9 @@ char *mksnpath(char *buf, size_t n, const char *fmt, ...)
|
|
|
|
|
return cleanup_path(buf); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
char *git_snpath(char *buf, size_t n, const char *fmt, ...) |
|
|
|
|
static char *git_vsnpath(char *buf, size_t n, const char *fmt, va_list args) |
|
|
|
|
{ |
|
|
|
|
const char *git_dir = get_git_dir(); |
|
|
|
|
va_list args; |
|
|
|
|
size_t len; |
|
|
|
|
|
|
|
|
|
len = strlen(git_dir); |
|
|
|
@ -59,9 +58,7 @@ char *git_snpath(char *buf, size_t n, const char *fmt, ...)
@@ -59,9 +58,7 @@ char *git_snpath(char *buf, size_t n, const char *fmt, ...)
|
|
|
|
|
memcpy(buf, git_dir, len); |
|
|
|
|
if (len && !is_dir_sep(git_dir[len-1])) |
|
|
|
|
buf[len++] = '/'; |
|
|
|
|
va_start(args, fmt); |
|
|
|
|
len += vsnprintf(buf + len, n - len, fmt, args); |
|
|
|
|
va_end(args); |
|
|
|
|
if (len >= n) |
|
|
|
|
goto bad; |
|
|
|
|
return cleanup_path(buf); |
|
|
|
@ -70,6 +67,25 @@ bad:
@@ -70,6 +67,25 @@ bad:
|
|
|
|
|
return buf; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
char *git_snpath(char *buf, size_t n, const char *fmt, ...) |
|
|
|
|
{ |
|
|
|
|
va_list args; |
|
|
|
|
va_start(args, fmt); |
|
|
|
|
(void)git_vsnpath(buf, n, fmt, args); |
|
|
|
|
va_end(args); |
|
|
|
|
return buf; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
char *git_pathdup(const char *fmt, ...) |
|
|
|
|
{ |
|
|
|
|
char path[PATH_MAX]; |
|
|
|
|
va_list args; |
|
|
|
|
va_start(args, fmt); |
|
|
|
|
(void)git_vsnpath(path, sizeof(path), fmt, args); |
|
|
|
|
va_end(args); |
|
|
|
|
return xstrdup(path); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
char *mkpath(const char *fmt, ...) |
|
|
|
|
{ |
|
|
|
|
va_list args; |
|
|
|
|