bcb4e51a409d94ae670de96afb8483a4f7855294Stephan Bosch/* Copyright (c) 2013-2018 Dovecot authors, see the included COPYING file */
d47a87c927ca77e780480f4eaf575511698d42c8Timo Sirainenextern struct doveadm_cmd doveadm_cmd_instance[];
d47a87c927ca77e780480f4eaf575511698d42c8Timo Sirainenstatic void instance_cmd_help(doveadm_command_t *cmd) ATTR_NORETURN;
1c7d88528a964f0a0e16bfe48d76da1cea94088eTimo Sirainenstatic void cmd_instance_list(int argc, char *argv[])
6ea1de17b3d415f6ff2e6a2af8d34d8f6cf17636Timo Sirainen doveadm_print_header("path", "path", DOVEADM_PRINT_HEADER_FLAG_EXPAND);
2e533fb1283b5f06a4063b519e47f1861c910386Timo Sirainen instance_path = t_strconcat(service_set->state_dir,
2e533fb1283b5f06a4063b519e47f1861c910386Timo Sirainen list = master_instance_list_init(instance_path);
d47a87c927ca77e780480f4eaf575511698d42c8Timo Sirainen iter = master_instance_list_iterate_init(list);
d47a87c927ca77e780480f4eaf575511698d42c8Timo Sirainen while ((inst = master_instance_iterate_list_next(iter)) != NULL) {
6ea1de17b3d415f6ff2e6a2af8d34d8f6cf17636Timo Sirainen if (argv[0] != NULL && strcmp(argv[0], inst->name) != 0)
6ea1de17b3d415f6ff2e6a2af8d34d8f6cf17636Timo Sirainen printf("%s\n", inst->config_path == NULL ? "" :
d47a87c927ca77e780480f4eaf575511698d42c8Timo Sirainen pidfile_path = t_strconcat(inst->base_dir, "/master.pid", NULL);
d47a87c927ca77e780480f4eaf575511698d42c8Timo Sirainenstatic void cmd_instance_remove(int argc, char *argv[])
2e533fb1283b5f06a4063b519e47f1861c910386Timo Sirainen instance_path = t_strconcat(service_set->state_dir,
2e533fb1283b5f06a4063b519e47f1861c910386Timo Sirainen list = master_instance_list_init(instance_path);
2b602d8698d82e974eba6339ef96c29e256bde31Timo Sirainen inst = master_instance_list_find_by_name(list, argv[1]);
2b602d8698d82e974eba6339ef96c29e256bde31Timo Sirainen base_dir = inst != NULL ? inst->base_dir : argv[1];
5fbccc935e3f7b916aa7c6e302a212821072e83aTimo Sirainen if ((ret = master_instance_list_remove(list, base_dir)) < 0) {
5fbccc935e3f7b916aa7c6e302a212821072e83aTimo Sirainen } else if (ret == 0) {
6ea1de17b3d415f6ff2e6a2af8d34d8f6cf17636Timo Sirainen { cmd_instance_list, "instance list", "[-c] [<name>]" },
2b602d8698d82e974eba6339ef96c29e256bde31Timo Sirainen { cmd_instance_remove, "instance remove", "<name> | <base dir>" }
d47a87c927ca77e780480f4eaf575511698d42c8Timo Sirainenstatic void instance_cmd_help(doveadm_command_t *cmd)
d47a87c927ca77e780480f4eaf575511698d42c8Timo Sirainen unsigned int i;
d47a87c927ca77e780480f4eaf575511698d42c8Timo Sirainen for (i = 0; i < N_ELEMENTS(doveadm_cmd_instance); i++) {
d47a87c927ca77e780480f4eaf575511698d42c8Timo Sirainen unsigned int i;
d47a87c927ca77e780480f4eaf575511698d42c8Timo Sirainen for (i = 0; i < N_ELEMENTS(doveadm_cmd_instance); i++)