+ /*
+ * check if message is coming from file
+ */
+ if (file) {
+ if (!(cts = (CT *) calloc ((size_t) 2, sizeof(*cts))))
+ adios (NULL, "out of memory");
+ ctp = cts;
+
+ if ((ct = parse_mime (file)));
+ *ctp++ = ct;
+ } else {
+ /*
+ * message(s) are coming from a folder
+ */
+ if (!msgs.size)
+ app_msgarg(&msgs, "cur");
+ if (!folder)
+ folder = getfolder (1);
+ maildir = m_maildir (folder);
+
+ if (chdir (maildir) == NOTOK)
+ adios (maildir, "unable to change directory to");
+
+ /* read folder and create message structure */
+ if (!(mp = folder_read (folder)))
+ adios (NULL, "unable to read folder %s", folder);
+
+ /* check for empty folder */
+ if (mp->nummsg == 0)
+ adios (NULL, "no messages in %s", folder);
+
+ /* parse all the message ranges/sequences and set SELECTED */
+ for (msgnum = 0; msgnum < msgs.size; msgnum++)
+ if (!m_convert (mp, msgs.msgs[msgnum]))
+ done (1);
+ seq_setprev (mp); /* set the previous-sequence */
+
+ if (!(cts = (CT *) calloc ((size_t) (mp->numsel + 1), sizeof(*cts))))
+ adios (NULL, "out of memory");
+ ctp = cts;
+
+ for (msgnum = mp->lowsel; msgnum <= mp->hghsel; msgnum++) {
+ if (is_selected(mp, msgnum)) {
+ char *msgnam;
+
+ msgnam = m_name (msgnum);
+ if ((ct = parse_mime (msgnam)))
+ *ctp++ = ct;
+ }
+ }