diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2014-10-26 20:59:21 -0400 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2014-10-26 20:59:21 -0400 |
commit | f455fcfdb8ca3b67373223a4e15648c35e2592a9 (patch) | |
tree | 0a303e28d2b17ed0633eea969f42cc91ebaa14be /src/bin/pg_dump/pg_backup_archiver.c | |
parent | 9711fa06081da230e62fa52147c49ccf7b9ccbe2 (diff) | |
download | postgresql-f455fcfdb8ca3b67373223a4e15648c35e2592a9.tar.gz postgresql-f455fcfdb8ca3b67373223a4e15648c35e2592a9.zip |
Avoid unportable strftime() behavior in pg_dump/pg_dumpall.
Commit ad5d46a4494b0b480a3af246bb4227d9bdadca37 thought that we could
get around the known portability issues of strftime's %Z specifier by
using %z instead. However, that idea seems to have been innocent of
any actual research, as it certainly missed the facts that
(1) %z is not portable to pre-C99 systems, and
(2) %z doesn't actually act differently from %Z on Windows anyway.
Per failures on buildfarm member hamerkop.
While at it, centralize the code defining what strftime format we
want to use in pg_dump; three copies of that string seems a bit much.
Diffstat (limited to 'src/bin/pg_dump/pg_backup_archiver.c')
-rw-r--r-- | src/bin/pg_dump/pg_backup_archiver.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/src/bin/pg_dump/pg_backup_archiver.c b/src/bin/pg_dump/pg_backup_archiver.c index ed28d36e138..1a2ebcb1f48 100644 --- a/src/bin/pg_dump/pg_backup_archiver.c +++ b/src/bin/pg_dump/pg_backup_archiver.c @@ -1047,14 +1047,16 @@ PrintTOCSummary(Archive *AHX, RestoreOptions *ropt) teSection curSection; OutputContext sav; const char *fmtName; - struct tm *tm = localtime(&AH->createDate); char stamp_str[64]; sav = SaveOutput(AH); if (ropt->filename) SetOutput(AH, ropt->filename, 0 /* no compression */ ); - strftime(stamp_str, sizeof(stamp_str), "%Y-%m-%d %H:%M:%S %z", tm); + if (strftime(stamp_str, sizeof(stamp_str), PGDUMP_STRFTIME_FMT, + localtime(&AH->createDate)) == 0) + strcpy(stamp_str, "[unknown]"); + ahprintf(AH, ";\n; Archive created at %s\n", stamp_str); ahprintf(AH, "; dbname: %s\n; TOC Entries: %d\n; Compression: %d\n", AH->archdbname, AH->tocCount, AH->compression); @@ -3544,7 +3546,7 @@ dumpTimestamp(ArchiveHandle *AH, const char *msg, time_t tim) { char buf[64]; - if (strftime(buf, sizeof(buf), "%Y-%m-%d %H:%M:%S %z", localtime(&tim)) != 0) + if (strftime(buf, sizeof(buf), PGDUMP_STRFTIME_FMT, localtime(&tim)) != 0) ahprintf(AH, "-- %s %s\n\n", msg, buf); } |