\_SB_.PCI0.SE0_
     �ÆÅÈ      File not found.
  0   ˆl–Ãa¾”Ê_)+�
àS�ÿÌ„h²÷_‹uÐb&=LV[(ÇÊ ?÷     package ExtUtils::Install;
use strict;

use Config qw(%Config);
use Cwd qw(cwd);
use Exporter ();
use File::Basename qw(dirname);
use File::Copy;
use File::Path;
use File::Spec;

our @ISA = ('Exporter');
our @EXPORT = ('install','uninstall','pm_to_blib', 'install_default');

our $MUST_REBOOT;

=pod

=head1 NAME

ExtUtils::Install - install files from here to there

=head1 SYNOPSIS

  use ExtUtils::Install;

  install({ 'blib/lib' => 'some/install/dir' } );

  uninstall($packlist);

  pm_to_blib({ 'lib/Foo/Bar.pm' => 'blib/lib/Foo/Bar.pm' });

=head1 VERSION

2.20

=cut

our $VERSION = '2.20';  # <-- do not forget to update the POD section just above this line!
$VERSION = eval $VERSION;

=pod

=head1 DESCRIPTION

Handles the installing and uninstalling of perl modules, scripts, man
pages, etc...

Both install() and uninstall() are specific to the way
ExtUtils::MakeMaker handles the installation and deinstallation of
perl modules. They are not designed as general purpose tools.

On some operating systems such as Win32 installation may not be possible
until after a reboot has occurred. This can have varying consequences:
removing an old DLL does not impact programs using the new one, but if
a new DLL cannot be installed properly until reboot then anything
depending on it must wait. The package variable

  $ExtUtils::Install::MUST_REBOOT

is used to store this status.

If this variable is true then such an operation has occurred and
anything depending on this module cannot proceed until a reboot
has occurred.

If this value is defined but false then such an operation has
occurred, but should not impact later operations.

=begin _private

=head2 _chmod($$;$)

Wrapper to chmod() for debugging and error trapping.

=head2 _warnonce(@)

Warns about something only once.

=head2 _choke(@)

Dies with a special message.

=end _private

=cut

BEGIN {
    *_Is_VMS        = $^O eq 'VMS'     ? sub(){1} : sub(){0};
    *_Is_Win32      = $^O eq 'MSWin32' ? sub(){1} : sub(){0};
    *_Is_cygwin     = $^O eq 'cygwin'  ? sub(){1} : sub(){0};
    *_CanMoveAtBoot = ($^O eq 'MSWin32' || $^O eq 'cygwin') ? sub(){1} : sub(){0};
}

my $Inc_uninstall_warn_handler;

# install relative to here

my $INSTALL_ROOT = $ENV{PERL_INSTALL_ROOT};
my $INSTALL_QUIET = $ENV{PERL_INSTALL_QUIET};
$INSTALL_QUIET = 1
  if (!exists $ENV{PERL_INSTALL_QUIET} and
      defined $ENV{MAKEFLAGS} and
      $ENV{MAKEFLAGS} =~ /\b(s|silent|quiet)\b/);

my $Curdir = File::Spec->curdir;

sub _estr(@) {
    return join "\n",'!' x 72,@_,'!' x 72,'';
}

{my %warned;
sub _warnonce(@) {
    my $first=shift;
    my $msg=_estr "WARNING: $first",@_;
    warn $msg unless $warned{$msg}++;
}}

sub _choke(@) {
    my $first=shift;
    my $msg=_estr "ERROR: $first",@_;
    require Carp;
    Carp::croak($msg);
}

sub _croak {
    require Carp;
    Carp::croak(@_);
}
sub _confess {
    require Carp;
    Carp::confess(@_);
}

sub _compare {
    # avoid loading File::Compare in the common case
    if (-f $_[1] && -s _ == -s $_[0]) {
        require File::Compare;
        return File::Compare::compare(@_);
    }
    return 1;
}


sub _chmod($$;$) {
    my ( $mode, $item, $verbose )=@_;
    $verbose ||= 0;
    if (chmod $mode, $item) {
        printf "chmod(0%o, %s)\n",$mode, $item if $verbose > 1;
    } else {
        my $err="$!";
        _warnonce sprintf "WARNING: Failed chmod(0%o, %s): %s\n",
                  $mode, $item, $err
            if -e $item;
    }
}

=begin _private

=head2 _move_file_at_boot( $file, $target, $moan  )

OS-Specific, Win32/Cygwin

Schedules a file to be moved/renamed/deleted at next boot.
$file should be a filespec of an existing file
$target should be a ref to an array if the file is to be deleted
otherwise it should be a filespec for a rename. If the file is existing
it will be replaced.

Sets $MUST_REBOOT to 0 to indicate a deletion operation has occurred
and sets it to 1 to indicate that a move operation has been requested.

returns 1 on success