Parse bconsole output line by line, to speed up wait_for
authorJamie Cameron <jcameron@webmin.com>
Thu, 9 Sep 2010 05:09:59 +0000 (22:09 -0700)
committerJamie Cameron <jcameron@webmin.com>
Thu, 9 Sep 2010 05:09:59 +0000 (22:09 -0700)
bacula-backup/bacula-backup-lib.pl

index 9060922..4793f3e 100755 (executable)
@@ -737,12 +737,19 @@ local ($h, $cmd) = @_;
 if ($cmd ne "quit") {
        &sysprint($h->{'infh'}, "time\n");
        }
-local $rv = &wait_for($h->{'outfh'}, 'time\n(\d+\-\S+\-\d+ \d+:\d+:\d+)\n',
-                                    'Unable to connect to Director');
-return undef if ($rv == 1);
-$wait_for_input =~ s/time\n(\d+\-\S+\-\d+ \d+:\d+:\d+)\n//;
-$wait_for_input =~ s/^\Q$cmd\E\n//;
-return $rv == 0 ? $wait_for_input : undef;
+local $out;
+while(1) {
+        local $rv = &wait_for($h->{'outfh'},
+                        '^(\d+\-\S+\-\d+ \d+:\d+:\d+)\n',
+                        'Unable to connect to Director',
+                        '.*\n');
+        return undef if ($rv == 1 || $rv < 0);
+        $out .= $wait_for_input;
+        last if ($rv == 0);
+        }
+$out =~ s/time\n(\d+\-\S+\-\d+ \d+:\d+:\d+)\n//;
+$out =~ s/^\Q$cmd\E\n//;
+return $out;
 }
 
 # close_console(&handle)