]> diplodocus.org Git - nmh/blobdiff - sbr/path.c
Rename recently added ToUpper() to to_upper().
[nmh] / sbr / path.c
index 871ad22d7ccddec2ec61b160b97d0a86fa82cbd2..79d7f38c29758e3a5f51b6b4dbe725ce3fc02b38 100644 (file)
 #include <h/utils.h>
 
 #define        CWD     "./"
 #include <h/utils.h>
 
 #define        CWD     "./"
-#define        NCWD    (sizeof(CWD) - 1)
 #define        DOT     "."
 #define        DOTDOT  ".."
 #define        PWD     "../"
 #define        DOT     "."
 #define        DOTDOT  ".."
 #define        PWD     "../"
-#define        NPWD    (sizeof(PWD) - 1)
 
 static char *pwds;
 
 
 static char *pwds;
 
@@ -66,17 +64,17 @@ expath (char *name, int flag)
 
     if (*name == '/'
            || (flag == TFOLDER
 
     if (*name == '/'
            || (flag == TFOLDER
-               && (strncmp (name, CWD, NCWD)
+               && (!has_prefix(name, CWD)
                    && strcmp (name, DOT)
                    && strcmp (name, DOTDOT)
                    && strcmp (name, DOT)
                    && strcmp (name, DOTDOT)
-                   && strncmp (name, PWD, NPWD))))
-       return getcpy (name);
+                   && !has_prefix(name, PWD))))
+       return mh_xstrdup(name);
 
     if (pwds == NULL)
        pwds = pwd ();
 
     if (strcmp (name, DOT) == 0 || strcmp (name, CWD) == 0)
 
     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)
 
     ep = pwds + strlen (pwds);
     if ((cp = strrchr(pwds, '/')) == NULL)
@@ -85,21 +83,21 @@ expath (char *name, int flag)
        if (cp == pwds)
            cp++;
 
        if (cp == pwds)
            cp++;
 
-    if (strncmp (name, CWD, NCWD) == 0)
-       name += NCWD;
+    if (has_prefix(name, CWD))
+       name += LEN(CWD);
 
     if (strcmp (name, DOTDOT) == 0 || strcmp (name, PWD) == 0) {
        snprintf (buffer, sizeof(buffer), "%.*s", (int)(cp - pwds), pwds);
 
     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 (has_prefix(name, PWD))
+       name += LEN(PWD);
     else
        cp = ep;
 
     snprintf (buffer, sizeof(buffer), "%.*s/%s", (int)(cp - pwds), pwds, name);
     else
        cp = ep;
 
     snprintf (buffer, sizeof(buffer), "%.*s/%s", (int)(cp - pwds), pwds, name);
-    return getcpy (buffer);
+    return mh_xstrdup(buffer);
 }
 
 
 }
 
 
@@ -141,18 +139,18 @@ compath (char *f)
                        *cp = '\0';
                        break;
                    }
                        *cp = '\0';
                        break;
                    }
-                   if (strncmp (cp, PWD, NPWD) == 0) {
+                   if (has_prefix(cp, PWD)) {
                        for (dp = cp - 2; dp > f; dp--)
                            if (*dp == '/')
                                break;
                        if (dp <= f)
                            dp = f;
                        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;
                    }
                        cp = dp;
                        continue;
                    }
-                   if (strncmp (cp, CWD, NCWD) == 0) {
-                       strcpy (cp - 1, cp + NCWD - 1);
+                   if (has_prefix(cp, CWD)) {
+                       strcpy (cp - 1, cp + LEN(CWD) - 1);
                        cp--;
                        continue;
                    }
                        cp--;
                        continue;
                    }