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

Reply via email to