Change 25096 by [EMAIL PROTECTED] on 2005/07/08 08:43:07

        Subject: Re: [perl #36477] File::Basename basename() bug
        From: Michael G Schwern <[EMAIL PROTECTED]>
        Date: Thu, 7 Jul 2005 14:16:01 -0700
        Message-ID: <[EMAIL PROTECTED]>

Affected files ...

... //depot/perl/lib/File/Basename.pm#40 edit
... //depot/perl/lib/File/Basename.t#6 edit

Differences ...

==== //depot/perl/lib/File/Basename.pm#40 (text) ====
Index: perl/lib/File/Basename.pm
--- perl/lib/File/Basename.pm#39~25091~ Thu Jul  7 04:21:41 2005
+++ perl/lib/File/Basename.pm   Fri Jul  8 01:43:07 2005
@@ -206,9 +206,13 @@
 
 
 sub basename {
-  my($name) = shift;
-  _strip_trailing_sep($name);
-  (fileparse($name, map("\Q$_\E",@_)))[0];
+  my($path) = shift;
+
+  _strip_trailing_sep($path);
+  my($basename, $dirname) = fileparse( $path, map("\Q$_\E",@_) );
+  $basename = $dirname unless length $basename;
+
+  return $basename;
 }
 
 

==== //depot/perl/lib/File/Basename.t#6 (xtext) ====
Index: perl/lib/File/Basename.t
--- perl/lib/File/Basename.t#5~25090~   Thu Jul  7 04:06:17 2005
+++ perl/lib/File/Basename.t    Fri Jul  8 01:43:07 2005
@@ -5,7 +5,7 @@
     @INC = '../lib';
 }
 
-use Test::More tests => 57;
+use Test::More tests => 60;
 
 BEGIN { use_ok 'File::Basename' }
 
@@ -26,7 +26,6 @@
     is(basename('/arma/virumque.cano'), 'virumque.cano');
     is(dirname ('/arma/virumque.cano'), '/arma');
     is(dirname('arma/'), '.');
-    is(dirname('/'), '/');
 }
 
 
@@ -131,6 +130,18 @@
 }
 
 
+### rt.cpan.org 36477
+{
+    fileparse_set_fstype('Unix');
+    is(dirname('/'), '/');
+    is(basename('/'), '/');
+
+    fileparse_set_fstype('DOS');
+    is(dirname('\\'), '\\');
+    is(basename('\\'), '\\');
+}
+
+
 ### Test tainting
 {
     #   The empty tainted value, for tainting strings
@@ -150,6 +161,7 @@
         1;
     }
 
+    fileparse_set_fstype 'Unix';
     ok tainted(dirname($TAINT.'/perl/lib//'));
     ok all_tainted(fileparse($TAINT.'/dir/draft.book7','\.book\d+'));
 }
End of Patch.

Reply via email to