X-Git-Url: https://code.citadel.org/?p=citadel.git;a=blobdiff_plain;f=citadel%2Fmodules%2Fimap%2Fimap_search.c;fp=citadel%2Fmodules%2Fimap%2Fimap_search.c;h=f1b7f73e993ce26cc246a3f3effcd7c8070c48aa;hp=cad499ceb63ad2091768ae552a5d8c99b2243758;hb=9571de81331e169c042c630800bff1bde499c8a9;hpb=c51a64e8f8b42b6efd85f17c91178437d73a9c3d diff --git a/citadel/modules/imap/imap_search.c b/citadel/modules/imap/imap_search.c index cad499ceb..f1b7f73e9 100644 --- a/citadel/modules/imap/imap_search.c +++ b/citadel/modules/imap/imap_search.c @@ -1,21 +1,15 @@ /* * Implements IMAP's gratuitously complex SEARCH command. * - * Copyright (c) 2001-2012 by the citadel.org team + * Copyright (c) 2001-2015 by the citadel.org team * - * This program is open source software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 3. - * - * + * This program is open source software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 3. * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * - * - * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. */ #include "ctdl_module.h" @@ -121,7 +115,7 @@ int imap_do_search_msg(int seq, struct CtdlMessage *supplied_msg, else if (!strcasecmp(itemlist[pos].Key, "BCC")) { if (msg == NULL) { - msg = CtdlFetchMessage(Imap->msgids[seq-1], 1); + msg = CtdlFetchMessage(Imap->msgids[seq-1], 1, 1); need_to_free_msg = 1; } if (msg != NULL) { @@ -138,7 +132,7 @@ int imap_do_search_msg(int seq, struct CtdlMessage *supplied_msg, else if (!strcasecmp(itemlist[pos].Key, "BEFORE")) { if (msg == NULL) { - msg = CtdlFetchMessage(Imap->msgids[seq-1], 1); + msg = CtdlFetchMessage(Imap->msgids[seq-1], 1, 1); need_to_free_msg = 1; } if (msg != NULL) { @@ -157,14 +151,14 @@ int imap_do_search_msg(int seq, struct CtdlMessage *supplied_msg, /* If fulltext indexing is active, on this server, * all messages have already been qualified. */ - if (config.c_enable_fulltext) { + if (CtdlGetConfigInt("c_enable_fulltext")) { match = 1; } /* Otherwise, we have to do a slow search. */ else { if (msg == NULL) { - msg = CtdlFetchMessage(Imap->msgids[seq-1], 1); + msg = CtdlFetchMessage(Imap->msgids[seq-1], 1, 1); need_to_free_msg = 1; } if (msg != NULL) { @@ -179,7 +173,7 @@ int imap_do_search_msg(int seq, struct CtdlMessage *supplied_msg, else if (!strcasecmp(itemlist[pos].Key, "CC")) { if (msg == NULL) { - msg = CtdlFetchMessage(Imap->msgids[seq-1], 1); + msg = CtdlFetchMessage(Imap->msgids[seq-1], 1, 1); need_to_free_msg = 1; } if (msg != NULL) { @@ -225,7 +219,7 @@ int imap_do_search_msg(int seq, struct CtdlMessage *supplied_msg, else if (!strcasecmp(itemlist[pos].Key, "FROM")) { if (msg == NULL) { - msg = CtdlFetchMessage(Imap->msgids[seq-1], 1); + msg = CtdlFetchMessage(Imap->msgids[seq-1], 1, 1); need_to_free_msg = 1; } if (msg != NULL) { @@ -247,7 +241,7 @@ int imap_do_search_msg(int seq, struct CtdlMessage *supplied_msg, * examining the message body. */ if (msg == NULL) { - msg = CtdlFetchMessage(Imap->msgids[seq-1], 1); + msg = CtdlFetchMessage(Imap->msgids[seq-1], 1, 1); need_to_free_msg = 1; } @@ -277,7 +271,7 @@ int imap_do_search_msg(int seq, struct CtdlMessage *supplied_msg, else if (!strcasecmp(itemlist[pos].Key, "LARGER")) { if (msg == NULL) { - msg = CtdlFetchMessage(Imap->msgids[seq-1], 1); + msg = CtdlFetchMessage(Imap->msgids[seq-1], 1, 1); need_to_free_msg = 1; } if (msg != NULL) { @@ -304,7 +298,7 @@ int imap_do_search_msg(int seq, struct CtdlMessage *supplied_msg, else if (!strcasecmp(itemlist[pos].Key, "ON")) { if (msg == NULL) { - msg = CtdlFetchMessage(Imap->msgids[seq-1], 1); + msg = CtdlFetchMessage(Imap->msgids[seq-1], 1, 1); need_to_free_msg = 1; } if (msg != NULL) { @@ -334,7 +328,7 @@ int imap_do_search_msg(int seq, struct CtdlMessage *supplied_msg, else if (!strcasecmp(itemlist[pos].Key, "SENTBEFORE")) { if (msg == NULL) { - msg = CtdlFetchMessage(Imap->msgids[seq-1], 1); + msg = CtdlFetchMessage(Imap->msgids[seq-1], 1, 1); need_to_free_msg = 1; } if (msg != NULL) { @@ -350,7 +344,7 @@ int imap_do_search_msg(int seq, struct CtdlMessage *supplied_msg, else if (!strcasecmp(itemlist[pos].Key, "SENTON")) { if (msg == NULL) { - msg = CtdlFetchMessage(Imap->msgids[seq-1], 1); + msg = CtdlFetchMessage(Imap->msgids[seq-1], 1, 1); need_to_free_msg = 1; } if (msg != NULL) { @@ -366,7 +360,7 @@ int imap_do_search_msg(int seq, struct CtdlMessage *supplied_msg, else if (!strcasecmp(itemlist[pos].Key, "SENTSINCE")) { if (msg == NULL) { - msg = CtdlFetchMessage(Imap->msgids[seq-1], 1); + msg = CtdlFetchMessage(Imap->msgids[seq-1], 1, 1); need_to_free_msg = 1; } if (msg != NULL) { @@ -382,7 +376,7 @@ int imap_do_search_msg(int seq, struct CtdlMessage *supplied_msg, else if (!strcasecmp(itemlist[pos].Key, "SINCE")) { if (msg == NULL) { - msg = CtdlFetchMessage(Imap->msgids[seq-1], 1); + msg = CtdlFetchMessage(Imap->msgids[seq-1], 1, 1); need_to_free_msg = 1; } if (msg != NULL) { @@ -398,7 +392,7 @@ int imap_do_search_msg(int seq, struct CtdlMessage *supplied_msg, else if (!strcasecmp(itemlist[pos].Key, "SMALLER")) { if (msg == NULL) { - msg = CtdlFetchMessage(Imap->msgids[seq-1], 1); + msg = CtdlFetchMessage(Imap->msgids[seq-1], 1, 1); need_to_free_msg = 1; } if (msg != NULL) { @@ -411,7 +405,7 @@ int imap_do_search_msg(int seq, struct CtdlMessage *supplied_msg, else if (!strcasecmp(itemlist[pos].Key, "SUBJECT")) { if (msg == NULL) { - msg = CtdlFetchMessage(Imap->msgids[seq-1], 1); + msg = CtdlFetchMessage(Imap->msgids[seq-1], 1, 1); need_to_free_msg = 1; } if (msg != NULL) { @@ -424,7 +418,7 @@ int imap_do_search_msg(int seq, struct CtdlMessage *supplied_msg, else if (!strcasecmp(itemlist[pos].Key, "TEXT")) { if (msg == NULL) { - msg = CtdlFetchMessage(Imap->msgids[seq-1], 1); + msg = CtdlFetchMessage(Imap->msgids[seq-1], 1, 1); need_to_free_msg = 1; } if (msg != NULL) { @@ -439,7 +433,7 @@ int imap_do_search_msg(int seq, struct CtdlMessage *supplied_msg, else if (!strcasecmp(itemlist[pos].Key, "TO")) { if (msg == NULL) { - msg = CtdlFetchMessage(Imap->msgids[seq-1], 1); + msg = CtdlFetchMessage(Imap->msgids[seq-1], 1, 1); need_to_free_msg = 1; } if (msg != NULL) { @@ -571,7 +565,7 @@ void imap_do_search(int num_items, ConstStr *itemlist, int is_uid) { * text index to disqualify messages that don't have any chance of * matching. (Only do this if the index is enabled!!) */ - if (config.c_enable_fulltext) for (i=0; i<(num_items-1); ++i) { + if (CtdlGetConfigInt("c_enable_fulltext")) for (i=0; i<(num_items-1); ++i) { if (!strcasecmp(itemlist[i].Key, "BODY")) { CtdlModuleDoSearch(&fts_num_msgs, &fts_msgs, itemlist[i+1].Key, "fulltext"); if (fts_num_msgs > 0) {