cmd-store.c revision fba0d7e7f265f83160229170de69b23d5f181847
d80f37f025593d959bdfa9c378915e4322f4f504Timo Sirainen/* Copyright (C) 2002 Timo Sirainen */
d80f37f025593d959bdfa9c378915e4322f4f504Timo Sirainenstatic int get_modify_type(struct client *client, const char *item,
d80f37f025593d959bdfa9c378915e4322f4f504Timo Sirainenstatic int mail_send_flags(struct client *client, struct mail *mail)
d80f37f025593d959bdfa9c378915e4322f4f504Timo Sirainen const char *str;
67c47dbb3fde79218320fd38a45c33f61bbf3012Timo Sirainen "* %u FETCH (FLAGS (%s) UID %u)" :
67c47dbb3fde79218320fd38a45c33f61bbf3012Timo Sirainen "* %u FETCH (FLAGS (%s))",
67c47dbb3fde79218320fd38a45c33f61bbf3012Timo Sirainen /* validate arguments */
4654f788834c9d7920a351306b89cf5d1c21772eTimo Sirainen client_send_command_error(client, "Invalid arguments.");
4654f788834c9d7920a351306b89cf5d1c21772eTimo Sirainen if (!get_modify_type(client, item, &modify_type, &silent))
3398d5e2b883812de5d569721c8294b581e1d9e6Timo Sirainen /* and update the flags */
3398d5e2b883812de5d569721c8294b581e1d9e6Timo Sirainen /* read-only, don't every try to get write locking */
67c47dbb3fde79218320fd38a45c33f61bbf3012Timo Sirainen while ((mail = box->fetch_next(fetch_ctx)) != NULL) {
67c47dbb3fde79218320fd38a45c33f61bbf3012Timo Sirainen if (!mail->update_flags(mail, &flags, modify_type)) {
67c47dbb3fde79218320fd38a45c33f61bbf3012Timo Sirainen if (!box->fetch_deinit(fetch_ctx, &all_found))
67c47dbb3fde79218320fd38a45c33f61bbf3012Timo Sirainen client_send_tagline(client, all_found ? "OK Store completed." :
67c47dbb3fde79218320fd38a45c33f61bbf3012Timo Sirainen "NO Some of the messages no longer exist.");