+/* This should be optimised (eg with a tree or hash) */
+static int uid2msgno (IMAP_DATA* idata, int uid) {
+ int i;
+
+ for (i = 0; i < idata->ctx->msgcount; i++) {
+ HEADER* h = idata->ctx->hdrs[i];
+ if (HEADER_DATA(h)->uid == uid)
+ return i;
+ }
+
+ return -1;
+}
+
+/* cmd_parse_search: store SEARCH response for later use */
+static void cmd_parse_search (IMAP_DATA* idata, char* s) {
+ unsigned int uid;
+ int msgno;
+
+ while ((s = imap_next_word (s)) && *s != '\0') {
+ uid = atoi (s);
+ msgno = uid2msgno (idata, uid);
+
+ if (msgno >= 0)
+ idata->ctx->hdrs[uid2msgno (idata, uid)]->matched = 1;
+ }
+}
+