@@ -748,8 +748,7 @@ FindEndOfXLOG(void)
748748exit (1 );
749749}
750750
751- errno = 0 ;
752- while ((xlde = readdir (xldir ))!= NULL )
751+ while (errno = 0 , (xlde = readdir (xldir ))!= NULL )
753752{
754753if (strlen (xlde -> d_name )== 24 &&
755754strspn (xlde -> d_name ,"0123456789ABCDEF" )== 24 )
@@ -773,25 +772,27 @@ FindEndOfXLOG(void)
773772newXlogSeg = seg ;
774773}
775774}
776- errno = 0 ;
777775}
778- #ifdef WIN32
779776
780- /*
781- * This fix is in mingw cvs (runtime/mingwex/dirent.c rev 1.4), but not in
782- * released version
783- */
777+ #ifdef WIN32
778+ /* Bug in old Mingw dirent.c; fixed in mingw-runtime-3.2, 2003-10-10 */
784779if (GetLastError ()== ERROR_NO_MORE_FILES )
785780errno = 0 ;
786781#endif
787782
788783if (errno )
789784{
790- fprintf (stderr ,_ ("%s: could not read from directory \"%s\": %s\n" ),
785+ fprintf (stderr ,_ ("%s: could not read directory \"%s\": %s\n" ),
786+ progname ,XLOGDIR ,strerror (errno ));
787+ exit (1 );
788+ }
789+
790+ if (closedir (xldir ))
791+ {
792+ fprintf (stderr ,_ ("%s: could not close directory \"%s\": %s\n" ),
791793progname ,XLOGDIR ,strerror (errno ));
792794exit (1 );
793795}
794- closedir (xldir );
795796
796797/*
797798 * Finally, convert to new xlog seg size, and advance by one to ensure we
@@ -823,8 +824,7 @@ KillExistingXLOG(void)
823824exit (1 );
824825}
825826
826- errno = 0 ;
827- while ((xlde = readdir (xldir ))!= NULL )
827+ while (errno = 0 , (xlde = readdir (xldir ))!= NULL )
828828{
829829if (strlen (xlde -> d_name )== 24 &&
830830strspn (xlde -> d_name ,"0123456789ABCDEF" )== 24 )
@@ -837,25 +837,27 @@ KillExistingXLOG(void)
837837exit (1 );
838838}
839839}
840- errno = 0 ;
841840}
842- #ifdef WIN32
843841
844- /*
845- * This fix is in mingw cvs (runtime/mingwex/dirent.c rev 1.4), but not in
846- * released version
847- */
842+ #ifdef WIN32
843+ /* Bug in old Mingw dirent.c; fixed in mingw-runtime-3.2, 2003-10-10 */
848844if (GetLastError ()== ERROR_NO_MORE_FILES )
849845errno = 0 ;
850846#endif
851847
852848if (errno )
853849{
854- fprintf (stderr ,_ ("%s: could not read from directory \"%s\": %s\n" ),
850+ fprintf (stderr ,_ ("%s: could not read directory \"%s\": %s\n" ),
851+ progname ,XLOGDIR ,strerror (errno ));
852+ exit (1 );
853+ }
854+
855+ if (closedir (xldir ))
856+ {
857+ fprintf (stderr ,_ ("%s: could not close directory \"%s\": %s\n" ),
855858progname ,XLOGDIR ,strerror (errno ));
856859exit (1 );
857860}
858- closedir (xldir );
859861}
860862
861863
@@ -879,8 +881,7 @@ KillExistingArchiveStatus(void)
879881exit (1 );
880882}
881883
882- errno = 0 ;
883- while ((xlde = readdir (xldir ))!= NULL )
884+ while (errno = 0 , (xlde = readdir (xldir ))!= NULL )
884885{
885886if (strspn (xlde -> d_name ,"0123456789ABCDEF" )== 24 &&
886887(strcmp (xlde -> d_name + 24 ,".ready" )== 0 ||
@@ -894,25 +895,27 @@ KillExistingArchiveStatus(void)
894895exit (1 );
895896}
896897}
897- errno = 0 ;
898898}
899- #ifdef WIN32
900899
901- /*
902- * This fix is in mingw cvs (runtime/mingwex/dirent.c rev 1.4), but not in
903- * released version
904- */
900+ #ifdef WIN32
901+ /* Bug in old Mingw dirent.c; fixed in mingw-runtime-3.2, 2003-10-10 */
905902if (GetLastError ()== ERROR_NO_MORE_FILES )
906903errno = 0 ;
907904#endif
908905
909906if (errno )
910907{
911- fprintf (stderr ,_ ("%s: could not read from directory \"%s\": %s\n" ),
908+ fprintf (stderr ,_ ("%s: could not read directory \"%s\": %s\n" ),
909+ progname ,ARCHSTATDIR ,strerror (errno ));
910+ exit (1 );
911+ }
912+
913+ if (closedir (xldir ))
914+ {
915+ fprintf (stderr ,_ ("%s: could not close directory \"%s\": %s\n" ),
912916progname ,ARCHSTATDIR ,strerror (errno ));
913917exit (1 );
914918}
915- closedir (xldir );
916919}
917920
918921