]> granicus.if.org Git - postgresql/commitdiff
Suppress timezone (%Z) part of timestamp display when running on Windows,
authorTom Lane <tgl@sss.pgh.pa.us>
Tue, 21 Nov 2006 22:19:46 +0000 (22:19 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Tue, 21 Nov 2006 22:19:46 +0000 (22:19 +0000)
because on that platform strftime produces localized zone names in varying
encodings.  Even though it's only in a comment, this can cause encoding
errors when reloading the dump script.  Per suggestion from Andreas
Seltenreich.  Also, suppress %Z on Windows in the %s escape of
log_line_prefix ... not sure why this one is different from the other two,
but it shouldn't be.

src/backend/utils/error/elog.c
src/bin/pg_dump/pg_backup_archiver.c
src/bin/pg_dump/pg_dumpall.c

index 6b6a9c51cf70a08b3a07c818a8c401af8294c259..714fb9d0ca2110c16947c5d92f328d672245f13f 100644 (file)
@@ -42,7 +42,7 @@
  *
  *
  * IDENTIFICATION
- *       $PostgreSQL: pgsql/src/backend/utils/error/elog.c,v 1.176 2006/11/21 00:49:55 tgl Exp $
+ *       $PostgreSQL: pgsql/src/backend/utils/error/elog.c,v 1.177 2006/11/21 22:19:46 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -1471,7 +1471,7 @@ log_line_prefix(StringInfo buf)
                                        char            strfbuf[128];
 
                                        strftime(strfbuf, sizeof(strfbuf),
-                                       /* Win32 timezone names are too long so don't print them. */
+                                       /* Win32 timezone names are too long so don't print them */
 #ifndef WIN32
                                                         "%Y-%m-%d %H:%M:%S %Z",
 #else
@@ -1487,7 +1487,12 @@ log_line_prefix(StringInfo buf)
                                        char            strfbuf[128];
 
                                        strftime(strfbuf, sizeof(strfbuf),
+                                       /* Win32 timezone names are too long so don't print them */
+#ifndef WIN32
                                                         "%Y-%m-%d %H:%M:%S %Z",
+#else
+                                                        "%Y-%m-%d %H:%M:%S",
+#endif
                                                         localtime(&MyProcPort->session_start));
                                        appendStringInfoString(buf, strfbuf);
                                }
index 272ff5fb9d9265322abdca0d1e0bd89b03a98d96..9b99cb8826f5fc00933ce368bff3a1447da7f87b 100644 (file)
@@ -15,7 +15,7 @@
  *
  *
  * IDENTIFICATION
- *             $PostgreSQL: pgsql/src/bin/pg_dump/pg_backup_archiver.c,v 1.137 2006/10/14 23:07:22 tgl Exp $
+ *             $PostgreSQL: pgsql/src/bin/pg_dump/pg_backup_archiver.c,v 1.138 2006/11/21 22:19:46 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -2780,6 +2780,18 @@ dumpTimestamp(ArchiveHandle *AH, const char *msg, time_t tim)
 {
        char            buf[256];
 
-       if (strftime(buf, 256, "%Y-%m-%d %H:%M:%S %Z", localtime(&tim)) != 0)
+       /*
+        * We don't print the timezone on Win32, because the names are long and
+        * localized, which means they may contain characters in various random
+        * encodings; this has been seen to cause encoding errors when reading
+        * the dump script.
+        */
+       if (strftime(buf, sizeof(buf),
+#ifndef WIN32
+                                "%Y-%m-%d %H:%M:%S %Z",
+#else
+                                "%Y-%m-%d %H:%M:%S",
+#endif
+                                localtime(&tim)) != 0)
                ahprintf(AH, "-- %s %s\n\n", msg, buf);
 }
index d4181839fe9512981e7fca962c8f1d8fa4a1ace2..26b873dafdea5b9dd09ac1b8d76f48bc253825a5 100644 (file)
@@ -6,7 +6,7 @@
  * Portions Copyright (c) 1994, Regents of the University of California
  *
  *
- * $PostgreSQL: pgsql/src/bin/pg_dump/pg_dumpall.c,v 1.84 2006/10/07 20:59:05 petere Exp $
+ * $PostgreSQL: pgsql/src/bin/pg_dump/pg_dumpall.c,v 1.85 2006/11/21 22:19:46 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -1320,6 +1320,18 @@ dumpTimestamp(char *msg)
        char            buf[256];
        time_t          now = time(NULL);
 
-       if (strftime(buf, 256, "%Y-%m-%d %H:%M:%S %Z", localtime(&now)) != 0)
+       /*
+        * We don't print the timezone on Win32, because the names are long and
+        * localized, which means they may contain characters in various random
+        * encodings; this has been seen to cause encoding errors when reading
+        * the dump script.
+        */
+       if (strftime(buf, sizeof(buf),
+#ifndef WIN32
+                                "%Y-%m-%d %H:%M:%S %Z",
+#else
+                                "%Y-%m-%d %H:%M:%S",
+#endif
+                                localtime(&now)) != 0)
                printf("-- %s %s\n\n", msg, buf);
 }