diff --git a/tests/xwgame.pl b/tests/xwgame.pl index 73ee93ef9..1afb9af50 100755 --- a/tests/xwgame.pl +++ b/tests/xwgame.pl @@ -6,11 +6,12 @@ use strict; my $xwdir = "../linux/linux"; -my $cookie = "COOKIE"; +my @cookies = ( "COOKIE" ); my $nPlayers = 2; my $port = 10999; my $dict = "~/personal/dicts/SOWPODS2to15.xwd"; my $quit = ""; +my $gettingCookies = 0; my @names = ( "Fred", @@ -23,7 +24,8 @@ while ( my $param = shift( @ARGV ) ) { print STDERR "param $param\n"; if ( $param =~ m|-C| ) { - $cookie = shift( @ARGV ); + $cookies[0] = shift( @ARGV ); + $gettingCookies = 1; next; } elsif ( $param =~ m|-nplayers| ) { $nPlayers = shift( @ARGV ); @@ -33,36 +35,44 @@ while ( my $param = shift( @ARGV ) ) { $port = shift( @ARGV ); } elsif ( $param =~ m|-quit| ) { $quit = " -q "; + } elsif ( $gettingCookies ) { + push @cookies, $param; + next; } else { usage(); exit 1; } + $gettingCookies = 0; } -my $cmdBase = "cd $xwdir && ./xwords -d $dict -C $cookie $quit -p $port"; +foreach my $cookie (@cookies) { -for ( my $p = 0; $p < $nPlayers; ++$p ) { - print STDERR "p = $p\n"; - my $cmd = $cmdBase; - if ( $p == 0 ) { # server case - $cmd .= " -s "; - - for ( my $i = 1; $i < $nPlayers; ++$i ) { - $cmd .= " -N "; + my $cmdBase = "cd $xwdir && ./xwords -d $dict -C $cookie $quit -p $port"; + print "$cmdBase\n"; + + for ( my $p = 0; $p < $nPlayers; ++$p ) { + print STDERR "p = $p\n"; + my $cmd = $cmdBase; + if ( $p == 0 ) { # server case + $cmd .= " -s "; + + for ( my $i = 1; $i < $nPlayers; ++$i ) { + $cmd .= " -N "; + } } - } - $cmd .= " -r $names[$p]"; + $cmd .= " -r $names[$p]"; - my $pid = fork; - print STDERR "fork => $pid.\n"; - if ( $pid ) { - # parent; give child chance to get ahead - sleep 1; - } else { - exec "$cmd"; - last; - } -} + my $pid = fork; + print STDERR "fork => $pid.\n"; + if ( $pid ) { + # parent; give child chance to get ahead +# sleep 1; + } else { + exec "$cmd 2>/dev/null &"; + last; + } + } +} sub usage() {