This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
[PATCH 3/3] Provide wrappers for IN6ADDR_ANY and IN6ADDR_LOOPBACK
[perl5.git] / lib / blib.pm
index 6a1cf35..b3ee320 100644 (file)
@@ -12,16 +12,16 @@ blib - Use MakeMaker's uninstalled version of a package
 
 =head1 DESCRIPTION
 
-Looks for MakeMaker-like I<'blib'> directory structure starting in 
+Looks for MakeMaker-like I<'blib'> directory structure starting in
 I<dir> (or current directory) and working back up to five levels of '..'.
 
 Intended for use on command line with B<-M> option as a way of testing
 arbitrary scripts against an uninstalled version of a package.
 
-However it is possible to : 
+However it is possible to :
 
- use blib; 
- or 
+ use blib;
+ or
  use blib '..';
 
 etc. if you really must.
@@ -40,13 +40,24 @@ use Cwd;
 use File::Spec;
 
 use vars qw($VERSION $Verbose);
-$VERSION = '1.02';
+$VERSION = '1.06';
 $Verbose = 0;
 
 sub import
 {
  my $package = shift;
- my $dir = getcwd;
+ my $dir;
+ if ($^O eq "MSWin32" && -f "Win32.xs") {
+     # We don't use getcwd() on Windows because it will internally
+     # call Win32::GetCwd(), which will get the Win32 module loaded.
+     # That means that it would not be possible to run `make test`
+     # for the Win32 module because blib.pm would always load the
+     # installed version before @INC gets updated with the blib path.
+     chomp($dir = `cd`);
+ }
+ else {
+     $dir = getcwd;
+ }
  if ($^O eq 'VMS') { ($dir = VMS::Filespec::unixify($dir)) =~ s-/\z--; }
  if (@_)
   {
@@ -56,21 +67,18 @@ sub import
    $dir = File::Spec->curdir unless ($dir);
    die "$dir is not a directory\n" unless (-d $dir);
   }
+
+ # detaint: if the user asked for blib, s/he presumably knew
+ # what s/he wanted
+ $dir = $1 if $dir =~ /^(.*)$/;
+
  my $i = 5;
  my($blib, $blib_lib, $blib_arch);
  while ($i--)
   {
    $blib = File::Spec->catdir($dir, "blib");
    $blib_lib = File::Spec->catdir($blib, "lib");
-
-   if ($^O eq 'MacOS')
-    {
-     $blib_arch = File::Spec->catdir($blib_lib, $MacPerl::Architecture);
-    }
-   else
-    {
-     $blib_arch = File::Spec->catdir($blib, "arch");
-    }
+   $blib_arch = File::Spec->catdir($blib, "arch");
 
    if (-d $blib && -d $blib_arch && -d $blib_lib)
     {