1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
/*
* Syslog functions.
* Copyright (C) 2003, 2004 Mondru AB.
*
* The contents of this file may be used under the terms of the GNU
* General Public License Version 2, provided that the above copyright
* notice and this permission notice is included in all copies or
* substantial portions of the software.
*
*/
#include <stdarg.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <stdio.h>
#include <syslog.h>
#include <string.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include "syserr.h"
static FILE* err_log;
void sys_err_setlogfile(FILE* log)
{
err_log = log;
}
void sys_err(int pri, char *fn, int ln, int en, char *fmt, ...)
{
va_list args;
char buf[SYSERR_MSGSIZE];
va_start(args, fmt);
vsnprintf(buf, SYSERR_MSGSIZE, fmt, args);
va_end(args);
buf[SYSERR_MSGSIZE - 1] = 0; /* Make sure it is null terminated */
if (en) {
if (err_log)
fprintf(err_log, "%s: %d: %d (%s) %s\n",
fn, ln, en, strerror(en), buf);
syslog(pri, "%s: %d: %d (%s) %s", fn, ln, en, strerror(en),
buf);
} else {
if (err_log)
fprintf(err_log, "%s: %d: %s\n", fn, ln, buf);
syslog(pri, "%s: %d: %s", fn, ln, buf);
}
}
|