File Image-Sane-5-Replace-deprecated-given-and-when-operators.patch of Package perl-Image-Sane
From bfa253f8e185509cd4b63509a58a415b6abc929d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= <ppisar@redhat.com>
Date: Wed, 21 Jun 2023 15:54:40 +0200
Subject: [PATCH] Replace deprecated given and when operators
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Perl 5.37.11 depracated "given" and "when" keywords and scheduled
them, together with a smart match operator, for removal in Perl 5.42.
This lead to t/81_scanimage-perl.t failures:
# Failed test '--device=test --test 2>&1'
# at t/81_scanimage-perl.t line 42.
# got: 'scanimage: scanning image of size 157x196 pixels at 8 bits/pixel
# scanimage: acquiring gray frame, 8 bits/sample
# scanimage: reading one scanline, 157 bytes... PASS
# scanimage: reading one byte... PASS
<...>
# '
# expected: 'given is deprecated at examples/scanimage line 125.
# when is deprecated at examples/scanimage line 126.
# when is deprecated at examples/scanimage line 129.
<...>
This patch rewrites the code not to use "given" and "when".
CPAN RT#148487
Signed-off-by: Petr Písař <ppisar@redhat.com>
---
examples/scanadf-perl | 238 +++++++++++------------
examples/scanimage-perl | 406 +++++++++++++++++++---------------------
2 files changed, 308 insertions(+), 336 deletions(-)
diff --git a/examples/scanadf-perl b/examples/scanadf-perl
index 150aba2..555faac 100644
--- a/examples/scanadf-perl
+++ b/examples/scanadf-perl
@@ -2,8 +2,6 @@
use warnings;
use strict;
-use feature 'switch';
-no if $] >= 5.018, warnings => 'experimental::smartmatch';
use Sane;
use Data::Dumper;
use Getopt::Long qw(:config no_ignore_case pass_through);
@@ -126,25 +124,23 @@ sub sighandler {
sub print_unit {
my ($unit) = @_;
- given ($unit) {
- when (SANE_UNIT_PIXEL) {
- printstdout('pel');
- }
- when (SANE_UNIT_BIT) {
- printstdout('bit');
- }
- when (SANE_UNIT_MM) {
- printstdout('mm');
- }
- when (SANE_UNIT_DPI) {
- printstdout('dpi');
- }
- when (SANE_UNIT_PERCENT) {
- printstdout(q{%});
- }
- when (SANE_UNIT_MICROSECOND) {
- printstdout('us');
- }
+ if ( $unit == SANE_UNIT_PIXEL) {
+ printstdout('pel');
+ }
+ elsif ( $unit == SANE_UNIT_BIT ) {
+ printstdout('bit');
+ }
+ elsif ( $unit == SANE_UNIT_MM ) {
+ printstdout('mm');
+ }
+ elsif ( $unit == SANE_UNIT_DPI ) {
+ printstdout('dpi');
+ }
+ elsif ( $unit == SANE_UNIT_PERCENT ) {
+ printstdout(q{%});
+ }
+ elsif ( $unit == SANE_UNIT_MICROSECOND) {
+ printstdout('us');
}
return;
}
@@ -283,28 +279,26 @@ sub print_current_option_value {
{
my $string_format = '%g';
if ( $opt->{type} == SANE_TYPE_INT ) { $string_format = '%d' }
- given ( $opt->{name} ) {
- when (SANE_NAME_SCAN_TL_X) {
- $tl_x = $val;
- printf $string_format, $tl_x;
- }
- when (SANE_NAME_SCAN_TL_Y) {
- $tl_y = $val;
- printf $string_format, $tl_y;
- }
- when (SANE_NAME_SCAN_BR_X) {
- $br_x = $val;
- $w_x = $br_x - $tl_x;
- printf $string_format, $w_x;
- }
- when (SANE_NAME_SCAN_BR_Y) {
- $br_y = $val;
- $h_y = $br_y - $tl_y;
- printf $string_format, $h_y;
- }
- default {
- printf $string_format, $val;
- }
+ if ( $opt->{name} eq SANE_NAME_SCAN_TL_X ) {
+ $tl_x = $val;
+ printf $string_format, $tl_x;
+ }
+ elsif ( $opt->{name} eq SANE_NAME_SCAN_TL_Y ) {
+ $tl_y = $val;
+ printf $string_format, $tl_y;
+ }
+ elsif ( $opt->{name} eq SANE_NAME_SCAN_BR_X ) {
+ $br_x = $val;
+ $w_x = $br_x - $tl_x;
+ printf $string_format, $w_x;
+ }
+ elsif ( $opt->{name} eq SANE_NAME_SCAN_BR_Y) {
+ $br_y = $val;
+ $h_y = $br_y - $tl_y;
+ printf $string_format, $h_y;
+ }
+ else {
+ printf $string_format, $val;
}
}
elsif ( $opt->{type} == SANE_TYPE_STRING ) {
@@ -508,34 +502,32 @@ sub update_geometry {
and ( $opt->{unit} == SANE_UNIT_MM || $opt->{unit} == SANE_UNIT_PIXEL )
)
{
- given ( $opt->{name} ) {
- when (SANE_NAME_SCAN_TL_X) {
- $window[2] = $i;
- $opt->{name} = 'l';
- }
- when (SANE_NAME_SCAN_TL_Y) {
- $window[3] = $i; ## no critic (ProhibitMagicNumbers)
- $opt->{name} = 't';
- }
- when (SANE_NAME_SCAN_BR_X) {
- $window[0] = $i;
- $opt->{name} = 'x';
- $window_option[0] = $opt;
- $window_option[0]->{title} = 'Scan width';
- $window_option[0]->{desc} = 'Width of scanning area.';
- if ( !$window_val_user[0] ) {
- $window_val[0] = $device->get_option($i);
- }
+ if ( $opt->{name} eq SANE_NAME_SCAN_TL_X ) {
+ $window[2] = $i;
+ $opt->{name} = 'l';
+ }
+ elsif ( $opt->{name} eq SANE_NAME_SCAN_TL_Y ) {
+ $window[3] = $i; ## no critic (ProhibitMagicNumbers)
+ $opt->{name} = 't';
+ }
+ elsif ( $opt->{name} eq SANE_NAME_SCAN_BR_X ) {
+ $window[0] = $i;
+ $opt->{name} = 'x';
+ $window_option[0] = $opt;
+ $window_option[0]->{title} = 'Scan width';
+ $window_option[0]->{desc} = 'Width of scanning area.';
+ if ( !$window_val_user[0] ) {
+ $window_val[0] = $device->get_option($i);
}
- when (SANE_NAME_SCAN_BR_Y) {
- $window[1] = $i;
- $opt->{name} = 'y';
- $window_option[1] = $opt;
- $window_option[1]->{title} = 'Scan height';
- $window_option[1]->{desc} = 'Height of scanning area.';
- if ( !$window_val_user[1] ) {
- $window_val[1] = $device->get_option($i);
- }
+ }
+ elsif ( $opt->{name} eq SANE_NAME_SCAN_BR_Y ) {
+ $window[1] = $i;
+ $opt->{name} = 'y';
+ $window_option[1] = $opt;
+ $window_option[1]->{title} = 'Scan height';
+ $window_option[1]->{desc} = 'Height of scanning area.';
+ if ( !$window_val_user[1] ) {
+ $window_val[1] = $device->get_option($i);
}
}
}
@@ -604,40 +596,38 @@ sub process_backend_option {
}
my $value;
- given ( $opt->{type} ) {
- when (SANE_TYPE_BOOL) {
- $value = 1; # no argument means option is set
- if ($optarg) {
- if ( $optarg =~ /^yes$/ixsm ) {
- $value = 1;
- }
- elsif ( $optarg =~ /^no$/ixsm ) {
- $value = 0;
- }
- else {
- die
+ if ( $opt->{type} == SANE_TYPE_BOOL ) {
+ $value = 1; # no argument means option is set
+ if ($optarg) {
+ if ( $optarg =~ /^yes$/ixsm ) {
+ $value = 1;
+ }
+ elsif ( $optarg =~ /^no$/ixsm ) {
+ $value = 0;
+ }
+ else {
+ die
"$prog_name: option --$opt->{name}: bad option value `$optarg'\n";
- }
}
}
- when (
- $opt->{type} == SANE_TYPE_INT
- or $opt->{type} == SANE_TYPE_FIXED
- )
- {
- my @vector = parse_vector( $opt, $optarg );
- $value = \@vector;
- }
- when (SANE_TYPE_STRING) {
- $value = $optarg;
- }
- when (SANE_TYPE_BUTTON) {
- $value = 0; # value doesn't matter
- }
- default {
- warn "$prog_name: duh, got unknown option type $opt->{type}\n";
- return;
- }
+ }
+ elsif (
+ $opt->{type} == SANE_TYPE_INT
+ or $opt->{type} == SANE_TYPE_FIXED
+ )
+ {
+ my @vector = parse_vector( $opt, $optarg );
+ $value = \@vector;
+ }
+ elsif ( $opt->{type} == SANE_TYPE_STRING ) {
+ $value = $optarg;
+ }
+ elsif ( $opt->{type} == SANE_TYPE_BUTTON ) {
+ $value = 0; # value doesn't matter
+ }
+ else {
+ warn "$prog_name: duh, got unknown option type $opt->{type}\n";
+ return;
}
set_option( $device, $optnum, $value );
return;
@@ -1050,30 +1040,28 @@ sub process_arguments {
next;
}
if ( defined $options{$ch} ) {
- given ($ch) {
- when ('x') {
- $window_val_user[0] = 1;
- ( $window_val[0] ) =
- parse_vector( $window_option[0], $options{x} );
- }
- when ('y') {
- $window_val_user[1] = 1;
- ( $window_val[1] ) =
- parse_vector( $window_option[1], $options{y} );
- }
- when ('l') { # tl-x
- process_backend_option( $device, $window[2], $options{l} );
- }
- when ('t') { # tl-y
- process_backend_option(
- $device, $window[3], ## no critic (ProhibitMagicNumbers)
- $options{t}
- );
- }
- default {
- process_backend_option( $device, $option_number{$ch},
- $options{$ch} );
- }
+ if ( $ch eq 'x' ) {
+ $window_val_user[0] = 1;
+ ( $window_val[0] ) =
+ parse_vector( $window_option[0], $options{x} );
+ }
+ elsif ( $ch eq 'y' ) {
+ $window_val_user[1] = 1;
+ ( $window_val[1] ) =
+ parse_vector( $window_option[1], $options{y} );
+ }
+ elsif ( $ch eq 'l' ) { # tl-x
+ process_backend_option( $device, $window[2], $options{l} );
+ }
+ elsif ( $ch eq 't' ) { # tl-y
+ process_backend_option(
+ $device, $window[3], ## no critic (ProhibitMagicNumbers)
+ $options{t}
+ );
+ }
+ else {
+ process_backend_option( $device, $option_number{$ch},
+ $options{$ch} );
}
}
}
diff --git a/examples/scanimage-perl b/examples/scanimage-perl
index 0579a4a..ff6999f 100644
--- a/examples/scanimage-perl
+++ b/examples/scanimage-perl
@@ -2,14 +2,12 @@
use warnings;
use strict;
-use feature 'switch';
use Image::Sane ':all';
use Try::Tiny;
use Getopt::Long qw(:config no_ignore_case pass_through);
use File::Basename;
use IO::Handle;
use English qw( -no_match_vars ); # for $PROGRAM_NAME
-no if $] >= 5.018, warnings => 'experimental::smartmatch';
use sigtrap qw/handler sighandler normal-signals/;
use Readonly;
Readonly my $BUFFER_SIZE => ( 32 * 1024 ); # default size
@@ -122,25 +120,23 @@ sub sighandler {
sub print_unit {
my ($unit) = @_;
- given ($unit) {
- when (SANE_UNIT_PIXEL) {
- printstdout('pel');
- }
- when (SANE_UNIT_BIT) {
- printstdout('bit');
- }
- when (SANE_UNIT_MM) {
- printstdout('mm');
- }
- when (SANE_UNIT_DPI) {
- printstdout('dpi');
- }
- when (SANE_UNIT_PERCENT) {
- printstdout(q{%});
- }
- when (SANE_UNIT_MICROSECOND) {
- printstdout('us');
- }
+ if ($unit == SANE_UNIT_PIXEL) {
+ printstdout('pel');
+ }
+ elsif ($unit == SANE_UNIT_BIT) {
+ printstdout('bit');
+ }
+ elsif ($unit == SANE_UNIT_MM) {
+ printstdout('mm');
+ }
+ elsif ($unit == SANE_UNIT_DPI) {
+ printstdout('dpi');
+ }
+ elsif ($unit == SANE_UNIT_PERCENT) {
+ printstdout(q{%});
+ }
+ elsif ($unit == SANE_UNIT_MICROSECOND) {
+ printstdout('us');
}
return;
}
@@ -243,69 +239,67 @@ sub print_option {
sub print_option_choices {
my ($opt) = @_;
- given ( $opt->{type} ) {
- when (SANE_TYPE_BOOL) {
- printstdout('[=(');
- if ( $opt->{cap} & SANE_CAP_AUTOMATIC ) { printstdout('auto|') }
- printstdout('yes|no)]');
- }
- when (SANE_TYPE_BUTTON) { }
- default {
- printstdout($SPACE);
- if ( $opt->{cap} & SANE_CAP_AUTOMATIC ) {
- printstdout('auto|');
+ if ( $opt->{type} == SANE_TYPE_BOOL ) {
+ printstdout('[=(');
+ if ( $opt->{cap} & SANE_CAP_AUTOMATIC ) { printstdout('auto|') }
+ printstdout('yes|no)]');
+ }
+ elsif ( $opt->{type} == SANE_TYPE_BUTTON ) {
+ }
+ else {
+ printstdout($SPACE);
+ if ( $opt->{cap} & SANE_CAP_AUTOMATIC ) {
+ printstdout('auto|');
+ }
+ if ( $opt->{constraint_type} == SANE_CONSTRAINT_NONE ) {
+ if ( $opt->{type} == SANE_TYPE_INT ) {
+ printstdout('<int>');
}
- given ( $opt->{constraint_type} ) {
- when (SANE_CONSTRAINT_NONE) {
- if ( $opt->{type} == SANE_TYPE_INT ) {
- printstdout('<int>');
- }
- elsif ( $opt->{type} == SANE_TYPE_FIXED ) {
- printstdout('<float>');
- }
- elsif ( $opt->{type} == SANE_TYPE_STRING ) {
- printstdout('<string>');
- }
- if ( $opt->{max_values} > 1 ) { printstdout(',...') }
- }
- when (SANE_CONSTRAINT_RANGE) {
- my $string_format = '%g..%g';
- if ( $opt->{type} == SANE_TYPE_INT ) {
- $string_format = '%d..%d';
- }
- if ( $opt->{name} eq 'x' ) {
- printf $string_format, $opt->{constraint}{min},
- $opt->{constraint}{max} - $tl_x;
- }
- elsif ( $opt->{name} eq 'y' ) {
- printf $string_format, $opt->{constraint}{min},
- $opt->{constraint}{max} - $tl_y;
- }
- else {
- printf $string_format, $opt->{constraint}{min},
- $opt->{constraint}{max};
- }
- print_unit( $opt->{unit} );
- if ( $opt->{max_values} > 1 ) { printstdout(',...') }
- if ( $opt->{constraint}{quant} ) {
- printstdout(" (in steps of $opt->{constraint}{quant})");
- }
- }
- when ( SANE_CONSTRAINT_STRING_LIST | SANE_CONSTRAINT_WORD_LIST )
- {
- for my $i ( 0 .. $#{ $opt->{constraint} } ) {
- if ( $i > 0 ) { printstdout(q{|}) }
- my $string_format =
- $opt->{type} == SANE_TYPE_FIXED ? '%g' : '%s';
+ elsif ( $opt->{type} == SANE_TYPE_FIXED ) {
+ printstdout('<float>');
+ }
+ elsif ( $opt->{type} == SANE_TYPE_STRING ) {
+ printstdout('<string>');
+ }
+ if ( $opt->{max_values} > 1 ) { printstdout(',...') }
+ }
+ elsif ( $opt->{constraint_type} == SANE_CONSTRAINT_RANGE ) {
+ my $string_format = '%g..%g';
+ if ( $opt->{type} == SANE_TYPE_INT ) {
+ $string_format = '%d..%d';
+ }
+ if ( $opt->{name} eq 'x' ) {
+ printf $string_format, $opt->{constraint}{min},
+ $opt->{constraint}{max} - $tl_x;
+ }
+ elsif ( $opt->{name} eq 'y' ) {
+ printf $string_format, $opt->{constraint}{min},
+ $opt->{constraint}{max} - $tl_y;
+ }
+ else {
+ printf $string_format, $opt->{constraint}{min},
+ $opt->{constraint}{max};
+ }
+ print_unit( $opt->{unit} );
+ if ( $opt->{max_values} > 1 ) { printstdout(',...') }
+ if ( $opt->{constraint}{quant} ) {
+ printstdout(" (in steps of $opt->{constraint}{quant})");
+ }
+ }
+ elsif ( $opt->{constraint_type} == SANE_CONSTRAINT_STRING_LIST ||
+ $opt->{constraint_type} == SANE_CONSTRAINT_WORD_LIST )
+ {
+ for my $i ( 0 .. $#{ $opt->{constraint} } ) {
+ if ( $i > 0 ) { printstdout(q{|}) }
+ my $string_format =
+ $opt->{type} == SANE_TYPE_FIXED ? '%g' : '%s';
- printf $string_format, $opt->{constraint}[$i];
- }
- if ( $opt->{constraint_type} == SANE_CONSTRAINT_WORD_LIST )
- {
- print_unit( $opt->{unit} );
- if ( $opt->{max_values} > 1 ) { printstdout(',...') }
- }
- }
+ printf $string_format, $opt->{constraint}[$i];
+ }
+ if ( $opt->{constraint_type} == SANE_CONSTRAINT_WORD_LIST )
+ {
+ print_unit( $opt->{unit} );
+ if ( $opt->{max_values} > 1 ) { printstdout(',...') }
}
}
}
@@ -326,26 +320,24 @@ sub print_current_option_value {
{
my $string_format = '%g';
if ( $opt->{type} == SANE_TYPE_INT ) { $string_format = '%d' }
- given ( $opt->{name} ) {
- when ('l') {
- $tl_x = $val;
- printf $string_format, $tl_x;
- }
- when ('t') {
- $tl_y = $val;
- printf $string_format, $tl_y;
- }
- when ('x') {
- $br_x = $val;
- printf $string_format, $br_x - $tl_x;
- }
- when ('y') {
- $br_y = $val;
- printf $string_format, $br_y - $tl_y;
- }
- default {
- printf $string_format, $val;
- }
+ if ( $opt->{name} eq 'l' ) {
+ $tl_x = $val;
+ printf $string_format, $tl_x;
+ }
+ elsif ( $opt->{name} eq 't' ) {
+ $tl_y = $val;
+ printf $string_format, $tl_y;
+ }
+ elsif ( $opt->{name} eq 'x' ) {
+ $br_x = $val;
+ printf $string_format, $br_x - $tl_x;
+ }
+ elsif ( $opt->{name} eq 'y' ) {
+ $br_y = $val;
+ printf $string_format, $br_y - $tl_y;
+ }
+ else {
+ printf $string_format, $val;
}
}
elsif ( $opt->{type} == SANE_TYPE_STRING ) {
@@ -562,33 +554,31 @@ sub update_geometry {
and ( $opt->{unit} == SANE_UNIT_MM or $opt->{unit} == SANE_UNIT_PIXEL )
)
{
- given ( $opt->{name} ) {
- when (SANE_NAME_SCAN_BR_X) {
- $window[0] = $i;
- $opt->{name} = 'x';
- $window_option[0] = $opt;
- $window_option[0]->{title} = 'Scan width';
- $window_option[0]->{desc} = 'Width of scan-area.';
- $window_option[0]->{name} = 'x';
- }
- when (SANE_NAME_SCAN_BR_Y) {
- $window[1] = $i;
- $opt->{name} = 'y';
- $window_option[1] = $opt;
- $window_option[1]->{title} = 'Scan height';
- $window_option[1]->{desc} = 'Height of scan-area.';
- $window_option[1]->{name} = 'y';
- }
- when (SANE_NAME_SCAN_TL_X) {
- $window[2] = $i;
- $window_option[2] = $opt;
- $window_option[2]->{name} = 'l';
- }
- when (SANE_NAME_SCAN_TL_Y) {
- $window[$I_TL_Y] = $i;
- $window_option[$I_TL_Y] = $opt;
- $window_option[$I_TL_Y]->{name} = 't';
- }
+ if ( $opt->{name} eq SANE_NAME_SCAN_BR_X ) {
+ $window[0] = $i;
+ $opt->{name} = 'x';
+ $window_option[0] = $opt;
+ $window_option[0]->{title} = 'Scan width';
+ $window_option[0]->{desc} = 'Width of scan-area.';
+ $window_option[0]->{name} = 'x';
+ }
+ elsif ( $opt->{name} eq SANE_NAME_SCAN_BR_Y ) {
+ $window[1] = $i;
+ $opt->{name} = 'y';
+ $window_option[1] = $opt;
+ $window_option[1]->{title} = 'Scan height';
+ $window_option[1]->{desc} = 'Height of scan-area.';
+ $window_option[1]->{name} = 'y';
+ }
+ elsif ( $opt->{name} eq SANE_NAME_SCAN_TL_X ) {
+ $window[2] = $i;
+ $window_option[2] = $opt;
+ $window_option[2]->{name} = 'l';
+ }
+ elsif ( $opt->{name} eq SANE_NAME_SCAN_TL_Y ) {
+ $window[$I_TL_Y] = $i;
+ $window_option[$I_TL_Y] = $opt;
+ $window_option[$I_TL_Y]->{name} = 't';
}
}
return;
@@ -663,40 +653,38 @@ sub process_backend_option {
}
my $value;
- given ( $opt->{type} ) {
- when (SANE_TYPE_BOOL) {
- $value = 1; # no argument means option is set
- if ($optarg) {
- if ( $optarg =~ /^yes$/xsmi ) {
- $value = 1;
- }
- elsif ( $optarg =~ /^no$/xsmi ) {
- $value = 0;
- }
- else {
- die
+ if ( $opt->{type} == SANE_TYPE_BOOL ) {
+ $value = 1; # no argument means option is set
+ if ($optarg) {
+ if ( $optarg =~ /^yes$/xsmi ) {
+ $value = 1;
+ }
+ elsif ( $optarg =~ /^no$/xsmi ) {
+ $value = 0;
+ }
+ else {
+ die
"$prog_name: option --$opt->{name}: bad option value `$optarg'\n";
- }
}
}
- when (
- $opt->{type} == SANE_TYPE_INT
- or $opt->{type} == SANE_TYPE_FIXED
- )
- {
- my @vector = parse_vector( $opt, $optarg );
- $value = \@vector;
- }
- when (SANE_TYPE_STRING) {
- $value = $optarg;
- }
- when (SANE_TYPE_BUTTON) {
- $value = 0; # value doesn't matter
- }
- default {
- warn "$prog_name: duh, got unknown option type $opt->{type}\n";
- return;
- }
+ }
+ elsif (
+ $opt->{type} == SANE_TYPE_INT
+ or $opt->{type} == SANE_TYPE_FIXED
+ )
+ {
+ my @vector = parse_vector( $opt, $optarg );
+ $value = \@vector;
+ }
+ elsif ( $opt->{type} == SANE_TYPE_STRING ) {
+ $value = $optarg;
+ }
+ elsif ( $opt->{type} == SANE_TYPE_BUTTON) {
+ $value = 0; # value doesn't matter
+ }
+ else {
+ warn "$prog_name: duh, got unknown option type $opt->{type}\n";
+ return;
}
set_option( $device, $optnum, $value );
return;
@@ -1149,29 +1137,19 @@ sub scan_pages {
printstderr( sprintf " (scanner status = %d)\n", $status );
}
- given ($status) {
- when (SANE_STATUS_EOF) {
- if ($batch) {
-
- # close output file by redirecting, do not close stdout here!
- if (
- open $fh, '>', ## no critic (RequireBriefOpen)
- '/dev/null' and STDOUT->fdopen( $fh, '>' )
- )
- {
-
- # let the fully scanned file show up
- if ( not rename $part_path, $path ) {
- printstderr("cannot rename $part_path to $path\n");
- try {
- $device->cancel;
- }
- catch {};
- return SANE_STATUS_ACCESS_DENIED;
- }
- }
- else {
- printstderr("cannot open /dev/null\n");
+ if ( $status == SANE_STATUS_EOF ) {
+ if ($batch) {
+
+ # close output file by redirecting, do not close stdout here!
+ if (
+ open $fh, '>', ## no critic (RequireBriefOpen)
+ '/dev/null' and STDOUT->fdopen( $fh, '>' )
+ )
+ {
+
+ # let the fully scanned file show up
+ if ( not rename $part_path, $path ) {
+ printstderr("cannot rename $part_path to $path\n");
try {
$device->cancel;
}
@@ -1179,15 +1157,23 @@ sub scan_pages {
return SANE_STATUS_ACCESS_DENIED;
}
}
- }
- when (SANE_STATUS_GOOD) {
- if ($batch) {
- close $fh or warn "cannot close file\n";
- unlink $part_path;
+ else {
+ printstderr("cannot open /dev/null\n");
+ try {
+ $device->cancel;
+ }
+ catch {};
+ return SANE_STATUS_ACCESS_DENIED;
}
- last;
}
}
+ elsif ( $status == SANE_STATUS_GOOD ) {
+ if ($batch) {
+ close $fh or warn "cannot close file\n";
+ unlink $part_path;
+ }
+ last;
+ }
$n += $batch_increment;
if ( not ok_for_next_page() ) { last }
@@ -1422,28 +1408,26 @@ sub process_arguments {
next;
}
if ( defined $options{$ch} ) {
- given ($ch) {
- when ('x') {
- $window_val_user[0] = 1;
- ( $window_val[0] ) =
- parse_vector( $window_option[0], $options{x} );
- }
- when ('y') {
- $window_val_user[1] = 1;
- ( $window_val[1] ) =
- parse_vector( $window_option[1], $options{y} );
- }
- when ('l') { # tl-x
- process_backend_option( $device, $window[2], $options{l} );
- }
- when ('t') { # tl-y
- process_backend_option( $device, $window[$I_TL_Y],
- $options{t} );
- }
- default {
- process_backend_option( $device, $option_number{$ch},
- $options{$ch} );
- }
+ if ( $ch eq 'x' ) {
+ $window_val_user[0] = 1;
+ ( $window_val[0] ) =
+ parse_vector( $window_option[0], $options{x} );
+ }
+ elsif ( $ch eq 'y' ) {
+ $window_val_user[1] = 1;
+ ( $window_val[1] ) =
+ parse_vector( $window_option[1], $options{y} );
+ }
+ elsif ( $ch eq 'l') { # tl-x
+ process_backend_option( $device, $window[2], $options{l} );
+ }
+ elsif ( $ch eq 't') { # tl-y
+ process_backend_option( $device, $window[$I_TL_Y],
+ $options{t} );
+ }
+ else {
+ process_backend_option( $device, $option_number{$ch},
+ $options{$ch} );
}
}
}
--
2.41.0