Tom Lane wrote:
> Bruce Momjian <[email protected]> writes:
> > + elog(WARNING, "can not remove \"%s\": %s", filepath, strerror(errno));
>
> "could not remove", please; read the message style guidelines.
> Also, what's wrong with using %m here?
>
> Otherwise it looks good.
OK, new version attached.
--
Bruce Momjian | http://candle.pha.pa.us
[email protected] | (610) 359-1001
+ If your life is a hard drive, | 13 Roberts Road
+ Christ can be your backup. | Newtown Square, Pennsylvania 19073
Index: src/port/dirmod.c
===================================================================
RCS file: /cvsroot/pgsql/src/port/dirmod.c,v
retrieving revision 1.34
diff -c -c -r1.34 dirmod.c
*** src/port/dirmod.c 31 Dec 2004 22:03:53 -0000 1.34
--- src/port/dirmod.c 13 Feb 2005 02:23:22 -0000
***************
*** 350,355 ****
--- 350,356 ----
return filenames;
}
+
/*
* fnames_cleanup
*
***************
*** 366,371 ****
--- 367,373 ----
pfree(filenames);
}
+
/*
* rmtree
*
***************
*** 398,413 ****
snprintf(filepath, MAXPGPATH, "%s/%s", path, *filename);
if (stat(filepath, &statbuf) != 0)
! {
! fnames_cleanup(filenames);
! return false;
! }
if (S_ISDIR(statbuf.st_mode))
{
/* call ourselves recursively for a directory */
if (!rmtree(filepath, true))
{
fnames_cleanup(filenames);
return false;
}
--- 400,413 ----
snprintf(filepath, MAXPGPATH, "%s/%s", path, *filename);
if (stat(filepath, &statbuf) != 0)
! goto report_and_fail;
if (S_ISDIR(statbuf.st_mode))
{
/* call ourselves recursively for a directory */
if (!rmtree(filepath, true))
{
+ /* we already reported the error */
fnames_cleanup(filenames);
return false;
}
***************
*** 415,436 ****
else
{
if (unlink(filepath) != 0)
! {
! fnames_cleanup(filenames);
! return false;
! }
}
}
if (rmtopdir)
{
if (rmdir(path) != 0)
! {
! fnames_cleanup(filenames);
! return false;
! }
}
fnames_cleanup(filenames);
return true;
}
--- 415,440 ----
else
{
if (unlink(filepath) != 0)
! goto report_and_fail;
}
}
if (rmtopdir)
{
if (rmdir(path) != 0)
! goto report_and_fail;
}
fnames_cleanup(filenames);
return true;
+
+ report_and_fail:
+
+ #ifndef FRONTEND
+ elog(WARNING, "could not remove file or directory \"%s\": %m",
filepath);
+ #else
+ fprintf(stderr, "could not remove file or directory \"%s\": %s\n",
filepath, strerror(errno));
+ #endif
+ fnames_cleanup(filenames);
+ return false;
}
---------------------------(end of broadcast)---------------------------
TIP 3: if posting/reading through Usenet, please send an appropriate
subscribe-nomail command to [EMAIL PROTECTED] so that your
message can get through to the mailing list cleanly