BSD 4_4_Lite1 release
[unix-history] / usr / src / contrib / mh-6.8.3a / sbr / m_draft.c
CommitLineData
ad787160
C
1/* m_draft.c - construct the draft name */
2#ifndef lint
3static char ident[] = "@(#)$Id: m_draft.c,v 1.2 1992/12/15 00:20:22 jromine Exp $";
4#endif /* lint */
5
6#include "../h/mh.h"
7#include <errno.h>
8#include <stdio.h>
9#include <sys/types.h>
10#include <sys/stat.h>
11
12
13extern int errno;
14
15
16char *m_draft (folder, msg, use, isdf)
17register char *folder,
18 *msg;
19register int use,
20 *isdf;
21{
22 register char *cp;
23 register struct msgs *mp;
24 struct stat st;
25 static char buffer[BUFSIZ];
26
27 if (*isdf == NOTOK || folder == NULL || *folder == 0) {
28 if (*isdf == NOTOK || (cp = m_find ("Draft-Folder")) == NULL) {
29 *isdf = 0;
30 return m_maildir (msg && *msg ? msg : draft);
31 }
32 else
33 folder = path (*cp == '+' || *cp == '@' ? cp + 1 : cp,
34 *cp != '@' ? TFOLDER : TSUBCWF);
35 }
36 *isdf = 1;
37
38 (void) chdir (m_maildir (""));
39 (void) strcpy (buffer, m_maildir (folder));
40 if (stat (buffer, &st) == NOTOK) {
41 if (errno != ENOENT)
42 adios (buffer, "error on folder");
43 cp = concat ("Create folder \"", buffer, "\"? ", NULLCP);
44 if (!getanswer (cp))
45 done (0);
46 free (cp);
47 if (!makedir (buffer))
48 adios (NULLCP, "unable to create folder %s", buffer);
49 }
50
51 if (chdir (buffer) == NOTOK)
52 adios (buffer, "unable to change directory to");
53 if (!(mp = m_gmsg (folder)))
54 adios (NULLCP, "unable to read folder %s", folder);
55
56 if ((mp = m_remsg (mp, 0, MAXFOLDER)) == NULL)
57 adios (NULLCP, "unable to allocate folder storage");
58 mp -> msgflags |= MHPATH;
59
60 if (!m_convert (mp, msg && *msg ? msg : use ? "cur" : "new"))
61 done (1);
62 m_setseq (mp);
63 if (mp -> numsel > 1)
64 adios (NULLCP, "only one message draft at a time!");
65
66 (void) sprintf (buffer, "%s/%s", mp -> foldpath, m_name (mp -> lowsel));
67 cp = buffer;
68
69 m_setcur (mp, mp -> lowsel);
70 m_sync (mp);
71 m_fmsg (mp);
72
73 return cp;
74}