diff options
| author | Hiltjo Posthuma <hiltjo@codemadness.org> | 2024-10-27 20:08:46 +0100 |
|---|---|---|
| committer | Hiltjo Posthuma <hiltjo@codemadness.org> | 2024-10-27 20:08:46 +0100 |
| commit | 545031a076d4b5712442a8fc2d983f1e9d9f4f79 (patch) | |
| tree | eafeb046937db6bf62054769375e34c9d6ba2055 | |
| parent | 475d8093cb8d29d5756937bfa9e0b3b9e415f632 (diff) | |
| download | dmenu-545031a076d4b5712442a8fc2d983f1e9d9f4f79.tar.gz dmenu-545031a076d4b5712442a8fc2d983f1e9d9f4f79.zip | |
util.c: output function might override errno and thus affect perror()
Original patch by Raymond Cole with some modifications, thanks!
| -rw-r--r-- | util.c | 13 |
1 files changed, 7 insertions, 6 deletions
@@ -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); } |
