X-Git-Url: http://git.nomeata.de/?p=darcs-mirror-metainit.git;a=blobdiff_plain;f=Parse.pm;h=8ac043dffce3873385c5a9c0026d2759cbc9c403;hp=325c6231a7a444ece35a0c733a5275da2ec4b865;hb=ce0bbca9486be46009065651330e39696f89280f;hpb=9c1e5bc460677c326a5167b2a2408701e08e62bb diff --git a/Parse.pm b/Parse.pm index 325c623..8ac043d 100644 --- a/Parse.pm +++ b/Parse.pm @@ -2,20 +2,19 @@ package Parse; sub parse { my $filename = shift; - open(FILE, "<$filename") || die "$!"; + open(FILE, "<", $filename) || die $!; my %parsed; my $lastkey; while () { # Ignore empty lines and comments + chomp; next if /^$/ or /^#/; - #last if /^$/; - if (my ($key, $value) = m/^([^ ].*): (.*)/) { + if (my ($key, $value) = m/^(\S.*): (.*)/) { $parsed{$key} = $value; $lastkey = $key; } elsif ($lastkey) { - chomp; s/^ //; s/^\.$//; $parsed{$lastkey} .= "\n$_"; @@ -29,12 +28,24 @@ sub parse { $parsed{Description} = $parsed{Name} } - ($parsed{Path}, $parsed{Args}) = split(/\s/,$parsed{Exec}); + { + no warnings qw(uninitialized); + ($parsed{Path}, $parsed{Args}) = split(/\s+/,$parsed{Exec}); - $parsed{"Required-Start"} = [split(/\s/,$parsed{"Required-Start"})]; - $parsed{"Should-Start"} = [split(/\s/,$parsed{"Should-Start"})]; - $parsed{"Required-Stop"} = [split(/\s/,$parsed{"Required-Stop"})]; - $parsed{"Should-Stop"} = [split(/\s/,$parsed{"Should-Stop"})]; + my @splits = qw(Required-Start Should-Start Required-Stop Should-Stop); + + for (@splits){ + $parsed{$_} = [ split m/\s+/, $parsed{$_} ]; + } + } + + my @mandatory = qw(Exec Name); + + my $error_msg = ""; + for (@mandatory){ + $error_msg .= "No '$_:' provided\n" unless $parsed{$_}; + } + die $error_msg if $error_msg; return %parsed; }