void trace_printf(const char *fmt, ...)
{
- struct strbuf buf;
+ struct strbuf buf = STRBUF_INIT;
va_list ap;
- int fd, len, need_close = 0;
+ int fd, need_close = 0;
fd = get_trace_fd(&need_close);
if (!fd)
return;
set_try_to_free_routine(NULL); /* is never reset */
- strbuf_init(&buf, 64);
va_start(ap, fmt);
- len = vsnprintf(buf.buf, strbuf_avail(&buf), fmt, ap);
+ strbuf_vaddf(&buf, fmt, ap);
va_end(ap);
- if (len >= strbuf_avail(&buf)) {
- strbuf_grow(&buf, len - strbuf_avail(&buf) + 128);
- va_start(ap, fmt);
- len = vsnprintf(buf.buf, strbuf_avail(&buf), fmt, ap);
- va_end(ap);
- if (len >= strbuf_avail(&buf))
- die("broken vsnprintf");
- }
- strbuf_setlen(&buf, len);
write_or_whine_pipe(fd, buf.buf, buf.len, err_msg);
strbuf_release(&buf);
void trace_argv_printf(const char **argv, const char *fmt, ...)
{
- struct strbuf buf;
+ struct strbuf buf = STRBUF_INIT;
va_list ap;
- int fd, len, need_close = 0;
+ int fd, need_close = 0;
fd = get_trace_fd(&need_close);
if (!fd)
return;
set_try_to_free_routine(NULL); /* is never reset */
- strbuf_init(&buf, 64);
va_start(ap, fmt);
- len = vsnprintf(buf.buf, strbuf_avail(&buf), fmt, ap);
+ strbuf_vaddf(&buf, fmt, ap);
va_end(ap);
- if (len >= strbuf_avail(&buf)) {
- strbuf_grow(&buf, len - strbuf_avail(&buf) + 128);
- va_start(ap, fmt);
- len = vsnprintf(buf.buf, strbuf_avail(&buf), fmt, ap);
- va_end(ap);
- if (len >= strbuf_avail(&buf))
- die("broken vsnprintf");
- }
- strbuf_setlen(&buf, len);
sq_quote_argv(&buf, argv, 0);
strbuf_addch(&buf, '\n');
/* FIXME: move prefix to startup_info struct and get rid of this arg */
void trace_repo_setup(const char *prefix)
{
+ const char *git_work_tree;
char cwd[PATH_MAX];
char *trace = getenv("GIT_TRACE");
if (!getcwd(cwd, PATH_MAX))
die("Unable to get current working directory");
+ if (!(git_work_tree = get_git_work_tree()))
+ git_work_tree = "(null)";
+
+ if (!prefix)
+ prefix = "(null)";
+
trace_printf("setup: git_dir: %s\n", quote_crnl(get_git_dir()));
- trace_printf("setup: worktree: %s\n", quote_crnl(get_git_work_tree()));
+ trace_printf("setup: worktree: %s\n", quote_crnl(git_work_tree));
trace_printf("setup: cwd: %s\n", quote_crnl(cwd));
trace_printf("setup: prefix: %s\n", quote_crnl(prefix));
}