ocs init
This commit is contained in:
131
plat/iptrans/src/errorlog.c
Normal file
131
plat/iptrans/src/errorlog.c
Normal file
@@ -0,0 +1,131 @@
|
||||
/* Error routines for programs that can run as a daemon. */
|
||||
|
||||
#include <errno.h> /* for definition of errno */
|
||||
#include <stdarg.h> /* ANSI C header file */
|
||||
#include <syslog.h>
|
||||
#include "./include/iptrans.h"
|
||||
|
||||
static void log_doit(int, int, const char *, va_list ap);
|
||||
|
||||
int debug=1; /* caller must define and set this:
|
||||
nonzero if interactive, zero if daemon */
|
||||
|
||||
int under_develop=1; /* caller must define and set this:
|
||||
nonzero if under develop, zero if not */
|
||||
|
||||
|
||||
/*@ignore@*/
|
||||
/* Initialize syslog(), if running as daemon. */
|
||||
void
|
||||
log_open(const char *ident, int option, int facility)
|
||||
{
|
||||
if (debug == 0)
|
||||
openlog(ident, option, facility);
|
||||
}
|
||||
|
||||
/*
|
||||
** Nonfatal error related to a system call.
|
||||
** Print a message with the system's errno value and return.
|
||||
*/
|
||||
|
||||
void
|
||||
log_ret(const char *fmt, ...)
|
||||
{
|
||||
va_list ap;
|
||||
|
||||
va_start(ap, fmt);
|
||||
log_doit(1, LOG_ERR, fmt, ap);
|
||||
va_end(ap);
|
||||
return;
|
||||
}
|
||||
|
||||
/*
|
||||
** Fatal error related to a system call.
|
||||
** Print a message and terminate.
|
||||
*/
|
||||
|
||||
void
|
||||
log_sys(const char *fmt, ...)
|
||||
{
|
||||
va_list ap;
|
||||
|
||||
va_start(ap, fmt);
|
||||
log_doit(1, LOG_ERR, fmt, ap);
|
||||
va_end(ap);
|
||||
exit(2);
|
||||
}
|
||||
|
||||
/*
|
||||
** Nonfatal error unrelated to a system call.
|
||||
** Print a message and return.
|
||||
*/
|
||||
|
||||
void
|
||||
log_msg(const char *fmt, ...)
|
||||
{
|
||||
va_list ap;
|
||||
|
||||
va_start(ap, fmt);
|
||||
log_doit(0, LOG_ERR, fmt, ap);
|
||||
va_end(ap);
|
||||
return;
|
||||
}
|
||||
|
||||
/*
|
||||
** Debug message unrelated to a system call.
|
||||
** Print a message and return while .
|
||||
*/
|
||||
|
||||
void
|
||||
log_debug(const char *fmt, ...)
|
||||
{
|
||||
va_list ap;
|
||||
|
||||
if (!under_develop) return;
|
||||
va_start(ap, fmt);
|
||||
log_doit(0, LOG_ERR, fmt, ap);
|
||||
va_end(ap);
|
||||
return;
|
||||
}
|
||||
|
||||
/*
|
||||
** Fatal error unrelated to a system call.
|
||||
** Print a message and terminate.
|
||||
*/
|
||||
|
||||
void
|
||||
log_quit(const char *fmt, ...)
|
||||
{
|
||||
va_list ap;
|
||||
|
||||
va_start(ap, fmt);
|
||||
log_doit(0, LOG_ERR, fmt, ap);
|
||||
va_end(ap);
|
||||
exit(2);
|
||||
}
|
||||
|
||||
/*
|
||||
** Print a message and return to caller.
|
||||
** Caller specifies "errnoflag" and "priority".
|
||||
*/
|
||||
|
||||
static void
|
||||
log_doit(int errnoflag, int priority, const char *fmt, va_list ap)
|
||||
{
|
||||
int errno_save;
|
||||
char buf[MAXLINE];
|
||||
|
||||
errno_save = errno; /* value caller might want printed */
|
||||
vsprintf(buf, fmt, ap);
|
||||
if (errnoflag)
|
||||
sprintf(buf+strlen(buf), ": %s", strerror(errno_save));
|
||||
strcat(buf, "\n");
|
||||
if (debug) {
|
||||
fflush(stdout);
|
||||
fputs(buf, stderr);
|
||||
fflush(stderr);
|
||||
} else
|
||||
syslog(priority, "%s", buf);
|
||||
return;
|
||||
}
|
||||
/*@end@*/
|
||||
Reference in New Issue
Block a user