@@ -63,8 +63,11 @@ exec_prog(const char *log_file, const char *opt_log_file,
6363if (written >=MAXCMDLEN )
6464pg_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 )
6767pg_log (PG_FATAL ,"cannot write to log file %s\n" ,log_file );
68+ #ifdef WIN32
69+ fprintf (log ,"\n\n" );
70+ #endif
6871pg_log (PG_VERBOSE ,"%s\n" ,cmd );
6972fprintf (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 )
104110pg_log (PG_FATAL ,"cannot write to log file %s\n" ,log_file );
105111fprintf (log ,"\n\n" );
106112fclose (log );