git_snpath(): retire and replace with strbuf_git_path()

In the previous patch, git_snpath() is modified to allocate a new
strbuf buffer because vsnpath() needs that. But that makes it
awkward because git_snpath() receives a pre-allocated buffer from
outside and has to copy data back. Rename it to strbuf_git_path()
and make it receive strbuf directly.

Using git_path() in update_refs_for_switch() which used to call
git_snpath() is safe because that function and all of its callers do
not keep any pointer to the round-robin buffer pool allocated by
get_pathname().

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:
Nguyễn Thái Ngọc Duy
2014-11-30 15:24:28 +07:00
committed by Junio C Hamano
parent dcf692625a
commit 1a83c240f2
5 changed files with 55 additions and 26 deletions

11
path.c
View File

@ -70,19 +70,12 @@ static void vsnpath(struct strbuf *buf, const char *fmt, va_list args)
strbuf_cleanup_path(buf);
}
char *git_snpath(char *buf, size_t n, const char *fmt, ...)
void strbuf_git_path(struct strbuf *sb, const char *fmt, ...)
{
struct strbuf sb = STRBUF_INIT;
va_list args;
va_start(args, fmt);
vsnpath(&sb, fmt, args);
vsnpath(sb, fmt, args);
va_end(args);
if (sb.len >= n)
strlcpy(buf, bad_path, n);
else
memcpy(buf, sb.buf, sb.len + 1);
strbuf_release(&sb);
return buf;
}
char *git_pathdup(const char *fmt, ...)