From 8bbf227ad742ce83e0665604ae099f0d9af70aa8 Mon Sep 17 00:00:00 2001 From: Bruce Momjian Date: Wed, 10 Aug 2005 19:52:37 +0000 Subject: [PATCH] Document why Win32 loops over rename/unlink are necessary. --- src/port/dirmod.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/port/dirmod.c b/src/port/dirmod.c index c2863e205f..e345dafc8b 100644 --- a/src/port/dirmod.c +++ b/src/port/dirmod.c @@ -10,7 +10,7 @@ * Win32 (NT, Win2k, XP). replace() doesn't work on Win95/98/Me. * * IDENTIFICATION - * $PostgreSQL: pgsql/src/port/dirmod.c,v 1.38 2005/08/02 15:14:47 tgl Exp $ + * $PostgreSQL: pgsql/src/port/dirmod.c,v 1.39 2005/08/10 19:52:37 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -118,7 +118,11 @@ pgrename(const char *from, const char *to) { int loops = 0; - /* Is this loop even necessary now that we have win32_open()? */ + /* + * We need these loops because even though PostgreSQL uses flags + * that allow rename while the file is open, other applications + * might have these files open without those flags. + */ #if defined(WIN32) && !defined(__CYGWIN__) while (!MoveFileEx(from, to, MOVEFILE_REPLACE_EXISTING)) #endif @@ -164,7 +168,11 @@ pgunlink(const char *path) { int loops = 0; - /* Is this loop even necessary now that we have win32_open()? */ + /* + * We need these loops because even though PostgreSQL uses flags + * that allow unlink while the file is open, other applications + * might have these files open without those flags. + */ while (unlink(path)) { if (errno != EACCES)