[Pgp-tools-commit] r24 - trunk/caff
Peter Palfrader
weasel at haydn.debian.org
Wed Oct 20 11:37:18 UTC 2004
Author: weasel
Date: 2004-10-20 05:37:16 -0600 (Wed, 20 Oct 2004)
New Revision: 24
Modified:
trunk/caff/caff
Log:
Let's see if this fixes our race with gpg
Modified: trunk/caff/caff
===================================================================
--- trunk/caff/caff 2004-10-20 11:16:28 UTC (rev 23)
+++ trunk/caff/caff 2004-10-20 11:37:16 UTC (rev 24)
@@ -200,7 +200,7 @@
};
sub debug($) {
my ($line) = @_;
- #print "[DEBUG] $line\n";
+ print "[DEBUG] $line\n";
};
sub trace($) {
my ($line) = @_;
@@ -249,19 +249,29 @@
my $exitwhenstatusmatches = $options{'exitwhenstatusmatches'};
trace("doign stuff until we find $exitwhenstatusmatches") if defined $exitwhenstatusmatches;
+ my $readwrote_stuff_this_time = 0;
+ my $do_not_wait_on_select = 0;
my ($readyr, $readyw, $written);
while ($sout->count() > 0 || (defined($sin) && ($sin->count() > 0))) {
if (defined $exitwhenstatusmatches) {
if ($status =~ /$exitwhenstatusmatches/m) {
trace("readwrite_gpg found match on $exitwhenstatusmatches");
- last;
+ if ($readwrote_stuff_this_time) {
+ trace("read/write some more\n");
+ $do_not_wait_on_select = 1;
+ } else {
+ trace("that's it in our while loop.\n");
+ last;
+ }
};
};
+ $readwrote_stuff_this_time = 0;
trace("select waiting for ".($sout->count())." fds.");
- ($readyr, $readyw, undef) = IO::Select::select($sout, $sin, undef, 1);
+ ($readyr, $readyw, undef) = IO::Select::select($sout, $sin, undef, $do_not_wait_on_select ? 0 : 1);
trace("ready: write: ".(defined $readyw ? scalar @$readyw : 0 )."; read: ".(defined $readyr ? scalar @$readyr : 0));
for my $wfd (@$readyw) {
+ $readwrote_stuff_this_time = 1;
if (length($in) != $offset) {
trace("writing to $wfd.");
$written = $wfd->syswrite($in, length($in) - $offset, $offset);
@@ -281,6 +291,7 @@
next unless (defined(@$readyr)); # Wait some more.
for my $rfd (@$readyr) {
+ $readwrote_stuff_this_time = 1;
if ($rfd->eof) {
trace("reading from $rfd done.");
$sout->remove($rfd);
More information about the Pgp-tools-commit
mailing list