#!/usr/bin/env perl

#
# Print exitstatus on stderr.
#
use warnings;
use strict;

my $rc = system(@ARGV);
if ($? == -1) {
    die "system failed: %!\n";
}
if ($? == 0) {
    $rc = 0;
} elsif ($? >= 256) {
    $rc = $? >> 8;
} else {
    $rc = ($? & 127) | 128;
}
print STDERR "@@@ exitstatus: ${rc} @@@\n";
# Now look for it in log file.
my $grepfilename = $ENV{'MOSH_E2E_TEST'} . ".tmux.log";
for my $i (1..600) {
    open(my $grepfile, "<", $grepfilename) or die;
    my %tail;
    while (<$grepfile>) {
	# tmux can split the marker anywhere, including between every character.
	if (/^%output (%\d+) (.*)/) {
	    my ($pane, $chunk) = ($1, $2);
	    $tail{$pane} .= $chunk;
	    $tail{$pane} =~ /\Q@@@ exitstatus: ${rc} @@@\E/ && goto gotit;
	    $tail{$pane} = substr($tail{$pane}, -64);
	}
    }
    close($grepfile);
    sleep .1;
}
 gotit:
exit $rc;
