ImapCommandItem* ImapCommands::MessageMarkAsSpam::GetExpandedQueue(IMAP4& protocol) { const char* keyword_spam = "$Junk"; const char* keyword_not_spam = "$NotJunk"; OpAutoPtr<ImapCommands::Store> remove_keyword (OP_NEW(ImapCommands::Store, (m_mailbox, 0, 0, ImapCommands::USE_UID | ImapCommands::Store::REMOVE_FLAGS | ImapCommands::Store::SILENT | ImapCommands::Store::KEYWORDS, m_mark_as_spam ? keyword_not_spam : keyword_spam))); OpAutoPtr<ImapCommands::Store> add_keyword (OP_NEW(ImapCommands::Store, (m_mailbox, 0, 0, ImapCommands::USE_UID | ImapCommands::Store::ADD_FLAGS | ImapCommands::Store::SILENT | ImapCommands::Store::KEYWORDS, m_mark_as_spam ? keyword_spam : keyword_not_spam))); if (!add_keyword.get() || !remove_keyword.get() || OpStatus::IsError(remove_keyword->GetMessageSet().Copy(m_message_set)) || OpStatus::IsError(add_keyword->GetMessageSet().Copy(m_message_set))) return NULL; add_keyword->DependsOn(remove_keyword.get(), protocol); if (m_to_folder) { ImapCommands::Move * move_to_folder = OP_NEW(ImapCommands::Move, (m_mailbox, m_to_folder, 0, 0)); if (!move_to_folder || OpStatus::IsError(move_to_folder->GetMessageSet().Copy(m_message_set))) { OP_DELETE(move_to_folder); return NULL; } move_to_folder->DependsOn(add_keyword.get(), protocol); } add_keyword.release(); return remove_keyword.release(); }
void remove_keywords(struct list_ustring* list,struct string_hash_ptr* keywords) { while (list!=NULL) { remove_keyword(list->string,keywords); list=list->next; } }