diff options
Diffstat (limited to 'src/bin/pg_resetxlog/pg_resetxlog.c')
-rw-r--r-- | src/bin/pg_resetxlog/pg_resetxlog.c | 63 |
1 files changed, 33 insertions, 30 deletions
diff --git a/src/bin/pg_resetxlog/pg_resetxlog.c b/src/bin/pg_resetxlog/pg_resetxlog.c index 54cc5b03024..5ea51a02ef5 100644 --- a/src/bin/pg_resetxlog/pg_resetxlog.c +++ b/src/bin/pg_resetxlog/pg_resetxlog.c @@ -742,8 +742,7 @@ FindEndOfXLOG(void) exit(1); } - errno = 0; - while ((xlde = readdir(xldir)) != NULL) + while (errno = 0, (xlde = readdir(xldir)) != NULL) { if (strlen(xlde->d_name) == 24 && strspn(xlde->d_name, "0123456789ABCDEF") == 24) @@ -767,25 +766,27 @@ FindEndOfXLOG(void) newXlogSeg = seg; } } - errno = 0; } -#ifdef WIN32 - /* - * This fix is in mingw cvs (runtime/mingwex/dirent.c rev 1.4), but not in - * released version - */ +#ifdef WIN32 + /* Bug in old Mingw dirent.c; fixed in mingw-runtime-3.2, 2003-10-10 */ if (GetLastError() == ERROR_NO_MORE_FILES) errno = 0; #endif if (errno) { - fprintf(stderr, _("%s: could not read from directory \"%s\": %s\n"), + fprintf(stderr, _("%s: could not read directory \"%s\": %s\n"), + progname, XLOGDIR, strerror(errno)); + exit(1); + } + + if (closedir(xldir)) + { + fprintf(stderr, _("%s: could not close directory \"%s\": %s\n"), progname, XLOGDIR, strerror(errno)); exit(1); } - closedir(xldir); /* * Finally, convert to new xlog seg size, and advance by one to ensure we @@ -817,8 +818,7 @@ KillExistingXLOG(void) exit(1); } - errno = 0; - while ((xlde = readdir(xldir)) != NULL) + while (errno = 0, (xlde = readdir(xldir)) != NULL) { if (strlen(xlde->d_name) == 24 && strspn(xlde->d_name, "0123456789ABCDEF") == 24) @@ -831,25 +831,27 @@ KillExistingXLOG(void) exit(1); } } - errno = 0; } -#ifdef WIN32 - /* - * This fix is in mingw cvs (runtime/mingwex/dirent.c rev 1.4), but not in - * released version - */ +#ifdef WIN32 + /* Bug in old Mingw dirent.c; fixed in mingw-runtime-3.2, 2003-10-10 */ if (GetLastError() == ERROR_NO_MORE_FILES) errno = 0; #endif if (errno) { - fprintf(stderr, _("%s: could not read from directory \"%s\": %s\n"), + fprintf(stderr, _("%s: could not read directory \"%s\": %s\n"), + progname, XLOGDIR, strerror(errno)); + exit(1); + } + + if (closedir(xldir)) + { + fprintf(stderr, _("%s: could not close directory \"%s\": %s\n"), progname, XLOGDIR, strerror(errno)); exit(1); } - closedir(xldir); } @@ -873,8 +875,7 @@ KillExistingArchiveStatus(void) exit(1); } - errno = 0; - while ((xlde = readdir(xldir)) != NULL) + while (errno = 0, (xlde = readdir(xldir)) != NULL) { if (strspn(xlde->d_name, "0123456789ABCDEF") == 24 && (strcmp(xlde->d_name + 24, ".ready") == 0 || @@ -888,25 +889,27 @@ KillExistingArchiveStatus(void) exit(1); } } - errno = 0; } -#ifdef WIN32 - /* - * This fix is in mingw cvs (runtime/mingwex/dirent.c rev 1.4), but not in - * released version - */ +#ifdef WIN32 + /* Bug in old Mingw dirent.c; fixed in mingw-runtime-3.2, 2003-10-10 */ if (GetLastError() == ERROR_NO_MORE_FILES) errno = 0; #endif if (errno) { - fprintf(stderr, _("%s: could not read from directory \"%s\": %s\n"), + fprintf(stderr, _("%s: could not read directory \"%s\": %s\n"), + progname, ARCHSTATDIR, strerror(errno)); + exit(1); + } + + if (closedir(xldir)) + { + fprintf(stderr, _("%s: could not close directory \"%s\": %s\n"), progname, ARCHSTATDIR, strerror(errno)); exit(1); } - closedir(xldir); } |