Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: UCI Issues

Author: Tim Mann

Date: 18:37:04 02/27/01

Go up one level in this thread


On February 26, 2001 at 14:09:08, Peter McKenzie wrote:

>If my guess is correct, then it is rather awkward for me because my input
>processing is not line oriented at all.  I use the C++ 'cin >> string' type of
>input which just gives me the next token and strips out the whitespace
>(including the newline).  Oh well, I'm sure I can find a way around it.
>
>So the problem for me is that you seem to be using '\n' as a command terminator
>for commands which have a variable number of arguments.  This is a different
>paradigm to the winboard way, I would say inferior even.

It's definitely not the "winboard way" to regard newlines and other whitespace
as being equivalent.  It's just luck if you can parse winboard output that way
without making a mistake.

Someone (I forget who) had a bug where he parsed winboard output without regard
to newlines, and he didn't implement all the commands.  In particular, he didn't
implement the "name" command.  So, suppose someone named "quit" on ICS were to
play his engine, leading winboard to send the command

  name quit

This would cause his engine to quit!  (Perhaps after generating an error message
saying that "name" was not understood.)  To prevent this, the engine should have
been ignoring the rest of the line after noticing that "name" was a command it
did not understand.

This kind of thing used to be much more dangerous in protocol version 1, where
it was considered acceptable for winboard to add new commands in new releases
and send them to engines that weren't expecting them.  It's safer now in version
2, where new commands don't get sent unless you turn them on with the "feature"
command.  But you still have to handle the default set of commands without
choking...

	--Tim




This page took 0 seconds to execute

Last modified: Thu, 15 Apr 21 08:11:13 -0700

Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.