Skip to content
Snippets Groups Projects
Commit 9216c899 authored by Tom Lane's avatar Tom Lane
Browse files

rmtree() reported the wrong pathname if final rmdir failed.

parent 35c4764f
Branches
Tags
No related merge requests found
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
* Win32 (NT, Win2k, XP). replace() doesn't work on Win95/98/Me. * Win32 (NT, Win2k, XP). replace() doesn't work on Win95/98/Me.
* *
* IDENTIFICATION * IDENTIFICATION
* $PostgreSQL: pgsql/src/port/dirmod.c,v 1.37 2005/03/24 02:11:20 tgl Exp $ * $PostgreSQL: pgsql/src/port/dirmod.c,v 1.38 2005/08/02 15:14:47 tgl Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
...@@ -281,10 +281,10 @@ pgsymlink(const char *oldpath, const char *newpath) ...@@ -281,10 +281,10 @@ pgsymlink(const char *oldpath, const char *newpath)
#ifndef FRONTEND #ifndef FRONTEND
ereport(ERROR, ereport(ERROR,
(errcode_for_file_access(), (errcode_for_file_access(),
errmsg("Error setting junction for %s: %s", errmsg("could not set junction for \"%s\": %s",
nativeTarget, msg))); nativeTarget, msg)));
#else #else
fprintf(stderr, _("Error setting junction for %s: %s\n"), fprintf(stderr, _("could not set junction for \"%s\": %s\n"),
nativeTarget, msg); nativeTarget, msg);
#endif #endif
LocalFree(msg); LocalFree(msg);
...@@ -408,7 +408,8 @@ fnames_cleanup(char **filenames) ...@@ -408,7 +408,8 @@ fnames_cleanup(char **filenames)
bool bool
rmtree(char *path, bool rmtopdir) rmtree(char *path, bool rmtopdir)
{ {
char filepath[MAXPGPATH]; char pathbuf[MAXPGPATH];
char *filepath;
char **filenames; char **filenames;
char **filename; char **filename;
struct stat statbuf; struct stat statbuf;
...@@ -423,6 +424,7 @@ rmtree(char *path, bool rmtopdir) ...@@ -423,6 +424,7 @@ rmtree(char *path, bool rmtopdir)
return false; return false;
/* now we have the names we can start removing things */ /* now we have the names we can start removing things */
filepath = pathbuf;
for (filename = filenames; *filename; filename++) for (filename = filenames; *filename; filename++)
{ {
...@@ -450,7 +452,8 @@ rmtree(char *path, bool rmtopdir) ...@@ -450,7 +452,8 @@ rmtree(char *path, bool rmtopdir)
if (rmtopdir) if (rmtopdir)
{ {
if (rmdir(path) != 0) filepath = path;
if (rmdir(filepath) != 0)
goto report_and_fail; goto report_and_fail;
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment