Trace into open fd and refactor tracing code.

Now if GIT_TRACE is set to an integer value greater than 1
and lower than 10, we interpret this as an open fd value
and we trace into it. Note that this behavior is not
compatible with the previous one.

We also trace whole messages using one write(2) call to
make sure messages from processes do net get mixed up in
the middle.

It's now possible to run the tests like this:

	GIT_TRACE=9 make test 9>/var/tmp/trace.log

Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
Christian Couder
2006-08-31 08:42:11 +02:00
committed by Junio C Hamano
parent 2c6d22df9f
commit 7cf67205ca
10 changed files with 196 additions and 64 deletions

32
quote.c
View File

@ -74,6 +74,38 @@ char *sq_quote(const char *src)
return buf;
}
char *sq_quote_argv(const char** argv, int count)
{
char *buf, *to;
int i;
size_t len = 0;
/* Count argv if needed. */
if (count < 0) {
for (count = 0; argv[count]; count++)
; /* just counting */
}
/* Special case: no argv. */
if (!count)
return xcalloc(1,1);
/* Get destination buffer length. */
for (i = 0; i < count; i++)
len += sq_quote_buf(NULL, 0, argv[i]) + 1;
/* Alloc destination buffer. */
to = buf = xmalloc(len + 1);
/* Copy into destination buffer. */
for (i = 0; i < count; ++i) {
*to++ = ' ';
to += sq_quote_buf(to, len, argv[i]);
}
return buf;
}
char *sq_dequote(char *arg)
{
char *dst = arg;