summaryrefslogtreecommitdiff
path: root/src/backend/postmaster/syslogger.c
diff options
context:
space:
mode:
authorAndrew Dunstan <andrew@dunslane.net>2007-07-19 19:13:43 +0000
committerAndrew Dunstan <andrew@dunslane.net>2007-07-19 19:13:43 +0000
commit0e5b4f0e23c18cf62d888294f2b2b055bcdc2327 (patch)
treeb55db877f1c60d7823d082f477c43b1e545164a2 /src/backend/postmaster/syslogger.c
parent177be3f9bbb0c82e77d24c3982f57444b69200c6 (diff)
Only use the pipe chunking protocol if we know the syslogger should
be catching stderr output, and we are not ourselves the syslogger. Otherwise, go directly to stderr. Bug noticed by Tom Lane. Backpatch as far as 8.0.
Diffstat (limited to 'src/backend/postmaster/syslogger.c')
-rw-r--r--src/backend/postmaster/syslogger.c9
1 files changed, 3 insertions, 6 deletions
diff --git a/src/backend/postmaster/syslogger.c b/src/backend/postmaster/syslogger.c
index 0862b81dd7b..d07a6818e43 100644
--- a/src/backend/postmaster/syslogger.c
+++ b/src/backend/postmaster/syslogger.c
@@ -18,7 +18,7 @@
*
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/backend/postmaster/syslogger.c,v 1.32 2007/06/14 01:48:51 adunstan Exp $
+ * $PostgreSQL: pgsql/src/backend/postmaster/syslogger.c,v 1.33 2007/07/19 19:13:43 adunstan Exp $
*
*-------------------------------------------------------------------------
*/
@@ -79,11 +79,12 @@ bool Log_truncate_on_rotation = false;
*/
bool am_syslogger = false;
+extern bool redirection_done;
+
/*
* Private state
*/
static pg_time_t next_rotation_time;
-static bool redirection_done = false;
static bool pipe_eof_seen = false;
static FILE *syslogFile = NULL;
static char *last_file_name = NULL;
@@ -582,14 +583,12 @@ syslogger_forkexec(void)
snprintf(numbuf[bufc++], 32, "%d", fileno(syslogFile));
else
strcpy(numbuf[bufc++], "-1");
- snprintf(numbuf[bufc++], 32, "%d", (int) redirection_done);
#else /* WIN32 */
if (syslogFile != NULL)
snprintf(numbuf[bufc++], 32, "%ld",
_get_osfhandle(_fileno(syslogFile)));
else
strcpy(numbuf[bufc++], "0");
- snprintf(numbuf[bufc++], 32, "%d", (int) redirection_done);
#endif /* WIN32 */
/* Add to the arg list */
@@ -623,7 +622,6 @@ syslogger_parseArgs(int argc, char *argv[])
syslogFile = fdopen(fd, "a");
setvbuf(syslogFile, NULL, LBF_MODE, 0);
}
- redirection_done = (bool) atoi(*argv++);
#else /* WIN32 */
fd = atoi(*argv++);
if (fd != 0)
@@ -635,7 +633,6 @@ syslogger_parseArgs(int argc, char *argv[])
setvbuf(syslogFile, NULL, LBF_MODE, 0);
}
}
- redirection_done = (bool) atoi(*argv++);
#endif /* WIN32 */
}
#endif /* EXEC_BACKEND */