]>
diplodocus.org Git - nmh/blob - sbr/path.c
3 * path.c -- return a pathname
11 #define NCWD (sizeof(CWD) - 1)
15 #define NPWD (sizeof(PWD) - 1)
22 static char *expath(char *,int);
23 static void compath(char *);
27 path(char *name
, int flag
)
29 register char *cp
, *ep
;
31 if ((cp
= expath (name
, flag
))
32 && (ep
= cp
+ strlen (cp
) - 1) > cp
41 expath (char *name
, int flag
)
43 register char *cp
, *ep
;
46 if (flag
== TSUBCWF
) {
47 snprintf (buffer
, sizeof(buffer
), "%s/%s", getfolder (1), name
);
48 name
= m_mailpath (buffer
);
50 snprintf (buffer
, sizeof(buffer
), "%s/", m_maildir (""));
51 if (ssequal (buffer
, name
)) {
53 name
= getcpy (name
+ strlen (buffer
));
61 && (strncmp (name
, CWD
, NCWD
)
63 && strcmp (name
, DOTDOT
)
64 && strncmp (name
, PWD
, NPWD
))))
70 if (strcmp (name
, DOT
) == 0 || strcmp (name
, CWD
) == 0)
73 ep
= pwds
+ strlen (pwds
);
74 if ((cp
= strrchr(pwds
, '/')) == NULL
)
80 if (strncmp (name
, CWD
, NCWD
) == 0)
83 if (strcmp (name
, DOTDOT
) == 0 || strcmp (name
, PWD
) == 0) {
84 snprintf (buffer
, sizeof(buffer
), "%.*s", cp
- pwds
, pwds
);
85 return getcpy (buffer
);
88 if (strncmp (name
, PWD
, NPWD
) == 0)
93 snprintf (buffer
, sizeof(buffer
), "%.*s/%s", cp
- pwds
, pwds
, name
);
94 return getcpy (buffer
);
101 register char *cp
, *dp
;
115 for (dp
= cp
; *dp
== '/'; dp
++)
121 if (strcmp (cp
, DOT
) == 0) {
127 if (strcmp (cp
, DOTDOT
) == 0) {
128 for (cp
-= 2; cp
> f
; cp
--)
136 if (strncmp (cp
, PWD
, NPWD
) == 0) {
137 for (dp
= cp
- 2; dp
> f
; dp
--)
142 strcpy (dp
, cp
+ NPWD
- 1);
146 if (strncmp (cp
, CWD
, NCWD
) == 0) {
147 strcpy (cp
- 1, cp
+ NCWD
- 1);