changeset 20395:d4ea7744872f

doveadm fs delete: Allow multiple paths also with -R parameter.
author Timo Sirainen <timo.sirainen@dovecot.fi>
date Tue, 21 Jun 2016 18:47:42 +0300
parents 0993d4b55bc8
children 44c7e5e1432c
files src/doveadm/doveadm-fs.c
diffstat 1 files changed, 13 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/src/doveadm/doveadm-fs.c	Tue Jun 21 18:30:20 2016 +0300
+++ b/src/doveadm/doveadm-fs.c	Tue Jun 21 18:47:42 2016 +0300
@@ -398,16 +398,12 @@
 	doveadm_fs_delete_async_finish(&ctx);
 }
 
-static void
-cmd_fs_delete_recursive(int argc, char *argv[], unsigned int async_count)
+static void cmd_fs_delete_recursive_path(struct fs *fs, const char *path,
+					 unsigned int async_count)
 {
-	struct fs *fs;
 	struct fs_file *file;
-	const char *path;
 	unsigned int path_len;
 
-	fs = cmd_fs_init(&argc, &argv, 1, cmd_fs_delete);
-	path = argv[0];
 	path_len = strlen(path);
 	if (path_len > 0 && path[path_len-1] != '/')
 		path = t_strconcat(path, "/", NULL);
@@ -423,6 +419,17 @@
 		}
 		fs_file_deinit(&file);
 	}
+}
+
+static void
+cmd_fs_delete_recursive(int argc, char *argv[], unsigned int async_count)
+{
+	struct fs *fs;
+	unsigned int i;
+
+	fs = cmd_fs_init(&argc, &argv, 0, cmd_fs_delete);
+	for (i = 0; argv[i] != NULL; i++)
+		cmd_fs_delete_recursive_path(fs, argv[i], async_count);
 	fs_deinit(&fs);
 }