Fix another portability issue in pg_basebackup.
authorTom Lane <tgl@sss.pgh.pa.us>
Sun, 23 Jan 2011 19:26:51 +0000 (14:26 -0500)
committerTom Lane <tgl@sss.pgh.pa.us>
Sun, 23 Jan 2011 19:26:51 +0000 (14:26 -0500)
The target of sscanf with a %o format had better be of integer width,
but "mode_t" conceivably isn't that.  Another compiler warning seen
only on some platforms; this one I think is potentially a real bug
and not just a warning.

src/bin/pg_basebackup/pg_basebackup.c

index 8a371504aeb3d9e933bdad83006a6ff4f1f78bdf..536303461a68c83aa53cc88a73e69f3e950a8174 100644 (file)
@@ -483,7 +483,7 @@ ReceiveAndUnpackTarFile(PGconn *conn, PGresult *res, int rownum)
 
        if (file == NULL)
        {
-           mode_t      filemode;
+           int     filemode;
 
            /*
             * No current file, so this must be the header for a new file
@@ -540,7 +540,7 @@ ReceiveAndUnpackTarFile(PGconn *conn, PGresult *res, int rownum)
                        disconnect_and_exit(1);
                    }
 #ifndef WIN32
-                   if (chmod(fn, filemode))
+                   if (chmod(fn, (mode_t) filemode))
                        fprintf(stderr, _("%s: could not set permissions on directory \"%s\": %s\n"),
                                progname, fn, strerror(errno));
 #endif
@@ -580,7 +580,7 @@ ReceiveAndUnpackTarFile(PGconn *conn, PGresult *res, int rownum)
            }
 
 #ifndef WIN32
-           if (chmod(fn, filemode))
+           if (chmod(fn, (mode_t) filemode))
                fprintf(stderr, _("%s: could not set permissions on file \"%s\": %s\n"),
                        progname, fn, strerror(errno));
 #endif