aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Dunstan <andrew@dunslane.net>2011-04-28 19:58:49 -0400
committerAndrew Dunstan <andrew@dunslane.net>2011-04-28 19:58:49 -0400
commitc49e4ae1f886e74efb4bc94c09b993098232d5f9 (patch)
tree2572df19e3ab44d6d14aa28a0d4bc47c6243ac19
parentab0ba6e73ae9b3c9956126bdcd3c410238a27244 (diff)
downloadpostgresql-c49e4ae1f886e74efb4bc94c09b993098232d5f9.tar.gz
postgresql-c49e4ae1f886e74efb4bc94c09b993098232d5f9.zip
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.
-rw-r--r--src/interfaces/ecpg/pgtypeslib/timestamp.c42
1 files 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;
/*