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