diff options
author | Sergey Poznyakoff <gray@gnu.org> | 2021-05-22 18:27:56 +0300 |
---|---|---|
committer | Sergey Poznyakoff <gray@gnu.org> | 2021-05-22 18:49:49 +0300 |
commit | 3f74f2ada1d077751b3b73bbc828c1918dde9ebf (patch) | |
tree | a37f2d21de2bb58c61f3e59e6d790bdc9114af6e /libmailutils/tests | |
parent | 3eb73b1f9fe2ec48f05cc6d38202886bf6fd4072 (diff) | |
download | mailutils-3f74f2ada1d077751b3b73bbc828c1918dde9ebf.tar.gz mailutils-3f74f2ada1d077751b3b73bbc828c1918dde9ebf.tar.bz2 |
folder scan returns mailbox names without the leading directory prefix.
For example, suppose folder /foo/bar contains mailboxes a, b, and c.
Then scanning the mu_folder_t object for '/foo' will return
'bar/a', 'bar/b', and 'bar/c'. Scanning the mu_folder_t for '/foo/bar'
will return 'a', 'b', and 'c', and so on.
* libmailutils/string/mkfilename.c (mu_make_file_name_suf): Reasonable
handling of corner cases. Document its behavior.
* libmailutils/mailbox/fsfolder.c (struct folder_scan_data): New member:
prefix_len
(list_helper): Return the portion of the file name after the base directory
prefix.
(_fsfolder_list): Initialize sdata.prefix_len.
* libmailutils/tests/fsfolder.c: Remove prefix handling code.
* libmailutils/tests/fsfolder00.at: Change expectations.
* libmailutils/tests/fsfolder02.at: Likewise.
* libmailutils/tests/fsfolder03.at: Likewise.
* libmailutils/tests/fsfolder04.at: Likewise.
* include/mailutils/sys/imap.h (struct _mu_imap): New members: separator
and prefix_len.
* libproto/imap/folder.c (_mu_imap_folder_separator): New function.
(_mu_imap_folder_pathname): New function.
(_mu_imap_folder_list): Prefix the original refname with the base
directory of the folder.
(_mu_imap_folder_lsub,_mu_imap_folder_subscribe)
(_mu_imap_folder_unsubscribe,_mu_imap_folder_delete)
(_mu_imap_folder_rename): Adjust input mailbox names.
* libproto/imap/genlist.c (list_untagged_handler): Return the portion of
the file name after the base directory prefix.
* libproto/imap/tests/imapfolder.c: Minor change.
Update for changed folder behavior
* imap4d/list.c (struct refinfo): Replace dirlen with delim - a
character to be inserted between the original reference and mailbox name.
(list_fun): Insert delimiter, if required.
(list_ref): Set refinfo.delim, unless the reference prefix already
ends with a delimiter or is the same as the namespace prefix.
Mail 'folders' command: add support for remote folders.
* mail/folders.c: Handle remote folders correctly.
* mail/mail.h (util_get_folder): New proto.
* mail/mailline.c (struct filegen): Remove path_len.
(new_folder): Rename to util_get_folder and move to util.c
(filegen_init): Initialize prefix_len from the argument.
* mail/util.c (util_get_folder): New function.
Diffstat (limited to 'libmailutils/tests')
-rw-r--r-- | libmailutils/tests/fsfolder.c | 8 | ||||
-rw-r--r-- | libmailutils/tests/fsfolder00.at | 22 | ||||
-rw-r--r-- | libmailutils/tests/fsfolder02.at | 2 | ||||
-rw-r--r-- | libmailutils/tests/fsfolder03.at | 14 | ||||
-rw-r--r-- | libmailutils/tests/fsfolder04.at | 12 |
5 files changed, 27 insertions, 31 deletions
diff --git a/libmailutils/tests/fsfolder.c b/libmailutils/tests/fsfolder.c index 6a4a8ec39..3f8333406 100644 --- a/libmailutils/tests/fsfolder.c +++ b/libmailutils/tests/fsfolder.c @@ -37,7 +37,6 @@ #include "tesh.h" int sort_option; -int prefix_len; static int compare_response (void const *a, void const *b) @@ -81,7 +80,7 @@ com_list (int argc, char **argv, mu_assoc_t options, void *env) { if (sort_option) mu_list_sort (list, compare_response); - mu_list_foreach (list, _print_list_entry, &prefix_len); + mu_list_foreach (list, _print_list_entry, NULL); mu_list_destroy (&list); } return 0; @@ -211,7 +210,7 @@ com_scan (int argc, char **argv, mu_assoc_t options, void *env) { if (sort_option) mu_list_sort (scn.result, compare_response); - mu_list_foreach (scn.result, _print_list_entry, &prefix_len); + mu_list_foreach (scn.result, _print_list_entry, NULL); mu_list_destroy (&scn.result); } mu_list_destroy (&scn.records); @@ -347,9 +346,6 @@ main (int argc, char **argv) if (fname[0] != '/') { char *cwd = mu_getcwd (); - prefix_len = strlen (cwd); - if (cwd[prefix_len-1] != '/') - prefix_len++; fname = mu_make_file_name (cwd, fname); free (cwd); } diff --git a/libmailutils/tests/fsfolder00.at b/libmailutils/tests/fsfolder00.at index e82ef28b2..574e74068 100644 --- a/libmailutils/tests/fsfolder00.at +++ b/libmailutils/tests/fsfolder00.at @@ -34,20 +34,20 @@ fsfolder -name=dir -sort dnl ], [0], [listing '' '*' --f / 0 dir/bar --f / 0 dir/foo --f / 0 dir/foo.mbox -d- / 0 dir/subdir --f / 1 dir/subdir/baz.mbox --f / 1 dir/subdir/file +-f / 0 bar +-f / 0 foo +-f / 0 foo.mbox +d- / 0 subdir +-f / 1 subdir/baz.mbox +-f / 1 subdir/file listing 'subdir' '*' --f / 0 dir/subdir/baz.mbox --f / 0 dir/subdir/file +-f / 0 subdir/baz.mbox +-f / 0 subdir/file listing '' '*.mbox' --f / 0 dir/foo.mbox --f / 1 dir/subdir/baz.mbox +-f / 0 foo.mbox +-f / 1 subdir/baz.mbox listing 'subdir' '*.mbox' --f / 0 dir/subdir/baz.mbox +-f / 0 subdir/baz.mbox ]) AT_CLEANUP diff --git a/libmailutils/tests/fsfolder02.at b/libmailutils/tests/fsfolder02.at index f8d3fdfb9..562e7e3e2 100644 --- a/libmailutils/tests/fsfolder02.at +++ b/libmailutils/tests/fsfolder02.at @@ -29,7 +29,7 @@ fsfolder -name=dir rename bar baz [renaming foo to bar rename successful listing '' '*' --f / 0 dir/bar +-f / 0 bar renaming bar to baz ], [fsfolder: mu_folder_rename(bar) failed: File exists diff --git a/libmailutils/tests/fsfolder03.at b/libmailutils/tests/fsfolder03.at index 0bee92adb..0b9fd9578 100644 --- a/libmailutils/tests/fsfolder03.at +++ b/libmailutils/tests/fsfolder03.at @@ -32,13 +32,13 @@ fsfolder -name=dir -sort scan -maxdepth=2 ], [0], [maxdepth=1 -d- / 0 dir/a -d- / 0 dir/b +d- / 0 a +d- / 0 b maxdepth=2 -d- / 0 dir/a -d- / 0 dir/b -d- / 1 dir/a/b -d- / 1 dir/b/b -d- / 1 dir/b/c +d- / 0 a +d- / 0 b +d- / 1 a/b +d- / 1 b/b +d- / 1 b/c ]) AT_CLEANUP diff --git a/libmailutils/tests/fsfolder04.at b/libmailutils/tests/fsfolder04.at index 5a6929958..4e08e7db9 100644 --- a/libmailutils/tests/fsfolder04.at +++ b/libmailutils/tests/fsfolder04.at @@ -29,13 +29,13 @@ fsfolder -name=dir -sort scan -type=reg ], [0], [type=any --f / 0 dir/1 -d- / 0 dir/a -d- / 0 dir/b --f / 1 dir/a/2 +-f / 0 1 +d- / 0 a +d- / 0 b +-f / 1 a/2 type=reg --f / 0 dir/1 --f / 1 dir/a/2 +-f / 0 1 +-f / 1 a/2 ]) AT_CLEANUP |