pg_upgrade: properly detect file copy failure on Windows

Previously, file copy failures were ignored on Windows due to an
incorrect return value check.

Report by Manu Joye

Backpatch through 9.1
REL9_1_STABLE
Bruce Momjian 10 years ago
parent 7fe1d1cfbf
commit bdcbc2b471
  1. 6
      contrib/pg_upgrade/file.c
  2. 2
      contrib/pg_upgrade/pg_upgrade.h

@ -38,7 +38,11 @@ copyAndUpdateFile(pageCnvCtx *pageConverter,
{ {
if (pageConverter == NULL) if (pageConverter == NULL)
{ {
if (pg_copy_file(src, dst, force) == -1) #ifndef WIN32
if (copy_file(src, dst, force) == -1)
#else
if (CopyFile(src, dst, force) == 0)
#endif
return getErrorText(errno); return getErrorText(errno);
else else
return NULL; return NULL;

@ -35,7 +35,6 @@
#define DB_DUMP_FILE "pg_upgrade_dump_db.sql" #define DB_DUMP_FILE "pg_upgrade_dump_db.sql"
#ifndef WIN32 #ifndef WIN32
#define pg_copy_file copy_file
#define pg_mv_file rename #define pg_mv_file rename
#define pg_link_file link #define pg_link_file link
#define PATH_SEPARATOR '/' #define PATH_SEPARATOR '/'
@ -43,7 +42,6 @@
#define RMDIR_CMD "rm -rf" #define RMDIR_CMD "rm -rf"
#define SCRIPT_EXT "sh" #define SCRIPT_EXT "sh"
#else #else
#define pg_copy_file CopyFile
#define pg_mv_file pgrename #define pg_mv_file pgrename
#define pg_link_file win32_pghardlink #define pg_link_file win32_pghardlink
#define sleep(x) Sleep(x * 1000) #define sleep(x) Sleep(x * 1000)

Loading…
Cancel
Save