annotate sbr/m_maildir.c @ 3:f89a9a79e124

utf-8
author kono
date Wed, 20 Apr 2005 00:25:01 +0900
parents bce86c4163a3
children 441a2190cfae
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
bce86c4163a3 Initial revision
kono
parents:
diff changeset
1 /* m_maildir.c - get the path for the mail directory */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
2 #ifndef lint
bce86c4163a3 Initial revision
kono
parents:
diff changeset
3 static char ident[] = "@(#)$Id$";
bce86c4163a3 Initial revision
kono
parents:
diff changeset
4 #endif /* lint */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
5
bce86c4163a3 Initial revision
kono
parents:
diff changeset
6 #include "../h/mh.h"
bce86c4163a3 Initial revision
kono
parents:
diff changeset
7 #include <stdio.h>
bce86c4163a3 Initial revision
kono
parents:
diff changeset
8
bce86c4163a3 Initial revision
kono
parents:
diff changeset
9 #define CWD "./"
bce86c4163a3 Initial revision
kono
parents:
diff changeset
10 #define NCWD (sizeof CWD - 1)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
11 #define DOT "."
bce86c4163a3 Initial revision
kono
parents:
diff changeset
12 #define DOTDOT ".."
bce86c4163a3 Initial revision
kono
parents:
diff changeset
13 #define PWD "../"
bce86c4163a3 Initial revision
kono
parents:
diff changeset
14 #define NPWD (sizeof PWD - 1)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
15
bce86c4163a3 Initial revision
kono
parents:
diff changeset
16
bce86c4163a3 Initial revision
kono
parents:
diff changeset
17 static char mailfold[BUFSIZ];
bce86c4163a3 Initial revision
kono
parents:
diff changeset
18
bce86c4163a3 Initial revision
kono
parents:
diff changeset
19 static char *exmaildir ();
bce86c4163a3 Initial revision
kono
parents:
diff changeset
20
bce86c4163a3 Initial revision
kono
parents:
diff changeset
21
bce86c4163a3 Initial revision
kono
parents:
diff changeset
22 char *m_maildir (folder)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
23 register char *folder;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
24 {
bce86c4163a3 Initial revision
kono
parents:
diff changeset
25 register char *cp,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
26 *ep;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
27
bce86c4163a3 Initial revision
kono
parents:
diff changeset
28 if ((cp = exmaildir (folder))
bce86c4163a3 Initial revision
kono
parents:
diff changeset
29 && (ep = cp + strlen (cp) - 1) > cp
bce86c4163a3 Initial revision
kono
parents:
diff changeset
30 && *ep == '/')
bce86c4163a3 Initial revision
kono
parents:
diff changeset
31 *ep = 0;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
32
bce86c4163a3 Initial revision
kono
parents:
diff changeset
33 return cp;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
34 }
bce86c4163a3 Initial revision
kono
parents:
diff changeset
35
bce86c4163a3 Initial revision
kono
parents:
diff changeset
36 /* */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
37
bce86c4163a3 Initial revision
kono
parents:
diff changeset
38 char *m_mailpath (folder)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
39 register char *folder;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
40 {
bce86c4163a3 Initial revision
kono
parents:
diff changeset
41 register char *cp;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
42 char maildir[BUFSIZ];
bce86c4163a3 Initial revision
kono
parents:
diff changeset
43
bce86c4163a3 Initial revision
kono
parents:
diff changeset
44 if (*folder == '/'
bce86c4163a3 Initial revision
kono
parents:
diff changeset
45 || strncmp (folder, CWD, NCWD) == 0
bce86c4163a3 Initial revision
kono
parents:
diff changeset
46 || strcmp (folder, DOT) == 0
bce86c4163a3 Initial revision
kono
parents:
diff changeset
47 || strcmp (folder, DOTDOT) == 0
bce86c4163a3 Initial revision
kono
parents:
diff changeset
48 || strncmp (folder, PWD, NPWD) == 0)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
49 cp = path (folder, TFOLDER);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
50 else {
bce86c4163a3 Initial revision
kono
parents:
diff changeset
51 (void) strcpy (maildir, mailfold);/* preserve... */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
52 cp = getcpy (m_maildir (folder));
bce86c4163a3 Initial revision
kono
parents:
diff changeset
53 (void) strcpy (mailfold, maildir);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
54 }
bce86c4163a3 Initial revision
kono
parents:
diff changeset
55
bce86c4163a3 Initial revision
kono
parents:
diff changeset
56 return cp;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
57 }
bce86c4163a3 Initial revision
kono
parents:
diff changeset
58
bce86c4163a3 Initial revision
kono
parents:
diff changeset
59 /* */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
60
bce86c4163a3 Initial revision
kono
parents:
diff changeset
61 static char *exmaildir (folder)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
62 register char *folder;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
63 {
bce86c4163a3 Initial revision
kono
parents:
diff changeset
64 register char *cp,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
65 *pp;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
66
bce86c4163a3 Initial revision
kono
parents:
diff changeset
67 if (folder == NULL)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
68 folder = m_getfolder ();
bce86c4163a3 Initial revision
kono
parents:
diff changeset
69 if (*folder == '/'
bce86c4163a3 Initial revision
kono
parents:
diff changeset
70 || strncmp (folder, CWD, NCWD) == 0
bce86c4163a3 Initial revision
kono
parents:
diff changeset
71 || strcmp (folder, DOT) == 0
bce86c4163a3 Initial revision
kono
parents:
diff changeset
72 || strcmp (folder, DOTDOT) == 0
bce86c4163a3 Initial revision
kono
parents:
diff changeset
73 || strncmp (folder, PWD, NPWD) == 0) {
bce86c4163a3 Initial revision
kono
parents:
diff changeset
74 (void) strcpy (mailfold, folder);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
75 return mailfold;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
76 }
bce86c4163a3 Initial revision
kono
parents:
diff changeset
77
bce86c4163a3 Initial revision
kono
parents:
diff changeset
78 cp = mailfold;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
79 if ((pp = m_find ("path")) != NULL && *pp) {
bce86c4163a3 Initial revision
kono
parents:
diff changeset
80 if (*pp != '/') {
bce86c4163a3 Initial revision
kono
parents:
diff changeset
81 (void) sprintf (cp, "%s/", mypath);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
82 cp += strlen (cp);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
83 }
bce86c4163a3 Initial revision
kono
parents:
diff changeset
84 cp = copy (pp, cp);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
85 }
bce86c4163a3 Initial revision
kono
parents:
diff changeset
86 else
bce86c4163a3 Initial revision
kono
parents:
diff changeset
87 cp = copy (path ("./", TFOLDER), cp);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
88 if (cp[-1] != '/')
bce86c4163a3 Initial revision
kono
parents:
diff changeset
89 *cp++ = '/';
bce86c4163a3 Initial revision
kono
parents:
diff changeset
90 (void) strcpy (cp, folder);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
91
bce86c4163a3 Initial revision
kono
parents:
diff changeset
92 return mailfold;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
93 }