dovecot-2.2: doveadm fs delete -R: Delete the root directory also.

dovecot at dovecot.org dovecot at dovecot.org
Tue Feb 17 21:14:46 UTC 2015


details:   http://hg.dovecot.org/dovecot-2.2/rev/d7d35fd179e8
changeset: 18261:d7d35fd179e8
user:      Timo Sirainen <tss at iki.fi>
date:      Tue Feb 17 23:13:00 2015 +0200
description:
doveadm fs delete -R: Delete the root directory also.

diffstat:

 src/doveadm/doveadm-fs.c |  16 +++++++++++++++-
 1 files changed, 15 insertions(+), 1 deletions(-)

diffs (28 lines):

diff -r 359bc38c5e90 -r d7d35fd179e8 src/doveadm/doveadm-fs.c
--- a/src/doveadm/doveadm-fs.c	Tue Feb 17 23:07:00 2015 +0200
+++ b/src/doveadm/doveadm-fs.c	Tue Feb 17 23:13:00 2015 +0200
@@ -335,9 +335,23 @@
 cmd_fs_delete_recursive(int argc, char *argv[], unsigned int async_count)
 {
 	struct fs *fs;
+	struct fs_file *file;
+	const char *path;
 
 	fs = cmd_fs_init(&argc, &argv, 1, cmd_fs_delete);
-	cmd_fs_delete_dir_recursive(fs, async_count, argv[0]);
+	path = argv[0];
+
+	cmd_fs_delete_dir_recursive(fs, async_count, path);
+	if ((fs_get_properties(fs) & FS_PROPERTY_DIRECTORIES) != 0) {
+		/* delete the root itself */
+		file = fs_file_init(fs, path, FS_OPEN_MODE_READONLY);
+		if (fs_delete(file) < 0) {
+			i_error("fs_delete(%s) failed: %s",
+				fs_file_path(file), fs_file_last_error(file));
+			doveadm_exit_code = EX_TEMPFAIL;
+		}
+		fs_file_deinit(&file);
+	}
 	fs_deinit(&fs);
 }
 


More information about the dovecot-cvs mailing list