From c49e4ae1f886e74efb4bc94c09b993098232d5f9 Mon Sep 17 00:00:00 2001 From: Andrew Dunstan 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 f9222b3538..3db57ad3cb 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; /*