Code Alignment :-)
[darcs-mirror-metainit.git] / Parse.pm
1 package Parse;
2
3 sub parse {
4     my $filename = shift;
5     open(FILE, "<$filename") || die "$!";
6
7     my %parsed;
8     my $lastkey;
9     while (<FILE>) {
10         # Ignore empty lines and comments
11         next if /^$/ or /^#/;
12         #last if /^$/;
13         if (my ($key, $value) = m/^([^ ].*): (.*)/) {
14             $parsed{$key} = $value;
15             $lastkey = $key;
16         }
17         elsif ($lastkey) {
18             s/^ //;
19             s/^\.$//;
20             $parsed{$lastkey} .= $_;
21         } else {
22             die "Cannot parse $!";
23         }
24     }
25
26     if (not exists $parsed{Description}) {
27         $parsed{Description} = $parsed{Name}
28     }
29
30     ($parsed{Path}, $parsed{Args}) = split(/\s/,$parsed{Exec});
31
32     $parsed{"Required-Start"} = [split(/\s/,$parsed{"Required-Start"})];
33     $parsed{"Should-Start"} =   [split(/\s/,$parsed{"Should-Start"})];
34     $parsed{"Required-Stop"} =  [split(/\s/,$parsed{"Required-Stop"})];
35     $parsed{"Should-Stop"} =    [split(/\s/,$parsed{"Should-Stop"})];
36
37     return %parsed;
38 }
39
40
41 # Return a true value
42 1;