From: Tom Lane Date: Tue, 2 Aug 2005 15:14:56 +0000 (+0000) Subject: rmtree() reported the wrong pathname if final rmdir failed. X-Git-Tag: REL8_0_4~39 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=668448d6f035333e7df0db8d21571eec01e4c519;p=thirdparty%2Fpostgresql.git rmtree() reported the wrong pathname if final rmdir failed. --- diff --git a/src/port/dirmod.c b/src/port/dirmod.c index e8e40775aa5..b4374e95e5a 100644 --- a/src/port/dirmod.c +++ b/src/port/dirmod.c @@ -10,7 +10,7 @@ * Win32 (NT, Win2k, XP). replace() doesn't work on Win95/98/Me. * * IDENTIFICATION - * $PostgreSQL: pgsql/src/port/dirmod.c,v 1.34.4.2 2005/03/24 02:11:33 tgl Exp $ + * $PostgreSQL: pgsql/src/port/dirmod.c,v 1.34.4.3 2005/08/02 15:14:56 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -280,10 +280,10 @@ pgsymlink(const char *oldpath, const char *newpath) #ifndef FRONTEND ereport(ERROR, (errcode_for_file_access(), - errmsg("Error setting junction for %s: %s", + errmsg("could not set junction for \"%s\": %s", nativeTarget, msg))); #else - fprintf(stderr, "Error setting junction for %s: %s\n", + fprintf(stderr, "could not set junction for \"%s\": %s\n", nativeTarget, msg); #endif LocalFree(msg); @@ -407,7 +407,8 @@ fnames_cleanup(char **filenames) bool rmtree(char *path, bool rmtopdir) { - char filepath[MAXPGPATH]; + char pathbuf[MAXPGPATH]; + char *filepath; char **filenames; char **filename; struct stat statbuf; @@ -422,6 +423,7 @@ rmtree(char *path, bool rmtopdir) return false; /* now we have the names we can start removing things */ + filepath = pathbuf; for (filename = filenames; *filename; filename++) { @@ -449,7 +451,8 @@ rmtree(char *path, bool rmtopdir) if (rmtopdir) { - if (rmdir(path) != 0) + filepath = path; + if (rmdir(filepath) != 0) goto report_and_fail; }