From 12eb292d681daa36ca97f61dc507c7413ab0ceea Mon Sep 17 00:00:00 2001 From: Jared Camins-Esakov Date: Thu, 17 Jan 2013 21:39:38 -0500 Subject: [PATCH] Bug 9421: tools/picture-upload.pl not Plack-compatible This patch avoids using file-level private variables in subroutines by passing the needed variables as parameters to the subroutines. To test (under Plack): 1) Try uploading a patron image without applying the patch. Notice it fails. 2) Apply patch. 3) Try uploading a patron image again, noticing this time it succeeds. To test (under Apache): 1) Apply patch. 2) Try uploading a patron image, confirm that it works. Signed-off-by: Mirko Tietgen Fixes Plack, does not break Apache. Works as expected. --- tools/picture-upload.pl | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/tools/picture-upload.pl b/tools/picture-upload.pl index 4507fa1..54b6606 100755 --- a/tools/picture-upload.pl +++ b/tools/picture-upload.pl @@ -115,12 +115,12 @@ if ( ($op eq 'Upload') && $uploadfile ) { # Case is important in these ope } my $results; foreach my $dir ( @directories ) { - $results = handle_dir( $dir, $filesuffix ); + $results = handle_dir( $dir, $filesuffix, $template ); $handled++ if $results == 1; } $total = scalar @directories; } else { #if ($filetype eq 'zip' ) - $results = handle_dir( $dirname, $filesuffix ); + $results = handle_dir( $dirname, $filesuffix, $template, $cardnumber, $tempfile ); $handled = 1; $total = 1; } @@ -157,11 +157,11 @@ if ( $borrowernumber && !$errors && !$template->param('ERRORS') ) { } sub handle_dir { - my ( $dir, $suffix ) = @_; - my $source; + my ( $dir, $suffix, $template, $cardnumber, $source ) = @_; $debug and warn "Entering sub handle_dir; passed \$dir=$dir, \$suffix=$suffix"; if ($suffix =~ m/zip/i) { # If we were sent a zip file, process any included data/idlink.txt files - my ( $file, $filename, $cardnumber ); + my ( $file, $filename ); + undef $cardnumber; $debug and warn "Passed a zip file."; opendir my $dirhandle, $dir; while ( my $filename = readdir $dirhandle ) { @@ -189,20 +189,19 @@ sub handle_dir { $filename =~ s/[\"\r\n\s]//g; $debug and warn "Cardnumber: $cardnumber Filename: $filename"; $source = "$dir/$filename"; - %counts = handle_file($cardnumber, $source, %counts); + %counts = handle_file($cardnumber, $source, $template, %counts); } close FILE; closedir ($dirhandle); } else { - $source = $tempfile; - %counts = handle_file($cardnumber, $source, %counts); + %counts = handle_file($cardnumber, $source, $template, %counts); } push @counts, \%counts; return 1; } sub handle_file { - my ($cardnumber, $source, %count) = @_; + my ($cardnumber, $source, $template, %count) = @_; $debug and warn "Entering sub handle_file; passed \$cardnumber=$cardnumber, \$source=$source"; $count{filenames} = () if !$count{filenames}; $count{source} = $source if !$count{source}; -- 1.7.10.4