summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--usr.bin/tmux/log.c37
-rw-r--r--usr.bin/tmux/tmux.h16
2 files changed, 19 insertions, 34 deletions
diff --git a/usr.bin/tmux/log.c b/usr.bin/tmux/log.c
index 2784db6e716..41e6629c9c0 100644
--- a/usr.bin/tmux/log.c
+++ b/usr.bin/tmux/log.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: log.c,v 1.29 2021/09/10 14:22:24 nicm Exp $ */
+/* $OpenBSD: log.c,v 1.30 2021/09/10 15:03:18 nicm Exp $ */
/*
* Copyright (c) 2007 Nicholas Marriott <nicholas.marriott@gmail.com>
@@ -99,28 +99,27 @@ log_close(void)
/* Write a log message. */
static void printflike(1, 0)
-log_vwrite(const char *msg, va_list ap)
+log_vwrite(const char *msg, va_list ap, const char *prefix)
{
- char *fmt, *out;
+ char *s, *out;
struct timeval tv;
if (log_file == NULL)
return;
- if (vasprintf(&fmt, msg, ap) == -1)
+ if (vasprintf(&s, msg, ap) == -1)
return;
- if (stravis(&out, fmt, VIS_OCTAL|VIS_CSTYLE|VIS_TAB|VIS_NL) == -1) {
- free(fmt);
+ if (stravis(&out, s, VIS_OCTAL|VIS_CSTYLE|VIS_TAB|VIS_NL) == -1) {
+ free(s);
return;
}
+ free(s);
gettimeofday(&tv, NULL);
- if (fprintf(log_file, "%lld.%06d %s\n", (long long)tv.tv_sec,
- (int)tv.tv_usec, out) != -1)
+ if (fprintf(log_file, "%lld.%06d %s%s\n", (long long)tv.tv_sec,
+ (int)tv.tv_usec, prefix, out) != -1)
fflush(log_file);
-
free(out);
- free(fmt);
}
/* Log a debug message. */
@@ -133,7 +132,7 @@ log_debug(const char *msg, ...)
return;
va_start(ap, msg);
- log_vwrite(msg, ap);
+ log_vwrite(msg, ap, "");
va_end(ap);
}
@@ -141,14 +140,16 @@ log_debug(const char *msg, ...)
__dead void
fatal(const char *msg, ...)
{
- char *fmt;
+ char tmp[256];
va_list ap;
+ if (snprintf(tmp, sizeof tmp, "fatal: %s: ", strerror(errno)) < 0)
+ exit (1);
+
va_start(ap, msg);
- if (asprintf(&fmt, "fatal: %s: %s", msg, strerror(errno)) == -1)
- exit(1);
- no_format_nonliteral(log_vwrite(fmt, ap));
+ log_vwrite(msg, ap, tmp);
va_end(ap);
+
exit(1);
}
@@ -156,13 +157,11 @@ fatal(const char *msg, ...)
__dead void
fatalx(const char *msg, ...)
{
- char *fmt;
va_list ap;
va_start(ap, msg);
- if (asprintf(&fmt, "fatal: %s", msg) == -1)
- exit(1);
- no_format_nonliteral(log_vwrite(fmt, ap));
+ log_vwrite(msg, ap, "fatal: ");
va_end(ap);
+
exit(1);
}
diff --git a/usr.bin/tmux/tmux.h b/usr.bin/tmux/tmux.h
index 0f43de41428..b47722682bf 100644
--- a/usr.bin/tmux/tmux.h
+++ b/usr.bin/tmux/tmux.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: tmux.h,v 1.1141 2021/09/10 14:22:24 nicm Exp $ */
+/* $OpenBSD: tmux.h,v 1.1142 2021/09/10 15:03:18 nicm Exp $ */
/*
* Copyright (c) 2007 Nicholas Marriott <nicholas.marriott@gmail.com>
@@ -93,20 +93,6 @@ struct winlink;
#define DEFAULT_XPIXEL 16
#define DEFAULT_YPIXEL 32
-/* Don't complain about format arguments. */
-#if __clang__ || __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)
-#define no_format_nonliteral(x) do { \
- _Pragma ("GCC diagnostic push") \
- _Pragma ("GCC diagnostic ignored \"-Wformat-nonliteral\"") \
- x; \
- _Pragma ("GCC diagnostic pop") \
-} while (0)
-#else
-#define no_format_nonliteral(x) do { \
- x; \
-} while (0)
-#endif
-
/* Attribute to make GCC check printf-like arguments. */
#define printflike(a, b) __attribute__ ((format (printf, a, b)))