version 1.54, 2020/10/17 01:28:20 |
version 1.55, 2020/10/18 11:21:59 |
|
|
|
|
static void |
static void |
do_log(const char *file, const char *func, int line, LogLevel level, |
do_log(const char *file, const char *func, int line, LogLevel level, |
int force, const char *fmt, va_list args) |
int force, const char *suffix, const char *fmt, va_list args) |
{ |
{ |
struct syslog_data sdata = SYSLOG_DATA_INIT; |
struct syslog_data sdata = SYSLOG_DATA_INIT; |
char msgbuf[MSGBUFSIZ]; |
char msgbuf[MSGBUFSIZ]; |
|
|
} else { |
} else { |
vsnprintf(msgbuf, sizeof(msgbuf), fmt, args); |
vsnprintf(msgbuf, sizeof(msgbuf), fmt, args); |
} |
} |
|
if (suffix != NULL) { |
|
snprintf(fmtbuf, sizeof(fmtbuf), "%s: %s", msgbuf, suffix); |
|
strlcpy(msgbuf, fmtbuf, sizeof(msgbuf)); |
|
} |
strnvis(fmtbuf, msgbuf, sizeof(fmtbuf), VIS_SAFE|VIS_OCTAL); |
strnvis(fmtbuf, msgbuf, sizeof(fmtbuf), VIS_SAFE|VIS_OCTAL); |
if (log_handler != NULL) { |
if (log_handler != NULL) { |
/* Avoid recursion */ |
/* Avoid recursion */ |
|
|
|
|
void |
void |
sshlog(const char *file, const char *func, int line, int showfunc, |
sshlog(const char *file, const char *func, int line, int showfunc, |
LogLevel level, const char *fmt, ...) |
LogLevel level, const char *suffix, const char *fmt, ...) |
{ |
{ |
va_list args; |
va_list args; |
|
|
va_start(args, fmt); |
va_start(args, fmt); |
sshlogv(file, func, line, showfunc, level, fmt, args); |
sshlogv(file, func, line, showfunc, level, suffix, fmt, args); |
va_end(args); |
va_end(args); |
} |
} |
|
|
void |
void |
sshlogdie(const char *file, const char *func, int line, int showfunc, |
sshlogdie(const char *file, const char *func, int line, int showfunc, |
LogLevel level, const char *fmt, ...) |
LogLevel level, const char *suffix, const char *fmt, ...) |
{ |
{ |
va_list args; |
va_list args; |
|
|
va_start(args, fmt); |
va_start(args, fmt); |
sshlogv(file, func, line, showfunc, SYSLOG_LEVEL_INFO, fmt, args); |
sshlogv(file, func, line, showfunc, SYSLOG_LEVEL_INFO, |
|
suffix, fmt, args); |
va_end(args); |
va_end(args); |
cleanup_exit(255); |
cleanup_exit(255); |
} |
} |
|
|
void |
void |
sshsigdie(const char *file, const char *func, int line, int showfunc, |
sshsigdie(const char *file, const char *func, int line, int showfunc, |
LogLevel level, const char *fmt, ...) |
LogLevel level, const char *suffix, const char *fmt, ...) |
{ |
{ |
va_list args; |
va_list args; |
|
|
va_start(args, fmt); |
va_start(args, fmt); |
sshlogv(file, func, line, showfunc, SYSLOG_LEVEL_FATAL, fmt, args); |
sshlogv(file, func, line, showfunc, SYSLOG_LEVEL_FATAL, |
|
suffix, fmt, args); |
va_end(args); |
va_end(args); |
_exit(1); |
_exit(1); |
} |
} |
|
|
void |
void |
sshlogv(const char *file, const char *func, int line, int showfunc, |
sshlogv(const char *file, const char *func, int line, int showfunc, |
LogLevel level, const char *fmt, va_list args) |
LogLevel level, const char *suffix, const char *fmt, va_list args) |
{ |
{ |
char tag[128], fmt2[MSGBUFSIZ + 128]; |
char tag[128], fmt2[MSGBUFSIZ + 128]; |
int forced = 0; |
int forced = 0; |
|
|
else |
else |
strlcpy(fmt2, fmt, sizeof(fmt2)); |
strlcpy(fmt2, fmt, sizeof(fmt2)); |
|
|
do_log(file, func, line, level, forced, fmt2, args); |
do_log(file, func, line, level, forced, suffix, fmt2, args); |
} |
} |