]> granicus.if.org Git - postgresql/commitdiff
Fix bugs in exec.c that prevented pg_upgrade working in Windows.
authorAndrew Dunstan <andrew@dunslane.net>
Mon, 3 Sep 2012 19:31:26 +0000 (15:31 -0400)
committerAndrew Dunstan <andrew@dunslane.net>
Mon, 3 Sep 2012 19:31:26 +0000 (15:31 -0400)
Backpatch to 9.2 - code before that is quite different and should
not have these defects.

contrib/pg_upgrade/exec.c

index c75d9dbcc9722ccb69be626110228205e5e9e1c0..ac46a9b93693534b07b077350c0abfcc308a616f 100644 (file)
@@ -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;
 }