]> granicus.if.org Git - postgresql/commitdiff
Fix unportable usage of printf("%m").
authorTom Lane <tgl@sss.pgh.pa.us>
Sun, 20 May 2018 22:06:00 +0000 (18:06 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Sun, 20 May 2018 22:06:00 +0000 (18:06 -0400)
While glibc's version of printf accepts %m, most others do not;
to be portable, we have to do it the hard way with strerror(errno).
pg_verify_checksums evidently did not get that memo.

Noted while fooling around with NetBSD-current, which generates
a compiler warning for this mistake.

src/bin/pg_verify_checksums/pg_verify_checksums.c

index b065d0bb89728d732135483590f9160f7275829a..845d5aba27e5ee182837f6460e396eb2817cf5f8 100644 (file)
@@ -85,7 +85,8 @@ scan_file(char *fn, int segmentno)
        f = open(fn, 0);
        if (f < 0)
        {
-               fprintf(stderr, _("%s: could not open file \"%s\": %m\n"), progname, fn);
+               fprintf(stderr, _("%s: could not open file \"%s\": %s\n"),
+                               progname, fn, strerror(errno));
                exit(1);
        }
 
@@ -137,8 +138,8 @@ scan_directory(char *basedir, char *subdir)
        dir = opendir(path);
        if (!dir)
        {
-               fprintf(stderr, _("%s: could not open directory \"%s\": %m\n"),
-                               progname, path);
+               fprintf(stderr, _("%s: could not open directory \"%s\": %s\n"),
+                               progname, path, strerror(errno));
                exit(1);
        }
        while ((de = readdir(dir)) != NULL)
@@ -152,8 +153,8 @@ scan_directory(char *basedir, char *subdir)
                snprintf(fn, sizeof(fn), "%s/%s", path, de->d_name);
                if (lstat(fn, &st) < 0)
                {
-                       fprintf(stderr, _("%s: could not stat file \"%s\": %m\n"),
-                                       progname, fn);
+                       fprintf(stderr, _("%s: could not stat file \"%s\": %s\n"),
+                                       progname, fn, strerror(errno));
                        exit(1);
                }
                if (S_ISREG(st.st_mode))