From c49e4ae1f886e74efb4bc94c09b993098232d5f9 Mon Sep 17 00:00:00 2001
From: Andrew Dunstan <andrew@dunslane.net>
Date: Thu, 28 Apr 2011 19:58:49 -0400
Subject: [PATCH] Use non-literal format for possibly non-standard strftime
 formats.

Per recent -hackers discussion. The formats in question are %G and %V,
and cause warnings on MinGW at least. We assume the ecpg application
knows what it's doing if it passes these formats to the library.
---
 src/interfaces/ecpg/pgtypeslib/timestamp.c | 42 +++++++++++++---------
 1 file changed, 26 insertions(+), 16 deletions(-)

diff --git a/src/interfaces/ecpg/pgtypeslib/timestamp.c b/src/interfaces/ecpg/pgtypeslib/timestamp.c
index f9222b35387..3db57ad3cb0 100644
--- a/src/interfaces/ecpg/pgtypeslib/timestamp.c
+++ b/src/interfaces/ecpg/pgtypeslib/timestamp.c
@@ -501,17 +501,22 @@ dttofmtasc_replace(timestamp * ts, date dDate, int dow, struct tm * tm,
 					 * 4-digit year corresponding to the ISO week number.
 					 */
 				case 'G':
-					tm->tm_mon -= 1;
-					i = strftime(q, *pstr_len, "%G", tm);
-					if (i == 0)
-						return -1;
-					while (*q)
 					{
-						q++;
-						(*pstr_len)--;
+						/* Keep compiler quiet - Don't use a literal format */
+						const char *fmt = "%G"; 
+
+						tm->tm_mon -= 1;
+						i = strftime(q, *pstr_len, fmt, tm);
+						if (i == 0)
+							return -1;
+						while (*q)
+						{
+							q++;
+							(*pstr_len)--;
+						}
+						tm->tm_mon += 1;
+						replace_type = PGTYPES_TYPE_NOTHING;
 					}
-					tm->tm_mon += 1;
-					replace_type = PGTYPES_TYPE_NOTHING;
 					break;
 
 					/*
@@ -682,15 +687,20 @@ dttofmtasc_replace(timestamp * ts, date dDate, int dow, struct tm * tm,
 					 * decimal number.
 					 */
 				case 'V':
-					i = strftime(q, *pstr_len, "%V", tm);
-					if (i == 0)
-						return -1;
-					while (*q)
 					{
-						q++;
-						(*pstr_len)--;
+						/* Keep compiler quiet - Don't use a literal format */
+						const char *fmt = "%V"; 
+
+						i = strftime(q, *pstr_len, fmt, tm);
+						if (i == 0)
+							return -1;
+						while (*q)
+						{
+							q++;
+							(*pstr_len)--;
+						}
+						replace_type = PGTYPES_TYPE_NOTHING;
 					}
-					replace_type = PGTYPES_TYPE_NOTHING;
 					break;
 
 					/*
-- 
GitLab