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