325c6231a7a444ece35a0c733a5275da2ec4b865
[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             chomp;
19             s/^ //;
20             s/^\.$//;
21             $parsed{$lastkey} .= "\n$_";
22         } else {
23             die "Cannot parse $!";
24         }
25     }
26     close FILE;
27
28     if (not exists $parsed{Description}) {
29         $parsed{Description} = $parsed{Name}
30     }
31
32     ($parsed{Path}, $parsed{Args}) = split(/\s/,$parsed{Exec});
33
34     $parsed{"Required-Start"} = [split(/\s/,$parsed{"Required-Start"})];
35     $parsed{"Should-Start"} =   [split(/\s/,$parsed{"Should-Start"})];
36     $parsed{"Required-Stop"} =  [split(/\s/,$parsed{"Required-Stop"})];
37     $parsed{"Should-Stop"} =    [split(/\s/,$parsed{"Should-Stop"})];
38
39     return %parsed;
40 }
41
42
43 # Return a true value
44 1;