mirror of
https://github.com/tmate-io/tmate.git
synced 2025-08-16 00:28:10 +02:00
Sync OpenBSD patchset 1123:
Simplify logging and just fprintf(stderr, ...) for early errors.
This commit is contained in:
73
log.c
73
log.c
@ -27,20 +27,14 @@
|
||||
|
||||
#include "tmux.h"
|
||||
|
||||
/* Logging type. */
|
||||
#define LOG_TYPE_OFF 0
|
||||
#define LOG_TYPE_TTY 1
|
||||
#define LOG_TYPE_FILE 2
|
||||
int log_type = LOG_TYPE_OFF;
|
||||
|
||||
/* Log file, if needed. */
|
||||
FILE *log_file;
|
||||
FILE *log_file = stderr;
|
||||
|
||||
/* Debug level. */
|
||||
int log_level;
|
||||
int log_level = 0;
|
||||
|
||||
void log_event_cb(int, const char *);
|
||||
void log_vwrite(int, const char *, va_list);
|
||||
void log_vwrite(const char *, va_list);
|
||||
__dead void log_vfatal(const char *, va_list);
|
||||
|
||||
/* Log callback for libevent. */
|
||||
@ -50,29 +44,13 @@ log_event_cb(unused int severity, const char *msg)
|
||||
log_warnx("%s", msg);
|
||||
}
|
||||
|
||||
/* Open logging to tty. */
|
||||
void
|
||||
log_open_tty(int level)
|
||||
{
|
||||
log_type = LOG_TYPE_TTY;
|
||||
log_level = level;
|
||||
|
||||
setlinebuf(stderr);
|
||||
setlinebuf(stdout);
|
||||
event_set_log_callback(log_event_cb);
|
||||
|
||||
tzset();
|
||||
}
|
||||
|
||||
/* Open logging to file. */
|
||||
void
|
||||
log_open_file(int level, const char *path)
|
||||
log_open(int level, const char *path)
|
||||
{
|
||||
log_file = fopen(path, "w");
|
||||
if (log_file == NULL)
|
||||
return;
|
||||
|
||||
log_type = LOG_TYPE_FILE;
|
||||
log_level = level;
|
||||
|
||||
setlinebuf(log_file);
|
||||
@ -85,37 +63,24 @@ log_open_file(int level, const char *path)
|
||||
void
|
||||
log_close(void)
|
||||
{
|
||||
if (log_type == LOG_TYPE_FILE)
|
||||
if (log_file != stderr)
|
||||
fclose(log_file);
|
||||
|
||||
event_set_log_callback(NULL);
|
||||
|
||||
log_type = LOG_TYPE_OFF;
|
||||
}
|
||||
|
||||
/* Write a log message. */
|
||||
void
|
||||
log_vwrite(int pri, const char *msg, va_list ap)
|
||||
log_vwrite(const char *msg, va_list ap)
|
||||
{
|
||||
char *fmt;
|
||||
FILE *f = log_file;
|
||||
|
||||
switch (log_type) {
|
||||
case LOG_TYPE_TTY:
|
||||
if (pri == LOG_INFO)
|
||||
f = stdout;
|
||||
else
|
||||
f = stderr;
|
||||
/* FALLTHROUGH */
|
||||
case LOG_TYPE_FILE:
|
||||
if (asprintf(&fmt, "%s\n", msg) == -1)
|
||||
exit(1);
|
||||
if (vfprintf(f, fmt, ap) == -1)
|
||||
exit(1);
|
||||
fflush(f);
|
||||
free(fmt);
|
||||
break;
|
||||
}
|
||||
if (asprintf(&fmt, "%s\n", msg) == -1)
|
||||
exit(1);
|
||||
if (vfprintf(log_file, fmt, ap) == -1)
|
||||
exit(1);
|
||||
fflush(log_file);
|
||||
free(fmt);
|
||||
}
|
||||
|
||||
/* Log a warning with error string. */
|
||||
@ -128,7 +93,7 @@ log_warn(const char *msg, ...)
|
||||
va_start(ap, msg);
|
||||
if (asprintf(&fmt, "%s: %s", msg, strerror(errno)) == -1)
|
||||
exit(1);
|
||||
log_vwrite(LOG_CRIT, fmt, ap);
|
||||
log_vwrite(fmt, ap);
|
||||
free(fmt);
|
||||
va_end(ap);
|
||||
}
|
||||
@ -140,7 +105,7 @@ log_warnx(const char *msg, ...)
|
||||
va_list ap;
|
||||
|
||||
va_start(ap, msg);
|
||||
log_vwrite(LOG_CRIT, msg, ap);
|
||||
log_vwrite(msg, ap);
|
||||
va_end(ap);
|
||||
}
|
||||
|
||||
@ -152,7 +117,7 @@ log_info(const char *msg, ...)
|
||||
|
||||
if (log_level > -1) {
|
||||
va_start(ap, msg);
|
||||
log_vwrite(LOG_INFO, msg, ap);
|
||||
log_vwrite(msg, ap);
|
||||
va_end(ap);
|
||||
}
|
||||
}
|
||||
@ -165,7 +130,7 @@ log_debug(const char *msg, ...)
|
||||
|
||||
if (log_level > 0) {
|
||||
va_start(ap, msg);
|
||||
log_vwrite(LOG_DEBUG, msg, ap);
|
||||
log_vwrite(msg, ap);
|
||||
va_end(ap);
|
||||
}
|
||||
}
|
||||
@ -178,7 +143,7 @@ log_debug2(const char *msg, ...)
|
||||
|
||||
if (log_level > 1) {
|
||||
va_start(ap, msg);
|
||||
log_vwrite(LOG_DEBUG, msg, ap);
|
||||
log_vwrite(msg, ap);
|
||||
va_end(ap);
|
||||
}
|
||||
}
|
||||
@ -192,11 +157,11 @@ log_vfatal(const char *msg, va_list ap)
|
||||
if (errno != 0) {
|
||||
if (asprintf(&fmt, "fatal: %s: %s", msg, strerror(errno)) == -1)
|
||||
exit(1);
|
||||
log_vwrite(LOG_CRIT, fmt, ap);
|
||||
log_vwrite(fmt, ap);
|
||||
} else {
|
||||
if (asprintf(&fmt, "fatal: %s", msg) == -1)
|
||||
exit(1);
|
||||
log_vwrite(LOG_CRIT, fmt, ap);
|
||||
log_vwrite(fmt, ap);
|
||||
}
|
||||
free(fmt);
|
||||
|
||||
|
Reference in New Issue
Block a user