Document why Win32 loops over rename/unlink are necessary.
authorBruce Momjian <bruce@momjian.us>
Wed, 10 Aug 2005 19:52:37 +0000 (19:52 +0000)
committerBruce Momjian <bruce@momjian.us>
Wed, 10 Aug 2005 19:52:37 +0000 (19:52 +0000)
src/port/dirmod.c

index c2863e205f4d25f042e9fc468d8e81a464fb5326..e345dafc8bcd6fe1e8095e5cb210380006193c37 100644 (file)
@@ -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)