]> git.saurik.com Git - apple/libc.git/blobdiff - gen/FreeBSD/dirname.c
Libc-1439.100.3.tar.gz
[apple/libc.git] / gen / FreeBSD / dirname.c
index 551d0680be7648d403a4e28cc4e4d7675f86ebfe..7def49aecd09f3938e701c7fbb9a70cbfce67468 100644 (file)
@@ -26,17 +26,10 @@ __FBSDID("$FreeBSD: src/lib/libc/gen/dirname.c,v 1.8 2008/11/03 05:19:45 delphij
 #include <sys/param.h>
 
 char *
 #include <sys/param.h>
 
 char *
-dirname(const char *path)
+dirname_r(const char *path, char *dname)
 {
 {
-       static char *dname = NULL;
-       size_t len;
        const char *endp;
        const char *endp;
-
-       if (dname == NULL) {
-               dname = (char *)malloc(MAXPATHLEN);
-               if (dname == NULL)
-                       return(NULL);
-       }
+       size_t len;
 
        /* Empty or NULL string gets treated as "." */
        if (path == NULL || *path == '\0') {
 
        /* Empty or NULL string gets treated as "." */
        if (path == NULL || *path == '\0') {
@@ -71,7 +64,24 @@ dirname(const char *path)
                errno = ENAMETOOLONG;
                return (NULL);
        }
                errno = ENAMETOOLONG;
                return (NULL);
        }
-       memcpy(dname, path, len);
+       memmove(dname, path, len);
        dname[len] = '\0';
        return (dname);
 }
        dname[len] = '\0';
        return (dname);
 }
+
+#if __DARWIN_UNIX03
+#define const /**/
+#endif
+
+char *
+dirname(const char *path)
+{
+       static char *dname = NULL;
+
+       if (dname == NULL) {
+               dname = (char *)malloc(MAXPATHLEN);
+               if (dname == NULL)
+                       return (NULL);
+       }
+       return (dirname_r(path, dname));
+}