aboutsummaryrefslogtreecommitdiff
path: root/src/port/dirmod.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/port/dirmod.c')
-rw-r--r--src/port/dirmod.c110
1 files changed, 0 insertions, 110 deletions
diff --git a/src/port/dirmod.c b/src/port/dirmod.c
index a18d2ef7ba8..0a630ff697f 100644
--- a/src/port/dirmod.c
+++ b/src/port/dirmod.c
@@ -351,116 +351,6 @@ pgwin32_is_junction(char *path)
#endif /* defined(WIN32) && !defined(__CYGWIN__) */
-/*
- * rmtree
- *
- * Delete a directory tree recursively.
- * Assumes path points to a valid directory.
- * Deletes everything under path.
- * If rmtopdir is true deletes the directory too.
- * Returns true if successful, false if there was any problem.
- * (The details of the problem are reported already, so caller
- * doesn't really have to say anything more, but most do.)
- */
-bool
-rmtree(const char *path, bool rmtopdir)
-{
- bool result = true;
- char pathbuf[MAXPGPATH];
- char **filenames;
- char **filename;
- struct stat statbuf;
-
- /*
- * we copy all the names out of the directory before we start modifying
- * it.
- */
- filenames = pgfnames(path);
-
- if (filenames == NULL)
- return false;
-
- /* now we have the names we can start removing things */
- for (filename = filenames; *filename; filename++)
- {
- snprintf(pathbuf, MAXPGPATH, "%s/%s", path, *filename);
-
- /*
- * It's ok if the file is not there anymore; we were just about to
- * delete it anyway.
- *
- * This is not an academic possibility. One scenario where this
- * happens is when bgwriter has a pending unlink request for a file in
- * a database that's being dropped. In dropdb(), we call
- * ForgetDatabaseFsyncRequests() to flush out any such pending unlink
- * requests, but because that's asynchronous, it's not guaranteed that
- * the bgwriter receives the message in time.
- */
- if (lstat(pathbuf, &statbuf) != 0)
- {
- if (errno != ENOENT)
- {
-#ifndef FRONTEND
- elog(WARNING, "could not stat file or directory \"%s\": %m",
- pathbuf);
-#else
- fprintf(stderr, _("could not stat file or directory \"%s\": %s\n"),
- pathbuf, strerror(errno));
-#endif
- result = false;
- }
- continue;
- }
-
- if (S_ISDIR(statbuf.st_mode))
- {
- /* call ourselves recursively for a directory */
- if (!rmtree(pathbuf, true))
- {
- /* we already reported the error */
- result = false;
- }
- }
- else
- {
- if (unlink(pathbuf) != 0)
- {
- if (errno != ENOENT)
- {
-#ifndef FRONTEND
- elog(WARNING, "could not remove file or directory \"%s\": %m",
- pathbuf);
-#else
- fprintf(stderr, _("could not remove file or directory \"%s\": %s\n"),
- pathbuf, strerror(errno));
-#endif
- result = false;
- }
- }
- }
- }
-
- if (rmtopdir)
- {
- if (rmdir(path) != 0)
- {
-#ifndef FRONTEND
- elog(WARNING, "could not remove file or directory \"%s\": %m",
- path);
-#else
- fprintf(stderr, _("could not remove file or directory \"%s\": %s\n"),
- path, strerror(errno));
-#endif
- result = false;
- }
- }
-
- pgfnames_cleanup(filenames);
-
- return result;
-}
-
-
#if defined(WIN32) && !defined(__CYGWIN__)
#undef stat