diff options
author | Andrew Dunstan <andrew@dunslane.net> | 2011-04-28 19:58:49 -0400 |
---|---|---|
committer | Andrew Dunstan <andrew@dunslane.net> | 2011-04-28 19:58:49 -0400 |
commit | c49e4ae1f886e74efb4bc94c09b993098232d5f9 (patch) | |
tree | 2572df19e3ab44d6d14aa28a0d4bc47c6243ac19 | |
parent | ab0ba6e73ae9b3c9956126bdcd3c410238a27244 (diff) | |
download | postgresql-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.c | 42 |
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; /* |