@@ -63,8 +63,11 @@ exec_prog(const char *log_file, const char *opt_log_file,
6363 if (written >= MAXCMDLEN )
6464 pg_log (PG_FATAL , "command too long\n" );
6565
66- if ((log = fopen_priv (log_file , "a+ " )) == NULL )
66+ if ((log = fopen_priv (log_file , "a" )) == NULL )
6767 pg_log (PG_FATAL , "cannot write to log file %s\n" , log_file );
68+ #ifdef WIN32
69+ fprintf (log , "\n\n" );
70+ #endif
6871 pg_log (PG_VERBOSE , "%s\n" , cmd );
6972 fprintf (log , "command: %s\n" , cmd );
7073
@@ -97,10 +100,13 @@ exec_prog(const char *log_file, const char *opt_log_file,
97100
98101#ifndef WIN32
99102 /*
100- * Can't do this on Windows, postmaster will still hold the log file
101- * open if the command was "pg_ctl start".
103+ * We can't do this on Windows because it will keep the "pg_ctl start"
104+ * output filename open until the server stops, so we do the \n\n above
105+ * on that platform. We use a unique filename for "pg_ctl start" that is
106+ * never reused while the server is running, so it works fine. We could
107+ * log these commands to a third file, but that just adds complexity.
102108 */
103- if ((log = fopen_priv (log_file , "a+ " )) == NULL )
109+ if ((log = fopen_priv (log_file , "a" )) == NULL )
104110 pg_log (PG_FATAL , "cannot write to log file %s\n" , log_file );
105111 fprintf (log , "\n\n" );
106112 fclose (log );
0 commit comments