version 1.18, 2001/06/26 17:27:23 |
version 1.18.2.2, 2002/10/11 14:53:06 |
|
|
{ "LOCAL5", SYSLOG_FACILITY_LOCAL5 }, |
{ "LOCAL5", SYSLOG_FACILITY_LOCAL5 }, |
{ "LOCAL6", SYSLOG_FACILITY_LOCAL6 }, |
{ "LOCAL6", SYSLOG_FACILITY_LOCAL6 }, |
{ "LOCAL7", SYSLOG_FACILITY_LOCAL7 }, |
{ "LOCAL7", SYSLOG_FACILITY_LOCAL7 }, |
{ NULL, 0 } |
{ NULL, SYSLOG_FACILITY_NOT_SET } |
}; |
}; |
|
|
static struct { |
static struct { |
|
|
{ "DEBUG1", SYSLOG_LEVEL_DEBUG1 }, |
{ "DEBUG1", SYSLOG_LEVEL_DEBUG1 }, |
{ "DEBUG2", SYSLOG_LEVEL_DEBUG2 }, |
{ "DEBUG2", SYSLOG_LEVEL_DEBUG2 }, |
{ "DEBUG3", SYSLOG_LEVEL_DEBUG3 }, |
{ "DEBUG3", SYSLOG_LEVEL_DEBUG3 }, |
{ NULL, 0 } |
{ NULL, SYSLOG_LEVEL_NOT_SET } |
}; |
}; |
|
|
static void do_log(LogLevel level, const char *fmt, va_list args); |
|
|
|
SyslogFacility |
SyslogFacility |
log_facility_number(char *name) |
log_facility_number(char *name) |
{ |
{ |
int i; |
int i; |
|
|
if (name != NULL) |
if (name != NULL) |
for (i = 0; log_facilities[i].name; i++) |
for (i = 0; log_facilities[i].name; i++) |
if (strcasecmp(log_facilities[i].name, name) == 0) |
if (strcasecmp(log_facilities[i].name, name) == 0) |
return log_facilities[i].val; |
return log_facilities[i].val; |
return (SyslogFacility) - 1; |
return SYSLOG_FACILITY_NOT_SET; |
} |
} |
|
|
LogLevel |
LogLevel |
log_level_number(char *name) |
log_level_number(char *name) |
{ |
{ |
int i; |
int i; |
|
|
if (name != NULL) |
if (name != NULL) |
for (i = 0; log_levels[i].name; i++) |
for (i = 0; log_levels[i].name; i++) |
if (strcasecmp(log_levels[i].name, name) == 0) |
if (strcasecmp(log_levels[i].name, name) == 0) |
return log_levels[i].val; |
return log_levels[i].val; |
return (LogLevel) - 1; |
return SYSLOG_LEVEL_NOT_SET; |
} |
} |
/* Fatal messages. This function never returns. */ |
|
|
|
void |
|
fatal(const char *fmt,...) |
|
{ |
|
va_list args; |
|
va_start(args, fmt); |
|
do_log(SYSLOG_LEVEL_FATAL, fmt, args); |
|
va_end(args); |
|
fatal_cleanup(); |
|
} |
|
|
|
/* Error messages that should be logged. */ |
/* Error messages that should be logged. */ |
|
|
void |
void |
error(const char *fmt,...) |
error(const char *fmt,...) |
{ |
{ |
va_list args; |
va_list args; |
|
|
va_start(args, fmt); |
va_start(args, fmt); |
do_log(SYSLOG_LEVEL_ERROR, fmt, args); |
do_log(SYSLOG_LEVEL_ERROR, fmt, args); |
va_end(args); |
va_end(args); |
|
|
log(const char *fmt,...) |
log(const char *fmt,...) |
{ |
{ |
va_list args; |
va_list args; |
|
|
va_start(args, fmt); |
va_start(args, fmt); |
do_log(SYSLOG_LEVEL_INFO, fmt, args); |
do_log(SYSLOG_LEVEL_INFO, fmt, args); |
va_end(args); |
va_end(args); |
|
|
verbose(const char *fmt,...) |
verbose(const char *fmt,...) |
{ |
{ |
va_list args; |
va_list args; |
|
|
va_start(args, fmt); |
va_start(args, fmt); |
do_log(SYSLOG_LEVEL_VERBOSE, fmt, args); |
do_log(SYSLOG_LEVEL_VERBOSE, fmt, args); |
va_end(args); |
va_end(args); |
|
|
debug(const char *fmt,...) |
debug(const char *fmt,...) |
{ |
{ |
va_list args; |
va_list args; |
|
|
va_start(args, fmt); |
va_start(args, fmt); |
do_log(SYSLOG_LEVEL_DEBUG1, fmt, args); |
do_log(SYSLOG_LEVEL_DEBUG1, fmt, args); |
va_end(args); |
va_end(args); |
|
|
debug2(const char *fmt,...) |
debug2(const char *fmt,...) |
{ |
{ |
va_list args; |
va_list args; |
|
|
va_start(args, fmt); |
va_start(args, fmt); |
do_log(SYSLOG_LEVEL_DEBUG2, fmt, args); |
do_log(SYSLOG_LEVEL_DEBUG2, fmt, args); |
va_end(args); |
va_end(args); |
|
|
debug3(const char *fmt,...) |
debug3(const char *fmt,...) |
{ |
{ |
va_list args; |
va_list args; |
|
|
va_start(args, fmt); |
va_start(args, fmt); |
do_log(SYSLOG_LEVEL_DEBUG3, fmt, args); |
do_log(SYSLOG_LEVEL_DEBUG3, fmt, args); |
va_end(args); |
va_end(args); |
|
|
(u_long) proc, (u_long) context); |
(u_long) proc, (u_long) context); |
} |
} |
|
|
|
/* Remove all cleanups, to be called after fork() */ |
|
void |
|
fatal_remove_all_cleanups(void) |
|
{ |
|
struct fatal_cleanup *cu, *next_cu; |
|
|
|
for (cu = fatal_cleanups; cu; cu = next_cu) { |
|
next_cu = cu->next; |
|
xfree(cu); |
|
} |
|
} |
|
|
/* Cleanup and exit */ |
/* Cleanup and exit */ |
void |
void |
fatal_cleanup(void) |
fatal_cleanup(void) |
|
|
for (cu = fatal_cleanups; cu; cu = next_cu) { |
for (cu = fatal_cleanups; cu; cu = next_cu) { |
next_cu = cu->next; |
next_cu = cu->next; |
debug("Calling cleanup 0x%lx(0x%lx)", |
debug("Calling cleanup 0x%lx(0x%lx)", |
(u_long) cu->proc, (u_long) cu->context); |
(u_long) cu->proc, (u_long) cu->context); |
(*cu->proc) (cu->context); |
(*cu->proc) (cu->context); |
} |
} |
exit(255); |
exit(255); |
|
|
|
|
#define MSGBUFSIZ 1024 |
#define MSGBUFSIZ 1024 |
|
|
static void |
void |
do_log(LogLevel level, const char *fmt, va_list args) |
do_log(LogLevel level, const char *fmt, va_list args) |
{ |
{ |
char msgbuf[MSGBUFSIZ]; |
char msgbuf[MSGBUFSIZ]; |