pg_upgrade: fix CopyFile() on Windows to fail on file existence

Also fix getErrorText() to return the right error string on failure.
This behavior now matches that of other operating systems.

Report by Noah Misch

Backpatch through 9.1
REL9_1_STABLE
Bruce Momjian 10 years ago
parent 6df62ef43e
commit c36064e438
  1. 2
      contrib/pg_upgrade/file.c
  2. 2
      contrib/pg_upgrade/util.c

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

@ -229,6 +229,8 @@ getErrorText(int errNum)
{
#ifdef WIN32
_dosmaperr(GetLastError());
/* _dosmaperr sets errno, so we copy errno here */
errNum = errno;
#endif
return strdup(strerror(errNum));
}

Loading…
Cancel
Save