All pastes #899172 Raw Edit

lalalalallalalalala.pl

public text v1 · immutable
·published 2008-02-10 22:58 UTC
rendered paste body
# coded by : Justin Lee <kool.name at gmail.com>
# desc     : just a quick hack for copying ArcView 3.2 extensions
# license  : under GNU GPL v2, you know the drill
# date     : February 10, 2008

use strict;
use FileHandle;
use File::Copy qw(copy);

  # use L:\ for ease of copy
system('net use L: /DELETE');
print "\n" x 20; sleep 1;

system('net use L: "\\\\Lyca\\Warehouse\\04_Software\\Applications\\ESRI\\Extensions\\AVX_Files"');
print "\n" x 20; print "Network folder mounted.\n";


  # enter extensions dir
chdir('C:/ESRI/AV_GIS30/ARCVIEW/EXT32') or die;
print "Local extensions folder entered.\n"


  # open local (LOC) and remote (REM) directories for reading
opendir(REM,'L:/') or die "WARNING: UNABLE TO OPEN REM (FATAL)\n";
opendir(LOC,'./')  or die "WARNING: UNABLE TO OPEN LOC (FATAL)\n";
print "Local and remote directories opened for reading.\n";


my %path = (
    # get the remote files
  'REM' => [ readdir(REM) ],
    # get the local files (prep'd for checking)
  'LOC' => { map { $_ => 1 } readdir(LOC) }
);


  # close the directories
closedir(REM) or warn "WARNING: REM NOT CLOSED (NON-FATAL)\n";
closedir(LOC) or warn "WARNING: LOC NOT CLOSED (NON-FATAL)\n";
print "Directories read!\n";


  # core "test and copy" function
foreach my $rem (@{$path{'REM'}}) {
    # we only want extensions and libraries
  next unless $rem =~ /\.(?:avx|dll|dat|hdr)$/oi;
    # do we already have that extension?
  next if $path{'LOC'}->{$rem};

    # get ready to copy the file by opening it
  my $from = new FileHandle "L:/$rem", '<';
    # check to make sure it worked, else report and skip it
  do {
    print "We had a problem opening `L:\\$rem'!\n";
    undef $from;
    next;
  } unless defined $from;

    # time to copy, if it fails, report and skip it
  unless(copy($from,$rem)) {
    print "We had a problem copying `L:\\$rem'.\n";
  } else {
    print "`L:\\$rem' successfully copied!\n";
  }

    # close the remote file
  undef $from;
}


  # ... ^_^
my $redo = 0;
CHDIR: { # hahaha, I'm priceless
  unless(chdir('C:/')) {
    unless(chdir('D:/')) {
      unless(chdir($ENV{TEMP})) {
        unless(chdir($ENV{WINDIR})) {
          unless(chdir($ENV{HOMEDRIVE})) {
            unless($redo++) {
              print "well doesn't this suck!!\n",
                    "good thing it really isn't",
                    "important!\nbut I guess we",
                    "can try once more for fun.";
              redo;
            }
          }
        }
      }
    }
  }
}


  # wait someone to read the logs
print "Press Enter To Continue....";
<STDIN>;
print "Remounting network drives.\n";

  # have a nap
sleep 1;
  # rebuild network map
system('netmount.pl -Ppm');

  # bye bye!
exit 0;