equal
deleted
inserted
replaced
|
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: |