X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/5dd6771b28c257af405d7248639ed0e3bcdce38b..fc5bc39368b0c7e05bb5c62a84c44e3bdcbbb1c2:/sbr/m_draft.c diff --git a/sbr/m_draft.c b/sbr/m_draft.c index e4791869..342f44f0 100644 --- a/sbr/m_draft.c +++ b/sbr/m_draft.c @@ -1,36 +1,50 @@ - -/* - * m_draft.c -- construct the name of a draft message +/* m_draft.c -- construct the name of a draft message * * This code is Copyright (c) 2002, by the authors of nmh. See the * COPYRIGHT file in the root directory of the nmh distribution for * complete copyright information. */ -#include -#include -#include +#include "h/mh.h" +#include "m_name.h" +#include "seq_setprev.h" +#include "seq_setcur.h" +#include "seq_save.h" +#include "m_draft.h" +#include "m_convert.h" +#include "folder_read.h" +#include "folder_realloc.h" +#include "folder_free.h" +#include "context_find.h" +#include "path.h" +#include "error.h" +#include "h/utils.h" +#include "m_maildir.h" +#include "h/done.h" +/* Does not return NULL. */ char * m_draft (char *folder, char *msg, int use, int *isdf) { - register char *cp; - register struct msgs *mp; + char *cp; + struct msgs *mp; static char buffer[BUFSIZ]; 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); } + + folder = path (*cp == '+' || *cp == '@' ? cp + 1 : cp, + *cp != '@' ? TFOLDER : TSUBCWF); } *isdf = 1; - chdir (m_maildir ("")); + if (chdir (m_maildir ("")) < 0) { + advise (m_maildir (""), "chdir"); + } strncpy (buffer, m_maildir (folder), sizeof(buffer)); create_folder (buffer, 0, done); @@ -38,8 +52,8 @@ m_draft (char *folder, char *msg, int use, int *isdf) if (chdir (buffer) == -1) adios (buffer, "unable to change directory to"); - if (!(mp = folder_read (folder))) - adios (NULL, "unable to read folder %s", folder); + if (!(mp = folder_read (folder, 1))) + die("unable to read folder %s", folder); /* * Make sure we have enough message status space for all @@ -49,10 +63,10 @@ m_draft (char *folder, char *msg, int use, int *isdf) */ if (mp->hghmsg >= mp->hghoff) { if (!(mp = folder_realloc (mp, 1, mp->hghmsg + 10))) - adios (NULL, "unable to allocate folder storage"); + die("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"); + die("unable to allocate folder storage"); } mp->msgflags |= ALLOW_NEW; /* allow the "new" sequence */ @@ -67,7 +81,7 @@ m_draft (char *folder, char *msg, int use, int *isdf) seq_setprev (mp); if (mp->numsel > 1) - adios (NULL, "only one message draft at a time!"); + die("only one message draft at a time!"); snprintf (buffer, sizeof(buffer), "%s/%s", mp->foldpath, m_name (mp->lowsel)); cp = buffer;