diff options
author | Alex Riesen <raa.lkml@gmail.com> | 2008-10-27 10:22:21 +0100 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2008-10-30 17:00:14 -0700 |
commit | fe2d7776d5191896e361973f478ca078fa95b324 (patch) | |
tree | d7aefac116a2a575831e7515612223a3b20e0bea /path.c | |
parent | 9fa03c177ff826b439537072338af958fe01c257 (diff) | |
download | git-fe2d7776d5191896e361973f478ca078fa95b324.tar.gz git-fe2d7776d5191896e361973f478ca078fa95b324.tar.xz |
Add git_snpath: a .git path formatting routine with output buffer
The function's purpose is to replace git_path where the buffer of
formatted path may not be reused by subsequent calls of the function
or will be copied anyway.
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'path.c')
-rw-r--r-- | path.c | 23 |
1 files changed, 23 insertions, 0 deletions
@@ -47,6 +47,29 @@ 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, ...) +{ + const char *git_dir = get_git_dir(); + va_list args; + size_t len; + + len = strlen(git_dir); + if (n < len + 1) + goto bad; + 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); +bad: + snprintf(buf, n, bad_path); + return buf; +} + char *mkpath(const char *fmt, ...) { va_list args; |