From: Andrew Dunstan Date: Mon, 3 Sep 2012 19:31:26 +0000 (-0400) Subject: Fix bugs in exec.c that prevented pg_upgrade working in Windows. X-Git-Tag: REL9_3_BETA1~956 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=6259678f8f5443e9d396e20418448b247c6948dd;p=postgresql Fix bugs in exec.c that prevented pg_upgrade working in Windows. Backpatch to 9.2 - code before that is quite different and should not have these defects. --- diff --git a/contrib/pg_upgrade/exec.c b/contrib/pg_upgrade/exec.c index c75d9dbcc9..ac46a9b936 100644 --- a/contrib/pg_upgrade/exec.c +++ b/contrib/pg_upgrade/exec.c @@ -52,7 +52,7 @@ exec_prog(const char *log_file, const char *opt_log_file, old_umask = umask(S_IRWXG | S_IRWXO); - written = strlcpy(cmd, SYSTEMQUOTE, strlen(SYSTEMQUOTE)); + written = strlcpy(cmd, SYSTEMQUOTE, sizeof(cmd)); va_start(ap, fmt); written += vsnprintf(cmd + written, MAXCMDLEN - written, fmt, ap); va_end(ap); @@ -95,10 +95,16 @@ exec_prog(const char *log_file, const char *opt_log_file, log_file); } +#ifndef WIN32 + /* + * Can't do this on Windows, postmaster will still hold the log file + * open if the command was "pg_ctl start". + */ if ((log = fopen_priv(log_file, "a+")) == NULL) pg_log(PG_FATAL, "cannot write to log file %s\n", log_file); fprintf(log, "\n\n"); fclose(log); +#endif return result == 0; }