# Makefile.PL use ExtUtils::MakeMaker; # Check for the ALLOW_UU=0 option my $allow; @ARGV = grep { if ($ARGV[$_] =~ /^(ALLOW_UU(=(.*))?)$/) { # Allowed forms: ALLOW_UU # ALLOW_UU=... if (!$2) { $allow = 1; } elsif (lc($3) =~ /^(true|on|1|yes|ok(ay)?)$/) { $allow = 1; } elsif (lc($3) =~ /^(no|false|0|off)$/) { $allow = 0; } elsif ($3) { die "Can't tell what '$3' means (try 1 or 0)"; } 0; # Remove from @ARGV } else { 1; # Retain in @ARGV } } @ARGV; if (defined $allow) { my $filename = 'Taint.pm'; print $allow ? "Allowing" : "Disallowing", " use of unconditional_untaint() function...\n"; local($^I) = '.bak'; local(@ARGV) = $filename; my $mode = (stat $filename)[2]; die "Can't stat Taint.pm: $!" unless defined $mode; unless (-w _) { chmod $mode | 0200, $filename or die "Can't change mode: $!"; } die "Backup file already exists - please remove or rename it" if -e "$filename.bak"; my $subbed = 0; while (<>) { $subbed++ if s <^\s*sub\s+allowing_insanity\s*\(\)\s*\{\s*\d+\s*\}.*> {sub allowing_insanity () { $allow }\t\t# Default is 1.}; print; } close ARGV; # just in case local($SIG{'__DIE__'}) = local($SIG{'__WARN__'}) = sub { if (rename "$filename.bak", $filename) { print "\n@_\n(Original file restored.)\n"; } else { print "\n@_\n(Use the backup file.)\n"; } exit; }; if ($subbed != 1) { die "Wrong number ($subbed) of substitutions"; } chmod $mode, $filename or die "Can't change mode: $!"; unlink "$filename.bak" or die "Can't unlink backup file: $!"; print "Looks good.\n\n"; } WriteMakefile( 'NAME' => 'Taint', 'VERSION_FROM' => 'Taint.pm', # finds $VERSION 'dist' => { COMPRESS=>'gzip -9', SUFFIX=>'gz', (($^O eq 'machten') ? (DIST_CP => 'cp') : ()) }, );