summaryrefslogtreecommitdiff
path: root/testsuite
diff options
context:
space:
mode:
authorSergey Poznyakoff <gray@gnu.org.ua>2017-06-20 00:39:18 +0300
committerSergey Poznyakoff <gray@gnu.org.ua>2017-06-20 00:39:18 +0300
commit455554b8b04054e1db41b72426f7ee9d8579acf5 (patch)
tree8b6ff512af954dcf4c6cc1525b58b11e35788d1d /testsuite
parent1ddc81a18a3f1491494ff7ec3a21e1bbcabf265a (diff)
downloadmailutils-455554b8b04054e1db41b72426f7ee9d8579acf5.tar.gz
mailutils-455554b8b04054e1db41b72426f7ee9d8579acf5.tar.bz2
API for formatting message sets on output
* libmailutils/msgset/print.c (mu_msgset_formats): New global. (mu_stream_msgset_format): New function. * include/mailutils/msgset.h (mu_msgset_format): New struct. (mu_msgset_fmt_imap, mu_msgset_fmt_mh): New defines. (MU_MSGSET_IGNORE_TRANSERR): New flag (mu_msgset_copy, mu_msgset_translate): New protos. (mu_stream_msgset_format, mu_msgset_imap_print): New protos. (mu_msgset_print): Deprecate. * libmailutils/imapio/sendmsgset.c: Use mu_msgset_imap_print instead of mu_msgset_print. * mu/libexec/imap.c: Likewise. * libmailutils/msgset/Makefile.am: Add copy.c * libmailutils/msgset/add.c (mu_msgset_add_range): Translate if message set mode doesn't match the requested one. * libmailutils/msgset/sub.c (mu_msgset_sub_range): Likewise. * libmailutils/msgset/trans.c (_mu_msgset_translate_pair): Act according to the mode argument. (mu_msgset_translate): New function. * libmailutils/tests/msgset.c: New option -mh * mh/mh_sequence.c (write_sequence): Rewrite. * testsuite/msgset.c: Optionally translate uids to msgnums and vice-versa.
Diffstat (limited to 'testsuite')
-rw-r--r--testsuite/msgset.c20
1 files changed, 17 insertions, 3 deletions
diff --git a/testsuite/msgset.c b/testsuite/msgset.c
index 18a62a244..215c3d585 100644
--- a/testsuite/msgset.c
+++ b/testsuite/msgset.c
@@ -79,13 +79,16 @@ main (int argc, char **argv)
{
int i;
char *msgset_string = NULL;
- mu_msgset_t msgset;
+ mu_msgset_t msgset, outset;
int create_mode = MU_MSGSET_NUM;
int parse_mode = MU_MSGSET_NUM;
+ int output_mode = MU_MSGSET_NUM;
+ int output_flags = 0;
+ mu_msgset_format_t format = mu_msgset_fmt_imap;
mu_mailbox_t mbox = NULL;
mu_set_program_name (argv[0]);
- mu_registrar_record (mu_mbox_record);
+ mu_register_local_mbox_formats ();
for (i = 1; i < argc; i++)
{
char *arg = argv[i];
@@ -114,6 +117,14 @@ main (int argc, char **argv)
MU_ASSERT (mu_mailbox_create (&mbox, arg + 9));
MU_ASSERT (mu_mailbox_open (mbox, MU_STREAM_READ));
}
+ else if (strcmp (arg, "-mh") == 0)
+ format = mu_msgset_fmt_mh;
+ else if (strcmp (arg, "-printuid") == 0)
+ output_mode = MU_MSGSET_UID;
+ else if (strcmp (arg, "-printnum") == 0)
+ output_mode = MU_MSGSET_NUM;
+ else if (strcmp (arg, "-ignore-error") == 0)
+ output_flags = MU_MSGSET_IGNORE_TRANSERR;
else
break;
}
@@ -230,8 +241,11 @@ main (int argc, char **argv)
return 1;
}
}
- MU_ASSERT (mu_msgset_print (mu_strout, msgset));
+
+ MU_ASSERT (mu_msgset_translate (&outset, msgset, output_mode|output_flags));
+ MU_ASSERT (mu_stream_msgset_format (mu_strout, format, outset));
mu_printf ("\n");
+ mu_msgset_free (outset);
mu_msgset_free (msgset);
return 0;

Return to:

Send suggestions and report system problems to the System administrator.