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 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87
|
#include <syslog.h>
#include <stdio.h>
#include <stdarg.h>
#include <stdlib.h>
#include "error.h"
extern int rl_debug;
static void rl_log(int, const char *, int, const char *, va_list);
void rl_note(const char * fmt, ...) {
va_list argp;
va_start(argp, fmt);
rl_log(LOG_INFO, NULL, 0, fmt, argp);
va_end(argp);
}
void rl_warn(const char * fmt, ...) {
va_list argp;
va_start(argp, fmt);
rl_log(LOG_WARNING, NULL, 0, fmt, argp);
va_end(argp);
}
void rl_pwarn(const char * file, int line, const char * fmt, ...) {
va_list argp;
va_start(argp, fmt);
rl_log(LOG_WARNING, file, line, fmt, argp);
va_end(argp);
}
void rl_fatal(int ex, const char * fmt, ...) {
va_list argp;
va_start(argp, fmt);
rl_log(LOG_ERR, NULL, 0, fmt, argp);
va_end(argp);
exit(ex);
}
void rl_pfatal(int ex, const char * file, int line, const char * fmt, ...) {
va_list argp;
va_start(argp, fmt);
rl_log(LOG_ERR, file, line, fmt, argp);
va_end(argp);
exit(ex);
}
static void rl_log(int level, const char * file, int line, const char * fmt, va_list argp) {
char message[1024];
int cur_len;
int max_len;
max_len = sizeof(message) - 1;
cur_len = 0;
memset(message, 0, max_len);
if (file) {
snprintf(message, max_len, "(%.255s:%d) ",
file, line);
cur_len = strlen(message);
max_len -= (cur_len + 1);
}
vsnprintf(message + cur_len, max_len, fmt, argp);
if (rl_debug)
{
fprintf(stderr, "%s\n", message);
fflush(stderr);
}
else
syslog(level, "%s", message);
}
/* vim: set ts=2: */
|