doveadm-mail-index.c revision 6c00502d4ece417ead501db8f0ee3e8287ba4459
5a580c3a38ced62d4bcc95b8ac7c4f2935b5d294Timo Sirainen/* Copyright (c) 2010-2011 Dovecot authors, see the included COPYING file */
0fe2992e4d09f3ae4cceea88c9871c832d67b461Stephan Bosch#define INDEXER_HANDSHAKE "VERSION\tindexer\t1\t0\n"
a10ed8c47534b4c6b6bf2711ccfe577e720a47b4Timo Sirainen box = mailbox_alloc(info->ns->list, info->name,
0fe2992e4d09f3ae4cceea88c9871c832d67b461Stephan Bosch if (mailbox_sync(box, MAILBOX_SYNC_FLAG_FULL_READ |
0fe2992e4d09f3ae4cceea88c9871c832d67b461Stephan Bosch i_error("Syncing mailbox %s failed: %s", info->name,
0fe2992e4d09f3ae4cceea88c9871c832d67b461Stephan Bosch mail_storage_get_last_error(mailbox_get_storage(box), NULL));
0fe2992e4d09f3ae4cceea88c9871c832d67b461Stephan Boschstatic void cmd_index_queue(struct index_cmd_context *ctx,
0fe2992e4d09f3ae4cceea88c9871c832d67b461Stephan Bosch if (write_full(ctx->queue_fd, str_data(str), str_len(str)) < 0)
a10ed8c47534b4c6b6bf2711ccfe577e720a47b4Timo Sirainencmd_index_run(struct doveadm_mail_cmd_context *_ctx, struct mail_user *user)
a10ed8c47534b4c6b6bf2711ccfe577e720a47b4Timo Sirainen struct index_cmd_context *ctx = (struct index_cmd_context *)_ctx;
9a5980c7bb836f69a63082f4699c30596ea4ee74Timo Sirainen const enum mailbox_list_iter_flags iter_flags =
0fe2992e4d09f3ae4cceea88c9871c832d67b461Stephan Bosch NAMESPACE_PRIVATE | NAMESPACE_SHARED | NAMESPACE_PUBLIC;
0fe2992e4d09f3ae4cceea88c9871c832d67b461Stephan Bosch unsigned int i;
0fe2992e4d09f3ae4cceea88c9871c832d67b461Stephan Bosch /* we can do this quickly without going through the mailboxes */
0fe2992e4d09f3ae4cceea88c9871c832d67b461Stephan Bosch iter = mailbox_list_iter_init_namespaces(user->namespaces, _ctx->args,
0fe2992e4d09f3ae4cceea88c9871c832d67b461Stephan Bosch while ((info = mailbox_list_iter_next(iter)) != NULL) {
0fe2992e4d09f3ae4cceea88c9871c832d67b461Stephan Boschstatic void cmd_index_init(struct doveadm_mail_cmd_context *_ctx,
0fe2992e4d09f3ae4cceea88c9871c832d67b461Stephan Bosch const char *const args[])
0fe2992e4d09f3ae4cceea88c9871c832d67b461Stephan Bosch struct index_cmd_context *ctx = (struct index_cmd_context *)_ctx;
0fe2992e4d09f3ae4cceea88c9871c832d67b461Stephan Bosch unsigned int i;
0fe2992e4d09f3ae4cceea88c9871c832d67b461Stephan Bosch path = t_strconcat(doveadm_settings->base_dir,
d730192e34fbedbc590a5abc7351e5af5e120c5fTimo Sirainen i_fatal("net_connect_unix(%s) failed: %m", path);
d730192e34fbedbc590a5abc7351e5af5e120c5fTimo Sirainen if (write_full(ctx->queue_fd, INDEXER_HANDSHAKE,
d730192e34fbedbc590a5abc7351e5af5e120c5fTimo Sirainenstatic void cmd_index_deinit(struct doveadm_mail_cmd_context *_ctx)
d730192e34fbedbc590a5abc7351e5af5e120c5fTimo Sirainen struct index_cmd_context *ctx = (struct index_cmd_context *)_ctx;
0fe2992e4d09f3ae4cceea88c9871c832d67b461Stephan Boschcmd_index_parse_arg(struct doveadm_mail_cmd_context *_ctx, int c)
0fe2992e4d09f3ae4cceea88c9871c832d67b461Stephan Bosch struct index_cmd_context *ctx = (struct index_cmd_context *)_ctx;
0fe2992e4d09f3ae4cceea88c9871c832d67b461Stephan Boschstatic struct doveadm_mail_cmd_context *cmd_index_alloc(void)