/* $Cambridge: hermes/src/mailchk/log.c,v 1.1 2003/08/10 22:27:44 dpc22 Exp $ */

#include "mailchk.h"

#include <syslog.h>

static BOOL log_background = NIL;
static BOOL log_debug_set = NIL;

void
log_set_debug(BOOL value)
{
    log_debug_set = value;
}

void
log_set_background(BOOL value)
{
    log_background = value;
}

void
log_debug(char *fmt, ...)
{
    char buf[1024];
    va_list ap;

    if (!log_debug_set)
        return;

    va_start(ap, fmt);
    vsnprintf(buf, sizeof(buf), fmt, ap);
    va_end(ap);

    if (log_background) {
        openlog("mailchk", LOG_PID, LOG_MAIL);
        syslog(LOG_ERR, buf);
        closelog();
    } else
        fprintf(stderr, "%s\n", buf);

}

void
log_misc(char *fmt, ...)
{
    char buf[1024];
    va_list ap;

    va_start(ap, fmt);
    vsnprintf(buf, sizeof(buf), fmt, ap);
    va_end(ap);

    if (log_background) {
        openlog("mailchk", LOG_PID, LOG_MAIL);
        syslog(LOG_ERR, buf);
        closelog();
    } else
        fprintf(stderr, "%s\n", buf);
}

void
log_fatal(char *fmt, ...)
{
    char buf[1024];
    va_list ap;

    va_start(ap, fmt);
    vsnprintf(buf, sizeof(buf), fmt, ap);
    va_end(ap);

    if (log_background) {
        openlog("mailchk", LOG_PID, LOG_MAIL);
        syslog(LOG_ERR, buf);
        closelog();
    } else
        fprintf(stderr, "%s\n", buf);

    exit(1);
}
