This is an automated email from the git hooks/post-receive script. guillem pushed a commit to branch main in repository dpkg.
View the commit online: https://git.dpkg.org/cgit/dpkg/dpkg.git/commit/?id=b700288ba1133b5c322b616960be81e2e44ac409 commit b700288ba1133b5c322b616960be81e2e44ac409 Author: Guillem Jover <[email protected]> AuthorDate: Thu Dec 22 04:01:26 2022 +0100 Dpkg::Compression: Add new compression_get/set_cmdline_de/compress() These functions handle the compression and decompression command-line, which centralizes command-specific option setting, such as compression level, or things like multi-threading. This also removes the last item necessary from compression_get_property, which can be deprecated now. --- scripts/Dpkg/Compression.pm | 53 ++++++++++++++++++++++++++++++++++++- scripts/Dpkg/Compression/Process.pm | 12 ++------- 2 files changed, 54 insertions(+), 11 deletions(-) diff --git a/scripts/Dpkg/Compression.pm b/scripts/Dpkg/Compression.pm index 2e0939c7e..deb5d5e0b 100644 --- a/scripts/Dpkg/Compression.pm +++ b/scripts/Dpkg/Compression.pm @@ -34,6 +34,8 @@ our @EXPORT = qw( compression_get_level compression_set_level compression_is_valid_level + compression_get_cmdline_compress + compression_get_cmdline_decompress ); use Exporter qw(import); @@ -302,6 +304,54 @@ sub compression_is_valid_level { return $level =~ /^([1-9]|fast|best)$/; } +=item @exec = compression_get_cmdline_compress($comp) + +Returns a list ready to be passed to C<exec>, its first element is the +program name for compression and the following elements are parameters +for the program. + +When executed the program will act as a filter between its standard input +and its standard output. + +=cut + +sub compression_get_cmdline_compress { + my $comp = shift; + + error(g_('%s is not a supported compression'), $comp) + unless compression_is_supported($comp); + + my @prog = @{$COMP{$comp}{comp_prog}}; + my $level = compression_get_level($comp); + if ($level =~ m/^[1-9]$/) { + push @prog, "-$level"; + } else { + push @prog, "--$level"; + } + return @prog; +} + +=item @exec = compression_get_cmdline_decompress($comp) + +Returns a list ready to be passed to C<exec>, its first element is the +program name for decompression and the following elements are parameters +for the program. + +When executed the program will act as a filter between its standard input +and its standard output. + +=cut + +sub compression_get_cmdline_decompress { + my $comp = shift; + + error(g_('%s is not a supported compression'), $comp) + unless compression_is_supported($comp); + + my @prog = @{$COMP{$comp}{decomp_prog}}; + return @prog; +} + =back =head1 CHANGES @@ -309,7 +359,8 @@ sub compression_is_valid_level { =head2 Version 2.01 (dpkg 1.21.14) New functions: compression_get_file_extension(), compression_get_level(), -and compression_set_level(). +compression_set_level(), compression_get_cmdline_compress() and +compression_get_cmdline_decompress(). =head2 Version 2.00 (dpkg 1.20.0) diff --git a/scripts/Dpkg/Compression/Process.pm b/scripts/Dpkg/Compression/Process.pm index a912c523c..2eca734bc 100644 --- a/scripts/Dpkg/Compression/Process.pm +++ b/scripts/Dpkg/Compression/Process.pm @@ -106,21 +106,13 @@ and its standard output. sub get_compress_cmdline { my $self = shift; - my @prog = @{compression_get_property($self->{compression}, 'comp_prog')}; - my $level = compression_get_level($self->{compression}); - if ($level =~ m/^[1-9]$/) { - push @prog, "-$level"; - } else { - push @prog, "--$level"; - } - return @prog; + return compression_get_cmdline_compress($self->{compression}); } sub get_uncompress_cmdline { my $self = shift; - my @prog = @{compression_get_property($self->{compression}, 'decomp_prog')}; - return @prog; + return compression_get_cmdline_decompress($self->{compression}); } sub _check_opts { -- Dpkg.Org's dpkg

