Code that was meant to trim trailing slashes from mkdir() paths
authorMartin Pool <mbp@samba.org>
Mon, 25 Mar 2002 03:29:47 +0000 (03:29 +0000)
committerMartin Pool <mbp@samba.org>
Mon, 25 Mar 2002 03:29:47 +0000 (03:29 +0000)
actually did not; fix it.

syscall.c

index f7ce3f0..b4b581b 100644 (file)
--- a/syscall.c
+++ b/syscall.c
@@ -111,19 +111,27 @@ int do_rename(char *fname1, char *fname2)
 }
 
 
+void trim_trailing_slashes(char *name)
+{
+       char *p;
+       /* Some BSD systems cannot make a directory if the name
+        * contains a trailing slash.
+        * <http://www.opensource.apple.com/bugs/X/BSD%20Kernel/2734739.html> */
+       if (!*name)
+               return;         /* empty string */
+       p = strchr(name, '\0') - 1;
+       while (p == '/') {
+               p-- = '\0';
+       }
+}
+
+
 int do_mkdir(char *fname, mode_t mode)
 {
-       int l;
        if (dry_run)
                return 0;
        CHECK_RO;
-       
-       /* Some BSD systems cannot make a directory if the name
-        * contains a trailing slash.
-        * <http://www.opensource.apple.com/bugs/X/BSD%20Kernel/2734739.html> */
-       if ((l = strlen(fname))  &&  (fname[l-1] == '/'))
-               fname[l-1] = '/';
-       
+       trim_trailing_slashes(fname);   
        return mkdir(fname, mode);
 }