dovecot-2.2: doveadm: Added "fs metadata" command

dovecot at dovecot.org dovecot at dovecot.org
Wed Nov 20 23:29:26 EET 2013


details:   http://hg.dovecot.org/dovecot-2.2/rev/d2e95af17305
changeset: 16996:d2e95af17305
user:      Timo Sirainen <tss at iki.fi>
date:      Wed Nov 20 23:29:13 2013 +0200
description:
doveadm: Added "fs metadata" command

diffstat:

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

diffs (43 lines):

diff -r df2b27885c9d -r d2e95af17305 src/doveadm/doveadm-fs.c
--- a/src/doveadm/doveadm-fs.c	Wed Nov 20 22:20:06 2013 +0200
+++ b/src/doveadm/doveadm-fs.c	Wed Nov 20 23:29:13 2013 +0200
@@ -156,6 +156,31 @@
 	fs_deinit(&fs);
 }
 
+static void cmd_fs_metadata(int argc, char *argv[])
+{
+	struct fs *fs;
+	struct fs_file *file;
+	const struct fs_metadata *m;
+	const ARRAY_TYPE(fs_metadata) *metadata;
+
+	fs = cmd_fs_init(&argc, &argv, 1, cmd_fs_metadata);
+
+	file = fs_file_init(fs, argv[0], FS_OPEN_MODE_READONLY);
+	if (fs_get_metadata(file, &metadata) == 0) {
+		array_foreach(metadata, m)
+			printf("%s=%s\n", m->key, m->value);
+	} else if (errno == ENOENT) {
+		i_error("%s doesn't exist", fs_file_path(file));
+		doveadm_exit_code = DOVEADM_EX_NOTFOUND;
+	} else {
+		i_error("fs_stat(%s) failed: %s",
+			fs_file_path(file), fs_file_last_error(file));
+		doveadm_exit_code = EX_TEMPFAIL;
+	}
+	fs_file_deinit(&file);
+	fs_deinit(&fs);
+}
+
 static void cmd_fs_delete_dir_recursive(struct fs *fs, const char *path)
 {
 	struct fs_iter *iter;
@@ -271,6 +296,7 @@
 	{ cmd_fs_put, "fs put", "<fs-driver> <fs-args> <input path> <path>" },
 	{ cmd_fs_copy, "fs copy", "<fs-driver> <fs-args> <source path> <dest path>" },
 	{ cmd_fs_stat, "fs stat", "<fs-driver> <fs-args> <path>" },
+	{ cmd_fs_metadata, "fs metadata", "<fs-driver> <fs-args> <path>" },
 	{ cmd_fs_delete, "fs delete", "[-R] <fs-driver> <fs-args> <path>" },
 	{ cmd_fs_iter, "fs iter", "<fs-driver> <fs-args> <path>" },
 	{ cmd_fs_iter_dirs, "fs iter-dirs", "<fs-driver> <fs-args> <path>" },


More information about the dovecot-cvs mailing list