diff options
author | Lee Garrett <lgarrett@rocketjump.eu> | 2023-03-07 20:52:05 +0100 |
---|---|---|
committer | Lee Garrett <lgarrett@rocketjump.eu> | 2023-03-09 17:00:55 +0100 |
commit | 7be02a05384b1f4ac2f3bb44771abeb86b51deb9 (patch) | |
tree | aef8da24178a3f83b1c6d477dc00ab939416c80b | |
parent | c5d920a90bf4ae07093de7ad5cb68c9f89459123 (diff) |
parse-dla.pl: Fix debug mode
Running with -d would write .data to the literal file "-" and error
on the .wml. This presumably worked correctly in the past, writing to STDOUT.
So fix that, and also:
- only check if .wml/.data exists if we write to it
- Use lexical filehandles instead of bareword filehandles (recommended since
perl 5.6)
- Iterate with while over lines instead of slurping it (See PBP p. 209)
- Explicitely return undef in functions instead of last value (See PBP p. 197)
-rwxr-xr-x | english/lts/security/parse-dla.pl | 60 |
1 files changed, 33 insertions, 27 deletions
diff --git a/english/lts/security/parse-dla.pl b/english/lts/security/parse-dla.pl index ac59cbcf2da..7d4679f5ea0 100755 --- a/english/lts/security/parse-dla.pl +++ b/english/lts/security/parse-dla.pl @@ -35,13 +35,13 @@ my %shortmoy = ( en => [ 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec' ] ); -open my $fh, '<', $adv or die "couldn't open advisory file $adv: $!\n"; +open(my $fh, '<', $adv) or die "couldn't open advisory file $adv: $!\n"; my ($dla, $date, $package, $version, @dbids, $moreinfo, $year); $package = $moreinfo = $dla = ''; $year = strftime "%Y", localtime; $date = strftime "%Y-%m-%d", localtime; my ($nl, $mi, $headersnearingend); -foreach my $l (<$fh>) { +while (my $l = <$fh>) { $l = decode_qp($l); # match Subject line or advisory header to retrieve DLA string if ( @@ -173,7 +173,6 @@ if (defined($package) && $dla =~ /DLA[- ](\d+)-(\d+)/ ) { } else { die "Could not parse advisory filename '$adv'. DLA name missing in '$dla'\n"; } -$data = $wml = "-" if ($debug); if (!(-d $year)){ mkdir($year); @@ -183,33 +182,40 @@ if (!(-d $year)){ &make_wml; sub make_data{ - if (-f $data){ - print STDERR "Data file \"$data\" already exists for advisory in file '$adv'\n"; - return; + my $fh = *STDOUT; + if (not $debug) { + if (-f $data){ + print STDERR "Data file \"$data\" already exists for advisory in file '$adv'\n"; + return; + } + open($fh, ">", "$data") or die "Can't write to data file \"$data\": $!"; } - open DATA, ">", "$data" or die "Can't write to data file \"$data\""; - print DATA "<define-tag pagetitle>$pagetitle</define-tag>\n"; - print DATA "<define-tag report_date>$date</define-tag>\n"; - print DATA "<define-tag secrefs>@dbids</define-tag>\n" if @dbids; - print DATA "<define-tag packages>$package</define-tag>\n"; - print DATA "<define-tag isvulnerable>yes</define-tag>\n"; - print DATA "<define-tag fixed>yes</define-tag>\n"; - print DATA "<define-tag fixed-section>no</define-tag>\n"; # Kaare, 2011-01-24: Line added because the "fixed in" section is no longer available - print DATA "\n#use wml::debian::security\n\n"; - close DATA; + print $fh "<define-tag pagetitle>$pagetitle</define-tag>\n"; + print $fh "<define-tag report_date>$date</define-tag>\n"; + print $fh "<define-tag secrefs>@dbids</define-tag>\n" if @dbids; + print $fh "<define-tag packages>$package</define-tag>\n"; + print $fh "<define-tag isvulnerable>yes</define-tag>\n"; + print $fh "<define-tag fixed>yes</define-tag>\n"; + print $fh "<define-tag fixed-section>no</define-tag>\n"; # Kaare, 2011-01-24: Line added because the "fixed in" section is no longer available + print $fh "\n#use wml::debian::security\n\n"; + close $fh if not $debug; + return } sub make_wml{ - if (-f $wml){ - print STDERR "WML file \"$wml\" already exists for advisory in file '$adv'\n"; - return; + my $fh = *STDOUT; + if (not $debug) { + if (-f $wml){ + print STDERR "WML file \"$wml\" already exists for advisory in file '$adv'\n"; + return; + } + open($fh, ">", "$wml") or die "Can't write to WML file \"$wml\": $!"; } - open WML, ">", "$wml" or die "Can't write to WML file \"$wml\""; - print WML "<define-tag description>LTS security update</define-tag>\n"; - print WML "<define-tag moreinfo>$moreinfo\n</define-tag>\n"; - print WML "\n# do not modify the following line\n"; - print WML "#include \"\$(ENGLISHDIR)/lts/security/$data\"\n"; - printf WML "# %sId: \$\n", "\$"; - close WML; + print $fh "<define-tag description>LTS security update</define-tag>\n"; + print $fh "<define-tag moreinfo>$moreinfo\n</define-tag>\n"; + print $fh "\n# do not modify the following line\n"; + print $fh "#include \"\$(ENGLISHDIR)/lts/security/$data\"\n"; + printf $fh "# %sId: \$\n", "\$"; + close $fh if not $debug; + return; } - |