summaryrefslogtreecommitdiff
path: root/scripts/Dpkg
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/Dpkg')
-rw-r--r--scripts/Dpkg/Compression.pm71
-rw-r--r--scripts/Dpkg/Compression/Compressor.pm24
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;
}