lib/Debian/DebFile.pm
changeset 1 05c025e89571
equal deleted inserted replaced
0:0d30ea853889 1:05c025e89571
       
     1 package Debian::DebFile; 
       
     2 
       
     3 use strict;
       
     4 use warnings;
       
     5 use File::Basename;
       
     6 
       
     7 use Carp;
       
     8 
       
     9 sub new {
       
    10     my $class = ref $_[0] ? ref shift : shift;
       
    11     my $self = {}; bless $self, $class;
       
    12 
       
    13     # Wenn wir mit einer Referenz auf ein Debian::File initialisiert
       
    14     # werden, dann können wir den prefix von fort übernehmen -- so 
       
    15     # haben wir dann in {file} den richtigen 
       
    16 
       
    17     if (ref($_[0]) eq "Debian::File") {
       
    18 	$self->{file} = $_[0]->file;
       
    19 	$self->{prefix} = $_[0]->prefix;
       
    20     } else {
       
    21 	$self->{file} = basename($_[0]);
       
    22 	$self->{prefix} = dirname($_[0]);
       
    23     }
       
    24 
       
    25     $self->{path} = join "/", @{$self}{qw/prefix file/};
       
    26 
       
    27     shift;
       
    28 
       
    29     $self->parse;
       
    30 
       
    31     return $self;
       
    32 }
       
    33 
       
    34 sub file { $_[0]->{file} }
       
    35 sub prefix { $_[0]->{prefix} }
       
    36 
       
    37 sub parse {
       
    38     my $self = shift;
       
    39 
       
    40     my $key;
       
    41     foreach (`dpkg --info $self->{path}`) {
       
    42 	s/^\s//;
       
    43 
       
    44 	defined $key and /^\s+(\S.*)/ and do {
       
    45 	    push @{$self->{deb}{$key}}, $1;
       
    46 	    next;
       
    47 	};
       
    48 
       
    49 	/^(\S+):(?:\s+(.*))?/ and do {
       
    50 	    $key = lc($1);
       
    51 	    push @{$self->{deb}{$key}}, $2 if defined $2;
       
    52 	    next;
       
    53 	};
       
    54 
       
    55     }
       
    56 }
       
    57 
       
    58 sub key {
       
    59     my $self = shift;
       
    60     my $key = shift;
       
    61 
       
    62     return @{$self->{deb}{$key}} if wantarray;
       
    63     return join "\n", @{$self->{deb}{$key}};
       
    64 }
       
    65 
       
    66 
       
    67 1;
       
    68 # vim:sts=4 sw=4 aw ai sm: