/*----- General utilities -------------------------------------------------*/
-/* Format and log MSG somewhere sensible, at the syslog(3) priority PRIO.
- * Prefix it with a description of the query Q, if non-null.
- */
-void logmsg(const struct query *q, int prio, const char *msg, ...)
+static void vlogmsg(const struct query *q, int prio,
+ const char *msg, va_list *ap)
{
- va_list ap;
dstr d = DSTR_INIT;
time_t t;
struct tm *tm;
char buf[64];
- va_start(ap, msg);
if (q) {
dputsock(&d, q->ao, &q->s[L]);
dstr_puts(&d, " <-> ");
dputsock(&d, q->ao, &q->s[R]);
dstr_puts(&d, ": ");
}
- dstr_vputf(&d, msg, &ap);
- va_end(ap);
+ dstr_vputf(&d, msg, ap);
if (!(flags & F_RUNNING))
moan("%s", d.buf);
dstr_destroy(&d);
}
+/* Format and log MSG somewhere sensible, at the syslog(3) priority PRIO.
+ * Prefix it with a description of the query Q, if non-null.
+ */
+void logmsg(const struct query *q, int prio, const char *msg, ...)
+{
+ va_list ap;
+
+ va_start(ap, msg);
+ vlogmsg(q, prio, msg, &ap);
+ va_end(ap);
+}
+
/* Fix up a socket FD so that it won't bite us. Returns zero on success, or
* nonzero on error.
*/