blob: 3b64b59052ad9c706c7d5b6a22480451b553bddf [file] [log] [blame]
Michael Clarkf0d08882007-03-13 08:26:18 +00001/*
Michael Clarkf6a6e482007-03-13 08:26:23 +00002 * $Id: debug.c,v 1.5 2006/01/26 02:16:28 mclark Exp $
Michael Clarkf0d08882007-03-13 08:26:18 +00003 *
Michael Clarkf6a6e482007-03-13 08:26:23 +00004 * Copyright (c) 2004, 2005 Metaparadigm Pte. Ltd.
Michael Clarkf0d08882007-03-13 08:26:18 +00005 * Michael Clark <michael@metaparadigm.com>
6 *
Michael Clarkf6a6e482007-03-13 08:26:23 +00007 * This library is free software; you can redistribute it and/or modify
8 * it under the terms of the MIT license. See COPYING for details.
Michael Clarkf0d08882007-03-13 08:26:18 +00009 *
10 */
11
Michael Clark4504df72007-03-13 08:26:20 +000012#include "config.h"
13
Michael Clarkf0d08882007-03-13 08:26:18 +000014#include <stdio.h>
15#include <stdlib.h>
16#include <string.h>
17#include <stdarg.h>
Michael Clark4504df72007-03-13 08:26:20 +000018
19#if HAVE_SYSLOG_H
20# include <syslog.h>
21#endif /* HAVE_SYSLOG_H */
22
23#if HAVE_UNISTD_H
24# include <unistd.h>
25#endif /* HAVE_UNISTD_H */
26
27#if HAVE_SYS_PARAM_H
Michael Clarkf0d08882007-03-13 08:26:18 +000028#include <sys/param.h>
Michael Clark4504df72007-03-13 08:26:20 +000029#endif /* HAVE_SYS_PARAM_H */
Michael Clarkf0d08882007-03-13 08:26:18 +000030
31#include "debug.h"
32
Michael Clarkf0d08882007-03-13 08:26:18 +000033static int _syslog = 0;
34static int _debug = 0;
35
36void mc_set_debug(int debug) { _debug = debug; }
Michael Clarke8de0782009-02-25 01:45:00 +000037int mc_get_debug(void) { return _debug; }
Michael Clarkf0d08882007-03-13 08:26:18 +000038
39extern void mc_set_syslog(int syslog)
40{
41 _syslog = syslog;
42}
43
Michael Clarkf0d08882007-03-13 08:26:18 +000044void mc_debug(const char *msg, ...)
45{
46 va_list ap;
47 if(_debug) {
48 va_start(ap, msg);
Michael Clark4504df72007-03-13 08:26:20 +000049#if HAVE_VSYSLOG
50 if(_syslog) {
51 vsyslog(LOG_DEBUG, msg, ap);
52 } else
53#endif
54 vprintf(msg, ap);
Michael Clark8cdac642009-01-05 03:57:59 +000055 va_end(ap);
Michael Clarkf0d08882007-03-13 08:26:18 +000056 }
57}
58
59void mc_error(const char *msg, ...)
60{
61 va_list ap;
62 va_start(ap, msg);
Michael Clark4504df72007-03-13 08:26:20 +000063#if HAVE_VSYSLOG
64 if(_syslog) {
65 vsyslog(LOG_ERR, msg, ap);
66 } else
67#endif
68 vfprintf(stderr, msg, ap);
Michael Clark8cdac642009-01-05 03:57:59 +000069 va_end(ap);
Michael Clarkf0d08882007-03-13 08:26:18 +000070}
71
72void mc_info(const char *msg, ...)
73{
74 va_list ap;
75 va_start(ap, msg);
Michael Clark4504df72007-03-13 08:26:20 +000076#if HAVE_VSYSLOG
77 if(_syslog) {
78 vsyslog(LOG_INFO, msg, ap);
79 } else
80#endif
81 vfprintf(stderr, msg, ap);
Michael Clark8cdac642009-01-05 03:57:59 +000082 va_end(ap);
Michael Clarkf0d08882007-03-13 08:26:18 +000083}