110 static int msg_output_fn_count = 0;
111 static VSTRING *msg_buffer = 0;
128 if (msg_output_fn_count == 0)
132 (msg_output_fn_count + 1) *
sizeof(*msg_output_fn));
133 msg_output_fn[msg_output_fn_count++] = output_fn;
142 va_start(ap, format);
151 int saved_errno = errno;
156 if (msg_output_fn_count == 0)
182 if (msg_output_fn_count == 0)
184 for (i = 0; i < msg_output_fn_count; i++)
void msg_output(MSG_OUTPUT_FN output_fn)
volatile int msg_vprintf_lock
void * myrealloc(void *ptr, ssize_t len)
void msg_text(int level, const char *text)
void msg_printf(int level, const char *format,...)
void(* MSG_OUTPUT_FN)(int, const char *)
VSTRING * vstring_strcpy(VSTRING *vp, const char *src)
VSTRING * vstring_vsprintf(VSTRING *vp, const char *format, va_list ap)
void msg_vprintf(int level, const char *format, va_list ap)
volatile int msg_text_lock
VSTRING * vstring_alloc(ssize_t len)
char * percentm(const char *str, int err)
void msg_vstream_init(const char *name, VSTREAM *vp)
char * printable(char *string, int replacement)
void * mymalloc(ssize_t len)