/* We don't have the full Exim headers dragged in, but this function
is used for debugging output. */
-extern int string_vformat(char *, int, char *, va_list);
+extern gstring * string_vformat(gstring *, BOOL, const char *, va_list);
/*************************************************
debug_printf(char *format, ...)
{
va_list ap;
-char buffer[1024];
+gstring * g = string_get(1024);
+void * reset_point = g;
va_start(ap, format);
-if (!string_vformat(buffer, sizeof(buffer), format, ap))
+if (!string_vformat(g, FALSE, format, ap))
{
- char *s = "**** debug string overflowed buffer ****\n";
- char *p = buffer + (int)strlen(buffer);
- int maxlen = sizeof(buffer) - (int)strlen(s) - 3;
- if (p > buffer + maxlen) p = buffer + maxlen;
- if (p > buffer && p[-1] != '\n') *p++ = '\n';
+ char * s = "**** debug string overflowed buffer ****\n";
+ char * p = CS g->s + g->ptr;
+ int maxlen = g->size - (int)strlen(s) - 3;
+ if (p > g->s + maxlen) p = g->s + maxlen;
+ if (p > g->s && p[-1] != '\n') *p++ = '\n';
strcpy(p, s);
}
-fprintf(stderr, "%s", buffer);
+fprintf(stderr, "%s", string_from_gstring(g));
fflush(stderr);
+store_reset(reset_point);
va_end(ap);
}
sigalrm_handler(int sig)
{
sig = sig; /* Keep picky compilers happy */
-sigalrm_seen = 1;
+sigalrm_seen = TRUE;
}