commit fcb2476b693ca4c40ad32c7119e27bbeb856865c from: Hiltjo Posthuma date: Sun Oct 27 19:10:07 2024 UTC util.c: output function might override errno and thus affect perror() Original patch by Raymond Cole with some modifications, thanks! commit - 8933ebcf50024f4378a78e556b1ac08091197206 commit + fcb2476b693ca4c40ad32c7119e27bbeb856865c blob - 96b82c980c4ce304d329fc60e582379ab0400993 blob + 8e26a51bd3a3b526d351c314a4916a2e64759a0e --- util.c +++ util.c @@ -1,4 +1,5 @@ /* See LICENSE file for copyright and license details. */ +#include #include #include #include @@ -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); }