| 1 | # This will put installed perl files into some other location
|
|---|
| 2 | # Note that we cannot put hashbang to be extproc to make Configure work.
|
|---|
| 3 |
|
|---|
| 4 | use Config;
|
|---|
| 5 | use File::Compare;
|
|---|
| 6 |
|
|---|
| 7 | $dir = shift;
|
|---|
| 8 | $dir =~ s|/|\\|g ;
|
|---|
| 9 | $nowarn = 1, $dir = shift if $dir eq '-n';
|
|---|
| 10 |
|
|---|
| 11 | die <<EOU unless defined $dir and -d $dir;
|
|---|
| 12 | usage: $^X $0 [-n] directory-to-install
|
|---|
| 13 | -n do not check whether the directory is not on path
|
|---|
| 14 | EOU
|
|---|
| 15 |
|
|---|
| 16 | @path = split /;/, $ENV{PATH};
|
|---|
| 17 | $idir = $Config{installbin};
|
|---|
| 18 | $indir =~ s|\\|/|g ;
|
|---|
| 19 |
|
|---|
| 20 | my %seen;
|
|---|
| 21 |
|
|---|
| 22 | foreach $file (<$idir/*>) {
|
|---|
| 23 | next if $file =~ /\.(exe|bak)/i;
|
|---|
| 24 | $base = $file;
|
|---|
| 25 | $base =~ s/\.$//; # just in case...
|
|---|
| 26 | $base =~ s|.*/||;
|
|---|
| 27 | $base =~ s|\.pl$||;
|
|---|
| 28 | #$file =~ s|/|\\|g ;
|
|---|
| 29 | warn "Clashing output name for $file, skipping" if $seen{$base}++;
|
|---|
| 30 | my $new = (-f "$dir/$base.cmd" ? '' : ' (new file)');
|
|---|
| 31 | print "Processing $file => $dir/$base.cmd$new\n";
|
|---|
| 32 | my $ext = ($new ? '.cmd' : '.tcm');
|
|---|
| 33 | open IN, '<', $file or warn, next;
|
|---|
| 34 | open OUT, '>', "$dir/$base$ext" or warn, next;
|
|---|
| 35 | my $firstline = <IN>;
|
|---|
| 36 | my $flags = '';
|
|---|
| 37 | $flags = $2 if $firstline =~ /^#!\s*(\S+)\s+-([^#]+?)\s*(#|$)/;
|
|---|
| 38 | print OUT "extproc perl -S$flags\n$firstline";
|
|---|
| 39 | print OUT $_ while <IN>;
|
|---|
| 40 | close IN or warn, next;
|
|---|
| 41 | close OUT or warn, next;
|
|---|
| 42 | chmod 0444, "$dir/$base$ext";
|
|---|
| 43 | next if $new;
|
|---|
| 44 | if (compare "$dir/$base$ext", "$dir/$base.cmd") { # different
|
|---|
| 45 | chmod 0666, "$dir/$base.cmd";
|
|---|
| 46 | unlink "$dir/$base.cmd";
|
|---|
| 47 | rename "$dir/$base$ext", "$dir/$base.cmd";
|
|---|
| 48 | } else {
|
|---|
| 49 | chmod 0666, "$dir/$base$ext";
|
|---|
| 50 | unlink "$dir/$base$ext";
|
|---|
| 51 | print "...unchanged...\n";
|
|---|
| 52 | }
|
|---|
| 53 | }
|
|---|
| 54 |
|
|---|