#include "doveadm.h"
#include "doveadm-print.h"
+#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
#include <signal.h>
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));
}
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>" }
};