summaryrefslogtreecommitdiffstats
path: root/log.c
diff options
context:
space:
mode:
authornicm <nicm>2021-09-10 15:03:18 +0000
committernicm <nicm>2021-09-10 15:03:18 +0000
commite6b40cb339e06b9084a9139a75d62fb7a6005448 (patch)
treee0e6cd3ef57721d1bf93fc4ab7d178019c76f6ad /log.c
parent33ac7a346e9134e27d26c88fc0693f16b1c55deb (diff)
Do fatal/fatalx a different way so the compiler trick to avoid warnings
becomes unnecessary, prompted by theo.
Diffstat (limited to 'log.c')
-rw-r--r--log.c35
1 files changed, 17 insertions, 18 deletions
diff --git a/log.c b/log.c
index d4808427..abc097dc 100644
--- a/log.c
+++ b/log.c
@@ -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);
}