]> git.sesse.net Git - remoteglot/blobdiff - remoteglot.pl
Hopefully fix the infamous select issues.
[remoteglot] / remoteglot.pl
index 3f84839d113262e018911b6ecf04a55735ef02de..4911b2cc43dac72b7e7a4a03b20b83c669c6e906 100644 (file)
@@ -39,6 +39,8 @@ while (<UCIREAD>) {
 print UCIWRITE "setoption name UCI_AnalyseMode value true\n";
 print UCIWRITE "setoption name NalimovPath value c:\\nalimov\n";
 print UCIWRITE "setoption name NalimovUsage value Normally\n";
+# print UCIWRITE "setoption name Contempt value 1000\n";
+# print UCIWRITE "setoption name Outlook value Ultra Optimistic\n";
 print UCIWRITE "ucinewgame\n";
 
 print "Chess engine ready.\n";
@@ -61,10 +63,11 @@ $t->cmd("observe $target");
 print "FICS ready.\n";
 while (1) {
        my $rin = '';
+       my $rout;
        vec($rin, fileno(UCIREAD), 1) = 1;
        vec($rin, fileno($t), 1) = 1;
 
-       my ($nfound, $timeleft) = select($rin, undef, undef, 5.0);
+       my ($nfound, $timeleft) = select($rout=$rin, undef, undef, 5.0);
        my $sleep = 1.0;
 
        while (1) {
@@ -87,7 +90,7 @@ while (1) {
        }
        
        # any fun on the UCI channel?
-       if (vec($rin, fileno(UCIREAD), 1)) {
+       if ($nfound > 0 && vec($rout, fileno(UCIREAD), 1) == 1) {
                my $line = <UCIREAD>;
                chomp $line;
                $line =~ tr/\r//d;
@@ -140,7 +143,7 @@ sub parse_infos {
                        $uciinfo{'pv'} = [ @x[1..$#x] ];
                        last;
                }
-               if ($x[0] eq 'UCI_AnalyseMode' || $x[0] eq 'setting') {
+               if ($x[0] eq 'UCI_AnalyseMode' || $x[0] eq 'setting' || $x[0] eq 'contempt') {
                        last;
                }