From 29278ad33a5c6861ba6b955c411b670ce3a7f493 Mon Sep 17 00:00:00 2001
From: Aleksander Alekseev <aleksander@timescale.com>
Date: Mon, 21 Mar 2022 13:37:35 +0300
Subject: [PATCH v3 2/2] Remove workarounds to format int64's in pg_checksums.c

Now we can rely on %lld and %llu to be portable, so we can use those in order
to reduce code verbosity. The patch also modifies the corresponding .po files.

Author: Aleksander Alekseev <aleksander@timescale.com>
Author:	Japin Li <japinli@hotmail.com>
Reviewed-by: Aleksander Alekseev, Japin Li
Discussion: https://postgr.es/m/CAJ7c6TMSKi3Xs8h5MP38XOnQQpBLazJvVxVfPn%2B%2BroitDJcR7g%40mail.gmail.com
---
 src/bin/pg_checksums/pg_checksums.c | 27 ++++++++-------------------
 src/bin/pg_checksums/po/cs.po       |  8 ++++----
 src/bin/pg_checksums/po/de.po       |  8 ++++----
 src/bin/pg_checksums/po/el.po       |  8 ++++----
 src/bin/pg_checksums/po/es.po       |  8 ++++----
 src/bin/pg_checksums/po/fr.po       |  8 ++++----
 src/bin/pg_checksums/po/ja.po       |  8 ++++----
 src/bin/pg_checksums/po/ko.po       |  8 ++++----
 src/bin/pg_checksums/po/ru.po       |  8 ++++----
 src/bin/pg_checksums/po/sv.po       |  8 ++++----
 src/bin/pg_checksums/po/tr.po       |  8 ++++----
 src/bin/pg_checksums/po/uk.po       |  8 ++++----
 src/bin/pg_checksums/po/zh_CN.po    |  6 +++---
 13 files changed, 55 insertions(+), 66 deletions(-)

