@@ -821,8 +821,7 @@ FindEndOfXLOG(void)
821821 exit (1 );
822822 }
823823
824- errno = 0 ;
825- while ((xlde = readdir (xldir )) != NULL )
824+ while (errno = 0 , (xlde = readdir (xldir )) != NULL )
826825 {
827826 if (strlen (xlde -> d_name ) == 24 &&
828827 strspn (xlde -> d_name , "0123456789ABCDEF" ) == 24 )
@@ -844,25 +843,27 @@ FindEndOfXLOG(void)
844843 if (segno > newXlogSegNo )
845844 newXlogSegNo = 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 */
855850 if (GetLastError () == ERROR_NO_MORE_FILES )
856851 errno = 0 ;
857852#endif
858853
859854 if (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" ),
862864 progname , XLOGDIR , strerror (errno ));
863865 exit (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)
892893 exit (1 );
893894 }
894895
895- errno = 0 ;
896- while ((xlde = readdir (xldir )) != NULL )
896+ while (errno = 0 , (xlde = readdir (xldir )) != NULL )
897897 {
898898 if (strlen (xlde -> d_name ) == 24 &&
899899 strspn (xlde -> d_name , "0123456789ABCDEF" ) == 24 )
@@ -906,25 +906,27 @@ KillExistingXLOG(void)
906906 exit (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 */
917913 if (GetLastError () == ERROR_NO_MORE_FILES )
918914 errno = 0 ;
919915#endif
920916
921917 if (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" ),
924927 progname , XLOGDIR , strerror (errno ));
925928 exit (1 );
926929 }
927- closedir (xldir );
928930}
929931
930932
@@ -948,8 +950,7 @@ KillExistingArchiveStatus(void)
948950 exit (1 );
949951 }
950952
951- errno = 0 ;
952- while ((xlde = readdir (xldir )) != NULL )
953+ while (errno = 0 , (xlde = readdir (xldir )) != NULL )
953954 {
954955 if (strspn (xlde -> d_name , "0123456789ABCDEF" ) == 24 &&
955956 (strcmp (xlde -> d_name + 24 , ".ready" ) == 0 ||
@@ -963,25 +964,27 @@ KillExistingArchiveStatus(void)
963964 exit (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 */
974971 if (GetLastError () == ERROR_NO_MORE_FILES )
975972 errno = 0 ;
976973#endif
977974
978975 if (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" ),
981985 progname , ARCHSTATDIR , strerror (errno ));
982986 exit (1 );
983987 }
984- closedir (xldir );
985988}
986989
987990
0 commit comments