Existing code uses various inconsistent ways to printf struct stat's st_size member. The type of that is off_t, which is in most cases a signed 64-bit integer, so use the long long int format for it.

I don't think anything is affected by this in practice, but it seems reasonable to set a good convention for the next time this code gets copied.

--
Peter Eisentraut              http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
From 028e5a17e2cfa1acfdbbd9c2eaaf526b07b484c4 Mon Sep 17 00:00:00 2001
From: Peter Eisentraut <pe...@eisentraut.org>
Date: Tue, 15 Sep 2020 13:33:48 +0200
Subject: [PATCH] Standardize the printf format for st_size

Existing code used various inconsistent ways to printf struct stat's
st_size member.  The type of that is off_t, which is in most cases a
signed 64-bit integer, so use the long long int format for it.
---
 src/backend/access/transam/twophase.c     | 12 ++++++------
 src/backend/access/transam/xlogarchive.c  |  6 +++---
 src/bin/pg_basebackup/pg_receivewal.c     |  4 ++--
 src/bin/pg_verifybackup/pg_verifybackup.c |  8 ++++----
 src/fe_utils/archive.c                    |  6 +++---
 5 files changed, 18 insertions(+), 18 deletions(-)

diff --git a/src/backend/access/transam/twophase.c 
b/src/backend/access/transam/twophase.c
index ef4f9981e3..7940060443 100644
--- a/src/backend/access/transam/twophase.c
+++ b/src/backend/access/transam/twophase.c
@@ -1243,10 +1243,10 @@ ReadTwoPhaseFile(TransactionId xid, bool missing_ok)
                stat.st_size > MaxAllocSize)
                ereport(ERROR,
                                (errcode(ERRCODE_DATA_CORRUPTED),
-                                errmsg_plural("incorrect size of file \"%s\": 
%zu byte",
-                                                          "incorrect size of 
file \"%s\": %zu bytes",
-                                                          (Size) stat.st_size, 
path,
-                                                          (Size) 
stat.st_size)));
+                                errmsg_plural("incorrect size of file \"%s\": 
%lld byte",
+                                                          "incorrect size of 
file \"%s\": %lld bytes",
+                                                          (long long int) 
stat.st_size, path,
+                                                          (long long int) 
stat.st_size)));
 
        crc_offset = stat.st_size - sizeof(pg_crc32c);
        if (crc_offset != MAXALIGN(crc_offset))
@@ -1270,8 +1270,8 @@ ReadTwoPhaseFile(TransactionId xid, bool missing_ok)
                                         errmsg("could not read file \"%s\": 
%m", path)));
                else
                        ereport(ERROR,
-                                       (errmsg("could not read file \"%s\": 
read %d of %zu",
-                                                       path, r, (Size) 
stat.st_size)));
+                                       (errmsg("could not read file \"%s\": 
read %d of %lld",
+                                                       path, r, (long long 
int) stat.st_size)));
        }
 
        pgstat_report_wait_end();
diff --git a/src/backend/access/transam/xlogarchive.c 
b/src/backend/access/transam/xlogarchive.c
index 8f8734dc1d..cae93ab69d 100644
--- a/src/backend/access/transam/xlogarchive.c
+++ b/src/backend/access/transam/xlogarchive.c
@@ -202,10 +202,10 @@ RestoreArchivedFile(char *path, const char *xlogfname,
                                else
                                        elevel = FATAL;
                                ereport(elevel,
-                                               (errmsg("archive file \"%s\" 
has wrong size: %lu instead of %lu",
+                                               (errmsg("archive file \"%s\" 
has wrong size: %lld instead of %lld",
                                                                xlogfname,
-                                                               (unsigned long) 
stat_buf.st_size,
-                                                               (unsigned long) 
expectedSize)));
+                                                               (long long int) 
stat_buf.st_size,
+                                                               (long long int) 
expectedSize)));
                                return false;
                        }
                        else
diff --git a/src/bin/pg_basebackup/pg_receivewal.c 
b/src/bin/pg_basebackup/pg_receivewal.c
index cd05f5fede..cddc896390 100644
--- a/src/bin/pg_basebackup/pg_receivewal.c
+++ b/src/bin/pg_basebackup/pg_receivewal.c
@@ -269,8 +269,8 @@ FindStreamingStart(uint32 *tli)
 
                        if (statbuf.st_size != WalSegSz)
                        {
-                               pg_log_warning("segment file \"%s\" has 
incorrect size %d, skipping",
-                                                          dirent->d_name, 
(int) statbuf.st_size);
+                               pg_log_warning("segment file \"%s\" has 
incorrect size %lld, skipping",
+                                                          dirent->d_name, 
(long long int) statbuf.st_size);
                                continue;
                        }
                }
diff --git a/src/bin/pg_verifybackup/pg_verifybackup.c 
b/src/bin/pg_verifybackup/pg_verifybackup.c
index 20140aa027..bb3733b57e 100644
--- a/src/bin/pg_verifybackup/pg_verifybackup.c
+++ b/src/bin/pg_verifybackup/pg_verifybackup.c
@@ -411,8 +411,8 @@ parse_manifest_file(char *manifest_path, 
manifest_files_hash **ht_p,
                        report_fatal_error("could not read file \"%s\": %m",
                                                           manifest_path);
                else
-                       report_fatal_error("could not read file \"%s\": read %d 
of %zu",
-                                                          manifest_path, rc, 
(size_t) statbuf.st_size);
+                       report_fatal_error("could not read file \"%s\": read %d 
of %lld",
+                                                          manifest_path, rc, 
(long long int) statbuf.st_size);
        }
 
        /* Close the manifest file. */
@@ -638,8 +638,8 @@ verify_backup_file(verifier_context *context, char 
*relpath, char *fullpath)
        if (m->size != sb.st_size)
        {
                report_backup_error(context,
-                                                       "\"%s\" has size %zu on 
disk but size %zu in the manifest",
-                                                       relpath, (size_t) 
sb.st_size, m->size);
+                                                       "\"%s\" has size %lld 
on disk but size %zu in the manifest",
+                                                       relpath, (long long 
int) sb.st_size, m->size);
                m->bad = true;
        }
 
diff --git a/src/fe_utils/archive.c b/src/fe_utils/archive.c
index 1e9d994af6..252dc0fb6a 100644
--- a/src/fe_utils/archive.c
+++ b/src/fe_utils/archive.c
@@ -71,9 +71,9 @@ RestoreArchivedFile(const char *path, const char *xlogfname,
                {
                        if (expectedSize > 0 && stat_buf.st_size != 
expectedSize)
                        {
-                               pg_log_fatal("unexpected file size for \"%s\": 
%lu instead of %lu",
-                                                        xlogfname, (unsigned 
long) stat_buf.st_size,
-                                                        (unsigned long) 
expectedSize);
+                               pg_log_fatal("unexpected file size for \"%s\": 
%lld instead of %lld",
+                                                        xlogfname, (long long 
int) stat_buf.st_size,
+                                                        (long long int) 
expectedSize);
                                exit(1);
                        }
                        else
-- 
2.28.0

Reply via email to