Add ERROR_NO_MORE_FILES workaround to check_data_dir(). This may or
authorTom Lane
Tue, 2 Aug 2005 15:16:27 +0000 (15:16 +0000)
committerTom Lane
Tue, 2 Aug 2005 15:16:27 +0000 (15:16 +0000)
may not be obsolete, but since every other readdir loop in our code
has it, I think this should too.

src/bin/initdb/initdb.c

index 46cb106b1343c684aadb010170616bdb9972bedf..5c77a87005cd1ea11dfe84de829186d45b1564a1 100644 (file)
@@ -42,7 +42,7 @@
  * Portions Copyright (c) 1994, Regents of the University of California
  * Portions taken from FreeBSD.
  *
- * $PostgreSQL: pgsql/src/bin/initdb/initdb.c,v 1.93 2005/07/25 04:52:31 tgl Exp $
+ * $PostgreSQL: pgsql/src/bin/initdb/initdb.c,v 1.94 2005/08/02 15:16:27 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -930,7 +930,8 @@ check_data_dir(void)
 
    while ((file = readdir(chkdir)) != NULL)
    {
-       if (strcmp(".", file->d_name) == 0 || strcmp("..", file->d_name) == 0)
+       if (strcmp(".", file->d_name) == 0 ||
+           strcmp("..", file->d_name) == 0)
        {
            /* skip this and parent directory */
            continue;
@@ -942,6 +943,15 @@ check_data_dir(void)
        }
    }
 
+#ifdef WIN32
+   /*
+    * This fix is in mingw cvs (runtime/mingwex/dirent.c rev 1.4), but
+    * not in released version
+    */
+   if (GetLastError() == ERROR_NO_MORE_FILES)
+       errno = 0;
+#endif
+
    closedir(chkdir);
 
    if (errno != 0)