summaryrefslogtreecommitdiffstats
path: root/log.c
diff options
context:
space:
mode:
authorThomas Adam <thomas@xteddy.org>2021-09-10 18:01:11 +0100
committerThomas Adam <thomas@xteddy.org>2021-09-10 18:01:11 +0100
commitb28fffc0f754b510796acbf367ae920eac90c92d (patch)
tree57fe8b3ee7f9d2ddd9dafb9b47887def6e5aa800 /log.c
parent3b10392bfce384abb2734e9a7052718b7d70f212 (diff)
parente6b40cb339e06b9084a9139a75d62fb7a6005448 (diff)
Merge branch 'obsd-master' into master
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 ec8f1a07..d4436672 100644
--- a/log.c
+++ b/log.c
@@ -98,28 +98,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. */
@@ -132,7 +131,7 @@ log_debug(const char *msg, ...)
return;
va_start(ap, msg);
- log_vwrite(msg, ap);
+ log_vwrite(msg, ap, "");
va_end(ap);
}
@@ -140,14 +139,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);
- log_vwrite(fmt, ap);
+ log_vwrite(msg, ap, tmp);
va_end(ap);
+
exit(1);
}
@@ -155,13 +156,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);
- log_vwrite(fmt, ap);
+ log_vwrite(msg, ap, "fatal: ");
va_end(ap);
+
exit(1);
}