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.