blob: e0294caa6ef1b68d74e6eb08b7aa7d15a1828f82 [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
44void mc_abort(const char *msg, ...)
45{
46 va_list ap;
47 va_start(ap, msg);
Michael Clark4504df72007-03-13 08:26:20 +000048#if HAVE_VSYSLOG
49 if(_syslog) {
50 vsyslog(LOG_ERR, msg, ap);
51 } else
52#endif
53 vprintf(msg, ap);
Michael Clark8cdac642009-01-05 03:57:59 +000054 va_end(ap);
Michael Clarkf0d08882007-03-13 08:26:18 +000055 exit(1);
56}
57
58
59void mc_debug(const char *msg, ...)
60{
61 va_list ap;
62 if(_debug) {
63 va_start(ap, msg);
Michael Clark4504df72007-03-13 08:26:20 +000064#if HAVE_VSYSLOG
65 if(_syslog) {
66 vsyslog(LOG_DEBUG, msg, ap);
67 } else
68#endif
69 vprintf(msg, ap);
Michael Clark8cdac642009-01-05 03:57:59 +000070 va_end(ap);
Michael Clarkf0d08882007-03-13 08:26:18 +000071 }
72}
73
74void mc_error(const char *msg, ...)
75{
76 va_list ap;
77 va_start(ap, msg);
Michael Clark4504df72007-03-13 08:26:20 +000078#if HAVE_VSYSLOG
79 if(_syslog) {
80 vsyslog(LOG_ERR, msg, ap);
81 } else
82#endif
83 vfprintf(stderr, msg, ap);
Michael Clark8cdac642009-01-05 03:57:59 +000084 va_end(ap);
Michael Clarkf0d08882007-03-13 08:26:18 +000085}
86
87void mc_info(const char *msg, ...)
88{
89 va_list ap;
90 va_start(ap, msg);
Michael Clark4504df72007-03-13 08:26:20 +000091#if HAVE_VSYSLOG
92 if(_syslog) {
93 vsyslog(LOG_INFO, msg, ap);
94 } else
95#endif
96 vfprintf(stderr, msg, ap);
Michael Clark8cdac642009-01-05 03:57:59 +000097 va_end(ap);
Michael Clarkf0d08882007-03-13 08:26:18 +000098}