|
|
1.1 root 1: /* m_maildir.c - get the path for the mail directory */
2:
3: #include "../h/mh.h"
4: #include <stdio.h>
5:
6: #define CWD "./"
7: #define NCWD (sizeof CWD - 1)
8: #define DOT "."
9: #define DOTDOT ".."
10: #define PWD "../"
11: #define NPWD (sizeof PWD - 1)
12:
13:
14: static char mailfold[BUFSIZ];
15:
16: static char *exmaildir();
17:
18: char *
19: m_maildir(folder)
20: register char *folder;
21: {
22: register char *cp,
23: *ep;
24:
25: if ((cp = exmaildir (folder))
26: && (ep = cp + strlen (cp) - 1) > cp
27: && *ep == '/')
28: *ep = NULL;
29:
30: return cp;
31: }
32:
33: /* */
34:
35: char *
36: m_mailpath(folder)
37: register char *folder;
38: {
39: register char *cp;
40: char maildir[BUFSIZ];
41:
42: if (*folder == '/'
43: || strncmp (folder, CWD, NCWD) == 0
44: || strcmp (folder, DOT) == 0
45: || strcmp (folder, DOTDOT) == 0
46: || strncmp (folder, PWD, NPWD) == 0)
47: cp = path (folder, TFOLDER);
48: else {
49: (void) strcpy (maildir, mailfold);/* preserve... */
50: cp = getcpy (m_maildir (folder));
51: (void) strcpy (mailfold, maildir);
52: }
53:
54: return cp;
55: }
56:
57: /* */
58:
59: static char *
60: exmaildir(folder)
61: register char *folder;
62: {
63: register char *cp,
64: *pp;
65:
66: if (folder == NULL)
67: folder = m_getfolder ();
68: if (*folder == '/'
69: || strncmp (folder, CWD, NCWD) == 0
70: || strcmp (folder, DOT) == 0
71: || strcmp (folder, DOTDOT) == 0
72: || strncmp (folder, PWD, NPWD) == 0) {
73: (void) strcpy (mailfold, folder);
74: return mailfold;
75: }
76:
77: cp = mailfold;
78: if ((pp = m_find ("path")) != NULL && *pp) {
79: if (*pp != '/') {
80: (void) sprintf (cp, "%s/", mypath);
81: cp += strlen (cp);
82: }
83: cp = copy (pp, cp);
84: }
85: else
86: cp = copy (path ("./", TFOLDER), cp);
87: if (cp[-1] != '/')
88: *cp++ = '/';
89: (void) strcpy (cp, folder);
90:
91: return mailfold;
92: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.