dwm
dynamic window manager
git clone https://9o.is/git/dwm.git
commit bb04970abe9c405d6118f68ec88635fe12f063cc parent 8227c3f6b22af1a8539e41fbcb833bebd5d1d832 Author: Hiltjo Posthuma <hiltjo@codemadness.org> 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); }