]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
doveadm instance list: Added -c parameter to easily get the instance's config path.
authorTimo Sirainen <tss@iki.fi>
Mon, 4 Jun 2012 18:21:52 +0000 (21:21 +0300)
committerTimo Sirainen <tss@iki.fi>
Mon, 4 Jun 2012 18:21:52 +0000 (21:21 +0300)
src/doveadm/doveadm-instance.c

index 587b574d124d6a4f4a53d00fd5c4495ac781a7a4..1f36f6aad742f02a21d5fb3b3086d07cae281686 100644 (file)
@@ -5,6 +5,7 @@
 #include "doveadm.h"
 #include "doveadm-print.h"
 
+#include <stdio.h>
 #include <unistd.h>
 #include <fcntl.h>
 #include <signal.h>
@@ -48,19 +49,39 @@ static void cmd_instance_list(int argc, char *argv[])
        struct master_instance_list_iter *iter;
        const struct master_instance *inst;
        const char *pidfile_path;
-
-       doveadm_print_init(DOVEADM_PRINT_TYPE_TABLE);
-       doveadm_print_header("path", "path", DOVEADM_PRINT_HEADER_FLAG_EXPAND);
-       doveadm_print_header_simple("name");
-       doveadm_print_header_simple("last used");
-       doveadm_print_header_simple("running");
+       bool show_config = FALSE;
+       int c;
+
+       while ((c = getopt(argc, argv, "c")) > 0) {
+               switch (c) {
+               case 'c':
+                       show_config = TRUE;
+                       break;
+               default:
+                       help(&doveadm_cmd_instance[0]);
+               }
+       }
+       argv += optind;
+
+       if (!show_config) {
+               doveadm_print_init(DOVEADM_PRINT_TYPE_TABLE);
+               doveadm_print_header("path", "path", DOVEADM_PRINT_HEADER_FLAG_EXPAND);
+               doveadm_print_header_simple("name");
+               doveadm_print_header_simple("last used");
+               doveadm_print_header_simple("running");
+       }
 
        list = master_instance_list_init(MASTER_INSTANCE_PATH);
        iter = master_instance_list_iterate_init(list);
        while ((inst = master_instance_iterate_list_next(iter)) != NULL) {
-               if (argc > 1 && strcmp(argv[1], inst->name) != 0)
+               if (argv[0] != NULL && strcmp(argv[0], inst->name) != 0)
                        continue;
 
+               if (show_config) {
+                       printf("%s\n", inst->config_path == NULL ? "" :
+                              inst->config_path);
+                       continue;
+               }
                doveadm_print(inst->base_dir);
                doveadm_print(inst->name);
                doveadm_print(unixdate2str(inst->last_used));
@@ -98,7 +119,7 @@ static void cmd_instance_remove(int argc, char *argv[])
 }
 
 struct doveadm_cmd doveadm_cmd_instance[] = {
-       { cmd_instance_list, "instance list", "[<name>]" },
+       { cmd_instance_list, "instance list", "[-c] [<name>]" },
        { cmd_instance_remove, "instance remove", "<name> | <base dir>" }
 };