#include <errno.h>
+/*
+** `which' should either be "cur" to use the current draft
+** or "new" to start with a new draft.
+*/
char *
-m_draft (char *folder, char *msg, int use, int *isdf)
+m_draft(char *which)
{
register char *cp;
register struct msgs *mp;
static char buffer[BUFSIZ];
+ char *folder;
- if (*isdf == -1 || folder == NULL || *folder == '\0') {
- if (*isdf == -1 || (cp = context_find ("Draft-Folder")) == NULL) {
- *isdf = 0;
- return m_maildir (msg && *msg ? msg : draft);
- } else {
- folder = path (*cp == '+' || *cp == '@' ? cp + 1 : cp,
- *cp != '@' ? TFOLDER : TSUBCWF);
- }
- }
- *isdf = 1;
+ cp = draftfolder;
+ folder = path (*cp == '+' || *cp == '@' ? cp + 1 : cp,
+ *cp != '@' ? TFOLDER : TSUBCWF);
chdir (m_maildir (""));
strncpy (buffer, m_maildir (folder), sizeof(buffer));
mp->msgflags |= ALLOW_NEW; /* allow the "new" sequence */
/*
- * If we have been give a valid message name, then use that.
- * Else, if we are given the "use" option, then use the
- * current message. Else, use special sequence "new".
+ * The draft message name to return is defined by `which'.
+ * Usually it is "cur" (for the current draft) or "new"
+ * (to start a new draft).
*/
- if (!m_convert (mp, msg && *msg ? msg : use ? "cur" : "new"))
+ if (!m_convert (mp, which))
done (1);
seq_setprev (mp);
- if (mp->numsel > 1)
- adios (NULL, "only one message draft at a time!");
-
- snprintf (buffer, sizeof(buffer), "%s/%s", mp->foldpath, m_name (mp->lowsel));
- cp = buffer;
-
- seq_setcur (mp, mp->lowsel);/* set current message for folder */
- seq_save (mp); /* synchronize message sequences */
- folder_free (mp); /* free folder/message structure */
+ snprintf (buffer, sizeof(buffer), "%s/%s", mp->foldpath,
+ m_name (mp->lowsel));
+ seq_setcur (mp, mp->lowsel);
+ seq_save (mp);
+ folder_free (mp);
- return cp;
+ return buffer;
}