Re: [perl #17892] Perl's mkdir() doesn't remove trailing slashes
Slaven Rezic [Mon, 14 Oct 2002 09:37:18 +0000 (11:37 +0200)]
Message-ID: <8765w5wjwx.fsf@vran.herceg.de>

p4raw-id: //depot/perl@18036

pp_sys.c
t/op/mkdir.t

index 0245a35..8e03168 100644 (file)
--- a/pp_sys.c
+++ b/pp_sys.c
@@ -3711,7 +3711,7 @@ PP(pp_mkdir)
      * -d, chdir(), chmod(), chown(), chroot(), fcntl()?,
      * (mkdir()), opendir(), rename(), rmdir(), stat(). --jhi */
     if (len > 1 && tmps[len-1] == '/') {
-       while (tmps[len] == '/' && len > 1)
+       while (tmps[len-1] == '/' && len > 1)
            len--;
        tmps = savepvn(tmps, len);
        copy = TRUE;
index 37da9c3..b9c4df7 100755 (executable)
@@ -1,6 +1,6 @@
 #!./perl
 
-print "1..9\n";
+print "1..13\n";
 
 BEGIN {
     chdir 't' if -d 't';
@@ -23,3 +23,8 @@ print (rmdir('blurfl') ? "not ok 6\n" : "ok 6\n");
 print ($! =~ /cannot find|such|exist|not found|not a directory/i ? "ok 7\n" : "# $!\nnot ok 7\n");
 print (mkdir('blurfl') ? "ok 8\n" : "not ok 8\n");
 print (rmdir('blurfl') ? "ok 9\n" : "not ok 9\n");
+# trailing slashes will be removed before the system call to mkdir
+print (mkdir('blurfl///') ? "ok 10\n" : "not ok 10\n");
+print (-d 'blurfl' ? "ok 11\n" : "not ok 11\n");
+print (rmdir('blurfl///') ? "ok 12\n" : "not ok 12\n");
+print (!-d 'blurfl' ? "ok 13\n" : "not ok 13\n");