@@ -742,8 +742,7 @@ FindEndOfXLOG(void)
742742exit (1 );
743743}
744744
745- errno = 0 ;
746- while ((xlde = readdir (xldir ))!= NULL )
745+ while (errno = 0 , (xlde = readdir (xldir ))!= NULL )
747746{
748747if (strlen (xlde -> d_name )== 24 &&
749748strspn (xlde -> d_name ,"0123456789ABCDEF" )== 24 )
@@ -767,25 +766,27 @@ FindEndOfXLOG(void)
767766newXlogSeg = seg ;
768767}
769768}
770- errno = 0 ;
771769}
772- #ifdef WIN32
773770
774- /*
775- * This fix is in mingw cvs (runtime/mingwex/dirent.c rev 1.4), but not in
776- * released version
777- */
771+ #ifdef WIN32
772+ /* Bug in old Mingw dirent.c; fixed in mingw-runtime-3.2, 2003-10-10 */
778773if (GetLastError ()== ERROR_NO_MORE_FILES )
779774errno = 0 ;
780775#endif
781776
782777if (errno )
783778{
784- fprintf (stderr ,_ ("%s: could not read from directory \"%s\": %s\n" ),
779+ fprintf (stderr ,_ ("%s: could not read directory \"%s\": %s\n" ),
780+ progname ,XLOGDIR ,strerror (errno ));
781+ exit (1 );
782+ }
783+
784+ if (closedir (xldir ))
785+ {
786+ fprintf (stderr ,_ ("%s: could not close directory \"%s\": %s\n" ),
785787progname ,XLOGDIR ,strerror (errno ));
786788exit (1 );
787789}
788- closedir (xldir );
789790
790791/*
791792 * Finally, convert to new xlog seg size, and advance by one to ensure we
@@ -817,8 +818,7 @@ KillExistingXLOG(void)
817818exit (1 );
818819}
819820
820- errno = 0 ;
821- while ((xlde = readdir (xldir ))!= NULL )
821+ while (errno = 0 , (xlde = readdir (xldir ))!= NULL )
822822{
823823if (strlen (xlde -> d_name )== 24 &&
824824strspn (xlde -> d_name ,"0123456789ABCDEF" )== 24 )
@@ -831,25 +831,27 @@ KillExistingXLOG(void)
831831exit (1 );
832832}
833833}
834- errno = 0 ;
835834}
836- #ifdef WIN32
837835
838- /*
839- * This fix is in mingw cvs (runtime/mingwex/dirent.c rev 1.4), but not in
840- * released version
841- */
836+ #ifdef WIN32
837+ /* Bug in old Mingw dirent.c; fixed in mingw-runtime-3.2, 2003-10-10 */
842838if (GetLastError ()== ERROR_NO_MORE_FILES )
843839errno = 0 ;
844840#endif
845841
846842if (errno )
847843{
848- fprintf (stderr ,_ ("%s: could not read from directory \"%s\": %s\n" ),
844+ fprintf (stderr ,_ ("%s: could not read directory \"%s\": %s\n" ),
845+ progname ,XLOGDIR ,strerror (errno ));
846+ exit (1 );
847+ }
848+
849+ if (closedir (xldir ))
850+ {
851+ fprintf (stderr ,_ ("%s: could not close directory \"%s\": %s\n" ),
849852progname ,XLOGDIR ,strerror (errno ));
850853exit (1 );
851854}
852- closedir (xldir );
853855}
854856
855857
@@ -873,8 +875,7 @@ KillExistingArchiveStatus(void)
873875exit (1 );
874876}
875877
876- errno = 0 ;
877- while ((xlde = readdir (xldir ))!= NULL )
878+ while (errno = 0 , (xlde = readdir (xldir ))!= NULL )
878879{
879880if (strspn (xlde -> d_name ,"0123456789ABCDEF" )== 24 &&
880881(strcmp (xlde -> d_name + 24 ,".ready" )== 0 ||
@@ -888,25 +889,27 @@ KillExistingArchiveStatus(void)
888889exit (1 );
889890}
890891}
891- errno = 0 ;
892892}
893- #ifdef WIN32
894893
895- /*
896- * This fix is in mingw cvs (runtime/mingwex/dirent.c rev 1.4), but not in
897- * released version
898- */
894+ #ifdef WIN32
895+ /* Bug in old Mingw dirent.c; fixed in mingw-runtime-3.2, 2003-10-10 */
899896if (GetLastError ()== ERROR_NO_MORE_FILES )
900897errno = 0 ;
901898#endif
902899
903900if (errno )
904901{
905- fprintf (stderr ,_ ("%s: could not read from directory \"%s\": %s\n" ),
902+ fprintf (stderr ,_ ("%s: could not read directory \"%s\": %s\n" ),
903+ progname ,ARCHSTATDIR ,strerror (errno ));
904+ exit (1 );
905+ }
906+
907+ if (closedir (xldir ))
908+ {
909+ fprintf (stderr ,_ ("%s: could not close directory \"%s\": %s\n" ),
906910progname ,ARCHSTATDIR ,strerror (errno ));
907911exit (1 );
908912}
909- closedir (xldir );
910913}
911914
912915