diff options
Diffstat (limited to 'scripts/Dpkg')
-rw-r--r-- | scripts/Dpkg/Compression.pm | 71 | ||||
-rw-r--r-- | scripts/Dpkg/Compression/Compressor.pm | 24 |
2 files changed, 73 insertions, 22 deletions
diff --git a/scripts/Dpkg/Compression.pm b/scripts/Dpkg/Compression.pm index 7c9d16149..d8ab0cde1 100644 --- a/scripts/Dpkg/Compression.pm +++ b/scripts/Dpkg/Compression.pm @@ -17,11 +17,17 @@ package Dpkg::Compression; use strict; use warnings; +use Dpkg::ErrorHandling; +use Dpkg::Gettext; use base qw(Exporter); our @EXPORT = qw($compression_re_file_ext compression_get_list compression_is_supported compression_get_property - compression_guess_from_filename); + compression_guess_from_filename + compression_get_default compression_set_default + compression_get_default_level + compression_set_default_level + compression_is_valid_level); =head1 NAME @@ -61,6 +67,9 @@ my $COMP = { }, }; +our $default_compression = "gzip"; +our $default_compression_level = 9; + =item $compression_re_file_ext A regex that matches a file extension of a file compressed with one of the @@ -133,6 +142,66 @@ sub compression_guess_from_filename { return undef; } +=item my $comp = compression_get_default() + +Return the default compression method. It's "gzip" unless +C<compression_set_default> has been used to change it. + +=item compression_set_default($comp) + +Change the default compression methode. Errors out if the +given compression method is not supported. + +=cut + +sub compression_get_default { + return $default_compression; +} + +sub compression_set_default { + my ($method) = @_; + error(_g("%s is not a supported compression"), $method) + unless compression_is_supported($method); + $default_compression = $method; +} + +=item my $level = compression_get_default_level() + +Return the default compression level used when compressing data. It's "9" +unless C<compression_set_default_level> has been used to change it. + +=item compression_set_default_level($level) + +Change the default compression level. Errors out if the +level is not valid (see C<compression_is_valid_level>). +either a number between 1 and 9 or "fast" +or "best". + +=cut + +sub compression_get_default_level { + return $default_compression_level; +} + +sub compression_set_default_level { + my ($level) = @_; + error(_g("%s is not a compression level"), $level) + unless compression_is_valid_level($level); + $default_compression_level = $level; +} + +=item compression_is_valid_level($level) + +Returns a boolean indicating whether $level is a valid compression level +(it must be either a number between 1 and 9 or "fast" or "best") + +=cut + +sub compression_is_valid_level { + my ($level) = @_; + return $level =~ /^([1-9]|fast|best)$/; +} + =back =head1 AUTHOR diff --git a/scripts/Dpkg/Compression/Compressor.pm b/scripts/Dpkg/Compression/Compressor.pm index 4da35a129..cec3577cf 100644 --- a/scripts/Dpkg/Compression/Compressor.pm +++ b/scripts/Dpkg/Compression/Compressor.pm @@ -25,33 +25,15 @@ use Dpkg::ErrorHandling; use POSIX; -our $default_compression = "gzip"; -our $default_compression_level = 9; - -# Class methods -sub set_default_compression { - my ($self, $method) = @_; - error(_g("%s is not a supported compression"), $method) - unless compression_is_supported($method); - $default_compression = $method; -} - -sub set_default_compression_level { - my ($self, $level) = @_; - error(_g("%s is not a compression level"), $level) - unless $level =~ /^([1-9]|fast|best)$/; - $default_compression_level = $level; -} - # Object methods sub new { my ($this, %args) = @_; my $class = ref($this) || $this; my $self = {}; bless $self, $class; - $self->set_compression($args{"compression"} || $default_compression); + $self->set_compression($args{"compression"} || compression_get_default()); $self->set_compression_level($args{"compression_level"} || - $default_compression_level); + compression_get_default_level()); return $self; } @@ -65,7 +47,7 @@ sub set_compression { sub set_compression_level { my ($self, $level) = @_; error(_g("%s is not a compression level"), $level) - unless $level =~ /^([1-9]|fast|best)$/; + unless compression_is_valid_level($level); $self->{"compression_level"} = $level; } |