]>
diplodocus.org Git - nmh/blob - sbr/path.c
3 * path.c -- return a pathname
7 * This code is Copyright (c) 2002, by the authors of nmh. See the
8 * COPYRIGHT file in the root directory of the nmh distribution for
9 * complete copyright information.
15 #define NCWD (sizeof(CWD) - 1)
19 #define NPWD (sizeof(PWD) - 1)
26 static char *expath(char *,int);
27 static void compath(char *);
31 path(char *name
, int flag
)
33 register char *cp
, *ep
;
35 if ((cp
= expath (name
, flag
))
36 && (ep
= cp
+ strlen (cp
) - 1) > cp
45 expath (char *name
, int flag
)
47 register char *cp
, *ep
;
50 if (flag
== TSUBCWF
) {
51 snprintf (buffer
, sizeof(buffer
), "%s/%s", getfolder (1), name
);
52 name
= m_mailpath (buffer
);
54 snprintf (buffer
, sizeof(buffer
), "%s/", m_maildir (""));
55 if (ssequal (buffer
, name
)) {
57 name
= getcpy (name
+ strlen (buffer
));
65 && (strncmp (name
, CWD
, NCWD
)
67 && strcmp (name
, DOTDOT
)
68 && strncmp (name
, PWD
, NPWD
))))
74 if (strcmp (name
, DOT
) == 0 || strcmp (name
, CWD
) == 0)
77 ep
= pwds
+ strlen (pwds
);
78 if ((cp
= strrchr(pwds
, '/')) == NULL
)
84 if (strncmp (name
, CWD
, NCWD
) == 0)
87 if (strcmp (name
, DOTDOT
) == 0 || strcmp (name
, PWD
) == 0) {
88 snprintf (buffer
, sizeof(buffer
), "%.*s", cp
- pwds
, pwds
);
89 return getcpy (buffer
);
92 if (strncmp (name
, PWD
, NPWD
) == 0)
97 snprintf (buffer
, sizeof(buffer
), "%.*s/%s", cp
- pwds
, pwds
, name
);
98 return getcpy (buffer
);
105 register char *cp
, *dp
;
119 for (dp
= cp
; *dp
== '/'; dp
++)
125 if (strcmp (cp
, DOT
) == 0) {
131 if (strcmp (cp
, DOTDOT
) == 0) {
132 for (cp
-= 2; cp
> f
; cp
--)
140 if (strncmp (cp
, PWD
, NPWD
) == 0) {
141 for (dp
= cp
- 2; dp
> f
; dp
--)
146 strcpy (dp
, cp
+ NPWD
- 1);
150 if (strncmp (cp
, CWD
, NCWD
) == 0) {
151 strcpy (cp
- 1, cp
+ NCWD
- 1);