- if (*cp == '+' || *cp == '@') {
- if (folder)
- adios (NULL, "only one folder at a time!");
- folder = pluspath (cp);
- } else
- app_msgarg(&msgs, cp);
- }
-
- if (!file)
- file = "./msgbox";
- file = path (file, TFILE);
-
- /*
- * Check if file to be created (or appended to)
- * exists. If not, ask for confirmation.
- */
- if (stat (file, &st) == NOTOK) {
- if (errno != ENOENT)
- adios (file, "error on file");
- cp = concat ("Create file \"", file, "\"? ", NULL);
- if (!getanswer (cp))
- done (1);
- free (cp);
- }
-
- if (!context_find ("path"))
- free (path ("./", TFOLDER));
-
- /* default is to pack whole folder */
- if (!msgs.size)
- app_msgarg(&msgs, "all");
-
- 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 */
-
- /* open and lock new maildrop file */
- if ((md = mbx_open(file, mbx_style, getuid(), getgid(), m_gmprot())) == NOTOK)
- adios (file, "unable to open");
-
- /* copy all the SELECTED messages to the file */
- for (msgnum = mp->lowsel; msgnum <= mp->hghsel; msgnum++)
- if (is_selected(mp, msgnum)) {
- if ((fd = open (msgnam = m_name (msgnum), O_RDONLY)) == NOTOK) {
- admonish (msgnam, "unable to read message");
- break;
- }
-
- if (mbx_copy (file, mbx_style, md, fd, mapping, NULL, 1) == NOTOK)
- adios (file, "error writing to file");
-
- close (fd);
- }
-
- /* close and unlock maildrop file */
- mbx_close (file, md);