util.c: output function might override errno and thus affect perror() - dmenu - dynamic menu
 (HTM) git clone git://git.suckless.org/dmenu
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit 545031a076d4b5712442a8fc2d983f1e9d9f4f79
 (DIR) parent 475d8093cb8d29d5756937bfa9e0b3b9e415f632
 (HTM) Author: Hiltjo Posthuma <hiltjo@codemadness.org>
       Date:   Sun, 27 Oct 2024 20:08:46 +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(-)
       ---
 (DIR) 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);
        }