Fixed Parse.pm and create-sysvinit-file.pl.
[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     return %parsed;
33 }
34
35
36 # Return a true value
37 1;