X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~mdw/git/yaid/blobdiff_plain/56e93c83efa4ae53b068da006f9bd219d51be58f..HEAD:/yaid.c diff --git a/yaid.c b/yaid.c index 13e1208..d0d917a 100644 --- a/yaid.c +++ b/yaid.c @@ -222,26 +222,21 @@ static void init_writebuf(struct writebuf *wb, /*----- 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); @@ -257,6 +252,29 @@ void logmsg(const struct query *q, int prio, const char *msg, ...) 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); +} + +/* Format and report MSG as a fatal error, and exit. */ +void fatal(const char *msg, ...) +{ + va_list ap; + + va_start(ap, msg); + vlogmsg(0, LOG_CRIT, msg, &ap); + va_end(ap); + exit(1); +} + /* Fix up a socket FD so that it won't bite us. Returns zero on success, or * nonzero on error. */ @@ -843,7 +861,7 @@ static void accept_client(int fd, unsigned mode, void *p) struct listen *l = p; struct client *c; struct sockaddr_storage ssr, ssl; - size_t ssz = sizeof(ssr); + socklen_t ssz = sizeof(ssr); int sk; /* Accept the new connection. */