X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/5dd6771b28c257af405d7248639ed0e3bcdce38b..bc4927948a1b01bf2ae8b952dfd2639c1f929f00:/sbr/path.c diff --git a/sbr/path.c b/sbr/path.c index 5a9529de..8f6bd55f 100644 --- a/sbr/path.c +++ b/sbr/path.c @@ -8,13 +8,12 @@ */ #include +#include #define CWD "./" -#define NCWD (sizeof(CWD) - 1) #define DOT "." #define DOTDOT ".." #define PWD "../" -#define NPWD (sizeof(PWD) - 1) static char *pwds; @@ -33,7 +32,7 @@ pluspath(char *name) char * path(char *name, int flag) { - register char *cp, *ep; + char *cp, *ep; if ((cp = expath (name, flag)) && (ep = cp + strlen (cp) - 1) > cp @@ -47,7 +46,7 @@ path(char *name, int flag) static char * expath (char *name, int flag) { - register char *cp, *ep; + char *cp, *ep; char buffer[BUFSIZ]; if (flag == TSUBCWF) { @@ -57,7 +56,7 @@ expath (char *name, int flag) snprintf (buffer, sizeof(buffer), "%s/", m_maildir ("")); if (ssequal (buffer, name)) { cp = name; - name = getcpy (name + strlen (buffer)); + name = mh_xstrdup(name + strlen(buffer)); free (cp); } flag = TFOLDER; @@ -65,17 +64,17 @@ expath (char *name, int flag) if (*name == '/' || (flag == TFOLDER - && (strncmp (name, CWD, NCWD) + && (!HasPrefix(name, CWD) && strcmp (name, DOT) && strcmp (name, DOTDOT) - && strncmp (name, PWD, NPWD)))) - return getcpy (name); + && !HasPrefix(name, PWD)))) + return mh_xstrdup(name); if (pwds == NULL) pwds = pwd (); if (strcmp (name, DOT) == 0 || strcmp (name, CWD) == 0) - return getcpy (pwds); + return mh_xstrdup(pwds); ep = pwds + strlen (pwds); if ((cp = strrchr(pwds, '/')) == NULL) @@ -84,28 +83,28 @@ expath (char *name, int flag) if (cp == pwds) cp++; - if (strncmp (name, CWD, NCWD) == 0) - name += NCWD; + if (HasPrefix(name, CWD)) + name += LEN(CWD); if (strcmp (name, DOTDOT) == 0 || strcmp (name, PWD) == 0) { snprintf (buffer, sizeof(buffer), "%.*s", (int)(cp - pwds), pwds); - return getcpy (buffer); + return mh_xstrdup(buffer); } - if (strncmp (name, PWD, NPWD) == 0) - name += NPWD; + if (HasPrefix(name, PWD)) + name += LEN(PWD); else cp = ep; snprintf (buffer, sizeof(buffer), "%.*s/%s", (int)(cp - pwds), pwds, name); - return getcpy (buffer); + return mh_xstrdup(buffer); } static void compath (char *f) { - register char *cp, *dp; + char *cp, *dp; if (*f != '/') return; @@ -140,18 +139,18 @@ compath (char *f) *cp = '\0'; break; } - if (strncmp (cp, PWD, NPWD) == 0) { + if (HasPrefix(cp, PWD)) { for (dp = cp - 2; dp > f; dp--) if (*dp == '/') break; if (dp <= f) dp = f; - strcpy (dp, cp + NPWD - 1); + strcpy (dp, cp + LEN(PWD) - 1); cp = dp; continue; } - if (strncmp (cp, CWD, NCWD) == 0) { - strcpy (cp - 1, cp + NCWD - 1); + if (HasPrefix(cp, CWD)) { + strcpy (cp - 1, cp + LEN(CWD) - 1); cp--; continue; }