Quellcode durchsuchen

Dpkg::Compression: add get_compression_from_filename()

* scripts/Dpkg/Compression.pm: Add function
get_compression_from_filename() to identify the compression
type from the file extension. Returns undef in case of failure.
* scripts/Dpkg/Source/Compressor.pm: Simplify some code
by using the new get_compression_from_filename().
Raphael Hertzog vor 18 Jahren
Ursprung
Commit
753e47cdf4
2 geänderte Dateien mit 18 neuen und 11 gelöschten Zeilen
  1. 12 1
      scripts/Dpkg/Compression.pm
  2. 6 10
      scripts/Dpkg/Source/Compressor.pm

+ 12 - 1
scripts/Dpkg/Compression.pm

@@ -5,7 +5,8 @@ use warnings;
 
 use base qw(Exporter);
 our @EXPORT = qw(@comp_supported %comp_supported %comp_ext $comp_regex
-		 %comp_prog %comp_decomp_prog);
+		 %comp_prog %comp_decomp_prog
+		 get_compression_from_filename);
 
 our @comp_supported = qw(gzip bzip2 lzma);
 our %comp_supported = map { $_ => 1 } @comp_supported;
@@ -14,4 +15,14 @@ our $comp_regex = '(?:gz|bz2|lzma)';
 our %comp_prog = (gzip => 'gzip', bzip2 => 'bzip2', lzma => 'lzma');
 our %comp_decomp_prog = (gzip => 'gunzip', bzip2 => 'bunzip2', lzma => 'unlzma');
 
+sub get_compression_from_filename {
+    my $filename = shift;
+    foreach my $comp (@comp_supported) {
+        if ($filename =~ /^(.*)\.\Q$comp_ext{$comp}\E$/) {
+	    return $comp;
+        }
+    }
+    return undef;
+}
+
 1;

+ 6 - 10
scripts/Dpkg/Source/Compressor.pm

@@ -55,17 +55,13 @@ sub set_compression_level {
 
 sub set_filename {
     my ($self, $filename) = @_;
-    # Identify compression from filename
-    my $found = 0;
-    foreach my $comp (@comp_supported) {
-	if ($filename =~ /^(.*)\.\Q$comp_ext{$comp}\E$/) {
-	    $found = 1;
-	    $self->set_compression($comp);
-	    $self->set_uncompressed_filename($1);
-	    last;
-	}
+    my $comp = get_compression_from_filename($filename);
+    if ($comp) {
+	$self->set_compression($comp);
+	$self->set_compressed_filename($filename);
+    } else {
+	error(_g("unknown compression type on file %s"), $filename);
     }
-    error(_g("unknown compression type on file %s"), $filename) unless $found;
 }
 
 sub set_compressed_filename {