Commit | Line | Data |
---|---|---|
ad787160 C |
1 | /* m_maildir.c - get the path for the mail directory */ |
2 | #ifndef lint | |
3 | static 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 | ||
17 | static char mailfold[BUFSIZ]; | |
18 | ||
19 | static char *exmaildir (); | |
20 | ||
21 | ||
22 | char *m_maildir (folder) | |
23 | register 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 | ||
38 | char *m_mailpath (folder) | |
39 | register 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 | ||
61 | static char *exmaildir (folder) | |
62 | register 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 | } |