Commit 88295244 authored by Tom Lane's avatar Tom Lane

copydir() and rmtree() need to use lstat, not stat, to behave as expected

with symlinks.  Noted while trying to use rmtree in new C-code pg_regress.
parent 11b7aecb
......@@ -11,7 +11,7 @@
* as a service.
*
* IDENTIFICATION
* $PostgreSQL: pgsql/src/port/copydir.c,v 1.17 2006/03/05 15:59:10 momjian Exp $
* $PostgreSQL: pgsql/src/port/copydir.c,v 1.18 2006/07/18 22:36:46 tgl Exp $
*
*-------------------------------------------------------------------------
*/
......@@ -75,7 +75,7 @@ copydir(char *fromdir, char *todir, bool recurse)
snprintf(fromfile, MAXPGPATH, "%s/%s", fromdir, xlde->d_name);
snprintf(tofile, MAXPGPATH, "%s/%s", todir, xlde->d_name);
if (stat(fromfile, &fst) < 0)
if (lstat(fromfile, &fst) < 0)
ereport(ERROR,
(errcode_for_file_access(),
errmsg("could not stat file \"%s\": %m", fromfile)));
......
......@@ -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.42 2006/03/05 15:59:10 momjian Exp $
* $PostgreSQL: pgsql/src/port/dirmod.c,v 1.43 2006/07/18 22:36:46 tgl Exp $
*
*-------------------------------------------------------------------------
*/
......@@ -434,7 +434,7 @@ rmtree(char *path, bool rmtopdir)
{
snprintf(filepath, MAXPGPATH, "%s/%s", path, *filename);
if (stat(filepath, &statbuf) != 0)
if (lstat(filepath, &statbuf) != 0)
goto report_and_fail;
if (S_ISDIR(statbuf.st_mode))
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment