Merge branch 'ps/gitweb--browse-chrome'
[gitweb.git] / trace.c
diff --git a/trace.c b/trace.c
index 69fa05e6446355ed8e5bb7f560c83f61b9bc3aff..1e560cb0b977e19beeb095497c8e4f6280b7f0d6 100644 (file)
--- a/trace.c
+++ b/trace.c
 #include "cache.h"
 #include "quote.h"
 
+void do_nothing(size_t unused)
+{
+}
+
 /* Get a trace file descriptor from GIT_TRACE env variable. */
 static int get_trace_fd(int *need_close)
 {
@@ -37,7 +41,7 @@ static int get_trace_fd(int *need_close)
                return STDERR_FILENO;
        if (strlen(trace) == 1 && isdigit(*trace))
                return atoi(trace);
-       if (*trace == '/') {
+       if (is_absolute_path(trace)) {
                int fd = open(trace, O_WRONLY | O_APPEND | O_CREAT, 0666);
                if (fd == -1) {
                        fprintf(stderr,
@@ -50,7 +54,7 @@ static int get_trace_fd(int *need_close)
                return fd;
        }
 
-       fprintf(stderr, "What does '%s' for GIT_TRACE mean?\n", trace);
+       fprintf(stderr, "What does '%s' for GIT_TRACE mean?\n", trace);
        fprintf(stderr, "If you want to trace into a file, "
                "then please set GIT_TRACE to an absolute pathname "
                "(starting with /).\n");
@@ -72,7 +76,8 @@ void trace_printf(const char *fmt, ...)
        if (!fd)
                return;
 
-       strbuf_init(&buf, 0);
+       set_try_to_free_routine(do_nothing);    /* is never reset */
+       strbuf_init(&buf, 64);
        va_start(ap, fmt);
        len = vsnprintf(buf.buf, strbuf_avail(&buf), fmt, ap);
        va_end(ap);
@@ -93,7 +98,7 @@ void trace_printf(const char *fmt, ...)
                close(fd);
 }
 
-void trace_argv_printf(const char **argv, int count, const char *fmt, ...)
+void trace_argv_printf(const char **argv, const char *fmt, ...)
 {
        struct strbuf buf;
        va_list ap;
@@ -103,7 +108,8 @@ void trace_argv_printf(const char **argv, int count, const char *fmt, ...)
        if (!fd)
                return;
 
-       strbuf_init(&buf, 0);
+       set_try_to_free_routine(do_nothing);    /* is never reset */
+       strbuf_init(&buf, 64);
        va_start(ap, fmt);
        len = vsnprintf(buf.buf, strbuf_avail(&buf), fmt, ap);
        va_end(ap);
@@ -117,7 +123,7 @@ void trace_argv_printf(const char **argv, int count, const char *fmt, ...)
        }
        strbuf_setlen(&buf, len);
 
-       sq_quote_argv(&buf, argv, count, 0);
+       sq_quote_argv(&buf, argv, 0);
        strbuf_addch(&buf, '\n');
        write_or_whine_pipe(fd, buf.buf, buf.len, err_msg);
        strbuf_release(&buf);