changeset 10345:93c87044469f HEAD

doveadm: Added global -v (verbose) and -D (debug) options. Removed "doveadm <mail command> -v".
author Timo Sirainen <tss@iki.fi>
date Tue, 17 Nov 2009 18:12:34 -0500
parents 3836c67fa5f1
children f8e03cda78d9
files src/doveadm/doveadm-mail.c src/doveadm/doveadm.c src/doveadm/doveadm.h
diffstat 3 files changed, 27 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- a/src/doveadm/doveadm-mail.c	Tue Nov 17 14:39:31 2009 -0500
+++ b/src/doveadm/doveadm-mail.c	Tue Nov 17 18:12:34 2009 -0500
@@ -181,7 +181,7 @@
 		} T_END;
 		if (ret < 0)
 			break;
-		if ((service_flags & MAIL_STORAGE_SERVICE_FLAG_DEBUG) != 0) {
+		if (doveadm_verbose) {
 			if (++user_idx % interval == 0) {
 				printf("\r%d / %d", user_idx, user_count);
 				fflush(stdout);
@@ -193,7 +193,7 @@
 			break;
 		}
 	}
-	if ((service_flags & MAIL_STORAGE_SERVICE_FLAG_DEBUG) != 0)
+	if (doveadm_verbose)
 		printf("\n");
 	i_set_failure_prefix("doveadm: ");
 	if (ret < 0)
@@ -209,14 +209,14 @@
 	bool all_users = FALSE;
 	int c;
 
-	while ((c = getopt(argc, argv, "av")) > 0) {
+	if (doveadm_debug)
+		service_flags |= MAIL_STORAGE_SERVICE_FLAG_DEBUG;
+
+	while ((c = getopt(argc, argv, "a")) > 0) {
 		switch (c) {
 		case 'a':
 			all_users = TRUE;
 			break;
-		case 'v':
-			service_flags |= MAIL_STORAGE_SERVICE_FLAG_DEBUG;
-			break;
 		default:
 			doveadm_mail_help(cmd);
 		}
--- a/src/doveadm/doveadm.c	Tue Nov 17 14:39:31 2009 -0500
+++ b/src/doveadm/doveadm.c	Tue Nov 17 18:12:34 2009 -0500
@@ -10,6 +10,8 @@
 #include <stdlib.h>
 #include <unistd.h>
 
+bool doveadm_verbose = FALSE, doveadm_debug = FALSE;
+
 static ARRAY_DEFINE(doveadm_cmds, struct doveadm_cmd);
 
 void doveadm_register_cmd(const struct doveadm_cmd *cmd)
@@ -73,10 +75,13 @@
 int main(int argc, char *argv[])
 {
 	const char *cmd_name;
+	int c;
 
+	/* "+" is GNU extension to stop at the first non-option.
+	   others just accept -+ option. */
 	master_service = master_service_init("doveadm",
 					     MASTER_SERVICE_FLAG_STANDALONE,
-					     &argc, &argv, "+");
+					     &argc, &argv, "+Dv");
 	i_array_init(&doveadm_cmds, 32);
 	doveadm_mail_init();
 	doveadm_register_cmd(&doveadm_cmd_help);
@@ -86,10 +91,19 @@
 	doveadm_register_cmd(&doveadm_cmd_pw);
 	doveadm_register_cmd(&doveadm_cmd_who);
 
-	/* "+" is GNU extension to stop at the first non-option.
-	   others just accept -+ option. */
-	if (master_getopt(master_service) > 0)
-		usage();
+	while ((c = master_getopt(master_service)) > 0) {
+		switch (c) {
+		case 'D':
+			doveadm_debug = TRUE;
+			doveadm_verbose = TRUE;
+			break;
+		case 'v':
+			doveadm_verbose = TRUE;
+			break;
+		default:
+			return FATAL_DEFAULT;
+		}
+	}
 	if (optind == argc)
 		usage();
 
--- a/src/doveadm/doveadm.h	Tue Nov 17 14:39:31 2009 -0500
+++ b/src/doveadm/doveadm.h	Tue Nov 17 18:12:34 2009 -0500
@@ -18,6 +18,8 @@
 extern struct doveadm_cmd doveadm_cmd_pw;
 extern struct doveadm_cmd doveadm_cmd_who;
 
+extern bool doveadm_verbose, doveadm_debug;
+
 void doveadm_register_cmd(const struct doveadm_cmd *cmd);
 
 void usage(void);