util.c: output function might override errno and thus affect perror() - dwm - d… | |
git clone git://git.suckless.org/dwm | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit fcb2476b693ca4c40ad32c7119e27bbeb856865c | |
parent 8933ebcf50024f4378a78e556b1ac08091197206 | |
Author: Hiltjo Posthuma <[email protected]> | |
Date: Sun, 27 Oct 2024 20:10:07 +0100 | |
util.c: output function might override errno and thus affect perror() | |
Original patch by Raymond Cole with some modifications, thanks! | |
Diffstat: | |
M util.c | 13 +++++++------ | |
1 file changed, 7 insertions(+), 6 deletions(-) | |
--- | |
diff --git a/util.c b/util.c | |
@@ -1,4 +1,5 @@ | |
/* See LICENSE file for copyright and license details. */ | |
+#include <errno.h> | |
#include <stdarg.h> | |
#include <stdio.h> | |
#include <stdlib.h> | |
@@ -10,17 +11,17 @@ void | |
die(const char *fmt, ...) | |
{ | |
va_list ap; | |
+ int saved_errno; | |
+ | |
+ saved_errno = errno; | |
va_start(ap, fmt); | |
vfprintf(stderr, fmt, ap); | |
va_end(ap); | |
- if (fmt[0] && fmt[strlen(fmt)-1] == ':') { | |
- fputc(' ', stderr); | |
- perror(NULL); | |
- } else { | |
- fputc('\n', stderr); | |
- } | |
+ if (fmt[0] && fmt[strlen(fmt)-1] == ':') | |
+ fprintf(stderr, " %s", strerror(saved_errno)); | |
+ fputc('\n', stderr); | |
exit(1); | |
} |