[PATCH 1/4] delayer: Code cleanup
Christoph Biedl
isc.cxzo at manchmal.in-ulm.de
Mon Jan 15 17:00:00 UTC 2024
* Enable strict and warnings, and declare variables.
* Use safe pipe open.
* Drop $eof, it's not used.
---
contrib/delayer.in | 36 ++++++++++++++++++------------------
1 file changed, 18 insertions(+), 18 deletions(-)
diff --git a/contrib/delayer.in b/contrib/delayer.in
index abef0d4e2..5febfc04d 100644
--- a/contrib/delayer.in
+++ b/contrib/delayer.in
@@ -15,31 +15,33 @@
# done by christian mock <cm at tahina.priv.at> sometime in july 1998,
# and put into the public domain.
#
-$delay = shift || die "usage: $0 delay prog-n-args\n";
-$timeout = $delay;
-$eof = 0;
+use strict;
+use warnings;
-open(OUT, "|" . join(" ", @ARGV)) || die "open |prog-n-args: $!\n";
+my $delay = shift || die "usage: $0 delay prog-n-args\n";
+
+my $timeout = $delay;
+
+open(OUT, "|-", @ARGV) || die "open |prog-n-args: $!\n";
#select(OUT);
#$| = 1;
#select(STDOUT);
-$rin = '';
+my $rin = '';
+my $rout;
vec($rin, fileno(STDIN), 1) = 1;
-while (!$eof || $#queue >= 0) {
- if (!$eof) {
- ($nfound, $timeleft) = select($rout = $rin, undef, undef, $timeout);
- } else {
- sleep($timeout);
- }
- $now = time();
- $exp = $now + $delay;
+my @queue;
- if (!$eof && vec($rout, fileno(STDIN), 1)) {
- $line = <STDIN>;
+while (1) {
+ my ($nfound, $timeleft) = select($rout = $rin, undef, undef, $timeout);
+ my $now = time();
+ my $exp = $now + $delay;
+
+ if (vec($rout, fileno(STDIN), 1)) {
+ my $line = <STDIN>;
if (!defined $line) { # exit NOW!
foreach (@queue) {
s/^[^:]+://g;
@@ -57,13 +59,11 @@ while (!$eof || $#queue >= 0) {
next;
}
- ($first, $line) = split(/:/, $queue[0], 2);
+ my ($first, $line) = split(/:/, $queue[0], 2);
while ($#queue >= 0 && $first <= $now) {
print OUT $line;
shift(@queue);
($first, $line) = split(/:/, $queue[0], 2);
}
$timeout = $first - $now;
-
}
-
--
2.39.2
More information about the inn-workers
mailing list