diff options
author | Sergey Poznyakoff <gray@gnu.org> | 2019-03-26 22:18:41 +0200 |
---|---|---|
committer | Sergey Poznyakoff <gray@gnu.org> | 2019-03-26 22:18:41 +0200 |
commit | 9f7eb0a63d0c8e406636c9ad9f0d12aeb5ca077c (patch) | |
tree | 541d1dcbfe9661abd030b3d5c229cdaaa748afac | |
parent | 60c5545ba8a5c9f4038b5587c96c19b80f538831 (diff) | |
download | mailutils-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.c | 19 |
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; |