ChangeLog update.
[doldaconnect.git] / daemon / log.c
CommitLineData
d3372da9 1/*
2 * Dolda Connect - Modular multiuser Direct Connect-style client
302a2600 3 * Copyright (C) 2004 Fredrik Tolf <fredrik@dolda2000.com>
d3372da9 4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program; if not, write to the Free Software
17 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18*/
b5010caa 19#include <stdlib.h>
d3372da9 20#include <syslog.h>
21#include <stdio.h>
22#include <stdarg.h>
23#include <sys/uio.h>
24#include <string.h>
d3372da9 25
26#ifdef HAVE_CONFIG_H
27#include <config.h>
28#endif
29#include "utils.h"
30
31int logtostderr, logtosyslog;
32int syslogfac = LOG_DAEMON;
33static int inited = 0;
34
35void flog(int priority, char *format, ...)
36{
37 va_list args;
38 char *b;
39 struct iovec iov[2];
40
41 va_start(args, format);
42 if((b = vsprintf2(format, args)) == NULL)
43 {
44 if(logtostderr)
45 fputs("No memory available for logging\n", stderr);
46 if(logtosyslog)
47 syslog(LOG_CRIT, "No memory available for logging");
48 }
49 va_end(args);
50 if(logtostderr)
51 {
52 iov[0].iov_base = b;
53 iov[0].iov_len = strlen(b);
54 iov[1].iov_base = "\n";
55 iov[1].iov_len = 1;
56 writev(2, iov, 2);
57 }
58 if(logtosyslog)
0f6981ce 59 syslog(syslogfac | priority, "%s", b);
d3372da9 60 free(b);
61}
62
63void initlog(void)
64{
65 if(inited)
66 {
67 closelog();
68 openlog("doldacond", LOG_PID, syslogfac);
69 } else {
70 openlog("doldacond", LOG_PID, syslogfac);
71 logtostderr = 1;
72 logtosyslog = 0;
73 inited = 1;
74 }
75}