BSD 4_4_Lite1 release
[unix-history] / usr / src / contrib / mh-6.8.3a / sbr / m_maildir.c
CommitLineData
ad787160
C
1/* m_maildir.c - get the path for the mail directory */
2#ifndef lint
3static char ident[] = "@(#)$Id: m_maildir.c,v 1.6 1992/12/15 00:20:22 jromine Exp $";
4#endif /* lint */
5
6#include "../h/mh.h"
7#include <stdio.h>
8
9#define CWD "./"
10#define NCWD (sizeof CWD - 1)
11#define DOT "."
12#define DOTDOT ".."
13#define PWD "../"
14#define NPWD (sizeof PWD - 1)
15
16
17static char mailfold[BUFSIZ];
18
19static char *exmaildir ();
20
21
22char *m_maildir (folder)
23register char *folder;
24{
25 register char *cp,
26 *ep;
27
28 if ((cp = exmaildir (folder))
29 && (ep = cp + strlen (cp) - 1) > cp
30 && *ep == '/')
31 *ep = 0;
32
33 return cp;
34}
35
36/* \f */
37
38char *m_mailpath (folder)
39register char *folder;
40{
41 register char *cp;
42 char maildir[BUFSIZ];
43
44 if (*folder == '/'
45 || strncmp (folder, CWD, NCWD) == 0
46 || strcmp (folder, DOT) == 0
47 || strcmp (folder, DOTDOT) == 0
48 || strncmp (folder, PWD, NPWD) == 0)
49 cp = path (folder, TFOLDER);
50 else {
51 (void) strcpy (maildir, mailfold);/* preserve... */
52 cp = getcpy (m_maildir (folder));
53 (void) strcpy (mailfold, maildir);
54 }
55
56 return cp;
57}
58
59/* \f */
60
61static char *exmaildir (folder)
62register char *folder;
63{
64 register char *cp,
65 *pp;
66
67 if (folder == NULL)
68 folder = m_getfolder ();
69 if (*folder == '/'
70 || strncmp (folder, CWD, NCWD) == 0
71 || strcmp (folder, DOT) == 0
72 || strcmp (folder, DOTDOT) == 0
73 || strncmp (folder, PWD, NPWD) == 0) {
74 (void) strcpy (mailfold, folder);
75 return mailfold;
76 }
77
78 cp = mailfold;
79 if ((pp = m_find ("path")) != NULL && *pp) {
80 if (*pp != '/') {
81 (void) sprintf (cp, "%s/", mypath);
82 cp += strlen (cp);
83 }
84 cp = copy (pp, cp);
85 }
86 else
87 cp = copy (path ("./", TFOLDER), cp);
88 if (cp[-1] != '/')
89 *cp++ = '/';
90 (void) strcpy (cp, folder);
91
92 return mailfold;
93}