Fix spelling and encoding errors in manpages and an error message
[mmh] / sbr / m_draft.c
index 3920315..ee85790 100644 (file)
@@ -9,58 +9,50 @@
 #include <h/mh.h>
 #include <h/utils.h>
 #include <errno.h>
+#include <sysexits.h>
 
 
 /*
-**  `which' should either be "cur" to use the current draft
-**  or "new" to start with a new draft.
+**  `which' should either be the cur sequence to use the current draft
+**  or the beyond sequence to start with a new draft.
 */
 char *
 m_draft(char *which)
 {
-       register char *cp;
-       register struct msgs *mp;
+       struct msgs *mp;
        static char buffer[BUFSIZ];
        char *folder;
 
-       cp = draftfolder;
-       folder = path(*cp == '+' || *cp == '@' ? cp + 1 : cp,
-                       *cp != '@' ? TFOLDER : TSUBCWF);
-
-       chdir(m_maildir(""));
-       strncpy(buffer, m_maildir(folder), sizeof(buffer));
-
-       create_folder(buffer, 0, done);
-
-       if (chdir(buffer) == -1)
-               adios(buffer, "unable to change directory to");
-
-       if (!(mp = folder_read(folder)))
-               adios(NULL, "unable to read folder %s", folder);
+       folder = mh_xstrdup(toabsdir(draftfolder));
+       create_folder(folder, 0, exit);
+       if (!(mp = folder_read(folder))) {
+               adios(EX_IOERR, NULL, "unable to read folder %s", folder);
+       }
+       mh_free0(&folder);
 
        /*
        ** Make sure we have enough message status space for all
-       ** the message numbers from 1 to "new", since we might
+       ** the message numbers from 1 to one beyond last, since we might
        ** select an empty slot.  If we add more space at the
        ** end, go ahead and add 10 additional slots.
        */
        if (mp->hghmsg >= mp->hghoff) {
                if (!(mp = folder_realloc(mp, 1, mp->hghmsg + 10)))
-                       adios(NULL, "unable to allocate folder storage");
+                       adios(EX_OSERR, NULL, "unable to allocate folder storage");
        } else if (mp->lowoff > 1) {
                if (!(mp = folder_realloc(mp, 1, mp->hghoff)))
-                       adios(NULL, "unable to allocate folder storage");
+                       adios(EX_OSERR, NULL, "unable to allocate folder storage");
        }
 
-       mp->msgflags |= ALLOW_NEW;  /* allow the "new" sequence */
+       mp->msgflags |= ALLOW_BEYOND;  /* allow the beyond sequence */
 
        /*
        ** The draft message name to return is defined by `which'.
-       ** Usually it is "cur" (for the current draft) or "new"
+       ** Usually it is seq_cur (for the current draft) or seq_beyond
        ** (to start a new draft).
        */
        if (!m_convert(mp, which))
-               done(1);
+               exit(EX_SOFTWARE);
        seq_setprev(mp);
 
        snprintf(buffer, sizeof(buffer), "%s/%s", mp->foldpath,