diff --git a/src/bin/pg_checksums/pg_checksums.c b/src/bin/pg_checksums/pg_checksums.c
index 7e69475947..8509bd15e8 100644
--- a/src/bin/pg_checksums/pg_checksums.c
+++ b/src/bin/pg_checksums/pg_checksums.c
@@ -132,8 +132,6 @@ static void
 progress_report(bool finished)
 {
 	int			percent;
-	char		total_size_str[32];
-	char		current_size_str[32];
 	pg_time_t	now;
 
 	Assert(showprogress);
@@ -152,18 +150,9 @@ progress_report(bool finished)
 	/* Calculate current percentage of size done */
 	percent = total_size ? (int) ((current_size) * 100 / total_size) : 0;
 
-	/*
-	 * Separate step to keep platform-dependent format code out of
-	 * translatable strings.  And we only test for INT64_FORMAT availability
-	 * in snprintf, not fprintf.
-	 */
-	snprintf(total_size_str, sizeof(total_size_str), INT64_FORMAT,
-			 total_size / (1024 * 1024));
-	snprintf(current_size_str, sizeof(current_size_str), INT64_FORMAT,
-			 current_size / (1024 * 1024));
-
-	fprintf(stderr, _("%*s/%s MB (%d%%) computed"),
-			(int) strlen(current_size_str), current_size_str, total_size_str,
+	fprintf(stderr, _("%lld/%lld MB (%d%%) computed"),
+			(long long)(current_size / (1024 * 1024)),
+			(long long)(total_size / (1024 * 1024)),
 			percent);
 
 	/*
@@ -657,11 +646,11 @@ main(int argc, char *argv[])
 			progress_report(true);
 
 		printf(_("Checksum operation completed\n"));
-		printf(_("Files scanned:   %s\n"), psprintf(INT64_FORMAT, files_scanned));
-		printf(_("Blocks scanned:  %s\n"), psprintf(INT64_FORMAT, blocks_scanned));
+		printf(_("Files scanned:   %lld\n"), (long long)files_scanned);
+		printf(_("Blocks scanned:  %lld\n"), (long long)blocks_scanned);
 		if (mode == PG_MODE_CHECK)
 		{
-			printf(_("Bad checksums:  %s\n"), psprintf(INT64_FORMAT, badblocks));
+			printf(_("Bad checksums:  %lld\n"), (long long)badblocks);
 			printf(_("Data checksum version: %u\n"), ControlFile->data_checksum_version);
 
 			if (badblocks > 0)
@@ -669,8 +658,8 @@ main(int argc, char *argv[])
 		}
 		else if (mode == PG_MODE_ENABLE)
 		{
-			printf(_("Files written:  %s\n"), psprintf(INT64_FORMAT, files_written));
-			printf(_("Blocks written: %s\n"), psprintf(INT64_FORMAT, blocks_written));
+			printf(_("Files written:  %lld\n"), (long long)files_written);
+			printf(_("Blocks written: %lld\n"), (long long)blocks_written);
 		}
 	}
 
diff --git a/src/bin/pg_checksums/po/cs.po b/src/bin/pg_checksums/po/cs.po
index df56be82bb..071bdc17a5 100644
--- a/src/bin/pg_checksums/po/cs.po
+++ b/src/bin/pg_checksums/po/cs.po
@@ -135,8 +135,8 @@ msgstr "%s domácí stránka: <%s>\n"
 
 #: pg_checksums.c:161
 #, c-format
-msgid "%*s/%s MB (%d%%) computed"
-msgstr "%*s/%s MB (%d%%) zpracováno"
+msgid "%lld/%lld MB (%d%%) computed"
+msgstr "%lld/%lld MB (%d%%) zpracováno"
 
 #: pg_checksums.c:207
 #, c-format
@@ -280,8 +280,8 @@ msgstr "Přečtené datové bloky: %s\n"
 
 #: pg_checksums.c:637
 #, c-format
-msgid "Bad checksums:  %s\n"
-msgstr "Chybné kontrolní součty:  %s\n"
+msgid "Bad checksums:  %lld\n"
+msgstr "Chybné kontrolní součty:  %lld\n"
 
 #: pg_checksums.c:638 pg_checksums.c:665
 #, c-format
diff --git a/src/bin/pg_checksums/po/de.po b/src/bin/pg_checksums/po/de.po
index d30fb2bd55..2b876c722c 100644
--- a/src/bin/pg_checksums/po/de.po
+++ b/src/bin/pg_checksums/po/de.po
@@ -136,8 +136,8 @@ msgstr "%s Homepage: <%s>\n"
 
 #: pg_checksums.c:161
 #, c-format
-msgid "%*s/%s MB (%d%%) computed"
-msgstr "%*s/%s MB (%d%%) berechnet"
+msgid "%lld/%lld MB (%d%%) computed"
+msgstr "%ldd/%lld MB (%d%%) berechnet"
 
 #: pg_checksums.c:207
 #, c-format
@@ -281,8 +281,8 @@ msgstr "Überprüfte Blöcke:      %s\n"
 
 #: pg_checksums.c:637
 #, c-format
-msgid "Bad checksums:  %s\n"
-msgstr "Falsche Prüfsummen:     %s\n"
+msgid "Bad checksums:  %lld\n"
+msgstr "Falsche Prüfsummen:     %lld\n"
 
 #: pg_checksums.c:638 pg_checksums.c:665
 #, c-format
diff --git a/src/bin/pg_checksums/po/el.po b/src/bin/pg_checksums/po/el.po
index cb72eabcbe..994abe40e0 100644
--- a/src/bin/pg_checksums/po/el.po
+++ b/src/bin/pg_checksums/po/el.po
@@ -135,8 +135,8 @@ msgstr "%s αρχική σελίδα: <%s>\n"
 
 #: pg_checksums.c:161
 #, c-format
-msgid "%*s/%s MB (%d%%) computed"
-msgstr "%*s/%s MB (%d%%) Υπολογίζεται"
+msgid "%lld/%ldd MB (%d%%) computed"
+msgstr "%ldd/%lld MB (%d%%) Υπολογίζεται"
 
 #: pg_checksums.c:207
 #, c-format
@@ -280,8 +280,8 @@ msgstr "Μπλοκ που σαρώθηκαν: %s\n"
 
 #: pg_checksums.c:644
 #, c-format
-msgid "Bad checksums:  %s\n"
-msgstr "Εσφαλμένα αθροίσματα ελέγχου: %s\n"
+msgid "Bad checksums:  %lld\n"
+msgstr "Εσφαλμένα αθροίσματα ελέγχου: %lld\n"
 
 #: pg_checksums.c:645 pg_checksums.c:672
 #, c-format
diff --git a/src/bin/pg_checksums/po/es.po b/src/bin/pg_checksums/po/es.po
index 3b7e35c8cd..4f3efe76eb 100644
--- a/src/bin/pg_checksums/po/es.po
+++ b/src/bin/pg_checksums/po/es.po
@@ -138,8 +138,8 @@ msgstr "Sitio web de %s: <%s>\n"
 
 #: pg_checksums.c:161
 #, c-format
-msgid "%*s/%s MB (%d%%) computed"
-msgstr "%*s/%s MB (%d%%) calculado"
+msgid "%ldd/%lld MB (%d%%) computed"
+msgstr "%lld/%lld MB (%d%%) calculado"
 
 #: pg_checksums.c:207
 #, c-format
@@ -283,8 +283,8 @@ msgstr "Bloques recorridos:    %s\n"
 
 #: pg_checksums.c:644
 #, c-format
-msgid "Bad checksums:  %s\n"
-msgstr "Checksums incorrectos: %s\n"
+msgid "Bad checksums:  %lld\n"
+msgstr "Checksums incorrectos: %lld\n"
 
 #: pg_checksums.c:645 pg_checksums.c:672
 #, c-format
diff --git a/src/bin/pg_checksums/po/fr.po b/src/bin/pg_checksums/po/fr.po
index 40633c5166..02523287fb 100644
--- a/src/bin/pg_checksums/po/fr.po
+++ b/src/bin/pg_checksums/po/fr.po
@@ -135,8 +135,8 @@ msgstr "page d'accueil de %s : <%s>\n"
 
 #: pg_checksums.c:161
 #, c-format
-msgid "%*s/%s MB (%d%%) computed"
-msgstr "%*s/%s Mo (%d%%) traités"
+msgid "%lld/%lld MB (%d%%) computed"
+msgstr "%lld/%ldd Mo (%d%%) traités"
 
 #: pg_checksums.c:207
 #, c-format
@@ -280,8 +280,8 @@ msgstr "Blocs parcourus : %s\n"
 
 #: pg_checksums.c:637
 #, c-format
-msgid "Bad checksums:  %s\n"
-msgstr "Mauvaises sommes de contrôle : %s\n"
+msgid "Bad checksums:  %lld\n"
+msgstr "Mauvaises sommes de contrôle : %lld\n"
 
 #: pg_checksums.c:638 pg_checksums.c:665
 #, c-format
diff --git a/src/bin/pg_checksums/po/ja.po b/src/bin/pg_checksums/po/ja.po
index f43465a0e4..f4a1820438 100644
--- a/src/bin/pg_checksums/po/ja.po
+++ b/src/bin/pg_checksums/po/ja.po
@@ -133,8 +133,8 @@ msgstr "%s ホームページ: <%s>\n"
 
 #: pg_checksums.c:161
 #, c-format
-msgid "%*s/%s MB (%d%%) computed"
-msgstr "%*s/%s MB (%d%%) 完了"
+msgid "%lld/%lld MB (%d%%) computed"
+msgstr "%lld/%lld MB (%d%%) 完了"
 
 #: pg_checksums.c:207
 #, c-format
@@ -278,8 +278,8 @@ msgstr "スキャンしたブロック数: %s\n"
 
 #: pg_checksums.c:637
 #, c-format
-msgid "Bad checksums:  %s\n"
-msgstr "不正なチェックサム数:  %s\n"
+msgid "Bad checksums:  %lld\n"
+msgstr "不正なチェックサム数:  %lld\n"
 
 #: pg_checksums.c:638 pg_checksums.c:665
 #, c-format
diff --git a/src/bin/pg_checksums/po/ko.po b/src/bin/pg_checksums/po/ko.po
index ff767cfc7d..a8edd966e5 100644
--- a/src/bin/pg_checksums/po/ko.po
+++ b/src/bin/pg_checksums/po/ko.po
@@ -141,8 +141,8 @@ msgstr "%s 홈페이지: <%s>\n"
 
 #: pg_checksums.c:161
 #, c-format
-msgid "%*s/%s MB (%d%%) computed"
-msgstr "%*s/%s MB (%d%%) 계산됨"
+msgid "%lld/%lld MB (%d%%) computed"
+msgstr "%lld/%lld MB (%d%%) 계산됨"
 
 #: pg_checksums.c:207
 #, c-format
@@ -294,8 +294,8 @@ msgstr "조사한 블럭수: %s\n"
 
 #: pg_checksums.c:637
 #, c-format
-msgid "Bad checksums:  %s\n"
-msgstr "잘못된 체크섬: %s\n"
+msgid "Bad checksums:  %lld\n"
+msgstr "잘못된 체크섬: %lld\n"
 
 #: pg_checksums.c:638 pg_checksums.c:665
 #, c-format
diff --git a/src/bin/pg_checksums/po/ru.po b/src/bin/pg_checksums/po/ru.po
index 8e48580af0..a533279843 100644
--- a/src/bin/pg_checksums/po/ru.po
+++ b/src/bin/pg_checksums/po/ru.po
@@ -141,8 +141,8 @@ msgstr "Домашняя страница %s: <%s>\n"
 
 #: pg_checksums.c:161
 #, c-format
-msgid "%*s/%s MB (%d%%) computed"
-msgstr "%*s/%s МБ (%d%%) обработано"
+msgid "%lld/%lld MB (%d%%) computed"
+msgstr "%lld/%lld МБ (%d%%) обработано"
 
 #: pg_checksums.c:207
 #, c-format
@@ -294,8 +294,8 @@ msgstr "Просканировано блоков: %s\n"
 
 #: pg_checksums.c:637
 #, c-format
-msgid "Bad checksums:  %s\n"
-msgstr "Неверные контрольные суммы: %s\n"
+msgid "Bad checksums:  %lld\n"
+msgstr "Неверные контрольные суммы: %lld\n"
 
 #: pg_checksums.c:638 pg_checksums.c:665
 #, c-format
diff --git a/src/bin/pg_checksums/po/sv.po b/src/bin/pg_checksums/po/sv.po
index ce92a966e3..8b2f422531 100644
--- a/src/bin/pg_checksums/po/sv.po
+++ b/src/bin/pg_checksums/po/sv.po
@@ -135,8 +135,8 @@ msgstr "hemsida för %s: <%s>\n"
 
 #: pg_checksums.c:161
 #, c-format
-msgid "%*s/%s MB (%d%%) computed"
-msgstr "%*s/%s MB (%d%%) beräknad"
+msgid "%lld/%lld MB (%d%%) computed"
+msgstr "%lld/%lld MB (%d%%) beräknad"
 
 #: pg_checksums.c:204
 #, c-format
@@ -280,8 +280,8 @@ msgstr "Skannade block:           %s\n"
 
 #: pg_checksums.c:637
 #, c-format
-msgid "Bad checksums:  %s\n"
-msgstr "Felaktiga kontrollsummor: %s\n"
+msgid "Bad checksums:  %lld\n"
+msgstr "Felaktiga kontrollsummor: %lld\n"
 
 #: pg_checksums.c:638 pg_checksums.c:665
 #, c-format
diff --git a/src/bin/pg_checksums/po/tr.po b/src/bin/pg_checksums/po/tr.po
index 3bd40db784..b07e517aa3 100644
--- a/src/bin/pg_checksums/po/tr.po
+++ b/src/bin/pg_checksums/po/tr.po
@@ -131,8 +131,8 @@ msgstr "Hataları <pgsql-bugs@lists.postgresql.org> adresine bildirebilirsiniz.\
 
 #: pg_checksums.c:149
 #, c-format
-msgid "%*s/%s MB (%d%%) computed"
-msgstr "%*s/%s MB (%d%%) hesaplandı"
+msgid "%lld/%lld MB (%d%%) computed"
+msgstr "%lld/%lld MB (%d%%) hesaplandı"
 
 #: pg_checksums.c:186
 #, c-format
@@ -266,8 +266,8 @@ msgstr "Taranan bloklar: %s\n"
 
 #: pg_checksums.c:563
 #, c-format
-msgid "Bad checksums:  %s\n"
-msgstr "Yanlış sağlama toplamları: %s\n"
+msgid "Bad checksums:  %lld\n"
+msgstr "Yanlış sağlama toplamları: %lld\n"
 
 #: pg_checksums.c:564 pg_checksums.c:591
 #, c-format
diff --git a/src/bin/pg_checksums/po/uk.po b/src/bin/pg_checksums/po/uk.po
index 15bfe6a47c..f005db85a9 100644
--- a/src/bin/pg_checksums/po/uk.po
+++ b/src/bin/pg_checksums/po/uk.po
@@ -124,8 +124,8 @@ msgstr "Домашня сторінка %s: <%s>\n"
 
 #: pg_checksums.c:161
 #, c-format
-msgid "%*s/%s MB (%d%%) computed"
-msgstr "%*s/%s MB (%d%%) обчислено"
+msgid "%lld/%lld MB (%d%%) computed"
+msgstr "%lld/%lld MB (%d%%) обчислено"
 
 #: pg_checksums.c:207
 #, c-format
@@ -269,8 +269,8 @@ msgstr "Блоків відскановано: %s\n"
 
 #: pg_checksums.c:637
 #, c-format
-msgid "Bad checksums:  %s\n"
-msgstr "Неправильні контрольні суми: %s\n"
+msgid "Bad checksums:  %lld\n"
+msgstr "Неправильні контрольні суми: %lld\n"
 
 #: pg_checksums.c:638 pg_checksums.c:665
 #, c-format
diff --git a/src/bin/pg_checksums/po/zh_CN.po b/src/bin/pg_checksums/po/zh_CN.po
index 012872b87a..5c621fc013 100644
--- a/src/bin/pg_checksums/po/zh_CN.po
+++ b/src/bin/pg_checksums/po/zh_CN.po
@@ -134,8 +134,8 @@ msgstr "%s 主页: <%s>\n"
 
 #: pg_checksums.c:161
 #, c-format
-msgid "%*s/%s MB (%d%%) computed"
-msgstr "已计算%*s/%s MB (%d%%)"
+msgid "%lld/%lld MB (%d%%) computed"
+msgstr "已计算%lld/%lld MB (%d%%)"
 
 #: pg_checksums.c:204
 #, c-format
@@ -279,7 +279,7 @@ msgstr "扫描的块: %s\n"
 
 #: pg_checksums.c:637
 #, c-format
-msgid "Bad checksums:  %s\n"
+msgid "Bad checksums:  %lld\n"
 msgstr "坏校验和:  %s\n"
 
 #: pg_checksums.c:638 pg_checksums.c:665
-- 
2.35.1

