disabled
  "   ˆl–Ãa¾””ËmJq@7p.ÜªbÑ¿Âƒh¹ÁÀ      4:32
  "   	ˆl–Ãa¾””ËmJq@5p/ÜêbÑ¿Ãƒh¹ÂÁ      	4:2
  	   ˆÄÃ0ÂÁ  0   ˆl–Ãa¾”êh¥8 ]¸\i•1hßÄ„h	ß_‹uÐb&=LV[(ÄÃ ?÷     package ExtUtils::Install;
use strict;

use vars qw(@ISA @EXPORT $VERSION $MUST_REBOOT %Config);

use AutoSplit;
use Carp ();
use Config qw(%Config);
use Cwd qw(cwd);
use Exporter;
use ExtUtils::Packlist;
use File::Basename qw(dirname);
use File::Compare qw(compare);
use File::Copy;
use File::Find qw(find);
use File::Path;
use File::Spec;


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

=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

1.58

=cut

$VERSION = '1.58';  # <---- dont 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 occured. 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 occured and
anything depending on this module cannot proceed until a reboot
has occured.

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

=over

=begin _private

=item _chmod($$;$)

Wrapper to chmod() for debugging and error trapping.

=item _warnonce(@)

Warns about something only once.

=item _choke(@)

Dies with a special message.

=back

=end _private

=cut

my $Is_VMS     = $^O eq 'VMS';
my $Is_VMS_noefs = $Is_VMS;
my $Is_MacPerl = $^O eq 'MacOS';
my $Is_Win32   = $^O eq 'MSWin32';
my $Is_cygwin  = $^O eq 'cygwin';
my $CanMoveAtBoot = ($Is_Win32 || $Is_cygwin);

    if( $Is_VMS ) {
        my $vms_unix_rpt;
        my $vms_efs;
        my $vms_case;

        if (eval { local $SIG{__DIE__}; require VMS::Feature; }) {
            $vms_unix_rpt = VMS::Feature::current("filename_unix_report");
            $vms_efs = VMS::Feature::current("efs_charset");
            $vms_case = VMS::Feature::current("efs_case_preserve");
        } else {
            my $unix_rpt = $ENV{'DECC$FILENAME_UNIX_REPORT'} || '';
            my $efs_charset = $ENV{'DECC$EFS_CHARSET'} || '';
            my $efs_case = $ENV{'DECC$EFS_CASE_PRESERVE'} || '';
            $vms_unix_rpt = $unix_rpt =~ /^[ET1]/i;
            $vms_efs = $efs_charset =~ /^[ET1]/i;
            $vms_case = $efs_case =~ /^[ET1]/i;
        }
        $Is_VMS_noefs = 0 if ($vms_efs);
    }



# *note* CanMoveAtBoot is only incidentally the same condition as below
# this needs not hold true in the future.
my $Has_Win32API_File = ($Is_Win32 || $Is_cygwin)
    ? (eval {require Win32API::File; 1} || 0)
    : 0;


my $Inc_uninstall_warn_handler;

# install relative to here

my $INSTALL_ROOT = $ENV{PERL_INSTALL_ROOT};

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

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",@_;
    Carp::croak($msg);
}


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="$!