@@ -765,8 +765,7 @@ FindEndOfXLOG(void)
765765exit (1 );
766766}
767767
768- errno = 0 ;
769- while ((xlde = readdir (xldir ))!= NULL )
768+ while (errno = 0 , (xlde = readdir (xldir ))!= NULL )
770769{
771770if (strlen (xlde -> d_name )== 24 &&
772771strspn (xlde -> d_name ,"0123456789ABCDEF" )== 24 )
@@ -788,25 +787,27 @@ FindEndOfXLOG(void)
788787if (segno > newXlogSegNo )
789788newXlogSegNo = segno ;
790789}
791- errno = 0 ;
792790}
793- #ifdef WIN32
794791
795- /*
796- * This fix is in mingw cvs (runtime/mingwex/dirent.c rev 1.4), but not in
797- * released version
798- */
792+ #ifdef WIN32
793+ /* Bug in old Mingw dirent.c; fixed in mingw-runtime-3.2, 2003-10-10 */
799794if (GetLastError ()== ERROR_NO_MORE_FILES )
800795errno = 0 ;
801796#endif
802797
803798if (errno )
804799{
805- fprintf (stderr ,_ ("%s: could not read from directory \"%s\": %s\n" ),
800+ fprintf (stderr ,_ ("%s: could not read directory \"%s\": %s\n" ),
801+ progname ,XLOGDIR ,strerror (errno ));
802+ exit (1 );
803+ }
804+
805+ if (closedir (xldir ))
806+ {
807+ fprintf (stderr ,_ ("%s: could not close directory \"%s\": %s\n" ),
806808progname ,XLOGDIR ,strerror (errno ));
807809exit (1 );
808810}
809- closedir (xldir );
810811
811812/*
812813 * Finally, convert to new xlog seg size, and advance by one to ensure we
@@ -836,8 +837,7 @@ KillExistingXLOG(void)
836837exit (1 );
837838}
838839
839- errno = 0 ;
840- while ((xlde = readdir (xldir ))!= NULL )
840+ while (errno = 0 , (xlde = readdir (xldir ))!= NULL )
841841{
842842if (strlen (xlde -> d_name )== 24 &&
843843strspn (xlde -> d_name ,"0123456789ABCDEF" )== 24 )
@@ -850,25 +850,27 @@ KillExistingXLOG(void)
850850exit (1 );
851851}
852852}
853- errno = 0 ;
854853}
855- #ifdef WIN32
856854
857- /*
858- * This fix is in mingw cvs (runtime/mingwex/dirent.c rev 1.4), but not in
859- * released version
860- */
855+ #ifdef WIN32
856+ /* Bug in old Mingw dirent.c; fixed in mingw-runtime-3.2, 2003-10-10 */
861857if (GetLastError ()== ERROR_NO_MORE_FILES )
862858errno = 0 ;
863859#endif
864860
865861if (errno )
866862{
867- fprintf (stderr ,_ ("%s: could not read from directory \"%s\": %s\n" ),
863+ fprintf (stderr ,_ ("%s: could not read directory \"%s\": %s\n" ),
864+ progname ,XLOGDIR ,strerror (errno ));
865+ exit (1 );
866+ }
867+
868+ if (closedir (xldir ))
869+ {
870+ fprintf (stderr ,_ ("%s: could not close directory \"%s\": %s\n" ),
868871progname ,XLOGDIR ,strerror (errno ));
869872exit (1 );
870873}
871- closedir (xldir );
872874}
873875
874876
@@ -892,8 +894,7 @@ KillExistingArchiveStatus(void)
892894exit (1 );
893895}
894896
895- errno = 0 ;
896- while ((xlde = readdir (xldir ))!= NULL )
897+ while (errno = 0 , (xlde = readdir (xldir ))!= NULL )
897898{
898899if (strspn (xlde -> d_name ,"0123456789ABCDEF" )== 24 &&
899900(strcmp (xlde -> d_name + 24 ,".ready" )== 0 ||
@@ -907,25 +908,27 @@ KillExistingArchiveStatus(void)
907908exit (1 );
908909}
909910}
910- errno = 0 ;
911911}
912- #ifdef WIN32
913912
914- /*
915- * This fix is in mingw cvs (runtime/mingwex/dirent.c rev 1.4), but not in
916- * released version
917- */
913+ #ifdef WIN32
914+ /* Bug in old Mingw dirent.c; fixed in mingw-runtime-3.2, 2003-10-10 */
918915if (GetLastError ()== ERROR_NO_MORE_FILES )
919916errno = 0 ;
920917#endif
921918
922919if (errno )
923920{
924- fprintf (stderr ,_ ("%s: could not read from directory \"%s\": %s\n" ),
921+ fprintf (stderr ,_ ("%s: could not read directory \"%s\": %s\n" ),
922+ progname ,ARCHSTATDIR ,strerror (errno ));
923+ exit (1 );
924+ }
925+
926+ if (closedir (xldir ))
927+ {
928+ fprintf (stderr ,_ ("%s: could not close directory \"%s\": %s\n" ),
925929progname ,ARCHSTATDIR ,strerror (errno ));
926930exit (1 );
927931}
928- closedir (xldir );
929932}
930933
931934