/* path.c - return a pathname */
#define NCWD (sizeof CWD - 1)
#define NPWD (sizeof PWD - 1)
if ((cp
= expath (name
, flag
))
&& (ep
= cp
+ strlen (cp
) - 1) > cp
static char *expath (name
, flag
)
(void) sprintf (buffer
, "%s/%s", m_getfolder (), name
);
name
= m_mailpath (buffer
);
(void) sprintf (buffer
, "%s/", m_maildir (""));
if (ssequal (buffer
, name
)) {
name
= getcpy (name
+ strlen (buffer
));
&& (strncmp (name
, CWD
, NCWD
)
&& strncmp (name
, PWD
, NPWD
))))
if (strcmp (name
, DOT
) == 0 || strcmp (name
, CWD
) == 0)
ep
= pwds
+ strlen (pwds
);
if ((cp
= rindex (pwds
, '/')) == NULL
)
if (strncmp (name
, CWD
, NCWD
) == 0)
if (strcmp (name
, DOTDOT
) == 0 || strcmp (name
, PWD
) == 0) {
(void) sprintf (buffer
, "%.*s", cp
- pwds
, pwds
);
if (strncmp (name
, PWD
, NPWD
) == 0)
(void) sprintf (buffer
, "%.*s/%s", cp
- pwds
, pwds
, name
);
for (dp
= cp
; *dp
== '/'; dp
++)
(void) strcpy (cp
--, dp
);
if (strcmp (cp
, DOT
) == 0) {
if (strcmp (cp
, DOTDOT
) == 0) {
for (cp
-= 2; cp
> f
; cp
--)
if (strncmp (cp
, PWD
, NPWD
) == 0) {
for (dp
= cp
- 2; dp
> f
; dp
--)
(void) strcpy (dp
, cp
+ NPWD
- 1);
if (strncmp (cp
, CWD
, NCWD
) == 0) {
(void) strcpy (cp
- 1, cp
+ NCWD
- 1);