summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Poznyakoff <gray@gnu.org>2019-03-26 22:18:41 +0200
committerSergey Poznyakoff <gray@gnu.org>2019-03-26 22:18:41 +0200
commit9f7eb0a63d0c8e406636c9ad9f0d12aeb5ca077c (patch)
tree541d1dcbfe9661abd030b3d5c229cdaaa748afac
parent60c5545ba8a5c9f4038b5587c96c19b80f538831 (diff)
downloadmailutils-9f7eb0a63d0c8e406636c9ad9f0d12aeb5ca077c.tar.gz
mailutils-9f7eb0a63d0c8e406636c9ad9f0d12aeb5ca077c.tar.bz2
Use mu_folder_scan in imap4d
* imap4d/list.c (list_fun): Don't check if the returned record matches refinfo->pfx->record. This is done by mu_folder_scan. (list_ref): Use mu_folder_scan.
-rw-r--r--imap4d/list.c19
1 files changed, 12 insertions, 7 deletions
diff --git a/imap4d/list.c b/imap4d/list.c
index 5b4dbd110..b2752f70f 100644
--- a/imap4d/list.c
+++ b/imap4d/list.c
@@ -36,11 +36,6 @@ list_fun (mu_folder_t folder, struct mu_list_response *resp, void *data)
36 size_t size; 36 size_t size;
37 char *p; 37 char *p;
38 38
39 if ((resp->type & MU_FOLDER_ATTRIBUTE_FILE)
40 && refinfo->pfx->record
41 && refinfo->pfx->record != resp->format)
42 return 0;
43
44 name = resp->name + refinfo->dirlen; 39 name = resp->name + refinfo->dirlen;
45 40
46 /* There can be only one INBOX */ 41 /* There can be only one INBOX */
@@ -126,6 +121,7 @@ list_ref (char const *ref, char const *wcard, char const *cwd,
126 mu_folder_t folder; 121 mu_folder_t folder;
127 char const *dir; 122 char const *dir;
128 mu_url_t url; 123 mu_url_t url;
124 struct mu_folder_scanner scn = MU_FOLDER_SCANNER_INITIALIZER;
129 125
130 if (!wcard[0]) 126 if (!wcard[0])
131 { 127 {
@@ -192,9 +188,18 @@ list_ref (char const *ref, char const *wcard, char const *cwd,
192 if (!*ref && 188 if (!*ref &&
193 mu_imap_wildmatch_ci (wcard, "INBOX", MU_HIERARCHY_DELIMITER) == 0) 189 mu_imap_wildmatch_ci (wcard, "INBOX", MU_HIERARCHY_DELIMITER) == 0)
194 io_untagged_response (RESP_NONE, "LIST (\\NoInferiors) NIL INBOX"); 190 io_untagged_response (RESP_NONE, "LIST (\\NoInferiors) NIL INBOX");
191
192 scn.pattern = (void*) wcard;
193 scn.enumfun = list_fun;
194 scn.enumdata = &refinfo;
195 if (refinfo.pfx->record)
196 {
197 mu_list_create (&scn.records);
198 mu_list_append (scn.records, refinfo.pfx->record);
199 }
195 200
196 mu_folder_enumerate (folder, NULL, (void*) wcard, 0, 0, NULL, 201 mu_folder_scan (folder, &scn);
197 list_fun, &refinfo); 202 mu_list_destroy (&scn.records);
198 mu_folder_destroy (&folder); 203 mu_folder_destroy (&folder);
199 free (refinfo.buf); 204 free (refinfo.buf);
200 return RESP_OK; 205 return RESP_OK;

Return to:

Send suggestions and report system problems to the System administrator.