IO-Compress
view release on metacpan or search on metacpan
lib/IO/Compress/Base.pm view on Meta::CPAN
or return $obj->saveErrorString(undef, "Cannot seek to end of output filehandle: $!", $!) ;
}
}
elsif ($outType eq 'filename') {
no warnings;
my $mode = '>' ;
$mode = '>>'
if $appendOutput;
*$obj->{FH} = IO::File->new( "$mode $outValue" )
or return $obj->saveErrorString(undef, "cannot open file '$outValue': $!", $!) ;
*$obj->{StdIO} = ($outValue eq '-');
setBinModeOutput(*$obj->{FH}) ;
}
}
*$obj->{Header} = $obj->mkHeader($got) ;
$obj->output( *$obj->{Header} )
or return undef;
$obj->beforePayload();
}
else
{
*$obj->{Compress} = $obj->createMerge($outValue, $outType)
or return undef;
}
*$obj->{Closed} = 0 ;
*$obj->{AutoClose} = $got->getValue('autoclose') ;
*$obj->{Output} = $outValue;
*$obj->{ClassName} = $class;
*$obj->{Got} = $got;
*$obj->{OneShot} = 0 ;
return $obj ;
}
sub ckOutputParam
{
my $self = shift ;
my $from = shift ;
my $outType = IO::Compress::Base::Common::whatIsOutput($_[0]);
$self->croakError("$from: output parameter not a filename, filehandle or scalar ref")
if ! $outType ;
#$self->croakError("$from: output filename is undef or null string")
#if $outType eq 'filename' && (! defined $_[0] || $_[0] eq '') ;
$self->croakError("$from: output buffer is read-only")
if $outType eq 'buffer' && Scalar::Util::readonly(${ $_[0] });
return 1;
}
sub _def
{
my $obj = shift ;
my $class= (caller)[0] ;
my $name = (caller(1))[3] ;
$obj->croakError("$name: expected at least 1 parameters\n")
unless @_ >= 1 ;
my $input = shift ;
my $haveOut = @_ ;
my $output = shift ;
my $x = IO::Compress::Base::Validator->new($class, *$obj->{Error}, $name, $input, $output)
or return undef ;
push @_, $output if $haveOut && $x->{Hash};
*$obj->{OneShot} = 1 ;
my $got = $obj->checkParams($name, undef, @_)
or return undef ;
$x->{Got} = $got ;
# if ($x->{Hash})
# {
# while (my($k, $v) = each %$input)
# {
# $v = \$input->{$k}
# unless defined $v ;
#
# $obj->_singleTarget($x, 1, $k, $v, @_)
# or return undef ;
# }
#
# return keys %$input ;
# }
if ($x->{GlobMap})
{
$x->{oneInput} = 1 ;
foreach my $pair (@{ $x->{Pairs} })
{
my ($from, $to) = @$pair ;
$obj->_singleTarget($x, 1, $from, $to, @_)
or return undef ;
}
return scalar @{ $x->{Pairs} } ;
}
if (! $x->{oneOutput} )
{
my $inFile = ($x->{inType} eq 'filenames'
|| $x->{inType} eq 'filename');
$x->{inType} = $inFile ? 'filename' : 'buffer';
foreach my $in ($x->{oneInput} ? $input : @$input)
{
my $out ;
$x->{oneInput} = 1 ;
( run in 1.435 second using v1.01-cache-2.11-cpan-e93a5daba3e )