From: Steinar H. Gunderson Date: Wed, 13 Nov 2013 19:32:42 +0000 (+0100) Subject: Factor out read_line(). X-Git-Url: https://git.sesse.net/?p=remoteglot;a=commitdiff_plain;h=b85fa1c5d6ec02daaf4e615cb09af8a6895b20be Factor out read_line(). --- diff --git a/remoteglot.pl b/remoteglot.pl index 29c1785..c632387 100755 --- a/remoteglot.pl +++ b/remoteglot.pl @@ -164,27 +164,7 @@ while (1) { # any fun on the UCI channel? if ($nfound > 0 && vec($rout, fileno($engine->{'read'}), 1) == 1) { - # - # Read until we've got a full line -- if the engine sends part of - # a line and then stops we're pretty much hosed, but that should - # never happen. - # - my $line = ''; - while ($line !~ /\n/) { - my $tmp; - my $ret = sysread $engine->{'read'}, $tmp, 1; - - if (!defined($ret)) { - next if ($!{EINTR}); - die "error in reading from the UCI engine: $!"; - } elsif ($ret == 0) { - die "EOF from UCI engine"; - } - - $line .= $tmp; - } - - $line =~ tr/\r\n//d; + my $line = read_line($engine->{'read'}); handle_uci($line); $sleep = 0; @@ -1021,3 +1001,30 @@ sub open_engine { return $engine; } + +sub read_line { + my $fh = shift; + + # + # Read until we've got a full line -- if the engine sends part of + # a line and then stops we're pretty much hosed, but that should + # never happen. + # + my $line = ''; + while ($line !~ /\n/) { + my $tmp; + my $ret = sysread $engine->{'read'}, $tmp, 1; + + if (!defined($ret)) { + next if ($!{EINTR}); + die "error in reading from the UCI engine: $!"; + } elsif ($ret == 0) { + die "EOF from UCI engine"; + } + + $line .= $tmp; + } + + $line =~ tr/\r\n//d; + return $line; +}