@@ -821,8 +821,7 @@ FindEndOfXLOG(void)
821821exit (1 );
822822}
823823
824- errno = 0 ;
825- while ((xlde = readdir (xldir ))!= NULL )
824+ while (errno = 0 , (xlde = readdir (xldir ))!= NULL )
826825{
827826if (strlen (xlde -> d_name )== 24 &&
828827strspn (xlde -> d_name ,"0123456789ABCDEF" )== 24 )
@@ -844,25 +843,27 @@ FindEndOfXLOG(void)
844843if (segno > newXlogSegNo )
845844newXlogSegNo = segno ;
846845}
847- errno = 0 ;
848846}
849847
850848#ifdef WIN32
851- /*
852- * This fix is in mingw cvs (runtime/mingwex/dirent.c rev 1.4), but not in
853- * released version
854- */
849+ /* Bug in old Mingw dirent.c; fixed in mingw-runtime-3.2, 2003-10-10 */
855850if (GetLastError ()== ERROR_NO_MORE_FILES )
856851errno = 0 ;
857852#endif
858853
859854if (errno )
860855{
861- fprintf (stderr ,_ ("%s: could not read from directory \"%s\": %s\n" ),
856+ fprintf (stderr ,_ ("%s: could not read directory \"%s\": %s\n" ),
857+ progname ,XLOGDIR ,strerror (errno ));
858+ exit (1 );
859+ }
860+
861+ if (closedir (xldir ))
862+ {
863+ fprintf (stderr ,_ ("%s: could not close directory \"%s\": %s\n" ),
862864progname ,XLOGDIR ,strerror (errno ));
863865exit (1 );
864866}
865- closedir (xldir );
866867
867868/*
868869 * Finally, convert to new xlog seg size, and advance by one to ensure we
@@ -892,8 +893,7 @@ KillExistingXLOG(void)
892893exit (1 );
893894}
894895
895- errno = 0 ;
896- while ((xlde = readdir (xldir ))!= NULL )
896+ while (errno = 0 , (xlde = readdir (xldir ))!= NULL )
897897{
898898if (strlen (xlde -> d_name )== 24 &&
899899strspn (xlde -> d_name ,"0123456789ABCDEF" )== 24 )
@@ -906,25 +906,27 @@ KillExistingXLOG(void)
906906exit (1 );
907907}
908908}
909- errno = 0 ;
910909}
911910
912911#ifdef WIN32
913- /*
914- * This fix is in mingw cvs (runtime/mingwex/dirent.c rev 1.4), but not in
915- * released version
916- */
912+ /* Bug in old Mingw dirent.c; fixed in mingw-runtime-3.2, 2003-10-10 */
917913if (GetLastError ()== ERROR_NO_MORE_FILES )
918914errno = 0 ;
919915#endif
920916
921917if (errno )
922918{
923- fprintf (stderr ,_ ("%s: could not read from directory \"%s\": %s\n" ),
919+ fprintf (stderr ,_ ("%s: could not read directory \"%s\": %s\n" ),
920+ progname ,XLOGDIR ,strerror (errno ));
921+ exit (1 );
922+ }
923+
924+ if (closedir (xldir ))
925+ {
926+ fprintf (stderr ,_ ("%s: could not close directory \"%s\": %s\n" ),
924927progname ,XLOGDIR ,strerror (errno ));
925928exit (1 );
926929}
927- closedir (xldir );
928930}
929931
930932
@@ -948,8 +950,7 @@ KillExistingArchiveStatus(void)
948950exit (1 );
949951}
950952
951- errno = 0 ;
952- while ((xlde = readdir (xldir ))!= NULL )
953+ while (errno = 0 , (xlde = readdir (xldir ))!= NULL )
953954{
954955if (strspn (xlde -> d_name ,"0123456789ABCDEF" )== 24 &&
955956(strcmp (xlde -> d_name + 24 ,".ready" )== 0 ||
@@ -963,25 +964,27 @@ KillExistingArchiveStatus(void)
963964exit (1 );
964965}
965966}
966- errno = 0 ;
967967}
968968
969969#ifdef WIN32
970- /*
971- * This fix is in mingw cvs (runtime/mingwex/dirent.c rev 1.4), but not in
972- * released version
973- */
970+ /* Bug in old Mingw dirent.c; fixed in mingw-runtime-3.2, 2003-10-10 */
974971if (GetLastError ()== ERROR_NO_MORE_FILES )
975972errno = 0 ;
976973#endif
977974
978975if (errno )
979976{
980- fprintf (stderr ,_ ("%s: could not read from directory \"%s\": %s\n" ),
977+ fprintf (stderr ,_ ("%s: could not read directory \"%s\": %s\n" ),
978+ progname ,ARCHSTATDIR ,strerror (errno ));
979+ exit (1 );
980+ }
981+
982+ if (closedir (xldir ))
983+ {
984+ fprintf (stderr ,_ ("%s: could not close directory \"%s\": %s\n" ),
981985progname ,ARCHSTATDIR ,strerror (errno ));
982986exit (1 );
983987}
984- closedir (xldir );
985988}
986989
987990