Merge commit 'v4.3.16'
authorArun Persaud <arun@nubati.net>
Sat, 2 May 2009 18:58:25 +0000 (11:58 -0700)
committerArun Persaud <arun@nubati.net>
Sat, 2 May 2009 19:23:31 +0000 (12:23 -0700)
merged changes from Alessandro Scotti and H.G. Muller back into the main line.
They changed quite a lot, so it's really more a merge of the changes from v2.4.7 to v2.4.8 into their code.
This is the initial merge, there is probably a lot of cleanup that will follow. Once this is done, v4.4.0 will
be released.

86 files changed:
AUTHORS
ChangeLog
ChangeLog.2 [deleted file]
FAQ.html
ToDo
aclocal.m4 [changed mode: 0644->0755]
backend.c
backend.h
bitmaps/convert.c
common.h
config.h
config.rpath [new file with mode: 0755]
configure
configure.in
engine-intf.html
gettext.h [new file with mode: 0755]
installer/WinBoard-4.2.7/COPYING [new file with mode: 0644]
installer/WinBoard-4.2.7/COPYRIGHT [new file with mode: 0644]
installer/WinBoard-4.2.7/ChangeLog [new file with mode: 0644]
installer/WinBoard-4.2.7/Crafty-WinBoard/Crafty.rc [new file with mode: 0644]
installer/WinBoard-4.2.7/Crafty-WinBoard/book.bin [new file with mode: 0644]
installer/WinBoard-4.2.7/Crafty-WinBoard/books.bin [new file with mode: 0644]
installer/WinBoard-4.2.7/Crafty-WinBoard/crafty.doc.txt [new file with mode: 0644]
installer/WinBoard-4.2.7/Crafty-WinBoard/wcrafty.exe [new file with mode: 0644]
installer/WinBoard-4.2.7/FAQ.html [new file with mode: 0644]
installer/WinBoard-4.2.7/GNUChes5.exe [new file with mode: 0644]
installer/WinBoard-4.2.7/GNUChess.exe [new file with mode: 0644]
installer/WinBoard-4.2.7/Knight.ico [new file with mode: 0644]
installer/WinBoard-4.2.7/NEWS [new file with mode: 0644]
installer/WinBoard-4.2.7/READ_ME.txt [new file with mode: 0644]
installer/WinBoard-4.2.7/RJF60.pgn [new file with mode: 0644]
installer/WinBoard-4.2.7/RePackage/FA.ini [new file with mode: 0644]
installer/WinBoard-4.2.7/RePackage/WinBoard-4.2.7_full.nsi [new file with mode: 0644]
installer/WinBoard-4.2.7/RePackage/knight.ico [new file with mode: 0644]
installer/WinBoard-4.2.7/RePackage/modern-uninstall.ico [new file with mode: 0644]
installer/WinBoard-4.2.7/RePackage/wc_uninst.ico [new file with mode: 0644]
installer/WinBoard-4.2.7/RePackage/welcome_chess.bmp [new file with mode: 0644]
installer/WinBoard-4.2.7/book.dat [new file with mode: 0644]
installer/WinBoard-4.2.7/bughouse.bat [new file with mode: 0644]
installer/WinBoard-4.2.7/cygncurses7.dll [new file with mode: 0644]
installer/WinBoard-4.2.7/cygreadline5.dll [new file with mode: 0644]
installer/WinBoard-4.2.7/cygwin1.dll [new file with mode: 0644]
installer/WinBoard-4.2.7/gnuches5.txt [new file with mode: 0644]
installer/WinBoard-4.2.7/gnuchesr.exe [new file with mode: 0644]
installer/WinBoard-4.2.7/gnuchess.README [new file with mode: 0644]
installer/WinBoard-4.2.7/gnuchess.dat [new file with mode: 0644]
installer/WinBoard-4.2.7/gnuchess.lan [new file with mode: 0644]
installer/WinBoard-4.2.7/gnuchess.txt [new file with mode: 0644]
installer/WinBoard-4.2.7/kk13.pgn [new file with mode: 0644]
installer/WinBoard-4.2.7/modern-uninstall.ico [new file with mode: 0644]
installer/WinBoard-4.2.7/timeseal.exe [new file with mode: 0644]
installer/WinBoard-4.2.7/timestamp.exe [new file with mode: 0644]
installer/WinBoard-4.2.7/wcrafty.exe [new file with mode: 0644]
installer/WinBoard-4.2.7/winboard.exe [new file with mode: 0644]
installer/WinBoard-4.2.7/winboard.hlp [new file with mode: 0644]
installer/WinBoard-4.2.7/zippy.README [new file with mode: 0644]
installer/WinBoard-4.2.7/zippy.lines [new file with mode: 0644]
parser.c
parser.l
po/LINGUAS [new file with mode: 0755]
po/Makefile.in.in [new file with mode: 0755]
po/Makevars [new file with mode: 0755]
po/POTFILES.in [new file with mode: 0755]
po/de.po [new file with mode: 0644]
po/remove-potcdate.sin [new file with mode: 0755]
po/tr.po [new file with mode: 0644]
po/xboard.pot [new file with mode: 0755]
uci/uci_protocol.txt [new file with mode: 0755]
winboard/config.h
winboard/defaults.h
winboard/mingw32.mak [new file with mode: 0644]
winboard/msvc7.mak [new file with mode: 0644]
winboard/parser.c [new file with mode: 0644]
winboard/readme.txt
winboard/wengineo.c
winboard/winboard.c
winboard/winboard.rc
winboard/winboard.rtf
xboard.c
xboard.texi
xedittags.c
xengineoutput.c
xgamelist.c
xhistory.c
xoptions.c
zippy.c

diff --git a/AUTHORS b/AUTHORS
index 6cf36e6..16400d4 100644 (file)
--- a/AUTHORS
+++ b/AUTHORS
@@ -135,4 +135,8 @@ allow board sizes other than 8x8, and many non-orthodox Chess pieces,
 so that WinBoard is now capable of playing variants like Shogi and Xiangqi.\r
 Also implemented displaying of the Crazyhouse holdings, and many adjudication\r
 and other backend options. This version of WinBoard, (4.3.xx) containing all \r
-of the WinBoard_x options, became known as WinBoard_F.
\ No newline at end of file
+of the WinBoard_x options, became known as WinBoard_F.\r
+\r
+12. Arun Persaud <arun AT nubati DOT net> \r
\r
+fix for parser.l\r
index 313e8f1..7338258 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
-ChangeLog for XBoard/WinBoard
-
-* 11/26/2003: In WinBoard, setting the -debug flag now logs ICS output
-to WinBoard.debug too.  (This isn't needed in xboard because ICS
-output already goes to stdout, so it's easy to capture along with the
-debug output on stderr.)  This was issue #280 in the ToDo file.
-
-* 11/23/2003: Cleaned up some minor problems in cygwin.mak.  Thanks to
-Hans Werner Strube for the problem report.
-
-* 11/23/2003: Updated the default list of chess servers in
-winboard/defaults.h.  Deleted two that appear to be dead and added a
-new one that is active.
-
-* 11/19/2003: Swapped icon_white.bm and icon_black.bm in XBoard.
-Hopefully this will get them the right way around by default on more X
-window managers.  I wish I understood this better.
-
-* 11/18/2003: Implemented a simple 32-bit random number generator for
-WinBoard, replacing the Windows rand(), which ranges only up to
-0x7fff.  Formerly on Windows, only zippy.lines sayings that started in
-the first 32767 bytes of the file could ever be used.  This was issue
-#505 from the ToDo file.
-
-* 11/16/2003: The xboard man page and info files are now built from a
-common set of texinfo source files, and the xboard man page now covers
-cmail as well.  Formerly, ever since the texinfo file was first
-contributed to the project, it was separate from the man page and the
-two files had to be updated in parallel, making for a maintenance
-nightmare.  To make combining the files possible, I took the Perl
-script "texi2man" from the GNU Units project and added support for a
-larger subset of the texinfo markup language.  I then carefully
-compared the old man page and old texinfo file to make sure the latest
-and clearest words survived into the new combined texinfo file.  It
-would be great to merge in WinBoard's help file too, but that's a
-larger project.  It would have to be heavily conditionalized to
-deal with differences in features between XBoard and WinBoard.
-
-* 11/15/2003: Cleaned up and applied a small patch from Daniel
-Mehrmann, to stop overly long PVs in thinking output from causing a
-buffer overflow crash in backend.c.
-       
-* 11/5/2003: When a chess engine sends a "telluser" command (including
-the cases where "tellall" or "tellopponent" acts like telluser), the
-information now goes into a nonmodel popup that is automatically
-dismissed when the user clicks anywhere on the board.  This fix is
-more significant on WinBoard, where formerly you got a fully modal
-dialog that had to be dismissed by clicking on OK before anything else
-could happen.  The bug was issue #406 in the ToDo file.
-
-* 11/1/2003: Removed email addresses from this file to reduce spam
-load, as it gets linked to from the Web.
-
-* 11/1/2003: Updated READ_ME and winboard/READ_ME.txt.
-
-* Modified xboard and winboard makefiles to be able to build the
-project in the new combined directory structure.
-
-* Applied a small security fix to pxboard, from Martin Maeok.
-
-* Fixed a bug in the game list dialog.  The change in 4.2.6 to opening
-games in text mode (meant to avoid getting extra \r's into comments)
-caused a new bug in determining seek offsets when parsing a game file
-to form the game list.  Also, the change was incomplete; on some code
-paths games were still being opened in binary mode.  Thanks to Lenik
-Terenin for reporting the offset bug.  I've now gone back to always
-using binary mode when reading game files, and I've fixed the comment
-bug by adding code to remove \r's from parsed comments explicitly.  I
-still use text mode for writing game files so that games written by
-WinBoard will have Windows-style line endings.
-
-* Fix for minor bug in WinBoard installer.  If you chose a non-default
-destination directory, the default directory was still used for a
-couple of unimportant things, namely setting the App Paths registry
-keys (unused by WinBoard) and trying to copy the existing WinBoard.ini
-file to WinBoard.old.  I inherited this bug from the InstallShield 5
-sample template.  Thanks to "l.d." for noticing the incorrect keys.
-
-* Patch from Chris Priest: when two engines are being run through rsh,
-avoid reusing the same stderr port for both.  I'm not sure why this
-should be needed, but it's harmless, at least.
-
-* Bugfix: The kludge to deal with old engines that give an error
-message because they don't know the "st" command was too sloppy; it
-could hit on an "st" substring anywhere in an error message.  GNU
-Chess 4 is the only engine I know of where the kludge was needed, so I
-changed the kludge to match a longer, more GNU-specific string.
-
-* Changed the WinBoard self-extracting installer to choose a unique
-temporary subdirectory name within the Windows temp directory instead
-of always putting wb-setup directly in temp.  Besides being better
-practice, this avoids the need to deltree wb-setup first, which
-occasionally alarms someone who thinks that deltree is only used by
-trojans to delete all your files.  (Yes, I'm serious.)
-
-* Fixed a bug where FICS-style "wild/0" strings were not parsed as the
-proper wild type.  The "/" was not being skipped.
-
-* Fixed a WinBoard bug where temporary files created by game
-copy/paste were being created in the root directory of the current
-drive instead of the TMP directory and were not always deleted on exit.
-
-* Fixed a small bug in winboard.c's ErrorDialog() function.  Thanks to
-"Ron" (no last name given).  The bug might have caused a problem when
-pressing OK or Cancel in an error dialog when more than one error
-dialog was being displayed, but I'm not really sure.
-
-* Removed a hack that worked around a bug in very old versions of
-Crafty, where it would sometimes reply "illegal move" to a "."
-command.  The hack kept us from recognizing real illegal move messages
-in analyze mode from engines that don't respond to the "." command.
-Thanks to Fabien Letouzey for the report.
-
-* Fixed a bug in the xboard version of GetDelayedEvent.  It would
-return the most recently scheduled event even if it had already fired.
-This caused at least one visible error: in -ics -xreuse mode, starting
-the engine again and seeing another "feature done=1" would re-run the
-initialization code in InitBackEnd3, including the code that opens the
-connection to ICS.  The WinBoard version didn't have this bug.  Thanks
-to Bob Hyatt for the bug report.
-
-* The promotion popup for ICC wild 26 (giveaway) now includes King.
-Thanks to Fredrik Josefsson for the bug report.
-
-* The first game in a file (or being pasted from the clipboard) can
-now start with a bare move -- no PGN tags, no move number "1", etc.
-Suggested by Shane Harrelson.  One could imagine taking this farther
-and accepting something like "e4 e5 1/2-1/2 d4 d5" as two games, but
-I haven't done that.
-
-* Bug fix: xboard didn't really accept a paste of multiple games,
-contrary to what I wrote when adding the feature to WinBoard in
-4.2.4.  Now it works in both.
-
-* Fixed generic start/end of game messages to work on chess.net, where
-they put ratings in parens after the player names.
-
-* Updated config.sub and config.guess to newer versions from
-automake-1.4p5-2.  This makes configure work with MacOS X + X11.
-
-* Bugfix: when examining a game fragment on FICS where black plays
-first, don't show two "(0:00.000)" times on the initial "none" move.
-
-* If TestLegality is on and one of the engines makes an illegal move
-in TwoMachines mode, it forfeits immediately.  Formerly the game would
-get stuck at that point and the engine that made the illegal move
-would eventually lose on time.
-
-xboard/WinBoard 4.2.6 -- Fri Feb  1 22:26:31 PST 2002
-Tim Mann
-
-Another small bugfix release.
-
-* Put in a small change from Alexander Mai to allow xboard to build in
-an OS/2 EMX environment.
-
-* Fix WinBoard-only bug where editing a PGN file with comments would
-insert more \r characters before the \n after every Load/Save cycle.
-For some unknown reason we were reading the files in "rb" mode but
-writing them in "a" mode, so we kept the \r characters on reading and
-added an extra one on writing.  Fix: change the "rb" to "r".  Thanks
-to Joel (last name not given) for the bug report.
-
-* Put the arguments to rsh/remsh in the right order for better
-portability.  Thanks to Michael Kalisz.
-
-* FreezeUI is now implemented in WinBoard; it was previously only
-implemented in xboard.  This function prevents the user from entering
-moves or other commands while we are waiting for an engine to
-initialize itself.  Implementing it fixes a bug where the user could
-start a game (etc.) during feature negotiation.  One of the symptoms
-of this bug was that we could send "new" one or move moves *after* the
-first game started!
-
-* Fixed some handle leaks (WinBoard only), including a nasty one that
-leaked one handle per command sent to ICS.  Thanks to several folks
-who helped characterize the bug and tried to look for leaks.
-
-* We now install and look for the info file in ${prefix}/share/info
-instead of ${prefix}/info.  The latter is still the default in
-autoconf, but the former is currently used in Red Hat Linux and
-probably elsewhere.
-
-xboard/WinBoard 4.2.5 -- Sat Dec 15 11:42:51 PST 2001
-Tim Mann
-
-* Changed the bundled GNU Chess 5.02 in the WinBoard package to
-include a much smaller book and to use much less hash table space by
-default (8 MB transposition table, 0.5 MB pawn evaluation table).  The
-large book included with 4.2.4 made the WinBoard download too big for
-some people, and the default hash tables were larger than the
-available physical memory on some people's computers. I built the
-small book by running Crafty's "small.zip" book line collection
-through a Perl script that makes it look enough like real PGN games
-that the GNU Chess book builder will accept it.  The script and some
-minor patches to GNU Chess 5 are available in the WinBoard source
-distribution and at http://www.tim-mann.org/gnuchess.html.
-
-* Fixed a bug in the code that deals with engines that complain that
-"time" and "otim" are illegal moves.  This was a new bug in 4.2.4.
-
-* Revamped the implementation of ToStart in analysis mode.  Formerly
-there was some ill-conceived code that would try to get back to the
-start of the game by doing a "new" command (and all the followup
-commands that requires) while remaining in analysis mode.  This is
-problematic for engine authors to support, though it works with
-Crafty.  This code was trying to solve the problem of ToStart being
-slow because the engine would try to start an analysis after every
-"undo" command all the way back to the start.  But ToEnd already had a
-much better solution to this problem, and now ToStart does the same
-thing: we exit from analysis mode and enter force mode instead,
-make/unmake moves to get to the end/start of the game, and then
-reenter analysis mode.
-
-* Formerly, Zippy could try to start playing a game before the engine
-was initialized; that is, during the initial timeout for protover 1
-engines, or before "feature done=1" for protover 2 engines.  We now
-wait until the engine is initialized before connecting to ICS, which
-fixes this in the common case.  If you turn off engine reuse for
-multiple games (that is, if you give the -xreuse option), there could
-still be problems; see item 503 in the ToDo file.  Thanks to Dieter
-Buerssner for the bug report.
-
-* Bugfix: All WinBoard versions since the merge with WinBoard Plus
-(but not xboard) have had a bug in changing the PeriodicUpdates,
-PonderNextMove, and ShowThinking options from the menu.  The bug
-mostly just caused changing these options during a game to not take
-effect until after the next reset.  For TwoMachines games, though,
-changing PonderNextMove just before the game would take effect
-immediately for the second engine but not until the next game for the
-first engine.  Thanks to Koundinya Veluri for the bug report.
-
-* Bugfix: In 4.2.4, we sometimes got confused when trying to leave and
-reenter analyze mode.  One symptom was that Analyze File did not work.
-Thanks to Igor Syry for the bug report.
-
-xboard/WinBoard 4.2.4 -- Sun Dec  9 14:56:30 PST 2001
-Tim Mann
-       
-* WinBoard now includes GNU Chess 5.02 in place of GNU Chess 5.00.
-
-* WinBoard's PasteGameFromClipboard will now handle a paste with
-multiple games in it, popping up the game list dialog.  xboard
-already did this.  Suggested by Robert Gerstman.
-
-* We now use the "clearboard" command on ICC where appropriate.
-
-* Bugfix: don't generate a bogus "variant normal" command to an engine
-for the loadable ICC wild types that we internally flag as
-VariantLoadable.  Also clarified the message that Zippy sends when
-declining such wild games -- it can't deal with the possibility of
-loading an arbitrary position into the game.  Thanks to Dieter
-Buerssner for reporting the problem.  It would be nice to be able to
-actually play these wild types some day; presumably there would have
-to be an option to either send "loadgame" with a specified position,
-or to deal with an opponent sending it.
-
-* If we get a holdings message from ICS when we thought we were
-playing normal chess, we now try asking for a move list so that we can
-find out from the header what's really happening.  Formerly we guessed
-bughouse in this case.  Response to a comment from Gian-Carlo
-Pascutto.
-
-* Fixed two longstanding bugs in the clock code.  These affected only
-play between a user and a local engine, or between two local engines,
-not ICS play.  (1) The last fractional second used by a player before
-moving and virtually pushing his clock was being charged to his
-opponent instead of to him.  (2) The time and otim commands were being
-sent to an engine before the (buggy) fractional second update was
-done.  The second bug was pretty harmless in itself, but the first one
-was serious.  Many thanks to Peter Rosendahl for carefully diagnosing
-and reporting these bugs!
-
-* Changed WinBoard timestamp key.  Nothing is changed other than the
-key and a recompilation.  ICC may phase out the old key soon; if they
-do, you'll need to use the timestamp.exe from WinBoard 4.2.4 or later
-to connect to chessclub.com.
-
-* Fixed an xboard-only bug where most dialogs would not take keyboard
-input unless the mouse was actually over the dialog, even if the
-dialog window had focus.  Thanks to Jason Varsoke for the bug report.
-
-* Bugfix; Remember to send time and otim commands to engine before
-sending playother.  Thanks to Bob Hyatt for the bug report.  Also
-fixed a bug where time and otim were sometimes sent even with feature
-time=0.
-
-* Added small patches from Wilkin Ng that are meant to fix a crash in
-CopyGameToClipboard and a "can't unlock clipboard memory" error in
-PasteTextFromClipboard, under Windows 2000.
-
-* Changed cygwin.mak to not use -mno-cygwin.  In other words, it now
-uses cygwin1.dll instead of the mingw libraries.  This works around
-bugs in fileno() and stat() that I encountered in mingw.  (fileno
-seems to always return 0.  stat fails because the library routine uses
-a different definition of struct stat than the header files provide.)
-Thanks to Robert Gerstman for reporting the symptoms these bugs caused
-when WinBoard was compiled with Cygwin.
-
-* Added -showButtonBar option.  This lets you delete the << < P > >>
-buttons and thus widen the message widget a bit.
-
-* Added code to address a very obscure bug.  If an engine dies and
-needs to be restarted while in one of the analyze modes, it was not
-getting put back into analyze mode.  This bug should not really ever
-have gotten tickled unless reuse was turned off and the engine sends
-game end commands (such as 1-0) when a game ends by rule while in
-analyze mode.  The next version of the protocol spec will say that
-engines should not do that, but version 2 and earlier didn't address
-the issue.
-
-* We now use the FICS "iset ms 1" feature to get times in ms instead
-of seconds.  Thanks to DAV for email telling me about this feature.
-
-* Changed clock display to show tenths of seconds for 9.9 seconds and
-less, instead of 0.9 seconds and less as before.
-
-* It has been discovered that Zippy can play simuls on ICC (but not on
-FICS).  If you arrange for Zippy to send the ICC command "simulize" in
-the -zippyGameStart string, it will accept additional games while
-playing.  Zippy will use the same engine for every game, so whenever
-it switches opponents, the engine's state will be reset with the "new"
-command.  This will of course weaken its play, so don't enable simuls
-if you want your engine to have the highest possible rating.  Zippy
-was never designed to work with simuls; it just works by accident, and
-it hasn't been tested much.  So please report any bugs you notice, but
-don't expect them to be fixed rapidly.  Thanks to Paul McGuire for
-noticing that this works.
-       
-* Bugfix: Suppress the direct command to engine popup if there is no
-engine.  In WinBoard this case used to cause a crash.  Thanks to
-"Dargon" for the bug report.
-
-* Bugfix: formerly we did part of the engine initialization for the
-very first game too soon, before feature negotiation.  One result of
-this is that engines would never get the "ics" command for the first
-game.
-
-* Lengthened timeout to detect protocol version 1 chess engines to 10
-seconds.  This should reduce problems with protocol version 2 engines
-that are slow to initialize missing the timeout and not getting a
-chance to send their feature commands before the first game starts.
-
-* Klaus Friedel says that adding a short sleep to WinBoard after
-starting a new chess engine solves a problem that occurs under Windows
-2000, in which engines sometimes don't see the initial command(s) from
-WinBoard and hang.  I don't understand how that can happen, but the
-sleep is harmless, so I've put it in.  Others have also reported what
-may be the same problem, so hopefully this will fix it for them too.
-
-* Bugfix: editing the Result field in EditTags will no longer cause a
-later crash.  Thanks to DAV for a clear bug report that let me
-reproduce the problem.
-
-* ICC wild 28 is now recognized as shatranj, but it is not supported.
-You might be able to play it by turning off Test Legality.
-
-* Formerly we would always turn off "feature time" if the engine
-printed an error message with the string "time" or "otim" in it; now
-we do that only if the message comes before the engine makes its first
-move.  This change is useful because some engines spew a lot of bogus
-error messages about commands they don't fully parse, so something
-like "result 0-1 {White lost on time}" could generate such a message.
-Engines shouldn't do that, but if they do, mysteriously turning off
-"feature time" is not a good way to react.
-
-* Fixed an infrequently occurring Zippy bug: formerly, resuming from
-adjournment by position (that is, with GetMoveList turned off) or
-starting/resuming a wild game (nonstandard starting position) would
-try to set up the position without putting the engine into force mode
-first.  That was probably tolerated by most engines, but if the
-position was black-to-play and the engine hadn't set feature
-setboard=1, then the fake "a2a3" move (which we use as a kludge to get
-black to be on move before sending the edit command) would appear to
-be a real move, and the engine might reply to it!  This bug could also
-be seen when trying to use Zippy to play a simul -- something that
-Zippy was never designed to support, but which seems to mostly work
-anyway.  Thanks to Paul McGuire for sending a WinBoard.debug file that
-showed the bug occurring.  Some other cases of resuming adjournments
-or starting games from nonstandard positions may have been broken too;
-I think I've straightened out the problems.
-
-* Agreeing to a draw in the human vs. local engine case formerly did
-not work if the human offered first; now it does.  A human's
-unsolicited offer is considered valid until he makes another move.
-Thanks to Bruce Moreland for the bug report.
-
-* Bugfix: We used to look for just "fr" in Event tags or strings from
-ICSes to recognize Fischer Random games.  This caused a lot of false
-matches.  Now we look for "wild/fr" instead, which is what FICS uses.
-
-* Bugfix: Clicking on a move in the MoveList window only updated the
-displayed position; if a chess engine was active, its state was not
-updated.  Thanks to Alejandro Dubrovsky for the bug report.
-       
-* Bugfix: The "resign" command from engine to xboard formerly did not
-work in ICS (Zippy) mode.
-
-* Bugfix: Formerly we would register a garbage premove if the user
-clicked on a piece, then clicked on an edge or outside the board.  Now
-such an errant click is ignored.
-
-* Bugfix: GameEnds would send "exit" to an engine in analyze mode even
-if we did not actually want to leave analyze mode.
-
-* Bugfix: "feature pause" was being rejected.  We don't currently use
-it, but that is no reason to reject it.  Thanks to Gian-Carlo Pascutto
-for the bug report.
-
-* Bugfix: when "partner" needed to be sent both to ICS and the engine,
-Zippy was erroneously sending the ICS prefix character to the engine
-too.  Thanks to Gian-Carlo Pascutto for the bug report.
-
-* Zippy now declines challenges when the engine is not yet ready to
-play again, instead of ignoring them.  This is needed so that the
-server will let the opponent repeat the challenge.  It might be better
-to remember such challenges and accept them when the engine is ready,
-but that would be a bit more complicated to implement.
-
-* Bugfix: Zippy's emotes didn't work on FICS because there, "i" is a
-built-in alias for "it", not a real command.  So sending "$i foo" gave
-an error message instead of doing "it foo".  We now leave out the
-alias-suppressing prefix for emotes.
-
-xboard/WinBoard 4.2.3 -- Mon Feb 19 19:55:05 PST 2001
-Tim Mann
-
-* Bugfix: The error message "Variant X not supported by gnuchessx"
-formerly could pop up even in -ncp mode.
-
-* Fixed an xboard bug in premove highlighting.  If you had
-HighlightLastMove turned on, premoves got highlighted in
-highlightSquareColor (yellow) instead of premoveHighlightColor (red).
-
-* Modified premove again.  Now we are back to displaying the move
-locally immediately after sending it to the server, as in versions
-prior to 4.2.1.  This is good because it lets you register your next
-premove sooner.  As a better fix to the problem that the change in
-4.2.1 had been trying to address, we now suppress animating the
-opponent's move if you have a premove reply pending.  However, it's
-probably still a good idea for you to turn off AnimateMoves entirely
-if you are trying to play extremely fast games.
-       
-* Removed an erroneous patch that left zombie chess engines around
-when both sigterm and reuse were turned off.  (Bug was in xboard only,
-not winboard.)
-
-* Bugfix: loading a game with autostepping did not work for games with
-PGN result "*" (unfinished).  This bug was introduced in 4.1.0, caused
-by some outdated code that was supposed to leave you in EditGame mode
-after loading an unfinished game.  I fixed this, and also changed it
-to leave you in EditGame mode after loading *any* game, but without
-changing the tags to say it's an edited game.  It's not really clear
-whether that is the best thing is to do here -- ideally, perhaps, the
-tags should change to say "edited game" if you actually make any
-changes, but that is harder to make work.
-
-xboard/WinBoard 4.2.2 -- Tue Feb  6 20:00:00 PST 2001
-Tim Mann
-
-* Fixed a problem introduced in 4.2.1.  In -zippyPlay mode, 4.2.1
-started sending the initString immediately after the old game ended,
-but then when the next game started, it would still send "force" and
-another initString.  Another problem was that the first initString put
-the engine out of sync with the displayed board position, though that
-might not usually have been noticeable.  This is now changed to do a
-full Reset at the end of the previous game, and avoid doing a Reset at
-the start of a new game if we are still in BeginningOfGame mode.
-
-* Fixed some limitations in -zippyPlay mode.  The engine was not being
-fed the moves or history of games that were displayed but not being
-played, so it would get confused if you tried to do something like
-examine a game, then enter EditGame mode from somewhere in the middle
-of the game.
-
-* Made a small change so that cygwin can compile xboard for Windows
-(an X server is required to run it).  Thanks to Volker Zell.  Most
-people would probably prefer to run WinBoard on Windows, however; note
-that cygwin could already compile WinBoard.
-
-* Added some missing documentation to engine-intf.html: It is okay to
-send "feature done=0" even before you receive the xboard and protover
-commands, if this is needed to give your engine enough time to
-initialize.  See engine-intf.html for more discussion.
-
-* Bugfix: "feature done=0" did not work for the second engine; now it does.
-
-xboard/WinBoard 4.2.1 -- Sat Feb  3 19:52:26 PST 2001
-Tim Mann
-
-* Bugfix: in Zippy mode with feature san=1, the elapsed time was being
-sent to the engine after the SAN move; for example, "e4 (0:01)" was
-sent instead of just "e4".
-
-* It seems that scroll wheel mice with incompletely installed software
-(under Windows 95, at least) can send repeated middle button up events
-when the wheel is turned.  Moved QuickPaste from middle button up to
-middle button down to avoid problems with this.
-
-* A premove is now sent *before* the opponent's move that it replies
-to is animated.  The premove itself is no longer displayed (or
-animated) when sent; instead, it is displayed when the chess server
-echoes it back as a board update.
-
-* Bug fix: in -xreuse mode, xboard was only sending command line
-arguments to the engine the first time it was started.  (WinBoard
-didn't have this bug.)
-
-* In -zippyPlay mode, we now initialize the chess engine for a new
-game immediately after the old game ends.  (In -xreuse mode, this
-means starting a new engine process; in the default -reuse mode, it
-just means sending "new".)  If the engine supports ping, we don't
-accept challenges until the "new" has finished.  This should help
-avoid losing time (re)initializing the engine after the game starts.
-
-* We now handle the new FICS field in style 12 that says whether the
-clocks are ticking.
-
-* whiteFlag and blackFlag are now reset whenever an ICS board image
-arrives, giving autoflag a fresh chance to work.
-
-* Suppressed "geometry error" debug messages unless -debug flag is given.
-
-* Bugfix: avoid core dump on Solaris with -debug flag, caused by
-passing NULL to a %s format in GameEnds.
-
-* Added -firstProtocolVersion and -secondProtocolVersion.  This will
-allow use of extremely broken engines that hang or die when given the
-"protover 2" command.  It should be rarely if ever needed.
-
-* Zippy now strips highlights from player names in the Creating
-message; previously the ratings would not be extracted from this
-message properly if you had set the highlight variable.
-
-* Bug fix: Zippy with -zp but not -zt used to be fooled by false
-partner tells inside channel tells; e.g.: 
-Garf(24): Garf (your partner) tells you: sit
-
-* Bug fix: when an engine reported its name with the new "feature
-myname=" command, we had been putting just that name into the window
-title even when in TwoMachines mode.
-
-* By default, WinBoard no longer uses the new feature introduced in
-4.2.0beta of keeping the ICS menu, ICS server list, and lists of chess
-engine command lines in separate files; instead, the lists are back in
-the winboard.ini file.  This gets rid of some problems where the
-separate files could not be opened because the working directory was
-not set to WinBoard's installation directory.
-
-* WinBoard command lines and ini files now have another optional
-syntax for quoting an option value.  All characters within { } curly
-braces are interpreted literally except for '}' itself.  SaveSettings
-now uses this syntax for string values that contain a backslash or
-newline and do not contain a '}'.  This should address the problem
-that the separate .ini files had been meant to fix; engine command
-line lists can now be written without \-escapes.
-       
-* Fixed three bugs in relaying moves between engines in TwoMachines
-mode: an engine would be sent SAN if the *other* engine had set
-feature san=1, a relayed SAN move did not end with a newline, and
-feature usermove was not implemented for relayed moves.
-
-* Fixed several bugs in exiting: File/Exit would sometimes hang;
-timestamp/timeseal would not get killed off; an engine crash would
-cause error messages to be printed recursively until stack overflow.
-
-* Fixed a bug in the code to detect which ICS is in use and adapt to
-it; the chess.net case was broken.
-
-* Removed the leading alias-suppression character when sending a move
-to ICS, because it seemed to break accuclock on chess.net.
-
-* Fixed a bug where a FICS prompt like "10:01_fics%" would be matched
-as finger note number 10, causing a problem detecting when the user is
-logged in.
-
-* Added tellicsnoalias command to protocol.
-
-* Changed st command in protocol back to old behavior.
-
-* Added done=0 feature to protocol, to lengthen initial timeout.
-
-* Added missing -colorSeek command line option to xboard.  (Was
-present in WinBoard.)
-
-* Bug fix: setting feature reuse=0 was not working.
-
-xboard/WinBoard 4.2.0beta -- Sat Dec 16 16:34:56 PST 2000
-Tim Mann
-
-* Setting -searchTime no longer turns off -clockMode.  Note that when
--searchTime is set, some engines may search for the lesser of
-searchTime and the amount of time their normal clock management would
-dictate, while others will disable their normal clock management and
-always search for exactly searchTime.
-
-* Fixed WinBoard bug where on Windows 2000 (and maybe Windows 98) the
-ICS Interaction window would scroll back to the top whenever it filled
-to capacity and WinBoard trimmed some text off the top.
-
-* Changed xboard dragging so that the center of the dragged piece is
-forced to be over the mouse cursor.  (WinBoard dragging already worked
-that way.)  This should avoid confusing cases when you start a drag
-with the mouse near the edge of a square -- formerly most or all of
-the piece could be over one square but the mouse cursor over another.
-Suggested by DAV.
-
-* Added move list window for xboard.  Code contributed by Manuel
-Hoelss and re-hacked a bit by me.  Performance of this window is poor,
-because the implementation regenerates the entire window contents
-whenever anything changes.  It's hard to avoid this when using the
-Athena List widget, though we could be a little smarter and notice
-when the current move number has changed but the move list has not.
-There are also several drawing problems caused by bugs in the Athena
-Form and List widgets.  The window should not really allow a
-horizontal scroll bar, but the bugs are much worse if I turn it off.
-In both Xaw and Xaw3d, the List widget tries to resize itself when
-XawListChange is called, even if you tell it not to; and what's worse,
-if the widget cannot resize itself to be large enough to avoid
-clipping any of the list item, it does not change the list!  Arrgh.
-On top of that, the Xaw Form widget is very buggy in XFree86 4.0.1
-(X11R6.4.3).
-
-* The OK button in the WinBoard startup dialog is now simply disabled
-if none of the radio buttons is selected, instead of bringing up an
-error dialog.  Suggested by Ted Milbaugh.
-       
-* Used ping to address the worst of the race conditions in the
-protocol.  Now if an engine supports ping, we ping it after sending
-the "new" command and after trying to place it in force mode at the
-end of a game.  When a ping has been sent and the corresponding pong
-has not yet come back, we (1) ignore or undo any moves the engine
-sends, (2) ignore game end messages (such as "offer draw", etc.) from
-the engine, (3) ignore thinking output from the engine, (4) delay
-starting the next game if in -matchGames mode, (5) in -zippyPlay mode,
-respond to challenges with a polite message to try again soon instead
-of accepting them.  There are a few more things that should be done
-(and item 5 might not be quite what we want), but it's hard to fit
-them all into the existing code.
-       
-* Patched the version of GNU Chess 5.00 included with WinBoard to
-support protover, feature, setboard, and ping, and to fix some minor
-bugs.  See gnu500+.patch.
-
-* Changed the GNU Chess 4 kludges for missing "st" and "sd" commands
-to be invoked only if the engine gives an error message for "st" or
-"sd", and to always use protocol commands instead of engine
-command-line options.  See "Idioms" in engine-intf.html.
-
-* Added new protocol command "protover 2" to tell the engine what
-version of the protocol is in use.  Version 2 is still compatible with
-old engines; see engine-intf.html.
-
-* Add new protocol command "feature ..."  The engine can send this in
-response to the protover command command, to say what extended
-protocol features it would like to enable, etc.  xboard responds
-"accepted F" or "rejected F" for each feature F that is set.  See
-engine-intf.html.
-
-* Added new protocol command "setboard <fen>".  This is an alternative
-to "edit", used only if the engine says "feature setboard=1".
-
-* Added new protocol command "ping <msg>".  The engine is supposed to
-respond "pong <msg>".  This gives us a tool to fix some race
-conditions in the protocol, but it is not used to the fullest yet.
-
-* Added new protocol command "tellopponent".  This will do a "say" if
-you're on a chess server in Zippy mode, or pop up an information
-dialog otherwise.
-
-* Added new protocol command "tellall".  This will do a "kibitz" if
-you're on a chess server in Zippy mode, or pop up an information
-dialog otherwise.
-
-* Added new protocol command "tellothers".  This will do a "whisper" if
-you're on a chess server in Zippy mode, or do nothing otherwise.
-
-* Changed the WinBoard /icsNames, /icsMenu, /firstChessProgramNames,
-and /secondChessProgramNames options to accept a filename preceded by
-"@", meaning to find the value in the file.  Changed the defaults to
-use this feature, with filenames icsnames.ini, icsmenu.ini, fcp.ini,
-and scp.ini.  This should make it easier for users to edit the values,
-since one less level of quoting is needed, and each value is in its
-own file, not mixed into winboard.ini.  Those who upgrade from an
-older winboard version and already have a winboard.ini file will not
-automatically have these values moved to a file; that has to be done
-by hand if desired.
-
-* We now strip .exe from engine names for "name" command, tags, etc.
-
-* Allowed WinBoard input widget to hold more than one line.  You can get
-a newline into the widget with copy/paste or with Ctrl+Enter.
-
-* Fixed an xboard bug where the [P] button would appear in the
-opposite highlight state from what it should be after being pressed.
-
-* We now use the "/" or "$" alias suppression feature on the chess
-servers, to avoid problems if the user inadvertently aliases a
-needed command to something else.
-
-* Changed the method used to deiconize xboard in AutoRaise and cmail.
-This may fix bugs under some window managers where after
-deiconization, the board window was mapped but nothing was drawn
-inside.
-
-* Preliminary, partial support for playing several chess variants
-against a local engine or editing variant games.  The -variant option
-must be given on the command line or WinBoard startup dialog; there is
-no menu.  The current variant is not displayed (except in the
-Tags/EditTags window).  Many variants will not work quite right even
-if the engine supports them; see item 326 in the ToDo file for
-details.
-
-* Added a workaround to detect the variant type when examining a
-scratch wild game on an ICS.
-
-* Fixed two cases where "variant" command should be sent to the engine
-when necessary but was not: loading a game from a file and restarting
-a dead engine.  Thanks to Gian-Carlo Pascutto.
-
-* Added missing support for FICS games that start from a bsetup position
-with Black moving first.
-
-* Fixed a bug in loading a file from the game list window while in
-Analysis or AnalyzeFile mode.  This now leaves us in AnalyzeFile
-mode, analyzing the new file.
-
-* Fixed a bug in loading games with a comment before the first move.
-
-* Fixed a bug in handling LoadGame (or -lgf) with -td 0.
-
-* Added a command line option to select an initial minor mode from the
-Mode menu.  This should satisfy requests from a couple of users with
-special applications.
-
-* Fixed a problem where some things in WinBoard's General Options
-dialog box were grayed out at the wrong time.
-
-* We look for a few messages from the chess engine pipe that are
-intended to catch problems starting an engine via rsh, such as "No
-such file".  Moved code so that these strings won't match until other
-protocol messages have been looked for, and documented the messages in
-engine-intf.html.
-
-* Fixed the WinBoard bug that sometimes made the console input box
-white-on-white even when not in password-entry mode.
-
-* Small changes to WinBoard to be compilable with the latest Cygwin
-net release (as of 10-16-2000).  Thanks to Mark Schoenberg.
-
-* Recompiled GNU Chess 5.0 for WinBoard with the latest Cygwin net
-release (as of 10-16-2000).  Also rebuilt the book just to be sure,
-since I had one bug report about it.  It came out identical and seems
-to work fine.
-
-* Added messages for some common InstallShield errors instead of just
-printing InstallShield's stupid error code numbers.
-
-* Added -firstComputerString and -secondComputerString, allowing you
-to suppress or change the command that is sent to a chess engine when
-its opponent is another computer.
-
-* Added "configure --with-Xaw3d" to allow use of Xaw3d widgets instead
-of Xaw widgets in xboard.  Thanks to Johnny C. Lam of the NetBSD
-project.  I've left Xaw as the default because Xaw3d is too ugly.
-       
-* The version of the Xaw Form widget released in XFree86 4.0.1
-(X11R6.4.3) has a bug that causes xboard to display the button bar
-on top of the message widget.  I've reported the bug and have
-installed a kludge workaround into xboard.
-
-xboard/WinBoard 4.1.0 -- Sun Sep 17 17:30:14 PDT 2000
-Tim Mann
-
-* Merged Winboard Plus 4.0.8 from Mark Williams into xboard
-  source pool.  Status of Winboard Plus features in xboard:
-
-  - White pieces now have borders, but the implementation is
-    completely different from WinBoard's; see below.
-
-  - Options menu not changed, probably won't be.
-
-  - Copy&paste support working, using Mark's changes to backend.c, Ben
-    Nye's changes to xboard.c for FEN positions, and some code of my
-    own in xboard.c for PGN games.
-
-  - Premove hooked up and working.  No pre-first-move, though.
-
-  - ICS Alarm hooked up and working.
-
-  - Auto-flip working.
-
-  - PGN Training mode hooked up and working.
-
-  - Improved menu item enable/disable working.
-
-  - Improved >> button working.
-
-  - Auto activate board working.  I changed this to be optional; you
-    might not always want it, especially in Zippy mode.
-
-  - Blindfold working.
-
-  - Documentation updated.
-
-* Fixed more colorization bugs.  Commands like "message foo tells you:
-xxx" and "tell 33 tells you: xxx" will no longer generate bogus
-colorization.
-
-* Added low-tech sound support to xboard, by invoking an external
-program on a filename for each sound to be played.
-       
-* ICC wild 27 is now recognized as VariantAtomic, and it sets the
-"ignore check" flag, but is not otherwise supported.
-
-* Converted the piece bitmaps from .bm to .xpm for use with xboard's
-xpm support.  (An .xim version was not created.)  Wrote a shell script
-using ImageMagick to do the conversion and to bucket fill from
-coordinate 0,0 with the background color.  Used xpaint by hand to
-clean up a few pieces where background color "leaked" into the inside
-or didn't flow all the way around the outside, then a sed script to
-fix up color names and bitmap names in the xpaint output.  If any more
-sizes are added later, they should be straightforward to convert with
-reference to the existing scripts.  With this conversion, not only do
-the white pieces now have dark borders, but (unlike with WinBoard) the
-light details on the black pieces are opaque.
-
-* If the XPM library is found when building xboard, the new xpm pieces
-are compiled in as the default.  External bitmap (or xpm) pieces can
-still be used by giving the -bitmapDirectory (or -xpmDirectory)
-option.  If the XPM library is not found, the old bitmap pieces are
-the default.  In this case external bitmap (or xim) pieces can be used
-by giving the -bitmapDirectory (or -xpmDirectory) option.  There is no
-way to compile in xim pieces.
-
-Winboard Plus 4.0.8 -- Sat Aug 5 15:51 PDT 2000 
-Mark Williams
-
-* Bugfix release.
-
-* Main menu now visible in Win NT.  Thanks to Microsoft for creating a 
-compiler which auto-mutilates the WinBoard.rc file so that the menu is
-displayed under Win 98 but not Win NT.  I fixed the problem by hand editing the
-.rc file.  Sigh.
-
-* "Reset game" now works properly when invoked from Analysis mode when two
-engines are present. Correction of bug introduced in Winboard Plus. Thanks to
-Mogens Larsen for reporting the bug.
-
-* Pasting a FEN position with Black to move now works in all modes.
-Thanks to Mogens Larsen for reporting the bug.
-
-* Added gnuchess.dat to the distribution and a couple of text files that were
-missing in 4.0.7.
-
-*** Merged in the following changes from Tim Mann:
-
-* Bugfix: Highlights would sometimes not be taken down, at least in
-xboard.  The problem is that SetHighlight works in chess coordinates,
-not view coordinates, so if flipView has been toggled since the
-highlight was put up, it gets taken down from the wrong square.  Fixed
-by being careful to call ClearHighlights before toggling flipView, not
-after.  Ugh.
-
-* Bugfix: HighlightLastMove would sometimes highlight square a1 after
-a FICS "tomove black" command.
-
-* Bugfix: a move list with initial position that has black to play was
-not being handled correctly.
-
-* Removed "decline abort" and "decline adjourn" commands from Zippy.
-The syntax is changing on FICS, and Zippy really doesn't have to
-explicitly decline the requests anyway; it's sufficient to not accept
-them.
-
-* ICC wild 26 is now recognized as VariantSuicide (the FICS name; ICC
-calls it "giveaway").
-
-* Bugfix: PGN games with black to move in the initial position weren't
-being legality checked correctly.  I think this was introduced in
-4.0.6 when I fixed a different PGN bug.  Thanks to Mark Williams for
-spotting the bug and suggesting a fix.
-       
-* Bugfix: the initial "name(" of a kibitz wasn't being colorized.
-
-Winboard Plus 4.0.7 -- Thu May 12 17:57 PDT 2000 
-Mark Williams
-
-* New white pieces with black borders.
-
-* Major overhaul to Options menu. New dialogs for setting General Options,
-  Board Options, ICS Options, Sounds, Fonts, Colors.
-
-* Clipboard support for PGN game scores and FEN positions.
-
-* Optional ICS Premove with user-specified first moves for White and Black.
-
-* New sound events: ICS Win, ICS Loss, ICS Draw, ICS Unfinished, ICS Alarm.
-
-* New auto-flip option when playing against a chess program.
-
-* Added PGN Training mode.
-
-* Certain menu options now disabled while program is thinking.
-
-* ">>" button now always goes to the end of the game.
-
-* In ICS mode, the board is automatically activated at the start of a
-new game.
-
-4.0.7 -- Sun Mar  5 17:17:49 PST 2000  Tim Mann
-
-* Fixed a nasty bug in parsing ICS game histories that was introduced
-in 4.0.6.
-       
-4.0.6 -- Fri Mar  3 16:20:11 PST 2000  Tim Mann
-
-* Fixed bugs in Zippy's code for responding to messages sent with the
-ICS "message" command.
-       
-* Fixed bugs where xboard could still create dialogs partially off the
-top of the screen.  Fixed unwanted interactions between initial sizes
-and positions of various unrelated xboard dialogs.  Deleted
-borderXoffset and borderYoffset resources.
-
-* Fixed restoring the xterm name on exit to work in more cases.
-       
-* Small fix to the WinBoard self-extracting installer: when it starts
-up, it now always deletes any old wb-setup directory left over from a
-previous installation.  Formerly this worked only on Windows 95/98, so
-on NT the self-extractor would sometimes stop and ask the user whether
-it was OK to overwrite the old wb-setup files.
-
-* Modified WinBoard to be compilable with the free Cygwin tools
-available from http://sourceware.cygnus.com/cygwin/.  Based on work by
-Mark Schoenberg.  (His mods were enough to get WinBoard through the
-compiler, but a few things were broken along the way, so I reworked them.)
-       
-* Merged changes from Don Fong to make WinBoard compilable with
-Borland C++ 4.5.  I do not have Borland C++ and am unable to test with
-it, but I did make sure the changes don't stop it working with MSVC++
-5.0 and Cygwin.
-
-* Forbade entering TwoMachines mode from MachineWhite or MachineBlack
-mode when machine is on move.  This used to confuse the engine and
-cause problems, because when we try to get the engine to stop, it
-might make a move first, and it might not do that immediately.
-       
-* Variant classification now deals with new ICC wild 25, classifying
-it as "3check".  Also, we are now conservative about new wild numbers
-we don't know about, classifying them as "unknown" instead of
-"normal".
-
-* Replaced bad GNU Chess 5.00 book in WinBoard distribution with a
-correct one.  1.e4 now no longer takes GNU Chess 5.00 out of book!
-Thanks to Pete Galati.
-
-* Made move parser accept and ignore nonstandard ep suffix on PGN moves,
-e.g., "exf6ep" or "exf6e.p."
-
-* Fixed bugs in parsing PGN files starting with no move number, or
-with a move number other than "1." (including "1...").  Thanks to
-Michael Soulier and Stefan Zipproth for example PGN files
-demonstrating the bugs.
-       
-* Changed InitComboStringsFromString to not modify the input string;
-this caused an exception when WinBoard was compiled with MSVC++ 6.
-Thanks to Bert Tuyt for the report.
-
-* In WinBoard, dragging a piece off the edge of the board without
-releasing the mouse button no longer instantly aborts the move.  You
-still must release the mouse button inside a square to complete a
-move, but you can now drag off the edge and come back inside.
-       
-* WinBoard bugfix: If you went into EditGame or EditPosition mode
-while observing or playing an ICS game, and a new move came in
-(snapping you back to ICSClient mode) while you were dragging a piece
-around, the drag state would not be reset, causing the piece you were
-dragging to remain on the board wherever you dropped it.  Thanks to
-David Brinegar for the bug report.
-
-* WinBoard bugfix: If you moved or resized the board while your
-opponent was moving, and you had AnimateMoving on, his move would not
-be displayed until after your next move.  Thanks to DAV for reporting
-the bug repeatedly until I finally understood it.
-
-* Added a Zippy "farewell" feature; see zippy.README.
-       
-* Fixed a bug (xboard only) in processing -zippyReplayTimeout on the
-command line.  Thanks to Steve Beer for the report and patch.
-
-* Send "computer" command to both sides in TwoMachines matches.
-       
-* Fixed a Y2K bug in Evan's cmail code!  Thanks to Brian Mays for the
-report and patch.
-       
-* Bugfix: Initialize variant field of GameInfo struct in gameinfo.c.
-This could cause crashes in LoadGame.  Thanks to Andrzej Nagorko.
-       
-* Fixed several pattern matching problems: Finger notes and formula
-vars no longer get replied to by zippyTalk or colorized.  Channel
-tells by players with many titles are now colorized fully, and
-zippyTalk handles channel tells by such players correctly.  The shout
-"--> foo(99): bar" no longer gets colorized as a channel tell.  Code
-is cleaned up a bit, and autocomment capture now uses the same
-criteria as colorization.
-
-* xboard fix: Enter key now closes error popups as in WinBoard.
-Especially nice for the "Exiting: Connection closed by ICS" popup.
-
-4.0.5 -- Tue Dec  7 10:30:40 PST 1999  Tim Mann
-
-* Added missing documentation of SIGTERM usage into engine-intf.html.
-
-* Bugfix: New -zippyReplayTimeout option was misspelled in WinBoard as
--zippyReplyTimeout.  Thanks to Francesco Di Tolla.
-       
-* xboard -ics now restores the xterm's original title upon exit, at
-least if $WINDOWID is set.
-
-* Bugfix: -matchGames mode wasn't terminating properly.  Final score
-popup would come up twice and engines would not be killed off.  Thanks
-to Frank Quisinsky for the bug report.  Bug was introduced in 4.0.4.
-
-* Bugfix: "tell 50 foo shouts: bar" no longer gets colored as a shout;
-similarly for "...s-shouts:" and "...c-shouts:".  Thanks to David Lee
-for the bug report.
-
-4.0.4 -- Fri Dec  3 17:51:27 PST 1999  Tim Mann
-
-* Bug fix: formerly if you invoked SaveGame from EditPosition mode
-with black to play, the position was not saved properly.  As a quick
-fix, SaveGame now takes you out of EditPosition mode before saving.
-
-* Changed -matchGames to keep track of the score (won-lost-drawn) and
-display it in the banner.  The final score is displayed in a modal
-popup before the program exits.
-
-* Changed "Connection closed by ICS" to display in a model popup
-before the program exits.
-
-* Added -popupExitMessage option, default on.  Setting this to false
-suppresses the modal popups that you sometimes get just before
-xboard/winboard exits -- both the two new ones listed above and the
-existing Fatal Error popup.  This is useful when running Zippy
-unattended from a shell script (or .bat file) that loops and starts a
-new copy after a time delay when there is an error.
-
-* In xboard, added missing support for WM_DELETE_WINDOW to all
-windows.  This makes xboard a better citizen, and is much needed with
-the newer X window managers that put an [X] button on every window and
-bind it to "kill application" if the applicationd does not support
-"delete window".  We can't allow xboard to be thoughtlessly killed,
-since that leaves the chess engine running in the background.
-
-* We now avoid positioning tops of xboard dialog boxes offscreen.
-
-* zippy.lines can now use the caret ('^') character as an inter-saying
-separator. You no longer need to dig up a text editor that can put NUL
-('\000') characters in text files.
-
-* Bugfix: In traditional chess clock mode, White now gets time added
-to its clock as soon as it makes time control.  Previously both White
-and Black got their time added only when Black made time control,
-which would cause some engines to make their 41st move as White too
-quickly, thinking they were low on time.
-
-* The zippyAcceptOnly feature no longer sends a decline command or
-a tell.  Thus you can use it to put Zippy into a manual accept mode.
-
-* Bugfix: "tell 50 foo tells you: bar" no longer gets colored as a
-personal tell; similarly for "...whispers:" and "...kibitzes:".
-
-* WinBoard no longer blanks the message line when you start a new
-move, unless there was an error message there from the previous move.
-
-* WinBoard now never puts the white piece drop menu on the middle
-mouse button.  Both colors are always on the right button.  Windows
-users often don't think to look for a middle button menu, or don't
-really have a working middle button despite what Windows says.
-
-* Guest login handles on ICC are now parsed again; an ICC wording
-change had broken this feature.
-       
-* Autodetect when the engine does not support the "draw" command and
-don't relay the command to it in that case.  Needed because sending an
-unsupported command to GNU Chess makes it move immediately, so people
-could make Zippy move without thinking by continually offering a draw.
-Thanks to Frank Walker for the problem report.
-
-* Small changes based on code from Robert Jurjevic: The WinBoard
-analysis window can be minimized (though not to the taskbar).  The
-WinBoard ICS Interaction window will autoscroll if you drag the mouse
-above or below the window while selecting, and password entry mode
-leaves the entry line as the background color instead of using 75%
-gray.  Seeks are now colorized with a new color of their own.
-
-* Added -zippyMaxGames feature.
-       
-* -zippyNoplayCrafty command line option was missing in xboard; fixed.
-Thanks to John Perry.
-
-* Fixed bug in detecting when Zippy loses his bughouse partner.
-Thanks to Ben Dean-Kawamura.
-
-* allobs fix in 4.0.3 didn't work; corrected it.
-
-* WinBoard will now update the board immediately if a move is made
-while the window is being moved or resized.
-       
-4.0.3 -- Sun Aug 15 18:44:39 PDT 1999  Tim Mann
-
-* Bugfix: moved winboard wizard functions that send a command directly
-to the chess engine from Ctrl+Alt+1 and Ctrl+Alt+2 to Alt+1 and Alt+2.
-Ctrl+Alt is equivalent to the European AltGr key, so the old assignments
-conflicted with typing an @-sign on some keyboards.
-       
-* Bugfix: prevent "If this message stays up, your chess program does
-not support analysis" from appearing if AnalysisMode is selected when
-already in Analysis or AnalyzeFile mode.  Also, deleting analysis window
-in WinBoard now switches you to EditGame mode, to avoid the anomaly of
-being in an analysis mode with no analysis window present.
-       
-* Change all Zippy environment variables to work as command line
-options.  For now they still work as environment variables too, but
-the environment variables are deprecated.
-
-* Use unsigned long to hold node counts from engines.
-
-* Print error instead of crashing on attempts to use xpm or xim pieces
-in monochrome mode.  Thanks to Jim Torrance for the bug report.
-
-* Tightened pattern recognition for ICS messages sent to Zippy; should
-no longer match ICC allobs output.  Fixed recognition of when Zippy is
-sent a message; small change to FICS output had broken it.
-       
-* Zippy now exits if the engine dies unexpectedly.
-
-* Added Zippy "spoofedby" feature; see zippy.README.
-       
-* Narrowed the margins on some older WinBoard dialogs to make their
-style uniform with the newer ones.
-
-* Bugfix: Changing Ponder Next Move from the Options menu did not take
-effect until the next game.  This bug was in WinBoard only.  Thanks to
-Stefan Zipproth for the bug report.
-
-* Got rid of "Internal error: bad move type" message when the engine
-makes a move that we can parse but think is illegal.  Now the move is
-just passed on (which also may be the wrong thing to do).
-
-4.0.2 -- Thu Feb 25 19:55:32 PST 1999  Tim Mann
-
-* Added one more built-in sound choice to WinBoard: move.wav from Pete
-Galati.
-       
-* Added new larger piece sizes: big, huge, giant, colossal, titanic.
-       
-* Modified the xboard font searcher to be able to use scalable fonts.
-The new -fontSizeTolerance flag controls how closely a nonscalable
-font must match to be used in preference to a scalable font.
-       
-* Zippy environment variables ZIPPYABORT and ZIPPYADJOURN now control
-whether Zippy will accept abort and adjourn requests.
-
-* We now determine the variant type being played on ICS, send it as a
-command "variant VARTYPE" to the chess engine (if in Zippy mode), and
-put it in the PGN tags.  See engine-intf.txt for variant names.  See
-ZIPPYVARIANTS in zippy.README to control what variants Zippy will
-accept.  Note that this now applies to bughouse, too.
-
-* Zippy now won't do -zippyTalk in a channel unless his handle is
-mentioned there.
-
-* Zippy now ignores bughouse holdings if not actually playing, instead
-of stupidly trying to abort the game.  Let me know if other strange
-things happen when Zippy is observing a game.
-
-* Set ICS Interaction title bar to "user@server".  User name is
-determined by parsing message during the login sequence.  Zippy now
-uses this method to get its name too, so ZIPPYNAME is eliminated.
-Problem: with xboard, the title bar gets set to "xterm" upon exit,
-since we didn't know what it was to start with.
-
-* Fixed xboard-only bug in -colorChannel1 command line option.  Thanks
-to Fredrik Sandstrom for the bug report and fix.
-
-* Check for overflow of MAX_MOVES.  Still not sure this is checked for
-everywhere it needs to be.
-
-* Added .epd to suffixes recognized by WinBoard as position files.
-This is a bit of a kludge, as the .fen reading code was not written
-with .epd files in mind, but reading them with it is said to work.
-
-* Added ZIPPYGAMESTART feature, suggested by Jason Hoblit.  See
-zippy.README.
-
-* Restored the feature of soaking up the moves from a user-typed "moves",
-"oldmoves", or "smoves" ICS command when xboard/WinBoard is idle, but
-changed it so that the move list is also echoed to the screen.  Some folks
-still liked the old feature since it is faster than examine mode, and
-printing the moves to the screen should eliminate the confusion it caused
-for other people.
-
-* Bugfix: in WinBoard, starting a click-click move and then clicking on
-a black line would cause the source square to be forgotten without taking
-the highlight down.  Now the errant click is ignored.
-
-* Corrected shortcut key labels for LoadNext/PrevPosition in WinBoard's
-File menu.  Thanks to Andreas Stabel for the bug report.
-
-* Bugfix: if you had a completely full ICS context menu in WinBoard
-(90 items), the last one would do nothing if selected.
-
-* The "computer" engine command added in 4.0.1 was not working; I had
-left out part of the code patch.  Oops.
-
-4.0.1 -- Fri Feb 12 21:24:15 PST 1999  Tim Mann
-
-This is a minor bugfix release.  The first item listed below is the
-only interesting new feature.
-
-* You can now type in moves from the keyboard in WinBoard.  Either
-select TypeInMove from Step menu, or (if you are not in ICS mode),
-just start typing.  In ICS mode you can type moves into the ICS
-interaction window anyway, so I've retained the feature that typing
-switches you there.  Not implemented in xboard.
-
-* Removed the "noise 1000" command that used to be sent to the chess
-engine when entering analysis modes.
-
-* Deleted the feature where we soak up the output of a user-typed ICS
-"moves" or "oldmoves" command.  This ancient feature is not really
-useful anymore, now that "examine" exists, and it caused a lot of
-complaints.
-
-* Increased maximum size of ICS text menu to 90 entries and added
-overflow checking.
-
-* The command sent to ICS by Zippy at the end of each game can now be
-customized with the ZIPPYGAMEEND environment variable.
-
-* We treat xboard.info as a pseudo-source since most people don't have
-the tools to rebuild it.  But "make install" erroneously had a
-dependency on it, even though "make all" did not.  Fixed.
-
-* Miscellaneous minor updates and clarifications to engine-intf.txt.
-In particular, documented the st and sd commands (support for command
-line options -searchTime and -searchDepth), warts and all.
-
-* Added a small code patch from Bob Hyatt to detect when Zippy's ICS
-opponent is a computer and send the command "computer" to the engine.
-Added this command to engine-intf.txt.  Thanks, Bob.
-
-* Bugfix: configure was looking for usleep(), but config.h.in didn't
-have an entry for it, so HAVE_USLEEP was never defined.  Also, in the
-non-HAVE_USLEEP case, there was a possible race condition between the
-signal handler and the pause() call.  Thanks to Ben Dean-Kawamura for
-the bug reports.
-
-* Bugfix: a "1..." preceding Black's first move (usually present if
-there is a comment on White's first move) would cause the parser
-to think a new game started there and report "End of game" on the
-current game.  Thanks to Dell Garner for the bug report.
-
-* Changed the abbreviation for -searchDepth from -sd to -depth to fix
-a clash with -secondDirectory.
-
-* Changed -searchDepth to be orthogonal to the various timing options.
-Previously it would search for an unlimited time to the given depth;
-now the engine is allowed to choose its search time in the normal way,
-but is told to cut off the search early if it reaches the given depth.
-
-* Bugfix: SaveSettings in WinBoard was saving both the long form
-option highlightSquareColor and its abbreviation (hsc).
-
-* Fixed a redisplay bug in DisplayBothClocks that could cause White's
-clock to be highlighted in EditPosition mode when Black's should have been.
-
-* Fixed Zippy's feature of passing on draw offers from the ICS opponent.
-The colorization code was eating the offer before Zippy saw it, so I disabled
-colorization of offers while in -zp or -zt mode.  (Other types of
-colorization are already disabled in Zippy mode for similar reasons.)
-
-* Added some more commands to the default ICS context menu in WinBoard,
-and put "(name)" on the ones that insert a playername (or game number).
-
-* Added missing documentation to WinBoard help file: PonderNextMove, the
--ponder/-xponder argument, and the up/down arrow history feature in the
-ICS Interaction window.
-
-* Fixed        ZIPPYNOPLAYCRAFTY feature to fire only if the opponent is Crafty,
-not if some other Crafty is observing the game and kibitzes.
-
-* Fixed bugs in generating "partner" commands when Zippy is playing
-bughouse.
-
-4.0.0 -- Sat Jun 20 16:59:47 PDT 1998  Tim Mann
-
-* Fixed WinBoard resizing so that the edges you do not drag remain in
-place, even when the final size is different from what you dragged to.
-(This doesn't work on NT 3.51 or earlier, if anyone cares.)
-
-* Fixed problems with resizing WinBoard on Windows NT: you no longer get
-whitespace around the board, a clipped board, or a lot of flashing during
-the drag.
-
-* Added customization for highlight-square color.
-
-* Bugfix: backend.c wrote to stderr in a few obscure places, which doesn't
-work in WinBoard.
-
-* Added Index Number field back to LoadGame/LoadPosition dialog boxes in
-WinBoard.  This required some extra code to work with both the
-Explorer-style dialog boxes and the old-style NT 3.51 dialog boxes.  Ugh.
-
-* WinBoard startup dialog now understands -zp mode.  The first chess
-engine selector is enabled and the value is used.
-
-* Bugfix: ResetGame would send "exit" to engine twice if it was in an
-analysis mode.
-
-* Bugfix: The response "Illegal move: bk" to the "bk" command, indicating
-that it is not implemented, would confuse xboard.
-
-* Bugfix: Ignore empty hints ("Hint:\n") instead of printing a message
-saying that some bogus string (often "Hint:") is illegal.
-
-* Bugfix: LoadNextGame/LoadPreviousGame/ReloadSameGame were broken.
-
-3.6.12 -- Sat Jun 13 14:57:10 PDT 1998  Tim Mann
-
-Beta test release of xboard and WinBoard.
-
-* Spruced up xboard man page a bit.
-
-* Added Highlight Last Move to xboard too.
-
-* The revamped xboard mouse click code had several more bugs than the
-previous version, so I revamped it again.  All fixed now, I hope.
-
-* xboard bugfix: crash in CreatePieceMenu.
-
-* Oops.  winboard-3_6_11beta.exe installed 3.6.10beta, not the new version.
-
-3.6.11 -- Fri Jun 12 20:00:48 PDT 1998  Tim Mann
-
-Beta test release of xboard and WinBoard.
-
-* Major reorganization to engine-intf.txt.  Some new features added,
-many existing features clarified and hints for engine programmers added.
-Support for new features added to program.
-
-* Changed defaults for -scp (etc.) back to being independent of -fcp, as
-in 3.6.2. That is, the default is no longer to copy the value from -fcp if
--scp is not specified.  This will sometimes make command lines longer but
-will remove some confusing situations.
-
-* Split -reuseChessPrograms into two options: -reuseFirst and
--reuseSecond.  Fixed obscure bugs when reuse is off.
-
-* Detect ICC and change some command usage slightly there: only ICC has
-set-quietly; only FICS has iset and bsetup clear.  With this feature, we
-can now safely use bsetup clear when appropriate instead of deleting each
-piece one by one.
-
-* Added indent to lines that are wrapped by WinBoard ICS Interaction
-window.  This seems to tickle a Microsoft bug in the RichEdit control:
-occasionally the start of the next line after the wrapped line is indented
-too.  I think the wrapped indent feature is useful enough that it's worth
-having in spite of the bug.
-
-* WinBoard bugfix: bounding box for the board was computed incorrectly by
-mouse code.  It would think you moved off the bottom of the board before
-you really did, so it was hard to drag pieces along the bottom rank on
-smaller board sizes.
-
-* Fixed obscure parser.l bug: ambiguity between capture using : instead of
-x and email header line.  Also removed or simplified a lot of complex
-patterns for English (as opposed to PGN) end-of-game indications while I
-was in there.
-
-* Added PonderNextMove option.
-
-* xboard EditPosition piece menus now let you set the side to play by
-selecting the "White" or "Black" label at the top of the menu, like
-WinBoard.  (Both xboard and WinBoard still let you set the side to play by
-clicking on the clock.)
-
-* Merged documentation of Crafty and GNU Chess thinking output in
-engine-intf.txt.  Corrected code in backend.c to match documentation; it
-used to require the PV to start in column 27 (!).
-
-* Fixed bug that caused crashes in "-reuseChessProgram false" mode.
-
-* Draw by agreement in Two Machines mode now works as it is supposed to.
-Other minor bugs in handling game end messages from machines are also
-fixed, and engine-intf.txt is revised in this area.
-
-* Revamped xboard code for handling mouse clicks on the board.  In
-particular, it had a bug if a click-click promotion move was made.
-
-* Fixed and reinstated optimization for << in analysis modes: send
-initString and re-send the board if needed.  Sending repeated undos
-is bad because Crafty prints some analysis after every one.
-
-* Don't go into a spin loop while pausing between xboard animation frames.
-This caused problems, especially when compiling with -O2 on HP-UX.
-
-* WinBoard Options/Colors/RevertToDefaults now also turns off Monochrome
-if it was on, and similarly for Options/ICSInteractionColors/RevertToDefaults.
-This seemed to confuse people before.
-
-* Bugfix: ICS Interaction context menu items with neither of the two
-optional flags set did not work.
-
-* Bugfix: PGN move numbers are optional, but we were insisting on "1"
-right after the tags.
-
-* Bugfix: only the first game of an -mg match was loading -lpf or -lgf.
-
-* Other minor fixes and code cleanup.
-
-3.6.10 -- Mon Jun  1 01:32:31 PDT 1998  Tim Mann
-
-* Added ZIPPYNOPLAYCRAFTY feature; see zippy.README.
-
-* Added timestamps for chess engine interaction to -debug output.
-
-* Now allow 10 seconds (was 5) between games in match mode for engines to
-respond to "force" command that ended previous game.
-
-* When a game is picked from the game list and the names of White and
-Black are known, display them in the window banner instead of the filename
-and game number.
-
-* Changed default for -scp and -sd to be the values of -fcp and -fd.
-
-* Added boxes for both engines to WinBoard startup dialog.  Changed to
-dropdown boxes whose content can be set from winboard.ini, similar to
-the box for ICS name.
-
-* Accept "offer draw" (or "*offer*draw*") from engine to offer a draw.
-
-* Accept "move mmmm" from engine as well as silly "1. ... mmmm" syntax.
-
-* Added support for bughouse engines (Zippy mode only).
-
-* Move bombproofing for engines sending illegal or out of turn moves.
-
-* Always send "xboard\n" to engine as first command.  Eliminates need
-to run crafty as "crafty xboard".
-
-* Rewrote xboard code for input from engines to fix longstanding bugs.
-Previously an engine that sent one line in two separate writes with 
-some time lapse in between (or perhaps that sent several lines in one
-write) could make xboard hang.  WinBoard did not have this bug.
-
-* Fixed minor bugs in dealing with illegal moves.
-
-* Added "iset startpos 1" for FICS.
-
-* Removed special support to put "GNU Chess" or "Crafty" in the window
-banner instead of the engine's base filename.  This gives a more level
-playing field for other engines.  Also fixed bugs in the code that finds the
-engine's base filename.
-
-* Bugfix: Abort or Resign at the very start of a game in chess engine mode
-would fail to send "force" to the engine.
-
-* Fixed some minor bugs in new "result" messages, and changed format to
-include a trailing PGN comment giving the reason the game ended.
-
-* Changed syntax of /font options in WinBoard; old syntax was assuming
-that a font name can't contain a digit, which is wrong.  Old font names in
-WinBoard.ini files are still accepted.
-
-* Serious further work on getting WinBoard to read/write files in the
-"right" directories and documenting exactly what it does.
-
-* Added LoadPreviousPosition, LoadNextPosition, ReloadSamePosition.
-
-* Misc. tiny fixes and cleanup.
-
-3.6.9 -- Sun May 24 20:53:08 PDT 1998  Tim Mann
-
-xboard and WinBoard beta release.
-
-* Tightened up illegal move handling.  Illegal or meaningless moves from a
-file or chess engine should no longer get translated into a1a1 and blindly
-applied.  Explicit moves to the same square (like a1a1) no longer make the
-piece on that square capture itself and vanish.
-
-* Added AlwaysOnTop feature to winboard.
-
-* Fixed bug in winboard "@" command line indirection operator.
-
-* Removed buggy "optimization" code for ToStart in analysis modes.
-
-* Fixed typo bug in zippy.c that would often cause winboard to crash
-right after starting a game in -zp mode.
-
-3.6.8 -- Sat May 23 22:23:19 PDT 1998  Tim Mann
-
-xboard and WinBoard beta release.
-
-* Added -firstDirectory and -secondDirectory so that chess engines can
-be started in a different directory from xboard/WinBoard itself.
-
-* Added -matchGames to allow more than one game in -matchMode.  The games
-are played with colors alternating between the two chess engines.  Had to
-add a time delay at the end of each game to catch up with game ending
-messages from both chess engines -- yuck.
-
-* Changed TwoMachines mode to have firstChessProgram play White by
-default.  Added -firstPlaysBlack to restore old behavior.
-
-* Major rework of code in backend.c for dealing with first and second
-chess engines.  Generalized the code and created a struct type with one
-instance for each engine.  Several small bugs fixed along the way. 
-
-* Fixed bugs in Abort in local chess engine mode.
-
-* Tightened pattern matching to recognize moves from machine.  Should cure
-bogus "Illegal move" errors while Crafty is pondering with Show Thinking
-on, among other things.
-
-* WinBoard keeps focus in board window after popping up a comment due to
-Forward/Backward/ToStart/ToEnd commands.
-
-* Finally got rid of warnings on compiling moves.c under Windows.
-
-* Fixed so WinBoard will compile on machines where WM_MOUSELEAVE is not
-defined.
-
-* Removed various bits of unused code.
-
-* Parse (and ignore) NAGs in PGN files.
-
-* Updated engine-intf.txt.
-
-* Send "result R" to the chess program at the end of each game, where
-R is the PGN result 1-0, 0-1, 1/2-1/2, or *.
-
-* Bugfix: suppress animation when loading a game with timeDelay=0.
-
-* Bug fix: pondering output from Crafty that contained "..." could be
-mistaken for a move, causing bogus error messages and general chaos.
-
-* xboard "make clean" bug fix: moved things created by configure to be
-removed only by "make distclean".
-
-* Fixed a remaining case where move was being animated before being
-relayed to opponent.
-
-* Backend was reversing time/otim commands to the chess program (new bug),
-and was often not sending them on the first move of a game or the first
-move after a mode change (old bug).  Fixing the latter required a kludge
-to work with both GNU Chess and Crafty, because Crafty swaps white and
-black clock times when it swaps sides, while GNU Chess does not.  The
-kludge is that we always make sure the chess engine thinks its opponent is
-on move before we set the clock.  This will sometimes result in sequences
-like "white\ntime xxx\notim yyy\nblack\ngo", or the same with white and
-black interchanged.
-
-* Removed last trace of old -whiteString and -blackString arguments.
-
-* Fixed so that you can type "bd" into the Direct Command dialog when
-debugging gnuchess, without having xboard parse the clock display
-(starting with "White") as "White wins" and end the game.
-
-* Changed moves.c to make a distinction between IllegalMove (where we
-could tell what move was intended, but it violates the chess rules) and
-MeaninglessMove (where we could not tell).  This is a step towards getting
-rid of cases where we translate meaningless moves into "a1a1", but some
-work is probably needed to track them all down.
-
-* Fixed bug in WinBoard monoMode dragging.
-
-* Changed WinBoard to new style file dialogs.  In the process, disabled
-the feature that let you enter the index number of a game or position within
-the file in the dialog.  This is no loss in LoadGame, as you can pick your
-game from the game list dialog that follows, but it does remove some
-functionality from LoadPosition.
-
-3.6.7 -- Mon May 18 21:25:00 PDT 1998  Tim Mann
-
-xboard and WinBoard beta test release.  I've been unable to reproduce some
-reported drawing bugs, so they may still not be fixed.
-
-* Changed PopUpErrors option to PopupMoveErrors, which is more useful, and
-changed default to off.  Errors other than move errors should always be in
-popups; they are often too big for the message area and too important to
-put where they can be easily missed.  But it seems good to get rid of the
-popups for move errors by default.
-
-* xboard analysis window no longer forces itself to top whenever there is
-new output.  Also, now uses built-in Xaw word wrapping instead of trying
-to do its own; works better.
-
-* Bugfix: Reset did not take Crafty out of analyze mode.
-
-* A chess engine no longer has to claim to be Crafty to be able to use
-AnalysisMode and AnalyzeFile; it just has to implement the analyze
-command as Crafty does.  Put in heuristics to generate more informative
-error messages if the engine does not support analyze, and checked that
-they work at least with GNU Chess.
-
-* Added click-click moving, HighlightLastMove, and HighlightDragging to
-WinBoard.  The highlight features are unlikely to go into xboard unless
-the xboard drawing code is cleaned up to do *all* drawing on the board
-from DrawPosition, as WinBoard does.  This is low priority for me.
-
-* Eliminated bogus "Error gathering move list: no header" popup.  You
-could get this by observing two fast games at once without turning off
-GetMoveList.
-
-* Disable WinBoard Sounds menu entirely in -ncp mode, since not even
-MoveSound is used in that mode.
-
-* WinBoard bugfix: Several problems were caused if the user changed 
-WinBoard's current directory in a Load, Save, or Browse dialog.  In
-particular, WinBoard.ini would get saved in the wrong directory, and
-sound .wav file names would not get saved with a full pathname.  I think
-all such problems are now fixed.
-
-* WinBoard bugfix: iconizing the board after an aborted mouse resize would
-(partially) resize it to Tiny.
-
-* WinBoard bugfix: board was not being drawn in color on 256-color
-displays.  This bug was introduced in 3.6.6.
-
-3.6.6 -- Tue May 12 17:43:43 PDT 1998  Tim Mann
-
-xboard and WinBoard beta release.  Note: not all reported bugs are fixed.
-
-* Move animation in WinBoard, programmed by Henrik Gram.  Great stuff!
-
-* Animate backward moves too.
-
-* xboard bugfix: -font (and friends) can now specify a font alias (such
-as "fixed"), not just a full X Consortium name pattern.  Previously this
-would give a resource conversion error message.
-
-* Some coding style cleanup in xboard.c.
-
-* Earlier error check for moving wrong color piece in EditGame mode.
-
-* Completed fix to pattern matching; see 3.6.5.
-
-* Fixed some software rot bugs in Zippy.
-
-* Split AnimateDragging as separate option from AnimateMoves.
-
-* Added FlashMoves to options menu and -flash/-xflash to command line
-options (xboard only).
-
-* Some preliminary work on visible bughouse holding support.  Most of the
-code is not present in this release because I have not gotten it working
-properly yet; my first approach went down a blind alley and I had to
-remove most of the partially working code in preparation for a rewrite.
-
-3.6.5 -- Fri May  8 14:22:09 PDT 1998  Tim Mann
-
-Not generally released.
-
-* Pack bughouse holdings display in banner more tightly when board is one
-of the smaller sizes (when smallLayout or tinyLayout is true, that is).
-An interim measure, but should help.
-
-* Completed fix to make move list parsing recognize the end condition and
-final comment.
-
-* Fixed pattern matching for chatter (tells, etc.) to be more reliable.
-This should reduce the incidence of colors starting in the wrong place and
-of incorrectly matching things that look like other patterns inside
-chatter, such as "shout <12>".  (These errors were already rare.)
-
-* WinBoard now lets you customize the list of ICS's in the startup dialog.
-For now, at least, requires editing WinBoard.ini with a text editor.
-
-* Bug fix: WinBoard window sizing and position setting save/restore did
-not work right when the taskbar was at the top (or left side) of the
-screen and not in autohide mode.
-
-* Merged xboard click/click mode and drag mode, and deleted
-ClickClickMoving option on menu.  Now if you click on a piece, it
-highlights and a further click on another square will move it.  (A second
-click on the same square takes down the highlight.)  Or if you press down
-on a piece and start to drag, you can drag it to a new square.
-
-* When making click/click style moves, if your second click is on a piece
-of the same color, instead of saying "Illegal move", we now cancel the first
-starting square, replace it with the second, and wait for another click to
-finish the move.
-
-* Separate -secondInitString.  Default: same as -initString.  Suggested by
-Remi Coulom.
-
-* Patch from Frank McIngvale to make animation work with XIMs.  Yay!
-
-* Changed move animation to happen after move is passed on to ICS or the
-chess engine, where applicable.  Fixed problems with updating moveList
-that this uncovered.
-
-* Changed game list to show PGN result token for each game.
-
-* The usual minor bug fixes.
-
-3.6.4 -- Thu Apr 30 23:14:43 PDT 1998  Tim Mann
-
-xboard and WinBoard beta test release.
-
-* xboard documentation updated, both man page and info file.  An attempt
-to generate both from the same source with LinuxDocSGML was abandoned, at
-least for now.  WinBoard doc updated too.
-
-* Merged updates to animation code from Hugh.  Fixed a couple of remaining
-bugs, mostly to do with handling Pause mode correctly.
-
-* Added SaveSettingsOnExit to WinBoard.
-
-* WinBoard now saves the last screen position of the Comment, Edit Tags,
-Game List, and Analysis windows (in addition to the board and ICS
-Interaction windows) in WinBoard.ini.
-
-* WinBoard now provides a way to customize the right-button context menu
-in the output area of the ICS Interaction window.  For now, requires
-editing WinBoard.ini with a text editor.  
-
-* Various minor fixes to ICS message recognition, most affecting only Zippy.
-
-* Colorize the notification when someone sends you a message while you are
-logged in, not the output of the "messages" command.
-
-* Fixed colorization to turn off at the right place more reliably.
-
-* Added a new color and WinBoard sound for "requests": abort, adjourn,
-draw, pause, and takeback.  The same color and sound are used for all of
-these.
-
-* Added GUI to change sounds in WinBoard.
-
-* Suppressed WinBoard error popup when a sound can't be played.  They were
-popping up when two separate WinBoards tried to play a sound at the same
-time (such as during a bughouse match).
-
-* Fixed WinBoard crash when a sound file didn't exist.
-
-* WinBoard ports of timestamp and timeseal now produce decent error
-messages if they fail to connect, and WinBoard captures the messages and
-puts them into a popup.  Previously WinBoard would exit with no message on
-such errors.
-
-* WinBoard resizing with mouse improved; now accurately picks the largest
-size that fits in the new area.
-
-* Added option to turn off error message popups.
-
-* Added sizes slim, dinky, and teeny.
-
-* Fixed some minor problems with error message wording.
-
-3.6.3 -- Mon Feb 23 19:08:57 PST 1998  Tim Mann
-
-xboard beta test release only.  Man page is updated for the changes, but info
-file is not.
-
-* Bug fix: LoadGame could not load a PGN game whose first move was
-castling (which is possible from setup positions).
-
-* Bug fix: we were ignoring illegal move messages from chess engines in
-modes where the engine is refereeing but not participating (EditGame,
-LoadGame, AnalyzeFile).  The problem was in a workaround for a Crafty bug,
-where Crafty generates a bogus illegal move message if a "." (used by
-the PeriodicUpdates feature) is sent in analysis mode when the current
-analysis reveals a forced mate.  Installed a different workaround (that
-works in most but not all cases) and reported the Crafty bug.  Bob Hyatt
-replied with a fix, so the Crafty bug should be gone in Crafty 14.12 or so.
-
-* WinBoard only: enabled resizing board with the mouse.  It snaps to the
-nearest (but not too much larger) predefined size.
-
-* The xboard default font is now sized according to piece size, just as
-clockFont and coordFont have always been.
-
-* Added more sizes: bulky, moderate, average, middling, mediocre, petite.
-       
-* xboard only: Added Animate Moves and Click-Click Moving to Options menu.  
-
-* xboard only: Added code to animate piece movement, from Hugh Fisher.
-
-* New feature: autoflag is implemented in MachineWhite, MachineBlack, and
-TwoMachines modes.  If it is on and either a chess program or the user
-oversteps his time, xboard will automatically call the flag and end the
-game.  This feature was requested by someone who runs matches between
-programs and wants to penalize GNU Chess for its habit of running slightly
-over at the end of a time control.  I personally think it's pointless.
-
-* Fixed a bug in Zippy's pattern matching; he can now reply to ICC
-messages again.
-
-* Generate prettier notation for illegal moves.  If a move is illegal only
-because it leaves the player in check, generate notation as if that were
-not illegal.  For instance, if two knights are a knight's move away from
-f3, one on g1 and one on e5 that is pinned, the notation would be Nf3 to
-move the g1 knight, Nef3 to move the e5 knight.  (Suggested by Philippe
-Schnoebelen.)  In addition, if a move is illegal because the type of piece
-moved cannot go that way, would be jumping over another piece, etc., we
-give fully disambiguated coordinate notation; for example, Ng1g3, Ke1xe8,
-d2xd8=Q, etc.  An alternative would be to still write Ng3 if there is only
-one knight on the board, or Ngg3 if the other knight is not on the g file,
-but life is too short to code up all this stuff, and perhaps the way I did
-it is better as it emphasizes that this move was really made despite being
-illegal.  I wonder if the new PGN standard revision will speak to notation
-of illegal moves?
-
-* Fixed gross bug from 3.6.2: if a chess program said "checkmate" and
-White was left on move, the PGN outcome was "1-0 {Black mates}" instead
-of "0-1 {Black mates}"!  The bug occurred only for that specific string.
-
-3.6.2 -- Wed Jul 23 16:47:29 PDT 1997  Tim Mann
-
-* There was a bug in backing up from the end of a game against a chess
-engine, introduced when -reuse mode was added.  Fixed.
-
-* Recognize "{" as terminating an ICS move list.  Previously we needed to
-see a prompt (containing %), but occasionally ICC can send more stuff
-right after a move list with no prompt in between.
-
-* In WinBoard, -mm now implies -cp, so you don't get the startup dialog.
-
-* WinBoard startup dialog no longer sets -scp.  People used to get
-confused because they would give the -fcp and -scp arguments, but omit
--cp.  This would bring up the startup dialog, which would set both -fcp
-and -scp to the value in the engine name box.  Now you can change -scp
-only with the command-line argument.  That will confuse some people too,
-but hopefully fewer.  I think overall it's better than putting spaces for
-both -fcp and -scp in the dialog, which would puzzle newbies.
-
-* Bug fix: Analyze File mode now works in WinBoard.
-
-* Bug fix: WinBoard window no longer cuts off part of the bottom row if
-the menu bar wraps to a second line.
-
-* Accept game end messages of the form "PGN-result {comment}" from the
-chess engine, where PGN-result is 0-1, 1-0, or 1/2-1/2.  Accept "resign"
-or "computer resigns" from the chess engine as a synonym for "0-1 {White
-resigns}" or "1-0 {Black resigns}". Accept any message from the chess
-engine containing "game is a draw" as a synonym for "1/2-1/2 {Draw}".
-Accept "White resigns" or "Black resigns".
-
-* Enable "Action / Draw" menu item in chess engine mode.  It sends the
-command "draw" to the engine.  Accept any message from the chess engine
-containing "offers a draw" as a draw offer.  WARNING: Draw offers from the
-user and the engine (or from two engines) are not yet matched up by xboard
-in chess engine mode.  Two engines could get into a loop offering each
-other draws.
-
-* Bug fix: Game end messages from the chess engine are always ignored in
-Zippy mode.  Previously they could sometimes be processed, which was
-sometimes making Zippy hang at the start of a new game that followed
-quickly after an old one.
-
-* Zippy can now respond to titled players in channels.  Zippy will avoid
-talking to himself in a channel if he knows his own name.
-
-* Bug fix: in colorization arguments, the bold setting was being ignored
-if the background color was defaulted.  (xboard only.)
-
-* Extended ParseFEN to accept Crafty 12.2's interpretation of FEN.
-If fewer than 8 squares are given in a row, or fewer than 8 rows are
-given, the uncovered squares are empty.  Also, there can be a / after the
-8th row.
-
-3.6.1 -- Sat May 17 01:02:33 PDT 1997  Tim Mann
-
-* Bug fix: Hitting escape while entering a password on WinBoard no longer
-sets the font color back to black (which made further typing visible).
-
-* Bug fix: On Windows NT 4.0, WinBoard /ics /icshelper=timestamp would
-often hang if you tried to exit with the Exit menu item, the [X] button,
-etc.  The same fix may also have corrected the problem where running a
-chess program with /xreuse would sometimes crash Windows 95 (but not NT)
-when the chess program was killed and quickly restarted.
-
-* Bug fix: Periodic Updates would not work if turned on after having been
-off.  Also, the default was needlessly "off" in WinBoard.
-
-* Zippy bug fix: Continuing an adjourned game was totally broken.  The
-wrong moves, or no moves at all, were being fed to the chess program.
-
-* WinBoard change: Giving -ics without -icshost now pops up the startup
-dialog with "Use an Internet Chess Server" pre-selected, so that you get a
-menu of chess servers instead of going directly to ICC.
-
-* Bug fix: WinBoard's SaveSettings was saving -icshost, -icsport, and
--icshelper in winboard.ini.  This causes a problem if you use a different
-icshost later that needs the default values for icsport (5000) and
-icshelper ("", meaning none).
-
-* Disabled complaints about unexpected "[Ii]llegal move" messages from
-the chess program; we still get them at times.
-
-* Greatly simplified the code for Move Now and SIGINT (ATTENTION).  Fixes
-the bug where Move Now did not work with GNU Chess in WinBoard, and
-several more obscure bugs as well.  Reintroduces a minor bug: GNU Chess might
-not think on your time after a Move Now command.  Trying to fix this
-causes too many other problems.  Documented change in engine-intf.txt.
-
-* Cleaned up code for obtaining ratings from ICS.  It was kludgey and may
-have had bugs on systems with no "Creating:" message.  It should fail
-gracefully there, just not finding the ratings.
-
-3.6.0 -- Thu May  8 19:55:58 PDT 1997  Tim Mann
-
-* WinBoard now has right-button context menus in the ICS Interaction
-window.  Some of the items do immediate commands on the player name you
-have selected or pointed to.  (Suggested by Paolo Casaschi.)  Also, the
-middle button or shift+right does a immediate Copy and Paste.
-
-* Fixed a bug in Zippy's wild rejection.  The bug was causing Zippy to
-reject all forms of wild.  Now it rejects only 1, 9, 16, 17, and 24, as
-was intended.  These variants have different rules, while the other
-variants defined so far only have different starting positions.
-(Actually, wild 2, 3, and 4 never allow castling, but may sometimes by
-chance have king and rook start on squares where castling appears legal.
-This could cause a problem later.)
-
-* Zippy now resumes adjourned games by feeding the chess program 
-the move list instead of the position.  Setting -getMoveList to False 
-restores the old behavior.  Feeding in the move list is better because 
-it enables the chess program to correctly handle en passant legality, 
-castling legality, draw by repetition, and draw by the 50 move rule. 
-
-* Added a WinBoard startup dialog for people who run WinBoard.exe without
-using the Start menu or reading the help file.  Instead of being dumped
-directly into GNU Chess mode, you now get a menu of choices.  You now have
-to give the new WinBoard -cp option to go directly into chess engine mode.
-I did not add this feature to xboard.
-
-* Handling of "illegal move" from Crafty is now back on.  (It was turned
-off in 3.4.6; see below.)  Crafty 12.0 doesn't seem to send bogus ones
-anymore.  I did have to suppress sending time and otim in analyze mode to
-make this work, but there is no harm in that.
-
-* Zippy now sends "gameend" to ICS at the end of each game.  You can alias
-this to "seek" or whatever you like.
-
-* Added Crafty support for Move Now, using the "?" command.  We test
-whether this command exists by trying it once at the start of the first
-game, before it really makes sense.  If we don't get a message like
-"Illegal move ... ?", we assume it's OK.  (We're careful about this
-because sending a "?" to GNU Chess on Move Now keeps it from pondering the
-next move as it should.)
-
-* Added support for a tellusererror command from the chess engine.  See
-engine-intf.txt.
-
-* Attempted to make engine-intf.txt complete.
-
-* Minor fixes/cleanup to GameEnds code, to be sure we always interrupt
-when needed, and always undo an extra move generated by stopping the chess
-program while it is thinking.
-
-3.5.7 -- Sat May 03 22:37:44 PDT 1997  Tim Mann
-
-Beta release of both xboard and WinBoard.
-
-* Updated xboard documentation.  I really wish the man page was built from
-the info file instead of being separate!  It's a pain to update them both.
-
-* Updated documentation of the interface between XBoard/WinBoard and chess
-programs, and renamed it to engine-intf.txt.
-
-* Added support for tellics, telluser, and askuser commands from the chess
-engine.  See engine-intf.txt.
-
-* Various bug fixes.  On WinBoard, 256 color displays are finally handled
-right; no more color flashing when you switch windows unless the colors
-really need to be updated.  Also, I think the problem of the console font
-failing to change or changing back by itself is finally fixed.
-
-3.5.6 -- Tue Apr 29 03:08:00 PDT 1997
-
-Beta release, WinBoard only.  ChangeLog was out of date in release,
-updated here.
-
-* Added ICC timestamp and FICS timeseal to WinBoard distribution.  These
-are my own ports to Win32, based on and used by permission of the owners
-of the proprietary source code (Daniel Sleator for timestamp, Henrik Gram
-for timeseal).  The owners permit these programs to be distributed only in
-binary form (to help prevent cheating), so to avoid running afoul of the
-GPL, I have kept them as separate programs, not linked into the WinBoard
-address space.  Updated Start menu icons to use them.
-
-* Miscellaneous smaller changes.
-
-3.5.5 -- Fri Apr 25 03:06:00 PDT 1997
-
-Beta release, WinBoard only.  ChangeLog was out of date in release;
-updated here.
-
-* Added simple sound support to WinBoard.
-
-* Updated WinBoard documentation.
-
-* Internal implementation of the telnet protocol is now more complete.
-You can now hop through a VMS host on the way to ICS.  For example, do
-"xboard -ics -icshost vms.host.edu -icsport 23", then log in.  Do not use
-the -telnet flag; that says to use an *external* telnet program.  To avoid
-double echoes, you need to force character mode in VMS telnet after
-connecting from VMS to ICS.  Do "^]^Mset mode char^M^M".
-
-* Display opponent names in the title bar for MachineWhite, MachineBlack,
-and TwoMachines modes.
-
-* WinBoard now has an installer, built with InstallShield.  The installer
-works with a binary-only distribution.  Sources are still freely
-available, but now separately.
-
-* Added SaveSettings to WinBoard, which saves current option settings to
-winboard.ini.  Made sure all options can be saved and loaded, including
-fonts and com port settings.
-
-* If the game ends while you are dragging a piece, we now don't let you
-finish the move.  Formerly the move was accepted and your opponent's clock
-would start running again.
-
-3.5.4 -- Fri Apr 18 01:15:24 PDT 1997  Tim Mann
-
-Beta test release of WinBoard and xboard.  The documentation remains
-out of date.
-
-* Many fixes and improvements to new WinBoard user interface code.
-
-* In Zippy mode, avoid sending another copy of the same move to the chess
-program if ICS sends us another copy of the board image.  Hard to believe
-it took me until now to diagnose and fix this problem!
-
-3.5.3 -- Sat Apr 12 19:49:33 PDT 1997  Tim Mann
-
-Beta test release of WinBoard and xboard.
-
-* Fixed fatal bug in WinBoard input handling.
-
-* Made code to stop chess program for reuse a bit smarter.  Removed kludge
-of "white" in initString; it didn't work well, and is unneeded
-with Crafty 11.21 and later.
-
-3.5.2 -- Sat Apr 12 15:40:01 PDT 1997  Tim Mann
-
-Beta test release of WinBoard.
-
-* Ignore check and permit promotion to King during suicide games; no need
-to turn off TestLegality.
-
-* Renamed CheckLegality to TestLegality to avoid confusion with the chess
-term "check".
-
-* Added Rematch to Action menu.
-
-* WinBoard now has a custom ICS interaction window with scrollback, a
-separate line for input, and colorization.  Accelerators that conflict
-with normal editing keys were changed (by requiring Alt+) so they can work
-in both the console and the main window.
-
-* WinBoard error popups are now non-modal and disappear when you make a
-new move, as in xboard.
-
-* Configure now defaults to --disable-ptys on all systems.  If anyone has
-an ancient SysV system where pipes don't work with select, they can still
-do "configure --enable-ptys" explicitly.  I would appreciate getting a bug
-report if this happens to anyone, with complete output from configure and
-"uname -a".
-
-* "make install" now makes the installation directories too.
-
-* Fixed a bug that would cause an "Illegal move" message for Black from
-GNU Chess to be incorrectly considered bogus.
-
-* Handle name changes during an ICS game (FICS bname and wname commands).
-
-* You can force both chess programs to be killed at the end of each game
-by turning off the reuseChessPrograms option.  There are still some
-problems with reusing Crafty even in version 11.20.
-
-* Now the second chess program stays around by default too, if it ever
-gets started.
-
-3.5.1 -- Sat Apr  5 16:47:48 PST 1997  Tim Mann
-
-Beta test release.
-
-* Don't kill off and restart the chess program for each game; keep the
-same one running, using the "new" command to start a new game.  This
-change works around the problem in Windows 95 that makes WinBoard crash it
-at times, and is generally desirable to make new games start faster.  The
-second chess program (for TwoMachines) is still killed at the end of the
-game, and unfortunately this can still crash Windows 95.  Temporarily
-added "white" to the initString to make this work with Crafty 11.20, which
-has a minor bug in "new".  Older versions of Crafty have worse bugs in
-"new"; they should not be used with this version of xboard.
-
-* Support for FICS suicide chess: Parse illegal moves (that leave King in
-check) in game history.  If CheckLegality is off, allow promotion to King
-and illegal moves in game files.  We still generate e2e4 style notation
-for illegal moves.
-
-* Handle FICS "has timeseal; checking" message.
-
-* Changed the coords from white back to black; this was a bug.
-
-* Fixed problems compiling with K&R compilers.
-
-* Fixed an old bug in RegisterMove that was crashing cmail on some systems
-(notably linux).
-
-3.5.0 -- Thu Jan  2 16:59:49 PST 1997  Tim Mann
-
-Thanks to Frank McIngvale for much of the work on versions 3.4.4 and above!
-
-* Fix Crafty resumed game time bug (frankm)
-
-* Word wrap text in Analysis window (frankm)
-
-* More debug info for XPM loading (frankm)
-
-* Replaced config.sub, config.guess, etc., with up-to-date versions from
-autoconf 2.12.  Hopefully this will fix problems on Pentium Pro machines.
-
-* Removed some Makefile gunk that was causing looping for one person.
-
-3.4.7 -- Thu Dec 19 14:22:41 PST 1996  Tim Mann
-
-All changes from Frank:
-
-* Retrieve ratings from ICC (and FICS, etc., when they add the Creating:
-message), save them in the PGN tags, and pass them to Crafty in Zippy mode.
-
-* Add settable time delay between characters in ICS login script.
-
-* Colorize messages like personal tells.  Fix false recognition of channel
-tells.
-
-* Pass "tells" from Crafty through to ICS (in Zippy mode).
-
-* Implement ~/ filename convention from C shell for game and position file
-names.
-
-* ZIPPYACCEPTONLY feature for testing.
-
-3.4, patchlevel 6 -- Sat Nov 23 16:58:50 PST 1996  Tim Mann
-
-* Put recognition of "illegal move" messages from Crafty for
-illegal castling, etc., inside an #if that is currently turned off,
-because of a bug in Crafty that generates bogus "illegal move" messages
-after some moves that are actually legal and accepted by Crafty.
-
-* Added -checkLegality option; previously this could not be turned off.
-
-* Fixed an old bug in finding default board size parameters.
-
-* Differentiated among channel tell, kibitz/whisper, and personal tell/say.
-
-* Fixed a bug in detecting Xpm in the configure script.
-
-3.4, patchlevel 5 -- Mon Nov 18 16:22:53 PST 1996  Tim Mann
-
-* Added zic2xpm to the kit; it had been omitted by mistake.
-
-* Added some default colors for -colorize
-
-3.4, patchlevel 4 -- Sat Nov 16 18:10:17 PST 1996  Tim Mann
-
-This is meant to be a beta release in preparation for version 3.5.
-
-* Added InfoXBoard and ManXBoard to the Help menu.
-
-* Made Frank's ICS input box optional, defaulting to off.
-
-* Merged in Frank McIngvale's XbKit.  Many new features, including
--clickClick mode, the Analysis modes, piece flashing, ZIICS import,
-ICS text colorization, and the ICS input box.  Many thanks to Frank for
-supplying and documenting this code.
-
-3.4, patchlevel 3 -- Mon Nov 11 18:23:14 PST 1996  Tim Mann
-
-Small set of changes made while Frank McIngvale was working on XbKit in
-parallel.  Unreleased in this form.
-
-* Updated zippy.README.
-
-* Removed useless X event handler and removed strange code for copying
-form translation table to board that worked around the bug it caused.
-This makes changing bindings in .Xdefaults more straightforward.
-
-* Now pressing the Control key steps back one move, and releasing it steps
-forward again.
-
-* Moved quit from "q" to "Q" for greater safety.
-
-* Use "unobserve" instead of "observe" to stop observing; needed on FICS.
-
-* Support for interface variable.
-
-* Strip titles from people who are talking to us, so (for example) Zippy
-won't try things like "tell Darooha(*) hello".  Needed on FICS.
-
-3.4, patchlevel 2 -- Tue Jul  9 19:06:42 PDT 1996  Tim Mann
-
-This patchlevel is not planned to be an announced release.  It's in
-preparation for integrating Frank McIngvale's XbKit.  It mostly contains
-minor fixes I've accumulated since 3.4.pl1.
-
-* WinBoard /telnet option now fires up an external program, as
-with xboard, instead of trying to use a feature of NT 3.1 that does not
-exist in later versions of NT or in Windows 95.  ChangeLog for 3.4.pl1
-said this had been implemented there, but it really wasn't.
-
-* Indicating player to move by the icon color now works under Windows 95.
-
-* WinBoard now kills the chess program when you exit using the system menu
-or the [X] button.  Thanks to Michael Lowe.
-
-* Minor changes to Zippy, including: Now understands wild challenges on
-FICS; these used to crash it.  Removed limit on how fast a game will be
-accepted.  Use "set formula ..." on the chess server to limit this if you
-are using GNU Chess.  Now sends correct opponent name to Crafty.
-
-* Added some missing default values to documentation.  Thanks to Stuart
-Cracraft.
-
-* Bugfix: Trying to print "No fonts match pattern" error message would
-crash.  This can happen to Linux users who don't install Helvetica, for
-example. 
-
-* Bugfix: Defaulting feature in -size n,n,n,n,n,n would put us in an
-infinite loop.
-
-* Added more directories to search for Athena widgets on HPUX.
-
-* New cmail (3.12) from Evan Welsh; includes small fix from Kayvan Sylvan.
-
-* Recognize "illegal move" messages from Crafty for illegal castling, etc.
-
-* Bugfix: "name" command added to zippy.c for Crafty was producing error
-message if GNU Chess was in use.
-
-* In bughouse mode, suppress holding messages from console window; show
-holdings only in banner.
-
-* Minor fixes/cleanup to Makefile.in and configure.in.
-
-3.4, patchlevel 1 -- Mon Dec 11 13:43:12 PST 1995  Tim Mann
-
-* This patchlevel updates WinBoard to match xboard, and includes a few
-fixes and minor improvements.  "-size tiny" and "-size n,n,n,n,n,n"
-are still not implemented for WinBoard.
-
-* Installed support for Crafty based on code from Bob Hyatt.
-Currently the only documentation for this is in the FAQ, and a few
-things don't work with Crafty 8.23.  Please do not report these
-problems as bugs in either xboard or Crafty.  Bob and I know about
-them.  The worst ones (if not all of them) should be fixed in Crafty
-8.24.
-
-* Changed the kludge command we send when gnuchess wants to print
-something that doesn't end with a newline, from "help" to "bogus".
-This works because the error message gnuchess prints ends with a
-newline.  It also improves compatibility with Crafty, which doesn't
-need the kludge, but for which sending "help" causes a problem.
-
-* Don't draw grid at all if lineGap is 0; previously we drew the grid
-with X "0-width" lines (usually 1 pixel wide) and then overwrote it.
-
-* Makefile: Removed xboard.info from "all" target so we won't try to
-rebuild it, because this fails on hosts that don't have makeinfo
-installed.  Other minor fixes to "clean" targets, etc.
-
-* Fixes and cleanup to Auto Comment code that handles continuation
-lines and highlighting.
-
-* Auto Observe now tries to observe the game from the point of view of
-the player who was on your gnotify list.  Requested by rng.
-Limitations: We can't tell which player it was unless you have ICS
-highlighting turned on.  Also, currently "observe foo" works as
-required (observing from foo's point of view) only on ICC, but FICS
-will probably implement this soon.
-
-* "-size tiny" now makes the default font smaller automatically.  This
-was implemented by introducing an extra Form widget in the hierarchy
-for all xboard windows, named either normalLayout, smallLayout, or
-tinyLayout.  So you can have resource specifications that apply only
-to certain layouts; in particular, XBoard*tinyLayout*font.
-
-* Bug fix: EditGame or EditPosition while playing or examining still was
-not really being permitted.
-
-* WinBoard bug fix: On the EditPosition menu, King did not work.
-
-* Added text catalog of WinSock error messages to WinBoard, because
-Microsoft still has not put them in the system message catalog.
-
-* Removed support for older ICS game-ending messages that do not have
-a PGN result token (*, 0-1, 1-0, or 1/2-1/2) after the closing '}'.
-The code for older messages was sometimes firing on the newer
-messages, due to parsing ambiguity.  If the current code sees an old
-message, it will understand that the game is over, but will always
-display * as a result token instead of trying to guess the result by
-interpreting the text message.
-
-3.4, patchlevel 0 -- Tue Nov 21 01:02:50 PST 1995  Tim Mann
-
-* This patchlevel was released for xboard only.
-
-* Updated the info file.  It should now be as up-to-date as the man page,
-with good English except in the parts that pertain only to AmyBoard.
-
-* Added "-size tiny", requested by Bob Hyatt.  Also cleaned up bitmap
-support and added "-size n,n,n,n,n,n" to allow arbitrary-sized bitmaps,
-if the actual bitmaps are supplied by the user.
-
-* Updated bughouse support.
-
-3.3, patchlevel 4 -- Sat Nov 18 02:27:21 PST 1995  Tim Mann
-
-* Unreleased beta that works with preliminary FICS bughouse code.  Will
-need changes before release to track FICS message changes.
-
-* Removed use of .EX macro from man page.  It is not supported by some
-nroff -man macro packages, notably the one on Slackware Linux.  Switched
-to boldface for references to xboard and other commands within the man
-page, as this seems to be the modern way.
-
-* Bug fix: If ICS rejected a move, it was correctly undone on the board,
-but the message widget still displayed the bad move.  Reported by DAV.
-
-* Normally, xboard in ICS mode fetches the move list whenever the board
-display switches to a new game.  Doing this is now an option
-(getMoveList) that can be turned off, which is useful if you are watching
-multiple blitz games.  Requested by rng.
-
-* Move list fetching code is now smarter: it ignores a move list if it is
-not for the right game.
-
-* Added support for bughouse as implemented on FICS.  Holdings are shown
-in the window title in place of the strength numbers.  A menu on mouse
-buttons 2 and 3 (same on both) lets you drop pieces.  There is no checking
-as to whether you actually hold the piece you are trying to drop; we rely
-on ICS to check that.  Notation of the form P@f7 is generated and parsed.
-The mate detector does not understand that non-contact mate is not really
-mate in bughouse, but this does no real harm.  It results in a "#"
-suffix being displayed on the move notation, but xboard does not assume the
-game is over.
-
-* Bug fix: Promotion to a knight was not working with ICC!  Thanks to
-Wendigo for the report.
-
-* Bug fix: Special pty code for host types *-*-aix3* and *-*-irix3*
-(supplied from configure.in) had a bug that would cause childio.c to
-fail to compile, due to a "continue" that was not within a loop.
-
-* Bug fix: In pgntags.c, memory was being freed while still in use.  One
-symptom this caused was that on some machines, cmail would fail with a
-message that it could not find the BlackNA tag.  The error was in some
-submitted code that I included in version 3.2.pl3 without reading
-carefully enough.  Anders Forberg noticed the symptoms, and Evan Welsh
-(who had nothing to do with causing the bug) found the bug and submitted a
-fix; thanks to them both.
-
-* Removed restriction against using EditGame while playing, observing,
-or examining on ICS.  You still get a warning popup.
-
-3.3, patchlevel 3 -- Sat Sep 16 11:44:05 PDT 1995  Tim Mann
-
-* Bug fix: Going directly from MachineWhite to TwoMachines mode would kill
-off the second chess program after Black's first move.
-
-* Added -timeIncrement feature.  Thanks to Joel Rivat.
-
-* Deleted code that tries to keep you from observing more than one game,
-or observing while playing or examining.  There is actually no problem in
-doing this, except that every time an update comes in from a different
-game than is currently being displayed, xboard fetches the history of the
-new game, which may be time-consuming if you are on a slow link.
-
-* Fixed configure so as not to crash when neither lex nor flex is found.
-lex or flex is needed only if the user wants to rebuild parser.c.  Thanks
-to Phil Humpherys for reporting the crash.
-
-* Bug fix: config.h.in used #define instead of #undef for some macros used
-in the pty code in childio.c.  This causes the code to fail to compile on
-some architectures, because the symbols are supposed to be undefined, not
-defined to empty, when they are not set in configure.  Bug originated in
-3.3.pl0 when config.h was introduced.  Thanks to Phil Humpherys for report.
-
-* Bug fix: ShowThinking would not show anything when current position had
-no move to display in the move window.  E.g., if position was created by
-LoadPosition or EditPosition.
-
-3.3, patchlevel 2 -- Mon Aug 28 11:11:11 PDT 1995  Tim Mann
-
-* Zippy code was omitted from xboard-3.3.pl1 by mistake; now included.
-
-* For WinBoard, added hint to help file that you may need to turn off
-LocalLineEditing while typing dialing commands to your modem.
-
-3.3, patchlevel 1 -- Sat Aug 19 15:13:30 PDT 1995  Tim Mann
-
-* Zippy distribution is no longer separate from regular xboard distribution.
-
-* Deal properly with Show Thinking output from GNU Chess when it is
-thinking on its opponent's time.  In TwoMachines mode this output is
-suppressed to avoid interfering with the output from the machine that is
-on move; in other modes it is displayed (including the move that GNU Chess
-is predicting the user will make next).  GNU Chess produces this output
-only if it is built without -DQUIETBACKGROUND defined; this symbol is
-defined by default in patchlevels before pl75, but undefined by default in
-pl75.
-
-* Bug fix: Handling of initial board position in move list for wild games
-was broken, so wild games could not be observed and adjourned wild games
-could not be continued.  Thanks to "Maximum Entropy" for the bug report.
-
-* Added feature: algebraic notation now shows "+" indicator for check
-and "#" for checkmate, as called for in PGN standard.  Thanks to Kevin
-Maher for the suggestion.
-
-3.3, patchlevel 0 -- Thu Jul 27 22:21:07 PDT 1995  Tim Mann
-
-* Changed configuration to use a config.h file instead of passing zillions
-of -D options on the cc command line.
-
-* Merged a small fix and some updates to the texinfo file from Jochen
-Wiedmann.  The texinfo file still needs work.
-
-3.2, patchlevel 5 -- Tue Jul 18 20:29:39 PDT 1995  Tim Mann
-
-* Beta test release of xboard only.
-
-* Updated WinBoard code to include new xboard features.
-
-* Added texinfo file from Jochen Wiedmann to the release, but not as the
-primary documentation.  It needs updating, and the English needs work.
-I did make a few improvements, mostly to change incorrect uses of @var to
-either @samp or @code as appropriate.
-
-* Merged in code changes to 3.2.pl4beta from Jochen Wiedmann.
-
-* Fixed EditComment; did not pop up window in previous beta.
-
-* Added AutoComment feature.
-
-* Added GameListDestroy to disable the outdated game list popup in cases
-where we load a new game file without building a new popup.
-
-* Added yyskipmoves feature to parser.l to speed up building of gamelist.
-
-* gamelist.c wouldn't compile with a non-ANSI compiler.  Fixed.
-
-* Change to yy_text handling in patchlevel 3 still had problems.  Can't
-use AC_DECL_YYTEXT in configure.in, because that defines YYTEXT_POINTER
-according to whether the lexer on the current host makes yytext a pointer.
-But most people will be using a parser.c that was generated on another
-host and shipped with the package.
-
-3.2, patchlevel 4 -- Sun Jun 25 19:13:43 PDT 1995  Tim Mann
-
-* Beta test release of xboard only.  
-
-* Added FIREWALLS section to man page.
-
-* Changed -icsport to be a string.  Now with the -telnet option,
-specifying -icsport "" suppresses the second argument to telnet.
-
-* Added EditTags feature.  Removed AboutGame from menu, because EditTags
-subsumes it.  EditTags suggested by Jochen Wiedmann and first implemented by
-him in AmyBoard.  xboard implementation is my own.
-
-* Fixed some missing or incorrect prototypes.
-
-3.2, patchlevel 3 -- Sat Jun  3 18:57:38 1995  Tim Mann 
-
-* Beta test release of xboard only.  
-
-* New version of cmail from Evan Welsh, to fix compatibility problems with
-perl 5.0.
-
-* Added game list feature on Load Game, based on code from Jochen
-Wiedmann.  Integrated it with cmail.
-
-* Several bug fixes from Jochen Wiedmann, including one to my yy_text
-workaround for the difference in the type of yytext between lex and flex.
-
-* Handle clock pause on FICS.
-
-* Suppress clocks in untimed FICS games (time control 0 0).
-
-* Rebuilt configure script with autoconf 2.3.  This fixes a bug in
-configuring for X11R6, where -lSM -lICE would not be added when needed.
-
-* Fixed inconsistent type declarations on IntSigHandler and
-CmailSigHandler.  Bug report from Josh Daynard.
-
-* backend.c wouldn't compile with a non-ANSI compiler.  Fixed.
-
-3.2, patchlevel 2 -- Tue Feb  7 14:50:30 1995  Tim Mann 
-
-* Minor release of both xboard and WinBoard.
-
-* Added recognition of some FICS messages.  On the other hand FICS is also
-changing some of its messages to match what xboard already recognizes.
-
-* Temporarily went back to using "promote" command on ICS instead of
-"a7a8=Q", because FICS doesn't implement the latter yet.
-
-* We now avoid using overlapped I/O on pipes in WinBoard, to make Windows
-95 beta 2 happy.  This lets WinBoard work with GNU Chess on Windows 95!
-
-* Installed patches from Jochen Wiedmann to coordinate with Amiga XBoard.
-
-* Installed patch to cmail bug in LoadGame from Evan Welsh.
-
-* Bugfix: checkmate and stalemate moves entered with EditGame in ICS mode
-were not being handled correctly.  Bug was in GameEnds().
-
-* Implemented EchoOn and EchoOff for xboard, using system("stty echo\n").
-Now passwords won't be echoed when you connect directly to ICS.  Also,
-telnet negotiation characters aren't displayed (when possible).
-
-* Implemented more of the telnet protocol.  Now connecting to a telnet
-server with "-icsport 23" should work even without giving the -telnet
-option.  The telnet is in "old line-by-line mode".
-
-3.2, patchlevel 1 -- Sat Dec 10 13:50:46 1994  Tim Mann 
-
-* This patchlevel released for WinBoard only.
-
-* winboard.c: Fixed ConsoleInputThread().  Needed to change CRLF to LF,
-not to CR.  This was stopping normal /ics mode from working.  Thanks to
-Asher Kobin for the bug report.
-
-* winboard.c: Fixed Raw(), EchoOn(), EchoOff().  Now they take effect
-immediately, not on the next console read after the one in progress.
-
-* winboard.c: Attempted to make WinBoard work with gnuchessx running
-directly on Windows (not remotely via rsh).  It now works on NT, but only
-if gnuchess is told not to think on its opponent's time ("easy\n" removed
-from initString).  The problem seems to be that GenerateConsoleCtrlEvent
-is not doing anything.  On Windows 95 beta 2, we get error messages on
-both reading and writing to gnuchessx; I didn't investigate why.
-
-3.2, patchlevel 0 -- Wed Dec  7 13:23:36 1994  Tim Mann 
-
-* Thanks to all the beta testers who gave me feedback: Josef Nelissen,
-Steve Booth, Evan Welsh, Dima Dakhnovsky, Chris Petroff, Peter Jansen,
-Derek Terveer, Michel van der List, Richard Lloyd, Shelly Mistry, and Mike
-Lee.  Sorry if I forgot anyone.  Thanks to Virendra Kumar Mehta for
-information about DYNIX/ptx.
-
-* Don't exit on keyboard EOF unless we get two in a row.
-
-* WinBoard only: added -localLineEdit switch to allow turning off local
-line editing if you really want to.  It is still a bad idea to let the
-echoing be done remotely, however; see below.
-
-* Fixed some configure problems on HP-UX.  [Steve Booth]
-
-* Fixed (I hope) configure problem on SunOS 5.3/Solaris 2.3.  [Josef Nelissen]
-
-* cmail bugfix from Evan Welsh (cmail 3.4).
-
-3.1, patchlevel 9 -- Fri Dec  2 23:54:56 1994  Tim Mann 
-
-* Beta distribution only
-
-* Always do local echo/edit of user typing in ICS mode.  Doing the echo
-downstream may seem nicer in some modes, and it can be hard to turn that
-echo off, but the echoed characters can be interleaved with ICS output
-and make it impossible to parse correctly.  For xboard this involved only
-a change to recommendations in the man page, as Raw() isn't implemented.
-For WinBoard, removing Raw() made a real difference.  Added code in 
-WinBoard to change /r/n back into /r on keyboard input, as we get the 
-former when Raw() is not called.
-
-* Do not issue ICS "refresh" command after we start to observe a game
-unless we get to the next prompt without seeing a board image.  Newest
-version of ICS doesn't require this refresh, but old versions around still
-do.
-
-* cmail bugfix and small code cleanup in LoadGame, from Evan Welsh.
-
-* Added keyboard accelerators N/P for LoadNextGame/LoadPreviousGame.  Evan
-Welsh request.
-
-* Using "-" on the command line as a filename for loading (saving) games
-or positions specifies the standard input (standard output).  Alain Picard
-suggestion.
-
-* On WinBoard only, a command line option without a leading '-' or '/' is
-now taken as the value of -lgf.
-
-* Changed to not use stdin, stdout, stderr as initializers in backend.c;
-needed for GNU libc compatibility.  You also must build parser.c with flex
-(not lex) if you are using GNU libc, to avoid having the same problem
-there.
-
-* Changed WinBoard to avoid using "overlapped" input on the console.  It
-now seems to fully work on Windows 95 beta 2.
-
-* Improved comment popups on WinBoard.  Now newlines are handled properly,
-and the plain Comment popup window doesn't disappear and reappear when we
-step to a new move with a new comment.
-
-* Fixed bugs in detecting the absence of the time and otim commands.
-
-* Added built-in implementation of rcmd protocol to WinBoard.  Windows NT
-does not implement passing signals through rsh, and Windows 95 does not
-have rsh at all.
-
-* Added -remoteUser option.
-
-3.1, patchlevel 8 -- Mon Nov 28 15:26:07 1994  Tim Mann 
-
-* Beta distribution only
-
-* Rearranged ChangeLog file into reverse chronological order to be closer
-to GNU standards.
-
-* Integrated new cmail code from Evan Welsh (including cmail RCS rev 3.2).
-Includes a bug fix to TruncateGame.
-
-* Updated ICS address to be chess.lm.com.
-
-* Bug fixes to handling the aftermath of FatalError.  Thanks to Chris
-Petroff for the bug report.
-
-* Test for remsh before rsh, other fixes for HP-UX.  Thanks to Richard
-Lloyd.  I wasn't able to do all the things he suggested, so there may
-still be some rough edges in building on HP-UX.  See the FAQ file for hints.
-
-* Bug fix; added missing check for HAVE_SYS_SYSTEMINFO.  Thanks to Josef
-Nelissen for testing on Solaris 2.x.
-
-* Updated WinBoard to match xboard.  (WinBoard still has a few option
-dialogs that don't exist in xboard.)
-
-* Changed Hint output to a popup.
-
-* ShowThinking output and move output no longer overwrite each other.
-ShowThinking output won't appear if the displayed position is not current. 
-ShowThinking output in TwoMachines mode made clearer and documented.
-
-* Implemented --enable-ptys and --disable-ptys arguments to configure.
-
-* Fixed Book and Hint code to work over a pty with echo enabled and tabs
-expanded to spaces.  Thanks to Dima Dahknovsky for the bug report.
-
-* Moved Attention calls from all over xboard to one place, inside
-SendToProgram.
-
-* Added bulletproofing to ShowThinkingEvent.
-
-* Added code to handle "refresh N" boards that come in from ICS properly,
-assuming ICS is changed to mark them with a new relation code (-3).
-
-3.1, patchlevel 7 -- Sun Nov 13 22:16:01 PST 1994 -- Tim Mann
-
-* Beta distribution only
-
-* Changed ShowThinking to just show the current best line in the
-DisplayMessage area, instead of dumping everything to stdout.
-
-* Installed new cmail (RCS rev 3.1) and cmail.man (RCS rev 1.10), and
-changes to cmail code in backend.c, from Evan Welsh.
-
-* Miscellaneous minor fixes.
-
-3.1, patchlevel 6 -- Fri Nov  4 12:53:53 PST 1994 -- Tim Mann
-
-* This patchlevel was not actually released to anyone.
-
-* Updated the pty code to be based on GNU Emacs 19.24, and moved it to a
-separate file.  It was hard to split out just the pty configuration from
-all the stuff emacs does with its custom configure script and .h files,
-but I did my best.
-
-* Converted from imake to GNU autoconf.  This was a serious upheaval.  
-
-* Put in code to help trap "error gathering move list" problem reported by
-Michel van der List if it recurs.  I couldn't reproduce it.
-
-3.1, patchlevel 5 -- Mon Oct 31 21:12:00 PST 1994 -- Tim Mann
-
-* Beta distribution only.
-
-* We now test for checkmate or stalemate in EditGame mode after every user
-move, and in LoadGame mode whenever we hit the end of a game without
-seeing a PGN end marker.  cmail needs an update to deal with this
-correctly; Evan promises one.
-
-* Bugfixes in new move generator.  Thanks to Mike Lee for reporting one of
-the bugs.
-
-* Imakefile was omitted from patchlevel 4.
-
-3.1, patchlevel 4 -- Mon Sep 19 18:19:46 PDT 1994 -- Tim Mann
-
-* Beta distribution only.
-
-* The move generator includes a mate tester.  Initially this is used only
-by cmail, and even that usage needs further work.
-
-* Wrote a true move generator and used it to replace all the move
-disambiguation and legality checking code in parser.l.  The move generator
-is capable of dealing correctly with en passant and castling availability,
-but the rest of the program still does not keep track of this information.
-
-* Bug fix: xboard did not handle "foo has made you an examiner of game 23"
-message.  Thus you could not use examine features until the next board
-came in, showing your new relation to the game.  Thanks to POOKIEWOOKIE on ICS
-for the bug report.
-
-* Added AutoObserve feature.  Thanks to Chris Petroff for the idea.
-
-* Added Book feature to use new gnuchess "bk" command.  Mike McGann request.
-
-* Redid code to handle missing "time" command in gnuchess, because latest
-gnuchess no longer sends a response to this command.  
-
-* Eliminated need for -DFLEX.  Thanks to Michael Shields (Vladimir?) for
-the idea.
-
-* Added missing code to implement MoveNow in TwoMachines mode.
-
-* Added ShowThinking feature.  Thanks to Richard Lloyd for the idea.
-
-* Applied patches from Evan Welsh; some fixes and improvements to the
-cmail code.
-
-* Fixed bug in moving from EndOfGame mode to MachineWhite or MachineBlack,
-introduced in previous patchlevel.  Also fixed related bug in ending a
-game in ICS mode; was entering EndOfGame mode instead of IcsIdle.
-
-* Added patch to implement internetChessServerLogonScript flag, from Kevin
-O'Connor.  Thanks!
-
-3.1, patchlevel 3 -- Wed Sep  7 13:22:07 PDT 1994 -- Tim Mann
-
-* Beta distribution only.
-
-* Merged in new cmail code from Evan Welsh.  He added the ability to have
-more than one game per message, needed for official IECG matches.  I added
-the ability to resign or offer/accept/decline a draw in a cmail game.
-
-* Bugfix: invalid -tc option caused segmentation fault; DisplayFatalError
-was called too early in initialization.  Georges Honore reported this bug.
-
-* Decided to keep EndOfGame mode as an element of the user interface---it
-means that a gnuchess game or loaded game has ended, and the user must
-explicitly select EditGame to edit it, rather than just being able to
-enter more moves freely.  But internally there is no longer an invariant
-tying this mode to whether the chess program is running.
-
-* Zippy bugfix: Was saving only the final position in the -sgf file when
-the game ended by something other than resignation or flag.  Also fixed
-the longstanding bug that Zippy would think the final board of such a game
-was a new game and restart the chess program.
-
-* Now does a better job of faking castling availability in FEN.  We still
-don't really keep track of it, but now at least we don't say that castling
-is still available when the king or rook is not on its home square.
-
-* Bugfix: Initial board of game history for wild games was going through
-too much processing, causing us to forget the game length, which is now
-needed by ParseGameHistory.  This was causing problems with resuming
-adjourned wild games.
-
-* Updated ICS host to ics.onenet.net.
-
-* Zippy now accepts challenges where the opponent specified his color.
-
-* Added ZIPPYPASSWORD2 to let operator give commands directly to gnuchess.
-
-* Bitmap directory can include alternative icons now, too.
-
-* Handle "Game * (*) has no examiners" message from ICS.
-
-* Revamped window title and icon name selection.
-
-3.1, patchlevel 2 -- Sun Jun 12 17:16:28 PDT 1994 -- Tim Mann
-
-* "Beta" distribution for Zippy users only.
-
-* Bugfix: common.h was assuming that X11 type Boolean is char, which is
-not always true.  This might have caused all sorts of obscure bugs!
-
-* Installed new bitmaps from Elmar Bartel as the default.  Many thanks!
-The old bitmaps can be used by changing the "bitmaps" symbolic link before
-compiling xboard, or by using the -bitmapDirectory option at runtime.
-
-* Loading a game that ends with the PGN unfinished symbol ("*") now always
-leaves you in EditGame mode.
-
-* Added documentation of -icscomm to man page.  Thanks to Maarten Remkes
-for the linux script.
-
-* ^C now kills gnuchess as well as xboard.  Thanks to Dima Dakhnovsky for
-reminding me how to do this.
-
-* Bitmap icon color now indicates player to move.  Stuart Cracraft
-suggestion.
-
-* Changed piece bitmap flags to have just one flag, which points to a
-directory full of bitmaps, instead of a flag for each bitmap.  Also
-changed bitmap naming convention.
-
-* "Connection closed by ICS" is no longer a FatalError popup.  This was
-too annoying in the normal case where the user typed "quit".
-
-* Changed default font to 14 pixels instead of 10 points.  This seems to
-make it close to the size I want it to be on more displays.
-
-* Major mode (GNU Chess, etc.) appears in title bar.  Stuart Cracraft
-request.
-
-* Bug fix: EditGameEvent, MachineBlackEvent, MachineWhiteEvent, and
-TwoMachinesEvent were calling PauseEvent to get out of pause mode, which
-now has undesired side effects, such as advancing the display to the
-forwardMostMove.  It works fine to just set pausing = FALSE instead.
-
-* IcsExamining mode now lets you access ICS edit position commands using
-the same popup menus as xboard's EditPosition mode.  Thanks to DAV on ICS
-for inspiring the idea.
-
-* Corrected test for gcc on HP in Imakefile; thanks to Richard Lloyd.
-
-3.1, patchlevel 1 -- Wed Jun  1 16:25:11 PDT 1994 -- Tim Mann
-
-* Added parser.c.lex and parser.c.flex to the distribution.
-
-* Added HP gcc options to Imakefile, from Mats Nylen.
-
-* EndOfGame mode no longer highlights EditGame mode indicator, because the
-modes really do differ.  I would like to get rid of EndOfGame mode in the
-future, at least as far as users can see.
-
-* Larger %a in parser.l, needed for RS/6000 users.
-
-* Minor improvements to Mail Move error messages.
-
-* When -debug flag is given to xboard, -v is passed to cmail.
-
-* Old Save Style uses "1. ..." instead of "1..." when black moves after a
-comment; more like xboard 3.0's actual style.
-
-* New version of cmail from Evan Welsh.  Looks for UCB Mail in a more
-portable way and has some minor bug fixes.
-
-* Bug fix: Saving a FEN position while in EditPosition mode with black to
-play was showing white to play in the saved position.
-
-3.1, patchlevel 0 -- Fri May 20 16:36:15 PDT 1994 -- Tim Mann
-
-* This is the first general release since 3.0, patchlevel 9.  Releases
-since then have been limited-distribution or beta releases.
-
-* Thanks to my version 3.1 beta testers: Dmitry Dakhnovsky, Ed Hanway,
-Richard Lloyd, Mike McGann, Shelly Mistry, Josef Nelissen, Chris Petroff,
-Jack Robertson, Michel van der List, Ky Macpherson, Derek Terveer, and
-Evan Welsh.  Sorry if I've forgotten anyone who gave me feedback.
-
-* Updated man page.
-
-* Minor cleanup on menu sensitivity code.
-
-* Integrated another even better version of cmail from Evan Welsh,
-including some code he supplied in xboard itself.
-
-* A few more fixes to cmail support.
-
-* Automatically update clocks after an ICS "moretime" command.
-
-* Handle ICS automatic examine mode (set examine 1) after a game.
-
-3.0, patchlevel 14 -- Tue May 17 13:41:44 PDT 1994 -- Tim Mann
-
-* Beta test release only.
-
-* Don't suppress prompt on first board of game being examined; otherwise
-it looks like nothing happened at all (i.e., like you're lagged).
-
-* Added StopExamining and StopObserving (Chris Petroff suggestion).
-
-* Made Reset do a refresh on ICS.  John Chanak's original ICS code for
-xboard tried to do this; I finally decided it was a good idea after all.
-
-* Fixed bugs in handling updates that come in while you are pausing in
-examine mode.  This is pretty tricky to do right.
-
-* Made un-Pausing immediately pop you to the current position.  This is
-always necessary in examine mode, since the game may have changed under
-you; your remembered moves might no longer be right.  So I made it do the
-same in all modes.
-
-* Took Detach Examine mode back out...used Pause mode for this instead!
-
-* Put in a trap for the GNU Chess bug of printing an Illegal Move message
-when its own hint move is illegal.
-
-* Attempted to fix a Zippy bug; bogus "exited unexpectedly" messages after
-it checkmates its opponent.  This involved adding an argument to GameEnds
-to say who says it ended (ICS, GNU, etc.)  and taking different actions in
-different cases.  Unfortunately, this just restored an older Zippy bug, where
-Zippy restarts gnuchess when it gets the board with the final position,
-because GameEnds still puts xboard in EndOfGame mode.  Sigh.
-
-* We now capture elapsed time on last move when getting game history.
-(Josef Nelissen bug report)
-
-* Rewrote code to redisplay last file title so it really works.
-
-* Fixed bug in oldSaveStyle.
-
-* Larger %a and %o were needed for lex.
-
-3.0, patchlevel 13 -- Mon May 16 16:26:22 PDT 1994 -- Tim Mann
-
-* Beta test release only.
-
-* FatalError popups stay on the screen now.  If the error is really fatal,
-all functions are disabled, and the program exits when you press OK.
-
-* Redisplay last file title when using Load (Next/Previous/Same) Game.
-
-* Zippy understands new match challenge message format on ICS.
-
-* Added Revert command.
-
-* When examining a game on ICS, < > buttons do ICS backward/forward
-commands, unless you set the Detach Examine option.  Thanks to Dima
-Dakhnovsky for the idea.
-
-* Fixed various minor problems in cmail mode.
-
-* cmail generates the tags now.  New version of cmail from Evan Welsh.
-
-* cmail mode won't let you do MailMove unless the currently displayed
-position is exactly one move past the end of the game you loaded.
-
-* Fixed building of man pages in Imakefile
-
-* Updates to INSTALL file
-
-3.0, patchlevel 12 -- Sat May  7 21:10:03 PDT 1994 -- Tim Mann 
-
-* Beta test release only.
-
-* Brought man page up to date.
-
-* Added Shift+R to resign from keyboard.
-
-* Some items on Action menu available in GNU Chess mode now.
-
-* Revamped Action menu.
-
-* Reordered functions in backend.c as a small step toward reorganizing
-this whole mess.
-
-* Generate TimeControl PGN tag.
-
-* Get type of ICS game (e.g., rated blitz) and save in PGN tags.
-
-* Bug fix: Clocks were not redisplayed when entering EditGame mode.
-
-* Bug fix: Clocks were not being redisplayed after loading a game file
-with -td 0, so they could show the wrong color active.
-
-* Bug fix: Chess programs would be killed and match mode would exit
-prematurely when loading a PGN game fragment ending with "*".
-
-* ICS command "sposition" no longer confuses xboard.
-
-* Integrated new version of cmail (with support code in xboard) from Evan
-Welsh.
-
-* Added TruncateGame, MoveNow, RetractMove, and QuietPlay.
-
-* Bug fix: switching between MachineWhite and MachineBlack was not calling
-Attention().  Reported by Dino Dini.
-
-* More improvements to INSTALL and Imakefile.
-
-* Pack moves into 79 character lines in PGN output.  We don't generate
-check indications, and we always break the line before the result,
-so this is not quite PGN export format.
-
-* Use FEN tag in PGN.
-
-* Improved finding and counting of game starts in save files.
-
-* Negative position or game numbers in -lpi/-lgi mean to seek to that byte
-offset.  Hook for possible future features, not in man page.
-
-* Detect and handle absence of either "time" or "otim" commands in
-gnuchess.
-
-* Don't use "promote" command to ICS anymore.
-
-* Handle switching sides and taking back moves on FICS.
-
-* Handle flip state flag in style 12 board.
-
-* Handle examine mode on ICS.
-
-* Improved error popups for various kinds of illegal moves.
-
-* Suppress unasked-for hints from gnuchess (which it generates in post
-mode).
-
-* Load/save position functions use FEN.  Old style also supported.
-
-* Added detailed error messages if loading a bitmap file fails.
-
-* Small board has 2-pixel lines between squares instead of 3-pixel.
-
-* Added OldSaveStyle and AboutGame.
-
-* Renamed ForceMoves to EditGame.
-
-3.0, patchlevel 11 -- Tue Sep 21 15:25:36 PDT 1993 -- Tim Mann 
-
-* The following changes were present in xboard 3.0, patchlevel 11, but the
-first group did not make it into WinBoard 3.0 until later.  xboard
-3.0.pl11 was a limited-distribution release only, mostly to Zippy users.
-
-* Man page minor fixes.
-
-* Added a missing file close.
-
-* Removed automatic error popdown on Reset, which was destroying some
-error messages before they could be read.
-
-* Fixed char vs. unsigned char warnings on bitmaps.
-
-* Use ICS board style 12.  Some improvements to ICS parsing.
-
-* Comment window is now labelled with the move the comment is on, and
-comments don't pop down when you step to the next move.
-
-* Save files now in PGN format.
-
-* Support for loading PGN files.  PGN tags pop up when a PGN game file
-is loaded.
-
-* More info in INSTALL and Imakefile about building for Suns (and
-other systems).
-
-* WinBoard 3.0 patchlevel 11 split off from an early version of xboard
-3.0 patchlevel 11, so it does not have all the features of that
-patchlevel.  The following changes made it into both xboard and
-WinBoard:
-
-* Made Comment dialog non-modal in WinBoard.
-
-* EndOfGame mode is now more transparent.  It looks like ForceMoves
-mode except that there is no chess program running.
-
-* Small bug fixes in clock management.  Most noticeably, pausing when
-it is gnuchess's move now works as documented (again).
-
-* Add minimal support for -icscomm option.  Not documented yet because
-I haven't sorted out the issues with setting the tty modes on the comm
-port device, or with locking it properly.  But it's usable by wizards.
-
-* Don't restart the chess program upon Backward event from EndOfGame mode.
-
-* Suppress extra prompt after ICS sends us a board.
-
-3.0, patchlevel 10 -- Sat Sep 11 18:44:03 PDT 1993 -- Tim Mann 
-
-* Beta test release only.
-
-* Zippy now plays chess.  zippy.c and zippy.h are still not included
-in the standard distribution, but are available on request.
-
-* Switched to using style 12 on ICS.
-
-* Updated man page, and documented use of XBoard*form.translations to
-add more shortcut keys.
-
-* Added shortcut keys "d" to claim/offer/accept a draw, and "t" to
-call flag.  Suggested by venu on ICS.
-
-* More explicit instructions in INSTALL file.
-
-3.0, patchlevel 9 -- Tue Sep  7 14:02:00 PDT 1993 -- Tim Mann
-
-* General release, minor update to 3.0.pl8.
-
-* Loosened checking on whether it's okay to start a move, to satisfy
-ICS ultra-blitz players.  Now we don't check whether it's your turn
-until you let go of the piece.
-
-* Parser now recognizes "+-+" as meaning the game ended in a draw.
-
-* Got rid of S_NONE symbol, which seems to conflict with some symbol
-Sun defines.
-
-* Tweaked the man page.  Clarified that there is currently no way for
-two people running copies of xboard to play each other without going
-through the Internet Chess Server.
-
-* Fixed a bug in color name conversion.  Asking for two different
-colors whose names were the same in the first four characters would
-get you two copies of the first one.  Thanks to Volker Zink for the
-bug report.
-
-* Improved confusing Usage() message.
-
-* Added a bunch of Sun information to the Imakefile and INSTALL file.
-Thanks to Ed Hanway, Arik Klingensmith, and others who responded.
-
-* Test for defined(WIN32) instead of !defined(unix).
-
-* Avoid using (void *) type with non-ANSI C compilers.  Thanks to
-James Altucher for the bug report.
-
-3.0, patchlevel 8 -- Thu Sep  2 12:23:01 PDT 1993 -- Tim Mann
-
-* Note: Patchlevel 8 was the first non-beta release of xboard 3.0
-
-* Added cmail to distribution.  Contributed (and still maintained) by
-Evan Welsh.
-
-* Bug fix: -queen option wasn't initializing menu check.  Reported by
-Pat Surry.
-
-3.0, patchlevel 7 -- Thu Aug 26 13:23:24 PDT 1993 -- Tim Mann
-
-* Sent WinBoard 3.0.pl7 to Torre on ICS
-
-* Added parser.h to hold the interface to parser.l
-
-* Upgraded COPYING file and copyright notices to GNU GPL version 2.
-
-3.0, patchlevel 6 -- Tue Aug 24 15:16:13 PDT 1993 -- Tim Mann
-
-* We no longer display intermediate positions or intermediate comments
-while loading a game file with -timeDelay 0 or loading an opening to
-start up a -matchMode game.
-
-* Loading an empty game from an xboard save file now gives a status
-message "No moves in game" instead of an error popup saying "Game not
-found in file."
-
-* Added comment.awk to distribution.
-
-3.0, patchlevel 5 -- Tue Aug 17 16:45:54 PDT 1993 -- Tim Mann
-
-* Bug fix:  xboard would crash if it couldn't get all its colors; now
-it switches to monoMode instead.  Also, xboard was trying to convert
-color resources even when using a b/w display.  Reported by Larry
-Rogers.
-
-* Bug fix: Declared fields of TimeMark as signed so that we get signed
-instead of unsigned arithmetic.  SubtractTimeMarks was breaking on
-Alpha AXP (which has 64-bit longs) with old declarations.  Reported by
-Michel van der List.
-
-* Bug fixes:  Keyboard accelerators now work after EditComment window is
-popped down.  Iconize keyboard accelerator now works even if xboard
-was started with -iconic flag and later deiconized.
-
-* Bug fix:  The routine that tests whether a move is illegal because it
-would leave you in check was not handling e.p. captures properly.
-Reported by Patrick Surry.
-
-* Bug (?) fix:  Was adding time to clocks at time control even when
-loading a game file.  Actually it's not entirely clear how time
-controls should be dealt with when some moves are loaded from a file
-or clicked in with ForceMoves.  For now ForceMoves mode does add the
-time (because it can be used to change moves during a live game), but
-LoadGame mode does not.
-
-* Updated usage message.
-
-* Previous attempted fix to matchMode had broken TwoMachines mode and
-generally needed more work.  Also simplified command line interface to
-matchMode.
-
-3.0, patchlevel 4 -- Thu Aug  5 14:17:18 PDT 1993 -- Tim Mann
-
-* Thanks again to the beta testers listed for 3.0 patchlevel 3, and also
-Desnogues, Steve Cariglia, Niklas Engsner, Mark Silver, and Roger Rowe.
-
-* Reorganized man page, splitting OPTIONS into subsections.
-
-* matchMode was very broken; fixed.
-
-* Changed convention for turning off command line options from --opt
-to -xopt, to be less inconsistent with GNU standards.  Also changed
-the long command line options to take True/False arguments like
-resources; seems to make more sense this way.
-
-* Added AlwaysQueen option -- suppresses promotion dialog and always
-promotes to a queen if you move a pawn to the last rank.  Has no
-effect on gnuchess (or your ICS opponents!) -- they can still
-underpromote.
-
-* Subtracted an extra fudge term when determining how wide message and
-title widgets should be.  This fixes a problem some beta testers had.
-Wish I knew why it's needed.
-
-* Bugfix in parser; symptom was that you couldn't do LoadGame after
-observing a game on ICS.
-
-* Bugfix in Forward; didn't work after game ended while Pause was turned on.
-
-* Removed bogus execute bits on .h files.
-
-* Use REMOTE_SHELL and TELNET_PROGRAM definitions.
-
-* MachineWhite and MachineBlack now work from TwoMachines mode.
-
-* Popping down an error message with the [ok] button was not turning off
-the errorUp flag, so the next move would cause xboard to try to pop it
-down again, resulting in a wild memory reference and sometimes a crash.
-
-3.0, patchlevel 3 -- Tue Aug  3 17:40:27 1993  -- Tim Mann
-
-* Thanks to my beta testers: Patrick Surry, Takuya Kojima, Robert J. Luoma,
-Chris L.  Petroff, Richard K. Lloyd, Michel van der List, Craig Metz,
-Antoon Frehe, Simon Clift, Shelly, Eric Peterson, Christopher Mitchell,
-Martin Koch, Ed Hanway, Steve Booth, Udo, Ken Hobday, and Joseph Duhamel.
-
-* Improved error messages for trying to move the wrong color pieces or
-to move when it's not your turn.
-
-* Special code for monoMode on 1-bit displays now understands displays
-where 1=white and 0=black.
-
-* Declare getenv() if <stdlib.h> not included; avoids a compiler warning.
-
-* Documented borderXoffset and borderYoffset.
-
-* Added -titleInWindow option for use with X window managers that
-don't let us set the title in the window banner.
-
-* Fixed error message printing in WinBoard; system error messages no
-longer appear as numeric codes.
-
-* The error message popup is now non-modal; you don't have to press the
-[ok] button before you can do something else.  In addition, the popup is
-positioned so that it doesn't cover up the board (too much), and making a
-move or otherwise clicking on the board pops it down.  (Not implemented in
-WinBoard.)
-
-* You can now call your opponent's flag in ICS mode by clicking on his
-clock. 
-
-* Fixed minor bugs in -flipView option and documented exactly how xboard
-decides which way to flip the view.
-
-3.0, patchlevel 2 -- Fri Jul 30 22:20:23 PDT 1993 -- Tim Mann
-
-* Added Autosave to Options menu.  Would be better to have Save
-Options dialog as in WinBoard, but this was quick to do and gives the
-most-needed functionality.
-
-* Changed "Reload Game" on menu to "Reload Same Game".
-
-3.0, patchlevel 1 -- Thu Jul  8 21:22:59 PDT 1993 -- Tim Mann
-
-* Sent a copy of patchlevel 1 to Patrick Surry to beta-test.
-
-* Added -cmail option that sets appData.cmailMode.  Currently a no-op.
-In the future this may set special modes for use by the cmail script
-for playing chess by email.
-
-* Added LoadNextGame, LoadPreviousGame, and ReloadGame to File menu.
-ReloadGame suggested by Patrick Surry.
-
-* Added -flipView command-line option.  Suggested by Patrick Surry.
-
-* Fixed bugs in parser.l:  (1) Pattern for "# xboard game file ..."
-needed to match to end of line.  (2) Start of a new file was not matching
-the ^ start-of-line character.  The fix for this is a kludge.
-
-* Made game counting code in LoadGame more robust, and made LoadGame
-able to detect the end of a saved partial game (by noticing the start
-of the next game) in game files created by XBoard itself.  We don't
-try to find the start of the next game that way in other kinds of game
-files, because the only way I can think of to do that is to look for
-another move #1, and that technique gets too many false hits.
-
-* Fixed recently introduced bug in LoadGame when game starts with a
-position diagram.
-
-3.0, patchlevel 0 -- Fri Jun 25 14:17:17 PDT 1993 -- Tim Mann
-
-* Changes in this patchlevel were too numerous to list.  Larger ones are
-listed below.
-
-* Added a popup dialog to enter and edit comments.  Inspired by some
-code from Patrick Surry.  Changed the normal read-only comment popup
-to the same style.
-
-* Added ICS init script feature from Karl Schwamb.
-
-* Added some ESIX fixes and OMIT_SOCKETS ifdef option, from Kayvan Sylvan.
-
-* Revamped code to allow use of flex instead of lex on parser.l.
-Using flex requires adding -DFLEX to defines in Imakefile.
-
-* Source code is split into front end (xboard.c), which knows about X
-and Unix, and back end (backend.c), which knows about chess, gnuchess,
-and the ICS.  There is also a front end for Windows NT.
-
-* Boolean command line options now use "-foo" to turn on and "--foo"
-to turn off instead of "-foo true" and "-foo false".  [Later -xfoo;
-see above.] 
-
-* Added menu commands to control autoflag, bell, and coords options.
-
-* User interface has a new look: (1) Menu bar instead of array of
-buttons.  A few very commonly used features have small buttons in
-addition to being on the menus. (2) Large font for clock.  (3) Pop-up
-dialogs for errors.
-
+ChangeLog for XBoard/WinBoard\r
+\r
+* 04/15/2009: Updated the winboard.rtf of 4.3.15 with the 4.3.16\r
+additions, and a more fitting description of ICS-analysis mode.\r
+\r
+* 04/15/2009: Added internationalization to xengineoutput.c and\r
+xoptions.c. Fixed missing */ in xboard.c.\r
+\r
+* 04/13/2009: transferred all changes since 4.2.7 to 4.3.pre16, to make \r
+4.4.pre1, which should lead to a full merger of the 4.2 and 4.3 line\r
+\r
+* 02/28/2009: fixed an error in the parser. This should fix bug #22812. \r
\r
+* 06/12/2005: bugfix some more possible buffer overflows. \r
\r
+* 06/27/2004: added simple icsEngineAnalyze for xboard\r
+\r
+* 06/26/2004: added icsEngineAnalyze for winboard: Analyze observe games \r
+with a chessprogram on a Internet Chess Server (ICS) \r
+\r
+* 02/12/2004: Bugfix ICS interaction console crashed while chess \r
+engine starting and user type in some stuff. We wait now to finish \r
+the engine boot.\r
+\r
+* 02/11/2004: Winboard: Added color lines for the ics interaction \r
+console if zippy used \r
\r
+* 02/09/2004: Added mousewheel support for winboard. Play moves \r
+backward and forward with the mousewheel. \r
\r
+xboard/WinBoard 4.2.7 -- Fri Nov 28 13:36:00 PST 2003 -- Tim Mann\r
+\r
+* 11/26/2003: In WinBoard, setting the -debug flag now logs ICS output\r
+to WinBoard.debug too.  (This isn't needed in xboard because ICS\r
+output already goes to stdout, so it's easy to capture along with the\r
+debug output on stderr.)  This was issue #280 in the ToDo file.\r
+\r
+* 11/23/2003: Cleaned up some minor problems in cygwin.mak.  Thanks to\r
+Hans Werner Strube for the problem report.\r
+\r
+* 11/23/2003: Updated the default list of chess servers in\r
+winboard/defaults.h.  Deleted two that appear to be dead and added a\r
+new one that is active.\r
+\r
+* 11/19/2003: Swapped icon_white.bm and icon_black.bm in XBoard.\r
+Hopefully this will get them the right way around by default on more X\r
+window managers.  I wish I understood this better.\r
+\r
+* 11/18/2003: Implemented a simple 32-bit random number generator for\r
+WinBoard, replacing the Windows rand(), which ranges only up to\r
+0x7fff.  Formerly on Windows, only zippy.lines sayings that started in\r
+the first 32767 bytes of the file could ever be used.  This was issue\r
+#505 from the ToDo file.\r
+\r
+* 11/16/2003: The xboard man page and info files are now built from a\r
+common set of texinfo source files, and the xboard man page now covers\r
+cmail as well.  Formerly, ever since the texinfo file was first\r
+contributed to the project, it was separate from the man page and the\r
+two files had to be updated in parallel, making for a maintenance\r
+nightmare.  To make combining the files possible, I took the Perl\r
+script "texi2man" from the GNU Units project and added support for a\r
+larger subset of the texinfo markup language.  I then carefully\r
+compared the old man page and old texinfo file to make sure the latest\r
+and clearest words survived into the new combined texinfo file.  It\r
+would be great to merge in WinBoard's help file too, but that's a\r
+larger project.  It would have to be heavily conditionalized to\r
+deal with differences in features between XBoard and WinBoard.\r
+\r
+* 11/15/2003: Cleaned up and applied a small patch from Daniel\r
+Mehrmann, to stop overly long PVs in thinking output from causing a\r
+buffer overflow crash in backend.c.\r
+       \r
+* 11/5/2003: When a chess engine sends a "telluser" command (including\r
+the cases where "tellall" or "tellopponent" acts like telluser), the\r
+information now goes into a nonmodel popup that is automatically\r
+dismissed when the user clicks anywhere on the board.  This fix is\r
+more significant on WinBoard, where formerly you got a fully modal\r
+dialog that had to be dismissed by clicking on OK before anything else\r
+could happen.  The bug was issue #406 in the ToDo file.\r
+\r
+* 11/1/2003: Removed email addresses from this file to reduce spam\r
+load, as it gets linked to from the Web.\r
+\r
+* 11/1/2003: Updated READ_ME and winboard/READ_ME.txt.\r
+\r
+* Modified xboard and winboard makefiles to be able to build the\r
+project in the new combined directory structure.\r
+\r
+* Applied a small security fix to pxboard, from Martin Maeok.\r
+\r
+* Fixed a bug in the game list dialog.  The change in 4.2.6 to opening\r
+games in text mode (meant to avoid getting extra \r's into comments)\r
+caused a new bug in determining seek offsets when parsing a game file\r
+to form the game list.  Also, the change was incomplete; on some code\r
+paths games were still being opened in binary mode.  Thanks to Lenik\r
+Terenin for reporting the offset bug.  I've now gone back to always\r
+using binary mode when reading game files, and I've fixed the comment\r
+bug by adding code to remove \r's from parsed comments explicitly.  I\r
+still use text mode for writing game files so that games written by\r
+WinBoard will have Windows-style line endings.\r
+\r
+* Fix for minor bug in WinBoard installer.  If you chose a non-default\r
+destination directory, the default directory was still used for a\r
+couple of unimportant things, namely setting the App Paths registry\r
+keys (unused by WinBoard) and trying to copy the existing WinBoard.ini\r
+file to WinBoard.old.  I inherited this bug from the InstallShield 5\r
+sample template.  Thanks to "l.d." for noticing the incorrect keys.\r
+\r
+* Patch from Chris Priest: when two engines are being run through rsh,\r
+avoid reusing the same stderr port for both.  I'm not sure why this\r
+should be needed, but it's harmless, at least.\r
+\r
+* Bugfix: The kludge to deal with old engines that give an error\r
+message because they don't know the "st" command was too sloppy; it\r
+could hit on an "st" substring anywhere in an error message.  GNU\r
+Chess 4 is the only engine I know of where the kludge was needed, so I\r
+changed the kludge to match a longer, more GNU-specific string.\r
+\r
+* Changed the WinBoard self-extracting installer to choose a unique\r
+temporary subdirectory name within the Windows temp directory instead\r
+of always putting wb-setup directly in temp.  Besides being better\r
+practice, this avoids the need to deltree wb-setup first, which\r
+occasionally alarms someone who thinks that deltree is only used by\r
+trojans to delete all your files.  (Yes, I'm serious.)\r
+\r
+* Fixed a bug where FICS-style "wild/0" strings were not parsed as the\r
+proper wild type.  The "/" was not being skipped.\r
+\r
+* Fixed a WinBoard bug where temporary files created by game\r
+copy/paste were being created in the root directory of the current\r
+drive instead of the TMP directory and were not always deleted on exit.\r
+\r
+* Fixed a small bug in winboard.c's ErrorDialog() function.  Thanks to\r
+"Ron" (no last name given).  The bug might have caused a problem when\r
+pressing OK or Cancel in an error dialog when more than one error\r
+dialog was being displayed, but I'm not really sure.\r
+\r
+* Removed a hack that worked around a bug in very old versions of\r
+Crafty, where it would sometimes reply "illegal move" to a "."\r
+command.  The hack kept us from recognizing real illegal move messages\r
+in analyze mode from engines that don't respond to the "." command.\r
+Thanks to Fabien Letouzey for the report.\r
+\r
+* Fixed a bug in the xboard version of GetDelayedEvent.  It would\r
+return the most recently scheduled event even if it had already fired.\r
+This caused at least one visible error: in -ics -xreuse mode, starting\r
+the engine again and seeing another "feature done=1" would re-run the\r
+initialization code in InitBackEnd3, including the code that opens the\r
+connection to ICS.  The WinBoard version didn't have this bug.  Thanks\r
+to Bob Hyatt for the bug report.\r
+\r
+* The promotion popup for ICC wild 26 (giveaway) now includes King.\r
+Thanks to Fredrik Josefsson for the bug report.\r
+\r
+* The first game in a file (or being pasted from the clipboard) can\r
+now start with a bare move -- no PGN tags, no move number "1", etc.\r
+Suggested by Shane Harrelson.  One could imagine taking this farther\r
+and accepting something like "e4 e5 1/2-1/2 d4 d5" as two games, but\r
+I haven't done that.\r
+\r
+* Bug fix: xboard didn't really accept a paste of multiple games,\r
+contrary to what I wrote when adding the feature to WinBoard in\r
+4.2.4.  Now it works in both.\r
+\r
+* Fixed generic start/end of game messages to work on chess.net, where\r
+they put ratings in parens after the player names.\r
+\r
+* Updated config.sub and config.guess to newer versions from\r
+automake-1.4p5-2.  This makes configure work with MacOS X + X11.\r
+\r
+* Bugfix: when examining a game fragment on FICS where black plays\r
+first, don't show two "(0:00.000)" times on the initial "none" move.\r
+\r
+* If TestLegality is on and one of the engines makes an illegal move\r
+in TwoMachines mode, it forfeits immediately.  Formerly the game would\r
+get stuck at that point and the engine that made the illegal move\r
+would eventually lose on time.\r
+\r
+xboard/WinBoard 4.2.6 -- Fri Feb  1 22:26:31 PST 2002\r
+Tim Mann\r
+\r
+Another small bugfix release.\r
+\r
+* Put in a small change from Alexander Mai to allow xboard to build in\r
+an OS/2 EMX environment.\r
+\r
+* Fix WinBoard-only bug where editing a PGN file with comments would\r
+insert more \r characters before the \n after every Load/Save cycle.\r
+For some unknown reason we were reading the files in "rb" mode but\r
+writing them in "a" mode, so we kept the \r characters on reading and\r
+added an extra one on writing.  Fix: change the "rb" to "r".  Thanks\r
+to Joel (last name not given) for the bug report.\r
+\r
+* Put the arguments to rsh/remsh in the right order for better\r
+portability.  Thanks to Michael Kalisz.\r
+\r
+* FreezeUI is now implemented in WinBoard; it was previously only\r
+implemented in xboard.  This function prevents the user from entering\r
+moves or other commands while we are waiting for an engine to\r
+initialize itself.  Implementing it fixes a bug where the user could\r
+start a game (etc.) during feature negotiation.  One of the symptoms\r
+of this bug was that we could send "new" one or move moves *after* the\r
+first game started!\r
+\r
+* Fixed some handle leaks (WinBoard only), including a nasty one that\r
+leaked one handle per command sent to ICS.  Thanks to several folks\r
+who helped characterize the bug and tried to look for leaks.\r
+\r
+* We now install and look for the info file in ${prefix}/share/info\r
+instead of ${prefix}/info.  The latter is still the default in\r
+autoconf, but the former is currently used in Red Hat Linux and\r
+probably elsewhere.\r
+\r
+xboard/WinBoard 4.2.5 -- Sat Dec 15 11:42:51 PST 2001\r
+Tim Mann\r
+\r
+* Changed the bundled GNU Chess 5.02 in the WinBoard package to\r
+include a much smaller book and to use much less hash table space by\r
+default (8 MB transposition table, 0.5 MB pawn evaluation table).  The\r
+large book included with 4.2.4 made the WinBoard download too big for\r
+some people, and the default hash tables were larger than the\r
+available physical memory on some people's computers. I built the\r
+small book by running Crafty's "small.zip" book line collection\r
+through a Perl script that makes it look enough like real PGN games\r
+that the GNU Chess book builder will accept it.  The script and some\r
+minor patches to GNU Chess 5 are available in the WinBoard source\r
+distribution and at http://www.tim-mann.org/gnuchess.html.\r
+\r
+* Fixed a bug in the code that deals with engines that complain that\r
+"time" and "otim" are illegal moves.  This was a new bug in 4.2.4.\r
+\r
+* Revamped the implementation of ToStart in analysis mode.  Formerly\r
+there was some ill-conceived code that would try to get back to the\r
+start of the game by doing a "new" command (and all the followup\r
+commands that requires) while remaining in analysis mode.  This is\r
+problematic for engine authors to support, though it works with\r
+Crafty.  This code was trying to solve the problem of ToStart being\r
+slow because the engine would try to start an analysis after every\r
+"undo" command all the way back to the start.  But ToEnd already had a\r
+much better solution to this problem, and now ToStart does the same\r
+thing: we exit from analysis mode and enter force mode instead,\r
+make/unmake moves to get to the end/start of the game, and then\r
+reenter analysis mode.\r
+\r
+* Formerly, Zippy could try to start playing a game before the engine\r
+was initialized; that is, during the initial timeout for protover 1\r
+engines, or before "feature done=1" for protover 2 engines.  We now\r
+wait until the engine is initialized before connecting to ICS, which\r
+fixes this in the common case.  If you turn off engine reuse for\r
+multiple games (that is, if you give the -xreuse option), there could\r
+still be problems; see item 503 in the ToDo file.  Thanks to Dieter\r
+Buerssner for the bug report.\r
+\r
+* Bugfix: All WinBoard versions since the merge with WinBoard Plus\r
+(but not xboard) have had a bug in changing the PeriodicUpdates,\r
+PonderNextMove, and ShowThinking options from the menu.  The bug\r
+mostly just caused changing these options during a game to not take\r
+effect until after the next reset.  For TwoMachines games, though,\r
+changing PonderNextMove just before the game would take effect\r
+immediately for the second engine but not until the next game for the\r
+first engine.  Thanks to Koundinya Veluri for the bug report.\r
+\r
+* Bugfix: In 4.2.4, we sometimes got confused when trying to leave and\r
+reenter analyze mode.  One symptom was that Analyze File did not work.\r
+Thanks to Igor Syry for the bug report.\r
+\r
+xboard/WinBoard 4.2.4 -- Sun Dec  9 14:56:30 PST 2001\r
+Tim Mann\r
+       \r
+* WinBoard now includes GNU Chess 5.02 in place of GNU Chess 5.00.\r
+\r
+* WinBoard's PasteGameFromClipboard will now handle a paste with\r
+multiple games in it, popping up the game list dialog.  xboard\r
+already did this.  Suggested by Robert Gerstman.\r
+\r
+* We now use the "clearboard" command on ICC where appropriate.\r
+\r
+* Bugfix: don't generate a bogus "variant normal" command to an engine\r
+for the loadable ICC wild types that we internally flag as\r
+VariantLoadable.  Also clarified the message that Zippy sends when\r
+declining such wild games -- it can't deal with the possibility of\r
+loading an arbitrary position into the game.  Thanks to Dieter\r
+Buerssner for reporting the problem.  It would be nice to be able to\r
+actually play these wild types some day; presumably there would have\r
+to be an option to either send "loadgame" with a specified position,\r
+or to deal with an opponent sending it.\r
+\r
+* If we get a holdings message from ICS when we thought we were\r
+playing normal chess, we now try asking for a move list so that we can\r
+find out from the header what's really happening.  Formerly we guessed\r
+bughouse in this case.  Response to a comment from Gian-Carlo\r
+Pascutto.\r
+\r
+* Fixed two longstanding bugs in the clock code.  These affected only\r
+play between a user and a local engine, or between two local engines,\r
+not ICS play.  (1) The last fractional second used by a player before\r
+moving and virtually pushing his clock was being charged to his\r
+opponent instead of to him.  (2) The time and otim commands were being\r
+sent to an engine before the (buggy) fractional second update was\r
+done.  The second bug was pretty harmless in itself, but the first one\r
+was serious.  Many thanks to Peter Rosendahl for carefully diagnosing\r
+and reporting these bugs!\r
+\r
+* Changed WinBoard timestamp key.  Nothing is changed other than the\r
+key and a recompilation.  ICC may phase out the old key soon; if they\r
+do, you'll need to use the timestamp.exe from WinBoard 4.2.4 or later\r
+to connect to chessclub.com.\r
+\r
+* Fixed an xboard-only bug where most dialogs would not take keyboard\r
+input unless the mouse was actually over the dialog, even if the\r
+dialog window had focus.  Thanks to Jason Varsoke for the bug report.\r
+\r
+* Bugfix; Remember to send time and otim commands to engine before\r
+sending playother.  Thanks to Bob Hyatt for the bug report.  Also\r
+fixed a bug where time and otim were sometimes sent even with feature\r
+time=0.\r
+\r
+* Added small patches from Wilkin Ng that are meant to fix a crash in\r
+CopyGameToClipboard and a "can't unlock clipboard memory" error in\r
+PasteTextFromClipboard, under Windows 2000.\r
+\r
+* Changed cygwin.mak to not use -mno-cygwin.  In other words, it now\r
+uses cygwin1.dll instead of the mingw libraries.  This works around\r
+bugs in fileno() and stat() that I encountered in mingw.  (fileno\r
+seems to always return 0.  stat fails because the library routine uses\r
+a different definition of struct stat than the header files provide.)\r
+Thanks to Robert Gerstman for reporting the symptoms these bugs caused\r
+when WinBoard was compiled with Cygwin.\r
+\r
+* Added -showButtonBar option.  This lets you delete the << < P > >>\r
+buttons and thus widen the message widget a bit.\r
+\r
+* Added code to address a very obscure bug.  If an engine dies and\r
+needs to be restarted while in one of the analyze modes, it was not\r
+getting put back into analyze mode.  This bug should not really ever\r
+have gotten tickled unless reuse was turned off and the engine sends\r
+game end commands (such as 1-0) when a game ends by rule while in\r
+analyze mode.  The next version of the protocol spec will say that\r
+engines should not do that, but version 2 and earlier didn't address\r
+the issue.\r
+\r
+* We now use the FICS "iset ms 1" feature to get times in ms instead\r
+of seconds.  Thanks to DAV for email telling me about this feature.\r
+\r
+* Changed clock display to show tenths of seconds for 9.9 seconds and\r
+less, instead of 0.9 seconds and less as before.\r
+\r
+* It has been discovered that Zippy can play simuls on ICC (but not on\r
+FICS).  If you arrange for Zippy to send the ICC command "simulize" in\r
+the -zippyGameStart string, it will accept additional games while\r
+playing.  Zippy will use the same engine for every game, so whenever\r
+it switches opponents, the engine's state will be reset with the "new"\r
+command.  This will of course weaken its play, so don't enable simuls\r
+if you want your engine to have the highest possible rating.  Zippy\r
+was never designed to work with simuls; it just works by accident, and\r
+it hasn't been tested much.  So please report any bugs you notice, but\r
+don't expect them to be fixed rapidly.  Thanks to Paul McGuire for\r
+noticing that this works.\r
+       \r
+* Bugfix: Suppress the direct command to engine popup if there is no\r
+engine.  In WinBoard this case used to cause a crash.  Thanks to\r
+"Dargon" for the bug report.\r
+\r
+* Bugfix: formerly we did part of the engine initialization for the\r
+very first game too soon, before feature negotiation.  One result of\r
+this is that engines would never get the "ics" command for the first\r
+game.\r
+\r
+* Lengthened timeout to detect protocol version 1 chess engines to 10\r
+seconds.  This should reduce problems with protocol version 2 engines\r
+that are slow to initialize missing the timeout and not getting a\r
+chance to send their feature commands before the first game starts.\r
+\r
+* Klaus Friedel says that adding a short sleep to WinBoard after\r
+starting a new chess engine solves a problem that occurs under Windows\r
+2000, in which engines sometimes don't see the initial command(s) from\r
+WinBoard and hang.  I don't understand how that can happen, but the\r
+sleep is harmless, so I've put it in.  Others have also reported what\r
+may be the same problem, so hopefully this will fix it for them too.\r
+\r
+* Bugfix: editing the Result field in EditTags will no longer cause a\r
+later crash.  Thanks to DAV for a clear bug report that let me\r
+reproduce the problem.\r
+\r
+* ICC wild 28 is now recognized as shatranj, but it is not supported.\r
+You might be able to play it by turning off Test Legality.\r
+\r
+* Formerly we would always turn off "feature time" if the engine\r
+printed an error message with the string "time" or "otim" in it; now\r
+we do that only if the message comes before the engine makes its first\r
+move.  This change is useful because some engines spew a lot of bogus\r
+error messages about commands they don't fully parse, so something\r
+like "result 0-1 {White lost on time}" could generate such a message.\r
+Engines shouldn't do that, but if they do, mysteriously turning off\r
+"feature time" is not a good way to react.\r
+\r
+* Fixed an infrequently occurring Zippy bug: formerly, resuming from\r
+adjournment by position (that is, with GetMoveList turned off) or\r
+starting/resuming a wild game (nonstandard starting position) would\r
+try to set up the position without putting the engine into force mode\r
+first.  That was probably tolerated by most engines, but if the\r
+position was black-to-play and the engine hadn't set feature\r
+setboard=1, then the fake "a2a3" move (which we use as a kludge to get\r
+black to be on move before sending the edit command) would appear to\r
+be a real move, and the engine might reply to it!  This bug could also\r
+be seen when trying to use Zippy to play a simul -- something that\r
+Zippy was never designed to support, but which seems to mostly work\r
+anyway.  Thanks to Paul McGuire for sending a WinBoard.debug file that\r
+showed the bug occurring.  Some other cases of resuming adjournments\r
+or starting games from nonstandard positions may have been broken too;\r
+I think I've straightened out the problems.\r
+\r
+* Agreeing to a draw in the human vs. local engine case formerly did\r
+not work if the human offered first; now it does.  A human's\r
+unsolicited offer is considered valid until he makes another move.\r
+Thanks to Bruce Moreland for the bug report.\r
+\r
+* Bugfix: We used to look for just "fr" in Event tags or strings from\r
+ICSes to recognize Fischer Random games.  This caused a lot of false\r
+matches.  Now we look for "wild/fr" instead, which is what FICS uses.\r
+\r
+* Bugfix: Clicking on a move in the MoveList window only updated the\r
+displayed position; if a chess engine was active, its state was not\r
+updated.  Thanks to Alejandro Dubrovsky for the bug report.\r
+       \r
+* Bugfix: The "resign" command from engine to xboard formerly did not\r
+work in ICS (Zippy) mode.\r
+\r
+* Bugfix: Formerly we would register a garbage premove if the user\r
+clicked on a piece, then clicked on an edge or outside the board.  Now\r
+such an errant click is ignored.\r
+\r
+* Bugfix: GameEnds would send "exit" to an engine in analyze mode even\r
+if we did not actually want to leave analyze mode.\r
+\r
+* Bugfix: "feature pause" was being rejected.  We don't currently use\r
+it, but that is no reason to reject it.  Thanks to Gian-Carlo Pascutto\r
+for the bug report.\r
+\r
+* Bugfix: when "partner" needed to be sent both to ICS and the engine,\r
+Zippy was erroneously sending the ICS prefix character to the engine\r
+too.  Thanks to Gian-Carlo Pascutto for the bug report.\r
+\r
+* Zippy now declines challenges when the engine is not yet ready to\r
+play again, instead of ignoring them.  This is needed so that the\r
+server will let the opponent repeat the challenge.  It might be better\r
+to remember such challenges and accept them when the engine is ready,\r
+but that would be a bit more complicated to implement.\r
+\r
+* Bugfix: Zippy's emotes didn't work on FICS because there, "i" is a\r
+built-in alias for "it", not a real command.  So sending "$i foo" gave\r
+an error message instead of doing "it foo".  We now leave out the\r
+alias-suppressing prefix for emotes.\r
+\r
+xboard/WinBoard 4.2.3 -- Mon Feb 19 19:55:05 PST 2001\r
+Tim Mann\r
+\r
+* Bugfix: The error message "Variant X not supported by gnuchessx"\r
+formerly could pop up even in -ncp mode.\r
+\r
+* Fixed an xboard bug in premove highlighting.  If you had\r
+HighlightLastMove turned on, premoves got highlighted in\r
+highlightSquareColor (yellow) instead of premoveHighlightColor (red).\r
+\r
+* Modified premove again.  Now we are back to displaying the move\r
+locally immediately after sending it to the server, as in versions\r
+prior to 4.2.1.  This is good because it lets you register your next\r
+premove sooner.  As a better fix to the problem that the change in\r
+4.2.1 had been trying to address, we now suppress animating the\r
+opponent's move if you have a premove reply pending.  However, it's\r
+probably still a good idea for you to turn off AnimateMoves entirely\r
+if you are trying to play extremely fast games.\r
+       \r
+* Removed an erroneous patch that left zombie chess engines around\r
+when both sigterm and reuse were turned off.  (Bug was in xboard only,\r
+not winboard.)\r
+\r
+* Bugfix: loading a game with autostepping did not work for games with\r
+PGN result "*" (unfinished).  This bug was introduced in 4.1.0, caused\r
+by some outdated code that was supposed to leave you in EditGame mode\r
+after loading an unfinished game.  I fixed this, and also changed it\r
+to leave you in EditGame mode after loading *any* game, but without\r
+changing the tags to say it's an edited game.  It's not really clear\r
+whether that is the best thing is to do here -- ideally, perhaps, the\r
+tags should change to say "edited game" if you actually make any\r
+changes, but that is harder to make work.\r
+\r
+xboard/WinBoard 4.2.2 -- Tue Feb  6 20:00:00 PST 2001\r
+Tim Mann\r
+\r
+* Fixed a problem introduced in 4.2.1.  In -zippyPlay mode, 4.2.1\r
+started sending the initString immediately after the old game ended,\r
+but then when the next game started, it would still send "force" and\r
+another initString.  Another problem was that the first initString put\r
+the engine out of sync with the displayed board position, though that\r
+might not usually have been noticeable.  This is now changed to do a\r
+full Reset at the end of the previous game, and avoid doing a Reset at\r
+the start of a new game if we are still in BeginningOfGame mode.\r
+\r
+* Fixed some limitations in -zippyPlay mode.  The engine was not being\r
+fed the moves or history of games that were displayed but not being\r
+played, so it would get confused if you tried to do something like\r
+examine a game, then enter EditGame mode from somewhere in the middle\r
+of the game.\r
+\r
+* Made a small change so that cygwin can compile xboard for Windows\r
+(an X server is required to run it).  Thanks to Volker Zell.  Most\r
+people would probably prefer to run WinBoard on Windows, however; note\r
+that cygwin could already compile WinBoard.\r
+\r
+* Added some missing documentation to engine-intf.html: It is okay to\r
+send "feature done=0" even before you receive the xboard and protover\r
+commands, if this is needed to give your engine enough time to\r
+initialize.  See engine-intf.html for more discussion.\r
+\r
+* Bugfix: "feature done=0" did not work for the second engine; now it does.\r
+\r
+xboard/WinBoard 4.2.1 -- Sat Feb  3 19:52:26 PST 2001\r
+Tim Mann\r
+\r
+* Bugfix: in Zippy mode with feature san=1, the elapsed time was being\r
+sent to the engine after the SAN move; for example, "e4 (0:01)" was\r
+sent instead of just "e4".\r
+\r
+* It seems that scroll wheel mice with incompletely installed software\r
+(under Windows 95, at least) can send repeated middle button up events\r
+when the wheel is turned.  Moved QuickPaste from middle button up to\r
+middle button down to avoid problems with this.\r
+\r
+* A premove is now sent *before* the opponent's move that it replies\r
+to is animated.  The premove itself is no longer displayed (or\r
+animated) when sent; instead, it is displayed when the chess server\r
+echoes it back as a board update.\r
+\r
+* Bug fix: in -xreuse mode, xboard was only sending command line\r
+arguments to the engine the first time it was started.  (WinBoard\r
+didn't have this bug.)\r
+\r
+* In -zippyPlay mode, we now initialize the chess engine for a new\r
+game immediately after the old game ends.  (In -xreuse mode, this\r
+means starting a new engine process; in the default -reuse mode, it\r
+just means sending "new".)  If the engine supports ping, we don't\r
+accept challenges until the "new" has finished.  This should help\r
+avoid losing time (re)initializing the engine after the game starts.\r
+\r
+* We now handle the new FICS field in style 12 that says whether the\r
+clocks are ticking.\r
+\r
+* whiteFlag and blackFlag are now reset whenever an ICS board image\r
+arrives, giving autoflag a fresh chance to work.\r
+\r
+* Suppressed "geometry error" debug messages unless -debug flag is given.\r
+\r
+* Bugfix: avoid core dump on Solaris with -debug flag, caused by\r
+passing NULL to a %s format in GameEnds.\r
+\r
+* Added -firstProtocolVersion and -secondProtocolVersion.  This will\r
+allow use of extremely broken engines that hang or die when given the\r
+"protover 2" command.  It should be rarely if ever needed.\r
+\r
+* Zippy now strips highlights from player names in the Creating\r
+message; previously the ratings would not be extracted from this\r
+message properly if you had set the highlight variable.\r
+\r
+* Bug fix: Zippy with -zp but not -zt used to be fooled by false\r
+partner tells inside channel tells; e.g.: \r
+Garf(24): Garf (your partner) tells you: sit\r
+\r
+* Bug fix: when an engine reported its name with the new "feature\r
+myname=" command, we had been putting just that name into the window\r
+title even when in TwoMachines mode.\r
+\r
+* By default, WinBoard no longer uses the new feature introduced in\r
+4.2.0beta of keeping the ICS menu, ICS server list, and lists of chess\r
+engine command lines in separate files; instead, the lists are back in\r
+the winboard.ini file.  This gets rid of some problems where the\r
+separate files could not be opened because the working directory was\r
+not set to WinBoard's installation directory.\r
+\r
+* WinBoard command lines and ini files now have another optional\r
+syntax for quoting an option value.  All characters within { } curly\r
+braces are interpreted literally except for '}' itself.  SaveSettings\r
+now uses this syntax for string values that contain a backslash or\r
+newline and do not contain a '}'.  This should address the problem\r
+that the separate .ini files had been meant to fix; engine command\r
+line lists can now be written without \-escapes.\r
+       \r
+* Fixed three bugs in relaying moves between engines in TwoMachines\r
+mode: an engine would be sent SAN if the *other* engine had set\r
+feature san=1, a relayed SAN move did not end with a newline, and\r
+feature usermove was not implemented for relayed moves.\r
+\r
+* Fixed several bugs in exiting: File/Exit would sometimes hang;\r
+timestamp/timeseal would not get killed off; an engine crash would\r
+cause error messages to be printed recursively until stack overflow.\r
+\r
+* Fixed a bug in the code to detect which ICS is in use and adapt to\r
+it; the chess.net case was broken.\r
+\r
+* Removed the leading alias-suppression character when sending a move\r
+to ICS, because it seemed to break accuclock on chess.net.\r
+\r
+* Fixed a bug where a FICS prompt like "10:01_fics%" would be matched\r
+as finger note number 10, causing a problem detecting when the user is\r
+logged in.\r
+\r
+* Added tellicsnoalias command to protocol.\r
+\r
+* Changed st command in protocol back to old behavior.\r
+\r
+* Added done=0 feature to protocol, to lengthen initial timeout.\r
+\r
+* Added missing -colorSeek command line option to xboard.  (Was\r
+present in WinBoard.)\r
+\r
+* Bug fix: setting feature reuse=0 was not working.\r
+\r
+xboard/WinBoard 4.2.0beta -- Sat Dec 16 16:34:56 PST 2000\r
+Tim Mann\r
+\r
+* Setting -searchTime no longer turns off -clockMode.  Note that when\r
+-searchTime is set, some engines may search for the lesser of\r
+searchTime and the amount of time their normal clock management would\r
+dictate, while others will disable their normal clock management and\r
+always search for exactly searchTime.\r
+\r
+* Fixed WinBoard bug where on Windows 2000 (and maybe Windows 98) the\r
+ICS Interaction window would scroll back to the top whenever it filled\r
+to capacity and WinBoard trimmed some text off the top.\r
+\r
+* Changed xboard dragging so that the center of the dragged piece is\r
+forced to be over the mouse cursor.  (WinBoard dragging already worked\r
+that way.)  This should avoid confusing cases when you start a drag\r
+with the mouse near the edge of a square -- formerly most or all of\r
+the piece could be over one square but the mouse cursor over another.\r
+Suggested by DAV.\r
+\r
+* Added move list window for xboard.  Code contributed by Manuel\r
+Hoelss and re-hacked a bit by me.  Performance of this window is poor,\r
+because the implementation regenerates the entire window contents\r
+whenever anything changes.  It's hard to avoid this when using the\r
+Athena List widget, though we could be a little smarter and notice\r
+when the current move number has changed but the move list has not.\r
+There are also several drawing problems caused by bugs in the Athena\r
+Form and List widgets.  The window should not really allow a\r
+horizontal scroll bar, but the bugs are much worse if I turn it off.\r
+In both Xaw and Xaw3d, the List widget tries to resize itself when\r
+XawListChange is called, even if you tell it not to; and what's worse,\r
+if the widget cannot resize itself to be large enough to avoid\r
+clipping any of the list item, it does not change the list!  Arrgh.\r
+On top of that, the Xaw Form widget is very buggy in XFree86 4.0.1\r
+(X11R6.4.3).\r
+\r
+* The OK button in the WinBoard startup dialog is now simply disabled\r
+if none of the radio buttons is selected, instead of bringing up an\r
+error dialog.  Suggested by Ted Milbaugh.\r
+       \r
+* Used ping to address the worst of the race conditions in the\r
+protocol.  Now if an engine supports ping, we ping it after sending\r
+the "new" command and after trying to place it in force mode at the\r
+end of a game.  When a ping has been sent and the corresponding pong\r
+has not yet come back, we (1) ignore or undo any moves the engine\r
+sends, (2) ignore game end messages (such as "offer draw", etc.) from\r
+the engine, (3) ignore thinking output from the engine, (4) delay\r
+starting the next game if in -matchGames mode, (5) in -zippyPlay mode,\r
+respond to challenges with a polite message to try again soon instead\r
+of accepting them.  There are a few more things that should be done\r
+(and item 5 might not be quite what we want), but it's hard to fit\r
+them all into the existing code.\r
+       \r
+* Patched the version of GNU Chess 5.00 included with WinBoard to\r
+support protover, feature, setboard, and ping, and to fix some minor\r
+bugs.  See gnu500+.patch.\r
+\r
+* Changed the GNU Chess 4 kludges for missing "st" and "sd" commands\r
+to be invoked only if the engine gives an error message for "st" or\r
+"sd", and to always use protocol commands instead of engine\r
+command-line options.  See "Idioms" in engine-intf.html.\r
+\r
+* Added new protocol command "protover 2" to tell the engine what\r
+version of the protocol is in use.  Version 2 is still compatible with\r
+old engines; see engine-intf.html.\r
+\r
+* Add new protocol command "feature ..."  The engine can send this in\r
+response to the protover command command, to say what extended\r
+protocol features it would like to enable, etc.  xboard responds\r
+"accepted F" or "rejected F" for each feature F that is set.  See\r
+engine-intf.html.\r
+\r
+* Added new protocol command "setboard <fen>".  This is an alternative\r
+to "edit", used only if the engine says "feature setboard=1".\r
+\r
+* Added new protocol command "ping <msg>".  The engine is supposed to\r
+respond "pong <msg>".  This gives us a tool to fix some race\r
+conditions in the protocol, but it is not used to the fullest yet.\r
+\r
+* Added new protocol command "tellopponent".  This will do a "say" if\r
+you're on a chess server in Zippy mode, or pop up an information\r
+dialog otherwise.\r
+\r
+* Added new protocol command "tellall".  This will do a "kibitz" if\r
+you're on a chess server in Zippy mode, or pop up an information\r
+dialog otherwise.\r
+\r
+* Added new protocol command "tellothers".  This will do a "whisper" if\r
+you're on a chess server in Zippy mode, or do nothing otherwise.\r
+\r
+* Changed the WinBoard /icsNames, /icsMenu, /firstChessProgramNames,\r
+and /secondChessProgramNames options to accept a filename preceded by\r
+"@", meaning to find the value in the file.  Changed the defaults to\r
+use this feature, with filenames icsnames.ini, icsmenu.ini, fcp.ini,\r
+and scp.ini.  This should make it easier for users to edit the values,\r
+since one less level of quoting is needed, and each value is in its\r
+own file, not mixed into winboard.ini.  Those who upgrade from an\r
+older winboard version and already have a winboard.ini file will not\r
+automatically have these values moved to a file; that has to be done\r
+by hand if desired.\r
+\r
+* We now strip .exe from engine names for "name" command, tags, etc.\r
+\r
+* Allowed WinBoard input widget to hold more than one line.  You can get\r
+a newline into the widget with copy/paste or with Ctrl+Enter.\r
+\r
+* Fixed an xboard bug where the [P] button would appear in the\r
+opposite highlight state from what it should be after being pressed.\r
+\r
+* We now use the "/" or "$" alias suppression feature on the chess\r
+servers, to avoid problems if the user inadvertently aliases a\r
+needed command to something else.\r
+\r
+* Changed the method used to deiconize xboard in AutoRaise and cmail.\r
+This may fix bugs under some window managers where after\r
+deiconization, the board window was mapped but nothing was drawn\r
+inside.\r
+\r
+* Preliminary, partial support for playing several chess variants\r
+against a local engine or editing variant games.  The -variant option\r
+must be given on the command line or WinBoard startup dialog; there is\r
+no menu.  The current variant is not displayed (except in the\r
+Tags/EditTags window).  Many variants will not work quite right even\r
+if the engine supports them; see item 326 in the ToDo file for\r
+details.\r
+\r
+* Added a workaround to detect the variant type when examining a\r
+scratch wild game on an ICS.\r
+\r
+* Fixed two cases where "variant" command should be sent to the engine\r
+when necessary but was not: loading a game from a file and restarting\r
+a dead engine.  Thanks to Gian-Carlo Pascutto.\r
+\r
+* Added missing support for FICS games that start from a bsetup position\r
+with Black moving first.\r
+\r
+* Fixed a bug in loading a file from the game list window while in\r
+Analysis or AnalyzeFile mode.  This now leaves us in AnalyzeFile\r
+mode, analyzing the new file.\r
+\r
+* Fixed a bug in loading games with a comment before the first move.\r
+\r
+* Fixed a bug in handling LoadGame (or -lgf) with -td 0.\r
+\r
+* Added a command line option to select an initial minor mode from the\r
+Mode menu.  This should satisfy requests from a couple of users with\r
+special applications.\r
+\r
+* Fixed a problem where some things in WinBoard's General Options\r
+dialog box were grayed out at the wrong time.\r
+\r
+* We look for a few messages from the chess engine pipe that are\r
+intended to catch problems starting an engine via rsh, such as "No\r
+such file".  Moved code so that these strings won't match until other\r
+protocol messages have been looked for, and documented the messages in\r
+engine-intf.html.\r
+\r
+* Fixed the WinBoard bug that sometimes made the console input box\r
+white-on-white even when not in password-entry mode.\r
+\r
+* Small changes to WinBoard to be compilable with the latest Cygwin\r
+net release (as of 10-16-2000).  Thanks to Mark Schoenberg.\r
+\r
+* Recompiled GNU Chess 5.0 for WinBoard with the latest Cygwin net\r
+release (as of 10-16-2000).  Also rebuilt the book just to be sure,\r
+since I had one bug report about it.  It came out identical and seems\r
+to work fine.\r
+\r
+* Added messages for some common InstallShield errors instead of just\r
+printing InstallShield's stupid error code numbers.\r
+\r
+* Added -firstComputerString and -secondComputerString, allowing you\r
+to suppress or change the command that is sent to a chess engine when\r
+its opponent is another computer.\r
+\r
+* Added "configure --with-Xaw3d" to allow use of Xaw3d widgets instead\r
+of Xaw widgets in xboard.  Thanks to Johnny C. Lam of the NetBSD\r
+project.  I've left Xaw as the default because Xaw3d is too ugly.\r
+       \r
+* The version of the Xaw Form widget released in XFree86 4.0.1\r
+(X11R6.4.3) has a bug that causes xboard to display the button bar\r
+on top of the message widget.  I've reported the bug and have\r
+installed a kludge workaround into xboard.\r
+\r
+xboard/WinBoard 4.1.0 -- Sun Sep 17 17:30:14 PDT 2000\r
+Tim Mann\r
+\r
+* Merged Winboard Plus 4.0.8 from Mark Williams into xboard\r
+  source pool.  Status of Winboard Plus features in xboard:\r
+\r
+  - White pieces now have borders, but the implementation is\r
+    completely different from WinBoard's; see below.\r
+\r
+  - Options menu not changed, probably won't be.\r
+\r
+  - Copy&paste support working, using Mark's changes to backend.c, Ben\r
+    Nye's changes to xboard.c for FEN positions, and some code of my\r
+    own in xboard.c for PGN games.\r
+\r
+  - Premove hooked up and working.  No pre-first-move, though.\r
+\r
+  - ICS Alarm hooked up and working.\r
+\r
+  - Auto-flip working.\r
+\r
+  - PGN Training mode hooked up and working.\r
+\r
+  - Improved menu item enable/disable working.\r
+\r
+  - Improved >> button working.\r
+\r
+  - Auto activate board working.  I changed this to be optional; you\r
+    might not always want it, especially in Zippy mode.\r
+\r
+  - Blindfold working.\r
+\r
+  - Documentation updated.\r
+\r
+* Fixed more colorization bugs.  Commands like "message foo tells you:\r
+xxx" and "tell 33 tells you: xxx" will no longer generate bogus\r
+colorization.\r
+\r
+* Added low-tech sound support to xboard, by invoking an external\r
+program on a filename for each sound to be played.\r
+       \r
+* ICC wild 27 is now recognized as VariantAtomic, and it sets the\r
+"ignore check" flag, but is not otherwise supported.\r
+\r
+* Converted the piece bitmaps from .bm to .xpm for use with xboard's\r
+xpm support.  (An .xim version was not created.)  Wrote a shell script\r
+using ImageMagick to do the conversion and to bucket fill from\r
+coordinate 0,0 with the background color.  Used xpaint by hand to\r
+clean up a few pieces where background color "leaked" into the inside\r
+or didn't flow all the way around the outside, then a sed script to\r
+fix up color names and bitmap names in the xpaint output.  If any more\r
+sizes are added later, they should be straightforward to convert with\r
+reference to the existing scripts.  With this conversion, not only do\r
+the white pieces now have dark borders, but (unlike with WinBoard) the\r
+light details on the black pieces are opaque.\r
+\r
+* If the XPM library is found when building xboard, the new xpm pieces\r
+are compiled in as the default.  External bitmap (or xpm) pieces can\r
+still be used by giving the -bitmapDirectory (or -xpmDirectory)\r
+option.  If the XPM library is not found, the old bitmap pieces are\r
+the default.  In this case external bitmap (or xim) pieces can be used\r
+by giving the -bitmapDirectory (or -xpmDirectory) option.  There is no\r
+way to compile in xim pieces.\r
+\r
+Winboard Plus 4.0.8 -- Sat Aug 5 15:51 PDT 2000 \r
+Mark Williams\r
+\r
+* Bugfix release.\r
+\r
+* Main menu now visible in Win NT.  Thanks to Microsoft for creating a \r
+compiler which auto-mutilates the WinBoard.rc file so that the menu is\r
+displayed under Win 98 but not Win NT.  I fixed the problem by hand editing the\r
+.rc file.  Sigh.\r
+\r
+* "Reset game" now works properly when invoked from Analysis mode when two\r
+engines are present. Correction of bug introduced in Winboard Plus. Thanks to\r
+Mogens Larsen for reporting the bug.\r
+\r
+* Pasting a FEN position with Black to move now works in all modes.\r
+Thanks to Mogens Larsen for reporting the bug.\r
+\r
+* Added gnuchess.dat to the distribution and a couple of text files that were\r
+missing in 4.0.7.\r
+\r
+*** Merged in the following changes from Tim Mann:\r
+\r
+* Bugfix: Highlights would sometimes not be taken down, at least in\r
+xboard.  The problem is that SetHighlight works in chess coordinates,\r
+not view coordinates, so if flipView has been toggled since the\r
+highlight was put up, it gets taken down from the wrong square.  Fixed\r
+by being careful to call ClearHighlights before toggling flipView, not\r
+after.  Ugh.\r
+\r
+* Bugfix: HighlightLastMove would sometimes highlight square a1 after\r
+a FICS "tomove black" command.\r
+\r
+* Bugfix: a move list with initial position that has black to play was\r
+not being handled correctly.\r
+\r
+* Removed "decline abort" and "decline adjourn" commands from Zippy.\r
+The syntax is changing on FICS, and Zippy really doesn't have to\r
+explicitly decline the requests anyway; it's sufficient to not accept\r
+them.\r
+\r
+* ICC wild 26 is now recognized as VariantSuicide (the FICS name; ICC\r
+calls it "giveaway").\r
+\r
+* Bugfix: PGN games with black to move in the initial position weren't\r
+being legality checked correctly.  I think this was introduced in\r
+4.0.6 when I fixed a different PGN bug.  Thanks to Mark Williams for\r
+spotting the bug and suggesting a fix.\r
+       \r
+* Bugfix: the initial "name(" of a kibitz wasn't being colorized.\r
+\r
+Winboard Plus 4.0.7 -- Thu May 12 17:57 PDT 2000 \r
+Mark Williams\r
+\r
+* New white pieces with black borders.\r
+\r
+* Major overhaul to Options menu. New dialogs for setting General Options,\r
+  Board Options, ICS Options, Sounds, Fonts, Colors.\r
+\r
+* Clipboard support for PGN game scores and FEN positions.\r
+\r
+* Optional ICS Premove with user-specified first moves for White and Black.\r
+\r
+* New sound events: ICS Win, ICS Loss, ICS Draw, ICS Unfinished, ICS Alarm.\r
+\r
+* New auto-flip option when playing against a chess program.\r
+\r
+* Added PGN Training mode.\r
+\r
+* Certain menu options now disabled while program is thinking.\r
+\r
+* ">>" button now always goes to the end of the game.\r
+\r
+* In ICS mode, the board is automatically activated at the start of a\r
+new game.\r
+\r
+4.0.7 -- Sun Mar  5 17:17:49 PST 2000  Tim Mann\r
+\r
+* Fixed a nasty bug in parsing ICS game histories that was introduced\r
+in 4.0.6.\r
+       \r
+4.0.6 -- Fri Mar  3 16:20:11 PST 2000  Tim Mann\r
+\r
+* Fixed bugs in Zippy's code for responding to messages sent with the\r
+ICS "message" command.\r
+       \r
+* Fixed bugs where xboard could still create dialogs partially off the\r
+top of the screen.  Fixed unwanted interactions between initial sizes\r
+and positions of various unrelated xboard dialogs.  Deleted\r
+borderXoffset and borderYoffset resources.\r
+\r
+* Fixed restoring the xterm name on exit to work in more cases.\r
+       \r
+* Small fix to the WinBoard self-extracting installer: when it starts\r
+up, it now always deletes any old wb-setup directory left over from a\r
+previous installation.  Formerly this worked only on Windows 95/98, so\r
+on NT the self-extractor would sometimes stop and ask the user whether\r
+it was OK to overwrite the old wb-setup files.\r
+\r
+* Modified WinBoard to be compilable with the free Cygwin tools\r
+available from http://sourceware.cygnus.com/cygwin/.  Based on work by\r
+Mark Schoenberg.  (His mods were enough to get WinBoard through the\r
+compiler, but a few things were broken along the way, so I reworked them.)\r
+       \r
+* Merged changes from Don Fong to make WinBoard compilable with\r
+Borland C++ 4.5.  I do not have Borland C++ and am unable to test with\r
+it, but I did make sure the changes don't stop it working with MSVC++\r
+5.0 and Cygwin.\r
+\r
+* Forbade entering TwoMachines mode from MachineWhite or MachineBlack\r
+mode when machine is on move.  This used to confuse the engine and\r
+cause problems, because when we try to get the engine to stop, it\r
+might make a move first, and it might not do that immediately.\r
+       \r
+* Variant classification now deals with new ICC wild 25, classifying\r
+it as "3check".  Also, we are now conservative about new wild numbers\r
+we don't know about, classifying them as "unknown" instead of\r
+"normal".\r
+\r
+* Replaced bad GNU Chess 5.00 book in WinBoard distribution with a\r
+correct one.  1.e4 now no longer takes GNU Chess 5.00 out of book!\r
+Thanks to Pete Galati.\r
+\r
+* Made move parser accept and ignore nonstandard ep suffix on PGN moves,\r
+e.g., "exf6ep" or "exf6e.p."\r
+\r
+* Fixed bugs in parsing PGN files starting with no move number, or\r
+with a move number other than "1." (including "1...").  Thanks to\r
+Michael Soulier and Stefan Zipproth for example PGN files\r
+demonstrating the bugs.\r
+       \r
+* Changed InitComboStringsFromString to not modify the input string;\r
+this caused an exception when WinBoard was compiled with MSVC++ 6.\r
+Thanks to Bert Tuyt for the report.\r
+\r
+* In WinBoard, dragging a piece off the edge of the board without\r
+releasing the mouse button no longer instantly aborts the move.  You\r
+still must release the mouse button inside a square to complete a\r
+move, but you can now drag off the edge and come back inside.\r
+       \r
+* WinBoard bugfix: If you went into EditGame or EditPosition mode\r
+while observing or playing an ICS game, and a new move came in\r
+(snapping you back to ICSClient mode) while you were dragging a piece\r
+around, the drag state would not be reset, causing the piece you were\r
+dragging to remain on the board wherever you dropped it.  Thanks to\r
+David Brinegar for the bug report.\r
+\r
+* WinBoard bugfix: If you moved or resized the board while your\r
+opponent was moving, and you had AnimateMoving on, his move would not\r
+be displayed until after your next move.  Thanks to DAV for reporting\r
+the bug repeatedly until I finally understood it.\r
+\r
+* Added a Zippy "farewell" feature; see zippy.README.\r
+       \r
+* Fixed a bug (xboard only) in processing -zippyReplayTimeout on the\r
+command line.  Thanks to Steve Beer for the report and patch.\r
+\r
+* Send "computer" command to both sides in TwoMachines matches.\r
+       \r
+* Fixed a Y2K bug in Evan's cmail code!  Thanks to Brian Mays for the\r
+report and patch.\r
+       \r
+* Bugfix: Initialize variant field of GameInfo struct in gameinfo.c.\r
+This could cause crashes in LoadGame.  Thanks to Andrzej Nagorko.\r
+       \r
+* Fixed several pattern matching problems: Finger notes and formula\r
+vars no longer get replied to by zippyTalk or colorized.  Channel\r
+tells by players with many titles are now colorized fully, and\r
+zippyTalk handles channel tells by such players correctly.  The shout\r
+"--> foo(99): bar" no longer gets colorized as a channel tell.  Code\r
+is cleaned up a bit, and autocomment capture now uses the same\r
+criteria as colorization.\r
+\r
+* xboard fix: Enter key now closes error popups as in WinBoard.\r
+Especially nice for the "Exiting: Connection closed by ICS" popup.\r
+\r
+4.0.5 -- Tue Dec  7 10:30:40 PST 1999  Tim Mann\r
+\r
+* Added missing documentation of SIGTERM usage into engine-intf.html.\r
+\r
+* Bugfix: New -zippyReplayTimeout option was misspelled in WinBoard as\r
+-zippyReplyTimeout.  Thanks to Francesco Di Tolla.\r
+       \r
+* xboard -ics now restores the xterm's original title upon exit, at\r
+least if $WINDOWID is set.\r
+\r
+* Bugfix: -matchGames mode wasn't terminating properly.  Final score\r
+popup would come up twice and engines would not be killed off.  Thanks\r
+to Frank Quisinsky for the bug report.  Bug was introduced in 4.0.4.\r
+\r
+* Bugfix: "tell 50 foo shouts: bar" no longer gets colored as a shout;\r
+similarly for "...s-shouts:" and "...c-shouts:".  Thanks to David Lee\r
+for the bug report.\r
+\r
+4.0.4 -- Fri Dec  3 17:51:27 PST 1999  Tim Mann\r
+\r
+* Bug fix: formerly if you invoked SaveGame from EditPosition mode\r
+with black to play, the position was not saved properly.  As a quick\r
+fix, SaveGame now takes you out of EditPosition mode before saving.\r
+\r
+* Changed -matchGames to keep track of the score (won-lost-drawn) and\r
+display it in the banner.  The final score is displayed in a modal\r
+popup before the program exits.\r
+\r
+* Changed "Connection closed by ICS" to display in a model popup\r
+before the program exits.\r
+\r
+* Added -popupExitMessage option, default on.  Setting this to false\r
+suppresses the modal popups that you sometimes get just before\r
+xboard/winboard exits -- both the two new ones listed above and the\r
+existing Fatal Error popup.  This is useful when running Zippy\r
+unattended from a shell script (or .bat file) that loops and starts a\r
+new copy after a time delay when there is an error.\r
+\r
+* In xboard, added missing support for WM_DELETE_WINDOW to all\r
+windows.  This makes xboard a better citizen, and is much needed with\r
+the newer X window managers that put an [X] button on every window and\r
+bind it to "kill application" if the applicationd does not support\r
+"delete window".  We can't allow xboard to be thoughtlessly killed,\r
+since that leaves the chess engine running in the background.\r
+\r
+* We now avoid positioning tops of xboard dialog boxes offscreen.\r
+\r
+* zippy.lines can now use the caret ('^') character as an inter-saying\r
+separator. You no longer need to dig up a text editor that can put NUL\r
+('\000') characters in text files.\r
+\r
+* Bugfix: In traditional chess clock mode, White now gets time added\r
+to its clock as soon as it makes time control.  Previously both White\r
+and Black got their time added only when Black made time control,\r
+which would cause some engines to make their 41st move as White too\r
+quickly, thinking they were low on time.\r
+\r
+* The zippyAcceptOnly feature no longer sends a decline command or\r
+a tell.  Thus you can use it to put Zippy into a manual accept mode.\r
+\r
+* Bugfix: "tell 50 foo tells you: bar" no longer gets colored as a\r
+personal tell; similarly for "...whispers:" and "...kibitzes:".\r
+\r
+* WinBoard no longer blanks the message line when you start a new\r
+move, unless there was an error message there from the previous move.\r
+\r
+* WinBoard now never puts the white piece drop menu on the middle\r
+mouse button.  Both colors are always on the right button.  Windows\r
+users often don't think to look for a middle button menu, or don't\r
+really have a working middle button despite what Windows says.\r
+\r
+* Guest login handles on ICC are now parsed again; an ICC wording\r
+change had broken this feature.\r
+       \r
+* Autodetect when the engine does not support the "draw" command and\r
+don't relay the command to it in that case.  Needed because sending an\r
+unsupported command to GNU Chess makes it move immediately, so people\r
+could make Zippy move without thinking by continually offering a draw.\r
+Thanks to Frank Walker for the problem report.\r
+\r
+* Small changes based on code from Robert Jurjevic: The WinBoard\r
+analysis window can be minimized (though not to the taskbar).  The\r
+WinBoard ICS Interaction window will autoscroll if you drag the mouse\r
+above or below the window while selecting, and password entry mode\r
+leaves the entry line as the background color instead of using 75%\r
+gray.  Seeks are now colorized with a new color of their own.\r
+\r
+* Added -zippyMaxGames feature.\r
+       \r
+* -zippyNoplayCrafty command line option was missing in xboard; fixed.\r
+Thanks to John Perry.\r
+\r
+* Fixed bug in detecting when Zippy loses his bughouse partner.\r
+Thanks to Ben Dean-Kawamura.\r
+\r
+* allobs fix in 4.0.3 didn't work; corrected it.\r
+\r
+* WinBoard will now update the board immediately if a move is made\r
+while the window is being moved or resized.\r
+       \r
+4.0.3 -- Sun Aug 15 18:44:39 PDT 1999  Tim Mann\r
+\r
+* Bugfix: moved winboard wizard functions that send a command directly\r
+to the chess engine from Ctrl+Alt+1 and Ctrl+Alt+2 to Alt+1 and Alt+2.\r
+Ctrl+Alt is equivalent to the European AltGr key, so the old assignments\r
+conflicted with typing an @-sign on some keyboards.\r
+       \r
+* Bugfix: prevent "If this message stays up, your chess program does\r
+not support analysis" from appearing if AnalysisMode is selected when\r
+already in Analysis or AnalyzeFile mode.  Also, deleting analysis window\r
+in WinBoard now switches you to EditGame mode, to avoid the anomaly of\r
+being in an analysis mode with no analysis window present.\r
+       \r
+* Change all Zippy environment variables to work as command line\r
+options.  For now they still work as environment variables too, but\r
+the environment variables are deprecated.\r
+\r
+* Use unsigned long to hold node counts from engines.\r
+\r
+* Print error instead of crashing on attempts to use xpm or xim pieces\r
+in monochrome mode.  Thanks to Jim Torrance for the bug report.\r
+\r
+* Tightened pattern recognition for ICS messages sent to Zippy; should\r
+no longer match ICC allobs output.  Fixed recognition of when Zippy is\r
+sent a message; small change to FICS output had broken it.\r
+       \r
+* Zippy now exits if the engine dies unexpectedly.\r
+\r
+* Added Zippy "spoofedby" feature; see zippy.README.\r
+       \r
+* Narrowed the margins on some older WinBoard dialogs to make their\r
+style uniform with the newer ones.\r
+\r
+* Bugfix: Changing Ponder Next Move from the Options menu did not take\r
+effect until the next game.  This bug was in WinBoard only.  Thanks to\r
+Stefan Zipproth for the bug report.\r
+\r
+* Got rid of "Internal error: bad move type" message when the engine\r
+makes a move that we can parse but think is illegal.  Now the move is\r
+just passed on (which also may be the wrong thing to do).\r
+\r
+4.0.2 -- Thu Feb 25 19:55:32 PST 1999  Tim Mann\r
+\r
+* Added one more built-in sound choice to WinBoard: move.wav from Pete\r
+Galati.\r
+       \r
+* Added new larger piece sizes: big, huge, giant, colossal, titanic.\r
+       \r
+* Modified the xboard font searcher to be able to use scalable fonts.\r
+The new -fontSizeTolerance flag controls how closely a nonscalable\r
+font must match to be used in preference to a scalable font.\r
+       \r
+* Zippy environment variables ZIPPYABORT and ZIPPYADJOURN now control\r
+whether Zippy will accept abort and adjourn requests.\r
+\r
+* We now determine the variant type being played on ICS, send it as a\r
+command "variant VARTYPE" to the chess engine (if in Zippy mode), and\r
+put it in the PGN tags.  See engine-intf.txt for variant names.  See\r
+ZIPPYVARIANTS in zippy.README to control what variants Zippy will\r
+accept.  Note that this now applies to bughouse, too.\r
+\r
+* Zippy now won't do -zippyTalk in a channel unless his handle is\r
+mentioned there.\r
+\r
+* Zippy now ignores bughouse holdings if not actually playing, instead\r
+of stupidly trying to abort the game.  Let me know if other strange\r
+things happen when Zippy is observing a game.\r
+\r
+* Set ICS Interaction title bar to "user@server".  User name is\r
+determined by parsing message during the login sequence.  Zippy now\r
+uses this method to get its name too, so ZIPPYNAME is eliminated.\r
+Problem: with xboard, the title bar gets set to "xterm" upon exit,\r
+since we didn't know what it was to start with.\r
+\r
+* Fixed xboard-only bug in -colorChannel1 command line option.  Thanks\r
+to Fredrik Sandstrom for the bug report and fix.\r
+\r
+* Check for overflow of MAX_MOVES.  Still not sure this is checked for\r
+everywhere it needs to be.\r
+\r
+* Added .epd to suffixes recognized by WinBoard as position files.\r
+This is a bit of a kludge, as the .fen reading code was not written\r
+with .epd files in mind, but reading them with it is said to work.\r
+\r
+* Added ZIPPYGAMESTART feature, suggested by Jason Hoblit.  See\r
+zippy.README.\r
+\r
+* Restored the feature of soaking up the moves from a user-typed "moves",\r
+"oldmoves", or "smoves" ICS command when xboard/WinBoard is idle, but\r
+changed it so that the move list is also echoed to the screen.  Some folks\r
+still liked the old feature since it is faster than examine mode, and\r
+printing the moves to the screen should eliminate the confusion it caused\r
+for other people.\r
+\r
+* Bugfix: in WinBoard, starting a click-click move and then clicking on\r
+a black line would cause the source square to be forgotten without taking\r
+the highlight down.  Now the errant click is ignored.\r
+\r
+* Corrected shortcut key labels for LoadNext/PrevPosition in WinBoard's\r
+File menu.  Thanks to Andreas Stabel for the bug report.\r
+\r
+* Bugfix: if you had a completely full ICS context menu in WinBoard\r
+(90 items), the last one would do nothing if selected.\r
+\r
+* The "computer" engine command added in 4.0.1 was not working; I had\r
+left out part of the code patch.  Oops.\r
+\r
+4.0.1 -- Fri Feb 12 21:24:15 PST 1999  Tim Mann\r
+\r
+This is a minor bugfix release.  The first item listed below is the\r
+only interesting new feature.\r
+\r
+* You can now type in moves from the keyboard in WinBoard.  Either\r
+select TypeInMove from Step menu, or (if you are not in ICS mode),\r
+just start typing.  In ICS mode you can type moves into the ICS\r
+interaction window anyway, so I've retained the feature that typing\r
+switches you there.  Not implemented in xboard.\r
+\r
+* Removed the "noise 1000" command that used to be sent to the chess\r
+engine when entering analysis modes.\r
+\r
+* Deleted the feature where we soak up the output of a user-typed ICS\r
+"moves" or "oldmoves" command.  This ancient feature is not really\r
+useful anymore, now that "examine" exists, and it caused a lot of\r
+complaints.\r
+\r
+* Increased maximum size of ICS text menu to 90 entries and added\r
+overflow checking.\r
+\r
+* The command sent to ICS by Zippy at the end of each game can now be\r
+customized with the ZIPPYGAMEEND environment variable.\r
+\r
+* We treat xboard.info as a pseudo-source since most people don't have\r
+the tools to rebuild it.  But "make install" erroneously had a\r
+dependency on it, even though "make all" did not.  Fixed.\r
+\r
+* Miscellaneous minor updates and clarifications to engine-intf.txt.\r
+In particular, documented the st and sd commands (support for command\r
+line options -searchTime and -searchDepth), warts and all.\r
+\r
+* Added a small code patch from Bob Hyatt to detect when Zippy's ICS\r
+opponent is a computer and send the command "computer" to the engine.\r
+Added this command to engine-intf.txt.  Thanks, Bob.\r
+\r
+* Bugfix: configure was looking for usleep(), but config.h.in didn't\r
+have an entry for it, so HAVE_USLEEP was never defined.  Also, in the\r
+non-HAVE_USLEEP case, there was a possible race condition between the\r
+signal handler and the pause() call.  Thanks to Ben Dean-Kawamura for\r
+the bug reports.\r
+\r
+* Bugfix: a "1..." preceding Black's first move (usually present if\r
+there is a comment on White's first move) would cause the parser\r
+to think a new game started there and report "End of game" on the\r
+current game.  Thanks to Dell Garner for the bug report.\r
+\r
+* Changed the abbreviation for -searchDepth from -sd to -depth to fix\r
+a clash with -secondDirectory.\r
+\r
+* Changed -searchDepth to be orthogonal to the various timing options.\r
+Previously it would search for an unlimited time to the given depth;\r
+now the engine is allowed to choose its search time in the normal way,\r
+but is told to cut off the search early if it reaches the given depth.\r
+\r
+* Bugfix: SaveSettings in WinBoard was saving both the long form\r
+option highlightSquareColor and its abbreviation (hsc).\r
+\r
+* Fixed a redisplay bug in DisplayBothClocks that could cause White's\r
+clock to be highlighted in EditPosition mode when Black's should have been.\r
+\r
+* Fixed Zippy's feature of passing on draw offers from the ICS opponent.\r
+The colorization code was eating the offer before Zippy saw it, so I disabled\r
+colorization of offers while in -zp or -zt mode.  (Other types of\r
+colorization are already disabled in Zippy mode for similar reasons.)\r
+\r
+* Added some more commands to the default ICS context menu in WinBoard,\r
+and put "(name)" on the ones that insert a playername (or game number).\r
+\r
+* Added missing documentation to WinBoard help file: PonderNextMove, the\r
+-ponder/-xponder argument, and the up/down arrow history feature in the\r
+ICS Interaction window.\r
+\r
+* Fixed        ZIPPYNOPLAYCRAFTY feature to fire only if the opponent is Crafty,\r
+not if some other Crafty is observing the game and kibitzes.\r
+\r
+* Fixed bugs in generating "partner" commands when Zippy is playing\r
+bughouse.\r
+\r
+4.0.0 -- Sat Jun 20 16:59:47 PDT 1998  Tim Mann\r
+\r
+* Fixed WinBoard resizing so that the edges you do not drag remain in\r
+place, even when the final size is different from what you dragged to.\r
+(This doesn't work on NT 3.51 or earlier, if anyone cares.)\r
+\r
+* Fixed problems with resizing WinBoard on Windows NT: you no longer get\r
+whitespace around the board, a clipped board, or a lot of flashing during\r
+the drag.\r
+\r
+* Added customization for highlight-square color.\r
+\r
+* Bugfix: backend.c wrote to stderr in a few obscure places, which doesn't\r
+work in WinBoard.\r
+\r
+* Added Index Number field back to LoadGame/LoadPosition dialog boxes in\r
+WinBoard.  This required some extra code to work with both the\r
+Explorer-style dialog boxes and the old-style NT 3.51 dialog boxes.  Ugh.\r
+\r
+* WinBoard startup dialog now understands -zp mode.  The first chess\r
+engine selector is enabled and the value is used.\r
+\r
+* Bugfix: ResetGame would send "exit" to engine twice if it was in an\r
+analysis mode.\r
+\r
+* Bugfix: The response "Illegal move: bk" to the "bk" command, indicating\r
+that it is not implemented, would confuse xboard.\r
+\r
+* Bugfix: Ignore empty hints ("Hint:\n") instead of printing a message\r
+saying that some bogus string (often "Hint:") is illegal.\r
+\r
+* Bugfix: LoadNextGame/LoadPreviousGame/ReloadSameGame were broken.\r
+\r
+3.6.12 -- Sat Jun 13 14:57:10 PDT 1998  Tim Mann\r
+\r
+Beta test release of xboard and WinBoard.\r
+\r
+* Spruced up xboard man page a bit.\r
+\r
+* Added Highlight Last Move to xboard too.\r
+\r
+* The revamped xboard mouse click code had several more bugs than the\r
+previous version, so I revamped it again.  All fixed now, I hope.\r
+\r
+* xboard bugfix: crash in CreatePieceMenu.\r
+\r
+* Oops.  winboard-3_6_11beta.exe installed 3.6.10beta, not the new version.\r
+\r
+3.6.11 -- Fri Jun 12 20:00:48 PDT 1998  Tim Mann\r
+\r
+Beta test release of xboard and WinBoard.\r
+\r
+* Major reorganization to engine-intf.txt.  Some new features added,\r
+many existing features clarified and hints for engine programmers added.\r
+Support for new features added to program.\r
+\r
+* Changed defaults for -scp (etc.) back to being independent of -fcp, as\r
+in 3.6.2. That is, the default is no longer to copy the value from -fcp if\r
+-scp is not specified.  This will sometimes make command lines longer but\r
+will remove some confusing situations.\r
+\r
+* Split -reuseChessPrograms into two options: -reuseFirst and\r
+-reuseSecond.  Fixed obscure bugs when reuse is off.\r
+\r
+* Detect ICC and change some command usage slightly there: only ICC has\r
+set-quietly; only FICS has iset and bsetup clear.  With this feature, we\r
+can now safely use bsetup clear when appropriate instead of deleting each\r
+piece one by one.\r
+\r
+* Added indent to lines that are wrapped by WinBoard ICS Interaction\r
+window.  This seems to tickle a Microsoft bug in the RichEdit control:\r
+occasionally the start of the next line after the wrapped line is indented\r
+too.  I think the wrapped indent feature is useful enough that it's worth\r
+having in spite of the bug.\r
+\r
+* WinBoard bugfix: bounding box for the board was computed incorrectly by\r
+mouse code.  It would think you moved off the bottom of the board before\r
+you really did, so it was hard to drag pieces along the bottom rank on\r
+smaller board sizes.\r
+\r
+* Fixed obscure parser.l bug: ambiguity between capture using : instead of\r
+x and email header line.  Also removed or simplified a lot of complex\r
+patterns for English (as opposed to PGN) end-of-game indications while I\r
+was in there.\r
+\r
+* Added PonderNextMove option.\r
+\r
+* xboard EditPosition piece menus now let you set the side to play by\r
+selecting the "White" or "Black" label at the top of the menu, like\r
+WinBoard.  (Both xboard and WinBoard still let you set the side to play by\r
+clicking on the clock.)\r
+\r
+* Merged documentation of Crafty and GNU Chess thinking output in\r
+engine-intf.txt.  Corrected code in backend.c to match documentation; it\r
+used to require the PV to start in column 27 (!).\r
+\r
+* Fixed bug that caused crashes in "-reuseChessProgram false" mode.\r
+\r
+* Draw by agreement in Two Machines mode now works as it is supposed to.\r
+Other minor bugs in handling game end messages from machines are also\r
+fixed, and engine-intf.txt is revised in this area.\r
+\r
+* Revamped xboard code for handling mouse clicks on the board.  In\r
+particular, it had a bug if a click-click promotion move was made.\r
+\r
+* Fixed and reinstated optimization for << in analysis modes: send\r
+initString and re-send the board if needed.  Sending repeated undos\r
+is bad because Crafty prints some analysis after every one.\r
+\r
+* Don't go into a spin loop while pausing between xboard animation frames.\r
+This caused problems, especially when compiling with -O2 on HP-UX.\r
+\r
+* WinBoard Options/Colors/RevertToDefaults now also turns off Monochrome\r
+if it was on, and similarly for Options/ICSInteractionColors/RevertToDefaults.\r
+This seemed to confuse people before.\r
+\r
+* Bugfix: ICS Interaction context menu items with neither of the two\r
+optional flags set did not work.\r
+\r
+* Bugfix: PGN move numbers are optional, but we were insisting on "1"\r
+right after the tags.\r
+\r
+* Bugfix: only the first game of an -mg match was loading -lpf or -lgf.\r
+\r
+* Other minor fixes and code cleanup.\r
+\r
+3.6.10 -- Mon Jun  1 01:32:31 PDT 1998  Tim Mann\r
+\r
+* Added ZIPPYNOPLAYCRAFTY feature; see zippy.README.\r
+\r
+* Added timestamps for chess engine interaction to -debug output.\r
+\r
+* Now allow 10 seconds (was 5) between games in match mode for engines to\r
+respond to "force" command that ended previous game.\r
+\r
+* When a game is picked from the game list and the names of White and\r
+Black are known, display them in the window banner instead of the filename\r
+and game number.\r
+\r
+* Changed default for -scp and -sd to be the values of -fcp and -fd.\r
+\r
+* Added boxes for both engines to WinBoard startup dialog.  Changed to\r
+dropdown boxes whose content can be set from winboard.ini, similar to\r
+the box for ICS name.\r
+\r
+* Accept "offer draw" (or "*offer*draw*") from engine to offer a draw.\r
+\r
+* Accept "move mmmm" from engine as well as silly "1. ... mmmm" syntax.\r
+\r
+* Added support for bughouse engines (Zippy mode only).\r
+\r
+* Move bombproofing for engines sending illegal or out of turn moves.\r
+\r
+* Always send "xboard\n" to engine as first command.  Eliminates need\r
+to run crafty as "crafty xboard".\r
+\r
+* Rewrote xboard code for input from engines to fix longstanding bugs.\r
+Previously an engine that sent one line in two separate writes with \r
+some time lapse in between (or perhaps that sent several lines in one\r
+write) could make xboard hang.  WinBoard did not have this bug.\r
+\r
+* Fixed minor bugs in dealing with illegal moves.\r
+\r
+* Added "iset startpos 1" for FICS.\r
+\r
+* Removed special support to put "GNU Chess" or "Crafty" in the window\r
+banner instead of the engine's base filename.  This gives a more level\r
+playing field for other engines.  Also fixed bugs in the code that finds the\r
+engine's base filename.\r
+\r
+* Bugfix: Abort or Resign at the very start of a game in chess engine mode\r
+would fail to send "force" to the engine.\r
+\r
+* Fixed some minor bugs in new "result" messages, and changed format to\r
+include a trailing PGN comment giving the reason the game ended.\r
+\r
+* Changed syntax of /font options in WinBoard; old syntax was assuming\r
+that a font name can't contain a digit, which is wrong.  Old font names in\r
+WinBoard.ini files are still accepted.\r
+\r
+* Serious further work on getting WinBoard to read/write files in the\r
+"right" directories and documenting exactly what it does.\r
+\r
+* Added LoadPreviousPosition, LoadNextPosition, ReloadSamePosition.\r
+\r
+* Misc. tiny fixes and cleanup.\r
+\r
+3.6.9 -- Sun May 24 20:53:08 PDT 1998  Tim Mann\r
+\r
+xboard and WinBoard beta release.\r
+\r
+* Tightened up illegal move handling.  Illegal or meaningless moves from a\r
+file or chess engine should no longer get translated into a1a1 and blindly\r
+applied.  Explicit moves to the same square (like a1a1) no longer make the\r
+piece on that square capture itself and vanish.\r
+\r
+* Added AlwaysOnTop feature to winboard.\r
+\r
+* Fixed bug in winboard "@" command line indirection operator.\r
+\r
+* Removed buggy "optimization" code for ToStart in analysis modes.\r
+\r
+* Fixed typo bug in zippy.c that would often cause winboard to crash\r
+right after starting a game in -zp mode.\r
+\r
+3.6.8 -- Sat May 23 22:23:19 PDT 1998  Tim Mann\r
+\r
+xboard and WinBoard beta release.\r
+\r
+* Added -firstDirectory and -secondDirectory so that chess engines can\r
+be started in a different directory from xboard/WinBoard itself.\r
+\r
+* Added -matchGames to allow more than one game in -matchMode.  The games\r
+are played with colors alternating between the two chess engines.  Had to\r
+add a time delay at the end of each game to catch up with game ending\r
+messages from both chess engines -- yuck.\r
+\r
+* Changed TwoMachines mode to have firstChessProgram play White by\r
+default.  Added -firstPlaysBlack to restore old behavior.\r
+\r
+* Major rework of code in backend.c for dealing with first and second\r
+chess engines.  Generalized the code and created a struct type with one\r
+instance for each engine.  Several small bugs fixed along the way. \r
+\r
+* Fixed bugs in Abort in local chess engine mode.\r
+\r
+* Tightened pattern matching to recognize moves from machine.  Should cure\r
+bogus "Illegal move" errors while Crafty is pondering with Show Thinking\r
+on, among other things.\r
+\r
+* WinBoard keeps focus in board window after popping up a comment due to\r
+Forward/Backward/ToStart/ToEnd commands.\r
+\r
+* Finally got rid of warnings on compiling moves.c under Windows.\r
+\r
+* Fixed so WinBoard will compile on machines where WM_MOUSELEAVE is not\r
+defined.\r
+\r
+* Removed various bits of unused code.\r
+\r
+* Parse (and ignore) NAGs in PGN files.\r
+\r
+* Updated engine-intf.txt.\r
+\r
+* Send "result R" to the chess program at the end of each game, where\r
+R is the PGN result 1-0, 0-1, 1/2-1/2, or *.\r
+\r
+* Bugfix: suppress animation when loading a game with timeDelay=0.\r
+\r
+* Bug fix: pondering output from Crafty that contained "..." could be\r
+mistaken for a move, causing bogus error messages and general chaos.\r
+\r
+* xboard "make clean" bug fix: moved things created by configure to be\r
+removed only by "make distclean".\r
+\r
+* Fixed a remaining case where move was being animated before being\r
+relayed to opponent.\r
+\r
+* Backend was reversing time/otim commands to the chess program (new bug),\r
+and was often not sending them on the first move of a game or the first\r
+move after a mode change (old bug).  Fixing the latter required a kludge\r
+to work with both GNU Chess and Crafty, because Crafty swaps white and\r
+black clock times when it swaps sides, while GNU Chess does not.  The\r
+kludge is that we always make sure the chess engine thinks its opponent is\r
+on move before we set the clock.  This will sometimes result in sequences\r
+like "white\ntime xxx\notim yyy\nblack\ngo", or the same with white and\r
+black interchanged.\r
+\r
+* Removed last trace of old -whiteString and -blackString arguments.\r
+\r
+* Fixed so that you can type "bd" into the Direct Command dialog when\r
+debugging gnuchess, without having xboard parse the clock display\r
+(starting with "White") as "White wins" and end the game.\r
+\r
+* Changed moves.c to make a distinction between IllegalMove (where we\r
+could tell what move was intended, but it violates the chess rules) and\r
+MeaninglessMove (where we could not tell).  This is a step towards getting\r
+rid of cases where we translate meaningless moves into "a1a1", but some\r
+work is probably needed to track them all down.\r
+\r
+* Fixed bug in WinBoard monoMode dragging.\r
+\r
+* Changed WinBoard to new style file dialogs.  In the process, disabled\r
+the feature that let you enter the index number of a game or position within\r
+the file in the dialog.  This is no loss in LoadGame, as you can pick your\r
+game from the game list dialog that follows, but it does remove some\r
+functionality from LoadPosition.\r
+\r
+3.6.7 -- Mon May 18 21:25:00 PDT 1998  Tim Mann\r
+\r
+xboard and WinBoard beta test release.  I've been unable to reproduce some\r
+reported drawing bugs, so they may still not be fixed.\r
+\r
+* Changed PopUpErrors option to PopupMoveErrors, which is more useful, and\r
+changed default to off.  Errors other than move errors should always be in\r
+popups; they are often too big for the message area and too important to\r
+put where they can be easily missed.  But it seems good to get rid of the\r
+popups for move errors by default.\r
+\r
+* xboard analysis window no longer forces itself to top whenever there is\r
+new output.  Also, now uses built-in Xaw word wrapping instead of trying\r
+to do its own; works better.\r
+\r
+* Bugfix: Reset did not take Crafty out of analyze mode.\r
+\r
+* A chess engine no longer has to claim to be Crafty to be able to use\r
+AnalysisMode and AnalyzeFile; it just has to implement the analyze\r
+command as Crafty does.  Put in heuristics to generate more informative\r
+error messages if the engine does not support analyze, and checked that\r
+they work at least with GNU Chess.\r
+\r
+* Added click-click moving, HighlightLastMove, and HighlightDragging to\r
+WinBoard.  The highlight features are unlikely to go into xboard unless\r
+the xboard drawing code is cleaned up to do *all* drawing on the board\r
+from DrawPosition, as WinBoard does.  This is low priority for me.\r
+\r
+* Eliminated bogus "Error gathering move list: no header" popup.  You\r
+could get this by observing two fast games at once without turning off\r
+GetMoveList.\r
+\r
+* Disable WinBoard Sounds menu entirely in -ncp mode, since not even\r
+MoveSound is used in that mode.\r
+\r
+* WinBoard bugfix: Several problems were caused if the user changed \r
+WinBoard's current directory in a Load, Save, or Browse dialog.  In\r
+particular, WinBoard.ini would get saved in the wrong directory, and\r
+sound .wav file names would not get saved with a full pathname.  I think\r
+all such problems are now fixed.\r
+\r
+* WinBoard bugfix: iconizing the board after an aborted mouse resize would\r
+(partially) resize it to Tiny.\r
+\r
+* WinBoard bugfix: board was not being drawn in color on 256-color\r
+displays.  This bug was introduced in 3.6.6.\r
+\r
+3.6.6 -- Tue May 12 17:43:43 PDT 1998  Tim Mann\r
+\r
+xboard and WinBoard beta release.  Note: not all reported bugs are fixed.\r
+\r
+* Move animation in WinBoard, programmed by Henrik Gram.  Great stuff!\r
+\r
+* Animate backward moves too.\r
+\r
+* xboard bugfix: -font (and friends) can now specify a font alias (such\r
+as "fixed"), not just a full X Consortium name pattern.  Previously this\r
+would give a resource conversion error message.\r
+\r
+* Some coding style cleanup in xboard.c.\r
+\r
+* Earlier error check for moving wrong color piece in EditGame mode.\r
+\r
+* Completed fix to pattern matching; see 3.6.5.\r
+\r
+* Fixed some software rot bugs in Zippy.\r
+\r
+* Split AnimateDragging as separate option from AnimateMoves.\r
+\r
+* Added FlashMoves to options menu and -flash/-xflash to command line\r
+options (xboard only).\r
+\r
+* Some preliminary work on visible bughouse holding support.  Most of the\r
+code is not present in this release because I have not gotten it working\r
+properly yet; my first approach went down a blind alley and I had to\r
+remove most of the partially working code in preparation for a rewrite.\r
+\r
+3.6.5 -- Fri May  8 14:22:09 PDT 1998  Tim Mann\r
+\r
+Not generally released.\r
+\r
+* Pack bughouse holdings display in banner more tightly when board is one\r
+of the smaller sizes (when smallLayout or tinyLayout is true, that is).\r
+An interim measure, but should help.\r
+\r
+* Completed fix to make move list parsing recognize the end condition and\r
+final comment.\r
+\r
+* Fixed pattern matching for chatter (tells, etc.) to be more reliable.\r
+This should reduce the incidence of colors starting in the wrong place and\r
+of incorrectly matching things that look like other patterns inside\r
+chatter, such as "shout <12>".  (These errors were already rare.)\r
+\r
+* WinBoard now lets you customize the list of ICS's in the startup dialog.\r
+For now, at least, requires editing WinBoard.ini with a text editor.\r
+\r
+* Bug fix: WinBoard window sizing and position setting save/restore did\r
+not work right when the taskbar was at the top (or left side) of the\r
+screen and not in autohide mode.\r
+\r
+* Merged xboard click/click mode and drag mode, and deleted\r
+ClickClickMoving option on menu.  Now if you click on a piece, it\r
+highlights and a further click on another square will move it.  (A second\r
+click on the same square takes down the highlight.)  Or if you press down\r
+on a piece and start to drag, you can drag it to a new square.\r
+\r
+* When making click/click style moves, if your second click is on a piece\r
+of the same color, instead of saying "Illegal move", we now cancel the first\r
+starting square, replace it with the second, and wait for another click to\r
+finish the move.\r
+\r
+* Separate -secondInitString.  Default: same as -initString.  Suggested by\r
+Remi Coulom.\r
+\r
+* Patch from Frank McIngvale to make animation work with XIMs.  Yay!\r
+\r
+* Changed move animation to happen after move is passed on to ICS or the\r
+chess engine, where applicable.  Fixed problems with updating moveList\r
+that this uncovered.\r
+\r
+* Changed game list to show PGN result token for each game.\r
+\r
+* The usual minor bug fixes.\r
+\r
+3.6.4 -- Thu Apr 30 23:14:43 PDT 1998  Tim Mann\r
+\r
+xboard and WinBoard beta test release.\r
+\r
+* xboard documentation updated, both man page and info file.  An attempt\r
+to generate both from the same source with LinuxDocSGML was abandoned, at\r
+least for now.  WinBoard doc updated too.\r
+\r
+* Merged updates to animation code from Hugh.  Fixed a couple of remaining\r
+bugs, mostly to do with handling Pause mode correctly.\r
+\r
+* Added SaveSettingsOnExit to WinBoard.\r
+\r
+* WinBoard now saves the last screen position of the Comment, Edit Tags,\r
+Game List, and Analysis windows (in addition to the board and ICS\r
+Interaction windows) in WinBoard.ini.\r
+\r
+* WinBoard now provides a way to customize the right-button context menu\r
+in the output area of the ICS Interaction window.  For now, requires\r
+editing WinBoard.ini with a text editor.  \r
+\r
+* Various minor fixes to ICS message recognition, most affecting only Zippy.\r
+\r
+* Colorize the notification when someone sends you a message while you are\r
+logged in, not the output of the "messages" command.\r
+\r
+* Fixed colorization to turn off at the right place more reliably.\r
+\r
+* Added a new color and WinBoard sound for "requests": abort, adjourn,\r
+draw, pause, and takeback.  The same color and sound are used for all of\r
+these.\r
+\r
+* Added GUI to change sounds in WinBoard.\r
+\r
+* Suppressed WinBoard error popup when a sound can't be played.  They were\r
+popping up when two separate WinBoards tried to play a sound at the same\r
+time (such as during a bughouse match).\r
+\r
+* Fixed WinBoard crash when a sound file didn't exist.\r
+\r
+* WinBoard ports of timestamp and timeseal now produce decent error\r
+messages if they fail to connect, and WinBoard captures the messages and\r
+puts them into a popup.  Previously WinBoard would exit with no message on\r
+such errors.\r
+\r
+* WinBoard resizing with mouse improved; now accurately picks the largest\r
+size that fits in the new area.\r
+\r
+* Added option to turn off error message popups.\r
+\r
+* Added sizes slim, dinky, and teeny.\r
+\r
+* Fixed some minor problems with error message wording.\r
+\r
+3.6.3 -- Mon Feb 23 19:08:57 PST 1998  Tim Mann\r
+\r
+xboard beta test release only.  Man page is updated for the changes, but info\r
+file is not.\r
+\r
+* Bug fix: LoadGame could not load a PGN game whose first move was\r
+castling (which is possible from setup positions).\r
+\r
+* Bug fix: we were ignoring illegal move messages from chess engines in\r
+modes where the engine is refereeing but not participating (EditGame,\r
+LoadGame, AnalyzeFile).  The problem was in a workaround for a Crafty bug,\r
+where Crafty generates a bogus illegal move message if a "." (used by\r
+the PeriodicUpdates feature) is sent in analysis mode when the current\r
+analysis reveals a forced mate.  Installed a different workaround (that\r
+works in most but not all cases) and reported the Crafty bug.  Bob Hyatt\r
+replied with a fix, so the Crafty bug should be gone in Crafty 14.12 or so.\r
+\r
+* WinBoard only: enabled resizing board with the mouse.  It snaps to the\r
+nearest (but not too much larger) predefined size.\r
+\r
+* The xboard default font is now sized according to piece size, just as\r
+clockFont and coordFont have always been.\r
+\r
+* Added more sizes: bulky, moderate, average, middling, mediocre, petite.\r
+       \r
+* xboard only: Added Animate Moves and Click-Click Moving to Options menu.  \r
+\r
+* xboard only: Added code to animate piece movement, from Hugh Fisher.\r
+\r
+* New feature: autoflag is implemented in MachineWhite, MachineBlack, and\r
+TwoMachines modes.  If it is on and either a chess program or the user\r
+oversteps his time, xboard will automatically call the flag and end the\r
+game.  This feature was requested by someone who runs matches between\r
+programs and wants to penalize GNU Chess for its habit of running slightly\r
+over at the end of a time control.  I personally think it's pointless.\r
+\r
+* Fixed a bug in Zippy's pattern matching; he can now reply to ICC\r
+messages again.\r
+\r
+* Generate prettier notation for illegal moves.  If a move is illegal only\r
+because it leaves the player in check, generate notation as if that were\r
+not illegal.  For instance, if two knights are a knight's move away from\r
+f3, one on g1 and one on e5 that is pinned, the notation would be Nf3 to\r
+move the g1 knight, Nef3 to move the e5 knight.  (Suggested by Philippe\r
+Schnoebelen.)  In addition, if a move is illegal because the type of piece\r
+moved cannot go that way, would be jumping over another piece, etc., we\r
+give fully disambiguated coordinate notation; for example, Ng1g3, Ke1xe8,\r
+d2xd8=Q, etc.  An alternative would be to still write Ng3 if there is only\r
+one knight on the board, or Ngg3 if the other knight is not on the g file,\r
+but life is too short to code up all this stuff, and perhaps the way I did\r
+it is better as it emphasizes that this move was really made despite being\r
+illegal.  I wonder if the new PGN standard revision will speak to notation\r
+of illegal moves?\r
+\r
+* Fixed gross bug from 3.6.2: if a chess program said "checkmate" and\r
+White was left on move, the PGN outcome was "1-0 {Black mates}" instead\r
+of "0-1 {Black mates}"!  The bug occurred only for that specific string.\r
+\r
+3.6.2 -- Wed Jul 23 16:47:29 PDT 1997  Tim Mann\r
+\r
+* There was a bug in backing up from the end of a game against a chess\r
+engine, introduced when -reuse mode was added.  Fixed.\r
+\r
+* Recognize "{" as terminating an ICS move list.  Previously we needed to\r
+see a prompt (containing %), but occasionally ICC can send more stuff\r
+right after a move list with no prompt in between.\r
+\r
+* In WinBoard, -mm now implies -cp, so you don't get the startup dialog.\r
+\r
+* WinBoard startup dialog no longer sets -scp.  People used to get\r
+confused because they would give the -fcp and -scp arguments, but omit\r
+-cp.  This would bring up the startup dialog, which would set both -fcp\r
+and -scp to the value in the engine name box.  Now you can change -scp\r
+only with the command-line argument.  That will confuse some people too,\r
+but hopefully fewer.  I think overall it's better than putting spaces for\r
+both -fcp and -scp in the dialog, which would puzzle newbies.\r
+\r
+* Bug fix: Analyze File mode now works in WinBoard.\r
+\r
+* Bug fix: WinBoard window no longer cuts off part of the bottom row if\r
+the menu bar wraps to a second line.\r
+\r
+* Accept game end messages of the form "PGN-result {comment}" from the\r
+chess engine, where PGN-result is 0-1, 1-0, or 1/2-1/2.  Accept "resign"\r
+or "computer resigns" from the chess engine as a synonym for "0-1 {White\r
+resigns}" or "1-0 {Black resigns}". Accept any message from the chess\r
+engine containing "game is a draw" as a synonym for "1/2-1/2 {Draw}".\r
+Accept "White resigns" or "Black resigns".\r
+\r
+* Enable "Action / Draw" menu item in chess engine mode.  It sends the\r
+command "draw" to the engine.  Accept any message from the chess engine\r
+containing "offers a draw" as a draw offer.  WARNING: Draw offers from the\r
+user and the engine (or from two engines) are not yet matched up by xboard\r
+in chess engine mode.  Two engines could get into a loop offering each\r
+other draws.\r
+\r
+* Bug fix: Game end messages from the chess engine are always ignored in\r
+Zippy mode.  Previously they could sometimes be processed, which was\r
+sometimes making Zippy hang at the start of a new game that followed\r
+quickly after an old one.\r
+\r
+* Zippy can now respond to titled players in channels.  Zippy will avoid\r
+talking to himself in a channel if he knows his own name.\r
+\r
+* Bug fix: in colorization arguments, the bold setting was being ignored\r
+if the background color was defaulted.  (xboard only.)\r
+\r
+* Extended ParseFEN to accept Crafty 12.2's interpretation of FEN.\r
+If fewer than 8 squares are given in a row, or fewer than 8 rows are\r
+given, the uncovered squares are empty.  Also, there can be a / after the\r
+8th row.\r
+\r
+3.6.1 -- Sat May 17 01:02:33 PDT 1997  Tim Mann\r
+\r
+* Bug fix: Hitting escape while entering a password on WinBoard no longer\r
+sets the font color back to black (which made further typing visible).\r
+\r
+* Bug fix: On Windows NT 4.0, WinBoard /ics /icshelper=timestamp would\r
+often hang if you tried to exit with the Exit menu item, the [X] button,\r
+etc.  The same fix may also have corrected the problem where running a\r
+chess program with /xreuse would sometimes crash Windows 95 (but not NT)\r
+when the chess program was killed and quickly restarted.\r
+\r
+* Bug fix: Periodic Updates would not work if turned on after having been\r
+off.  Also, the default was needlessly "off" in WinBoard.\r
+\r
+* Zippy bug fix: Continuing an adjourned game was totally broken.  The\r
+wrong moves, or no moves at all, were being fed to the chess program.\r
+\r
+* WinBoard change: Giving -ics without -icshost now pops up the startup\r
+dialog with "Use an Internet Chess Server" pre-selected, so that you get a\r
+menu of chess servers instead of going directly to ICC.\r
+\r
+* Bug fix: WinBoard's SaveSettings was saving -icshost, -icsport, and\r
+-icshelper in winboard.ini.  This causes a problem if you use a different\r
+icshost later that needs the default values for icsport (5000) and\r
+icshelper ("", meaning none).\r
+\r
+* Disabled complaints about unexpected "[Ii]llegal move" messages from\r
+the chess program; we still get them at times.\r
+\r
+* Greatly simplified the code for Move Now and SIGINT (ATTENTION).  Fixes\r
+the bug where Move Now did not work with GNU Chess in WinBoard, and\r
+several more obscure bugs as well.  Reintroduces a minor bug: GNU Chess might\r
+not think on your time after a Move Now command.  Trying to fix this\r
+causes too many other problems.  Documented change in engine-intf.txt.\r
+\r
+* Cleaned up code for obtaining ratings from ICS.  It was kludgey and may\r
+have had bugs on systems with no "Creating:" message.  It should fail\r
+gracefully there, just not finding the ratings.\r
+\r
+3.6.0 -- Thu May  8 19:55:58 PDT 1997  Tim Mann\r
+\r
+* WinBoard now has right-button context menus in the ICS Interaction\r
+window.  Some of the items do immediate commands on the player name you\r
+have selected or pointed to.  (Suggested by Paolo Casaschi.)  Also, the\r
+middle button or shift+right does a immediate Copy and Paste.\r
+\r
+* Fixed a bug in Zippy's wild rejection.  The bug was causing Zippy to\r
+reject all forms of wild.  Now it rejects only 1, 9, 16, 17, and 24, as\r
+was intended.  These variants have different rules, while the other\r
+variants defined so far only have different starting positions.\r
+(Actually, wild 2, 3, and 4 never allow castling, but may sometimes by\r
+chance have king and rook start on squares where castling appears legal.\r
+This could cause a problem later.)\r
+\r
+* Zippy now resumes adjourned games by feeding the chess program \r
+the move list instead of the position.  Setting -getMoveList to False \r
+restores the old behavior.  Feeding in the move list is better because \r
+it enables the chess program to correctly handle en passant legality, \r
+castling legality, draw by repetition, and draw by the 50 move rule. \r
+\r
+* Added a WinBoard startup dialog for people who run WinBoard.exe without\r
+using the Start menu or reading the help file.  Instead of being dumped\r
+directly into GNU Chess mode, you now get a menu of choices.  You now have\r
+to give the new WinBoard -cp option to go directly into chess engine mode.\r
+I did not add this feature to xboard.\r
+\r
+* Handling of "illegal move" from Crafty is now back on.  (It was turned\r
+off in 3.4.6; see below.)  Crafty 12.0 doesn't seem to send bogus ones\r
+anymore.  I did have to suppress sending time and otim in analyze mode to\r
+make this work, but there is no harm in that.\r
+\r
+* Zippy now sends "gameend" to ICS at the end of each game.  You can alias\r
+this to "seek" or whatever you like.\r
+\r
+* Added Crafty support for Move Now, using the "?" command.  We test\r
+whether this command exists by trying it once at the start of the first\r
+game, before it really makes sense.  If we don't get a message like\r
+"Illegal move ... ?", we assume it's OK.  (We're careful about this\r
+because sending a "?" to GNU Chess on Move Now keeps it from pondering the\r
+next move as it should.)\r
+\r
+* Added support for a tellusererror command from the chess engine.  See\r
+engine-intf.txt.\r
+\r
+* Attempted to make engine-intf.txt complete.\r
+\r
+* Minor fixes/cleanup to GameEnds code, to be sure we always interrupt\r
+when needed, and always undo an extra move generated by stopping the chess\r
+program while it is thinking.\r
+\r
+3.5.7 -- Sat May 03 22:37:44 PDT 1997  Tim Mann\r
+\r
+Beta release of both xboard and WinBoard.\r
+\r
+* Updated xboard documentation.  I really wish the man page was built from\r
+the info file instead of being separate!  It's a pain to update them both.\r
+\r
+* Updated documentation of the interface between XBoard/WinBoard and chess\r
+programs, and renamed it to engine-intf.txt.\r
+\r
+* Added support for tellics, telluser, and askuser commands from the chess\r
+engine.  See engine-intf.txt.\r
+\r
+* Various bug fixes.  On WinBoard, 256 color displays are finally handled\r
+right; no more color flashing when you switch windows unless the colors\r
+really need to be updated.  Also, I think the problem of the console font\r
+failing to change or changing back by itself is finally fixed.\r
+\r
+3.5.6 -- Tue Apr 29 03:08:00 PDT 1997\r
+\r
+Beta release, WinBoard only.  ChangeLog was out of date in release,\r
+updated here.\r
+\r
+* Added ICC timestamp and FICS timeseal to WinBoard distribution.  These\r
+are my own ports to Win32, based on and used by permission of the owners\r
+of the proprietary source code (Daniel Sleator for timestamp, Henrik Gram\r
+for timeseal).  The owners permit these programs to be distributed only in\r
+binary form (to help prevent cheating), so to avoid running afoul of the\r
+GPL, I have kept them as separate programs, not linked into the WinBoard\r
+address space.  Updated Start menu icons to use them.\r
+\r
+* Miscellaneous smaller changes.\r
+\r
+3.5.5 -- Fri Apr 25 03:06:00 PDT 1997\r
+\r
+Beta release, WinBoard only.  ChangeLog was out of date in release;\r
+updated here.\r
+\r
+* Added simple sound support to WinBoard.\r
+\r
+* Updated WinBoard documentation.\r
+\r
+* Internal implementation of the telnet protocol is now more complete.\r
+You can now hop through a VMS host on the way to ICS.  For example, do\r
+"xboard -ics -icshost vms.host.edu -icsport 23", then log in.  Do not use\r
+the -telnet flag; that says to use an *external* telnet program.  To avoid\r
+double echoes, you need to force character mode in VMS telnet after\r
+connecting from VMS to ICS.  Do "^]^Mset mode char^M^M".\r
+\r
+* Display opponent names in the title bar for MachineWhite, MachineBlack,\r
+and TwoMachines modes.\r
+\r
+* WinBoard now has an installer, built with InstallShield.  The installer\r
+works with a binary-only distribution.  Sources are still freely\r
+available, but now separately.\r
+\r
+* Added SaveSettings to WinBoard, which saves current option settings to\r
+winboard.ini.  Made sure all options can be saved and loaded, including\r
+fonts and com port settings.\r
+\r
+* If the game ends while you are dragging a piece, we now don't let you\r
+finish the move.  Formerly the move was accepted and your opponent's clock\r
+would start running again.\r
+\r
+3.5.4 -- Fri Apr 18 01:15:24 PDT 1997  Tim Mann\r
+\r
+Beta test release of WinBoard and xboard.  The documentation remains\r
+out of date.\r
+\r
+* Many fixes and improvements to new WinBoard user interface code.\r
+\r
+* In Zippy mode, avoid sending another copy of the same move to the chess\r
+program if ICS sends us another copy of the board image.  Hard to believe\r
+it took me until now to diagnose and fix this problem!\r
+\r
+3.5.3 -- Sat Apr 12 19:49:33 PDT 1997  Tim Mann\r
+\r
+Beta test release of WinBoard and xboard.\r
+\r
+* Fixed fatal bug in WinBoard input handling.\r
+\r
+* Made code to stop chess program for reuse a bit smarter.  Removed kludge\r
+of "white" in initString; it didn't work well, and is unneeded\r
+with Crafty 11.21 and later.\r
+\r
+3.5.2 -- Sat Apr 12 15:40:01 PDT 1997  Tim Mann\r
+\r
+Beta test release of WinBoard.\r
+\r
+* Ignore check and permit promotion to King during suicide games; no need\r
+to turn off TestLegality.\r
+\r
+* Renamed CheckLegality to TestLegality to avoid confusion with the chess\r
+term "check".\r
+\r
+* Added Rematch to Action menu.\r
+\r
+* WinBoard now has a custom ICS interaction window with scrollback, a\r
+separate line for input, and colorization.  Accelerators that conflict\r
+with normal editing keys were changed (by requiring Alt+) so they can work\r
+in both the console and the main window.\r
+\r
+* WinBoard error popups are now non-modal and disappear when you make a\r
+new move, as in xboard.\r
+\r
+* Configure now defaults to --disable-ptys on all systems.  If anyone has\r
+an ancient SysV system where pipes don't work with select, they can still\r
+do "configure --enable-ptys" explicitly.  I would appreciate getting a bug\r
+report if this happens to anyone, with complete output from configure and\r
+"uname -a".\r
+\r
+* "make install" now makes the installation directories too.\r
+\r
+* Fixed a bug that would cause an "Illegal move" message for Black from\r
+GNU Chess to be incorrectly considered bogus.\r
+\r
+* Handle name changes during an ICS game (FICS bname and wname commands).\r
+\r
+* You can force both chess programs to be killed at the end of each game\r
+by turning off the reuseChessPrograms option.  There are still some\r
+problems with reusing Crafty even in version 11.20.\r
+\r
+* Now the second chess program stays around by default too, if it ever\r
+gets started.\r
+\r
+3.5.1 -- Sat Apr  5 16:47:48 PST 1997  Tim Mann\r
+\r
+Beta test release.\r
+\r
+* Don't kill off and restart the chess program for each game; keep the\r
+same one running, using the "new" command to start a new game.  This\r
+change works around the problem in Windows 95 that makes WinBoard crash it\r
+at times, and is generally desirable to make new games start faster.  The\r
+second chess program (for TwoMachines) is still killed at the end of the\r
+game, and unfortunately this can still crash Windows 95.  Temporarily\r
+added "white" to the initString to make this work with Crafty 11.20, which\r
+has a minor bug in "new".  Older versions of Crafty have worse bugs in\r
+"new"; they should not be used with this version of xboard.\r
+\r
+* Support for FICS suicide chess: Parse illegal moves (that leave King in\r
+check) in game history.  If CheckLegality is off, allow promotion to King\r
+and illegal moves in game files.  We still generate e2e4 style notation\r
+for illegal moves.\r
+\r
+* Handle FICS "has timeseal; checking" message.\r
+\r
+* Changed the coords from white back to black; this was a bug.\r
+\r
+* Fixed problems compiling with K&R compilers.\r
+\r
+* Fixed an old bug in RegisterMove that was crashing cmail on some systems\r
+(notably linux).\r
+\r
+3.5.0 -- Thu Jan  2 16:59:49 PST 1997  Tim Mann\r
+\r
+Thanks to Frank McIngvale for much of the work on versions 3.4.4 and above!\r
+\r
+* Fix Crafty resumed game time bug (frankm)\r
+\r
+* Word wrap text in Analysis window (frankm)\r
+\r
+* More debug info for XPM loading (frankm)\r
+\r
+* Replaced config.sub, config.guess, etc., with up-to-date versions from\r
+autoconf 2.12.  Hopefully this will fix problems on Pentium Pro machines.\r
+\r
+* Removed some Makefile gunk that was causing looping for one person.\r
+\r
+3.4.7 -- Thu Dec 19 14:22:41 PST 1996  Tim Mann\r
+\r
+All changes from Frank:\r
+\r
+* Retrieve ratings from ICC (and FICS, etc., when they add the Creating:\r
+message), save them in the PGN tags, and pass them to Crafty in Zippy mode.\r
+\r
+* Add settable time delay between characters in ICS login script.\r
+\r
+* Colorize messages like personal tells.  Fix false recognition of channel\r
+tells.\r
+\r
+* Pass "tells" from Crafty through to ICS (in Zippy mode).\r
+\r
+* Implement ~/ filename convention from C shell for game and position file\r
+names.\r
+\r
+* ZIPPYACCEPTONLY feature for testing.\r
+\r
+3.4, patchlevel 6 -- Sat Nov 23 16:58:50 PST 1996  Tim Mann\r
+\r
+* Put recognition of "illegal move" messages from Crafty for\r
+illegal castling, etc., inside an #if that is currently turned off,\r
+because of a bug in Crafty that generates bogus "illegal move" messages\r
+after some moves that are actually legal and accepted by Crafty.\r
+\r
+* Added -checkLegality option; previously this could not be turned off.\r
+\r
+* Fixed an old bug in finding default board size parameters.\r
+\r
+* Differentiated among channel tell, kibitz/whisper, and personal tell/say.\r
+\r
+* Fixed a bug in detecting Xpm in the configure script.\r
+\r
+3.4, patchlevel 5 -- Mon Nov 18 16:22:53 PST 1996  Tim Mann\r
+\r
+* Added zic2xpm to the kit; it had been omitted by mistake.\r
+\r
+* Added some default colors for -colorize\r
+\r
+3.4, patchlevel 4 -- Sat Nov 16 18:10:17 PST 1996  Tim Mann\r
+\r
+This is meant to be a beta release in preparation for version 3.5.\r
+\r
+* Added InfoXBoard and ManXBoard to the Help menu.\r
+\r
+* Made Frank's ICS input box optional, defaulting to off.\r
+\r
+* Merged in Frank McIngvale's XbKit.  Many new features, including\r
+-clickClick mode, the Analysis modes, piece flashing, ZIICS import,\r
+ICS text colorization, and the ICS input box.  Many thanks to Frank for\r
+supplying and documenting this code.\r
+\r
+3.4, patchlevel 3 -- Mon Nov 11 18:23:14 PST 1996  Tim Mann\r
+\r
+Small set of changes made while Frank McIngvale was working on XbKit in\r
+parallel.  Unreleased in this form.\r
+\r
+* Updated zippy.README.\r
+\r
+* Removed useless X event handler and removed strange code for copying\r
+form translation table to board that worked around the bug it caused.\r
+This makes changing bindings in .Xdefaults more straightforward.\r
+\r
+* Now pressing the Control key steps back one move, and releasing it steps\r
+forward again.\r
+\r
+* Moved quit from "q" to "Q" for greater safety.\r
+\r
+* Use "unobserve" instead of "observe" to stop observing; needed on FICS.\r
+\r
+* Support for interface variable.\r
+\r
+* Strip titles from people who are talking to us, so (for example) Zippy\r
+won't try things like "tell Darooha(*) hello".  Needed on FICS.\r
+\r
+3.4, patchlevel 2 -- Tue Jul  9 19:06:42 PDT 1996  Tim Mann\r
+\r
+This patchlevel is not planned to be an announced release.  It's in\r
+preparation for integrating Frank McIngvale's XbKit.  It mostly contains\r
+minor fixes I've accumulated since 3.4.pl1.\r
+\r
+* WinBoard /telnet option now fires up an external program, as\r
+with xboard, instead of trying to use a feature of NT 3.1 that does not\r
+exist in later versions of NT or in Windows 95.  ChangeLog for 3.4.pl1\r
+said this had been implemented there, but it really wasn't.\r
+\r
+* Indicating player to move by the icon color now works under Windows 95.\r
+\r
+* WinBoard now kills the chess program when you exit using the system menu\r
+or the [X] button.  Thanks to Michael Lowe.\r
+\r
+* Minor changes to Zippy, including: Now understands wild challenges on\r
+FICS; these used to crash it.  Removed limit on how fast a game will be\r
+accepted.  Use "set formula ..." on the chess server to limit this if you\r
+are using GNU Chess.  Now sends correct opponent name to Crafty.\r
+\r
+* Added some missing default values to documentation.  Thanks to Stuart\r
+Cracraft.\r
+\r
+* Bugfix: Trying to print "No fonts match pattern" error message would\r
+crash.  This can happen to Linux users who don't install Helvetica, for\r
+example. \r
+\r
+* Bugfix: Defaulting feature in -size n,n,n,n,n,n would put us in an\r
+infinite loop.\r
+\r
+* Added more directories to search for Athena widgets on HPUX.\r
+\r
+* New cmail (3.12) from Evan Welsh; includes small fix from Kayvan Sylvan.\r
+\r
+* Recognize "illegal move" messages from Crafty for illegal castling, etc.\r
+\r
+* Bugfix: "name" command added to zippy.c for Crafty was producing error\r
+message if GNU Chess was in use.\r
+\r
+* In bughouse mode, suppress holding messages from console window; show\r
+holdings only in banner.\r
+\r
+* Minor fixes/cleanup to Makefile.in and configure.in.\r
+\r
+3.4, patchlevel 1 -- Mon Dec 11 13:43:12 PST 1995  Tim Mann\r
+\r
+* This patchlevel updates WinBoard to match xboard, and includes a few\r
+fixes and minor improvements.  "-size tiny" and "-size n,n,n,n,n,n"\r
+are still not implemented for WinBoard.\r
+\r
+* Installed support for Crafty based on code from Bob Hyatt.\r
+Currently the only documentation for this is in the FAQ, and a few\r
+things don't work with Crafty 8.23.  Please do not report these\r
+problems as bugs in either xboard or Crafty.  Bob and I know about\r
+them.  The worst ones (if not all of them) should be fixed in Crafty\r
+8.24.\r
+\r
+* Changed the kludge command we send when gnuchess wants to print\r
+something that doesn't end with a newline, from "help" to "bogus".\r
+This works because the error message gnuchess prints ends with a\r
+newline.  It also improves compatibility with Crafty, which doesn't\r
+need the kludge, but for which sending "help" causes a problem.\r
+\r
+* Don't draw grid at all if lineGap is 0; previously we drew the grid\r
+with X "0-width" lines (usually 1 pixel wide) and then overwrote it.\r
+\r
+* Makefile: Removed xboard.info from "all" target so we won't try to\r
+rebuild it, because this fails on hosts that don't have makeinfo\r
+installed.  Other minor fixes to "clean" targets, etc.\r
+\r
+* Fixes and cleanup to Auto Comment code that handles continuation\r
+lines and highlighting.\r
+\r
+* Auto Observe now tries to observe the game from the point of view of\r
+the player who was on your gnotify list.  Requested by rng.\r
+Limitations: We can't tell which player it was unless you have ICS\r
+highlighting turned on.  Also, currently "observe foo" works as\r
+required (observing from foo's point of view) only on ICC, but FICS\r
+will probably implement this soon.\r
+\r
+* "-size tiny" now makes the default font smaller automatically.  This\r
+was implemented by introducing an extra Form widget in the hierarchy\r
+for all xboard windows, named either normalLayout, smallLayout, or\r
+tinyLayout.  So you can have resource specifications that apply only\r
+to certain layouts; in particular, XBoard*tinyLayout*font.\r
+\r
+* Bug fix: EditGame or EditPosition while playing or examining still was\r
+not really being permitted.\r
+\r
+* WinBoard bug fix: On the EditPosition menu, King did not work.\r
+\r
+* Added text catalog of WinSock error messages to WinBoard, because\r
+Microsoft still has not put them in the system message catalog.\r
+\r
+* Removed support for older ICS game-ending messages that do not have\r
+a PGN result token (*, 0-1, 1-0, or 1/2-1/2) after the closing '}'.\r
+The code for older messages was sometimes firing on the newer\r
+messages, due to parsing ambiguity.  If the current code sees an old\r
+message, it will understand that the game is over, but will always\r
+display * as a result token instead of trying to guess the result by\r
+interpreting the text message.\r
+\r
+3.4, patchlevel 0 -- Tue Nov 21 01:02:50 PST 1995  Tim Mann\r
+\r
+* This patchlevel was released for xboard only.\r
+\r
+* Updated the info file.  It should now be as up-to-date as the man page,\r
+with good English except in the parts that pertain only to AmyBoard.\r
+\r
+* Added "-size tiny", requested by Bob Hyatt.  Also cleaned up bitmap\r
+support and added "-size n,n,n,n,n,n" to allow arbitrary-sized bitmaps,\r
+if the actual bitmaps are supplied by the user.\r
+\r
+* Updated bughouse support.\r
+\r
+3.3, patchlevel 4 -- Sat Nov 18 02:27:21 PST 1995  Tim Mann\r
+\r
+* Unreleased beta that works with preliminary FICS bughouse code.  Will\r
+need changes before release to track FICS message changes.\r
+\r
+* Removed use of .EX macro from man page.  It is not supported by some\r
+nroff -man macro packages, notably the one on Slackware Linux.  Switched\r
+to boldface for references to xboard and other commands within the man\r
+page, as this seems to be the modern way.\r
+\r
+* Bug fix: If ICS rejected a move, it was correctly undone on the board,\r
+but the message widget still displayed the bad move.  Reported by DAV.\r
+\r
+* Normally, xboard in ICS mode fetches the move list whenever the board\r
+display switches to a new game.  Doing this is now an option\r
+(getMoveList) that can be turned off, which is useful if you are watching\r
+multiple blitz games.  Requested by rng.\r
+\r
+* Move list fetching code is now smarter: it ignores a move list if it is\r
+not for the right game.\r
+\r
+* Added support for bughouse as implemented on FICS.  Holdings are shown\r
+in the window title in place of the strength numbers.  A menu on mouse\r
+buttons 2 and 3 (same on both) lets you drop pieces.  There is no checking\r
+as to whether you actually hold the piece you are trying to drop; we rely\r
+on ICS to check that.  Notation of the form P@f7 is generated and parsed.\r
+The mate detector does not understand that non-contact mate is not really\r
+mate in bughouse, but this does no real harm.  It results in a "#"\r
+suffix being displayed on the move notation, but xboard does not assume the\r
+game is over.\r
+\r
+* Bug fix: Promotion to a knight was not working with ICC!  Thanks to\r
+Wendigo for the report.\r
+\r
+* Bug fix: Special pty code for host types *-*-aix3* and *-*-irix3*\r
+(supplied from configure.in) had a bug that would cause childio.c to\r
+fail to compile, due to a "continue" that was not within a loop.\r
+\r
+* Bug fix: In pgntags.c, memory was being freed while still in use.  One\r
+symptom this caused was that on some machines, cmail would fail with a\r
+message that it could not find the BlackNA tag.  The error was in some\r
+submitted code that I included in version 3.2.pl3 without reading\r
+carefully enough.  Anders Forberg noticed the symptoms, and Evan Welsh\r
+(who had nothing to do with causing the bug) found the bug and submitted a\r
+fix; thanks to them both.\r
+\r
+* Removed restriction against using EditGame while playing, observing,\r
+or examining on ICS.  You still get a warning popup.\r
+\r
+3.3, patchlevel 3 -- Sat Sep 16 11:44:05 PDT 1995  Tim Mann\r
+\r
+* Bug fix: Going directly from MachineWhite to TwoMachines mode would kill\r
+off the second chess program after Black's first move.\r
+\r
+* Added -timeIncrement feature.  Thanks to Joel Rivat.\r
+\r
+* Deleted code that tries to keep you from observing more than one game,\r
+or observing while playing or examining.  There is actually no problem in\r
+doing this, except that every time an update comes in from a different\r
+game than is currently being displayed, xboard fetches the history of the\r
+new game, which may be time-consuming if you are on a slow link.\r
+\r
+* Fixed configure so as not to crash when neither lex nor flex is found.\r
+lex or flex is needed only if the user wants to rebuild parser.c.  Thanks\r
+to Phil Humpherys for reporting the crash.\r
+\r
+* Bug fix: config.h.in used #define instead of #undef for some macros used\r
+in the pty code in childio.c.  This causes the code to fail to compile on\r
+some architectures, because the symbols are supposed to be undefined, not\r
+defined to empty, when they are not set in configure.  Bug originated in\r
+3.3.pl0 when config.h was introduced.  Thanks to Phil Humpherys for report.\r
+\r
+* Bug fix: ShowThinking would not show anything when current position had\r
+no move to display in the move window.  E.g., if position was created by\r
+LoadPosition or EditPosition.\r
+\r
+3.3, patchlevel 2 -- Mon Aug 28 11:11:11 PDT 1995  Tim Mann\r
+\r
+* Zippy code was omitted from xboard-3.3.pl1 by mistake; now included.\r
+\r
+* For WinBoard, added hint to help file that you may need to turn off\r
+LocalLineEditing while typing dialing commands to your modem.\r
+\r
+3.3, patchlevel 1 -- Sat Aug 19 15:13:30 PDT 1995  Tim Mann\r
+\r
+* Zippy distribution is no longer separate from regular xboard distribution.\r
+\r
+* Deal properly with Show Thinking output from GNU Chess when it is\r
+thinking on its opponent's time.  In TwoMachines mode this output is\r
+suppressed to avoid interfering with the output from the machine that is\r
+on move; in other modes it is displayed (including the move that GNU Chess\r
+is predicting the user will make next).  GNU Chess produces this output\r
+only if it is built without -DQUIETBACKGROUND defined; this symbol is\r
+defined by default in patchlevels before pl75, but undefined by default in\r
+pl75.\r
+\r
+* Bug fix: Handling of initial board position in move list for wild games\r
+was broken, so wild games could not be observed and adjourned wild games\r
+could not be continued.  Thanks to "Maximum Entropy" for the bug report.\r
+\r
+* Added feature: algebraic notation now shows "+" indicator for check\r
+and "#" for checkmate, as called for in PGN standard.  Thanks to Kevin\r
+Maher for the suggestion.\r
+\r
+3.3, patchlevel 0 -- Thu Jul 27 22:21:07 PDT 1995  Tim Mann\r
+\r
+* Changed configuration to use a config.h file instead of passing zillions\r
+of -D options on the cc command line.\r
+\r
+* Merged a small fix and some updates to the texinfo file from Jochen\r
+Wiedmann.  The texinfo file still needs work.\r
+\r
+3.2, patchlevel 5 -- Tue Jul 18 20:29:39 PDT 1995  Tim Mann\r
+\r
+* Beta test release of xboard only.\r
+\r
+* Updated WinBoard code to include new xboard features.\r
+\r
+* Added texinfo file from Jochen Wiedmann to the release, but not as the\r
+primary documentation.  It needs updating, and the English needs work.\r
+I did make a few improvements, mostly to change incorrect uses of @var to\r
+either @samp or @code as appropriate.\r
+\r
+* Merged in code changes to 3.2.pl4beta from Jochen Wiedmann.\r
+\r
+* Fixed EditComment; did not pop up window in previous beta.\r
+\r
+* Added AutoComment feature.\r
+\r
+* Added GameListDestroy to disable the outdated game list popup in cases\r
+where we load a new game file without building a new popup.\r
+\r
+* Added yyskipmoves feature to parser.l to speed up building of gamelist.\r
+\r
+* gamelist.c wouldn't compile with a non-ANSI compiler.  Fixed.\r
+\r
+* Change to yy_text handling in patchlevel 3 still had problems.  Can't\r
+use AC_DECL_YYTEXT in configure.in, because that defines YYTEXT_POINTER\r
+according to whether the lexer on the current host makes yytext a pointer.\r
+But most people will be using a parser.c that was generated on another\r
+host and shipped with the package.\r
+\r
+3.2, patchlevel 4 -- Sun Jun 25 19:13:43 PDT 1995  Tim Mann\r
+\r
+* Beta test release of xboard only.  \r
+\r
+* Added FIREWALLS section to man page.\r
+\r
+* Changed -icsport to be a string.  Now with the -telnet option,\r
+specifying -icsport "" suppresses the second argument to telnet.\r
+\r
+* Added EditTags feature.  Removed AboutGame from menu, because EditTags\r
+subsumes it.  EditTags suggested by Jochen Wiedmann and first implemented by\r
+him in AmyBoard.  xboard implementation is my own.\r
+\r
+* Fixed some missing or incorrect prototypes.\r
+\r
+3.2, patchlevel 3 -- Sat Jun  3 18:57:38 1995  Tim Mann \r
+\r
+* Beta test release of xboard only.  \r
+\r
+* New version of cmail from Evan Welsh, to fix compatibility problems with\r
+perl 5.0.\r
+\r
+* Added game list feature on Load Game, based on code from Jochen\r
+Wiedmann.  Integrated it with cmail.\r
+\r
+* Several bug fixes from Jochen Wiedmann, including one to my yy_text\r
+workaround for the difference in the type of yytext between lex and flex.\r
+\r
+* Handle clock pause on FICS.\r
+\r
+* Suppress clocks in untimed FICS games (time control 0 0).\r
+\r
+* Rebuilt configure script with autoconf 2.3.  This fixes a bug in\r
+configuring for X11R6, where -lSM -lICE would not be added when needed.\r
+\r
+* Fixed inconsistent type declarations on IntSigHandler and\r
+CmailSigHandler.  Bug report from Josh Daynard.\r
+\r
+* backend.c wouldn't compile with a non-ANSI compiler.  Fixed.\r
+\r
+3.2, patchlevel 2 -- Tue Feb  7 14:50:30 1995  Tim Mann \r
+\r
+* Minor release of both xboard and WinBoard.\r
+\r
+* Added recognition of some FICS messages.  On the other hand FICS is also\r
+changing some of its messages to match what xboard already recognizes.\r
+\r
+* Temporarily went back to using "promote" command on ICS instead of\r
+"a7a8=Q", because FICS doesn't implement the latter yet.\r
+\r
+* We now avoid using overlapped I/O on pipes in WinBoard, to make Windows\r
+95 beta 2 happy.  This lets WinBoard work with GNU Chess on Windows 95!\r
+\r
+* Installed patches from Jochen Wiedmann to coordinate with Amiga XBoard.\r
+\r
+* Installed patch to cmail bug in LoadGame from Evan Welsh.\r
+\r
+* Bugfix: checkmate and stalemate moves entered with EditGame in ICS mode\r
+were not being handled correctly.  Bug was in GameEnds().\r
+\r
+* Implemented EchoOn and EchoOff for xboard, using system("stty echo\n").\r
+Now passwords won't be echoed when you connect directly to ICS.  Also,\r
+telnet negotiation characters aren't displayed (when possible).\r
+\r
+* Implemented more of the telnet protocol.  Now connecting to a telnet\r
+server with "-icsport 23" should work even without giving the -telnet\r
+option.  The telnet is in "old line-by-line mode".\r
+\r
+3.2, patchlevel 1 -- Sat Dec 10 13:50:46 1994  Tim Mann \r
+\r
+* This patchlevel released for WinBoard only.\r
+\r
+* winboard.c: Fixed ConsoleInputThread().  Needed to change CRLF to LF,\r
+not to CR.  This was stopping normal /ics mode from working.  Thanks to\r
+Asher Kobin for the bug report.\r
+\r
+* winboard.c: Fixed Raw(), EchoOn(), EchoOff().  Now they take effect\r
+immediately, not on the next console read after the one in progress.\r
+\r
+* winboard.c: Attempted to make WinBoard work with gnuchessx running\r
+directly on Windows (not remotely via rsh).  It now works on NT, but only\r
+if gnuchess is told not to think on its opponent's time ("easy\n" removed\r
+from initString).  The problem seems to be that GenerateConsoleCtrlEvent\r
+is not doing anything.  On Windows 95 beta 2, we get error messages on\r
+both reading and writing to gnuchessx; I didn't investigate why.\r
+\r
+3.2, patchlevel 0 -- Wed Dec  7 13:23:36 1994  Tim Mann \r
+\r
+* Thanks to all the beta testers who gave me feedback: Josef Nelissen,\r
+Steve Booth, Evan Welsh, Dima Dakhnovsky, Chris Petroff, Peter Jansen,\r
+Derek Terveer, Michel van der List, Richard Lloyd, Shelly Mistry, and Mike\r
+Lee.  Sorry if I forgot anyone.  Thanks to Virendra Kumar Mehta for\r
+information about DYNIX/ptx.\r
+\r
+* Don't exit on keyboard EOF unless we get two in a row.\r
+\r
+* WinBoard only: added -localLineEdit switch to allow turning off local\r
+line editing if you really want to.  It is still a bad idea to let the\r
+echoing be done remotely, however; see below.\r
+\r
+* Fixed some configure problems on HP-UX.  [Steve Booth]\r
+\r
+* Fixed (I hope) configure problem on SunOS 5.3/Solaris 2.3.  [Josef Nelissen]\r
+\r
+* cmail bugfix from Evan Welsh (cmail 3.4).\r
+\r
+3.1, patchlevel 9 -- Fri Dec  2 23:54:56 1994  Tim Mann \r
+\r
+* Beta distribution only\r
+\r
+* Always do local echo/edit of user typing in ICS mode.  Doing the echo\r
+downstream may seem nicer in some modes, and it can be hard to turn that\r
+echo off, but the echoed characters can be interleaved with ICS output\r
+and make it impossible to parse correctly.  For xboard this involved only\r
+a change to recommendations in the man page, as Raw() isn't implemented.\r
+For WinBoard, removing Raw() made a real difference.  Added code in \r
+WinBoard to change /r/n back into /r on keyboard input, as we get the \r
+former when Raw() is not called.\r
+\r
+* Do not issue ICS "refresh" command after we start to observe a game\r
+unless we get to the next prompt without seeing a board image.  Newest\r
+version of ICS doesn't require this refresh, but old versions around still\r
+do.\r
+\r
+* cmail bugfix and small code cleanup in LoadGame, from Evan Welsh.\r
+\r
+* Added keyboard accelerators N/P for LoadNextGame/LoadPreviousGame.  Evan\r
+Welsh request.\r
+\r
+* Using "-" on the command line as a filename for loading (saving) games\r
+or positions specifies the standard input (standard output).  Alain Picard\r
+suggestion.\r
+\r
+* On WinBoard only, a command line option without a leading '-' or '/' is\r
+now taken as the value of -lgf.\r
+\r
+* Changed to not use stdin, stdout, stderr as initializers in backend.c;\r
+needed for GNU libc compatibility.  You also must build parser.c with flex\r
+(not lex) if you are using GNU libc, to avoid having the same problem\r
+there.\r
+\r
+* Changed WinBoard to avoid using "overlapped" input on the console.  It\r
+now seems to fully work on Windows 95 beta 2.\r
+\r
+* Improved comment popups on WinBoard.  Now newlines are handled properly,\r
+and the plain Comment popup window doesn't disappear and reappear when we\r
+step to a new move with a new comment.\r
+\r
+* Fixed bugs in detecting the absence of the time and otim commands.\r
+\r
+* Added built-in implementation of rcmd protocol to WinBoard.  Windows NT\r
+does not implement passing signals through rsh, and Windows 95 does not\r
+have rsh at all.\r
+\r
+* Added -remoteUser option.\r
+\r
+3.1, patchlevel 8 -- Mon Nov 28 15:26:07 1994  Tim Mann \r
+\r
+* Beta distribution only\r
+\r
+* Rearranged ChangeLog file into reverse chronological order to be closer\r
+to GNU standards.\r
+\r
+* Integrated new cmail code from Evan Welsh (including cmail RCS rev 3.2).\r
+Includes a bug fix to TruncateGame.\r
+\r
+* Updated ICS address to be chess.lm.com.\r
+\r
+* Bug fixes to handling the aftermath of FatalError.  Thanks to Chris\r
+Petroff for the bug report.\r
+\r
+* Test for remsh before rsh, other fixes for HP-UX.  Thanks to Richard\r
+Lloyd.  I wasn't able to do all the things he suggested, so there may\r
+still be some rough edges in building on HP-UX.  See the FAQ file for hints.\r
+\r
+* Bug fix; added missing check for HAVE_SYS_SYSTEMINFO.  Thanks to Josef\r
+Nelissen for testing on Solaris 2.x.\r
+\r
+* Updated WinBoard to match xboard.  (WinBoard still has a few option\r
+dialogs that don't exist in xboard.)\r
+\r
+* Changed Hint output to a popup.\r
+\r
+* ShowThinking output and move output no longer overwrite each other.\r
+ShowThinking output won't appear if the displayed position is not current. \r
+ShowThinking output in TwoMachines mode made clearer and documented.\r
+\r
+* Implemented --enable-ptys and --disable-ptys arguments to configure.\r
+\r
+* Fixed Book and Hint code to work over a pty with echo enabled and tabs\r
+expanded to spaces.  Thanks to Dima Dahknovsky for the bug report.\r
+\r
+* Moved Attention calls from all over xboard to one place, inside\r
+SendToProgram.\r
+\r
+* Added bulletproofing to ShowThinkingEvent.\r
+\r
+* Added code to handle "refresh N" boards that come in from ICS properly,\r
+assuming ICS is changed to mark them with a new relation code (-3).\r
+\r
+3.1, patchlevel 7 -- Sun Nov 13 22:16:01 PST 1994 -- Tim Mann\r
+\r
+* Beta distribution only\r
+\r
+* Changed ShowThinking to just show the current best line in the\r
+DisplayMessage area, instead of dumping everything to stdout.\r
+\r
+* Installed new cmail (RCS rev 3.1) and cmail.man (RCS rev 1.10), and\r
+changes to cmail code in backend.c, from Evan Welsh.\r
+\r
+* Miscellaneous minor fixes.\r
+\r
+3.1, patchlevel 6 -- Fri Nov  4 12:53:53 PST 1994 -- Tim Mann\r
+\r
+* This patchlevel was not actually released to anyone.\r
+\r
+* Updated the pty code to be based on GNU Emacs 19.24, and moved it to a\r
+separate file.  It was hard to split out just the pty configuration from\r
+all the stuff emacs does with its custom configure script and .h files,\r
+but I did my best.\r
+\r
+* Converted from imake to GNU autoconf.  This was a serious upheaval.  \r
+\r
+* Put in code to help trap "error gathering move list" problem reported by\r
+Michel van der List if it recurs.  I couldn't reproduce it.\r
+\r
+3.1, patchlevel 5 -- Mon Oct 31 21:12:00 PST 1994 -- Tim Mann\r
+\r
+* Beta distribution only.\r
+\r
+* We now test for checkmate or stalemate in EditGame mode after every user\r
+move, and in LoadGame mode whenever we hit the end of a game without\r
+seeing a PGN end marker.  cmail needs an update to deal with this\r
+correctly; Evan promises one.\r
+\r
+* Bugfixes in new move generator.  Thanks to Mike Lee for reporting one of\r
+the bugs.\r
+\r
+* Imakefile was omitted from patchlevel 4.\r
+\r
+3.1, patchlevel 4 -- Mon Sep 19 18:19:46 PDT 1994 -- Tim Mann\r
+\r
+* Beta distribution only.\r
+\r
+* The move generator includes a mate tester.  Initially this is used only\r
+by cmail, and even that usage needs further work.\r
+\r
+* Wrote a true move generator and used it to replace all the move\r
+disambiguation and legality checking code in parser.l.  The move generator\r
+is capable of dealing correctly with en passant and castling availability,\r
+but the rest of the program still does not keep track of this information.\r
+\r
+* Bug fix: xboard did not handle "foo has made you an examiner of game 23"\r
+message.  Thus you could not use examine features until the next board\r
+came in, showing your new relation to the game.  Thanks to POOKIEWOOKIE on ICS\r
+for the bug report.\r
+\r
+* Added AutoObserve feature.  Thanks to Chris Petroff for the idea.\r
+\r
+* Added Book feature to use new gnuchess "bk" command.  Mike McGann request.\r
+\r
+* Redid code to handle missing "time" command in gnuchess, because latest\r
+gnuchess no longer sends a response to this command.  \r
+\r
+* Eliminated need for -DFLEX.  Thanks to Michael Shields (Vladimir?) for\r
+the idea.\r
+\r
+* Added missing code to implement MoveNow in TwoMachines mode.\r
+\r
+* Added ShowThinking feature.  Thanks to Richard Lloyd for the idea.\r
+\r
+* Applied patches from Evan Welsh; some fixes and improvements to the\r
+cmail code.\r
+\r
+* Fixed bug in moving from EndOfGame mode to MachineWhite or MachineBlack,\r
+introduced in previous patchlevel.  Also fixed related bug in ending a\r
+game in ICS mode; was entering EndOfGame mode instead of IcsIdle.\r
+\r
+* Added patch to implement internetChessServerLogonScript flag, from Kevin\r
+O'Connor.  Thanks!\r
+\r
+3.1, patchlevel 3 -- Wed Sep  7 13:22:07 PDT 1994 -- Tim Mann\r
+\r
+* Beta distribution only.\r
+\r
+* Merged in new cmail code from Evan Welsh.  He added the ability to have\r
+more than one game per message, needed for official IECG matches.  I added\r
+the ability to resign or offer/accept/decline a draw in a cmail game.\r
+\r
+* Bugfix: invalid -tc option caused segmentation fault; DisplayFatalError\r
+was called too early in initialization.  Georges Honore reported this bug.\r
+\r
+* Decided to keep EndOfGame mode as an element of the user interface---it\r
+means that a gnuchess game or loaded game has ended, and the user must\r
+explicitly select EditGame to edit it, rather than just being able to\r
+enter more moves freely.  But internally there is no longer an invariant\r
+tying this mode to whether the chess program is running.\r
+\r
+* Zippy bugfix: Was saving only the final position in the -sgf file when\r
+the game ended by something other than resignation or flag.  Also fixed\r
+the longstanding bug that Zippy would think the final board of such a game\r
+was a new game and restart the chess program.\r
+\r
+* Now does a better job of faking castling availability in FEN.  We still\r
+don't really keep track of it, but now at least we don't say that castling\r
+is still available when the king or rook is not on its home square.\r
+\r
+* Bugfix: Initial board of game history for wild games was going through\r
+too much processing, causing us to forget the game length, which is now\r
+needed by ParseGameHistory.  This was causing problems with resuming\r
+adjourned wild games.\r
+\r
+* Updated ICS host to ics.onenet.net.\r
+\r
+* Zippy now accepts challenges where the opponent specified his color.\r
+\r
+* Added ZIPPYPASSWORD2 to let operator give commands directly to gnuchess.\r
+\r
+* Bitmap directory can include alternative icons now, too.\r
+\r
+* Handle "Game * (*) has no examiners" message from ICS.\r
+\r
+* Revamped window title and icon name selection.\r
+\r
+3.1, patchlevel 2 -- Sun Jun 12 17:16:28 PDT 1994 -- Tim Mann\r
+\r
+* "Beta" distribution for Zippy users only.\r
+\r
+* Bugfix: common.h was assuming that X11 type Boolean is char, which is\r
+not always true.  This might have caused all sorts of obscure bugs!\r
+\r
+* Installed new bitmaps from Elmar Bartel as the default.  Many thanks!\r
+The old bitmaps can be used by changing the "bitmaps" symbolic link before\r
+compiling xboard, or by using the -bitmapDirectory option at runtime.\r
+\r
+* Loading a game that ends with the PGN unfinished symbol ("*") now always\r
+leaves you in EditGame mode.\r
+\r
+* Added documentation of -icscomm to man page.  Thanks to Maarten Remkes\r
+for the linux script.\r
+\r
+* ^C now kills gnuchess as well as xboard.  Thanks to Dima Dakhnovsky for\r
+reminding me how to do this.\r
+\r
+* Bitmap icon color now indicates player to move.  Stuart Cracraft\r
+suggestion.\r
+\r
+* Changed piece bitmap flags to have just one flag, which points to a\r
+directory full of bitmaps, instead of a flag for each bitmap.  Also\r
+changed bitmap naming convention.\r
+\r
+* "Connection closed by ICS" is no longer a FatalError popup.  This was\r
+too annoying in the normal case where the user typed "quit".\r
+\r
+* Changed default font to 14 pixels instead of 10 points.  This seems to\r
+make it close to the size I want it to be on more displays.\r
+\r
+* Major mode (GNU Chess, etc.) appears in title bar.  Stuart Cracraft\r
+request.\r
+\r
+* Bug fix: EditGameEvent, MachineBlackEvent, MachineWhiteEvent, and\r
+TwoMachinesEvent were calling PauseEvent to get out of pause mode, which\r
+now has undesired side effects, such as advancing the display to the\r
+forwardMostMove.  It works fine to just set pausing = FALSE instead.\r
+\r
+* IcsExamining mode now lets you access ICS edit position commands using\r
+the same popup menus as xboard's EditPosition mode.  Thanks to DAV on ICS\r
+for inspiring the idea.\r
+\r
+* Corrected test for gcc on HP in Imakefile; thanks to Richard Lloyd.\r
+\r
+3.1, patchlevel 1 -- Wed Jun  1 16:25:11 PDT 1994 -- Tim Mann\r
+\r
+* Added parser.c.lex and parser.c.flex to the distribution.\r
+\r
+* Added HP gcc options to Imakefile, from Mats Nylen.\r
+\r
+* EndOfGame mode no longer highlights EditGame mode indicator, because the\r
+modes really do differ.  I would like to get rid of EndOfGame mode in the\r
+future, at least as far as users can see.\r
+\r
+* Larger %a in parser.l, needed for RS/6000 users.\r
+\r
+* Minor improvements to Mail Move error messages.\r
+\r
+* When -debug flag is given to xboard, -v is passed to cmail.\r
+\r
+* Old Save Style uses "1. ..." instead of "1..." when black moves after a\r
+comment; more like xboard 3.0's actual style.\r
+\r
+* New version of cmail from Evan Welsh.  Looks for UCB Mail in a more\r
+portable way and has some minor bug fixes.\r
+\r
+* Bug fix: Saving a FEN position while in EditPosition mode with black to\r
+play was showing white to play in the saved position.\r
+\r
+3.1, patchlevel 0 -- Fri May 20 16:36:15 PDT 1994 -- Tim Mann\r
+\r
+* This is the first general release since 3.0, patchlevel 9.  Releases\r
+since then have been limited-distribution or beta releases.\r
+\r
+* Thanks to my version 3.1 beta testers: Dmitry Dakhnovsky, Ed Hanway,\r
+Richard Lloyd, Mike McGann, Shelly Mistry, Josef Nelissen, Chris Petroff,\r
+Jack Robertson, Michel van der List, Ky Macpherson, Derek Terveer, and\r
+Evan Welsh.  Sorry if I've forgotten anyone who gave me feedback.\r
+\r
+* Updated man page.\r
+\r
+* Minor cleanup on menu sensitivity code.\r
+\r
+* Integrated another even better version of cmail from Evan Welsh,\r
+including some code he supplied in xboard itself.\r
+\r
+* A few more fixes to cmail support.\r
+\r
+* Automatically update clocks after an ICS "moretime" command.\r
+\r
+* Handle ICS automatic examine mode (set examine 1) after a game.\r
+\r
+3.0, patchlevel 14 -- Tue May 17 13:41:44 PDT 1994 -- Tim Mann\r
+\r
+* Beta test release only.\r
+\r
+* Don't suppress prompt on first board of game being examined; otherwise\r
+it looks like nothing happened at all (i.e., like you're lagged).\r
+\r
+* Added StopExamining and StopObserving (Chris Petroff suggestion).\r
+\r
+* Made Reset do a refresh on ICS.  John Chanak's original ICS code for\r
+xboard tried to do this; I finally decided it was a good idea after all.\r
+\r
+* Fixed bugs in handling updates that come in while you are pausing in\r
+examine mode.  This is pretty tricky to do right.\r
+\r
+* Made un-Pausing immediately pop you to the current position.  This is\r
+always necessary in examine mode, since the game may have changed under\r
+you; your remembered moves might no longer be right.  So I made it do the\r
+same in all modes.\r
+\r
+* Took Detach Examine mode back out...used Pause mode for this instead!\r
+\r
+* Put in a trap for the GNU Chess bug of printing an Illegal Move message\r
+when its own hint move is illegal.\r
+\r
+* Attempted to fix a Zippy bug; bogus "exited unexpectedly" messages after\r
+it checkmates its opponent.  This involved adding an argument to GameEnds\r
+to say who says it ended (ICS, GNU, etc.)  and taking different actions in\r
+different cases.  Unfortunately, this just restored an older Zippy bug, where\r
+Zippy restarts gnuchess when it gets the board with the final position,\r
+because GameEnds still puts xboard in EndOfGame mode.  Sigh.\r
+\r
+* We now capture elapsed time on last move when getting game history.\r
+(Josef Nelissen bug report)\r
+\r
+* Rewrote code to redisplay last file title so it really works.\r
+\r
+* Fixed bug in oldSaveStyle.\r
+\r
+* Larger %a and %o were needed for lex.\r
+\r
+3.0, patchlevel 13 -- Mon May 16 16:26:22 PDT 1994 -- Tim Mann\r
+\r
+* Beta test release only.\r
+\r
+* FatalError popups stay on the screen now.  If the error is really fatal,\r
+all functions are disabled, and the program exits when you press OK.\r
+\r
+* Redisplay last file title when using Load (Next/Previous/Same) Game.\r
+\r
+* Zippy understands new match challenge message format on ICS.\r
+\r
+* Added Revert command.\r
+\r
+* When examining a game on ICS, < > buttons do ICS backward/forward\r
+commands, unless you set the Detach Examine option.  Thanks to Dima\r
+Dakhnovsky for the idea.\r
+\r
+* Fixed various minor problems in cmail mode.\r
+\r
+* cmail generates the tags now.  New version of cmail from Evan Welsh.\r
+\r
+* cmail mode won't let you do MailMove unless the currently displayed\r
+position is exactly one move past the end of the game you loaded.\r
+\r
+* Fixed building of man pages in Imakefile\r
+\r
+* Updates to INSTALL file\r
+\r
+3.0, patchlevel 12 -- Sat May  7 21:10:03 PDT 1994 -- Tim Mann \r
+\r
+* Beta test release only.\r
+\r
+* Brought man page up to date.\r
+\r
+* Added Shift+R to resign from keyboard.\r
+\r
+* Some items on Action menu available in GNU Chess mode now.\r
+\r
+* Revamped Action menu.\r
+\r
+* Reordered functions in backend.c as a small step toward reorganizing\r
+this whole mess.\r
+\r
+* Generate TimeControl PGN tag.\r
+\r
+* Get type of ICS game (e.g., rated blitz) and save in PGN tags.\r
+\r
+* Bug fix: Clocks were not redisplayed when entering EditGame mode.\r
+\r
+* Bug fix: Clocks were not being redisplayed after loading a game file\r
+with -td 0, so they could show the wrong color active.\r
+\r
+* Bug fix: Chess programs would be killed and match mode would exit\r
+prematurely when loading a PGN game fragment ending with "*".\r
+\r
+* ICS command "sposition" no longer confuses xboard.\r
+\r
+* Integrated new version of cmail (with support code in xboard) from Evan\r
+Welsh.\r
+\r
+* Added TruncateGame, MoveNow, RetractMove, and QuietPlay.\r
+\r
+* Bug fix: switching between MachineWhite and MachineBlack was not calling\r
+Attention().  Reported by Dino Dini.\r
+\r
+* More improvements to INSTALL and Imakefile.\r
+\r
+* Pack moves into 79 character lines in PGN output.  We don't generate\r
+check indications, and we always break the line before the result,\r
+so this is not quite PGN export format.\r
+\r
+* Use FEN tag in PGN.\r
+\r
+* Improved finding and counting of game starts in save files.\r
+\r
+* Negative position or game numbers in -lpi/-lgi mean to seek to that byte\r
+offset.  Hook for possible future features, not in man page.\r
+\r
+* Detect and handle absence of either "time" or "otim" commands in\r
+gnuchess.\r
+\r
+* Don't use "promote" command to ICS anymore.\r
+\r
+* Handle switching sides and taking back moves on FICS.\r
+\r
+* Handle flip state flag in style 12 board.\r
+\r
+* Handle examine mode on ICS.\r
+\r
+* Improved error popups for various kinds of illegal moves.\r
+\r
+* Suppress unasked-for hints from gnuchess (which it generates in post\r
+mode).\r
+\r
+* Load/save position functions use FEN.  Old style also supported.\r
+\r
+* Added detailed error messages if loading a bitmap file fails.\r
+\r
+* Small board has 2-pixel lines between squares instead of 3-pixel.\r
+\r
+* Added OldSaveStyle and AboutGame.\r
+\r
+* Renamed ForceMoves to EditGame.\r
+\r
+3.0, patchlevel 11 -- Tue Sep 21 15:25:36 PDT 1993 -- Tim Mann \r
+\r
+* The following changes were present in xboard 3.0, patchlevel 11, but the\r
+first group did not make it into WinBoard 3.0 until later.  xboard\r
+3.0.pl11 was a limited-distribution release only, mostly to Zippy users.\r
+\r
+* Man page minor fixes.\r
+\r
+* Added a missing file close.\r
+\r
+* Removed automatic error popdown on Reset, which was destroying some\r
+error messages before they could be read.\r
+\r
+* Fixed char vs. unsigned char warnings on bitmaps.\r
+\r
+* Use ICS board style 12.  Some improvements to ICS parsing.\r
+\r
+* Comment window is now labelled with the move the comment is on, and\r
+comments don't pop down when you step to the next move.\r
+\r
+* Save files now in PGN format.\r
+\r
+* Support for loading PGN files.  PGN tags pop up when a PGN game file\r
+is loaded.\r
+\r
+* More info in INSTALL and Imakefile about building for Suns (and\r
+other systems).\r
+\r
+* WinBoard 3.0 patchlevel 11 split off from an early version of xboard\r
+3.0 patchlevel 11, so it does not have all the features of that\r
+patchlevel.  The following changes made it into both xboard and\r
+WinBoard:\r
+\r
+* Made Comment dialog non-modal in WinBoard.\r
+\r
+* EndOfGame mode is now more transparent.  It looks like ForceMoves\r
+mode except that there is no chess program running.\r
+\r
+* Small bug fixes in clock management.  Most noticeably, pausing when\r
+it is gnuchess's move now works as documented (again).\r
+\r
+* Add minimal support for -icscomm option.  Not documented yet because\r
+I haven't sorted out the issues with setting the tty modes on the comm\r
+port device, or with locking it properly.  But it's usable by wizards.\r
+\r
+* Don't restart the chess program upon Backward event from EndOfGame mode.\r
+\r
+* Suppress extra prompt after ICS sends us a board.\r
+\r
+3.0, patchlevel 10 -- Sat Sep 11 18:44:03 PDT 1993 -- Tim Mann \r
+\r
+* Beta test release only.\r
+\r
+* Zippy now plays chess.  zippy.c and zippy.h are still not included\r
+in the standard distribution, but are available on request.\r
+\r
+* Switched to using style 12 on ICS.\r
+\r
+* Updated man page, and documented use of XBoard*form.translations to\r
+add more shortcut keys.\r
+\r
+* Added shortcut keys "d" to claim/offer/accept a draw, and "t" to\r
+call flag.  Suggested by venu on ICS.\r
+\r
+* More explicit instructions in INSTALL file.\r
+\r
+3.0, patchlevel 9 -- Tue Sep  7 14:02:00 PDT 1993 -- Tim Mann\r
+\r
+* General release, minor update to 3.0.pl8.\r
+\r
+* Loosened checking on whether it's okay to start a move, to satisfy\r
+ICS ultra-blitz players.  Now we don't check whether it's your turn\r
+until you let go of the piece.\r
+\r
+* Parser now recognizes "+-+" as meaning the game ended in a draw.\r
+\r
+* Got rid of S_NONE symbol, which seems to conflict with some symbol\r
+Sun defines.\r
+\r
+* Tweaked the man page.  Clarified that there is currently no way for\r
+two people running copies of xboard to play each other without going\r
+through the Internet Chess Server.\r
+\r
+* Fixed a bug in color name conversion.  Asking for two different\r
+colors whose names were the same in the first four characters would\r
+get you two copies of the first one.  Thanks to Volker Zink for the\r
+bug report.\r
+\r
+* Improved confusing Usage() message.\r
+\r
+* Added a bunch of Sun information to the Imakefile and INSTALL file.\r
+Thanks to Ed Hanway, Arik Klingensmith, and others who responded.\r
+\r
+* Test for defined(WIN32) instead of !defined(unix).\r
+\r
+* Avoid using (void *) type with non-ANSI C compilers.  Thanks to\r
+James Altucher for the bug report.\r
+\r
+3.0, patchlevel 8 -- Thu Sep  2 12:23:01 PDT 1993 -- Tim Mann\r
+\r
+* Note: Patchlevel 8 was the first non-beta release of xboard 3.0\r
+\r
+* Added cmail to distribution.  Contributed (and still maintained) by\r
+Evan Welsh.\r
+\r
+* Bug fix: -queen option wasn't initializing menu check.  Reported by\r
+Pat Surry.\r
+\r
+3.0, patchlevel 7 -- Thu Aug 26 13:23:24 PDT 1993 -- Tim Mann\r
+\r
+* Sent WinBoard 3.0.pl7 to Torre on ICS\r
+\r
+* Added parser.h to hold the interface to parser.l\r
+\r
+* Upgraded COPYING file and copyright notices to GNU GPL version 2.\r
+\r
+3.0, patchlevel 6 -- Tue Aug 24 15:16:13 PDT 1993 -- Tim Mann\r
+\r
+* We no longer display intermediate positions or intermediate comments\r
+while loading a game file with -timeDelay 0 or loading an opening to\r
+start up a -matchMode game.\r
+\r
+* Loading an empty game from an xboard save file now gives a status\r
+message "No moves in game" instead of an error popup saying "Game not\r
+found in file."\r
+\r
+* Added comment.awk to distribution.\r
+\r
+3.0, patchlevel 5 -- Tue Aug 17 16:45:54 PDT 1993 -- Tim Mann\r
+\r
+* Bug fix:  xboard would crash if it couldn't get all its colors; now\r
+it switches to monoMode instead.  Also, xboard was trying to convert\r
+color resources even when using a b/w display.  Reported by Larry\r
+Rogers.\r
+\r
+* Bug fix: Declared fields of TimeMark as signed so that we get signed\r
+instead of unsigned arithmetic.  SubtractTimeMarks was breaking on\r
+Alpha AXP (which has 64-bit longs) with old declarations.  Reported by\r
+Michel van der List.\r
+\r
+* Bug fixes:  Keyboard accelerators now work after EditComment window is\r
+popped down.  Iconize keyboard accelerator now works even if xboard\r
+was started with -iconic flag and later deiconized.\r
+\r
+* Bug fix:  The routine that tests whether a move is illegal because it\r
+would leave you in check was not handling e.p. captures properly.\r
+Reported by Patrick Surry.\r
+\r
+* Bug (?) fix:  Was adding time to clocks at time control even when\r
+loading a game file.  Actually it's not entirely clear how time\r
+controls should be dealt with when some moves are loaded from a file\r
+or clicked in with ForceMoves.  For now ForceMoves mode does add the\r
+time (because it can be used to change moves during a live game), but\r
+LoadGame mode does not.\r
+\r
+* Updated usage message.\r
+\r
+* Previous attempted fix to matchMode had broken TwoMachines mode and\r
+generally needed more work.  Also simplified command line interface to\r
+matchMode.\r
+\r
+3.0, patchlevel 4 -- Thu Aug  5 14:17:18 PDT 1993 -- Tim Mann\r
+\r
+* Thanks again to the beta testers listed for 3.0 patchlevel 3, and also\r
+Desnogues, Steve Cariglia, Niklas Engsner, Mark Silver, and Roger Rowe.\r
+\r
+* Reorganized man page, splitting OPTIONS into subsections.\r
+\r
+* matchMode was very broken; fixed.\r
+\r
+* Changed convention for turning off command line options from --opt\r
+to -xopt, to be less inconsistent with GNU standards.  Also changed\r
+the long command line options to take True/False arguments like\r
+resources; seems to make more sense this way.\r
+\r
+* Added AlwaysQueen option -- suppresses promotion dialog and always\r
+promotes to a queen if you move a pawn to the last rank.  Has no\r
+effect on gnuchess (or your ICS opponents!) -- they can still\r
+underpromote.\r
+\r
+* Subtracted an extra fudge term when determining how wide message and\r
+title widgets should be.  This fixes a problem some beta testers had.\r
+Wish I knew why it's needed.\r
+\r
+* Bugfix in parser; symptom was that you couldn't do LoadGame after\r
+observing a game on ICS.\r
+\r
+* Bugfix in Forward; didn't work after game ended while Pause was turned on.\r
+\r
+* Removed bogus execute bits on .h files.\r
+\r
+* Use REMOTE_SHELL and TELNET_PROGRAM definitions.\r
+\r
+* MachineWhite and MachineBlack now work from TwoMachines mode.\r
+\r
+* Popping down an error message with the [ok] button was not turning off\r
+the errorUp flag, so the next move would cause xboard to try to pop it\r
+down again, resulting in a wild memory reference and sometimes a crash.\r
+\r
+3.0, patchlevel 3 -- Tue Aug  3 17:40:27 1993  -- Tim Mann\r
+\r
+* Thanks to my beta testers: Patrick Surry, Takuya Kojima, Robert J. Luoma,\r
+Chris L.  Petroff, Richard K. Lloyd, Michel van der List, Craig Metz,\r
+Antoon Frehe, Simon Clift, Shelly, Eric Peterson, Christopher Mitchell,\r
+Martin Koch, Ed Hanway, Steve Booth, Udo, Ken Hobday, and Joseph Duhamel.\r
+\r
+* Improved error messages for trying to move the wrong color pieces or\r
+to move when it's not your turn.\r
+\r
+* Special code for monoMode on 1-bit displays now understands displays\r
+where 1=white and 0=black.\r
+\r
+* Declare getenv() if <stdlib.h> not included; avoids a compiler warning.\r
+\r
+* Documented borderXoffset and borderYoffset.\r
+\r
+* Added -titleInWindow option for use with X window managers that\r
+don't let us set the title in the window banner.\r
+\r
+* Fixed error message printing in WinBoard; system error messages no\r
+longer appear as numeric codes.\r
+\r
+* The error message popup is now non-modal; you don't have to press the\r
+[ok] button before you can do something else.  In addition, the popup is\r
+positioned so that it doesn't cover up the board (too much), and making a\r
+move or otherwise clicking on the board pops it down.  (Not implemented in\r
+WinBoard.)\r
+\r
+* You can now call your opponent's flag in ICS mode by clicking on his\r
+clock. \r
+\r
+* Fixed minor bugs in -flipView option and documented exactly how xboard\r
+decides which way to flip the view.\r
+\r
+3.0, patchlevel 2 -- Fri Jul 30 22:20:23 PDT 1993 -- Tim Mann\r
+\r
+* Added Autosave to Options menu.  Would be better to have Save\r
+Options dialog as in WinBoard, but this was quick to do and gives the\r
+most-needed functionality.\r
+\r
+* Changed "Reload Game" on menu to "Reload Same Game".\r
+\r
+3.0, patchlevel 1 -- Thu Jul  8 21:22:59 PDT 1993 -- Tim Mann\r
+\r
+* Sent a copy of patchlevel 1 to Patrick Surry to beta-test.\r
+\r
+* Added -cmail option that sets appData.cmailMode.  Currently a no-op.\r
+In the future this may set special modes for use by the cmail script\r
+for playing chess by email.\r
+\r
+* Added LoadNextGame, LoadPreviousGame, and ReloadGame to File menu.\r
+ReloadGame suggested by Patrick Surry.\r
+\r
+* Added -flipView command-line option.  Suggested by Patrick Surry.\r
+\r
+* Fixed bugs in parser.l:  (1) Pattern for "# xboard game file ..."\r
+needed to match to end of line.  (2) Start of a new file was not matching\r
+the ^ start-of-line character.  The fix for this is a kludge.\r
+\r
+* Made game counting code in LoadGame more robust, and made LoadGame\r
+able to detect the end of a saved partial game (by noticing the start\r
+of the next game) in game files created by XBoard itself.  We don't\r
+try to find the start of the next game that way in other kinds of game\r
+files, because the only way I can think of to do that is to look for\r
+another move #1, and that technique gets too many false hits.\r
+\r
+* Fixed recently introduced bug in LoadGame when game starts with a\r
+position diagram.\r
+\r
+3.0, patchlevel 0 -- Fri Jun 25 14:17:17 PDT 1993 -- Tim Mann\r
+\r
+* Changes in this patchlevel were too numerous to list.  Larger ones are\r
+listed below.\r
+\r
+* Added a popup dialog to enter and edit comments.  Inspired by some\r
+code from Patrick Surry.  Changed the normal read-only comment popup\r
+to the same style.\r
+\r
+* Added ICS init script feature from Karl Schwamb.\r
+\r
+* Added some ESIX fixes and OMIT_SOCKETS ifdef option, from Kayvan Sylvan.\r
+\r
+* Revamped code to allow use of flex instead of lex on parser.l.\r
+Using flex requires adding -DFLEX to defines in Imakefile.\r
+\r
+* Source code is split into front end (xboard.c), which knows about X\r
+and Unix, and back end (backend.c), which knows about chess, gnuchess,\r
+and the ICS.  There is also a front end for Windows NT.\r
+\r
+* Boolean command line options now use "-foo" to turn on and "--foo"\r
+to turn off instead of "-foo true" and "-foo false".  [Later -xfoo;\r
+see above.] \r
+\r
+* Added menu commands to control autoflag, bell, and coords options.\r
+\r
+* User interface has a new look: (1) Menu bar instead of array of\r
+buttons.  A few very commonly used features have small buttons in\r
+addition to being on the menus. (2) Large font for clock.  (3) Pop-up\r
+dialogs for errors.\r
+\r
+2.1, patchlevel 11 -- Sat Jun  5 00:01:01 PDT 1993 -- mann@src.dec.com\r
+\r
+* Added code to deal with "wild" games on ICS.  This includes allowing\r
+castling with the king on d1 or d8, which is allowed in wild(1) games\r
+if the king started there.  Notation is o-o to castle "short"---to\r
+whichever side the king is closer to---and o-o-o to castle "long."\r
+Right now wild castling is always allowed by xboard; we rely on ICS or\r
+gnuchess to reject it when we aren't really in wild mode.\r
+\r
+* memcpy call had arguments in wrong order.\r
+\r
+* Removed April Fool code\r
+\r
+2.1, patchlevel 10 -- Mon Feb 15 10:19:31 PST 1993 -- mann@src.dec.com\r
+\r
+* Avoid trying to select on a pipe when using System V.  Needed to\r
+copy some code from InitChessProgram() up into establish().\r
+\r
+* Bug fix in disambiguating pawn moves like "ed".\r
+\r
+* Fix to error handling in ReceiveFromProgram.\r
+\r
+* Bug fix: entering EditPosition mode with black to play highlighted\r
+White's clock instead of Black's.\r
+\r
+* Added telnetProgram resource in case "telnet" is not the name of the\r
+telnet program.\r
+\r
+2.1, patchlevel 9 -- Fri Jan 22 19:08:27 PST 1993 -- mann@src.dec.com\r
+\r
+* Entering Force Moves mode clears "flag has fallen" messages from display.\r
+\r
+* ICS host name can now be in numeric format; for example 128.2.232.4.\r
+\r
+* Bug fix: LegalityTest was failing to test whether a pawn move was\r
+illegal because the move would discover a check.\r
+\r
+* Handle ICS message "mann asserts a win over manntest, who disconnected."\r
+\r
+* Bug fix: A recent change to PromotionCallBack had broken\r
+underpromotion to a knight.\r
+\r
+* Bug fix: In EditPosition mode, dragging a piece onto a square border\r
+would make it vanish.  xboard wasn't distinguishing this case from\r
+dragging the piece off the board.  Thanks to Matthew Kidd.\r
+\r
+* Removed "static" declaration from yywrap for compatibility with IRIX\r
+version of lex.  Thanks to stiller@blaze.cs.jhu.edu.\r
+\r
+* Added substitutes for bzero, bcopy, and gethostname for Solaris\r
+SVR4.  Thanks to Michael Grant.\r
+\r
+* Bug fixes to queen move disambiguation.  Bugs showed up only when\r
+promotion resulted in more than one queen on the board.\r
+\r
+2.1, patchlevel 8 -- Fri Dec 11 17:54:18 PST 1992 -- mann@src.dec.com\r
+\r
+* parser bug fix: It now really works to leave off the piece a pawn is\r
+promoting to and let it default to queen.\r
+\r
+* When starting to observe or play an ICS game, don't draw board in\r
+initial position and then immediately redraw it in the current\r
+position.\r
+\r
+* Handle ICS messages when an "abuser" forfeits a game by\r
+disconnecting and when a game is aborted ("removed") by an\r
+administrator.\r
+\r
+* Bug fix: A user move when in LoadGame+Pause mode was resuming the\r
+game load instead of putting us in force mode.\r
+\r
+* It seems that crashes inside sscanf when xboard is compiled with gcc\r
+(as on IBM PS/2 AIX, mentioned below, and also on VAX Ultrix 3.1) are\r
+caused by an incompatibility between gcc and the sscanf implementation\r
+on these platforms.  A workaround is to specify -fwritable-strings to\r
+gcc (see the gcc documentation).  Added info on how to do this to the\r
+Imakefile.  Thanks to Tom McConnell for this information.\r
+\r
+* Clocks are allowed to go negative.  This is mostly for ICS\r
+compatibility, but it affects gnuchess mode too.  Also, we give the\r
+time bonus when a player hits the time control boundary even if his\r
+flag is already down.  This choice is a bit debatable, but it makes\r
+things look better when you are in TwoMachines mode and gnuchess's\r
+time management screws up causing it to exceed its time limit.\r
+\r
+* Implemented move legality checking code.  Moves made with the mouse\r
+or parsed from a file are checked for legality before being made.\r
+This is mostly in preparation for future extensions, such as\r
+human-human play.  For now it makes -noChessProgram mode more useful.\r
+\r
+* If the user takes back moves, we restore the clocks to the earlier\r
+settings.\r
+\r
+* We now handle the output of the ICS oldmoves command, including\r
+parsing the game end condition.\r
+\r
+* Added autoCallFlag mode.\r
+\r
+* Fixed glitches in the medium size outline king and rook bitmaps, and\r
+touched up the medium size solid king and outline queen.\r
+\r
+* bug fix: DisplayMove would not display backwardMostMove - 1.\r
+\r
+* Added CallFlag button and removed AcceptMatch.  CallFlag is more\r
+important with new ICS, and accepting the current match offer is easy\r
+with the new ICS command "accept" (can be abbreviated "ac").\r
+\r
+* LoadGame and LoadPosition display tail of file name (plus index\r
+number, if any) as title.\r
+\r
+* MachineWhite, MachineBlack, and TwoMachines now work properly from\r
+LoadGame and LoadGame+Pause mode.\r
+\r
+* Use o-o and o-o-o to castle on ICS, not 00 and 000.\r
+\r
+* Stripped out code for old ICS messages; new ICS is now installed.\r
+\r
+* Bug fix: don't offer autosave when paused during LoadGame.\r
+\r
+2.1, patchlevel 7 - Fri Dec 11 17:40:56 PST 1992 - mann@src.dec.com\r
+\r
+* Track change to "Illegal move" message in new ICS.\r
+\r
+2.1, patchlevel 6 -- Tue Dec  8 10:48:44 PST 1992 -- mann@src.dec.com\r
+\r
+* Kludged around bug in keeping comment popup where you put it by\r
+adding borderXoffset and borderYoffset resources that give the width\r
+of the borders added by the window manager.  Yucch.\r
+\r
+* Changed searchDepth kludge back to using "help" instead of "bd"; the\r
+latter didn't work because the output contains a line starting with\r
+"White", so we think gnuchess is telling us that White won.  Oops.\r
+\r
+* Removed some code that uses an X11R5 feature, XrmGetDatabase.\r
+Without this, the auto font sizing code is harder to make work, so to\r
+keep my sanity I had to change it to affect only the fonts that appear\r
+in the main window and the comment popup, not the other popups.  Maybe\r
+this is better anyway.\r
+\r
+* AcceptMatch button now works after a counterchallenge, too.\r
+\r
+* Added code for more variants of messages about games being adjourned\r
+or aborted.  These messages need to be unified in new version of ICS.\r
+\r
+* Added workaround for minor bug in ICS; game number on first board\r
+can be wrong.\r
+\r
+* Removed code to say "refresh n" instead of "refresh"; was broken and\r
+wasn't needed anyway.\r
+\r
+* Added missing casts for compilers that distinguish enums from ints\r
+and missing cast in connect call.\r
+\r
+* Added code to recognize "both sides are out of time" draw message\r
+proposed for next version of ICS.\r
+\r
+* Thanks to Danny Sleator and Joe Peterson for bug reports.\r
+\r
+2.1, patchlevel 5 -- Sun Dec  6 19:52:40 PST 1992 -- mann@src.dec.com\r
+\r
+* Removed gcc and CDEBUGFLAGS from Imakefile.\r
+\r
+* Corrected setting of mode to ForceMoves when game file ends or\r
+contains an AmbiguousMove or BadMove.  Previous bug was harmless.\r
+\r
+* Added AcceptMatch button and mention of 50-move rule for Draw button\r
+to man page.\r
+\r
+2.1, patchlevel 4 -- Sun Dec  6 02:55:42 PST 1992 -- mann@src.dec.com\r
+\r
+* Now handles revised messages from new version of ICS.  New ICS is\r
+not released yet, so this code might change further.  Next patchlevel\r
+will remove support for old ICS; both are there now.\r
+\r
+* Initial processing for a new game being watched or played now\r
+happens when we see the first board image.  Removes the need to parse\r
+some messages and unifies some code.\r
+\r
+2.1, patchlevel 3 -- Tue Dec  1 19:40:40 PST 1992 -- mann@src.dec.com\r
+\r
+* Handles ICS messages "Draw : neither player has mating\r
+material" and "Draw : White has no material, Black has no time."\r
+\r
+* Added AcceptMatch button for ICS mode.\r
+\r
+* Fixed bug in previous fix to yylexstr().\r
+\r
+* Fixed bugs in code for loading old position files that don't start\r
+with "#" and for handling case where user asked for nth position in\r
+file but there aren't that many.\r
+\r
+* Handles ICS message "* has restored your old game"\r
+\r
+* ResetProc always clears title line now.\r
+\r
+* Don't issue just "refresh" when watching a game; use game number.\r
+Upcoming new version of ICS may need this.\r
+\r
+* Added code to try to prevent user from watching and/or playing more\r
+than one game at a time.  There is a race condition inherent here; if\r
+we get more than one board from the game before our command to stop\r
+watching it takes effect, we'll think the user started it again.  Not\r
+clear how to fix this.\r
+\r
+* Redid ParseBoard8 to use sscanf.  Code is a good deal cleaner now.\r
+Also, we now parse out the game number too, though we don't make much\r
+use of it yet.\r
+\r
+* (Tried to put in a feature that recognizes the current game in a\r
+game file must have ended when we see the start of a new one, but had\r
+to disable it because we have too many false hits with the current\r
+parser, especially in gnuchess listing files.)\r
+\r
+* Moves read from game files or received from ICS are now translated\r
+into canonical algebraic form just like all other moves.  Minor nit:\r
+If you use Reset while playing or observing a game in ICS mode, the\r
+game history (including the current board position) is lost, so the\r
+next move of the current game can't be translated.\r
+\r
+* Default fonts now vary with board size, and are chosen by pixel size\r
+instead of point size (since piece bitmaps have a fixed pixel size).\r
+\r
+* Bug fix: An extra Forward was required to skip over time indications\r
+in game files.\r
+\r
+2.1 patchlevel 2 -- Fri Nov 27 23:30:00 PST 1992 -- mann@src.dec.com\r
+\r
+* If you move the comment popup, the next time it pops up it will come\r
+back where you put it.\r
+\r
+* Fixed yylexstr() so calls to it can be interspersed with calls to\r
+yylex().\r
+\r
+* Fixed bugs in Forward/Backward while in LoadGame mode.\r
+\r
+* Changed Save{Game,Position} functions to append instead of\r
+overwriting if file exists.  Changed Load{Game,Position} functions to\r
+deal with multiple games/positions per file.\r
+\r
+* Changed load{Game,Position}File resources to trigger automatic load\r
+on program startup.  Changed save{Game,Position}File resources to\r
+trigger automatic save after every completed game and on program exit.\r
+\r
+* Added autoSaveGames mode.\r
+\r
+* Fixed bug with PromoPiece in call to MakeAlg from MakeMove.\r
+\r
+* Many changes to get rid of picky compiler warnings and generally\r
+clean up the code.\r
+\r
+2.1 patchlevel 1 -- Fri Nov 27 02:45:00 PST 1992 -- mann@src.dec.com\r
+\r
+* A last minute change before patchlevel 0 went out broke\r
+ParseGameHistory().  Immediately fixed in patchlevel 1.\r
+\r
+Version 2.1, patchlevel 0 -- Fri Nov 27 02:00:00 PST 1992 -- mann@src.dec.com\r
+\r
+* Uses "time" command of gnuchess 4.0 and following to keep clocks in\r
+sync.  Still works with older versions without this command; we test\r
+whether the command is present the first time each chess program is\r
+started.\r
+\r
+* File name dialog pops up under the mouse cursor, so that it's got the\r
+keyboard focus if the window manager is using pointer focus.\r
+\r
+* Attempts to move the wrong color piece or an empty square are filtered\r
+out in xboard instead of being passed on to GNU Chess or the ICS.\r
+\r
+* The reason a game ended is now remembered even if you move backward\r
+and forward after it ends.  It is forgotten only if you make a move\r
+(which is as it should be---this is now a different game, which hasn't\r
+ended yet).  The message saying why the game ended no longer wipes out\r
+the last move.\r
+\r
+* Pause, Backward, Forward, ForceMoves, and EditPosition now work from\r
+TwoMachines mode.\r
+\r
+* Forward and Backward now change only the board display unless you\r
+are in ForceMoves mode.  Pause mode keeps new moves that are received\r
+from being displayed on your screen until you unpause (or use\r
+Forward).\r
+\r
+* Added option to ring the bell after opponents' moves.\r
+\r
+* Saved games that start from other than the standard initial position\r
+now begin with a postion diagram as in saved position files.  The\r
+loader is modified to understand such save files.\r
+\r
+* Improved error checking when trying to read from gnuchess.\r
+\r
+* Parser understands things that look like time indications, e.g., (0:12),\r
+instead of popping them up as comments.\r
+\r
+* Send "quit" to gnuchess before trying to kill it.  I needed this\r
+locally because sending a SIGTERM to rsh was not killing the remote\r
+program on some internal field test systems we have.\r
+\r
+* Merged in code from John Chanak to make xboard a front end to the\r
+Internet Chess Server, and added several improvements of my own.\r
+(These include parsing end of game messages, loading the current state\r
+and previous history of a game that's joined in progress via "watch"\r
+or "load", automatic switch from board style 1 to 8 when needed,\r
+removing irrelevant buttons and adding some new ones, adding the\r
+useTelnet and gateway resources, and miscellaneous code cleanup, bug\r
+fixes, and documentation.)  Many thanks to John for writing and\r
+contributing the initial version of this code.\r
+\r
+Fri Oct 30 20:16:40 PST 1992 (patchlevel 25) mann@src.dec.com\r
+\r
+* gnuchess now castles by sending us "o-o" or "o-o-o" (starting with a\r
+preliminary version of 4.0.pl60 that I have).  Added code to handle\r
+this.  The old format ("e1g1", etc.) still works too.\r
+\r
+* Added code to format moves in normal abbreviated algebraic notation\r
+(for example, e4, exd4, f8Q, Nf6, 0-0) instead of coordinate algebraic\r
+(for example, e2e4, e3d4, f7f8q, g1f6, e1g1).  Moves entered with the\r
+mouse or received from gnuchess are translated into this canonical\r
+format for display on the message line or in saved game files.  Moves\r
+read from game files are not translated, however; they are shown and\r
+saved just as they appear in the file.\r
+\r
+Mon Sep 14 13:19:01 PDT 1992 (patchlevel 24) mann@src.dec.com\r
+\r
+* It's not really correct to write an ep capture of a pawn on e5 as\r
+fxe5; this should be written as fxe6 because e6 is where the capturing\r
+pawn ends up.  Nevertheless, the parser now interprets fxe5 as the ep\r
+capture f5xe6 unless there is a pawn on f4, in which case it\r
+interprets fxe5 as f4xe5.  By design, the parser does not flag fxe5 as\r
+ambiguous if there are pawns on both f4 and f5; instead it prefers the\r
+more legitimate f4xe5 interpretation.\r
+\r
+* A move like fxe6 or fe6 is now interpreted as an e.p. capture of the\r
+pawn on e5 if there is one there and e6 is empty.\r
+\r
+* A move like fxe5 can no longer be interpreted as an e.p. capture if\r
+there isn't a pawn on e5 to be captured.  Previously this could happen\r
+erroneously if there were pawns on both f4 and f5, and the f4 pawn was\r
+capturing a piece on e5.\r
+\r
+* The parser no longer munges the move it is parsing; in the past, for\r
+instance, it would remove the "x" from a move like dxc5 before echoing\r
+it to the screen.\r
+\r
+* The parser now detects when a move is ambiguous and returns an\r
+error, instead of arbitrarily choosing one possibility as it used to.\r
+\r
+Mon Aug 10 18:40:47 PDT 1992 (patchlevel 23) mann@src.dec.com\r
+\r
+* Added code so parser can handle fully qualified algebraic, e.g.,\r
+Ng1-f3, N/g1-f3, Ng1f3, or even Pe2-e4.  The "P" and "/" work only for\r
+fully qualified moves, not generally.\r
+\r
+* Fixed parser bugs in handling moves with rank or file disambiguator,\r
+e.g. N1f3 or Ngf3.\r
+\r
+Mon Jul  6 17:55:32 PDT 1992 (patchlevel 22) mann@src.dec.com\r
+\r
+* AIXV3 patch from Tom McConnell; thanks!\r
+\r
+* After hitting the Backward button we see the last move made instead of\r
+the word "Pausing" displayed.\r
+\r
+* Fixed a couple of problems compiling on IRIX; thanks to Michel Arsenault\r
+and Alan Walsh for bug reports and help with fixes.\r
+\r
+* Added optional display of algebraic notation coordinates along left and\r
+bottom edges of board.  This was inspired by some code from Jean-Christophe\r
+Engel; thanks!\r
+\r
+* Swapped EditPosition and Pause buttons to reduce danger of losing the\r
+game in progress by hitting EditPosition when you wanted Backward.  Thanks\r
+to Ove Lundberg for complaining (though it bugged me too).\r
+\r
+* Despite one complaint, I kept the feature of changing both clocks when black\r
+makes time control, rather than changing each individually when the player\r
+involved makes it.  This is to avoid having it look like White is way ahead on\r
+time while Black is thinking about the last move of the time control period\r
+(i.e., when White has made time control but Black hasn't yet).\r
+\r
+* Corrected clocks to work as in real tournaments.  Time is *added* when you\r
+reach time control; previously the clocks were simply set to the length of the\r
+new time period.  Also, when a player's flag falls, he still does not receive a\r
+new time allotment at the next time control, but his opponent does still\r
+receive more time if *his* flag has not fallen; previously, time controls were\r
+ignored for both players if either flag fell.  I forget who reported this bug.\r
+\r
+* Added a small ESIX patch from Kayvan Sylvan.\r
+\r
+Mon Jun 22 13:24:38 PDT 1992 (patchlevel 21)\r
+\r
+* Added some SVR4 support code from Ronald Cole.  It's Greek to me.\r
+\r
+* Note:  Stephen Meatheringham reports a bug causing xboard to crash with an\r
+error from the X server when run on a Sun Sparcstation IPX with Solaris 1.0.1\r
+and OpenWindows 3.0.  This bug has not been tracked down yet.\r
+\r
+* Fixed a problem with ATTENTION code.  On some operating systems, you have to\r
+be even more cautious about when you send a SIGINT to gnuchess, because the\r
+signal handler gets deinstalled each time it is used, and gnuchess does not\r
+reinstall it immediately.  In particular, if you send a SIGINT and make an\r
+illegal move or ask for a hint, gnuchess does not reinstall the handler until\r
+*after* you make your next move, so you had better not send a SIGINT before\r
+it.  I put a workaround for this case into xboard; I hope there are no more.\r
+\r
+* The ATTENTION code is needed when compiling for the ESIX operating system,\r
+because ESIX has a bug in the FIONREAD ioctl, so the code in gnuchess that\r
+lets you interrupt its thinking on your time just by typing in your move does\r
+not work.  Perhaps gnuchess will have a workaround for this eventually.\r
+\r
+* Fixed yet another bug in using XtGetValues; code to inhibit shell resizing\r
+was leaving a null pointer as the place to store the current sizes.\r
+\r
+* Man page fixes: corrected -sl to -sd, updated LIMITATIONS.\r
+\r
+* Added include of <sys/time.h> conditional on HAS_GETTIMEOFDAY.  I hope this\r
+works for all systems; on mine, <time.h> and <sys/time.h> are the same file,\r
+but with an #ifndef that makes it harmless to include both.\r
+\r
+* Thanks for reports from Mike Pearlman, Stephen Meatheringham, Kayvan Sylvan,\r
+d87-mal@nada.kth.se, Urban Koistinen, and Ronald Cole.\r
+\r
+Mon Jun  8 11:39:18 PDT 1992 (patchlevel 20)\r
+\r
+* Documented default value of initString and explained what it means.  This\r
+paragraph also serves to inform the user that xboard by default will tell\r
+gnuchess to think on his time, something one user apparently didn't understand.\r
+\r
+* Redid -searchDepth (formerly -searchLevel) and -searchTime code.  They both\r
+work correctly with gnuchess 3.1 now.  The -searchDepth option also works\r
+correctly with gnuchess 4.0.  The -searchTime option does not work with\r
+gnuchess 4.0.pl50 or earlier because those gnuchess versions do not have a\r
+working searchTime feature.  Instead of having xboard do a half-baked emulation\r
+of this feature by using a 1-move time control, I will be submitting a patch to\r
+the gnuchess folks to restore the feature as in 3.1.\r
+\r
+* Improved clock code.  It now keeps accurate track of fractional seconds of\r
+clock running time, if your system has gettimeofday(); if not, it is generous\r
+about them---if a clock has been going for n.m seconds when it is stopped, only\r
+n seconds are charged.  Previously, xboard would charge one second immediately\r
+when a clock was started, so if n.m had elapsed when it was stopped, n+1 would\r
+be charged.  This should stop xboard from thinking gnuchess has let its flag\r
+fall on the last move of a time control, as it often did before.  I also\r
+improved the comments and condensed the code a little.  I hope there are no\r
+systems that have X11 and don't have gettimeofday(), but if there are, I'd like\r
+to know what to replace it with.\r
+\r
+* "Flag dropped" messages now show up on the top line, beside the clocks, so\r
+that they don't obscure more interesting messages on the second line.\r
+\r
+* Fixed confusion of NULL and '\000'.\r
+\r
+* Include time.h to get ctime() declaration.\r
+\r
+* Fix to "parser bug" messages in parser.l.\r
+\r
+* Changed code to work with old-fashioned tolower() macro that requires its\r
+argument to be an uppercase letter.\r
+\r
+* Minor fix to some usage error messages; was reversing program name and\r
+erroneous argument value.\r
+\r
+* Thanks to Mitch Wright, Ranier Orth, and Henrik Schmiediche for bug reports.\r
+\r
+Fri Jun  5 13:06:08 PDT 1992 (patchlevel 19)\r
+\r
+* Note: xboard does not seem to work when compiled with gcc 1.40 on a\r
+PS/2 running AIX.  It crashes at the sscanf in line 768 of xboard.c.\r
+You can work around the problem by specifying the -timeControl option\r
+on the command line instead of defaulting it.  This does not seem to\r
+be a bug in xboard itself; it runs okay on PS/2 AIX when compiled with\r
+MetaWare High C.  [But see 2.1.pl8 above.]\r
+\r
+* Removed bogus files from distribution.\r
+\r
+* Changed variable name that conflicted with SVR4 ttyname function.\r
+\r
+* Thanks to Christoph Strozyk for another bug report, and to several\r
+of the folks mentioned under patchlevel 18 for testing it.\r
+\r
+Wed Jun  3 17:50:37 PDT 1992 (patchlevel 18) mann@src.dec.com\r
+\r
+* Added an include of sys/fcntl.h to pick up the definition of O_RDWR for\r
+System V users.\r
+\r
+* Fixed a bug in CatchPipeSignal; was testing the wrong variable to determine\r
+which chess program got the signal.\r
+\r
+* Removed the declaration of strrchr, which was causing problems for some\r
+people, and added an include of <string.h> or <strings.h> instead.\r
+\r
+* Fixed a bunch of type errors uncovered by compilers that check more carefully\r
+than the one I was using.  I just patched many of them with casts---typically\r
+cases where a function didn't take the same number and type of arguments as the\r
+X header file prototype said it should---because I didn't see any other way to\r
+fix them.  The versions of the X header files that I have don't actually have\r
+full prototypes for these function types; they declare only the return type and\r
+just give the argument types as comments.\r
+\r
+* InitChessProgram returns immediately if chess program died while we were\r
+waiting for it to say "Chess".  I think this fixes a bug that could make xboard\r
+crash or go into an infinite loop printing "Warning: Select failed; error code\r
+9" if gnuchess crashed there.\r
+\r
+* Removed code that tries to put the file descriptor used to read messages from\r
+gnuchess into nonblocking mode.  I don't see how this kludge could ever have\r
+fixed the problem it was intended to (see below), and it seemed to be causing\r
+a race condition when we were waiting for the initial message from gnuchess\r
+after it started up.\r
+\r
+* Thanks to Richard K. Lloyd, Konstantinos Konstantinides, Mark\r
+Seiden, Erik Schoenfelder, Andreas Stolcke, Rainer Orth, Henry Thomas,\r
+and Kris Van Hees for bug reports and help with fixes.\r
+\r
+Sun May 31 08:00:00 PDT 1992 (patchlevel 17) Bart Massey bart@cs.uoregon.edu\r
+\r
+*  'xboard' suffered from a couple of serious bugs.  An initial\r
+   size needed to be given to the message label to avoid a race\r
+   condition (!) so I gave it some text (otherwise occasionally\r
+   xboard would fail because the message widget was 0 width under\r
+   MIT X11R4).  The sizes needed to be Dimension, not int, because\r
+   they were written in by Xt -- on my big-endian box Dimension\r
+   is short, causing chaos.  Also, I hacked a declaration in for\r
+   strrchr() to shut the compiler up -- this is arguably a kludge,\r
+   but I couldn't think of anything better; maybe you can.\r
+\r
+Fri May 22 13:40:50 PDT 1992 (patchlevel 16)\r
+\r
+* First real (non-beta) release of version 2.0.\r
+\r
+* Added GNU copyleft notices covering version 2.0 enhancements.\r
+\r
+Thu May 21 12:30:09 PDT 1992 (patchlevel 15)\r
+\r
+* Removed -g from Imakefile.\r
+\r
+* Added casts in parser.l to prevent warning messages from some C compilers.\r
+\r
+* Bugfix: code to exit if chess program couldn't be started had bug in error\r
+message printing.\r
+\r
+Tue May 19 11:58:06 PDT 1992 (patchlevel 14)\r
+\r
+* Fixes one small bug: If LoadGame does not find a game in the file, it resets\r
+xboard to BeginningOfGame mode (as if the Reset button was pressed), instead of\r
+leaving it in LoadGame mode.\r
+\r
+Mon Apr 13 18:32:27 PDT 1992 (patchlevel 13)\r
+\r
+* Improved error handling when gnuchessx crashes.  Now displays a message and\r
+enters EndOfGame state without exiting.  This should help with diagnosing\r
+gnuchessx problems, since the position and move history are not lost.\r
+\r
+* Debugged man page.\r
+\r
+Version 2.0 -- Thu Apr  2 16:04:54 PST 1992 (patchlevel 12)\r
+\r
+* Added small 40x40 pixel pieces; board size now specified as small, medium, or\r
+large. \r
+\r
+* Improved man page.\r
+\r
+* Saved position files now say "white to play" if it's white's move.\r
+\r
+* SavePosition while in EditPosition mode now gets side to play right.\r
+\r
+* Made "Pawn" the default on edit position menus.\r
+\r
+* Removed "To play" from edit position menus, since it's redundant.  Left\r
+support code in so it can be restored if someone wants it.\r
+\r
+* Tightened parser's definition of a move number to help further with skipping\r
+over stuff before the first move.\r
+\r
+* Put back feature of skipping over stuff in game files before a start of game\r
+marker.  This helps when loading electronic mail messages that have things\r
+like "00" in the header (looks like castling), or that talk about moves in\r
+running text before the actual game score.  Tradeoff is that we can't load\r
+games that don't either have move numbers or say "gnuchess game" just before\r
+the moves.\r
+\r
+* Changed version number to 2.0 because others have used "1.3" for patched\r
+versions of 1.2.  Display version number and patchlevel at startup.\r
+\r
+Thu Apr  2 15:30:22 PST 1992 (patchlevel 11)\r
+\r
+* Bugfix:  Match started with TwoMachines button now handles the case where\r
+user loaded/edited a position *and* forced some moves.\r
+\r
+* added error message feedback to many cases where the user's button press is\r
+rejected because it isn't allowed in the current mode.\r
+\r
+* added -noChessProgram option to allow use as a passive chessboard without\r
+gnuchess, replacing old buggy scheme that tried to do this automatically when\r
+gnuchess was not found on the search path.\r
+\r
+* parser accepts "=" in front of promotion piece\r
+\r
+* parser accepts ":" notation for captures\r
+\r
+* Removed SwitchSides button to make room for EditPosition.  Left code in\r
+place, ifdef'ed out.\r
+\r
+* Added EditPosition mode.\r
+\r
+* Reformatted xboard.c to eliminate long lines.\r
+\r
+* Promotion popup now appears near rank to which pawn is moving.\r
+\r
+* UI improvement: Button representing current program mode is kept highlighted.\r
+\r
+* Bug fix:  Hint button is now disabled when machine is on move.\r
+\r
+Sat Mar 21 14:57:37 PST 1992 (patchlevel 10)\r
+\r
+* TwoMachines now works from MachineWhite or MachineBlack mode.\r
+\r
+* ForceMoves and Backward/Forward now work at the end of a game started by\r
+the TwoMachines button.\r
+\r
+* Sends o-o or o-o-o to gnuchess instead of O-O or O-O-O.\r
+\r
+* Bug fix:  SwitchSides button is now disabled when machine is on move.\r
+\r
+* Added -searchLevel option and corrected handling of -searchTime to reflect\r
+the way gnuchess really handles command line options instead of what the\r
+documentation used to say.  Allowed optional ":seconds" on times.\r
+\r
+Tue Mar 17 21:00:35 PST 1992 (patchlevel 9)\r
+\r
+* Removed non-working code that tried to recover when a remote chess program\r
+could not be started; now exits with a message instead.\r
+\r
+* Now waits for chess program to print its first message (normally "Chess")\r
+before sending it any commands.\r
+\r
+* Matches between two machines can now start from a black-to-play position or\r
+black-to-play opening.\r
+\r
+* Bug fix: The program would sometimes lose track of the board position after\r
+the end of the game, drawing a board full of white pawns next time it got an X\r
+redraw request.  Now fixed.\r
+\r
+* Cleaned up handling of illegal moves in game files.  Now we just stop reading\r
+and go into ForceMoves mode.\r
+\r
+* Saved games against gnuchess indicate who won (restored and debugged 1.2\r
+feature). \r
+\r
+* Setting -searchTime turns off -clockMode.\r
+\r
+* My trick for setting up a black-to-play position broke in the transition from\r
+gnuchess 3.1+ to 4.0.  Installed a different trick that works with both.\r
+\r
+* Bug fix: Was clobbering memory by mallocing one byte too few for the file\r
+name in SetupPositionFromFileProc.  This usually resulted in a crash on the\r
+second attempt to load a position from a file.\r
+\r
+Mon Mar 16 16:49:00 PST 1992 (patchlevel 8)\r
+\r
+* Game and position files are saved in CHESSDIR as well as loaded from there.\r
+We actually chdir there, so gnuchess listing files also wind up there.\r
+\r
+* Underpromotion moves from gnuchess really work now.\r
+\r
+Sat Mar 14 14:55:24 PST 1992 (patchlevel 7)\r
+\r
+* Cleaned up lots of bugs and kruft in parser.l.  It's a wonder the old version\r
+worked at all.  Improved rejection of random text interspersed with the moves.\r
+\r
+* Relabeled buttons to reduce confusion (Play From File --> Load Game;\r
+Setup From File --> Load Position).\r
+\r
+* Bug fix:  Doesn't exit at the end of a game that was started by pressing\r
+the Two Machines button.\r
+\r
+* Bug fix:  Doesn't get confused if you hit Machine Black (White) while\r
+the machine is already playing black (white) and is on move.\r
+\r
+* Prints "White to play" or "Black to play" after loading a position file.\r
+\r
+* Bug fix:  No longer hangs if no start-of-game is found in a game file.\r
+\r
+* More permissive about game file format.  The first line is not assumed\r
+to be a header comment unless it starts with "#".  We don't insist on\r
+seeing a "1." before the first move.\r
+\r
+* Added pop-up dialog to allow underpromotion.  Moving a pawn to the last rank\r
+pops up a dialog to let you select what piece to promote to.  Also added code\r
+to handle underpromotion moves from gnuchess or from a game file correctly.\r
+\r
+* Added code to send SIGINT to gnuchess before trying to move, if gnuchess\r
+might be busy thinking on our time.  The code is ifdef'ed out because it's\r
+not necessary; only beta-test versions of gnuchess 4.0 at patchlevel 19 or\r
+below require it.\r
+\r
+Mon Feb 24 20:10:22 PST 1992\r
+\r
+* Merged fixes received from Stuart Cracraft and Mike McGann, to iconic mode\r
+and to ShutdownChessPrograms.  (They both sent the same fixes.)  I did not\r
+install the change that removed "easy" from the initialization string, so\r
+xboard will still try to run gnuchessx in "hard" mode (thinking on opponent's\r
+time) by sending this command.\r
+\r
+Version 1.3 -- Thu Dec 19 18:19:00 PST 1991  mann@src.dec.com (Tim Mann)\r
+\r
+* I've fixed a slew of bugs in this version of xboard:\r
+\r
+* You can now back up from the end of a game, even if gnuchess was playing\r
+against you.  Since gnuchess exits upon mate or draw (when it's not in force\r
+mode), this feature works by starting up a new copy of gnuchess and feeding it\r
+the saved starting position and moves.  Drawback: the new gnuchess starts with\r
+clocks at the beginning of a fresh time control.\r
+\r
+* Note: the "force" command to gnuchess is a toggle.  I fixed a couple of\r
+places in xboard where "force" was being issued when gnuchess was already in\r
+force mode, which resulted in chaos.  I don't know if they were in 1.2 or if I\r
+added them myself in the course of putting in new features.\r
+\r
+* ForceMoves button is now legal in PlayFromFile mode.  It closes the game file\r
+and lets you force moves (or go Backward) from whatever position you've\r
+reached.\r
+\r
+* The parser now recognizes "white resigns" and "black resigns" (in any\r
+combination of upper and lower case, with or without the closing "s").  These\r
+used to be misinterpreted as meaning "white wins" or "black wins" respectively!\r
+Added "1 - 0" and "0 - 1" as equivalents for "1-0" and "0-1".\r
+\r
+* I removed the parser feature of considering "!" as a comment delimiter.\r
+"!" is so common as an annotation in game scores that this feature seems like a\r
+very bad idea.\r
+\r
+* Added a wait() after each successful call to kill() to avoid leaving zombie\r
+processes around.\r
+\r
+* Removed the feature of putting an indication of how the game ended into the\r
+internal move list when playing from a file.  The only benefit of this was that\r
+it would get written back out if you saved the game at that point.  This\r
+feature doesn't seem too useful, since you are unlikely to save a game you've\r
+read in without making any changes, and it caused a lot of problems in the code\r
+and user interface.  The end condition is still displayed as a message when\r
+it's first read in from the file.  End conditions when playing against gnuchess\r
+are still saved, too.\r
+\r
+* programName is now the last file name component of argv[0], not all of it.\r
+\r
+* xboard.c got three compiler warnings due to arguments that didn't match the\r
+prototypes on X toolkit functions.  I got rid of them by adding some casts, and\r
+adding extra unused arguments to the ReceiveFromProgram function.\r
+\r
+* As I received it, the distribution had an extra period glued on the front\r
+of every line that started with a period.  This broke the manpage in an\r
+obvious way.  It also broke parser.l in a nonobvious way that stopped\r
+PlayFromFile from working.\r
+\r
+* Fixed one or two bugs where the clock was started when it shouldn't have\r
+been.  I think one example was if you tried an illegal move in ForceMoves mode.\r
+\r
+* Now starts the machine's clock if you hit MachineWhite when white is on move\r
+or MachineBlack when black is on move.\r
+\r
+* Now updates the to-move indicator (highlight on clock display) when you use\r
+Forward/Backward or ForceMoves.\r
+\r
+* gnuchess 3.1+ has a bug that makes it try to think on its opponent's time\r
+even when in force mode; this causes problems with xboard's SetupFromFile\r
+command because gnuchess's saved hint move is garbage after the new position is\r
+loaded, so gnuchess prints out an error message when it tries to think about\r
+what it would do if the user made this move.  Here is a patch for gnuchess\r
+3.1+:\r
+\r
+*** nondsp.c~   Mon Dec  2 12:37:18 1991\r
+*-- nondsp.c    Thu Dec 19 15:36:06 1991\r
+***************\r
+*** 1223,1229 ****\r
+    ok = flag.quit = false;\r
+    player = opponent;\r
+    ft = 0;\r
+!   if (hint > 0 && !flag.easy && Book == NULL)\r
+      {\r
+        fflush (stdout);\r
+        time0 = time ((long *) 0);\r
+*-- 1223,1229 ----\r
+    ok = flag.quit = false;\r
+    player = opponent;\r
+    ft = 0;\r
+!   if (hint > 0 && !flag.easy && Book == NULL && !flag.force)\r
+      {\r
+        fflush (stdout);\r
+        time0 = time ((long *) 0);\r
+\r
+* SavePosition/SetupFromFile now handle black-to-play positions.  If it's\r
+black's move in a saved position, the line "black to play" is printed\r
+immediately after the board display.  Upon loading a position, xboard\r
+looks for "black" at the beginning of this line to determine whether it's\r
+black's move.\r
+\r
+* SetupFromFile now leaves you (effectively) in ForceMoves mode.  This\r
+eliminates some cases where the program would get into an inconsistent state,\r
+and hopefully is more intuitive for the user, too.\r
+\r
+* PlayFromFile now leaves xboard in ForceMoves mode after playing through all\r
+the moves in the file.  You can use Backward/Forward, make moves, get gnuchess\r
+to join the game with MachineWhite or MachineBlack, etc.  The game file can end\r
+with either white or black to play.\r
+\r
+* Backward/Forward now seem to work in all cases.  Previously using these\r
+buttons during a game against the machine would get xboard out of sync with\r
+gnuchess's idea of what was going on, resulting in chaos.  Now using these\r
+buttons puts xboard in ForceMoves mode; you can bring gnuchess back into the\r
+game using the MachineWhite or MachineBlack buttons.\r
+\r
+Thu Jun 27 15:06:25 PDT 1991\r
+\r
+  * Remove comment popups during a reset.\r
+\r
+  * Bug in my forward move fix.  Didn't work for playgamefile mode.\r
+\r
+Thu Jun 20 15:04:06 PDT 1991\r
+\r
+  * Can't do a backward move when it isn't your turn because gnuchess\r
+    gets confused.  Similar bug for forward move.  Do a bunch of moves,\r
+    back up move and go forward.  These get filtered out now.\r
+\r
+  * Put easy back into the initString.  This DISABLES easy mode which by\r
+    default is ON.\r
+\r
+  * New-line wasn't always being added to forward move strings sent to gnuchess.\r
+\r
+  * Parsed comments as [ ..............text follows ] into d7d5\r
+\r
+  * Long game file comments cause core dumps on HP systems.\r
+\r
+  * Multiple uses of the get positition file button got confused\r
+    on the second click.\r
+\r
+  Minor fixes to the 1.2 release\r
+\r
+Version 1.2 -- Tue Jun 11 17:14:12 PDT 1991\r
+\r
+  * For version 1.2, Jeff Kenton, Richard LLoyd, David Jensen, Martin D.,\r
+    Bill Schmidt, Scott Hemphill, Paul Vaughan and Bill Shauck all found\r
+    a lot of bugs that we put into xboard just to see if they were paying\r
+    attention.  They were.\r
+\r
+  * Changed the protocol that xboard uses to work with the new version of\r
+    gnuchessr.\r
+\r
+  * There was an off by one error with the clock resetting code.  Also,\r
+    the clock display highliting was wrong.  Thanks to Bill Shauck for\r
+    pointing these out.\r
+\r
+  * enumerations are not really integers on some C compilers.  I added casting.\r
+    The new version of gnuchess expects the "go" command for two machine\r
+    and machine plays white cases.  The whiteString resource is for\r
+    compatibility with previous gnuchess versions which get confused by go.\r
+    Thanks to Martin D. for catching these.\r
+\r
+  * Fixed a bug where the checkmate message wasn't being parsed and xboard\r
+    kept playing.  Also, the message was added to game file if saved.\r
+    Thanks to Scott Hemhill for pointing this out.\r
+\r
+  * Fixed a bug where saving a long game, resetting and saving a short game\r
+    resulted in appending the end of the long game to the short one.\r
+    If a game is just being played out and there is no reason for gnuchessr\r
+    to be used, ignore pipe signals.  This allows people to use xboard\r
+    as a chess board without need for gnuchess.  Also, trivially bad moves\r
+    such as e2e2 are not passed on to gnuchessr but instead ignored out of\r
+    hand.  This allows people using xboard as a chessboard with gnuchessr\r
+    to pick a piece up, think and put it back down without making a move.\r
+    Thanks to Jeff Kenton for pointing these out.\r
+\r
+  * Added the CHESSDIR environment variable.  Game and position files are\r
+    found in this directory.  If this variable is not declared, then the\r
+    current directory is used.  File names starting with / are treated\r
+    specially.\r
+\r
+  * The bitmap file names were changed so that none exceeded 14 characters.\r
+    This is necessary for R5.\r
+\r
+        fcntl(from_prog[0], F_SETFL, O_NDELAY);\r
+\r
+    The xboard fix was to set non-blocking i/o on the read pipe for gnuchessr\r
+\r
+        printz ("Illegal move (no matching move generated)");\r
+\r
+  * fixed a problem with the new version of gnuchessr where xboard wasn't\r
+    getting gnuchessr error messages for illegal moves.  The problem seems\r
+    to be fixed *without* any gnuchess changes but this is likely to be\r
+    highly system dependant.  There should be a new line on line 246 of nondsp.c\r
+\r
+  * -iconic doesn't work at all now.  The Iconify() does work.  This was\r
+    a tradeoff and it is really an Xt bug.\r
+\r
+  * Fixed a compiler warning for gcc and an error for the IBM RT compilers.\r
+    This is the VOID_PROC macro in xboard.h.  Thanks to David Jensen for this.\r
+\r
+  * If the DisplayWidth or DisplayHeight is less than 800, use small size mode.\r
+    Also the size of the name widget was reduced from 500 pixels to 400 pixels\r
+    because in small size mode there was a gap on the right.\r
+    Changed the default font from fixed to helvetica_oblique14 to:\r
+        **-helvetica-bold-r-normal--14-*-*-*-*-*-*-*\r
+    helvetica_oblique14 is a font alias not on all R4 systems.\r
+    Curiously enough, the 17 point is not available on 75dpi systems\r
+    and the 18 point font is not available on 100dpi systems.\r
+    Thanks to Richard K. Lloyd for pointing these out.\r
+\r
+  * Minor hacks to work with R5 alpha.  Had to add an event handler to the\r
+    boardWidget to get translations to work.  This may go away with the real R5.\r
+    Added <Message>WM_PROTOCOLS: QuitProc() for R5 ICCCM compatibility.\r
+\r
+  * If the first character of the file is not `1' then the first line\r
+    of a game or position file is displayed as the name in a label widget.\r
+\r
+  * Added a PopUp dialog for getting file names.\r
+\r
+  * Modified the code to use the R4 routines rather than R3 compatibility.\r
+\r
+  * Changed the forwards/backwards/readgamefile code to allow a play to step\r
+    back and forth in a game.  If he steps all the way to the beginning\r
+    he has to restart the game.  If he gets into a mated position, same problem.\r
+\r
+  * Moved the man page from xboard.1 to xboard.man.  This makes imake man page\r
+    installs work correctly.  Thanks to Richard K. Lloyd for pointing this out.\r
+\r
+  * Corrected the queening code.  XBoard was sending the wrong syntax.\r
+    It was sending for example h8(Q) when it should have been sending h8q.\r
+    Thanks to Paul Vaughan and Mike McGann for pointing this out.\r
+\r
+  * Added a lex parser for algebraic games.  It should be easy to use the parser\r
+    for other interfaces such as the Microsoft Windows version.\r
+    It parses comments of the form [anything] and ! to the end of a line.\r
+\r
+Version 1.1 -- Mon Jan  7 14:46:03 PST 1991\r
+\r
+  * Roger Dubar, Konstantinos Konstantinides, Wolfgang S. Rupprecht,\r
+    Paul Scowen, Mvh Smidt and Kayvan Sylvan all helped immensely during\r
+    beta-testing.\r
+\r
+  * older non-ANSI versions of Sun compilers complain vociferously.\r
+\r
+  * the remoteShell resource was added for HP-UX systems\r
+    and other systems where the remoteShell isn't rsh.\r
+\r
+  * -iconic doesn't work properly.  If XBoard is opened iconic then\r
+    iconifying it later with a keystroke doesn't work.  I think\r
+    this is an Xt bug.\r
+\r
+  * For systems with smaller screens, XBoard can use smaller pieces,\r
+    and a smaller board.  -bigSizeMode False uses a smaller set of pieces.\r
+    These are scaled versions of the large pieces.  They look ok but could\r
+    be improved.\r
+\r
+  * getlogin() does not work in all cases.\r
+    It was replaced by getpwuid(getuid())->pw_name).\r
+\r
+  * Warning messages get displayed in the message box.\r
+\r
+  * Any button restarts a paused game.\r
+\r
+  * Kayvan Sylvan contributed a patch for ESIX.\r
+    It seems that select() on pipes is broken on his system.  We declined\r
+    to incorporate his patch though, because it was a work-around for\r
+    something that was broken on one system, and selfishly, that system\r
+    was not my own.  Nevertheless, it is likely that other System V users\r
+    on PC's may need to use this patch and it is is included as the file\r
+    ESIX.patch.  To use it, type\r
+\r
+        patch xboard.c ESIX.patch\r
+\r
+  * Fixed a bug where hint didn't work.  The local version of gnuchessr\r
+    had been hacked.  The fix was to clone stderr and stdout for gnuchessr.\r
+\r
+  * Fixed a bug where a player could play after a game had been finished.\r
+\r
+  * The bitmaps have been pushed into the bitmaps directory.\r
+\r
+  * Substantially rewrote and simplified the Two Machine code.\r
+\r
+  * Added StrStr() because many systems don't have this ANSI function.\r
+\r
+  * Added keyboard equivalents.  Added an iconify keystroke, C or c.\r
+\r
+  * Works with gcc now.  gcc complained about casting float constants\r
+    as XtPointers.\r
+\r
+  * Detect if the visual doesn't support color.  If so, run in monoMode.\r
+    An alternative would be to detect grayscale visual and use a collection\r
+    of gray user interface colors.\r
+\r
+        XBoard.clockMode:    False\r
+\r
+  * For people who don't like or use chess clocks a clockMode switch\r
+    has been added.  It is on by default.  It can be turned off in the\r
+    .Xdefaults file with\r
+\r
+  * Added a declaration, xtVersion, which will quickly break on R3 Intrinsics.\r
+\r
+  * Hal Peterson contributed a new Imakefile.\r
+\r
+  * Rewrote DisplayClocks().\r
+\r
+  * Rewrote TwoMachinesPlay mode.\r
+\r
+  * Konstantinos Konstantinides added the -searchTime option.\r
+\r
+  * Substantially rewrote and simplified the clock code.  If a game was paused\r
+    and then resumed, the clocks were out of sync.\r
+\r
+  * Fixed a bug in HandleUserMove() where the user could make a move while the\r
+    machine was thinking.  The fix detects and ignores these moves.  onMove\r
+    was not being used and was removed.\r
+\r
diff --git a/ChangeLog.2 b/ChangeLog.2
deleted file mode 100644 (file)
index 2594bd8..0000000
+++ /dev/null
@@ -1,1012 +0,0 @@
-2.1, patchlevel 11 -- Sat Jun  5 00:01:01 PDT 1993 -- mann@src.dec.com
-
-* Added code to deal with "wild" games on ICS.  This includes allowing
-castling with the king on d1 or d8, which is allowed in wild(1) games
-if the king started there.  Notation is o-o to castle "short"---to
-whichever side the king is closer to---and o-o-o to castle "long."
-Right now wild castling is always allowed by xboard; we rely on ICS or
-gnuchess to reject it when we aren't really in wild mode.
-
-* memcpy call had arguments in wrong order.
-
-* Removed April Fool code
-
-2.1, patchlevel 10 -- Mon Feb 15 10:19:31 PST 1993 -- mann@src.dec.com
-
-* Avoid trying to select on a pipe when using System V.  Needed to
-copy some code from InitChessProgram() up into establish().
-
-* Bug fix in disambiguating pawn moves like "ed".
-
-* Fix to error handling in ReceiveFromProgram.
-
-* Bug fix: entering EditPosition mode with black to play highlighted
-White's clock instead of Black's.
-
-* Added telnetProgram resource in case "telnet" is not the name of the
-telnet program.
-
-2.1, patchlevel 9 -- Fri Jan 22 19:08:27 PST 1993 -- mann@src.dec.com
-
-* Entering Force Moves mode clears "flag has fallen" messages from display.
-
-* ICS host name can now be in numeric format; for example 128.2.232.4.
-
-* Bug fix: LegalityTest was failing to test whether a pawn move was
-illegal because the move would discover a check.
-
-* Handle ICS message "mann asserts a win over manntest, who disconnected."
-
-* Bug fix: A recent change to PromotionCallBack had broken
-underpromotion to a knight.
-
-* Bug fix: In EditPosition mode, dragging a piece onto a square border
-would make it vanish.  xboard wasn't distinguishing this case from
-dragging the piece off the board.  Thanks to Matthew Kidd.
-
-* Removed "static" declaration from yywrap for compatibility with IRIX
-version of lex.  Thanks to stiller@blaze.cs.jhu.edu.
-
-* Added substitutes for bzero, bcopy, and gethostname for Solaris
-SVR4.  Thanks to Michael Grant.
-
-* Bug fixes to queen move disambiguation.  Bugs showed up only when
-promotion resulted in more than one queen on the board.
-
-2.1, patchlevel 8 -- Fri Dec 11 17:54:18 PST 1992 -- mann@src.dec.com
-
-* parser bug fix: It now really works to leave off the piece a pawn is
-promoting to and let it default to queen.
-
-* When starting to observe or play an ICS game, don't draw board in
-initial position and then immediately redraw it in the current
-position.
-
-* Handle ICS messages when an "abuser" forfeits a game by
-disconnecting and when a game is aborted ("removed") by an
-administrator.
-
-* Bug fix: A user move when in LoadGame+Pause mode was resuming the
-game load instead of putting us in force mode.
-
-* It seems that crashes inside sscanf when xboard is compiled with gcc
-(as on IBM PS/2 AIX, mentioned below, and also on VAX Ultrix 3.1) are
-caused by an incompatibility between gcc and the sscanf implementation
-on these platforms.  A workaround is to specify -fwritable-strings to
-gcc (see the gcc documentation).  Added info on how to do this to the
-Imakefile.  Thanks to Tom McConnell for this information.
-
-* Clocks are allowed to go negative.  This is mostly for ICS
-compatibility, but it affects gnuchess mode too.  Also, we give the
-time bonus when a player hits the time control boundary even if his
-flag is already down.  This choice is a bit debatable, but it makes
-things look better when you are in TwoMachines mode and gnuchess's
-time management screws up causing it to exceed its time limit.
-
-* Implemented move legality checking code.  Moves made with the mouse
-or parsed from a file are checked for legality before being made.
-This is mostly in preparation for future extensions, such as
-human-human play.  For now it makes -noChessProgram mode more useful.
-
-* If the user takes back moves, we restore the clocks to the earlier
-settings.
-
-* We now handle the output of the ICS oldmoves command, including
-parsing the game end condition.
-
-* Added autoCallFlag mode.
-
-* Fixed glitches in the medium size outline king and rook bitmaps, and
-touched up the medium size solid king and outline queen.
-
-* bug fix: DisplayMove would not display backwardMostMove - 1.
-
-* Added CallFlag button and removed AcceptMatch.  CallFlag is more
-important with new ICS, and accepting the current match offer is easy
-with the new ICS command "accept" (can be abbreviated "ac").
-
-* LoadGame and LoadPosition display tail of file name (plus index
-number, if any) as title.
-
-* MachineWhite, MachineBlack, and TwoMachines now work properly from
-LoadGame and LoadGame+Pause mode.
-
-* Use o-o and o-o-o to castle on ICS, not 00 and 000.
-
-* Stripped out code for old ICS messages; new ICS is now installed.
-
-* Bug fix: don't offer autosave when paused during LoadGame.
-
-2.1, patchlevel 7 - Fri Dec 11 17:40:56 PST 1992 - mann@src.dec.com
-
-* Track change to "Illegal move" message in new ICS.
-
-2.1, patchlevel 6 -- Tue Dec  8 10:48:44 PST 1992 -- mann@src.dec.com
-
-* Kludged around bug in keeping comment popup where you put it by
-adding borderXoffset and borderYoffset resources that give the width
-of the borders added by the window manager.  Yucch.
-
-* Changed searchDepth kludge back to using "help" instead of "bd"; the
-latter didn't work because the output contains a line starting with
-"White", so we think gnuchess is telling us that White won.  Oops.
-
-* Removed some code that uses an X11R5 feature, XrmGetDatabase.
-Without this, the auto font sizing code is harder to make work, so to
-keep my sanity I had to change it to affect only the fonts that appear
-in the main window and the comment popup, not the other popups.  Maybe
-this is better anyway.
-
-* AcceptMatch button now works after a counterchallenge, too.
-
-* Added code for more variants of messages about games being adjourned
-or aborted.  These messages need to be unified in new version of ICS.
-
-* Added workaround for minor bug in ICS; game number on first board
-can be wrong.
-
-* Removed code to say "refresh n" instead of "refresh"; was broken and
-wasn't needed anyway.
-
-* Added missing casts for compilers that distinguish enums from ints
-and missing cast in connect call.
-
-* Added code to recognize "both sides are out of time" draw message
-proposed for next version of ICS.
-
-* Thanks to Danny Sleator and Joe Peterson for bug reports.
-
-2.1, patchlevel 5 -- Sun Dec  6 19:52:40 PST 1992 -- mann@src.dec.com
-
-* Removed gcc and CDEBUGFLAGS from Imakefile.
-
-* Corrected setting of mode to ForceMoves when game file ends or
-contains an AmbiguousMove or BadMove.  Previous bug was harmless.
-
-* Added AcceptMatch button and mention of 50-move rule for Draw button
-to man page.
-
-2.1, patchlevel 4 -- Sun Dec  6 02:55:42 PST 1992 -- mann@src.dec.com
-
-* Now handles revised messages from new version of ICS.  New ICS is
-not released yet, so this code might change further.  Next patchlevel
-will remove support for old ICS; both are there now.
-
-* Initial processing for a new game being watched or played now
-happens when we see the first board image.  Removes the need to parse
-some messages and unifies some code.
-
-2.1, patchlevel 3 -- Tue Dec  1 19:40:40 PST 1992 -- mann@src.dec.com
-
-* Handles ICS messages "Draw : neither player has mating
-material" and "Draw : White has no material, Black has no time."
-
-* Added AcceptMatch button for ICS mode.
-
-* Fixed bug in previous fix to yylexstr().
-
-* Fixed bugs in code for loading old position files that don't start
-with "#" and for handling case where user asked for nth position in
-file but there aren't that many.
-
-* Handles ICS message "* has restored your old game"
-
-* ResetProc always clears title line now.
-
-* Don't issue just "refresh" when watching a game; use game number.
-Upcoming new version of ICS may need this.
-
-* Added code to try to prevent user from watching and/or playing more
-than one game at a time.  There is a race condition inherent here; if
-we get more than one board from the game before our command to stop
-watching it takes effect, we'll think the user started it again.  Not
-clear how to fix this.
-
-* Redid ParseBoard8 to use sscanf.  Code is a good deal cleaner now.
-Also, we now parse out the game number too, though we don't make much
-use of it yet.
-
-* (Tried to put in a feature that recognizes the current game in a
-game file must have ended when we see the start of a new one, but had
-to disable it because we have too many false hits with the current
-parser, especially in gnuchess listing files.)
-
-* Moves read from game files or received from ICS are now translated
-into canonical algebraic form just like all other moves.  Minor nit:
-If you use Reset while playing or observing a game in ICS mode, the
-game history (including the current board position) is lost, so the
-next move of the current game can't be translated.
-
-* Default fonts now vary with board size, and are chosen by pixel size
-instead of point size (since piece bitmaps have a fixed pixel size).
-
-* Bug fix: An extra Forward was required to skip over time indications
-in game files.
-
-2.1 patchlevel 2 -- Fri Nov 27 23:30:00 PST 1992 -- mann@src.dec.com
-
-* If you move the comment popup, the next time it pops up it will come
-back where you put it.
-
-* Fixed yylexstr() so calls to it can be interspersed with calls to
-yylex().
-
-* Fixed bugs in Forward/Backward while in LoadGame mode.
-
-* Changed Save{Game,Position} functions to append instead of
-overwriting if file exists.  Changed Load{Game,Position} functions to
-deal with multiple games/positions per file.
-
-* Changed load{Game,Position}File resources to trigger automatic load
-on program startup.  Changed save{Game,Position}File resources to
-trigger automatic save after every completed game and on program exit.
-
-* Added autoSaveGames mode.
-
-* Fixed bug with PromoPiece in call to MakeAlg from MakeMove.
-
-* Many changes to get rid of picky compiler warnings and generally
-clean up the code.
-
-2.1 patchlevel 1 -- Fri Nov 27 02:45:00 PST 1992 -- mann@src.dec.com
-
-* A last minute change before patchlevel 0 went out broke
-ParseGameHistory().  Immediately fixed in patchlevel 1.
-
-Version 2.1, patchlevel 0 -- Fri Nov 27 02:00:00 PST 1992 -- mann@src.dec.com
-
-* Uses "time" command of gnuchess 4.0 and following to keep clocks in
-sync.  Still works with older versions without this command; we test
-whether the command is present the first time each chess program is
-started.
-
-* File name dialog pops up under the mouse cursor, so that it's got the
-keyboard focus if the window manager is using pointer focus.
-
-* Attempts to move the wrong color piece or an empty square are filtered
-out in xboard instead of being passed on to GNU Chess or the ICS.
-
-* The reason a game ended is now remembered even if you move backward
-and forward after it ends.  It is forgotten only if you make a move
-(which is as it should be---this is now a different game, which hasn't
-ended yet).  The message saying why the game ended no longer wipes out
-the last move.
-
-* Pause, Backward, Forward, ForceMoves, and EditPosition now work from
-TwoMachines mode.
-
-* Forward and Backward now change only the board display unless you
-are in ForceMoves mode.  Pause mode keeps new moves that are received
-from being displayed on your screen until you unpause (or use
-Forward).
-
-* Added option to ring the bell after opponents' moves.
-
-* Saved games that start from other than the standard initial position
-now begin with a postion diagram as in saved position files.  The
-loader is modified to understand such save files.
-
-* Improved error checking when trying to read from gnuchess.
-
-* Parser understands things that look like time indications, e.g., (0:12),
-instead of popping them up as comments.
-
-* Send "quit" to gnuchess before trying to kill it.  I needed this
-locally because sending a SIGTERM to rsh was not killing the remote
-program on some internal field test systems we have.
-
-* Merged in code from John Chanak to make xboard a front end to the
-Internet Chess Server, and added several improvements of my own.
-(These include parsing end of game messages, loading the current state
-and previous history of a game that's joined in progress via "watch"
-or "load", automatic switch from board style 1 to 8 when needed,
-removing irrelevant buttons and adding some new ones, adding the
-useTelnet and gateway resources, and miscellaneous code cleanup, bug
-fixes, and documentation.)  Many thanks to John for writing and
-contributing the initial version of this code.
-
-Fri Oct 30 20:16:40 PST 1992 (patchlevel 25) mann@src.dec.com
-
-* gnuchess now castles by sending us "o-o" or "o-o-o" (starting with a
-preliminary version of 4.0.pl60 that I have).  Added code to handle
-this.  The old format ("e1g1", etc.) still works too.
-
-* Added code to format moves in normal abbreviated algebraic notation
-(for example, e4, exd4, f8Q, Nf6, 0-0) instead of coordinate algebraic
-(for example, e2e4, e3d4, f7f8q, g1f6, e1g1).  Moves entered with the
-mouse or received from gnuchess are translated into this canonical
-format for display on the message line or in saved game files.  Moves
-read from game files are not translated, however; they are shown and
-saved just as they appear in the file.
-
-Mon Sep 14 13:19:01 PDT 1992 (patchlevel 24) mann@src.dec.com
-
-* It's not really correct to write an ep capture of a pawn on e5 as
-fxe5; this should be written as fxe6 because e6 is where the capturing
-pawn ends up.  Nevertheless, the parser now interprets fxe5 as the ep
-capture f5xe6 unless there is a pawn on f4, in which case it
-interprets fxe5 as f4xe5.  By design, the parser does not flag fxe5 as
-ambiguous if there are pawns on both f4 and f5; instead it prefers the
-more legitimate f4xe5 interpretation.
-
-* A move like fxe6 or fe6 is now interpreted as an e.p. capture of the
-pawn on e5 if there is one there and e6 is empty.
-
-* A move like fxe5 can no longer be interpreted as an e.p. capture if
-there isn't a pawn on e5 to be captured.  Previously this could happen
-erroneously if there were pawns on both f4 and f5, and the f4 pawn was
-capturing a piece on e5.
-
-* The parser no longer munges the move it is parsing; in the past, for
-instance, it would remove the "x" from a move like dxc5 before echoing
-it to the screen.
-
-* The parser now detects when a move is ambiguous and returns an
-error, instead of arbitrarily choosing one possibility as it used to.
-
-Mon Aug 10 18:40:47 PDT 1992 (patchlevel 23) mann@src.dec.com
-
-* Added code so parser can handle fully qualified algebraic, e.g.,
-Ng1-f3, N/g1-f3, Ng1f3, or even Pe2-e4.  The "P" and "/" work only for
-fully qualified moves, not generally.
-
-* Fixed parser bugs in handling moves with rank or file disambiguator,
-e.g. N1f3 or Ngf3.
-
-Mon Jul  6 17:55:32 PDT 1992 (patchlevel 22) mann@src.dec.com
-
-* AIXV3 patch from Tom McConnell; thanks!
-
-* After hitting the Backward button we see the last move made instead of
-the word "Pausing" displayed.
-
-* Fixed a couple of problems compiling on IRIX; thanks to Michel Arsenault
-and Alan Walsh for bug reports and help with fixes.
-
-* Added optional display of algebraic notation coordinates along left and
-bottom edges of board.  This was inspired by some code from Jean-Christophe
-Engel; thanks!
-
-* Swapped EditPosition and Pause buttons to reduce danger of losing the
-game in progress by hitting EditPosition when you wanted Backward.  Thanks
-to Ove Lundberg for complaining (though it bugged me too).
-
-* Despite one complaint, I kept the feature of changing both clocks when black
-makes time control, rather than changing each individually when the player
-involved makes it.  This is to avoid having it look like White is way ahead on
-time while Black is thinking about the last move of the time control period
-(i.e., when White has made time control but Black hasn't yet).
-
-* Corrected clocks to work as in real tournaments.  Time is *added* when you
-reach time control; previously the clocks were simply set to the length of the
-new time period.  Also, when a player's flag falls, he still does not receive a
-new time allotment at the next time control, but his opponent does still
-receive more time if *his* flag has not fallen; previously, time controls were
-ignored for both players if either flag fell.  I forget who reported this bug.
-
-* Added a small ESIX patch from Kayvan Sylvan.
-
-Mon Jun 22 13:24:38 PDT 1992 (patchlevel 21)
-
-* Added some SVR4 support code from Ronald Cole.  It's Greek to me.
-
-* Note:  Stephen Meatheringham reports a bug causing xboard to crash with an
-error from the X server when run on a Sun Sparcstation IPX with Solaris 1.0.1
-and OpenWindows 3.0.  This bug has not been tracked down yet.
-
-* Fixed a problem with ATTENTION code.  On some operating systems, you have to
-be even more cautious about when you send a SIGINT to gnuchess, because the
-signal handler gets deinstalled each time it is used, and gnuchess does not
-reinstall it immediately.  In particular, if you send a SIGINT and make an
-illegal move or ask for a hint, gnuchess does not reinstall the handler until
-*after* you make your next move, so you had better not send a SIGINT before
-it.  I put a workaround for this case into xboard; I hope there are no more.
-
-* The ATTENTION code is needed when compiling for the ESIX operating system,
-because ESIX has a bug in the FIONREAD ioctl, so the code in gnuchess that
-lets you interrupt its thinking on your time just by typing in your move does
-not work.  Perhaps gnuchess will have a workaround for this eventually.
-
-* Fixed yet another bug in using XtGetValues; code to inhibit shell resizing
-was leaving a null pointer as the place to store the current sizes.
-
-* Man page fixes: corrected -sl to -sd, updated LIMITATIONS.
-
-* Added include of <sys/time.h> conditional on HAS_GETTIMEOFDAY.  I hope this
-works for all systems; on mine, <time.h> and <sys/time.h> are the same file,
-but with an #ifndef that makes it harmless to include both.
-
-* Thanks for reports from Mike Pearlman, Stephen Meatheringham, Kayvan Sylvan,
-d87-mal@nada.kth.se, Urban Koistinen, and Ronald Cole.
-
-Mon Jun  8 11:39:18 PDT 1992 (patchlevel 20)
-
-* Documented default value of initString and explained what it means.  This
-paragraph also serves to inform the user that xboard by default will tell
-gnuchess to think on his time, something one user apparently didn't understand.
-
-* Redid -searchDepth (formerly -searchLevel) and -searchTime code.  They both
-work correctly with gnuchess 3.1 now.  The -searchDepth option also works
-correctly with gnuchess 4.0.  The -searchTime option does not work with
-gnuchess 4.0.pl50 or earlier because those gnuchess versions do not have a
-working searchTime feature.  Instead of having xboard do a half-baked emulation
-of this feature by using a 1-move time control, I will be submitting a patch to
-the gnuchess folks to restore the feature as in 3.1.
-
-* Improved clock code.  It now keeps accurate track of fractional seconds of
-clock running time, if your system has gettimeofday(); if not, it is generous
-about them---if a clock has been going for n.m seconds when it is stopped, only
-n seconds are charged.  Previously, xboard would charge one second immediately
-when a clock was started, so if n.m had elapsed when it was stopped, n+1 would
-be charged.  This should stop xboard from thinking gnuchess has let its flag
-fall on the last move of a time control, as it often did before.  I also
-improved the comments and condensed the code a little.  I hope there are no
-systems that have X11 and don't have gettimeofday(), but if there are, I'd like
-to know what to replace it with.
-
-* "Flag dropped" messages now show up on the top line, beside the clocks, so
-that they don't obscure more interesting messages on the second line.
-
-* Fixed confusion of NULL and '\000'.
-
-* Include time.h to get ctime() declaration.
-
-* Fix to "parser bug" messages in parser.l.
-
-* Changed code to work with old-fashioned tolower() macro that requires its
-argument to be an uppercase letter.
-
-* Minor fix to some usage error messages; was reversing program name and
-erroneous argument value.
-
-* Thanks to Mitch Wright, Ranier Orth, and Henrik Schmiediche for bug reports.
-
-Fri Jun  5 13:06:08 PDT 1992 (patchlevel 19)
-
-* Note: xboard does not seem to work when compiled with gcc 1.40 on a
-PS/2 running AIX.  It crashes at the sscanf in line 768 of xboard.c.
-You can work around the problem by specifying the -timeControl option
-on the command line instead of defaulting it.  This does not seem to
-be a bug in xboard itself; it runs okay on PS/2 AIX when compiled with
-MetaWare High C.  [But see 2.1.pl8 above.]
-
-* Removed bogus files from distribution.
-
-* Changed variable name that conflicted with SVR4 ttyname function.
-
-* Thanks to Christoph Strozyk for another bug report, and to several
-of the folks mentioned under patchlevel 18 for testing it.
-
-Wed Jun  3 17:50:37 PDT 1992 (patchlevel 18) mann@src.dec.com
-
-* Added an include of sys/fcntl.h to pick up the definition of O_RDWR for
-System V users.
-
-* Fixed a bug in CatchPipeSignal; was testing the wrong variable to determine
-which chess program got the signal.
-
-* Removed the declaration of strrchr, which was causing problems for some
-people, and added an include of <string.h> or <strings.h> instead.
-
-* Fixed a bunch of type errors uncovered by compilers that check more carefully
-than the one I was using.  I just patched many of them with casts---typically
-cases where a function didn't take the same number and type of arguments as the
-X header file prototype said it should---because I didn't see any other way to
-fix them.  The versions of the X header files that I have don't actually have
-full prototypes for these function types; they declare only the return type and
-just give the argument types as comments.
-
-* InitChessProgram returns immediately if chess program died while we were
-waiting for it to say "Chess".  I think this fixes a bug that could make xboard
-crash or go into an infinite loop printing "Warning: Select failed; error code
-9" if gnuchess crashed there.
-
-* Removed code that tries to put the file descriptor used to read messages from
-gnuchess into nonblocking mode.  I don't see how this kludge could ever have
-fixed the problem it was intended to (see below), and it seemed to be causing
-a race condition when we were waiting for the initial message from gnuchess
-after it started up.
-
-* Thanks to Richard K. Lloyd, Konstantinos Konstantinides, Mark
-Seiden, Erik Schoenfelder, Andreas Stolcke, Rainer Orth, Henry Thomas,
-and Kris Van Hees for bug reports and help with fixes.
-
-Sun May 31 08:00:00 PDT 1992 (patchlevel 17) Bart Massey bart@cs.uoregon.edu
-
-*  'xboard' suffered from a couple of serious bugs.  An initial
-   size needed to be given to the message label to avoid a race
-   condition (!) so I gave it some text (otherwise occasionally
-   xboard would fail because the message widget was 0 width under
-   MIT X11R4).  The sizes needed to be Dimension, not int, because
-   they were written in by Xt -- on my big-endian box Dimension
-   is short, causing chaos.  Also, I hacked a declaration in for
-   strrchr() to shut the compiler up -- this is arguably a kludge,
-   but I couldn't think of anything better; maybe you can.
-
-Fri May 22 13:40:50 PDT 1992 (patchlevel 16)
-
-* First real (non-beta) release of version 2.0.
-
-* Added GNU copyleft notices covering version 2.0 enhancements.
-
-Thu May 21 12:30:09 PDT 1992 (patchlevel 15)
-
-* Removed -g from Imakefile.
-
-* Added casts in parser.l to prevent warning messages from some C compilers.
-
-* Bugfix: code to exit if chess program couldn't be started had bug in error
-message printing.
-
-Tue May 19 11:58:06 PDT 1992 (patchlevel 14)
-
-* Fixes one small bug: If LoadGame does not find a game in the file, it resets
-xboard to BeginningOfGame mode (as if the Reset button was pressed), instead of
-leaving it in LoadGame mode.
-
-Mon Apr 13 18:32:27 PDT 1992 (patchlevel 13)
-
-* Improved error handling when gnuchessx crashes.  Now displays a message and
-enters EndOfGame state without exiting.  This should help with diagnosing
-gnuchessx problems, since the position and move history are not lost.
-
-* Debugged man page.
-
-Version 2.0 -- Thu Apr  2 16:04:54 PST 1992 (patchlevel 12)
-
-* Added small 40x40 pixel pieces; board size now specified as small, medium, or
-large. 
-
-* Improved man page.
-
-* Saved position files now say "white to play" if it's white's move.
-
-* SavePosition while in EditPosition mode now gets side to play right.
-
-* Made "Pawn" the default on edit position menus.
-
-* Removed "To play" from edit position menus, since it's redundant.  Left
-support code in so it can be restored if someone wants it.
-
-* Tightened parser's definition of a move number to help further with skipping
-over stuff before the first move.
-
-* Put back feature of skipping over stuff in game files before a start of game
-marker.  This helps when loading electronic mail messages that have things
-like "00" in the header (looks like castling), or that talk about moves in
-running text before the actual game score.  Tradeoff is that we can't load
-games that don't either have move numbers or say "gnuchess game" just before
-the moves.
-
-* Changed version number to 2.0 because others have used "1.3" for patched
-versions of 1.2.  Display version number and patchlevel at startup.
-
-Thu Apr  2 15:30:22 PST 1992 (patchlevel 11)
-
-* Bugfix:  Match started with TwoMachines button now handles the case where
-user loaded/edited a position *and* forced some moves.
-
-* added error message feedback to many cases where the user's button press is
-rejected because it isn't allowed in the current mode.
-
-* added -noChessProgram option to allow use as a passive chessboard without
-gnuchess, replacing old buggy scheme that tried to do this automatically when
-gnuchess was not found on the search path.
-
-* parser accepts "=" in front of promotion piece
-
-* parser accepts ":" notation for captures
-
-* Removed SwitchSides button to make room for EditPosition.  Left code in
-place, ifdef'ed out.
-
-* Added EditPosition mode.
-
-* Reformatted xboard.c to eliminate long lines.
-
-* Promotion popup now appears near rank to which pawn is moving.
-
-* UI improvement: Button representing current program mode is kept highlighted.
-
-* Bug fix:  Hint button is now disabled when machine is on move.
-
-Sat Mar 21 14:57:37 PST 1992 (patchlevel 10)
-
-* TwoMachines now works from MachineWhite or MachineBlack mode.
-
-* ForceMoves and Backward/Forward now work at the end of a game started by
-the TwoMachines button.
-
-* Sends o-o or o-o-o to gnuchess instead of O-O or O-O-O.
-
-* Bug fix:  SwitchSides button is now disabled when machine is on move.
-
-* Added -searchLevel option and corrected handling of -searchTime to reflect
-the way gnuchess really handles command line options instead of what the
-documentation used to say.  Allowed optional ":seconds" on times.
-
-Tue Mar 17 21:00:35 PST 1992 (patchlevel 9)
-
-* Removed non-working code that tried to recover when a remote chess program
-could not be started; now exits with a message instead.
-
-* Now waits for chess program to print its first message (normally "Chess")
-before sending it any commands.
-
-* Matches between two machines can now start from a black-to-play position or
-black-to-play opening.
-
-* Bug fix: The program would sometimes lose track of the board position after
-the end of the game, drawing a board full of white pawns next time it got an X
-redraw request.  Now fixed.
-
-* Cleaned up handling of illegal moves in game files.  Now we just stop reading
-and go into ForceMoves mode.
-
-* Saved games against gnuchess indicate who won (restored and debugged 1.2
-feature). 
-
-* Setting -searchTime turns off -clockMode.
-
-* My trick for setting up a black-to-play position broke in the transition from
-gnuchess 3.1+ to 4.0.  Installed a different trick that works with both.
-
-* Bug fix: Was clobbering memory by mallocing one byte too few for the file
-name in SetupPositionFromFileProc.  This usually resulted in a crash on the
-second attempt to load a position from a file.
-
-Mon Mar 16 16:49:00 PST 1992 (patchlevel 8)
-
-* Game and position files are saved in CHESSDIR as well as loaded from there.
-We actually chdir there, so gnuchess listing files also wind up there.
-
-* Underpromotion moves from gnuchess really work now.
-
-Sat Mar 14 14:55:24 PST 1992 (patchlevel 7)
-
-* Cleaned up lots of bugs and kruft in parser.l.  It's a wonder the old version
-worked at all.  Improved rejection of random text interspersed with the moves.
-
-* Relabeled buttons to reduce confusion (Play From File --> Load Game;
-Setup From File --> Load Position).
-
-* Bug fix:  Doesn't exit at the end of a game that was started by pressing
-the Two Machines button.
-
-* Bug fix:  Doesn't get confused if you hit Machine Black (White) while
-the machine is already playing black (white) and is on move.
-
-* Prints "White to play" or "Black to play" after loading a position file.
-
-* Bug fix:  No longer hangs if no start-of-game is found in a game file.
-
-* More permissive about game file format.  The first line is not assumed
-to be a header comment unless it starts with "#".  We don't insist on
-seeing a "1." before the first move.
-
-* Added pop-up dialog to allow underpromotion.  Moving a pawn to the last rank
-pops up a dialog to let you select what piece to promote to.  Also added code
-to handle underpromotion moves from gnuchess or from a game file correctly.
-
-* Added code to send SIGINT to gnuchess before trying to move, if gnuchess
-might be busy thinking on our time.  The code is ifdef'ed out because it's
-not necessary; only beta-test versions of gnuchess 4.0 at patchlevel 19 or
-below require it.
-
-Mon Feb 24 20:10:22 PST 1992
-
-* Merged fixes received from Stuart Cracraft and Mike McGann, to iconic mode
-and to ShutdownChessPrograms.  (They both sent the same fixes.)  I did not
-install the change that removed "easy" from the initialization string, so
-xboard will still try to run gnuchessx in "hard" mode (thinking on opponent's
-time) by sending this command.
-
-Version 1.3 -- Thu Dec 19 18:19:00 PST 1991  mann@src.dec.com (Tim Mann)
-
-* I've fixed a slew of bugs in this version of xboard:
-
-* You can now back up from the end of a game, even if gnuchess was playing
-against you.  Since gnuchess exits upon mate or draw (when it's not in force
-mode), this feature works by starting up a new copy of gnuchess and feeding it
-the saved starting position and moves.  Drawback: the new gnuchess starts with
-clocks at the beginning of a fresh time control.
-
-* Note: the "force" command to gnuchess is a toggle.  I fixed a couple of
-places in xboard where "force" was being issued when gnuchess was already in
-force mode, which resulted in chaos.  I don't know if they were in 1.2 or if I
-added them myself in the course of putting in new features.
-
-* ForceMoves button is now legal in PlayFromFile mode.  It closes the game file
-and lets you force moves (or go Backward) from whatever position you've
-reached.
-
-* The parser now recognizes "white resigns" and "black resigns" (in any
-combination of upper and lower case, with or without the closing "s").  These
-used to be misinterpreted as meaning "white wins" or "black wins" respectively!
-Added "1 - 0" and "0 - 1" as equivalents for "1-0" and "0-1".
-
-* I removed the parser feature of considering "!" as a comment delimiter.
-"!" is so common as an annotation in game scores that this feature seems like a
-very bad idea.
-
-* Added a wait() after each successful call to kill() to avoid leaving zombie
-processes around.
-
-* Removed the feature of putting an indication of how the game ended into the
-internal move list when playing from a file.  The only benefit of this was that
-it would get written back out if you saved the game at that point.  This
-feature doesn't seem too useful, since you are unlikely to save a game you've
-read in without making any changes, and it caused a lot of problems in the code
-and user interface.  The end condition is still displayed as a message when
-it's first read in from the file.  End conditions when playing against gnuchess
-are still saved, too.
-
-* programName is now the last file name component of argv[0], not all of it.
-
-* xboard.c got three compiler warnings due to arguments that didn't match the
-prototypes on X toolkit functions.  I got rid of them by adding some casts, and
-adding extra unused arguments to the ReceiveFromProgram function.
-
-* As I received it, the distribution had an extra period glued on the front
-of every line that started with a period.  This broke the manpage in an
-obvious way.  It also broke parser.l in a nonobvious way that stopped
-PlayFromFile from working.
-
-* Fixed one or two bugs where the clock was started when it shouldn't have
-been.  I think one example was if you tried an illegal move in ForceMoves mode.
-
-* Now starts the machine's clock if you hit MachineWhite when white is on move
-or MachineBlack when black is on move.
-
-* Now updates the to-move indicator (highlight on clock display) when you use
-Forward/Backward or ForceMoves.
-
-* gnuchess 3.1+ has a bug that makes it try to think on its opponent's time
-even when in force mode; this causes problems with xboard's SetupFromFile
-command because gnuchess's saved hint move is garbage after the new position is
-loaded, so gnuchess prints out an error message when it tries to think about
-what it would do if the user made this move.  Here is a patch for gnuchess
-3.1+:
-
-*** nondsp.c~   Mon Dec  2 12:37:18 1991
-*-- nondsp.c    Thu Dec 19 15:36:06 1991
-***************
-*** 1223,1229 ****
-    ok = flag.quit = false;
-    player = opponent;
-    ft = 0;
-!   if (hint > 0 && !flag.easy && Book == NULL)
-      {
-        fflush (stdout);
-        time0 = time ((long *) 0);
-*-- 1223,1229 ----
-    ok = flag.quit = false;
-    player = opponent;
-    ft = 0;
-!   if (hint > 0 && !flag.easy && Book == NULL && !flag.force)
-      {
-        fflush (stdout);
-        time0 = time ((long *) 0);
-
-* SavePosition/SetupFromFile now handle black-to-play positions.  If it's
-black's move in a saved position, the line "black to play" is printed
-immediately after the board display.  Upon loading a position, xboard
-looks for "black" at the beginning of this line to determine whether it's
-black's move.
-
-* SetupFromFile now leaves you (effectively) in ForceMoves mode.  This
-eliminates some cases where the program would get into an inconsistent state,
-and hopefully is more intuitive for the user, too.
-
-* PlayFromFile now leaves xboard in ForceMoves mode after playing through all
-the moves in the file.  You can use Backward/Forward, make moves, get gnuchess
-to join the game with MachineWhite or MachineBlack, etc.  The game file can end
-with either white or black to play.
-
-* Backward/Forward now seem to work in all cases.  Previously using these
-buttons during a game against the machine would get xboard out of sync with
-gnuchess's idea of what was going on, resulting in chaos.  Now using these
-buttons puts xboard in ForceMoves mode; you can bring gnuchess back into the
-game using the MachineWhite or MachineBlack buttons.
-
-Thu Jun 27 15:06:25 PDT 1991
-
-  * Remove comment popups during a reset.
-
-  * Bug in my forward move fix.  Didn't work for playgamefile mode.
-
-Thu Jun 20 15:04:06 PDT 1991
-
-  * Can't do a backward move when it isn't your turn because gnuchess
-    gets confused.  Similar bug for forward move.  Do a bunch of moves,
-    back up move and go forward.  These get filtered out now.
-
-  * Put easy back into the initString.  This DISABLES easy mode which by
-    default is ON.
-
-  * New-line wasn't always being added to forward move strings sent to gnuchess.
-
-  * Parsed comments as [ ..............text follows ] into d7d5
-
-  * Long game file comments cause core dumps on HP systems.
-
-  * Multiple uses of the get positition file button got confused
-    on the second click.
-
-  Minor fixes to the 1.2 release
-
-Version 1.2 -- Tue Jun 11 17:14:12 PDT 1991
-
-  * For version 1.2, Jeff Kenton, Richard LLoyd, David Jensen, Martin D.,
-    Bill Schmidt, Scott Hemphill, Paul Vaughan and Bill Shauck all found
-    a lot of bugs that we put into xboard just to see if they were paying
-    attention.  They were.
-
-  * Changed the protocol that xboard uses to work with the new version of
-    gnuchessr.
-
-  * There was an off by one error with the clock resetting code.  Also,
-    the clock display highliting was wrong.  Thanks to Bill Shauck for
-    pointing these out.
-
-  * enumerations are not really integers on some C compilers.  I added casting.
-    The new version of gnuchess expects the "go" command for two machine
-    and machine plays white cases.  The whiteString resource is for
-    compatibility with previous gnuchess versions which get confused by go.
-    Thanks to Martin D. for catching these.
-
-  * Fixed a bug where the checkmate message wasn't being parsed and xboard
-    kept playing.  Also, the message was added to game file if saved.
-    Thanks to Scott Hemhill for pointing this out.
-
-  * Fixed a bug where saving a long game, resetting and saving a short game
-    resulted in appending the end of the long game to the short one.
-    If a game is just being played out and there is no reason for gnuchessr
-    to be used, ignore pipe signals.  This allows people to use xboard
-    as a chess board without need for gnuchess.  Also, trivially bad moves
-    such as e2e2 are not passed on to gnuchessr but instead ignored out of
-    hand.  This allows people using xboard as a chessboard with gnuchessr
-    to pick a piece up, think and put it back down without making a move.
-    Thanks to Jeff Kenton for pointing these out.
-
-  * Added the CHESSDIR environment variable.  Game and position files are
-    found in this directory.  If this variable is not declared, then the
-    current directory is used.  File names starting with / are treated
-    specially.
-
-  * The bitmap file names were changed so that none exceeded 14 characters.
-    This is necessary for R5.
-
-        fcntl(from_prog[0], F_SETFL, O_NDELAY);
-
-    The xboard fix was to set non-blocking i/o on the read pipe for gnuchessr
-
-        printz ("Illegal move (no matching move generated)");
-
-  * fixed a problem with the new version of gnuchessr where xboard wasn't
-    getting gnuchessr error messages for illegal moves.  The problem seems
-    to be fixed *without* any gnuchess changes but this is likely to be
-    highly system dependant.  There should be a new line on line 246 of nondsp.c
-
-  * -iconic doesn't work at all now.  The Iconify() does work.  This was
-    a tradeoff and it is really an Xt bug.
-
-  * Fixed a compiler warning for gcc and an error for the IBM RT compilers.
-    This is the VOID_PROC macro in xboard.h.  Thanks to David Jensen for this.
-
-  * If the DisplayWidth or DisplayHeight is less than 800, use small size mode.
-    Also the size of the name widget was reduced from 500 pixels to 400 pixels
-    because in small size mode there was a gap on the right.
-    Changed the default font from fixed to helvetica_oblique14 to:
-        **-helvetica-bold-r-normal--14-*-*-*-*-*-*-*
-    helvetica_oblique14 is a font alias not on all R4 systems.
-    Curiously enough, the 17 point is not available on 75dpi systems
-    and the 18 point font is not available on 100dpi systems.
-    Thanks to Richard K. Lloyd for pointing these out.
-
-  * Minor hacks to work with R5 alpha.  Had to add an event handler to the
-    boardWidget to get translations to work.  This may go away with the real R5.
-    Added <Message>WM_PROTOCOLS: QuitProc() for R5 ICCCM compatibility.
-
-  * If the first character of the file is not `1' then the first line
-    of a game or position file is displayed as the name in a label widget.
-
-  * Added a PopUp dialog for getting file names.
-
-  * Modified the code to use the R4 routines rather than R3 compatibility.
-
-  * Changed the forwards/backwards/readgamefile code to allow a play to step
-    back and forth in a game.  If he steps all the way to the beginning
-    he has to restart the game.  If he gets into a mated position, same problem.
-
-  * Moved the man page from xboard.1 to xboard.man.  This makes imake man page
-    installs work correctly.  Thanks to Richard K. Lloyd for pointing this out.
-
-  * Corrected the queening code.  XBoard was sending the wrong syntax.
-    It was sending for example h8(Q) when it should have been sending h8q.
-    Thanks to Paul Vaughan and Mike McGann for pointing this out.
-
-  * Added a lex parser for algebraic games.  It should be easy to use the parser
-    for other interfaces such as the Microsoft Windows version.
-    It parses comments of the form [anything] and ! to the end of a line.
-
-Version 1.1 -- Mon Jan  7 14:46:03 PST 1991
-
-  * Roger Dubar, Konstantinos Konstantinides, Wolfgang S. Rupprecht,
-    Paul Scowen, Mvh Smidt and Kayvan Sylvan all helped immensely during
-    beta-testing.
-
-  * older non-ANSI versions of Sun compilers complain vociferously.
-
-  * the remoteShell resource was added for HP-UX systems
-    and other systems where the remoteShell isn't rsh.
-
-  * -iconic doesn't work properly.  If XBoard is opened iconic then
-    iconifying it later with a keystroke doesn't work.  I think
-    this is an Xt bug.
-
-  * For systems with smaller screens, XBoard can use smaller pieces,
-    and a smaller board.  -bigSizeMode False uses a smaller set of pieces.
-    These are scaled versions of the large pieces.  They look ok but could
-    be improved.
-
-  * getlogin() does not work in all cases.
-    It was replaced by getpwuid(getuid())->pw_name).
-
-  * Warning messages get displayed in the message box.
-
-  * Any button restarts a paused game.
-
-  * Kayvan Sylvan contributed a patch for ESIX.
-    It seems that select() on pipes is broken on his system.  We declined
-    to incorporate his patch though, because it was a work-around for
-    something that was broken on one system, and selfishly, that system
-    was not my own.  Nevertheless, it is likely that other System V users
-    on PC's may need to use this patch and it is is included as the file
-    ESIX.patch.  To use it, type
-
-        patch xboard.c ESIX.patch
-
-  * Fixed a bug where hint didn't work.  The local version of gnuchessr
-    had been hacked.  The fix was to clone stderr and stdout for gnuchessr.
-
-  * Fixed a bug where a player could play after a game had been finished.
-
-  * The bitmaps have been pushed into the bitmaps directory.
-
-  * Substantially rewrote and simplified the Two Machine code.
-
-  * Added StrStr() because many systems don't have this ANSI function.
-
-  * Added keyboard equivalents.  Added an iconify keystroke, C or c.
-
-  * Works with gcc now.  gcc complained about casting float constants
-    as XtPointers.
-
-  * Detect if the visual doesn't support color.  If so, run in monoMode.
-    An alternative would be to detect grayscale visual and use a collection
-    of gray user interface colors.
-
-        XBoard.clockMode:    False
-
-  * For people who don't like or use chess clocks a clockMode switch
-    has been added.  It is on by default.  It can be turned off in the
-    .Xdefaults file with
-
-  * Added a declaration, xtVersion, which will quickly break on R3 Intrinsics.
-
-  * Hal Peterson contributed a new Imakefile.
-
-  * Rewrote DisplayClocks().
-
-  * Rewrote TwoMachinesPlay mode.
-
-  * Konstantinos Konstantinides added the -searchTime option.
-
-  * Substantially rewrote and simplified the clock code.  If a game was paused
-    and then resumed, the clocks were out of sync.
-
-  * Fixed a bug in HandleUserMove() where the user could make a move while the
-    machine was thinking.  The fix detects and ignores these moves.  onMove
-    was not being used and was removed.
-
index 2c07930..eef95e9 100644 (file)
--- a/FAQ.html
+++ b/FAQ.html
-<HTML><HEAD><TITLE>
-XBoard and WinBoard: Frequently Asked Questions</TITLE></HEAD>
-<BODY>
-<H1>XBoard and WinBoard: Frequently Asked Questions</H1>
-
-This document answers some frequently asked questions about the
-graphical chess interfaces XBoard and WinBoard.
-A hyperlinked version of this FAQ is available on
-the Web through the page
-<A HREF=
-"http://www.tim-mann.org/chess.html"
->http://www.tim-mann.org/chess.html</A>.
-
-<i>This FAQ is in need of revision.  Please contact us if you'd like
-to help update it.</i>
-
-<HR>
-<H2>Outline</H2>
-
-<UL>
-<LI><A HREF="#[A0]">[A] Introduction and hot topics</A></LI>
-<LI><A HREF="#[B0]">[B] XBoard and WinBoard</A></LI>
-<LI><A HREF="#[C0]">[C] XBoard and WinBoard, bugs and problems</A></LI>
-<LI><A HREF="#[D0]">[D] Crafty and other topics</A></LI>
-</UL>
-
-<HR>
-<H2>Detailed contents</H2>
-
-<UL>
-<LI><A NAME="[A0]" HREF="#[A]">[A] Introduction and hot topics</A></LI> 
-<UL>
-<LI><a href="#[A.1]">[A.1] What are XBoard and WinBoard?</a></li>
-<LI><A HREF="#[A.2]">[A.2] Where can I get chess information and chess
-  software?</A></LI> 
-<LI><A HREF="#[A.3]">[A.3] What are the current version numbers for
-  XBoard and WinBoard?</A></LI> 
-<LI><A HREF="#[A.4]">[A.4] Who is working on this project?</A></LI>
-<LI><A HREF="#[A.5]">[A.5] How do I report bugs, offer help, etc.?</A></LI>
-<LI><a href="#[A.6]">[A.6] What are the future plans for XBoard and
-  WinBoard?</A></LI>
-</UL>
-
-<LI><A NAME="[B0]" HREF="#[B]">[B] XBoard and WinBoard</A></LI>
-<UL>
-<LI><A HREF="#[B.1]">[B.1] What is XBoard?</A></LI>
-<LI><A HREF="#[B.2]">[B.2] Is there an XBoard for Microsoft Windows?  What is
-  WinBoard?  How do I install WinBoard?</A></LI>
-<LI><A HREF="#[B.3]">[B.3] Is there an XBoard for the Amiga?  What is
-  AmyBoard?</A></LI>
-<LI><A HREF="#[B.4]">[B.4] Is there an XBoard for the Macintosh?</A></LI>
-<LI><A HREF="#[B.5]">[B.5] Does XBoard run on VMS?</A></LI>
-<LI><A HREF="#[B.6]">[B.6] What is cmail?</A></LI>
-<LI><A HREF="#[B.7]">[B.7] How do I build XBoard?  Do I have to have
-  gcc?</A></LI>
-<LI><A HREF="#[B.8]">[B.8] Can I use XBoard or WinBoard to play a game
-  of chess with another human?</A></LI>
-<LI><A HREF="#[B.9]">[B.9] Will WinBoard run on Windows 3.1?  
-  How about Windows CE (also known as Pocket PC)?</A></LI>
-<LI><A HREF="#[B.10]">[B.10] How do I use XBoard or WinBoard as an external
-  viewer for PGN files with my Web browser?</A></LI>
-<LI><A HREF="#[B.11]">[B.11] How do I use WinBoard as an external viewer for
-  PGN files with the MS Windows File Manager or Explorer?</A></LI>
-<LI><A HREF="#[B.12]">[B.12] How do I use ICC timestamp or FICS timeseal
-  with XBoard?</A></LI>
-<LI><A HREF="#[B.13]">[B.13] How do I use ICC timestamp or FICS timeseal
-  with WinBoard?</A></LI>
-<LI><A HREF="#[B.14]">[B.14] How do I play bughouse with XBoard or WinBoard?
-</A></LI>
-<li><a href="#[B.16]">[B.16]
-  What is Zippy?  How can I interface a chess program to the Internet 
-  Chess Servers?</a></li> 
-<li><a href="#[B.17]">[B.17]
-  How can I interface my own chess program to XBoard or WinBoard?</a></li>
-<li><a href="#[B.18]">[B.18]
-  How can I recompile WinBoard from source?</a></li>
-<li><a href="#[B.19]">[B.19]
-  How can I use XBoard or WinBoard to talk
-  to an Internet Chess Server through a firewall or proxy?</a></li>
-<li><a href="#[B.20]">[B.20] 
-  How can I use XBoard or WinBoard on chess.net with accuclock?</a></li>
-<li><a href="#[B.21]">[B.21]
-  Can I get Zippy to do one or more ICS commands automatically at the 
-  start or end of each game?</a></li>
-<li><a href="#[B.22]">[B.22]
-  How do I print from WinBoard?</a></li>
-<li><a href="#[B.23]">[B.23]
-  Can I get Zippy to automatically reconnect to ICS when its connection 
-  breaks?</a></li>
-<li><a href="#[B.24]">[B.24]
-  The chess engines are too strong and always beat me.  How can I adjust
-  the difficulty level to make them weaker?</a></li>
-<li><a href="#[B.25]">[B.25]
-  May I use the piece bitmaps from XBoard/WinBoard in my own program?</a></li>
-
-</UL>
-
-<LI><A NAME="[C0]" HREF="#[C]">[C] XBoard and WinBoard, bugs and 
-  problems</A></LI>
-<UL>
-<LI><A HREF="#[C.1]">[C.1] I can't build XBoard because the
-  X11/Xaw/... include files are not found.</A></LI>
-<LI><A HREF="#[C.2]">[C.2] Configuring or building XBoard fails due to
-  missing header files, missing libraries, or undefined symbols.</a></li>
-<LI><A HREF="#[C.3]">[C.3] I have problems using WinBoard on ICS with a modem.
-  I'm not running SLIP or PPP, but just dialing in to an ordinary login account
-("shell account").</A></LI>
-<LI><A HREF="#[C.4]">[C.4] 
-  I have problems using WinBoard on ICS with Windows 95 and SLIP
-  or PPP.  When trying to start up, it gets the error "Address family
-  not supported by protocol family" (or some equally strange message).
-</A></LI> 
-<LI><A HREF="#[C.5]">[C.5] When I try to run WinBoard, I get the message
-  "Failed to start chess program gnuchess on localhost: NO LANGFILE (file
-  gnuchess.lan not found)".</A></LI>
-<LI><A HREF="#[C.6]">[C.6] I want to use XBoard or WinBoard as an Internet
-  Chess Server interface, but the ICS Client option is grayed out on the
-  menu.</A></LI> 
-<LI><A HREF="#[C.7]">[C.7] How do I give command-line options to
-  a Windows program like WinBoard?</A></LI>
-<LI><A HREF="#[C.9]">[C.9]
-  When I exit from WinBoard after using it to play against a chess
-  program on my machine, the chess program keeps running in the background.
-</A></LI>
-<li><a href="#[C.12]">[C.12]
-  Why do my ICS 
-  opponents often get extra time after they make their moves?
-  Why do I sometimes lose time off my clock after I make my move?
-</a></li>
-<li><a href="#[C.13]">[C.13]
-  I can't run WinBoard unless I delete the WinBoard.ini file each time!
-</a></li>
-<li><a href="#[C.15]">[C.15]
-  I get errors compiling XBoard's parser.c.
-</a></li>
-<li><a href="#[C.16]">[C.16]
-  I get an error building WinBoard from source because "flex" is not found.
-</a></li>
-<li><a href="#[C.17]">[C.17]
-  XBoard hangs shortly after connecting to an ICS when used with dxterm,
-  cmdtool, dtterm, kterm, konsole, or other substitutes for xterm.
-</a></li>
-<li><a href="#[C.18]">[C.18]
-  The WinBoard pieces show up in the wrong colors, appear distorted,
-  or are not visible at all.
-</a></li>
-<LI><A HREF="#[C.19]">[C.19] XBoard or WinBoard tells me
-"Error: first chess program (...) exited unexpectedly".</A></LI> 
-<li><a href="#[C.20]">[C.20]
-  XBoard tells me "Warning: Cannot allocate colormap entry", or
-  "too few colors available; trying monochrome mode", or
-  "XPM pieces cannot be used in monochrome mode".
-</a></li>
-<li><a href="#[C.21]">[C.21]
-  When I log in to freechess.org, the Enter key doesn't work, and I 
-  have to use Ctrl+J instead.  But when I use WinBoard, Ctrl+J doesn't
-  work either, so I'm stuck.
-</a></li>
-<li><a href="#[C.22]">[C.22]
-  XBoard says, "Failed to start first chess program gnuchessx
-  on localhost: gnuchessx: No such file or directory."  
-</a></li>
-</UL>
-
-<LI><A NAME="[D0]" HREF="#[D]">[D] Crafty and other topics</A></LI>
-<UL>
-<LI><A HREF="#[D.1]">[D.1] What is XChess?</A></LI>
-<LI><A HREF="#[D.2]">[D.2] What is Winsock Chess?</A></LI>
-<LI><A HREF="#[D.3]">[D.3] What is Crafty?</A></LI>
-<LI><A HREF="#[D.4]">[D.4] How do I use Crafty with XBoard?</A></LI>
-<LI><A HREF="#[D.5]">[D.5] How do I use Crafty with WinBoard?</A></LI>
-<LI><A HREF="#[D.6]">[D.6] How do I use GNU Chess 5 with XBoard?</A></LI>
-</UL>
-</UL>
-
-<HR>
-<H2><A NAME="[A]">[A] Introduction and hot topics</A></H2>
-<HR>
-<H3><A NAME="[A.1]">[A.1] What are XBoard and WinBoard?</A></H3>
-
-XBoard and WinBoard are graphical user interfaces for chess.  
-XBoard runs with the X Window System on Unix systems (including
-GNU/Linux); see topic
-<A HREF="#[B.1]">[B.1]</A>.
-WinBoard runs on true 32-bit Microsoft Windows operating
-systems, such as Windows 95, 98, NT,
-2000, ME, XP, and should continue to work
-on future 32-bit Windows systems.  It does
-not work on Windows CE (also known as Pocket PC), nor does it work on
-16-bit Windows systems such as Windows 3.1.  See topic
-<A HREF="#[B.2]">[B.2]</A>.
-
-<HR>
-<H3><A NAME="[A.2]">[A.2] Where can I get chess information and chess 
-software?</A></H3>
-
-As a shortcut to most things mentioned in this FAQ, try Tim Mann's
-Chess Web page, <A HREF= "http://www.tim-mann.org/chess.html"
->http://www.tim-mann.org/chess.html</A>.  This page page is a good
-place to get the latest released versions of XBoard and WinBoard and
-the most up-to-date version of this FAQ.  Also see our Savannah
-project pages at <a href="https://savannah.gnu.org/projects/xboard/"
->https://savannah.gnu.org/projects/xboard/</a>.
-
-<p>If you have other questions about XBoard/WinBoard that aren't answered
-in this FAQ, you can try Aaron Tay's WinBoard and Chess Engines FAQ, at
-<a href="http://www.aarontay.per.sg/Winboard/"
->http://www.aarontay.per.sg/Winboard/</a>.
-
-<P>For general news and information about chess, try the newsgroup hierarchy
-rec.games.chess.*, especially the groups rec.games.chess.misc and
-rec.games.chess.computer.  Both of the latter groups have very informative
-FAQs maintained by Steve Pribut; look for them on the newsgroups or at
-<A HREF=
-"http://www.clark.net/pub/pribut/chess.html"
->http://www.clark.net/pub/pribut/chess.html</A>.
-
-<P>Like other GNU software, you can get XBoard, and
-WinBoard by anonymous FTP from 
-<A HREF=
-"ftp://ftp.gnu.org/pub/gnu/"
->ftp://ftp.gnu.org/pub/gnu/</A>
-and its many mirror sites.  Look in the subdirectories xboard, and winboard.
-The .tar.gz suffix on the files there indicates they were packed with tar
-and compressed with gzip.  The .exe or .zip suffixes indicate files that
-were packed and compressed with zip.
-
-<P>For other chess software, try the Internet Chess Library.  Use anonymous FTP
-to connect to ftp.freechess.org, or go to the Web page
-<A HREF=
-"http://www.freechess.org/"
->http://www.freechess.org/</A>.
-You can get chess software, game
-collections, the FAQ file for rec.games.chess, and other chess-related
-material there, in the directory pub/chess.  The FTP server can
-automatically decompress files for you as you download them, useful if you
-don't have gzip.
-
-<P>Here is a sample anonymous ftp session.  Some of the ftp server's responses
-are abbreviated, but all the commands you must type are included.
-
-<p><PRE>
-    % ftp ftp.gnu.org
-    Connected to ftp.gnu.org
-    Name: anonymous
-    Password: your-email-address@your-site
-    ftp&gt; binary
-    200 Type set to I.
-    ftp&gt; cd /pub/gnu/xboard
-    ftp&gt; dir
-    -rw-r--r-- 1 14910 wheel  1057625 May 20 00:25 xboard-4.2.7.tar.gz
-    ftp&gt; get xboard-4.2.7.tar.gz
-    150 BINARY connection for xboard-4.2.7.tar.gz (1057625 bytes).
-    226 Transfer complete.
-    ftp&gt; quit
-</PRE>
-
-<HR>
-<H3><A NAME="[A.3]">[A.3] What are the current version numbers for 
-XBoard and WinBoard?</A></H3>
-
-At this writing, the current version numbers are:
-
-<UL>
-<LI>XBoard 4.2.7</LI>
-<LI>WinBoard 4.2.7</LI>
-</UL>
-
-<HR>
-<H3><A NAME="[A.4]">[A.4] Who is working on this project?</A></H3>
-
-Please see our Savannah project pages at <a
-href="https://savannah.gnu.org/projects/xboard/"
->https://savannah.gnu.org/projects/xboard/</a> for a list of active
-developers.  Many others occasionally contribute suggestions and
-snippets of code, for which we are grateful.
-
-<HR>
-<H3><A NAME="[A.5]">[A.5] How do I report bugs, offer help, etc.?</A></H3>
-
-<P>Bug reports, suggestions, and offers to help on XBoard
-or WinBoard should be sent to
-bug-xboard<a name="nospam">@</a>gnu.org. <i>(Note: as of 4 Nov 2003,
-this mailing list is temporarily broken.  You can send mail to
-bug-xboard<a name="nospam">@</a>tim-mann.org instead until it is fixed.)</i>
-
-<p>Beginner questions and discussion about the program may get faster
-answers on the WinBoard Forum at <a
-href="http://f11.parsimony.net/forum16635/"
->http://f11.parsimony.net/forum16635/</a>.  
-
-<p>If you are developing a
-chess engine that works with XBoard or WinBoard (or an alternative
-GUI that works with such engines), see the Chess Engines mailing
-list, hosted at
-<a href="http://groups.yahoo.com/group/chess-engines"
->http://groups.yahoo.com/group/chess-engines</a>.
-
-<P>Any time you want to report a possible bug in XBoard or WinBoard,
-we need to know exactly what you did, and exactly what error (or
-other) messages you got.
-
-<P>If you are using Unix, run the "script" program, run XBoard with
-the -debug flag (if you get as far as running it), do whatever is
-necessary to reproduce the problem, type "exit" to the shell, and mail
-us the resulting typescript file.  We also need to know what
-hardware/operating system combination you are using.  The command
-"uname -a" will usually tell you this; include its output in your
-typescript.
-
-<P>If you are using MS Windows, run WinBoard with the -debug flag, and
-send us a copy of the WinBoard.debug file.  If you aren't sure how to
-add command-line flags to WinBoard, you can hit Ctrl+Alt+F12 to create
-a WinBoard.debug file after WinBoard starts, but that is not as good,
-because a few messages that would have been printed at the start are
-lost.
-
-<p>Either way, please send us the exact text of the commands you typed
-and the output you got, not just your recollection of approximately
-what they were.  The messages may seem meaningless to you, but they
-are very meaningful to us and essential for diagnosing problems.
-
-<hr>
-<h3><a name="[A.6]">[A.6] What are the future plans for XBoard and
-  WinBoard?</a></h3>
-
-<p>Our plans are always in flux.  As with most free software projects,
-the next release will happen when it happens -- or it may never
-happen.  This has always been the policy for XBoard/WinBoard.
-Releases have never been promised in specific time frames.
-
-<p>Starting in November 2003, several new developers have joined the
-project, and work is now hosted at <a
-href="https://savannah.gnu.org/projects/xboard/"
->https://savannah.gnu.org/projects/xboard/</a>.  Lots of work is just
-getting underway, but nothing is far along yet.
-
-<p>Here is a partial list of items that have a nonzero probability of
-happening in finite time.
-
-<ul>
-<li>Small bug fixes.  Occasionally someone sends us a fix, or reports
-a small bug very clearly so that we're able to fix it in a few minutes
-work.<p>
-
-<li>Protocol version 3.  The members of the chess engine authors'
-mailing list discussed a set of proposed features for the next version
-of the XBoard/WinBoard chess engine communication protocol.
-Unfortunately, this project has gotten only as far as that discussion
-took it; no revisions of the protocol spec or coding have been done
-yet.  A few simple features are very clearly needed, though, and will
-probably appear in time.<p>
-
-<li>Contributed features.  Several people have mailed me code to add
-various features.  Most of this code is available on the
-XBoard/WinBoard extensions page at <a
-href="http://www.tim-mann.org/extensions.html"
->http://www.tim-mann.org/extensions.html</a>, but it is not in any
-official releases yet.  We are in the process of getting folks to
-formally assign the copyrights on their contributions to the Free
-Software Foundation so that we can include it in official releases in
-the future.<p>
-
-<li>Internationalization.  Several people have expressed interest in
-internationalizing XBoard/WinBoard, and so hopefully this project will
-go forward.  Once the internationalization support is in, we will need
-more translators.  Watch for news on the xboard-devel mailing list on
-our Savannah pages.
-
-</ul>
-
-<HR>
-<H2><A NAME="[B]">[B] XBoard and WinBoard</A></H2>
-<HR>
-<H3><A NAME="[B.1]">[B.1] What is XBoard?</A></H3>
-
-XBoard is a graphical user interface for chess.  It displays a
-chessboard on the screen, accepts moves made with the mouse, and loads
-and saves games in Portable Game Notation (PGN).  XBoard is free software.
-It serves as a front-end for many different chess services, including:
-
-<p><strong>Chess engines</strong> that will run on your machine and
-play a game against you or help you analyze, such as GNU Chess and
-Crafty (topic <A HREF="#[D.3]">[D.3]</A> below).
-
-<p><strong>Chess servers</strong> on the Internet, where you can
-connect to play chess with people from all over the world, watch other
-users play, or just hang out and chat.
-
-<p><strong>Correspondence chess</strong> played by electronic
-mail. The cmail program (topic <A HREF="#[B.6]">[B.6]</A> below)
-automates the tasks of parsing email from your opponent, playing his
-moves out on your board, and mailing your reply move after you've
-chosen it.
-
-<p><strong>The Web</strong> and your own saved games. You can use
-XBoard as a helper application to view PGN games in your
-Web browser, or to load and save your own PGN files.
-
-<P>XBoard runs under Unix or Unix-compatible systems.  It requires the
-X Window System, version X11R4 or later.  There are also ports of
-XBoard to 32-bit Microsoft Windows and to
-the Amiga.  See topics <A HREF="#[B.2]">[B.2]</A> and <A
-HREF="#[B.3]">[B.3]</A> respectively.
-
-<HR>
-<H3><A NAME="[B.2]">[B.2] Is there an XBoard for Microsoft Windows?  What is WinBoard?  How do I install WinBoard?</A></H3>
-
-WinBoard is a port of XBoard to 32-bit Microsoft Windows systems, such
-as Windows 95, 98, NT, 2000, ME, and XP.  It uses the same back end
-chess code as XBoard, but the front end graphics code is a complete
-rewrite.  WinBoard is free software.
-
-<P>The WinBoard distribution includes a port of GNU Chess to Win32.
-The GNU Chess port is distributed in executable form, with instructions for
-rebuilding it from the standard GNU Chess sources (available separately).  You
-should have at least 16 to 24 MB of memory to run GNU Chess with WinBoard.
-
-<P>The WinBoard distribution also includes the ICC timestamp and FICS
-timeseal programs (topic <A HREF="#[B.12]">[B.12]</A>).
-
-<P>cmail (topic <A HREF="#[B.6]">[B.6]</A>) has not been ported to
-Windows.  All the other XBoard functions are included in WinBoard.
-The International Email Chess Group web site at <a
-href="http://www.iecg.org/" >http://www.iecg.org/</a> recommends
-ECTool (<a href="http://www.ectool.nu/" >http://www.ectool.nu/</a>)
-for playing correspondence chess under Windows.
-
-<p>You install WinBoard as follows. Download the WinBoard package to
-your PC (see topic <A HREF="#[A.2]">[A.2]</A>).  It will be a file
-with a name like winboard-4_0_0.exe.  Double-click on this file
-in the Explorer or File Manager to run it. Follow the on-screen
-prompts.
-
-<HR>
-<H3><A NAME="[B.3]">[B.3] Is there an XBoard for the Amiga?  What is AmyBoard?</A></H3>
-
-AmyBoard is a port of XBoard to the Amiga, by Jochen Wiedmann.
-The distribution includes a port of GNU Chess.
-AmyBoard is free software.
-
-<p>The current version of AmyBoard is 330.5 (based on XBoard 3.3.0).
-No one is currently maintaining it.
-
-<P>System requirements:
-
-<UL>
-<LI>An Amiga (obviously :-), running OS 2.04 or later, 2Mb RAM or more.</LI>
-<LI>MUI 2.0 or later.</LI>
-<LI>Workbench or another screen with no less than 640x400 pixels (adjustable
-  with the MUI-Prefs); this restriction is just because we don't have
-  bitmaps with less than 40x40 pixels per square. If someone contributes
-  bitmaps with 20x20 or 20x25, they will work with any Hires mode.</LI>
-</UL>
-<P>
-If you would like to use an ICS, you need an Internet connection via either
-
-<UL>
-<LI>a telnet-like program, or</LI>
-<LI>a terminal program reading from stdin and writing to stdout.</LI>
-</UL>
-<P>
-AmyBoard is available in the Internet Chess Library (topic <A HREF="#[A.2]">[A.2]</A>).
-
-<HR>
-<H3><A NAME="[B.4]">[B.4] Is there an XBoard for the Macintosh?</A></H3>
-
-Because MacOS X has a Unix base, XBoard will compile and run on it.
-You do need an X11 (X Window System) server and client libraries.
-These do not come with Mac OS, but both free and commercial versions
-are available.  Once you install the X11 package, XBoard is reported
-to compile and run without changes.  I am not a Mac user and have not
-tried this myself, so I cannot answer questions about it.
-
-Version 4.2.6 and earlier of XBoard come with an old copy of the
-config.sub utility that does not recognize Mac OS X, so to build
-XBoard, you'll have to tell the configure program what OS you are
-running.  Follow the instructions in topic <A HREF="#[B.7]">[B.7]</A>
-of this FAQ, but add the argument <tt>--host=powerpc-apple-bsd</tt> to
-the end of the "configure" command line.
-
-There is no version of XBoard or WinBoard that runs with the native
-(non-X11) Mac graphical interface, and none that runs on MacOS 9 or
-earlier.
-
-
-<HR>
-<H3><A NAME="[B.5]">[B.5] Does XBoard run on VMS?</A></H3>
-
-No.  This port would probably be a lot easier than the Win32 and Amiga
-ports were, because VMS has the X Window system (under the name
-DECwindows) and is now POSIX compliant.  However, I don't know enough
-about VMS to do the port myself, and I don't have time.  If you do,
-give it a try!  Send mail to me, 
-tim<a name="nospam2">@</a>tim-mann.org (Tim Mann), if you're
-working on this.
-
-<HR>
-<H3><A NAME="[B.6]">[B.6] What is cmail?</A></H3>
-
-cmail is a program that helps you play and keep track of electronic mail
-correspondence chess games using XBoard.  It is distributed with XBoard and
-has its own manual page.  cmail is free software.  It was written by
-Even Welsh.  cmail has not been ported to Windows; sorry.
-
-<HR>
-<H3><A NAME="[B.7]">[B.7] How do I build XBoard?  Do I need gcc?</A></H3>
-
-The first step to building XBoard is to get the distribution file.  See topic
-<A HREF="#[A.2]">[A.2]</A> for places you can ftp the software from.
-
-<P>Next, decide what directory tree you are going to install XBoard
-in.  The default is /usr/local, but you probably don't have write
-access to that directory unless you are a system administrator.  If
-you do, type the following to install it there:
-
-<p><PRE>
-    gzip -cd xboard-*.tar.gz | tar -xvf -
-    cd xboard-*/
-    ./configure
-    make
-    su
-    make install
-</PRE>
-
-If you want to install xboard in your personal home directory ($HOME/bin),
-type this:
-
-<p><PRE>
-    gzip -cd xboard-*.tar.gz | tar -xvf -
-    cd xboard-*/
-    ./configure --prefix=$HOME
-    make
-    make install
-</PRE>
-
-<P>If the first step above fails because you don't have gzip, see
-topic <A HREF="#[A.2]">[A.2]</A>, and ask a local Unix expert if you
-need more help.  If you have any problems with the last two steps,
-read the READ_ME and INSTALL files in the xboard-*/ directory.  You
-will also find this FAQ there.
-
-<P>You don't need to have gcc to build XBoard.  Almost any Unix C
-compiler should do.
-
-<HR>
-<H3><A NAME="[B.8]">[B.8] Can I use XBoard or WinBoard to play a game
-  of chess with another human?</A></H3>
-
-The only way for two humans on different machines to play chess in
-real time using XBoard/WinBoard is to use an Internet Chess Server
-as an intermediary.  That is, each player runs his own copy of XBoard
-or WinBoard, both of them log into an ICS, and they play a game there.
-Two copies of XBoard/WinBoard cannot communicate with each other
-directly.
-
-<P>Instructions on how to get started with Internet chess are included
-with the XBoard and WinBoard distributions.  The network addresses
-included in the distribution may not always be current.  The oldest
-and largest ICS is the Internet Chess Club at chessclub.com, which now
-has a fee for registered use, but still allows free unregistered use.
-There are also many newer sites with no fees, using the Free Internet
-Chess Server implementation (FICS).  The most active FICS site is
-freechess.org.  On these and most other chess servers,
-the port number to use is 5000.
-
-<P>If you don't have network connectivity to any ICS site, you
-can run your own server using a version of the FICS code, but this
-is not easy.  See <a href="http://www.tim-mann.org/ics.html#ownics"
->http://www.tim-mann.org/ics.html#ownics</a> for advice and pointers.
-
-<P>The cmail program included with XBoard lets you play email postal games with
-another human; see topic <A HREF="#[B.6]">[B.6]</A>.
-
-<P>Two humans can play chess on the same machine using one copy of
-XBoard/WinBoard in
-Edit Game mode, but the clocks don't run in this mode, so it's of limited
-usefulness.
-
-<P>See also topic <A HREF="#[D.2]">[D.2]</A>, Winsock Chess.
-
-<HR>
-<H3><A NAME="[B.9]">[B.9] Will WinBoard run on Windows 3.1?
-  How about Windows CE (also known as Pocket PC)?
-</A></H3>
-
-WinBoard does not run on Windows 3.1, Windows for Workgroups 3.11, etc.,
-not even with the Win32s compatibility package.  The main problem is
-that Win32s does not have threads or real concurrent processes.  A
-port of WinBoard to Windows 3.1 is possible in theory, but it would be
-difficult and messy, and no one is going to do it.
-
-<p>WinBoard does not run on Windows CE (also
-known as Pocket PC).  I don't know what would be required to port it.
-
-<P>WinBoard does run well on full 32-bit versions of Windows, such as
-Windows 95, 98, NT, 2000, ME, and XP, and should continue to work
-on future 32-bit Windows systems.
-
-<HR>
-<H3><A NAME="[B.10]">[B.10] How do I use XBoard or WinBoard as an external viewer for PGN files
-  with my Web browser?</A></H3>
-
-1) On Unix systems:
-<P>
-- Add the following line to the file .mime.types in your home directory.
-(Create the file if it doesn't exist already.)
-<PRE>
-    application/x-chess-pgn    pgn
-</PRE>
-<P>
-- Add the following line to the file .mailcap in your home directory.
-(Create the file if it doesn't exist already.)
-<PRE>
-    application/x-chess-pgn; xboard -ncp -lgf %s
-</PRE>
-<P>
-- Exit from your Web browser and restart it.
-
-<P>2) On MS Windows systems:
-
-<P>The exact procedure depends on which Web browser you are using.
-The current version of WinBoard automatically configures itself as
-your PGN viewer for local files, Netscape 4.x and later, and Internet
-Explorer.  This automatic setup probably works for all other current Web
-browsers, too.
-
-<HR>
-<H3><A NAME="[B.11]">[B.11] How do I use WinBoard as an external viewer
-  for PGN files with the MS Windows File Manager or Explorer?</A></H3>
-
-WinBoard sets this up automatically when you install it, except on old
-versions of Windows NT (prior to 4.0).  On Windows NT 3.51 or earlier,
-go to the File Manager, click on the File menu, select Associate,
-enter "pgn" as the extension, and use the Browse button to find your
-copy of WinBoard and set up the association.
-
-<HR>
-<H3><A NAME="[B.12]">[B.12] How do I use ICC timestamp or FICS timeseal
-with XBoard?</A></H3>
-
-First, get the appropriate version of timestamp or timeseal for your
-machine from ftp.chessclub.com or ftp.freechess.org.
-Second, be sure that you can connect using XBoard <I>without</I>
-timestamp/timeseal.  Third, be sure that you can connect using
-timestamp/timeseal without XBoard.  See the help files on ICC and FICS
-or ask people online if you have problems.
-
-<P>If you are in a completely ordinary situation, where your machine
-is directly on the Internet and you can connect to ICC or FICS 
-without timestamp/timeseal using
-just the command "xboard -ics" or "xboard -ics -icshost freechess.org",
-change that command to one of the following:
-
-<p><PRE>
-    xboard -ics -icshost 204.178.125.65 -icshelper timestamp
-
-    xboard -ics -icshost 164.58.253.13 -icshelper timeseal
-</PRE>
-
-<p>If you have a firewall between your machine and the ICS, see topic
-<A HREF="#[B.19]">[B.19]</A>.
-
-<P>If you normally have to use the "/icscomm" command line option on
-xboard to log into a second machine, and then telnet to ICC or FICS
-from there, you are going to have to run the Unix version of timestamp
-or timeseal on the second machine.  (If the second machine is not
-running Unix, you are out of luck.)  Get the appropriate version of
-timestamp or timeseal onto the shell machine via FTP; see the help
-files on ICC and FICS for instructions.  Then simply run it when you
-would normally run telnet.  In this configuration you are not
-protected against lag between your PC and the shell machine, or for
-lag caused by heavy load on the shell machine itself from other users.
-
-<P>For further information on timestamp and timeseal, see the help
-files on ICC and FICS.
-
-<HR>
-<H3><A NAME="[B.13]">[B.13] How do I use ICC timestamp or FICS timeseal
-with WinBoard?</A></H3>
-
-<P>If you select an ICS from either the WinBoard Startup dialog or the
-Windows Start submenu that WinBoard installs, WinBoard automatically
-runs timestamp or timeseal if the ICS you chose is known to support it.
-
-<P>If you are constructing a WinBoard command line by hand, add the
-option "/icshelper timestamp" or "/icshelper timeseal" to the WinBoard
-command line to use timestamp or timeseal.  Both timestamp.exe and
-timeseal.exe are included in the WinBoard distribution.  They both
-function identically to the Unix versions, as documented in "help
-timestamp" on ICC and "help timeseal" on FICS.
-
-<p>If you have a firewall between your machine and the ICS, see topic
-<A HREF="#[B.19]">[B.19]</A>.
-
-<P>If you normally have to use the "/icscomm" command line option on
-WinBoard to log into a shell account, and then telnet to ICC or FICS
-from there, you are going to have to run the Unix version of timestamp
-or timeseal on the shell machine.  (If the shell account is not on a
-Unix machine, you are out of luck.)  Get the appropriate version of
-timestamp or timeseal onto the shell machine via FTP; see the help
-files on ICC and FICS for instructions.  Then simply run it when you
-would normally run telnet.  In this configuration you are not protected
-against lag between your PC and the shell machine, or for lag caused by
-heavy load on the shell machine itself from other users.
-
-<P>For further information on timestamp and timeseal, see the help
-files on ICC and FICS.
-
-<HR>
-<H3><A NAME="[B.14]">[B.14] How do I play bughouse with XBoard or WinBoard?
-</A></H3>
-
-XBoard and WinBoard have simple but effective bughouse support.
-Offboard piece holdings are shown in the board window's banner, and
-you drop offboard pieces using the right mouse button.  Press it over
-the destination square to pop up a menu of pieces.
-
-<P>XBoard and WinBoard can display only one board at a time, but you
-can observe your partner's game by running a second copy of the
-program and logging in as a guest.  (Unfortunately, this is not
-possible if you are using the /icscomm option.)  To observe your
-partner's games automatically, use the "follow" or "pfollow" ICS
-command; see the ICS online help for details.
-
-<HR>
-<h3><a name="[B.16]">[B.16] What is Zippy?  How can I interface a 
-chess program to the Internet Chess Servers?</a></h3>
-
-Zippy is an interface that lets a compatible chess engine (such as GNU
-Chess or Crafty) act as a computer
-player on an Internet Chess Server.  Zippy is included in both the
-XBoard and WinBoard distributions.  It is implemented as a small
-amount of additional code within XBoard or WinBoard.  
-For documentation, see the file
-zippy.README, included in both distributions or available
-from my chess Web page,
-<A HREF=
-"http://www.tim-mann.org/chess.html"
->http://www.tim-mann/chess.html</A>.
-The version of zippy.README on my Web page is often more up-to-date
-than those in the XBoard/WinBoard distributions.
-You'll also find a "biography" of Zippy and pointers to the original
-Zippy the Pinhead comic strips on my Web page.
-Please read zippy.README carefully before you ask me any questions about Zippy.
-
-<p>Using a computer to choose your moves on a chess server is
-considered cheating unless your account is on the computer (C) list.
-Read "help computer" on your favorite server for details on their
-policy.  Most of the servers have plenty of computers running now, so they
-will not be excited about having you run a new one unless you have
-written your own chess engine.  They don't really need yet another 
-Crafty or GNU Chess clone.
-
-<HR>
-<h3><a name="[B.17]">[B.17] How can I interface my own chess program
-to XBoard or WinBoard?</a></h3>
-
-This is a non-trivial task.  XBoard and WinBoard were not designed
-with a clean interface for talking to chess programs; they were
-written to work with an existing version of GNU Chess that expects to
-be talking to a person.  Your program has to emulate GNU Chess's
-rather idiosyncratic command structure to work with XBoard and
-WinBoard.  We are gradually cleaning up, improving, and documenting
-the interface as newer versions of XBoard and WinBoard come out,
-however.
-
-<p>For documentation, see the file engine-intf.html, included in both
-distributions or available from my chess Web page, <A HREF=
-"http://www.tim-mann.org/chess.html"
->http://www.tim-mann.org/chess.html</A>.
-The version of engine-intf.html on my Web page is often more up-to-date
-than those in the XBoard/WinBoard distributions.
-
-<HR>
-<h3><a name="[B.18]">[B.18] How can I recompile WinBoard from source?</a></h3>
-
-The source code for WinBoard is available from the author's Web page,
-<A HREF=
-"http://www.tim-mann.org/chess.html"
->http://www.tim-mann.org/chess.html</A>.
-
-<p>WinBoard is currently developed using Microsoft Visual C++ 5.0.
-You can build the program from the MSVC++ GUI by opening the project
-file (winboard.dsp) and telling MSVC++ to build the project.  You can
-also build it from the the command line by using the nmake program
-supplied with MSVC++.
-
-<p>To build WinBoard with the free Cygwin tools, available from <a
-href= "http://www.cygwin.com/" >http://www.cygwin.com/</a>), use the
-command "make -f cygwin.mak".  WinBoard 4.2.5 was successfully
-compiled with the net release of Cygwin as downloaded on 20-March-2001
-(cygwin1.dll 1.1.8, gcc 2.95.2-6, binutils 20001221-1, flex 2.5.4-1),
-but exhibits a command-line parsing bug; see item 511 in the ToDo file
-that comes with WinBoard.  WinBoard 4.1.0 does not compile with
-Cygwin.  WinBoard 4.0.7 is known to compile with Cygwin BL20.1.
-
-<p>To build WinBoard with Borland C++ 4.5, use "borland.mak", supplied
-with the WinBoard sources, as the Makefile.  Support for Borland C++
-was contributed by Don Fong and has not been tested by the author of WinBoard.
-
-<p>WinBoard is a Win32 application, so you definitely need a compiler
-and tool set that supports Win32.  In particular, older versions of
-DJGPP can build only 32-bit MSDOS programs; that is, programs that use
-a DOS extender to get a 32-bit address space and do not make any
-Windows calls.  The latest versions of DJGPP are said to be able to 
-build Win32 programs when used with the proper extension package(s),
-but this is not known to work with WinBoard.  Use Cygwin instead.
-
-<p>See also topic <A HREF="#[C.16]">[C.16]</A>.
-
-<HR>
-<H3><A NAME="[B.19]">[B.19] 
-How can I use XBoard or WinBoard to talk
-to an Internet Chess Server through a firewall or proxy?
-</A></H3>
-
-<p>There is no single answer to this question, because there are many
-different kinds of firewalls in use.  They work in various different
-ways and have various different security policies.  This answer can
-only provide hints.
-
-<p>Note that you can't access Internet Chess Servers through a Web proxy,
-because they are not a Web service.  You talk to them through a raw
-TCP connection, not an HTTP connection.  If you can only access the
-Web through a proxy, there may be a firewall that stops you from
-making direct TCP connections, but there may also be a way through it.
-Read on for hints, and contact your local system administrator if you
-need more information about your local configuration.
-
-<p>A helpful user mailed me the following explanation of how to use
-WinBoard with WinGate:
-<blockquote>
-"I have managed to setup WinBoard though my WinGate proxy.  I have the
-Office version.  What I needed to do was to setup the TCP/IP
-connection to add the User/Host name and my provider service name for
-the DNS, but I had to leave the HOST IP address blank.  I have not
-played with all the variations, so it may be just that I have the DNS
-lookup enabled."
-</blockquote>
-I hope this helps, though I don't find it very clear.  I don't have
-a copy of WinGate myself and can't help if you have questions about it.
-
-<p>If you are using some other non-SOCKS firewall, read the FIREWALLS section
-in your XBoard or WinBoard documentation (man page, info document, or
-Help file).  If you can telnet to a chess server in some way, then you
-can almost certainly connect to it with xboard/WinBoard, though in
-some cases you may not be able to run timestamp or timeseal.  The
-timestamp and timeseal protocols require a clean, 8-bit wide TCP
-connection from your machine to the ICS, which some firewalls do not
-provide.
-
-<p>If you have a SOCKS firewall and are using <strong>XBoard</strong>,
-you should be able to SOCKSify xboard and use it.  See <a
-href="http://www.socks.nec.com/">http://www.socks.nec.com/</a> for
-information about SOCKS and socksification.  However, if you do this,
-you can't use timestamp or timeseal; what you really need is a
-socksified version of timestamp or timeseal.  This is hard because the
-source code for timestamp and timeseal is proprietary; the folks
-running the chess servers don't give it out because that would make it
-too easy to cheat.  On some versions of Unix, you may be able to
-socksify a program that you don't have the source code to by running
-it with an appropriate dynamic library; see <a
-href="http://www.socks.nec.com/">http://www.socks.nec.com/</a>.  For
-others, you might be able to get a pre-built socksified version from
-the chess server administrators.  For timeseal versions, see <a
-href="ftp://ftp.freechess.org/pub/chess/timeseal/"
->ftp://ftp.freechess.org/pub/chess/timeseal/</a>.  For timestamp
-versions, the directory would be <a
-href="ftp://ftp.chessclub.com/pub/icc/timestamp/"
->ftp://ftp.chessclub.com/pub/icc/timestamp/</a>, but at this writing
-there don't seem to be any socksified timestamps there.  Once you have
-a socksified timestamp or timeseal, simply run it with a normal,
-non-socksified xboard in place of the standard timestamp or timeseal.
-
-<p>If you have a SOCKS firewall and you are using
-<strong>WinBoard</strong>, we now know how to make this configuration
-work, complete with timestamp or timeseal!
-
-<p>Start by getting SocksCap32.  This software is freely available
-from <a href="http://www.socks.nec.com/">http://www.socks.nec.com/</a>.
-Install it on your machine, read the documentation, and learn to use
-it.  You may find it useful with many other programs besides WinBoard.
-
-<p>Next, <strong>don't</strong> socksify WinBoard.  Socksifying
-WinBoard itself doesn't let you use it with timestamp or timeseal.
-For some reason I don't understand -- something strange that
-SocksCap32 does -- the socksified WinBoard runs but does nothing, and
-timestamp/timeseal runs all by itself in its own window.
-
-<p>Instead, use the following workaround.  Follow the instructions
-exactly; don't try to skip steps or simplify things.
-
-<p>First, make SocksCap32 application profiles for timestamp and
-timeseal.  Use the following command lines in the SocksCap32
-profiles. Name the first profile "timestamp" and the second
-"timeseal".
-
-<p><pre>
-    "c:\program files\winboard\timestamp.exe" chessclub.com 5000 -p 5000
-    "c:\program files\winboard\timeseal.exe" freechess.org 5000 -p 5000
-</pre>
-
-<p>Second, run timestamp or timeseal by itself, socksified, using its
-profile.  This will open an unneeded, black window that will not
-respond to typing.  Minimize it to the task bar and ignore it. It will
-go away when you exit from WinBoard.
-  
-<p>Next, run WinBoard using the following command line.  Make a shortcut
-or type this command into an MS-DOS Prompt box.  Don't run WinBoard
-itself socksified, just run it directly.
-
-<p><pre>
-    "c:\program files\winboard.exe" /ics /icshost=localhost /icsport=5000
-</pre>
-
-<p>After you get this working, you can try getting the timestamp window to
-auto-minimize by starting it from a shortcut instead of from the
-SocksCap32 control window. As it says in the SocksCap32 help file, put
-the following in the Target field of a shortcut's Properties page:
-
-<p><pre>
-    "c:\program files\sockscap32\sc32.exe" timestamp
-</pre>
-
-Then select "Run: Minimized" on the same page.  Do the same for timeseal.
-
-<p>Another method that can work is to use a .bat file to start both
-timestamp and WinBoard.  It would look something like this:
-
-<p><pre>
-    REM --
-    REM -- icc.bat
-    REM -- Start timestamp under SocksCap32 and use WinBoard to connect to it.
-    REM -- The string "timestamp" refers to a SocksCap32 profile for timestamp.
-    REM --  Do not change it to the filename of the timestamp program!
-    REM --
-    start /minimized "c:\program files\sockscap32\sc32.exe" timestamp
-    cd "c:\program files\winboard"
-    winboard /ics /icshost=localhost /icsport=5000
-</pre>
-
-<p>This workaround has a problem if you want to run two copies of
-WinBoard at once, talking to the same chess server twice (for
-bughouse) or to two different chess servers. If you need to do that,
-you will need to run a separate copy of timestamp with <i>a different
-port number</i> for each connection.  You'll need to make a second set of
-profile entries with a different value after the -p flag (say, 5001)
-and you'll need to change the WinBoard command line /icsport=5000 for
-the second WinBoard to match.
-
-<HR>
-<H3><A NAME="[B.20]">[B.20] 
-How can I use XBoard or WinBoard on chess.net with accuclock?
-</A></H3>
-
-<p>I believe chess.net provides a Win32 command-line version of
-accuclock that will work with WinBoard.  Please see the documentation
-on the chess.net server itself; don't ask the author of WinBoard.
-
-<p>I don't know whether chess.net provides versions of accuclock for
-Unix at this time.  Ask them.
-
-<hr>
-<h3><a name="[B.21]">[B.21]
-  Can I get Zippy to do one or more ICS commands automatically at the 
-  start or end of each game?</a></h3>
-
-<p>By default, Zippy automatically sends the command "gameend" to ICS
-at the end of each game.  You can alias this command (using the ICS
-"alias" feature) to anything you want.  On ICC, you can use the
-"multi" feature to alias gameend to several commands, but other
-servers don't have that feature.  Zippy doesn't send anything at the
-start of the game by default.
-
-<p>You can get Zippy to send one or more commands of your choosing, at
-the start and/or end of each game, by using the -zippyGameStart and
--zippyGameEnd command line options, newly added in version 4.0.3.
-Both xboard and WinBoard have (somewhat obscure) ways of getting
-newlines into this option to send several commands.  Here is an
-example of one way to do it for each.
-
-<p><pre>
-    xboard -ics -zp -xrm '*zippyGameStart: say hi\nsay prepare to die\n'
-
-    WinBoard /ics /zp /zippyGameEnd='say thanks\nseek 5 0\nseek 2 12\n'
-</pre>
-
-<hr>
-<h3><a name="[B.22]">[B.22]
-  How do I print from WinBoard?
-</a></h3>
-
-WinBoard does not have built-in printing functionality.
-If you want to print a picture of the board, press Alt+PrintScrn, run the
-standard Windows application Paintbrush, select Paste, and print from there.
-If you want to print a list of moves, save your game as a PGN file,
-then open the PGN file with Notepad or any other plain text editor and
-print it from there.
-
-<hr>
-<h3><a name="[B.23]">[B.23]
-  Can I get Zippy to automatically reconnect to ICS when its connection 
-  breaks?</a></h3>
-
-<p>There isn't a perfect solution to this problem yet, but a pretty
-good one is to write a shell script (for xboard) or .bat script (for
-WinBoard) that automatically restarts the program whenever it exits.
-Use the -xexit flag so that you don't get a popup dialog that must be
-dismissed with the OK button before the program will exit.  The gap in
-this solution is that your connection to ICS can sometimes get into a
-state where the program does not notice that the connection is broken
-until the next time it tries to send a command.  Perhaps some future
-version of xboard/WinBoard will have an option to send a harmless
-command every five minutes or so.
-
-<p>Anyway, here is a sample Windows .bat file that restarts WinBoard each
-time it exits.  Thanks to Jason Williamson.  It assumes that you have put
-your computer account's name and password in a file named logon.ini.
-
-<pre>
-REM --
-REM -- wbrecon.bat
-REM -- Start WinBoard in Zippy mode, and restart it each time it exits.
-REM -- Add or change parameters as needed for your application.
-REM --
-:loop
-start /w winboard /zp /ics /icslogon logon.ini /xexit /xautoraise
-REM -- The next line is to have a short delay setup for 139 seconds.
-REM -- Leave it out if it doesn't work on the version of Windows you use.
-TYPE NUL | CHOICE.COM /N /CY /TY,99 &gt;NUL
-goto loop
-</pre>
-
-<p>Here is a Unix shell script to do the same thing for xboard.
-It's a bit more elaborate.  It is based on the script I use for the
-original Zippy.  It logs all ICS output to a file named zippy.out,
-and it lets you type commands to Zippy by running "cat &gt; zippy.fifo".
-
-<pre>
-#! /bin/sh
-host="204.178.125.65 -icsport 5000 -telnet -telnetProgram timestamp"
-#host="164.58.253.13 -icsport 5000 -telnet -telnetProgram timeseal"
-out=zippy.out
-fifo=zippy.fifo
-ZIPPYPASSWORD='something'
-export ZIPPYPASSWORD
-ZIPPYPASSWORD2='orother'
-export ZIPPYPASSWORD2
-ZIPPYLINES=`pwd`/all.lines
-export ZIPPYLINES
-ZIPPYGAMEEND='say Yow, that was FUN!
-gameend'
-export ZIPPYGAMEEND
-zippylogon=`pwd`/logon.ini
-DISPLAY=`hostname`:0.0
-export DISPLAY
-mv -f $out ${out}.old
-rm -f $fifo
-mkfifo $fifo
-pid=$$
-( while [ true ] ; do cat -u $fifo ; done ) | \
-      ( while [ true ] ; do
-          xboard -iconic -ics -icshost $host \
-                 -zt -zp -xbell -xanimate \
-                 -xautosave -xquiet -fcp "gnuchessx -h" \
-                 -icslogon $zippylogon -xexit -autoflag -xautoraise $*
-          sleep 600
-        done ) &gt; $out 2&gt;&amp;1 &amp;
-</pre>
-
-<hr>
-<h3><a name="[B.24]">[B.24]
-  The chess engines are too strong and always beat me.  How can I adjust
-  the difficulty level to make them weaker?</a></h3>
-
-<p>The simplest way to get that effect is to make sure the
-XBoard/WinBoard Auto Flag option is off, set a very fast time control
-so that the chess engine can't think for long, but take as much time
-over your own moves as you want. Also feel free to use Retract Move if
-you make a blunder.  
-
-<p>Many chess coaches will let you switch sides after
-they get a stronger position so that you can get experience playing
-positions where you are winning.  You can try this with XBoard/WinBoard
-by using the Machine White or Machine Black menu command to make the
-machine take over your position.
-
-<p>The -depth command-line option to XBoard/WinBoard can also be used to
-weaken the engine (see the man page or Help file).  It's a bit of a
-nuisance to set command line options in Windows, but see topic <A
-HREF="#[C.7]">[C.7]</A> for instructions.
-
-<p>Other ways of weakening engines are engine-specific.  Many of them
-let you adjust various parameters, and if you choose bad settings, the
-engine will play more poorly.  Consult whatever documentation came with
-the engine you are using.
-
-<hr>
-<h3><a name="[B.25]">[B.25]
-  May I use the piece bitmaps from XBoard/WinBoard in my own program?</a></h3>
-
-<p>The piece bitmaps used in XBoard and WinBoard were designed by
-Elmar Bartel.  He released them under the <a
-href="http://www.gnu.org/copyleft/gpl.html">GNU General Public
-License</a>.  This means that if your program is also free software
-distributed under the GPL, you can use them freely.  If your program
-is distributed under some other license, including commercial,
-shareware, or non-GPL freeware, then you cannot use the bitmaps unless
-you obtain special permission from Elmar.  See the file README.bitmaps
-that comes with the XBoard and WinBoard source code for more
-information and an email address you can write to.
-
-<HR><H2><A NAME="[C]">[C] XBoard and WinBoard, bugs and problems</A></H2>
-
-<HR><H3><A NAME="[C.1]">[C.1] I can't build XBoard
-because the X11/Xaw/...  include files are not found.</A></H3>
-
-These are the header files for the Athena Widgets library, which XBoard uses
-heavily.  Some versions of Unix don't supply these files, but they are part of
-the standard X distribution, freely available from MIT.  
-
-<P>For general information on getting missing X sources, see the FAQ on
-comp.windows.x.  Note that you may be missing only the header files, or you
-may be missing the libraries themselves too.
-
-<P>HP-UX users are missing only the header files.  You can get them by
-anonymous FTP as follows.  (But first check with your system
-administrator to see if someone else at your site has already done
-this.)  Get the archive file /hpux9/X11R5/Core/Xaw-5.00.tar.gz (Xaw
-header files) via anonymous FTP from the site hpux.csc.liv.ac.uk
-(138.253.42.172), or one of the other official sites---Germany:
-hpux.ask.uni-karlsruhe.de (129.13.200.57), US: hpux.cae.wisc.edu
-(144.92.4.15), France: hpux.cict.fr (192.70.79.53) or Netherlands:
-hpux.ced.tudelft.nl (130.161.140.100). Unpack the archive using gzip
-and follow the instructions in its README and/or HPUX.Install files.
-Thanks to Richard Lloyd for this information.
-
-<P>If you have the Xaw header files installed in a different place
-than the other X11 headers, you may need to configure XBoard with an
-extra flag to help it find them.  For example, if yours are in
-/foo/bar/X11/Xaw, try this:
-
-<p><PRE>
-    rm config.cache
-    (setenv CFLAGS -I/foo/bar ; configure)
-</PRE>
-<P>
-Also see topic <A HREF="#[C.2]">[C.2]</A>.
-
-<HR>
-<H3><A NAME="[C.2]">[C.2] Configuring or building XBoard fails due to
-missing header files, missing libraries, or undefined symbols.
-</A></H3>
-
-Perhaps you have the X server and client programs installed on your
-machine, but not the X header files and link-time libraries.  If so,
-you can run existing X programs, but you cannot compile a new X
-program from source code.  In this case the XBoard configure script
-will fail and will tell you to look at this question in the FAQ.  Many
-GNU/Linux distributions put the headers and libraries in a separate
-package, which you might not have installed.  If you are using RedHat,
-install the XFree86-devel package.  If you are using some other
-kind of Unix, ask your system administrator where to find the X header
-files and link-time libraries.  If this is not your problem, read on.
-
-<p>The configure script for XBoard looks for X libraries and header
-files in some common places.  Sometimes it fails: If yours are
-installed in an odd place, it may not find them at all.  If you have
-more than one version of X installed on your system, it may find the
-"wrong" one, or occasionally it may find libraries from one version
-and incompatible header files from another.  You can work around these
-problems by telling the configure script where the files are.  For
-example:
-
-<p><PRE>
-    configure --x-includes=/odd/place/include \
-              --x-libraries=/odd/place/lib
-</PRE>
-
-<P>The directory named in the argument to --x-includes must have a
-subdirectory "X11" that contains the actual .h files.  That is, if
-your X.h file has full pathname /odd/place/X11R6/include/X11/X.h, then
-you must give the argument --x-includes=/odd/place/X11R6/include.
-
-<P>Some linkers have bugs that cause bogus error messages when you try
-to link X programs.  The configure script includes a workaround for a
-bug of this kind that exists in some SunOS 4.x.x installations.  See
-the FAQ on comp.windows.x for more information about problems of this
-kind.
-
-<P>If all else fails, check whether anyone else at your site has been able to
-compile any X programs on your system.  Your X installation might be buggy.
-If so, the system administrator at your site might know how to fix or work
-around the problem.
-
-<P>Also see topic <A HREF="#[C.1]">[C.1]</A>.
-
-<HR><H3><A NAME="[C.3]">[C.3] I have problems using WinBoard on ICS
-with a modem.  I'm not running SLIP or PPP, but just dialing in to an
-ordinary login account ("shell account").</A></H3>
-
-Here are solutions to some common problems in this area.
-
-<P>Some people want to connect to ICS through HyperTerminal or some other
-terminal program first, then run WinBoard.  This is not how it works.
-WinBoard wants to talk directly with your modem, acting as a terminal program
-itself.  Start out with the modem "on hook" (not making a call).
-
-<P>Run WinBoard with a command line like this (adding more options if desired):
-
-<p><PRE>
-    WinBoard /ics /icscom com1
-</PRE>
-
-Use com2, com3, or com4 in place of com1 if your modem is connected to one of
-those ports.
-
-<P>After you start WinBoard, you may need to change some of the options in the
-Communications dialog (on the Options menu).  The dialog has the usual options
-for talking to modems: bits per second, bits per byte, parity, number of stop
-bits.  You will probably want to use Save Settings Now when you're done.
-
-<P>Next, type dialing commands to your modem in the text window that WinBoard
-creates.  You may need to turn off Local Line Editing on the Options menu
-while you are typing commands to your modem.  Turn it back on when you're
-done.  See the WinBoard Help file for instructions if you see your typing
-echoed an extra time after you hit Enter.
-
-<HR>
-<H3><A NAME="[C.4]">[C.4]
-I have problems using WinBoard on ICS with Windows 95 and SLIP
-or PPP.  When trying to start up, it gets the error "Address family
-not supported by protocol family" (or some equally strange message).
-</A></H3>
-
-WinBoard is a 32-bit application, but some Winsock (TCP/IP) implementations
-support only 16-bit applications.  You get a strange looking error message
-if you try to use a 32-bit application because
-there is no standard Winsock error code number
-for "32-bit application not supported."
-
-<P>Microsoft TCP/IP works with both 16-bit and
-32-bit applications, supports SLIP, PPP, Ethernet, etc., and is included
-with Windows 95 and later Windows systems.
-If possible, I recommend that you uninstall
-whatever Winsock you are using and install Microsoft TCP/IP instead.
-For more information, see
-<A HREF=
-"http://walden.mo.net/~rymabry/95winfaq.html"
->http://walden.mo.net/~rymabry/95winfaq.html (the Win95-L FAQ)</A>.
-
-<P>Trumpet Winsock 2.1 (and earlier) supports only 16-bit
-applications, and hence does not work with WinBoard.  But there is a
-beta-test release available that does support 32-bit applications.  
-I have not tried it with WinBoard, but it 
-should work.  See Trumpet's Web page
-<A HREF=
-"http://www.trumpet.com.au/wsk/winsock.htm"
->http://www.trumpet.com.au/wsk/winsock.htm</A>
-for more information.
-
-<P>The 16-bit versions of America On-Line's software do not support
-32-bit Winsock applications.  Get the 32-bit version.  At one time the
-32-bit version was called "AOL for Windows 95," but I imagine that has
-changed.  Hopefully the current versions are all 32-bit.
-
-<P>A few versions of Winsock may have bugs that prevent
-Windows timestamp/timeseal from working with them.  I'm not sure if
-such bugs exist in any versions that actually have 32-bit support,
-so this point might be moot.  Again, Microsoft TCP/IP is known to work.
-
-<HR><H3><A NAME="[C.5]">[C.5] When I try to run WinBoard, I get the
-message "Failed to start chess program gnuchess on localhost: NO
-LANGFILE (file gnuchess.lan not found)".</A></H3>
-
-<p>This message means that WinBoard is trying to run GNU Chess, but
-GNU Chess cannot find a file that it needs, named gnuchess.lan.
-If you see it, you've probably customized WinBoard's /fcp, /fd, /scp,
-and/or /sd options and made a mistake in the process.  Review what
-you did, and see the WinBoard help file.
-
-<HR>
-<H3><A NAME="[C.6]">[C.6] I want to use XBoard or WinBoard as an Internet
-Chess Server interface, but the ICS Client option is grayed out on the
-menu.</A></H3> 
-
-XBoard and WinBoard have three major modes that can't be changed from the
-menus: local chess engine mode,
-ICS mode, and standalone mode.
-
-<p>With XBoard, you have to set the mode using command-line options.
-Local chess engine mode is the default, -ics selects ICS mode, and
--ncp ("no chess program") selects standalone mode.
-
-<p>With WinBoard, if you don't set the mode using command-line
-options, you get a dialog box asking which mode you want.  To bypass
-the dialog box, use -cp ("chess program") for local chess engine mode,
-or -ics or -ncp as with XBoard.  Also see topic <A HREF="#[C.7]">[C.7]</A>.
-
-<HR>
-<H3><A NAME="[C.7]">[C.7] How do I give command-line options to
-a Windows program like WinBoard?</A></H3>
-
-<P>There are many ways; pick your favorite:
-
-<P><UL>
-<LI>Type the command line into an MS-DOS Prompt box.  Example:
-"WinBoard -ics".
-
-<LI>Make a Windows shortcut for WinBoard.  You can do this by
-right-dragging WinBoard.exe to the desktop and selecting "Create
-Shortcut(s) Here" from the menu that appears.  Right-click on the
-shortcut, select Properties, and click the Shortcut tab.  The
-command-line text box is labelled "Target" instead of "Command line"
-just to confuse you.  Edit the text in this box, adding the command
-line options to the end.</LI>
-
-<LI>Choose Run from the Start menu, or File / Run from the Program
-Manager or File Manager, and type the command line into the dialog you
-get.  You may have to give WinBoard's full drivespec and filename if
-it is not in a directory on your search path.</LI>
-
-<LI>Make a Program Manager icon for WinBoard.  You can do this by
-dragging WinBoard.exe from the File Manager into the Program Manager,
-or by using File / New in the Program Manager.  Select the icon and
-choose File / Properties.  Edit the Command Line text box to add the
-command-line options to the end.</LI>
-</UL>
-
-<HR>
-<H3><A NAME="[C.9]">[C.9]
-When I exit from WinBoard after using it to play against a chess
-program on my machine, the chess program keeps running in the background.
-</A></H3>
-
-<p>Be sure you have the current versions of WinBoard and the chess
-engine you are using.  WinBoard 3.4.1 and earlier had a bug that
-caused this problem to occur with all chess engines.  A buggy chess
-engine that does not respond to the "quit" command will also cause
-this.
-
-<p>If you still see this problem, you can stop the rogue chess engine
-by pressing Ctrl+Alt+Del, selecting the chess engine process from the
-menu, and pressing the End Task button.
-
-<hr>
-<h3><a name="[C.12]">[C.12]
-Why do my ICS 
-opponents often get extra time after they make their moves?
-Why do I sometimes lose time off my clock after I make my move?
-</a></h3>
-
-If you are playing with the ICS incremental clock, both you and your
-opponent get a set amount of extra time after each move.
-
-<p>If your or your opponent has netlag, your opponent might appear to
-get extra time, especially if your opponent is using timestamp or
-timeseal.  The ICS charges each player who is using timestamp or
-timeseal only for the time between when the player received his
-opponent's move and the time he sent his own move.  Thus delays in
-network transmission do not count against either player.  But WinBoard
-counts down the display of your opponent's clock on your screen under
-the assumption that there is no netlag.  When his move comes in, if
-there was netlag, the ICS may not have really charged him for that
-much time, and WinBoard corrects the clock to what the ICS says it
-should read.
-
-<p>If you are not using timestamp or timeseal, you may appear to lose
-time off your clock at some point after you make your move.  In this
-case, the ICS charges you for the time between when it sent you your
-opponent's move and the time it received your move.  Thus delays in
-network transmission count against you.  WinBoard stops counting down
-the display of your clock on your screen (and starts your opponent's)
-when you make your move.  When the ICS echoes your move back to you, it
-may have charged you for more time than that, and WinBoard corrects
-the clocks to what the ICS says they should read.
-
-<p>See "help lag" and "help timestamp" or "help timeseal" on your ICS for
-more detailed information.
-
-<hr>
-<h3><a name="[C.13]">[C.13]
-I can't run WinBoard unless I delete the WinBoard.ini file each time!
-</a></h3>
-
-<p>Most people don't have this problem, but two or three people using
-Windows NT 4.0 with Service Pack 3 or 4 have reported it.  I have no
-idea what causes this problem.  Contrary to what was reported in a
-previous version of this FAQ, reinstalling the service pack after
-installing WinBoard does not seem to solve the problem.
-
-<hr>
-<h3><a name="[C.15]">[C.15]
-I get errors compiling XBoard's parser.c.
-</a></h3>
-
-<p>The file parser.c is automatically generated from parser.l.  The
-copy included with XBoard 4.0.2 was generated by lex on Tru64 Unix and
-has problems compiling and linking on current GNU/Linux versions.  The
-copy included with XBoard 4.0.3 was generated by flex on a GNU/Linux
-machine, but it too won't necessarily work on other versions of Unix.
-If you have this problem, you can fix it by deleting parser.c and
-letting the Makefile re-create it from parser.l.  This will work if
-you have either lex or flex on your system.  Flex is available in all
-GNU/Linux distributions and can be obtained at no charge from the Free
-Software Foundation, www.fsf.org.
-
-<hr>
-<h3><a name="[C.16]">[C.16]
-I get an error building WinBoard from source because "flex" is not found.
-</a></h3>
-
-<p>The file parser.c is automatically generated from parser.l.  The
-Makefile included with the WinBoard source kit has a rule for
-generating parser.c using the program "flex", which will fail if you
-don't have flex.  However, the source kit also includes a ready-made
-copy of parser.c, so you don't really need flex unless you have made
-changes to parser.l.  Check that you still have a copy of parser.c; if
-you don't, unpack the WinBoard source zip file again to get one.
-Either set the last-modified time of parser.c to be later than that of
-parser.l, delete parser.l, or comment out the Makefile rule for
-building parser.c from parser.l, and then try building WinBoard again.
-
-<p>If you do want to change parser.l and rebuild parser.c, you can get
-flex as part of the free Cygwin kit from 
-<a href="http://sourceware.cygnus.com/cygwin/"
->http://sourceware.cygnus.com/cygwin/</a>.  You can
-probably also get flex for Windows by itself from various other places
-around the Internet.  It is free software distributed by the Free
-Software Foundation, www.fsf.org.
-
-<hr>
-<h3><a name="[C.17]">[C.17]
-  XBoard hangs shortly after connecting to an ICS when used with dxterm,
- cmdtool, dtterm, kterm, konsole, or other substitutes for xterm.
-</a></h3>
-
-<p>After connecting to a chess server, XBoard 4.0.2 and later sends an
-escape sequence to its terminal that is meant to display your handle
-and the ICS host name (for example, "user@chessclub.com") in the
-terminal's banner and icon.  It seems that several of the alternative
-X terminal programs have a bug that makes them hang when sent this
-escape sequence.
-
-<p>You can work
-around the problem by using xterm, nxterm, rxvt, aterm, xiterm, or
-gnome-terminal, all of which seem to work fine.  In fact, current
-versions of kterm and konsole seem to work fine too, so if you are
-having problems with one of them, be sure you are not running an
-outdated version.  
-
-<p>Alternatively, you can disable this feature by commenting out the
-body of DisplayIcsInteractionTitle in xboard.c and recompling xboard.
-
-<hr>
-<h3><a name="[C.18]">[C.18]
-  The WinBoard pieces show up in the wrong colors, appear distorted,
-  or are not visible at all.
-</a></h3>
-
-<p>This can happen if you have a bug in your Windows display driver.
-Check with the manufacturer of your display card, the manufacturer of
-your computer, or Microsoft to see if there is an updated driver
-available.  You can usually download updated drivers from the Web.
-
-<p>If you can't find an updated driver, you can try running Windows
-using a different number of colors and/or disabling some of the
-hardware acceleration features on your display card.  To change the
-number of colors, go to Windows Start / Settings / Control Panel /
-Display / Settings / Color Palette.  To disable hardware acceleration
-features, go to Windows Start / Settings / Control Panel / Display /
-Settings / Advanced Properties / Performance / Hardware Acceleration.
-
-<p>It's also possible that Windows has the right driver for your
-hardware already but you are not using it.  It may help to reinstall
-your driver.  Go to Windows Start / Settings / Control Panel / System
-and delete your display card (maybe even your monitor too), then
-reboot.  Windows should automatically re-detect your card and monitor
-and re-install the drivers; if it doesn't, run Start / Settings /
-Control Panel / Add New Hardware to force it to.
-
-<p>If all else fails, try Monochrome mode.  On WinBoard's menus, go
-to Options / Color and check Monochrome.  WinBoard will display in black
-and white.
-
-<HR>
-<H3><A NAME="[C.19]">[C.19] XBoard or WinBoard tells me "Error: first chess
-  program (...) exited unexpectedly".</A></H3>
-
-<p>This message means that your chess engine crashed, probably due to
-a bug in the engine, or because you have it configured incorrectly.
-You can try running XBoard or WinBoard again with the "-debug" flag on
-the command line.  This will print out all the messages received from
-the chess engine.  (With WinBoard, the messages go into a file called
-WinBoard.debug; with XBoard, they go to the xterm that you started
-XBoard from.)
-
-<P>If you are using GNU Chess and you see this problem as soon as it
-starts up, most likely GNU Chess is exiting with an error message.  If
-you see the message "NO LANGFILE", it means that you did not install
-GNU Chess correctly, and it is unable to find the file gnuchess.lang.
-Make sure that you defined LIBDIR in the gnuchess Makefile, and that
-gnuchess.lang is in that directory.  If gnuchess.lang is not there,
-you probably didn't type "make install" in the gnuchess src directory;
-you must do this to install gnuchess.lang (and the gnuchess book).  If
-you defined LIBDIR to something that is not an absolute pathname (that
-is, to something that does not start with a "/"), GNU Chess will work
-only if you run it from the GNU Chess "src" directory where you built
-it.
-
-<hr><h3><a name="[C.20]">[C.20]
-  XBoard tells me "Warning: Cannot allocate colormap entry", or
-  "too few colors available; trying monochrome mode", or
-  "XPM pieces cannot be used in monochrome mode".
-</a></h3>
-
-<p>You are running your X server with 8-bit color depth, and you are running
-some program that has used up all 256 of your colors.  Netscape tends
-to do this, or maybe you have a background image that uses up all of
-your colors.
-
-<p>If you have a modern machine, you probably have enough display
-memory to run your X server with 16-, 24-, or 32-bit color depth.  If
-you're using "startx" to start the X server, try giving the command as
-"<tt>startx -- -bpp 24</tt>" (or 16, or 32).  On newer X servers you
-may have to use -depth instead of -bpp.  Further details on
-configuring your X server are beyond the scope of this FAQ.
-
-<p>If you must run in 8-bit mode, try the following:
-Avoid background images that use up all your colors.  If you
-run Netscape, try starting it up with the <tt>-install</tt> command-line
-option; this gives Netscape its own private colormap that X will
-switch to when Netscape has the keyboard focus.  
-
-<P>If all else fails, another possibility is to run xboard in
-monochrome (black and white) mode by giving it the <tt>-mono</tt>
-command-line option.  XBoard will try this by itself in some cases.
-Monochrome mode works only with bitmap pieces, not pixmap pieces, so
-trying to use it may give you the error "XPM pieces cannot be used in
-monochrome mode".  To get around this, either use the -bitmapDirectory
-command line option to point XBoard to the directory containing the
-bitmap pieces included with the XBoard source code, or rebuild XBoard
-with pixmap support disabled, using "./configure --disable-xpm ; make
-clean ; make".
-
-<hr><h3><a name="[C.21]">[C.21]
-  When I log in to freechess.org, the Enter key doesn't work, and I 
-  have to use Ctrl+J instead.  But when I use WinBoard, Ctrl+J doesn't
-  work either, so I'm stuck.
-</a></h3>
-
-<p>This is a pretty rare problem.  It should only arise if you have to
-reach freechess.org by telnetting (or connecting with WinBoard
-/icsport=23) from a Windows PC to a Unix box, and then telnetting from
-there to freechess.org.  The Enter key should always work when
-connecting directly from your PC to freechess.org.
-
-<p>The best way to get around the problem is to run timeseal on the
-intermediate Unix box instead of telnet.  Get the appropriate version
-of timeseal for your box from ftp.freechess.org and follow the
-directions in the help files on FICS.
-
-<p>If you can't run timeseal for some reason, there are some things
-you can do to make telnet stay in line mode instead of going to
-character mode.  Then the Enter key will work.  First, try "telnet
-freechess.org 5000" instead of "telnet freechess.org."
-If that still doesn't work, then when the Enter key stops working,
-type the following.  Here <tt>&lt;</tt> and <tt>&gt;</tt> surround the
-names of keys.
-
-<p><pre>
-    &lt;Ctrl+S&gt;&lt;Ctrl+]&gt;mode line&lt;Enter&gt;
-</pre>
-
-<hr><h3><a name="[C.22]">[C.22]
-  XBoard says, "Failed to start first chess program gnuchessx
-  on localhost: gnuchessx: No such file or directory."
-</a></h3>
-
-<p>XBoard is looking for GNU Chess 4.0.  If you didn't want to use
-XBoard with GNU Chess, please see topic <A HREF="#[C.6]">[C.6]</A>.
-If you did want to use GNU Chess 4.0, be sure you have it installed and
-that it is on your $PATH.  If you wanted to use GNU Chess 5 instead,
-see topic <A HREF="#[D.6]">[D.6]</A>.
-
-<HR>
-<H2><A NAME="[D]">[D] Crafty and other topics</A></H2>
-<HR>
-<H3><A NAME="[D.1]">[D.1] What is XChess?</A></H3>
-
-XChess is an older chessboard program that is no longer supported.  XChess was
-written for X version 10, and you may or may not be able to build and run it
-on an X11 system.
-
-<P>XChess has only one significant feature that is not present in XBoard: Two
-humans can play chess using XChess on different machines, without using the
-Internet Chess Server as an intermediary.  This feature is of interest only if
-you don't have network connectivity to the Internet Chess Server.
-
-<P>Note: There actually have been several different programs called "XChess" in
-circulation at various times.  The above describes one that was associated
-with GNU Chess.
-
-<HR>
-<H3><A NAME="[D.2]">[D.2] What is Winsock Chess?</A></H3>
-
-Winsock Chess is a program that lets two people play chess across a
-network.  It runs only under Microsoft Windows.  Some of the code in
-Winsock Chess is derived from GNU Chess, but it is not maintained by
-the GNU Chess team.  You can get a copy from the Internet Chess
-Library; see topic <A HREF="#[A.2]">[A.2]</A>.  For more information,
-contact its author, Donald Munro, ccahdm@beluga.upe.ac.za.
-
-<HR>
-<H3><A NAME="[D.3]">[D.3] What is Crafty?</A></H3>
-
-Crafty is a freely-available chess program written by Bob Hyatt.  
-Bob is the main author of the well-known chess program Cray
-Blitz.  Crafty is a very strong program, its code is available, commented
-and fairly readable, and its author is actively working on improvements.
-
-<p>You can download Crafty from <a
-href="ftp://ftp.cis.uab.edu/pub/hyatt/"
->ftp://ftp.cis.uab.edu/pub/hyatt/</a>.  Start by getting the <a
-href="ftp://ftp.cis.uab.edu/pub/hyatt/read.me" >read.me</a> file and
-reading it.  Among other things, this file contains instructions on
-how to install Crafty as a command-line application on your machine.
-
-<p>There is a Crafty mailing list.
-To subscribe, send email to majordomo@cis.uab.edu, with 
-"subscribe crafty-list" in the body.
-
-<HR>
-<H3><A NAME="[D.4]">[D.4] How do I use Crafty with XBoard?</A></H3>
-
-<p>First, you need to get Crafty and install it as a command-line
-application on your machine.  See topic <A HREF="#[D.3]">[D.3]</A>.
-
-<p>To use Crafty with XBoard, give the -fcp
-parameter like this:
-
-<p><PRE>
-    xboard -fcp "./crafty" -fd <I>crafty_directory</I>
-</PRE>
-
-Here <I>crafty_directory</I> is the directory where you installed Crafty.
-You can add more xboard options at the end of the command line.
-
-<p>Crafty 15.14 or later is required to work properly with XBoard
-4.0.0 or later.  We generally recommend using the latest versions of
-both XBoard and Crafty.
-
-<HR>
-<H3><A NAME="[D.5]">[D.5] How do I use Crafty with WinBoard?</A></H3>
-
-<p>First, you need to get Crafty and install it as a command-line
-application on your machine.  See topic <A HREF="#[D.3]">[D.3]</A>.
-It is best to use the latest version of Crafty with the latest version
-of WinBoard to make sure all features are compatible and function
-correctly.  You can install Crafty in any directory you like.
-
-<p>You also need to get WinBoard and install it in the normal way
-using its built-in installer.  You can do that either before or after
-you install Crafty.
-
-<p>After both Crafty and WinBoard are installed separately, follow the
-directions in the WinBoard Help file (included with WinBoard) for
-connecting new chess engines to WinBoard.
-
-<p>If you want to have Crafty act as an automated computer player on a
-chess server, see topic <A HREF="#[B.16]">[B.16]</A>.  Before you try
-to get that working, be sure you can play against Crafty locally,
-first without WinBoard, then with it.  Also be sure you can use
-WinBoard to play on the chess server yourself, without having Crafty
-connected to it.  You have to crawl before you can walk!
-
-<HR>
-<H3><A NAME="[D.6]">[D.6] How do I use GNU Chess 5 with XBoard?</A></H3>
-
-<p>By default, XBoard still tries to use GNU Chess 4 by running the
-command "gnuchessx".  That's why if you don't have GNU Chess 4, you
-get the error message "Failed to start first chess program gnuchessx
-on localhost: gnuchessx: No such file or directory."
-
-<p>If you have GNU Chess 5, the command should be "gnuchess xboard"
-instead.  To make XBoard use this command, give the -fcp parameter
-like this:
-
-<p><PRE>
-    xboard -fd <I>gnuchess_directory</I> -fcp "./gnuchess xboard" 
-</PRE>
-
-Here <I>gnuchess_directory</I> is the directory where you installed
-GNU Chess 5 and its book.  You can add more xboard options at the
-end of the command line.
-
-<p><HR>
-$Id: FAQ.html,v 2.2 2003/11/28 09:35:21 mann Exp $<br>
-** End of XBoard/WinBoard FAQ **
-</BODY></HTML>
+<HTML><HEAD><TITLE>\r
+XBoard and WinBoard: Frequently Asked Questions</TITLE></HEAD>\r
+<BODY>\r
+<H1>XBoard and WinBoard: Frequently Asked Questions</H1>\r
+\r
+This document answers some frequently asked questions about the\r
+graphical chess interfaces XBoard and WinBoard.\r
+A hyperlinked version of this FAQ is available on\r
+the Web through the page\r
+<A HREF=\r
+"http://www.tim-mann.org/chess.html"\r
+>http://www.tim-mann.org/chess.html</A>.\r
+\r
+<i>This FAQ is in need of revision.  Please contact us if you'd like\r
+to help update it.</i>\r
+\r
+<HR>\r
+<H2>Outline</H2>\r
+\r
+<UL>\r
+<LI><A HREF="#[A0]">[A] Introduction and hot topics</A></LI>\r
+<LI><A HREF="#[B0]">[B] XBoard and WinBoard</A></LI>\r
+<LI><A HREF="#[C0]">[C] XBoard and WinBoard, bugs and problems</A></LI>\r
+<LI><A HREF="#[D0]">[D] Crafty and other topics</A></LI>\r
+</UL>\r
+\r
+<HR>\r
+<H2>Detailed contents</H2>\r
+\r
+<UL>\r
+<LI><A NAME="[A0]" HREF="#[A]">[A] Introduction and hot topics</A></LI> \r
+<UL>\r
+<LI><a href="#[A.1]">[A.1] What are XBoard and WinBoard?</a></li>\r
+<LI><A HREF="#[A.2]">[A.2] Where can I get chess information and chess\r
+  software?</A></LI> \r
+<LI><A HREF="#[A.3]">[A.3] What are the current version numbers for\r
+  XBoard and WinBoard?</A></LI> \r
+<LI><A HREF="#[A.4]">[A.4] Who is working on this project?</A></LI>\r
+<LI><A HREF="#[A.5]">[A.5] How do I report bugs, offer help, etc.?</A></LI>\r
+<LI><a href="#[A.6]">[A.6] What are the future plans for XBoard and\r
+  WinBoard?</A></LI>\r
+</UL>\r
+\r
+<LI><A NAME="[B0]" HREF="#[B]">[B] XBoard and WinBoard</A></LI>\r
+<UL>\r
+<LI><A HREF="#[B.1]">[B.1] What is XBoard?</A></LI>\r
+<LI><A HREF="#[B.2]">[B.2] Is there an XBoard for Microsoft Windows?  What is\r
+  WinBoard?  How do I install WinBoard?</A></LI>\r
+<LI><A HREF="#[B.3]">[B.3] Is there an XBoard for the Amiga?  What is\r
+  AmyBoard?</A></LI>\r
+<LI><A HREF="#[B.4]">[B.4] Is there an XBoard for the Macintosh?</A></LI>\r
+<LI><A HREF="#[B.5]">[B.5] Does XBoard run on VMS?</A></LI>\r
+<LI><A HREF="#[B.6]">[B.6] What is cmail?</A></LI>\r
+<LI><A HREF="#[B.7]">[B.7] How do I build XBoard?  Do I have to have\r
+  gcc?</A></LI>\r
+<LI><A HREF="#[B.8]">[B.8] Can I use XBoard or WinBoard to play a game\r
+  of chess with another human?</A></LI>\r
+<LI><A HREF="#[B.9]">[B.9] Will WinBoard run on Windows 3.1?  \r
+  How about Windows CE (also known as Pocket PC)?</A></LI>\r
+<LI><A HREF="#[B.10]">[B.10] How do I use XBoard or WinBoard as an external\r
+  viewer for PGN files with my Web browser?</A></LI>\r
+<LI><A HREF="#[B.11]">[B.11] How do I use WinBoard as an external viewer for\r
+  PGN files with the MS Windows File Manager or Explorer?</A></LI>\r
+<LI><A HREF="#[B.12]">[B.12] How do I use ICC timestamp or FICS timeseal\r
+  with XBoard?</A></LI>\r
+<LI><A HREF="#[B.13]">[B.13] How do I use ICC timestamp or FICS timeseal\r
+  with WinBoard?</A></LI>\r
+<LI><A HREF="#[B.14]">[B.14] How do I play bughouse with XBoard or WinBoard?\r
+</A></LI>\r
+<li><a href="#[B.16]">[B.16]\r
+  What is Zippy?  How can I interface a chess program to the Internet \r
+  Chess Servers?</a></li> \r
+<li><a href="#[B.17]">[B.17]\r
+  How can I interface my own chess program to XBoard or WinBoard?</a></li>\r
+<li><a href="#[B.18]">[B.18]\r
+  How can I recompile WinBoard from source?</a></li>\r
+<li><a href="#[B.19]">[B.19]\r
+  How can I use XBoard or WinBoard to talk\r
+  to an Internet Chess Server through a firewall or proxy?</a></li>\r
+<li><a href="#[B.20]">[B.20] \r
+  How can I use XBoard or WinBoard on chess.net with accuclock?</a></li>\r
+<li><a href="#[B.21]">[B.21]\r
+  Can I get Zippy to do one or more ICS commands automatically at the \r
+  start or end of each game?</a></li>\r
+<li><a href="#[B.22]">[B.22]\r
+  How do I print from WinBoard?</a></li>\r
+<li><a href="#[B.23]">[B.23]\r
+  Can I get Zippy to automatically reconnect to ICS when its connection \r
+  breaks?</a></li>\r
+<li><a href="#[B.24]">[B.24]\r
+  The chess engines are too strong and always beat me.  How can I adjust\r
+  the difficulty level to make them weaker?</a></li>\r
+<li><a href="#[B.25]">[B.25]\r
+  May I use the piece bitmaps from XBoard/WinBoard in my own program?</a></li>\r
+\r
+</UL>\r
+\r
+<LI><A NAME="[C0]" HREF="#[C]">[C] XBoard and WinBoard, bugs and \r
+  problems</A></LI>\r
+<UL>\r
+<LI><A HREF="#[C.1]">[C.1] I can't build XBoard because the\r
+  X11/Xaw/... include files are not found.</A></LI>\r
+<LI><A HREF="#[C.2]">[C.2] Configuring or building XBoard fails due to\r
+  missing header files, missing libraries, or undefined symbols.</a></li>\r
+<LI><A HREF="#[C.3]">[C.3] I have problems using WinBoard on ICS with a modem.\r
+  I'm not running SLIP or PPP, but just dialing in to an ordinary login account\r
+("shell account").</A></LI>\r
+<LI><A HREF="#[C.4]">[C.4] \r
+  I have problems using WinBoard on ICS with Windows 95 and SLIP\r
+  or PPP.  When trying to start up, it gets the error "Address family\r
+  not supported by protocol family" (or some equally strange message).\r
+</A></LI> \r
+<LI><A HREF="#[C.5]">[C.5] When I try to run WinBoard, I get the message\r
+  "Failed to start chess program gnuchess on localhost: NO LANGFILE (file\r
+  gnuchess.lan not found)".</A></LI>\r
+<LI><A HREF="#[C.6]">[C.6] I want to use XBoard or WinBoard as an Internet\r
+  Chess Server interface, but the ICS Client option is grayed out on the\r
+  menu.</A></LI> \r
+<LI><A HREF="#[C.7]">[C.7] How do I give command-line options to\r
+  a Windows program like WinBoard?</A></LI>\r
+<LI><A HREF="#[C.9]">[C.9]\r
+  When I exit from WinBoard after using it to play against a chess\r
+  program on my machine, the chess program keeps running in the background.\r
+</A></LI>\r
+<li><a href="#[C.12]">[C.12]\r
+  Why do my ICS \r
+  opponents often get extra time after they make their moves?\r
+  Why do I sometimes lose time off my clock after I make my move?\r
+</a></li>\r
+<li><a href="#[C.13]">[C.13]\r
+  I can't run WinBoard unless I delete the WinBoard.ini file each time!\r
+</a></li>\r
+<li><a href="#[C.15]">[C.15]\r
+  I get errors compiling XBoard's parser.c.\r
+</a></li>\r
+<li><a href="#[C.16]">[C.16]\r
+  I get an error building WinBoard from source because "flex" is not found.\r
+</a></li>\r
+<li><a href="#[C.17]">[C.17]\r
+  XBoard hangs shortly after connecting to an ICS when used with dxterm,\r
+  cmdtool, dtterm, kterm, konsole, or other substitutes for xterm.\r
+</a></li>\r
+<li><a href="#[C.18]">[C.18]\r
+  The WinBoard pieces show up in the wrong colors, appear distorted,\r
+  or are not visible at all.\r
+</a></li>\r
+<LI><A HREF="#[C.19]">[C.19] XBoard or WinBoard tells me\r
+"Error: first chess program (...) exited unexpectedly".</A></LI> \r
+<li><a href="#[C.20]">[C.20]\r
+  XBoard tells me "Warning: Cannot allocate colormap entry", or\r
+  "too few colors available; trying monochrome mode", or\r
+  "XPM pieces cannot be used in monochrome mode".\r
+</a></li>\r
+<li><a href="#[C.21]">[C.21]\r
+  When I log in to freechess.org, the Enter key doesn't work, and I \r
+  have to use Ctrl+J instead.  But when I use WinBoard, Ctrl+J doesn't\r
+  work either, so I'm stuck.\r
+</a></li>\r
+<li><a href="#[C.22]">[C.22]\r
+  XBoard says, "Failed to start first chess program gnuchessx\r
+  on localhost: gnuchessx: No such file or directory."  \r
+</a></li>\r
+</UL>\r
+\r
+<LI><A NAME="[D0]" HREF="#[D]">[D] Crafty and other topics</A></LI>\r
+<UL>\r
+<LI><A HREF="#[D.1]">[D.1] What is XChess?</A></LI>\r
+<LI><A HREF="#[D.2]">[D.2] What is Winsock Chess?</A></LI>\r
+<LI><A HREF="#[D.3]">[D.3] What is Crafty?</A></LI>\r
+<LI><A HREF="#[D.4]">[D.4] How do I use Crafty with XBoard?</A></LI>\r
+<LI><A HREF="#[D.5]">[D.5] How do I use Crafty with WinBoard?</A></LI>\r
+<LI><A HREF="#[D.6]">[D.6] How do I use GNU Chess 5 with XBoard?</A></LI>\r
+</UL>\r
+</UL>\r
+\r
+<HR>\r
+<H2><A NAME="[A]">[A] Introduction and hot topics</A></H2>\r
+<HR>\r
+<H3><A NAME="[A.1]">[A.1] What are XBoard and WinBoard?</A></H3>\r
+\r
+XBoard and WinBoard are graphical user interfaces for chess.  \r
+XBoard runs with the X Window System on Unix systems (including\r
+GNU/Linux); see topic\r
+<A HREF="#[B.1]">[B.1]</A>.\r
+WinBoard runs on true 32-bit Microsoft Windows operating\r
+systems, such as Windows 95, 98, NT,\r
+2000, ME, XP, and should continue to work\r
+on future 32-bit Windows systems.  It does\r
+not work on Windows CE (also known as Pocket PC), nor does it work on\r
+16-bit Windows systems such as Windows 3.1.  See topic\r
+<A HREF="#[B.2]">[B.2]</A>.\r
+\r
+<HR>\r
+<H3><A NAME="[A.2]">[A.2] Where can I get chess information and chess \r
+software?</A></H3>\r
+\r
+As a shortcut to most things mentioned in this FAQ, try Tim Mann's\r
+Chess Web page, <A HREF= "http://www.tim-mann.org/chess.html"\r
+>http://www.tim-mann.org/chess.html</A>.  This page page is a good\r
+place to get the latest released versions of XBoard and WinBoard and\r
+the most up-to-date version of this FAQ.  Also see our Savannah\r
+project pages at <a href="https://savannah.gnu.org/projects/xboard/"\r
+>https://savannah.gnu.org/projects/xboard/</a>.\r
+\r
+<p>If you have other questions about XBoard/WinBoard that aren't answered\r
+in this FAQ, you can try Aaron Tay's WinBoard and Chess Engines FAQ, at\r
+<a href="http://www.aarontay.per.sg/Winboard/"\r
+>http://www.aarontay.per.sg/Winboard/</a>.\r
+\r
+<P>For general news and information about chess, try the newsgroup hierarchy\r
+rec.games.chess.*, especially the groups rec.games.chess.misc and\r
+rec.games.chess.computer.  Both of the latter groups have very informative\r
+FAQs maintained by Steve Pribut; look for them on the newsgroups or at\r
+<A HREF=\r
+"http://www.clark.net/pub/pribut/chess.html"\r
+>http://www.clark.net/pub/pribut/chess.html</A>.\r
+\r
+<P>Like other GNU software, you can get XBoard, and\r
+WinBoard by anonymous FTP from \r
+<A HREF=\r
+"ftp://ftp.gnu.org/pub/gnu/"\r
+>ftp://ftp.gnu.org/pub/gnu/</A>\r
+and its many mirror sites.  Look in the subdirectories xboard, and winboard.\r
+The .tar.gz suffix on the files there indicates they were packed with tar\r
+and compressed with gzip.  The .exe or .zip suffixes indicate files that\r
+were packed and compressed with zip.\r
+\r
+<P>For other chess software, try the Internet Chess Library.  Use anonymous FTP\r
+to connect to ftp.freechess.org, or go to the Web page\r
+<A HREF=\r
+"http://www.freechess.org/"\r
+>http://www.freechess.org/</A>.\r
+You can get chess software, game\r
+collections, the FAQ file for rec.games.chess, and other chess-related\r
+material there, in the directory pub/chess.  The FTP server can\r
+automatically decompress files for you as you download them, useful if you\r
+don't have gzip.\r
+\r
+<P>Here is a sample anonymous ftp session.  Some of the ftp server's responses\r
+are abbreviated, but all the commands you must type are included.\r
+\r
+<p><PRE>\r
+    % ftp ftp.gnu.org\r
+    Connected to ftp.gnu.org\r
+    Name: anonymous\r
+    Password: your-email-address@your-site\r
+    ftp&gt; binary\r
+    200 Type set to I.\r
+    ftp&gt; cd /pub/gnu/xboard\r
+    ftp&gt; dir\r
+    -rw-r--r-- 1 14910 wheel  1057625 May 20 00:25 xboard-4.2.7.tar.gz\r
+    ftp&gt; get xboard-4.2.7.tar.gz\r
+    150 BINARY connection for xboard-4.2.7.tar.gz (1057625 bytes).\r
+    226 Transfer complete.\r
+    ftp&gt; quit\r
+</PRE>\r
+\r
+<HR>\r
+<H3><A NAME="[A.3]">[A.3] What are the current version numbers for \r
+XBoard and WinBoard?</A></H3>\r
+\r
+At this writing, the current version numbers are:\r
+\r
+<UL>\r
+<LI>XBoard 4.2.7</LI>\r
+<LI>WinBoard 4.2.7</LI>\r
+</UL>\r
+\r
+<HR>\r
+<H3><A NAME="[A.4]">[A.4] Who is working on this project?</A></H3>\r
+\r
+Please see our Savannah project pages at <a\r
+href="https://savannah.gnu.org/projects/xboard/"\r
+>https://savannah.gnu.org/projects/xboard/</a> for a list of active\r
+developers.  Many others occasionally contribute suggestions and\r
+snippets of code, for which we are grateful.\r
+\r
+<HR>\r
+<H3><A NAME="[A.5]">[A.5] How do I report bugs, offer help, etc.?</A></H3>\r
+\r
+<P>Bug reports, suggestions, and offers to help on XBoard\r
+or WinBoard should be sent to\r
+bug-xboard<a name="nospam">&#x40;</a>gnu.org.\r
+\r
+<p>Beginner questions and discussion about the program may get faster\r
+answers on the WinBoard Forum at <a\r
+href="http://f11.parsimony.net/forum16635/"\r
+>http://f11.parsimony.net/forum16635/</a>.  \r
+\r
+<p>If you are developing a\r
+chess engine that works with XBoard or WinBoard (or an alternative\r
+GUI that works with such engines), see the Chess Engines mailing\r
+list, hosted at\r
+<a href="http://groups.yahoo.com/group/chess-engines"\r
+>http://groups.yahoo.com/group/chess-engines</a>.\r
+\r
+<P>Any time you want to report a possible bug in XBoard or WinBoard,\r
+we need to know exactly what you did, and exactly what error (or\r
+other) messages you got.\r
+\r
+<P>If you are using Unix, run the "script" program, run XBoard with\r
+the -debug flag (if you get as far as running it), do whatever is\r
+necessary to reproduce the problem, type "exit" to the shell, and mail\r
+us the resulting typescript file.  We also need to know what\r
+hardware/operating system combination you are using.  The command\r
+"uname -a" will usually tell you this; include its output in your\r
+typescript.\r
+\r
+<P>If you are using MS Windows, run WinBoard with the -debug flag, and\r
+send us a copy of the WinBoard.debug file.  If you aren't sure how to\r
+add command-line flags to WinBoard, you can hit Ctrl+Alt+F12 to create\r
+a WinBoard.debug file after WinBoard starts, but that is not as good,\r
+because a few messages that would have been printed at the start are\r
+lost.\r
+\r
+<p>Either way, please send us the exact text of the commands you typed\r
+and the output you got, not just your recollection of approximately\r
+what they were.  The messages may seem meaningless to you, but they\r
+are very meaningful to us and essential for diagnosing problems.\r
+\r
+<hr>\r
+<h3><a name="[A.6]">[A.6] What are the future plans for XBoard and\r
+  WinBoard?</a></h3>\r
+\r
+<p>Our plans are always in flux.  As with most free software projects,\r
+the next release will happen when it happens -- or it may never\r
+happen.  This has always been the policy for XBoard/WinBoard.\r
+Releases have never been promised in specific time frames.\r
+\r
+<p>Starting in November 2003, several new developers have joined the\r
+project, and work is now hosted at <a\r
+href="https://savannah.gnu.org/projects/xboard/"\r
+>https://savannah.gnu.org/projects/xboard/</a>.  Lots of work is just\r
+getting underway, but nothing is far along yet.\r
+\r
+<p>Here is a partial list of items that have a nonzero probability of\r
+happening in finite time.\r
+\r
+<ul>\r
+<li>Small bug fixes.  Occasionally someone sends us a fix, or reports\r
+a small bug very clearly so that we're able to fix it in a few minutes\r
+work.<p>\r
+\r
+<li>Protocol version 3.  The members of the chess engine authors'\r
+mailing list discussed a set of proposed features for the next version\r
+of the XBoard/WinBoard chess engine communication protocol.\r
+Unfortunately, this project has gotten only as far as that discussion\r
+took it; no revisions of the protocol spec or coding have been done\r
+yet.  A few simple features are very clearly needed, though, and will\r
+probably appear in time.<p>\r
+\r
+<li>Contributed features.  Several people have mailed me code to add\r
+various features.  Most of this code is available on the\r
+XBoard/WinBoard extensions page at <a\r
+href="http://www.tim-mann.org/extensions.html"\r
+>http://www.tim-mann.org/extensions.html</a>, but it is not in any\r
+official releases yet.  We are in the process of getting folks to\r
+formally assign the copyrights on their contributions to the Free\r
+Software Foundation so that we can include it in official releases in\r
+the future.<p>\r
+\r
+<li>Internationalization.  Several people have expressed interest in\r
+internationalizing XBoard/WinBoard, and so hopefully this project will\r
+go forward.  Once the internationalization support is in, we will need\r
+more translators.  Watch for news on the xboard-devel mailing list on\r
+our Savannah pages.\r
+\r
+</ul>\r
+\r
+<HR>\r
+<H2><A NAME="[B]">[B] XBoard and WinBoard</A></H2>\r
+<HR>\r
+<H3><A NAME="[B.1]">[B.1] What is XBoard?</A></H3>\r
+\r
+XBoard is a graphical user interface for chess.  It displays a\r
+chessboard on the screen, accepts moves made with the mouse, and loads\r
+and saves games in Portable Game Notation (PGN).  XBoard is free software.\r
+It serves as a front-end for many different chess services, including:\r
+\r
+<p><strong>Chess engines</strong> that will run on your machine and\r
+play a game against you or help you analyze, such as GNU Chess and\r
+Crafty (topic <A HREF="#[D.3]">[D.3]</A> below).\r
+\r
+<p><strong>Chess servers</strong> on the Internet, where you can\r
+connect to play chess with people from all over the world, watch other\r
+users play, or just hang out and chat.\r
+\r
+<p><strong>Correspondence chess</strong> played by electronic\r
+mail. The cmail program (topic <A HREF="#[B.6]">[B.6]</A> below)\r
+automates the tasks of parsing email from your opponent, playing his\r
+moves out on your board, and mailing your reply move after you've\r
+chosen it.\r
+\r
+<p><strong>The Web</strong> and your own saved games. You can use\r
+XBoard as a helper application to view PGN games in your\r
+Web browser, or to load and save your own PGN files.\r
+\r
+<P>XBoard runs under Unix or Unix-compatible systems.  It requires the\r
+X Window System, version X11R4 or later.  There are also ports of\r
+XBoard to 32-bit Microsoft Windows and to\r
+the Amiga.  See topics <A HREF="#[B.2]">[B.2]</A> and <A\r
+HREF="#[B.3]">[B.3]</A> respectively.\r
+\r
+<HR>\r
+<H3><A NAME="[B.2]">[B.2] Is there an XBoard for Microsoft Windows?  What is WinBoard?  How do I install WinBoard?</A></H3>\r
+\r
+WinBoard is a port of XBoard to 32-bit Microsoft Windows systems, such\r
+as Windows 95, 98, NT, 2000, ME, and XP.  It uses the same back end\r
+chess code as XBoard, but the front end graphics code is a complete\r
+rewrite.  WinBoard is free software.\r
+\r
+<P>The WinBoard distribution includes a port of GNU Chess to Win32.\r
+The GNU Chess port is distributed in executable form, with instructions for\r
+rebuilding it from the standard GNU Chess sources (available separately).  You\r
+should have at least 16 to 24 MB of memory to run GNU Chess with WinBoard.\r
+\r
+<P>The WinBoard distribution also includes the ICC timestamp and FICS\r
+timeseal programs (topic <A HREF="#[B.12]">[B.12]</A>).\r
+\r
+<P>cmail (topic <A HREF="#[B.6]">[B.6]</A>) has not been ported to\r
+Windows.  All the other XBoard functions are included in WinBoard.\r
+The International Email Chess Group web site at <a\r
+href="http://www.iecg.org/" >http://www.iecg.org/</a> recommends\r
+ECTool (<a href="http://www.ectool.nu/" >http://www.ectool.nu/</a>)\r
+for playing correspondence chess under Windows.\r
+\r
+<p>You install WinBoard as follows. Download the WinBoard package to\r
+your PC (see topic <A HREF="#[A.2]">[A.2]</A>).  It will be a file\r
+with a name like winboard-4_0_0.exe.  Double-click on this file\r
+in the Explorer or File Manager to run it. Follow the on-screen\r
+prompts.\r
+\r
+<HR>\r
+<H3><A NAME="[B.3]">[B.3] Is there an XBoard for the Amiga?  What is AmyBoard?</A></H3>\r
+\r
+AmyBoard is a port of XBoard to the Amiga, by Jochen Wiedmann.\r
+The distribution includes a port of GNU Chess.\r
+AmyBoard is free software.\r
+\r
+<p>The current version of AmyBoard is 330.5 (based on XBoard 3.3.0).\r
+No one is currently maintaining it.\r
+\r
+<P>System requirements:\r
+\r
+<UL>\r
+<LI>An Amiga (obviously :-), running OS 2.04 or later, 2Mb RAM or more.</LI>\r
+<LI>MUI 2.0 or later.</LI>\r
+<LI>Workbench or another screen with no less than 640x400 pixels (adjustable\r
+  with the MUI-Prefs); this restriction is just because we don't have\r
+  bitmaps with less than 40x40 pixels per square. If someone contributes\r
+  bitmaps with 20x20 or 20x25, they will work with any Hires mode.</LI>\r
+</UL>\r
+<P>\r
+If you would like to use an ICS, you need an Internet connection via either\r
+\r
+<UL>\r
+<LI>a telnet-like program, or</LI>\r
+<LI>a terminal program reading from stdin and writing to stdout.</LI>\r
+</UL>\r
+<P>\r
+AmyBoard is available in the Internet Chess Library (topic <A HREF="#[A.2]">[A.2]</A>).\r
+\r
+<HR>\r
+<H3><A NAME="[B.4]">[B.4] Is there an XBoard for the Macintosh?</A></H3>\r
+\r
+Note: I am not a Mac user and have not tried this myself, so I cannot \r
+answer questions about it. \r
\r
+<p>Because MacOS X has a Unix base, XBoard will compile and run on it. \r
+You do need an X11 (X Window System) server and client libraries. I'm \r
+told that these come standard with MacOS X 10.3 and later. Once you \r
+install the X11 package, XBoard is reported to compile and run without \r
+changes. \r
\r
+<p>You can avoid having to compile XBoard (and GNU Chess) yourself by \r
+using the Fink sofware packaging system. See \r
+http://fink.sourceforge.net/ and \r
+http://finkcommander.sourceforge.net/ for more info on Fink. \r
\r
+<p>There is no version of XBoard or WinBoard that runs with the native\r
+(non-X11) Mac graphical interface, and none that runs on MacOS 9 or\r
+earlier.</p>\r
+\r
+\r
+<HR>\r
+<H3><A NAME="[B.5]">[B.5] Does XBoard run on VMS?</A></H3>\r
+\r
+No.  This port would probably be a lot easier than the Win32 and Amiga\r
+ports were, because VMS has the X Window system (under the name\r
+DECwindows) and is now POSIX compliant. If you are working on this, \r
+send mail to bug-xboard<a name="nospam">&#x40;</a>gnu.org to let us know.\r
+\r
+\r
+<HR>\r
+<H3><A NAME="[B.6]">[B.6] What is cmail?</A></H3>\r
+\r
+cmail is a program that helps you play and keep track of electronic mail\r
+correspondence chess games using XBoard.  It is distributed with XBoard and\r
+has its own manual page.  cmail is free software.  It was written by\r
+Even Welsh.  cmail has not been ported to Windows; sorry.\r
+\r
+<HR>\r
+<H3><A NAME="[B.7]">[B.7] How do I build XBoard?  Do I need gcc?</A></H3>\r
+\r
+The first step to building XBoard is to get the distribution file.  See topic\r
+<A HREF="#[A.2]">[A.2]</A> for places you can ftp the software from.\r
+\r
+<P>Next, decide what directory tree you are going to install XBoard\r
+in.  The default is /usr/local, but you probably don't have write\r
+access to that directory unless you are a system administrator.  If\r
+you do, type the following to install it there:\r
+\r
+<p><PRE>\r
+    gzip -cd xboard-*.tar.gz | tar -xvf -\r
+    cd xboard-*/\r
+    ./configure\r
+    make\r
+    su\r
+    make install\r
+</PRE>\r
+\r
+If you want to install xboard in your personal home directory ($HOME/bin),\r
+type this:\r
+\r
+<p><PRE>\r
+    gzip -cd xboard-*.tar.gz | tar -xvf -\r
+    cd xboard-*/\r
+    ./configure --prefix=$HOME\r
+    make\r
+    make install\r
+</PRE>\r
+\r
+<P>If the first step above fails because you don't have gzip, see\r
+topic <A HREF="#[A.2]">[A.2]</A>, and ask a local Unix expert if you\r
+need more help.  If you have any problems with the last two steps,\r
+read the READ_ME and INSTALL files in the xboard-*/ directory.  You\r
+will also find this FAQ there.\r
+\r
+<P>You don't need to have gcc to build XBoard.  Almost any Unix C\r
+compiler should do.\r
+\r
+<HR>\r
+<H3><A NAME="[B.8]">[B.8] Can I use XBoard or WinBoard to play a game\r
+  of chess with another human?</A></H3>\r
+\r
+The only way for two humans on different machines to play chess in\r
+real time using XBoard/WinBoard is to use an Internet Chess Server\r
+as an intermediary.  That is, each player runs his own copy of XBoard\r
+or WinBoard, both of them log into an ICS, and they play a game there.\r
+Two copies of XBoard/WinBoard cannot communicate with each other\r
+directly.\r
+\r
+<P>Instructions on how to get started with Internet chess are included\r
+with the XBoard and WinBoard distributions.  The network addresses\r
+included in the distribution may not always be current.  The oldest\r
+and largest ICS is the Internet Chess Club at chessclub.com, which now\r
+has a fee for registered use, but still allows free unregistered use.\r
+There are also many newer sites with no fees, using the Free Internet\r
+Chess Server implementation (FICS).  The most active FICS site is\r
+freechess.org.  On these and most other chess servers,\r
+the port number to use is 5000.\r
+\r
+<P>If you don't have network connectivity to any ICS site, you\r
+can run your own server using a version of the FICS code, but this\r
+is not easy.  See <a href="http://www.tim-mann.org/ics.html#ownics"\r
+>http://www.tim-mann.org/ics.html#ownics</a> for advice and pointers.\r
+\r
+<P>The cmail program included with XBoard lets you play email postal games with\r
+another human; see topic <A HREF="#[B.6]">[B.6]</A>.\r
+\r
+<P>Two humans can play chess on the same machine using one copy of\r
+XBoard/WinBoard in\r
+Edit Game mode, but the clocks don't run in this mode, so it's of limited\r
+usefulness.\r
+\r
+<P>See also topic <A HREF="#[D.2]">[D.2]</A>, Winsock Chess.\r
+\r
+<HR>\r
+<H3><A NAME="[B.9]">[B.9] Will WinBoard run on Windows 3.1?\r
+  How about Windows CE (also known as Pocket PC)?\r
+</A></H3>\r
+\r
+WinBoard does not run on Windows 3.1, Windows for Workgroups 3.11, etc.,\r
+not even with the Win32s compatibility package.  The main problem is\r
+that Win32s does not have threads or real concurrent processes.  A\r
+port of WinBoard to Windows 3.1 is possible in theory, but it would be\r
+difficult and messy, and no one is going to do it.\r
+\r
+<p>WinBoard does not run on Windows CE (also\r
+known as Pocket PC).  I don't know what would be required to port it.\r
+\r
+<P>WinBoard does run well on full 32-bit versions of Windows, such as\r
+Windows 95, 98, NT, 2000, ME, and XP, and should continue to work\r
+on future 32-bit Windows systems.\r
+\r
+<HR>\r
+<H3><A NAME="[B.10]">[B.10] How do I use XBoard or WinBoard as an external viewer for PGN files\r
+  with my Web browser?</A></H3>\r
+\r
+1) On Unix systems:\r
+<P>\r
+- Add the following line to the file .mime.types in your home directory.\r
+(Create the file if it doesn't exist already.)\r
+<PRE>\r
+    application/x-chess-pgn    pgn\r
+</PRE>\r
+<P>\r
+- Add the following line to the file .mailcap in your home directory.\r
+(Create the file if it doesn't exist already.)\r
+<PRE>\r
+    application/x-chess-pgn; xboard -ncp -lgf %s\r
+</PRE>\r
+<P>\r
+- Exit from your Web browser and restart it.\r
+\r
+<P>2) On MS Windows systems:\r
+\r
+<P>The exact procedure depends on which Web browser you are using.\r
+The current version of WinBoard automatically configures itself as\r
+your PGN viewer for local files, Netscape 4.x and later, and Internet\r
+Explorer.  This automatic setup probably works for all other current Web\r
+browsers, too.\r
+\r
+<HR>\r
+<H3><A NAME="[B.11]">[B.11] How do I use WinBoard as an external viewer\r
+  for PGN files with the MS Windows File Manager or Explorer?</A></H3>\r
+\r
+WinBoard sets this up automatically when you install it, except on old\r
+versions of Windows NT (prior to 4.0).  On Windows NT 3.51 or earlier,\r
+go to the File Manager, click on the File menu, select Associate,\r
+enter "pgn" as the extension, and use the Browse button to find your\r
+copy of WinBoard and set up the association.\r
+\r
+<HR>\r
+<H3><A NAME="[B.12]">[B.12] How do I use ICC timestamp or FICS timeseal\r
+with XBoard?</A></H3>\r
+\r
+First, get the appropriate version of timestamp or timeseal for your\r
+machine from ftp.chessclub.com or ftp.freechess.org.\r
+Second, be sure that you can connect using XBoard <I>without</I>\r
+timestamp/timeseal.  Third, be sure that you can connect using\r
+timestamp/timeseal without XBoard.  See the help files on ICC and FICS\r
+or ask people online if you have problems.\r
+\r
+<P>If you are in a completely ordinary situation, where your machine\r
+is directly on the Internet and you can connect to ICC or FICS \r
+without timestamp/timeseal using\r
+just the command "xboard -ics" or "xboard -ics -icshost freechess.org",\r
+change that command to one of the following:\r
+\r
+<p><PRE>\r
+    xboard -ics -icshost 204.178.125.65 -icshelper timestamp\r
+\r
+    xboard -ics -icshost 164.58.253.13 -icshelper timeseal\r
+</PRE>\r
+\r
+<p>If you have a firewall between your machine and the ICS, see topic\r
+<A HREF="#[B.19]">[B.19]</A>.\r
+\r
+<P>If you normally have to use the "/icscomm" command line option on\r
+xboard to log into a second machine, and then telnet to ICC or FICS\r
+from there, you are going to have to run the Unix version of timestamp\r
+or timeseal on the second machine.  (If the second machine is not\r
+running Unix, you are out of luck.)  Get the appropriate version of\r
+timestamp or timeseal onto the shell machine via FTP; see the help\r
+files on ICC and FICS for instructions.  Then simply run it when you\r
+would normally run telnet.  In this configuration you are not\r
+protected against lag between your PC and the shell machine, or for\r
+lag caused by heavy load on the shell machine itself from other users.\r
+\r
+<P>For further information on timestamp and timeseal, see the help\r
+files on ICC and FICS.\r
+\r
+<HR>\r
+<H3><A NAME="[B.13]">[B.13] How do I use ICC timestamp or FICS timeseal\r
+with WinBoard?</A></H3>\r
+\r
+<P>If you select an ICS from either the WinBoard Startup dialog or the\r
+Windows Start submenu that WinBoard installs, WinBoard automatically\r
+runs timestamp or timeseal if the ICS you chose is known to support it.\r
+\r
+<P>If you are constructing a WinBoard command line by hand, add the\r
+option "/icshelper timestamp" or "/icshelper timeseal" to the WinBoard\r
+command line to use timestamp or timeseal.  Both timestamp.exe and\r
+timeseal.exe are included in the WinBoard distribution.  They both\r
+function identically to the Unix versions, as documented in "help\r
+timestamp" on ICC and "help timeseal" on FICS.\r
+\r
+<p>If you have a firewall between your machine and the ICS, see topic\r
+<A HREF="#[B.19]">[B.19]</A>.\r
+\r
+<P>If you normally have to use the "/icscomm" command line option on\r
+WinBoard to log into a shell account, and then telnet to ICC or FICS\r
+from there, you are going to have to run the Unix version of timestamp\r
+or timeseal on the shell machine.  (If the shell account is not on a\r
+Unix machine, you are out of luck.)  Get the appropriate version of\r
+timestamp or timeseal onto the shell machine via FTP; see the help\r
+files on ICC and FICS for instructions.  Then simply run it when you\r
+would normally run telnet.  In this configuration you are not protected\r
+against lag between your PC and the shell machine, or for lag caused by\r
+heavy load on the shell machine itself from other users.\r
+\r
+<P>For further information on timestamp and timeseal, see the help\r
+files on ICC and FICS.\r
+\r
+<HR>\r
+<H3><A NAME="[B.14]">[B.14] How do I play bughouse with XBoard or WinBoard?\r
+</A></H3>\r
+\r
+XBoard and WinBoard have simple but effective bughouse support.\r
+Offboard piece holdings are shown in the board window's banner, and\r
+you drop offboard pieces using the right mouse button.  Press it over\r
+the destination square to pop up a menu of pieces.\r
+\r
+<P>XBoard and WinBoard can display only one board at a time, but you\r
+can observe your partner's game by running a second copy of the\r
+program and logging in as a guest.  (Unfortunately, this is not\r
+possible if you are using the /icscomm option.)  To observe your\r
+partner's games automatically, use the "follow" or "pfollow" ICS\r
+command; see the ICS online help for details.\r
+\r
+<HR>\r
+<h3><a name="[B.16]">[B.16] What is Zippy?  How can I interface a \r
+chess program to the Internet Chess Servers?</a></h3>\r
+\r
+Zippy is an interface that lets a compatible chess engine (such as GNU\r
+Chess or Crafty) act as a computer\r
+player on an Internet Chess Server.  Zippy is included in both the\r
+XBoard and WinBoard distributions.  It is implemented as a small\r
+amount of additional code within XBoard or WinBoard.  \r
+For documentation, see the file\r
+zippy.README, included in both distributions or available\r
+from my chess Web page,\r
+<A HREF=\r
+"http://www.tim-mann.org/chess.html"\r
+>http://www.tim-mann/chess.html</A>.\r
+The version of zippy.README on my Web page is often more up-to-date\r
+than those in the XBoard/WinBoard distributions.\r
+You'll also find a "biography" of Zippy and pointers to the original\r
+Zippy the Pinhead comic strips on my Web page.\r
+Please read zippy.README carefully before you ask me any questions about Zippy.\r
+\r
+<p>Using a computer to choose your moves on a chess server is\r
+considered cheating unless your account is on the computer (C) list.\r
+Read "help computer" on your favorite server for details on their\r
+policy.  Most of the servers have plenty of computers running now, so they\r
+will not be excited about having you run a new one unless you have\r
+written your own chess engine.  They don't really need yet another \r
+Crafty or GNU Chess clone.\r
+\r
+<HR>\r
+<h3><a name="[B.17]">[B.17] How can I interface my own chess program\r
+to XBoard or WinBoard?</a></h3>\r
+\r
+This is a non-trivial task.  XBoard and WinBoard were not designed\r
+with a clean interface for talking to chess programs; they were\r
+written to work with an existing version of GNU Chess that expects to\r
+be talking to a person.  Your program has to emulate GNU Chess's\r
+rather idiosyncratic command structure to work with XBoard and\r
+WinBoard.  We are gradually cleaning up, improving, and documenting\r
+the interface as newer versions of XBoard and WinBoard come out,\r
+however.\r
+\r
+<p>For documentation, see the file engine-intf.html, included in both\r
+distributions or available from my chess Web page, <A HREF=\r
+"http://www.tim-mann.org/chess.html"\r
+>http://www.tim-mann.org/chess.html</A>.\r
+The version of engine-intf.html on my Web page is often more up-to-date\r
+than those in the XBoard/WinBoard distributions.\r
+\r
+<HR>\r
+<h3><a name="[B.18]">[B.18] How can I recompile WinBoard from source?</a></h3>\r
+\r
+The source code for WinBoard is available from the author's Web page,\r
+<A HREF=\r
+"http://www.tim-mann.org/chess.html"\r
+>http://www.tim-mann.org/chess.html</A>.\r
+\r
+<p>WinBoard is currently developed using Microsoft Visual C++ 5.0.\r
+You can build the program from the MSVC++ GUI by opening the project\r
+file (winboard.dsp) and telling MSVC++ to build the project.  You can\r
+also build it from the the command line by using the nmake program\r
+supplied with MSVC++.\r
+\r
+<p>To build WinBoard with the free Cygwin tools, available from <a\r
+href= "http://www.cygwin.com/" >http://www.cygwin.com/</a>), use the\r
+command "make -f cygwin.mak".  WinBoard 4.2.5 was successfully\r
+compiled with the net release of Cygwin as downloaded on 20-March-2001\r
+(cygwin1.dll 1.1.8, gcc 2.95.2-6, binutils 20001221-1, flex 2.5.4-1),\r
+but exhibits a command-line parsing bug; see item 511 in the ToDo file\r
+that comes with WinBoard.  WinBoard 4.1.0 does not compile with\r
+Cygwin.  WinBoard 4.0.7 is known to compile with Cygwin BL20.1.\r
+\r
+<p>To build WinBoard with Borland C++ 4.5, use "borland.mak", supplied\r
+with the WinBoard sources, as the Makefile.  Support for Borland C++\r
+was contributed by Don Fong and has not been tested by the author of WinBoard.\r
+\r
+<p>WinBoard is a Win32 application, so you definitely need a compiler\r
+and tool set that supports Win32.  In particular, older versions of\r
+DJGPP can build only 32-bit MSDOS programs; that is, programs that use\r
+a DOS extender to get a 32-bit address space and do not make any\r
+Windows calls.  The latest versions of DJGPP are said to be able to \r
+build Win32 programs when used with the proper extension package(s),\r
+but this is not known to work with WinBoard.  Use Cygwin instead.\r
+\r
+<p>See also topic <A HREF="#[C.16]">[C.16]</A>.\r
+\r
+<HR>\r
+<H3><A NAME="[B.19]">[B.19] \r
+How can I use XBoard or WinBoard to talk\r
+to an Internet Chess Server through a firewall or proxy?\r
+</A></H3>\r
+\r
+<p>There is no single answer to this question, because there are many\r
+different kinds of firewalls in use.  They work in various different\r
+ways and have various different security policies.  This answer can\r
+only provide hints.\r
+\r
+<p>Note that you can't access Internet Chess Servers through a Web proxy,\r
+because they are not a Web service.  You talk to them through a raw\r
+TCP connection, not an HTTP connection.  If you can only access the\r
+Web through a proxy, there may be a firewall that stops you from\r
+making direct TCP connections, but there may also be a way through it.\r
+Read on for hints, and contact your local system administrator if you\r
+need more information about your local configuration.\r
+\r
+<p>A helpful user mailed me the following explanation of how to use\r
+WinBoard with WinGate:\r
+<blockquote>\r
+"I have managed to setup WinBoard though my WinGate proxy.  I have the\r
+Office version.  What I needed to do was to setup the TCP/IP\r
+connection to add the User/Host name and my provider service name for\r
+the DNS, but I had to leave the HOST IP address blank.  I have not\r
+played with all the variations, so it may be just that I have the DNS\r
+lookup enabled."\r
+</blockquote>\r
+I hope this helps, though I don't find it very clear.  I don't have\r
+a copy of WinGate myself and can't help if you have questions about it.\r
+\r
+<p>If you are using some other non-SOCKS firewall, read the FIREWALLS section\r
+in your XBoard or WinBoard documentation (man page, info document, or\r
+Help file).  If you can telnet to a chess server in some way, then you\r
+can almost certainly connect to it with xboard/WinBoard, though in\r
+some cases you may not be able to run timestamp or timeseal.  The\r
+timestamp and timeseal protocols require a clean, 8-bit wide TCP\r
+connection from your machine to the ICS, which some firewalls do not\r
+provide.\r
+\r
+<p>If you have a SOCKS firewall and are using <strong>XBoard</strong>,\r
+you should be able to SOCKSify xboard and use it.  See <a\r
+href="http://www.socks.nec.com/">http://www.socks.nec.com/</a> for\r
+information about SOCKS and socksification.  However, if you do this,\r
+you can't use timestamp or timeseal; what you really need is a\r
+socksified version of timestamp or timeseal.  This is hard because the\r
+source code for timestamp and timeseal is proprietary; the folks\r
+running the chess servers don't give it out because that would make it\r
+too easy to cheat.  On some versions of Unix, you may be able to\r
+socksify a program that you don't have the source code to by running\r
+it with an appropriate dynamic library; see <a\r
+href="http://www.socks.nec.com/">http://www.socks.nec.com/</a>.  For\r
+others, you might be able to get a pre-built socksified version from\r
+the chess server administrators.  For timeseal versions, see <a\r
+href="ftp://ftp.freechess.org/pub/chess/timeseal/"\r
+>ftp://ftp.freechess.org/pub/chess/timeseal/</a>.  For timestamp\r
+versions, the directory would be <a\r
+href="ftp://ftp.chessclub.com/pub/icc/timestamp/"\r
+>ftp://ftp.chessclub.com/pub/icc/timestamp/</a>, but at this writing\r
+there don't seem to be any socksified timestamps there.  Once you have\r
+a socksified timestamp or timeseal, simply run it with a normal,\r
+non-socksified xboard in place of the standard timestamp or timeseal.\r
+\r
+<p>If you have a SOCKS firewall and you are using\r
+<strong>WinBoard</strong>, we now know how to make this configuration\r
+work, complete with timestamp or timeseal!\r
+\r
+<p>Start by getting SocksCap32.  This software is freely available\r
+from <a href="http://www.socks.nec.com/">http://www.socks.nec.com/</a>.\r
+Install it on your machine, read the documentation, and learn to use\r
+it.  You may find it useful with many other programs besides WinBoard.\r
+\r
+<p>Next, <strong>don't</strong> socksify WinBoard.  Socksifying\r
+WinBoard itself doesn't let you use it with timestamp or timeseal.\r
+For some reason I don't understand -- something strange that\r
+SocksCap32 does -- the socksified WinBoard runs but does nothing, and\r
+timestamp/timeseal runs all by itself in its own window.\r
+\r
+<p>Instead, use the following workaround.  Follow the instructions\r
+exactly; don't try to skip steps or simplify things.\r
+\r
+<p>First, make SocksCap32 application profiles for timestamp and\r
+timeseal.  Use the following command lines in the SocksCap32\r
+profiles. Name the first profile "timestamp" and the second\r
+"timeseal".\r
+\r
+<p><pre>\r
+    "c:\program files\winboard\timestamp.exe" chessclub.com 5000 -p 5000\r
+    "c:\program files\winboard\timeseal.exe" freechess.org 5000 -p 5000\r
+</pre>\r
+\r
+<p>Second, run timestamp or timeseal by itself, socksified, using its\r
+profile.  This will open an unneeded, black window that will not\r
+respond to typing.  Minimize it to the task bar and ignore it. It will\r
+go away when you exit from WinBoard.\r
+  \r
+<p>Next, run WinBoard using the following command line.  Make a shortcut\r
+or type this command into an MS-DOS Prompt box.  Don't run WinBoard\r
+itself socksified, just run it directly.\r
+\r
+<p><pre>\r
+    "c:\program files\winboard.exe" /ics /icshost=localhost /icsport=5000\r
+</pre>\r
+\r
+<p>After you get this working, you can try getting the timestamp window to\r
+auto-minimize by starting it from a shortcut instead of from the\r
+SocksCap32 control window. As it says in the SocksCap32 help file, put\r
+the following in the Target field of a shortcut's Properties page:\r
+\r
+<p><pre>\r
+    "c:\program files\sockscap32\sc32.exe" timestamp\r
+</pre>\r
+\r
+Then select "Run: Minimized" on the same page.  Do the same for timeseal.\r
+\r
+<p>Another method that can work is to use a .bat file to start both\r
+timestamp and WinBoard.  It would look something like this:\r
+\r
+<p><pre>\r
+    REM --\r
+    REM -- icc.bat\r
+    REM -- Start timestamp under SocksCap32 and use WinBoard to connect to it.\r
+    REM -- The string "timestamp" refers to a SocksCap32 profile for timestamp.\r
+    REM --  Do not change it to the filename of the timestamp program!\r
+    REM --\r
+    start /minimized "c:\program files\sockscap32\sc32.exe" timestamp\r
+    cd "c:\program files\winboard"\r
+    winboard /ics /icshost=localhost /icsport=5000\r
+</pre>\r
+\r
+<p>This workaround has a problem if you want to run two copies of\r
+WinBoard at once, talking to the same chess server twice (for\r
+bughouse) or to two different chess servers. If you need to do that,\r
+you will need to run a separate copy of timestamp with <i>a different\r
+port number</i> for each connection.  You'll need to make a second set of\r
+profile entries with a different value after the -p flag (say, 5001)\r
+and you'll need to change the WinBoard command line /icsport=5000 for\r
+the second WinBoard to match.\r
+\r
+<HR>\r
+<H3><A NAME="[B.20]">[B.20] \r
+How can I use XBoard or WinBoard on chess.net with accuclock?\r
+</A></H3>\r
+\r
+<p>I believe chess.net provides a Win32 command-line version of\r
+accuclock that will work with WinBoard.  Please see the documentation\r
+on the chess.net server itself; don't ask the author of WinBoard.\r
+\r
+<p>I don't know whether chess.net provides versions of accuclock for\r
+Unix at this time.  Ask them.\r
+\r
+<hr>\r
+<h3><a name="[B.21]">[B.21]\r
+  Can I get Zippy to do one or more ICS commands automatically at the \r
+  start or end of each game?</a></h3>\r
+\r
+<p>By default, Zippy automatically sends the command "gameend" to ICS\r
+at the end of each game.  You can alias this command (using the ICS\r
+"alias" feature) to anything you want.  On ICC, you can use the\r
+"multi" feature to alias gameend to several commands, but other\r
+servers don't have that feature.  Zippy doesn't send anything at the\r
+start of the game by default.\r
+\r
+<p>You can get Zippy to send one or more commands of your choosing, at\r
+the start and/or end of each game, by using the -zippyGameStart and\r
+-zippyGameEnd command line options, newly added in version 4.0.3.\r
+Both xboard and WinBoard have (somewhat obscure) ways of getting\r
+newlines into this option to send several commands.  Here is an\r
+example of one way to do it for each.\r
+\r
+<p><pre>\r
+    xboard -ics -zp -xrm '*zippyGameStart: say hi\nsay prepare to die\n'\r
+\r
+    WinBoard /ics /zp /zippyGameEnd='say thanks\nseek 5 0\nseek 2 12\n'\r
+</pre>\r
+\r
+<hr>\r
+<h3><a name="[B.22]">[B.22]\r
+  How do I print from WinBoard?\r
+</a></h3>\r
+\r
+WinBoard does not have built-in printing functionality.\r
+If you want to print a picture of the board, press Alt+PrintScrn, run the\r
+standard Windows application Paintbrush, select Paste, and print from there.\r
+If you want to print a list of moves, save your game as a PGN file,\r
+then open the PGN file with Notepad or any other plain text editor and\r
+print it from there.\r
+\r
+<hr>\r
+<h3><a name="[B.23]">[B.23]\r
+  Can I get Zippy to automatically reconnect to ICS when its connection \r
+  breaks?</a></h3>\r
+\r
+<p>There isn't a perfect solution to this problem yet, but a pretty\r
+good one is to write a shell script (for xboard) or .bat script (for\r
+WinBoard) that automatically restarts the program whenever it exits.\r
+Use the -xexit flag so that you don't get a popup dialog that must be\r
+dismissed with the OK button before the program will exit.  The gap in\r
+this solution is that your connection to ICS can sometimes get into a\r
+state where the program does not notice that the connection is broken\r
+until the next time it tries to send a command.  Perhaps some future\r
+version of xboard/WinBoard will have an option to send a harmless\r
+command every five minutes or so.\r
+\r
+<p>Anyway, here is a sample Windows .bat file that restarts WinBoard each\r
+time it exits.  Thanks to Jason Williamson.  It assumes that you have put\r
+your computer account's name and password in a file named logon.ini.\r
+\r
+<pre>\r
+REM --\r
+REM -- wbrecon.bat\r
+REM -- Start WinBoard in Zippy mode, and restart it each time it exits.\r
+REM -- Add or change parameters as needed for your application.\r
+REM --\r
+:loop\r
+start /w winboard /zp /ics /icslogon logon.ini /xexit /xautoraise\r
+REM -- The next line is to have a short delay setup for 139 seconds.\r
+REM -- Leave it out if it doesn't work on the version of Windows you use.\r
+TYPE NUL | CHOICE.COM /N /CY /TY,99 &gt;NUL\r
+goto loop\r
+</pre>\r
+\r
+<p>Here is a Unix shell script to do the same thing for xboard.\r
+It's a bit more elaborate.  It is based on the script I use for the\r
+original Zippy.  It logs all ICS output to a file named zippy.out,\r
+and it lets you type commands to Zippy by running "cat &gt; zippy.fifo".\r
+\r
+<pre>\r
+#! /bin/sh\r
+host="204.178.125.65 -icsport 5000 -telnet -telnetProgram timestamp"\r
+#host="164.58.253.13 -icsport 5000 -telnet -telnetProgram timeseal"\r
+out=zippy.out\r
+fifo=zippy.fifo\r
+ZIPPYPASSWORD='something'\r
+export ZIPPYPASSWORD\r
+ZIPPYPASSWORD2='orother'\r
+export ZIPPYPASSWORD2\r
+ZIPPYLINES=`pwd`/all.lines\r
+export ZIPPYLINES\r
+ZIPPYGAMEEND='say Yow, that was FUN!\r
+gameend'\r
+export ZIPPYGAMEEND\r
+zippylogon=`pwd`/logon.ini\r
+DISPLAY=`hostname`:0.0\r
+export DISPLAY\r
+mv -f $out ${out}.old\r
+rm -f $fifo\r
+mkfifo $fifo\r
+pid=$$\r
+( while [ true ] ; do cat -u $fifo ; done ) | \\r
+      ( while [ true ] ; do\r
+          xboard -iconic -ics -icshost $host \\r
+                 -zt -zp -xbell -xanimate \\r
+                 -xautosave -xquiet -fcp "gnuchessx -h" \\r
+                 -icslogon $zippylogon -xexit -autoflag -xautoraise $*\r
+          sleep 600\r
+        done ) &gt; $out 2&gt;&amp;1 &amp;\r
+</pre>\r
+\r
+<hr>\r
+<h3><a name="[B.24]">[B.24]\r
+  The chess engines are too strong and always beat me.  How can I adjust\r
+  the difficulty level to make them weaker?</a></h3>\r
+\r
+<p>The simplest way to get that effect is to make sure the\r
+XBoard/WinBoard Auto Flag option is off, set a very fast time control\r
+so that the chess engine can't think for long, but take as much time\r
+over your own moves as you want. Also feel free to use Retract Move if\r
+you make a blunder.  \r
+\r
+<p>Many chess coaches will let you switch sides after\r
+they get a stronger position so that you can get experience playing\r
+positions where you are winning.  You can try this with XBoard/WinBoard\r
+by using the Machine White or Machine Black menu command to make the\r
+machine take over your position.\r
+\r
+<p>The -depth command-line option to XBoard/WinBoard can also be used to\r
+weaken the engine (see the man page or Help file).  It's a bit of a\r
+nuisance to set command line options in Windows, but see topic <A\r
+HREF="#[C.7]">[C.7]</A> for instructions.\r
+\r
+<p>Other ways of weakening engines are engine-specific.  Many of them\r
+let you adjust various parameters, and if you choose bad settings, the\r
+engine will play more poorly.  Consult whatever documentation came with\r
+the engine you are using.\r
+\r
+<hr>\r
+<h3><a name="[B.25]">[B.25]\r
+  May I use the piece bitmaps from XBoard/WinBoard in my own program?</a></h3>\r
+\r
+<p>The piece bitmaps used in XBoard and WinBoard were designed by\r
+Elmar Bartel.  He released them under the <a\r
+href="http://www.gnu.org/copyleft/gpl.html">GNU General Public\r
+License</a>.  This means that if your program is also free software\r
+distributed under the GPL, you can use them freely.  If your program\r
+is distributed under some other license, including commercial,\r
+shareware, or non-GPL freeware, then you cannot use the bitmaps unless\r
+you obtain special permission from Elmar.  See the file README.bitmaps\r
+that comes with the XBoard and WinBoard source code for more\r
+information and an email address you can write to.\r
+\r
+<HR><H2><A NAME="[C]">[C] XBoard and WinBoard, bugs and problems</A></H2>\r
+\r
+<HR><H3><A NAME="[C.1]">[C.1] I can't build XBoard\r
+because the X11/Xaw/...  include files are not found.</A></H3>\r
+\r
+These are the header files for the Athena Widgets library, which XBoard uses\r
+heavily.  Some versions of Unix don't supply these files, but they are part of\r
+the standard X distribution, freely available from MIT.  \r
+\r
+<P>For general information on getting missing X sources, see the FAQ on\r
+comp.windows.x.  Note that you may be missing only the header files, or you\r
+may be missing the libraries themselves too.\r
+\r
+<P>HP-UX users are missing only the header files.  You can get them by\r
+anonymous FTP as follows.  (But first check with your system\r
+administrator to see if someone else at your site has already done\r
+this.)  Get the archive file /hpux9/X11R5/Core/Xaw-5.00.tar.gz (Xaw\r
+header files) via anonymous FTP from the site hpux.csc.liv.ac.uk\r
+(138.253.42.172), or one of the other official sites---Germany:\r
+hpux.ask.uni-karlsruhe.de (129.13.200.57), US: hpux.cae.wisc.edu\r
+(144.92.4.15), France: hpux.cict.fr (192.70.79.53) or Netherlands:\r
+hpux.ced.tudelft.nl (130.161.140.100). Unpack the archive using gzip\r
+and follow the instructions in its README and/or HPUX.Install files.\r
+Thanks to Richard Lloyd for this information.\r
+\r
+<P>If you have the Xaw header files installed in a different place\r
+than the other X11 headers, you may need to configure XBoard with an\r
+extra flag to help it find them.  For example, if yours are in\r
+/foo/bar/X11/Xaw, try this:\r
+\r
+<p><PRE>\r
+    rm config.cache\r
+    (setenv CFLAGS -I/foo/bar ; configure)\r
+</PRE>\r
+<P>\r
+Also see topic <A HREF="#[C.2]">[C.2]</A>.\r
+\r
+<HR>\r
+<H3><A NAME="[C.2]">[C.2] Configuring or building XBoard fails due to\r
+missing header files, missing libraries, or undefined symbols.\r
+</A></H3>\r
+\r
+Perhaps you have the X server and client programs installed on your\r
+machine, but not the X header files and link-time libraries.  If so,\r
+you can run existing X programs, but you cannot compile a new X\r
+program from source code.  In this case the XBoard configure script\r
+will fail and will tell you to look at this question in the FAQ.  Many\r
+GNU/Linux distributions put the headers and libraries in a separate\r
+package, which you might not have installed.  If you are using RedHat,\r
+install the XFree86-devel package.  If you are using some other\r
+kind of Unix, ask your system administrator where to find the X header\r
+files and link-time libraries.  If this is not your problem, read on.\r
+\r
+<p>The configure script for XBoard looks for X libraries and header\r
+files in some common places.  Sometimes it fails: If yours are\r
+installed in an odd place, it may not find them at all.  If you have\r
+more than one version of X installed on your system, it may find the\r
+"wrong" one, or occasionally it may find libraries from one version\r
+and incompatible header files from another.  You can work around these\r
+problems by telling the configure script where the files are.  For\r
+example:\r
+\r
+<p><PRE>\r
+    configure --x-includes=/odd/place/include \\r
+              --x-libraries=/odd/place/lib\r
+</PRE>\r
+\r
+<P>The directory named in the argument to --x-includes must have a\r
+subdirectory "X11" that contains the actual .h files.  That is, if\r
+your X.h file has full pathname /odd/place/X11R6/include/X11/X.h, then\r
+you must give the argument --x-includes=/odd/place/X11R6/include.\r
+\r
+<P>Some linkers have bugs that cause bogus error messages when you try\r
+to link X programs.  The configure script includes a workaround for a\r
+bug of this kind that exists in some SunOS 4.x.x installations.  See\r
+the FAQ on comp.windows.x for more information about problems of this\r
+kind.\r
+\r
+<P>If all else fails, check whether anyone else at your site has been able to\r
+compile any X programs on your system.  Your X installation might be buggy.\r
+If so, the system administrator at your site might know how to fix or work\r
+around the problem.\r
+\r
+<P>Also see topic <A HREF="#[C.1]">[C.1]</A>.\r
+\r
+<HR><H3><A NAME="[C.3]">[C.3] I have problems using WinBoard on ICS\r
+with a modem.  I'm not running SLIP or PPP, but just dialing in to an\r
+ordinary login account ("shell account").</A></H3>\r
+\r
+Here are solutions to some common problems in this area.\r
+\r
+<P>Some people want to connect to ICS through HyperTerminal or some other\r
+terminal program first, then run WinBoard.  This is not how it works.\r
+WinBoard wants to talk directly with your modem, acting as a terminal program\r
+itself.  Start out with the modem "on hook" (not making a call).\r
+\r
+<P>Run WinBoard with a command line like this (adding more options if desired):\r
+\r
+<p><PRE>\r
+    WinBoard /ics /icscom com1\r
+</PRE>\r
+\r
+Use com2, com3, or com4 in place of com1 if your modem is connected to one of\r
+those ports.\r
+\r
+<P>After you start WinBoard, you may need to change some of the options in the\r
+Communications dialog (on the Options menu).  The dialog has the usual options\r
+for talking to modems: bits per second, bits per byte, parity, number of stop\r
+bits.  You will probably want to use Save Settings Now when you're done.\r
+\r
+<P>Next, type dialing commands to your modem in the text window that WinBoard\r
+creates.  You may need to turn off Local Line Editing on the Options menu\r
+while you are typing commands to your modem.  Turn it back on when you're\r
+done.  See the WinBoard Help file for instructions if you see your typing\r
+echoed an extra time after you hit Enter.\r
+\r
+<HR>\r
+<H3><A NAME="[C.4]">[C.4]\r
+I have problems using WinBoard on ICS with Windows 95 and SLIP\r
+or PPP.  When trying to start up, it gets the error "Address family\r
+not supported by protocol family" (or some equally strange message).\r
+</A></H3>\r
+\r
+WinBoard is a 32-bit application, but some Winsock (TCP/IP) implementations\r
+support only 16-bit applications.  You get a strange looking error message\r
+if you try to use a 32-bit application because\r
+there is no standard Winsock error code number\r
+for "32-bit application not supported."\r
+\r
+<P>Microsoft TCP/IP works with both 16-bit and\r
+32-bit applications, supports SLIP, PPP, Ethernet, etc., and is included\r
+with Windows 95 and later Windows systems.\r
+If possible, I recommend that you uninstall\r
+whatever Winsock you are using and install Microsoft TCP/IP instead.\r
+For more information, see\r
+<A HREF=\r
+"http://walden.mo.net/~rymabry/95winfaq.html"\r
+>http://walden.mo.net/~rymabry/95winfaq.html (the Win95-L FAQ)</A>.\r
+\r
+<P>Trumpet Winsock 2.1 (and earlier) supports only 16-bit\r
+applications, and hence does not work with WinBoard.  But there is a\r
+beta-test release available that does support 32-bit applications.  \r
+I have not tried it with WinBoard, but it \r
+should work.  See Trumpet's Web page\r
+<A HREF=\r
+"http://www.trumpet.com.au/wsk/winsock.htm"\r
+>http://www.trumpet.com.au/wsk/winsock.htm</A>\r
+for more information.\r
+\r
+<P>The 16-bit versions of America On-Line's software do not support\r
+32-bit Winsock applications.  Get the 32-bit version.  At one time the\r
+32-bit version was called "AOL for Windows 95," but I imagine that has\r
+changed.  Hopefully the current versions are all 32-bit.\r
+\r
+<P>A few versions of Winsock may have bugs that prevent\r
+Windows timestamp/timeseal from working with them.  I'm not sure if\r
+such bugs exist in any versions that actually have 32-bit support,\r
+so this point might be moot.  Again, Microsoft TCP/IP is known to work.\r
+\r
+<HR><H3><A NAME="[C.5]">[C.5] When I try to run WinBoard, I get the\r
+message "Failed to start chess program gnuchess on localhost: NO\r
+LANGFILE (file gnuchess.lan not found)".</A></H3>\r
+\r
+<p>This message means that WinBoard is trying to run GNU Chess, but\r
+GNU Chess cannot find a file that it needs, named gnuchess.lan.\r
+If you see it, you've probably customized WinBoard's /fcp, /fd, /scp,\r
+and/or /sd options and made a mistake in the process.  Review what\r
+you did, and see the WinBoard help file.\r
+\r
+<HR>\r
+<H3><A NAME="[C.6]">[C.6] I want to use XBoard or WinBoard as an Internet\r
+Chess Server interface, but the ICS Client option is grayed out on the\r
+menu.</A></H3> \r
+\r
+XBoard and WinBoard have three major modes that can't be changed from the\r
+menus: local chess engine mode,\r
+ICS mode, and standalone mode.\r
+\r
+<p>With XBoard, you have to set the mode using command-line options.\r
+Local chess engine mode is the default, -ics selects ICS mode, and\r
+-ncp ("no chess program") selects standalone mode.\r
+\r
+<p>With WinBoard, if you don't set the mode using command-line\r
+options, you get a dialog box asking which mode you want.  To bypass\r
+the dialog box, use -cp ("chess program") for local chess engine mode,\r
+or -ics or -ncp as with XBoard.  Also see topic <A HREF="#[C.7]">[C.7]</A>.\r
+\r
+<HR>\r
+<H3><A NAME="[C.7]">[C.7] How do I give command-line options to\r
+a Windows program like WinBoard?</A></H3>\r
+\r
+<P>There are many ways; pick your favorite:\r
+\r
+<P><UL>\r
+<LI>Type the command line into an MS-DOS Prompt box.  Example:\r
+"WinBoard -ics".\r
+\r
+<LI>Make a Windows shortcut for WinBoard.  You can do this by\r
+right-dragging WinBoard.exe to the desktop and selecting "Create\r
+Shortcut(s) Here" from the menu that appears.  Right-click on the\r
+shortcut, select Properties, and click the Shortcut tab.  The\r
+command-line text box is labelled "Target" instead of "Command line"\r
+just to confuse you.  Edit the text in this box, adding the command\r
+line options to the end.</LI>\r
+\r
+<LI>Choose Run from the Start menu, or File / Run from the Program\r
+Manager or File Manager, and type the command line into the dialog you\r
+get.  You may have to give WinBoard's full drivespec and filename if\r
+it is not in a directory on your search path.</LI>\r
+\r
+<LI>Make a Program Manager icon for WinBoard.  You can do this by\r
+dragging WinBoard.exe from the File Manager into the Program Manager,\r
+or by using File / New in the Program Manager.  Select the icon and\r
+choose File / Properties.  Edit the Command Line text box to add the\r
+command-line options to the end.</LI>\r
+</UL>\r
+\r
+<HR>\r
+<H3><A NAME="[C.9]">[C.9]\r
+When I exit from WinBoard after using it to play against a chess\r
+program on my machine, the chess program keeps running in the background.\r
+</A></H3>\r
+\r
+<p>Be sure you have the current versions of WinBoard and the chess\r
+engine you are using.  WinBoard 3.4.1 and earlier had a bug that\r
+caused this problem to occur with all chess engines.  A buggy chess\r
+engine that does not respond to the "quit" command will also cause\r
+this.\r
+\r
+<p>If you still see this problem, you can stop the rogue chess engine\r
+by pressing Ctrl+Alt+Del, selecting the chess engine process from the\r
+menu, and pressing the End Task button.\r
+\r
+<hr>\r
+<h3><a name="[C.12]">[C.12]\r
+Why do my ICS \r
+opponents often get extra time after they make their moves?\r
+Why do I sometimes lose time off my clock after I make my move?\r
+</a></h3>\r
+\r
+If you are playing with the ICS incremental clock, both you and your\r
+opponent get a set amount of extra time after each move.\r
+\r
+<p>If your or your opponent has netlag, your opponent might appear to\r
+get extra time, especially if your opponent is using timestamp or\r
+timeseal.  The ICS charges each player who is using timestamp or\r
+timeseal only for the time between when the player received his\r
+opponent's move and the time he sent his own move.  Thus delays in\r
+network transmission do not count against either player.  But WinBoard\r
+counts down the display of your opponent's clock on your screen under\r
+the assumption that there is no netlag.  When his move comes in, if\r
+there was netlag, the ICS may not have really charged him for that\r
+much time, and WinBoard corrects the clock to what the ICS says it\r
+should read.\r
+\r
+<p>If you are not using timestamp or timeseal, you may appear to lose\r
+time off your clock at some point after you make your move.  In this\r
+case, the ICS charges you for the time between when it sent you your\r
+opponent's move and the time it received your move.  Thus delays in\r
+network transmission count against you.  WinBoard stops counting down\r
+the display of your clock on your screen (and starts your opponent's)\r
+when you make your move.  When the ICS echoes your move back to you, it\r
+may have charged you for more time than that, and WinBoard corrects\r
+the clocks to what the ICS says they should read.\r
+\r
+<p>See "help lag" and "help timestamp" or "help timeseal" on your ICS for\r
+more detailed information.\r
+\r
+<hr>\r
+<h3><a name="[C.13]">[C.13]\r
+I can't run WinBoard unless I delete the WinBoard.ini file each time!\r
+</a></h3>\r
+\r
+<p>Most people don't have this problem, but two or three people using\r
+Windows NT 4.0 with Service Pack 3 or 4 have reported it.  I have no\r
+idea what causes this problem.  Contrary to what was reported in a\r
+previous version of this FAQ, reinstalling the service pack after\r
+installing WinBoard does not seem to solve the problem.\r
+\r
+<hr>\r
+<h3><a name="[C.15]">[C.15]\r
+I get errors compiling XBoard's parser.c.\r
+</a></h3>\r
+\r
+<p>The file parser.c is automatically generated from parser.l.  The\r
+copy included with XBoard 4.0.2 was generated by lex on Tru64 Unix and\r
+has problems compiling and linking on current GNU/Linux versions.  The\r
+copy included with XBoard 4.0.3 was generated by flex on a GNU/Linux\r
+machine, but it too won't necessarily work on other versions of Unix.\r
+If you have this problem, you can fix it by deleting parser.c and\r
+letting the Makefile re-create it from parser.l.  This will work if\r
+you have either lex or flex on your system.  Flex is available in all\r
+GNU/Linux distributions and can be obtained at no charge from the Free\r
+Software Foundation, www.fsf.org.\r
+\r
+<hr>\r
+<h3><a name="[C.16]">[C.16]\r
+I get an error building WinBoard from source because "flex" is not found.\r
+</a></h3>\r
+\r
+<p>The file parser.c is automatically generated from parser.l.  The\r
+Makefile included with the WinBoard source kit has a rule for\r
+generating parser.c using the program "flex", which will fail if you\r
+don't have flex.  However, the source kit also includes a ready-made\r
+copy of parser.c, so you don't really need flex unless you have made\r
+changes to parser.l.  Check that you still have a copy of parser.c; if\r
+you don't, unpack the WinBoard source zip file again to get one.\r
+Either set the last-modified time of parser.c to be later than that of\r
+parser.l, delete parser.l, or comment out the Makefile rule for\r
+building parser.c from parser.l, and then try building WinBoard again.\r
+\r
+<p>If you do want to change parser.l and rebuild parser.c, you can get\r
+flex as part of the free Cygwin kit from \r
+<a href="http://sourceware.cygnus.com/cygwin/"\r
+>http://sourceware.cygnus.com/cygwin/</a>.  You can\r
+probably also get flex for Windows by itself from various other places\r
+around the Internet.  It is free software distributed by the Free\r
+Software Foundation, www.fsf.org.\r
+\r
+<hr>\r
+<h3><a name="[C.17]">[C.17]\r
+  XBoard hangs shortly after connecting to an ICS when used with dxterm,\r
+ cmdtool, dtterm, kterm, konsole, or other substitutes for xterm.\r
+</a></h3>\r
+\r
+<p>After connecting to a chess server, XBoard 4.0.2 and later sends an\r
+escape sequence to its terminal that is meant to display your handle\r
+and the ICS host name (for example, \r
+"user<a name="nospam">&#x40;</a>chessclub.com") in the\r
+terminal's banner and icon.  It seems that several of the alternative\r
+X terminal programs have a bug that makes them hang when sent this\r
+escape sequence.\r
+\r
+<p>You can work\r
+around the problem by using xterm, nxterm, rxvt, aterm, xiterm, or\r
+gnome-terminal, all of which seem to work fine.  In fact, current\r
+versions of kterm and konsole seem to work fine too, so if you are\r
+having problems with one of them, be sure you are not running an\r
+outdated version.  \r
+\r
+<p>Alternatively, you can disable this feature by commenting out the\r
+body of DisplayIcsInteractionTitle in xboard.c and recompling xboard.\r
+\r
+<hr>\r
+<h3><a name="[C.18]">[C.18]\r
+  The WinBoard pieces show up in the wrong colors, appear distorted,\r
+  or are not visible at all.\r
+</a></h3>\r
+\r
+<p>This can happen if you have a bug in your Windows display driver.\r
+Check with the manufacturer of your display card, the manufacturer of\r
+your computer, or Microsoft to see if there is an updated driver\r
+available.  You can usually download updated drivers from the Web.\r
+\r
+<p>If you can't find an updated driver, you can try running Windows\r
+using a different number of colors and/or disabling some of the\r
+hardware acceleration features on your display card.  To change the\r
+number of colors, go to Windows Start / Settings / Control Panel /\r
+Display / Settings / Color Palette.  To disable hardware acceleration\r
+features, go to Windows Start / Settings / Control Panel / Display /\r
+Settings / Advanced Properties / Performance / Hardware Acceleration.\r
+\r
+<p>It's also possible that Windows has the right driver for your\r
+hardware already but you are not using it.  It may help to reinstall\r
+your driver.  Go to Windows Start / Settings / Control Panel / System\r
+and delete your display card (maybe even your monitor too), then\r
+reboot.  Windows should automatically re-detect your card and monitor\r
+and re-install the drivers; if it doesn't, run Start / Settings /\r
+Control Panel / Add New Hardware to force it to.\r
+\r
+<p>If all else fails, try Monochrome mode.  On WinBoard's menus, go\r
+to Options / Color and check Monochrome.  WinBoard will display in black\r
+and white.\r
+\r
+<HR>\r
+<H3><A NAME="[C.19]">[C.19] XBoard or WinBoard tells me "Error: first chess\r
+  program (...) exited unexpectedly".</A></H3>\r
+\r
+<p>This message means that your chess engine crashed, probably due to\r
+a bug in the engine, or because you have it configured incorrectly.\r
+You can try running XBoard or WinBoard again with the "-debug" flag on\r
+the command line.  This will print out all the messages received from\r
+the chess engine.  (With WinBoard, the messages go into a file called\r
+WinBoard.debug; with XBoard, they go to the xterm that you started\r
+XBoard from.)\r
+\r
+<P>If you are using GNU Chess and you see this problem as soon as it\r
+starts up, most likely GNU Chess is exiting with an error message.  If\r
+you see the message "NO LANGFILE", it means that you did not install\r
+GNU Chess correctly, and it is unable to find the file gnuchess.lang.\r
+Make sure that you defined LIBDIR in the gnuchess Makefile, and that\r
+gnuchess.lang is in that directory.  If gnuchess.lang is not there,\r
+you probably didn't type "make install" in the gnuchess src directory;\r
+you must do this to install gnuchess.lang (and the gnuchess book).  If\r
+you defined LIBDIR to something that is not an absolute pathname (that\r
+is, to something that does not start with a "/"), GNU Chess will work\r
+only if you run it from the GNU Chess "src" directory where you built\r
+it.\r
+\r
+<hr><h3><a name="[C.20]">[C.20]\r
+  XBoard tells me "Warning: Cannot allocate colormap entry", or\r
+  "too few colors available; trying monochrome mode", or\r
+  "XPM pieces cannot be used in monochrome mode".\r
+</a></h3>\r
+\r
+<p>You are running your X server with 8-bit color depth, and you are running\r
+some program that has used up all 256 of your colors.  Netscape tends\r
+to do this, or maybe you have a background image that uses up all of\r
+your colors.\r
+\r
+<p>If you have a modern machine, you probably have enough display\r
+memory to run your X server with 16-, 24-, or 32-bit color depth.  If\r
+you're using "startx" to start the X server, try giving the command as\r
+"<tt>startx -- -bpp 24</tt>" (or 16, or 32).  On newer X servers you\r
+may have to use -depth instead of -bpp.  Further details on\r
+configuring your X server are beyond the scope of this FAQ.\r
+\r
+<p>If you must run in 8-bit mode, try the following:\r
+Avoid background images that use up all your colors.  If you\r
+run Netscape, try starting it up with the <tt>-install</tt> command-line\r
+option; this gives Netscape its own private colormap that X will\r
+switch to when Netscape has the keyboard focus.  \r
+\r
+<P>If all else fails, another possibility is to run xboard in\r
+monochrome (black and white) mode by giving it the <tt>-mono</tt>\r
+command-line option.  XBoard will try this by itself in some cases.\r
+Monochrome mode works only with bitmap pieces, not pixmap pieces, so\r
+trying to use it may give you the error "XPM pieces cannot be used in\r
+monochrome mode".  To get around this, either use the -bitmapDirectory\r
+command line option to point XBoard to the directory containing the\r
+bitmap pieces included with the XBoard source code, or rebuild XBoard\r
+with pixmap support disabled, using "./configure --disable-xpm ; make\r
+clean ; make".\r
+\r
+<hr><h3><a name="[C.21]">[C.21]\r
+  When I log in to freechess.org, the Enter key doesn't work, and I \r
+  have to use Ctrl+J instead.  But when I use WinBoard, Ctrl+J doesn't\r
+  work either, so I'm stuck.\r
+</a></h3>\r
+\r
+<p>This is a pretty rare problem.  It should only arise if you have to\r
+reach freechess.org by telnetting (or connecting with WinBoard\r
+/icsport=23) from a Windows PC to a Unix box, and then telnetting from\r
+there to freechess.org.  The Enter key should always work when\r
+connecting directly from your PC to freechess.org.\r
+\r
+<p>The best way to get around the problem is to run timeseal on the\r
+intermediate Unix box instead of telnet.  Get the appropriate version\r
+of timeseal for your box from ftp.freechess.org and follow the\r
+directions in the help files on FICS.\r
+\r
+<p>If you can't run timeseal for some reason, there are some things\r
+you can do to make telnet stay in line mode instead of going to\r
+character mode.  Then the Enter key will work.  First, try "telnet\r
+freechess.org 5000" instead of "telnet freechess.org."\r
+If that still doesn't work, then when the Enter key stops working,\r
+type the following.  Here <tt>&lt;</tt> and <tt>&gt;</tt> surround the\r
+names of keys.\r
+\r
+<p><pre>\r
+    &lt;Ctrl+S&gt;&lt;Ctrl+]&gt;mode line&lt;Enter&gt;\r
+</pre>\r
+\r
+<hr><h3><a name="[C.22]">[C.22]\r
+  XBoard says, "Failed to start first chess program gnuchessx\r
+  on localhost: gnuchessx: No such file or directory."\r
+</a></h3>\r
+\r
+<p>XBoard is looking for GNU Chess 4.0.  If you didn't want to use\r
+XBoard with GNU Chess, please see topic <A HREF="#[C.6]">[C.6]</A>.\r
+If you did want to use GNU Chess 4.0, be sure you have it installed and\r
+that it is on your $PATH.  If you wanted to use GNU Chess 5 instead,\r
+see topic <A HREF="#[D.6]">[D.6]</A>.\r
+\r
+<HR>\r
+<H2><A NAME="[D]">[D] Crafty and other topics</A></H2>\r
+<HR>\r
+<H3><A NAME="[D.1]">[D.1] What is XChess?</A></H3>\r
+\r
+XChess is an older chessboard program that is no longer supported.  XChess was\r
+written for X version 10, and you may or may not be able to build and run it\r
+on an X11 system.\r
+\r
+<P>XChess has only one significant feature that is not present in XBoard: Two\r
+humans can play chess using XChess on different machines, without using the\r
+Internet Chess Server as an intermediary.  This feature is of interest only if\r
+you don't have network connectivity to the Internet Chess Server.\r
+\r
+<P>Note: There actually have been several different programs called "XChess" in\r
+circulation at various times.  The above describes one that was associated\r
+with GNU Chess.\r
+\r
+<HR>\r
+<H3><A NAME="[D.2]">[D.2] What is Winsock Chess?</A></H3>\r
+\r
+Winsock Chess is a program that lets two people play chess across a\r
+network.  It runs only under Microsoft Windows.  Some of the code in\r
+Winsock Chess is derived from GNU Chess, but it is not maintained by\r
+the GNU Chess team.  You can get a copy from the Internet Chess\r
+Library; see topic <A HREF="#[A.2]">[A.2]</A>.  For more information,\r
+contact its author, Donald Munro, \r
+ccahdm<a name="nospam">&#x40;</a>beluga.upe.ac.za.\r
+\r
+<HR>\r
+<H3><A NAME="[D.3]">[D.3] What is Crafty?</A></H3>\r
+\r
+Crafty is a freely-available chess program written by Bob Hyatt.  \r
+Bob is the main author of the well-known chess program Cray\r
+Blitz.  Crafty is a very strong program, its code is available, commented\r
+and fairly readable, and its author is actively working on improvements.\r
+\r
+<p>You can download Crafty from <a\r
+href="ftp://ftp.cis.uab.edu/pub/hyatt/"\r
+>ftp://ftp.cis.uab.edu/pub/hyatt/</a>.  Start by getting the <a\r
+href="ftp://ftp.cis.uab.edu/pub/hyatt/read.me" >read.me</a> file and\r
+reading it.  Among other things, this file contains instructions on\r
+how to install Crafty as a command-line application on your machine.\r
+\r
+<p>There is a Crafty mailing list.\r
+To subscribe, send email to \r
+majordomo<a name="nospam">&#x40;</a>cis.uab.edu, with \r
+"subscribe crafty-list" in the body.\r
+\r
+<HR>\r
+<H3><A NAME="[D.4]">[D.4] How do I use Crafty with XBoard?</A></H3>\r
+\r
+<p>First, you need to get Crafty and install it as a command-line\r
+application on your machine.  See topic <A HREF="#[D.3]">[D.3]</A>.\r
+\r
+<p>To use Crafty with XBoard, give the -fcp\r
+parameter like this:\r
+\r
+<p><PRE>\r
+    xboard -fcp "./crafty" -fd <I>crafty_directory</I>\r
+</PRE>\r
+\r
+Here <I>crafty_directory</I> is the directory where you installed Crafty.\r
+You can add more xboard options at the end of the command line.\r
+\r
+<p>Crafty 15.14 or later is required to work properly with XBoard\r
+4.0.0 or later.  We generally recommend using the latest versions of\r
+both XBoard and Crafty.\r
+\r
+<HR>\r
+<H3><A NAME="[D.5]">[D.5] How do I use Crafty with WinBoard?</A></H3>\r
+\r
+<p>First, you need to get Crafty and install it as a command-line\r
+application on your machine.  See topic <A HREF="#[D.3]">[D.3]</A>.\r
+It is best to use the latest version of Crafty with the latest version\r
+of WinBoard to make sure all features are compatible and function\r
+correctly.  You can install Crafty in any directory you like.\r
+\r
+<p>You also need to get WinBoard and install it in the normal way\r
+using its built-in installer.  You can do that either before or after\r
+you install Crafty.\r
+\r
+<p>After both Crafty and WinBoard are installed separately, follow the\r
+directions in the WinBoard Help file (included with WinBoard) for\r
+connecting new chess engines to WinBoard.\r
+\r
+<p>If you want to have Crafty act as an automated computer player on a\r
+chess server, see topic <A HREF="#[B.16]">[B.16]</A>.  Before you try\r
+to get that working, be sure you can play against Crafty locally,\r
+first without WinBoard, then with it.  Also be sure you can use\r
+WinBoard to play on the chess server yourself, without having Crafty\r
+connected to it.  You have to crawl before you can walk!\r
+\r
+<HR>\r
+<H3><A NAME="[D.6]">[D.6] How do I use GNU Chess 5 with XBoard?</A></H3>\r
+\r
+<p>By default, XBoard still tries to use GNU Chess 4 by running the\r
+command "gnuchessx".  That's why if you don't have GNU Chess 4, you\r
+get the error message "Failed to start first chess program gnuchessx\r
+on localhost: gnuchessx: No such file or directory."\r
+\r
+<p>If you have GNU Chess 5, the command should be "gnuchess xboard"\r
+instead.  To make XBoard use this command, give the -fcp parameter\r
+like this:\r
+\r
+<p><PRE>\r
+    xboard -fd <I>gnuchess_directory</I> -fcp "./gnuchess xboard" \r
+</PRE>\r
+\r
+Here <I>gnuchess_directory</I> is the directory where you installed\r
+GNU Chess 5 and its book.  You can add more xboard options at the\r
+end of the command line.\r
+\r
+<p><HR>\r
+$Id: FAQ.html,v 2.2 2003/11/28 09:35:21 mann Exp $<br>\r
+** End of XBoard/WinBoard FAQ **\r
+</BODY></HTML>\r
diff --git a/ToDo b/ToDo
index d3d6f1a..2ffa540 100644 (file)
--- a/ToDo
+++ b/ToDo
@@ -283,7 +283,7 @@ the way comments are parsed and returned from parser.l to fix this.
 224. Larry Parrish requests: In an automated multi-games match I would\r
 like to load the n-th game from the file for the n-th game of the\r
 match.  [That is, when -mg and -lgf or -lpf are used together without\r
--lgi or -lpi.]\r
+-lgi or -lpi.] [4.3.15 provides auto-increment og game and pos index]\r
 \r
 225. From pulp: another bug (maybe with the Microsoft RichEdit\r
 control) I've observed is when you flood the edit control it loses the\r
@@ -300,7 +300,8 @@ web page address, close, go to browser, paste *nothing*.  [How does
 one do this in Windows?]\r
 \r
 227a. In engine-engine matches, an engine that crashes should lose and\r
-perhaps get restarted for the next game. [Added in 4.3]\r
+perhaps get restarted for the next game. [In 4.3 a crashing engine \r
+forfeits the game, but still terminates a match.]\r
 \r
 227b. Maybe when an engine playing in Zippy mode exhibits a bug, we\r
 should do a little more too.  Perhaps "say Sorry, the engine seems to\r
@@ -427,6 +428,8 @@ commands" from Steffen Jakob:
 \r
   "1" tells xboard to ask for an additional parameter (here: filename)\r
   which will replace the "%s" in the command string.\r
+[XBoard 4.3.16 has an experimental implementation of this ide through\r
+the 'feature option="..."' command.]\r
 \r
 261. Check that "quit" is sent to engine properly if ICS connection\r
 fails to open due to error from timestamp/timeseal.  "wzrdking" had a\r
@@ -441,7 +444,8 @@ poor idea.)
 274. Command to go to move number N, with entry box for N.\r
 \r
 276. Make grid optional in winboard?  Note that the highlight options\r
-don't work without it.\r
+don't work without it. [The Winboard_x -overrideLineGap option provides\r
+this.]\r
 \r
 276a. Make color of grid an option, instead of always black.\r
 \r
@@ -558,7 +562,7 @@ current code base. [4.3 supports many variants, even those not supported
 by ICS. Not bughouse, though]\r
 \r
 326a. Menu to let you see and change the current variant type, not\r
-just a command-line argument as at present. [Added in 4.3 WinBoard]\r
+just a command-line argument as at present. [Added in 4.3]\r
 \r
 326b. crazyhouse: Keep track of holdings and display them, keep track\r
 of what onboard pieces are promoted so they will revert if captured,\r
@@ -628,7 +632,8 @@ server-side autoflag on/off by sending an appropriate set command.
 **332. Bug: Autoflag for local engine/engine or engine/human matches\r
 does not recognize that having your flag fall when your opponent has\r
 insufficient mating material is a draw.  It counts the flag fall as a\r
-loss.\r
+loss. [Partly fixed in 4.3, which corrects any kind of losses against \r
+a bare King to draws.]\r
 \r
 336. Of course lots of people ask for a graphical seek window.\r
 \r
@@ -749,7 +754,7 @@ customizing the positions with X resources.
 366. Feature to let an engine observe an ICS game and run analysis\r
 mode on the moves, perhaps whispering or channel-telling the results.\r
 It's a little too easy to cheat with this feature or I might have\r
-added it long ago.\r
+added it long ago. [Added in 4.2.8 and 4.4]\r
 \r
 369. Optionally send a periodic keepalive command to ICS.  Can be\r
 used to defeat autologout, so should probably not be on by default.\r
@@ -806,6 +811,8 @@ black pre-first-move is needed.
 **387. Have winboard draw opaque details on black pieces too.\r
 Hmm, this should probably be optional, and the detail colors should\r
 be selectable instead of hardwired to the opposite piece color.\r
+[The 4.3 -allWhite option goes in this direction. Details always\r
+in black, though.]\r
 \r
 **387a. Add "no piece border" option to WinBoard.  See code from\r
 Robert Jurjevic sent 4/9/2001.\r
@@ -845,7 +852,8 @@ as at present.
 console window, or something.\r
 \r
 402. Internationalization.  It probably isn't practical to retrofit\r
-this into the current code base.\r
+this into the current code base. [4.2.8 and 4.4 have international-\r
+ization of xboard.]\r
 \r
 409. One user requested a way to put a time delay in the middle of\r
 sending zippyGameEnd commands.  This would (for example) let the\r
@@ -867,7 +875,8 @@ patch that I believe includes this; need to integrate and test it.
 **415. It was suggested that a few common options that many chess\r
 engines need be promoted to xboard/WinBoard options so that the user\r
 can set them from the GUI in a uniform way.  In particular: hash size,\r
-directory name for endgame tables.\r
+directory name for endgame tables. [4.3 has extended WB protocol\r
+with a memory, egtpath and cores command.]\r
 \r
 **416. Can we avoid dying when xboard is in 8-bit mode, pixmap pieces\r
 are chosen (by default), and we can't get enough colors?  Ugh.\r
@@ -939,7 +948,7 @@ with the EPD spec.  Maybe a feature command should indicate that the
 engine matches this part of the spec, but then again, it's not clear\r
 what we can do about it if the engine doesn't give that command, so\r
 maybe there is no point.  See discussion on chess-engines list.\r
-[WinBoard_x adds an argument to tell WInBoard an egine uses absolute\r
+[Winboard_x adds an argument to tell WinBoard an egine uses absolute\r
 scores]\r
 \r
 458. Bug: xboard will try to use an engine to play normal chess even\r
@@ -973,11 +982,13 @@ timeseal issue and nothing to do with WinBoard itself.
 476. For some reason (I guess some GUI supports them), most WinBoard\r
 engines now have a graphical logo, 100x50 pixels in Windows .bmp\r
 format.  It's been requested that WinBoard have a place to show the\r
-logo.\r
+logo. [4.3.16 supports logos]\r
 \r
 477. Implement the "book engine" idea I proposed in the protover 3\r
 discussions.  Some folks have offered to write them (e.g., Bruce\r
-Morland).\r
+Morland). [4.3.15 supports a GUI book, which is another way to\r
+acheive the same, as the only thing that would distinguish book\r
+engines is their book, not what they do.]\r
 \r
 478. Recognize URLs in the WinBoard ics interaction window and make\r
 them work as hyperlinks (firing up your browser).\r
@@ -1002,7 +1013,8 @@ just trying to win a single game."
 examine mode while -zp is active, and the engine supports analyze,\r
 then put it into analyze mode and let it work on the examined game.  I\r
 guess this could work for observed games too.  Should it be optional\r
-or always done?\r
+or always done? [4.2.8 and 4.4 support analysis in zippy mode, but\r
+as yet only while observing games.]\r
 \r
 483.  It would be nice if the KingShine 3D board could be integrated\r
 as an alternative xboard GUI rendering.\r
@@ -1012,10 +1024,14 @@ us those feature commands.  Useful kludge for certain buggy engines.
 \r
 485. Add "reset" to protover 3.  (Clear the hash tables and other such\r
 info; used to put the engine into a known state before running a\r
-test/benchmark position.)\r
+test/benchmark position.) [the WB 'memory' command could be defined\r
+to have this side effect? Normally we would have to clear the hash\r
+table when changing its size.]\r
 \r
 486. Other protover 3 features listed in my 6/21/2001 message to\r
 chess-engines list.  Write a full protover 3 draft for comment.\r
+[Note that 4.3 already uses protocol extensions that differ from\r
+the v3 specs.]\r
 \r
 487. Adjudicate non-ICS games as a draw when there is insufficient\r
 mating material on both sides, especially engine/engine games.  Well,\r
@@ -1034,6 +1050,7 @@ incorrect draw claim by an engine. [In 4.3 you can set the number of
 moves or repeats after which draw is adjudicated]\r
 \r
 487c. Another request: allow the operator to adjudicate engine/engine games.\r
+[Winboard_x provided menu items for this.]\r
 \r
 488. Option to suppress tags popup on game load?  This has been\r
 requested a few times, and I received one partial implementation (not\r
@@ -1053,7 +1070,9 @@ kibitzing from the engine dynamically.  I had thought it would be
 better to make the GUI able to relay thinking output as kibitzing on\r
 its own (and be able to turn this on/off dynamically), but Bruce\r
 points out that what engine authors want to send as kibitzing output\r
-usually includes more than the PV thinking output.\r
+usually includes more than the PV thinking output. [Note that engines\r
+can put whatever info they want in the PV field of the thinking \r
+output].\r
 \r
 492.  One user reports that GNU Chess 5 crashes if you start a game,\r
 play far enough to get GNU Chess out of book, select Reset, and play\r
@@ -1070,7 +1089,7 @@ Ugh, but I suppose it would be helpful sometimes.
 they were doing) partial conversions of WinBoard to German or Spanish\r
 by manually translating the messages.  I think it would be much better\r
 (but a big job) to use GNU gettext.  I haven't looked into the details\r
-of that at all.\r
+of that at all. [4.2.8 and 4.4 have gettext support.]\r
 \r
 495. JamesBaud points out that FEN is not sufficient to correctly\r
 represent a crazyhouse position (or bughouse, for that matter),\r
@@ -1080,10 +1099,12 @@ information.  I really don't know what I could do about this -- take
 the lead in proposing an extension to FEN and to style 12 with new\r
 piece letters, I suppose.  I don't really have time or motivation for\r
 that.  If you always use PGN, not FEN, to save Crazyhouse, that works\r
-around the problem. [4.3 uses bFENs which fix this]\r
+around the problem. [4.3 uses bFENs which fix this, but not in ICS\r
+mode]\r
 \r
 **496. DAV sent some code to save a screen shot in xboard.  Look at\r
-merging this in.\r
+merging this in. [4.3 has an option to save the board display (but\r
+not the entire window) as bitmap.]\r
 \r
 **497. Igor Eged reports: I make a move on opponents time using\r
 premove. Right in the time I am holding another piece in case of\r
@@ -1180,7 +1201,7 @@ The "new" command should set the search depth back to unlimited.  This
 is already stated in the spec.  The "level" command should not affect\r
 the search depth.  As it happens, xboard/WinBoard currently always\r
 sends sd (if needed) right after level, but that isn't part of the\r
-spec.\r
+spec. [Added to the specs that go with 4.4]\r
 \r
 518. Warn in doc that -initString is a dangerous feature.  Also move\r
 doc of dalogs for sending commands directly to the engine out of the\r
@@ -1210,7 +1231,7 @@ be nice.
 \r
 525. Support a 64-bit node counter in analysis mode when compiled with\r
 something that has 64-bit integer support.  Both gcc and msvc++ have\r
-this, though under different names.\r
+this, though under different names. [Done in 4.2.8 and 4.4]\r
 \r
 526. "-initialMode analysis -lgf -" doesn't get the engine into\r
 analysis mode properly.  "-initialMode analyzeFile" is a workaround,\r
@@ -1238,6 +1259,7 @@ Any support needed?
 \r
 529. Protover 3 needs a prefix character that says "this is debug\r
 output" and prevents the GUI from parsing that line (say ";").\r
+[4.3 uses '#' for this purpose, when the engine sets feature debug=1]\r
 \r
 530. The undocumented (?) checking for rsh error messages tripped up\r
 one engine author who had a "not found" in a message.  Tighten this\r
@@ -1274,7 +1296,8 @@ already?)
 538. Need a way for the user to adjust the clocks.  This is important\r
 for WCCC and other computer competitions, where xboard/winboard's\r
 clock is not the master.  I was going to do it in time for the July\r
-2002 WCCC.  Oops.\r
+2002 WCCC.  Oops. [4.3 allows adjusting the clocks by clicking them\r
+in 'edit game' mode, in steps of 1 minute]\r
 \r
 541. Related to #327, John Iverson says, "It would be nice to have the\r
 coordinates shown outside of the board along the edges, rather than in\r
@@ -1362,6 +1385,25 @@ HTML, at the cost of losing the index and search capability.
 a pain to create new dialogs by editing the text file.  The original\r
 ones were all created using the graphical dialog editor in MSVC 5.\r
 \r
+553. It would be nice for xboard's ICS Input box to have a history \r
+feature similar to WinBoard's ICS Interaction window. Actually it \r
+would be nice for xboard to have its own ICS Interaction window with \r
+all the bells and whistles that WinBoard's has instead of limping \r
+along using an xterm for interaction. \r
+\r
+**554. Port evaluation-graph window to XBoard.\r
+\r
+555. Split x/wengineoutput.c in a front-end and common backend file.\r
+\r
+556. Fix -stickyWindows option under XP and Vista, and port to XBoard.\r
+\r
+557. Port display of engine logos to XBoard.\r
+\r
+558. Device a smart way for -autoLogo to select logos in other modes\r
+than Two Machines.\r
+\r
+\r
+\r
 * * *\r
 \r
 Before each release:\r
old mode 100644 (file)
new mode 100755 (executable)
index 25ee4c0..b8cfa92 100644 (file)
--- a/backend.c
+++ b/backend.c
@@ -120,6 +120,16 @@ extern int gettimeofday(struct timeval *, struct timezone *);
 # include "zippy.h"\r
 #endif\r
 #include "backendz.h"\r
+#include "gettext.h" \r
\r
+#ifdef ENABLE_NLS \r
+# define _(s) gettext (s) \r
+# define N_(s) gettext_noop (s) \r
+#else \r
+# define _(s) (s) \r
+# define N_(s) s \r
+#endif \r
+\r
 \r
 /* A point in time */\r
 typedef struct {\r
@@ -198,6 +208,11 @@ void ParseFeatures P((char* args, ChessProgramState *cps));
 void InitBackEnd3 P((void));\r
 void FeatureDone P((ChessProgramState* cps, int val));\r
 void InitChessProgram P((ChessProgramState *cps, int setup));\r
+\r
+#ifdef WIN32\r
+       extern void ConsoleCreate();\r
+#endif\r
+\r
 ChessProgramState *WhitePlayer();\r
 void InsertIntoMemo P((int which, char *text)); // [HGM] kibitz: in engineo.c\r
 int VerifyDisplayMode P(());\r
@@ -290,6 +305,26 @@ static char * safeStrCat( char * dst, const char * src, size_t count )
     return dst;\r
 }\r
 \r
+/* Some compiler can't cast u64 to double\r
+ * This function do the job for us:\r
+\r
+ * We use the highest bit for cast, this only\r
+ * works if the highest bit is not\r
+ * in use (This should not happen)\r
+ *\r
+ * We used this for all compiler\r
+ */\r
+double\r
+u64ToDouble(u64 value)\r
+{\r
+  double r;\r
+  u64 tmp = value & u64Const(0x7fffffffffffffff);\r
+  r = (double)(s64)tmp;\r
+  if (value & u64Const(0x8000000000000000))\r
+       r +=  9.2233720368547758080e18; /* 2^63 */\r
+ return r;\r
+}\r
+\r
 /* Fake up flags for now, as we aren't keeping track of castling\r
    availability yet. [HGM] Change of logic: the flag now only\r
    indicates the type of castlings allowed by the rule of the game.\r
@@ -355,12 +390,8 @@ int gotPremove = 0;
 Boolean alarmSounded;\r
 /* end premove variables */\r
 \r
-#define ICS_GENERIC 0\r
-#define ICS_ICC 1\r
-#define ICS_FICS 2\r
-#define ICS_CHESSNET 3 /* not really supported */\r
-int ics_type = ICS_GENERIC;\r
 char *ics_prefix = "$";\r
+int ics_type = ICS_GENERIC;\r
 \r
 int currentMove = 0, forwardMostMove = 0, backwardMostMove = 0;\r
 int pauseExamForwardMostMove = 0;\r
@@ -626,7 +657,7 @@ InitBackEnd1()
     if (!ParseTimeControl(appData.timeControl, appData.timeIncrement,\r
                          appData.movesPerSession)) {\r
        char buf[MSG_SIZ];\r
-       sprintf(buf, "bad timeControl option %s", appData.timeControl);\r
+       sprintf(buf, _("bad timeControl option %s"), appData.timeControl);\r
        DisplayFatalError(buf, 0, 2);\r
     }\r
 \r
@@ -641,7 +672,7 @@ InitBackEnd1()
            searchTime = min * 60 + sec;\r
        } else {\r
            char buf[MSG_SIZ];\r
-           sprintf(buf, "bad searchTime option %s", appData.searchTime);\r
+           sprintf(buf, _("bad searchTime option %s"), appData.searchTime);\r
            DisplayFatalError(buf, 0, 2);\r
        }\r
     }\r
@@ -738,7 +769,7 @@ InitBackEnd1()
     if (appData.firstProtocolVersion > PROTOVER ||\r
        appData.firstProtocolVersion < 1) {\r
       char buf[MSG_SIZ];\r
-      sprintf(buf, "protocol version %d not supported",\r
+      sprintf(buf, _("protocol version %d not supported"),\r
              appData.firstProtocolVersion);\r
       DisplayFatalError(buf, 0, 2);\r
     } else {\r
@@ -748,7 +779,7 @@ InitBackEnd1()
     if (appData.secondProtocolVersion > PROTOVER ||\r
        appData.secondProtocolVersion < 1) {\r
       char buf[MSG_SIZ];\r
-      sprintf(buf, "protocol version %d not supported",\r
+      sprintf(buf, _("protocol version %d not supported"),\r
              appData.secondProtocolVersion);\r
       DisplayFatalError(buf, 0, 2);\r
     } else {\r
@@ -806,7 +837,7 @@ InitBackEnd1()
       case VariantBughouse:     /* need four players and two boards */\r
       case VariantKriegspiel:   /* need to hide pieces and move details */\r
       /* case VariantFischeRandom: (Fabien: moved below) */\r
-       sprintf(buf, "Variant %s supported only in ICS mode", appData.variant);\r
+       sprintf(buf, _("Variant %s supported only in ICS mode"), appData.variant);\r
        DisplayFatalError(buf, 0, 2);\r
        return;\r
 \r
@@ -821,7 +852,7 @@ InitBackEnd1()
       case Variant35:\r
       case Variant36:\r
       default:\r
-       sprintf(buf, "Unknown variant name %s", appData.variant);\r
+       sprintf(buf, _("Unknown variant name %s"), appData.variant);\r
        DisplayFatalError(buf, 0, 2);\r
        return;\r
 \r
@@ -1049,7 +1080,7 @@ InitBackEnd2()
     } else {\r
       /* kludge: allow timeout for initial "feature" commands */\r
       FreezeUI();\r
-      DisplayMessage("", "Starting chess program");\r
+      DisplayMessage("", _("Starting chess program"));\r
       ScheduleDelayedEvent(InitBackEnd3, FEATURE_TIMEOUT);\r
     }\r
 }\r
@@ -1063,14 +1094,19 @@ InitBackEnd3 P((void))
 \r
     InitChessProgram(&first, startedFromSetupPosition);\r
 \r
+\r
     if (appData.icsActive) {\r
+#ifdef WIN32\r
+        /* [DM] Make a console window if needed [HGM] merged ifs */\r
+        ConsoleCreate(); \r
+#endif\r
        err = establish();\r
        if (err != 0) {\r
            if (*appData.icsCommPort != NULLCHAR) {\r
-               sprintf(buf, "Could not open comm port %s",  \r
+               sprintf(buf, _("Could not open comm port %s"),  \r
                        appData.icsCommPort);\r
            } else {\r
-               sprintf(buf, "Could not connect to host %s, port %s",  \r
+               sprintf(buf, _("Could not connect to host %s, port %s"),  \r
                        appData.icsHost, appData.icsPort);\r
            }\r
            DisplayFatalError(buf, err, 1);\r
@@ -1115,7 +1151,7 @@ InitBackEnd3 P((void))
     } else if (StrCaseCmp(appData.initialMode, "Training") == 0) {\r
       initialMode = Training;\r
     } else {\r
-      sprintf(buf, "Unknown initialMode %s", appData.initialMode);\r
+      sprintf(buf, _("Unknown initialMode %s"), appData.initialMode);\r
       DisplayFatalError(buf, 0, 2);\r
       return;\r
     }\r
@@ -1123,7 +1159,7 @@ InitBackEnd3 P((void))
     if (appData.matchMode) {\r
        /* Set up machine vs. machine match */\r
        if (appData.noChessProgram) {\r
-           DisplayFatalError("Can't have a match with no chess programs",\r
+           DisplayFatalError(_("Can't have a match with no chess programs"),\r
                              0, 2);\r
            return;\r
        }\r
@@ -1135,7 +1171,7 @@ InitBackEnd3 P((void))
            if (!LoadGameFromFile(appData.loadGameFile,\r
                                  index,\r
                                  appData.loadGameFile, FALSE)) {\r
-               DisplayFatalError("Bad game file", 0, 1);\r
+               DisplayFatalError(_("Bad game file"), 0, 1);\r
                return;\r
            }\r
        } else if (*appData.loadPositionFile != NULLCHAR) {\r
@@ -1144,7 +1180,7 @@ InitBackEnd3 P((void))
            if (!LoadPositionFromFile(appData.loadPositionFile,\r
                                      index,\r
                                      appData.loadPositionFile)) {\r
-               DisplayFatalError("Bad position file", 0, 1);\r
+               DisplayFatalError(_("Bad position file"), 0, 1);\r
                return;\r
            }\r
        }\r
@@ -1156,7 +1192,7 @@ InitBackEnd3 P((void))
        /* Set up other modes */\r
        if (initialMode == AnalyzeFile) {\r
          if (*appData.loadGameFile == NULLCHAR) {\r
-           DisplayFatalError("AnalyzeFile mode requires a game file", 0, 1);\r
+           DisplayFatalError(_("AnalyzeFile mode requires a game file"), 0, 1);\r
            return;\r
          }\r
        }\r
@@ -1184,11 +1220,11 @@ InitBackEnd3 P((void))
        }\r
        if (initialMode == AnalyzeMode) {\r
          if (appData.noChessProgram) {\r
-           DisplayFatalError("Analysis mode requires a chess engine", 0, 2);\r
+           DisplayFatalError(_("Analysis mode requires a chess engine"), 0, 2);\r
            return;\r
          }\r
          if (appData.icsActive) {\r
-           DisplayFatalError("Analysis mode does not work with ICS mode",0,2);\r
+           DisplayFatalError(_("Analysis mode does not work with ICS mode"),0,2);\r
            return;\r
          }\r
          AnalyzeModeEvent();\r
@@ -1199,36 +1235,36 @@ InitBackEnd3 P((void))
          AnalysisPeriodicEvent(1);\r
        } else if (initialMode == MachinePlaysWhite) {\r
          if (appData.noChessProgram) {\r
-           DisplayFatalError("MachineWhite mode requires a chess engine",\r
+           DisplayFatalError(_("MachineWhite mode requires a chess engine"),\r
                              0, 2);\r
            return;\r
          }\r
          if (appData.icsActive) {\r
-           DisplayFatalError("MachineWhite mode does not work with ICS mode",\r
+           DisplayFatalError(_("MachineWhite mode does not work with ICS mode"),\r
                              0, 2);\r
            return;\r
          }\r
          MachineWhiteEvent();\r
        } else if (initialMode == MachinePlaysBlack) {\r
          if (appData.noChessProgram) {\r
-           DisplayFatalError("MachineBlack mode requires a chess engine",\r
+           DisplayFatalError(_("MachineBlack mode requires a chess engine"),\r
                              0, 2);\r
            return;\r
          }\r
          if (appData.icsActive) {\r
-           DisplayFatalError("MachineBlack mode does not work with ICS mode",\r
+           DisplayFatalError(_("MachineBlack mode does not work with ICS mode"),\r
                              0, 2);\r
            return;\r
          }\r
          MachineBlackEvent();\r
        } else if (initialMode == TwoMachinesPlay) {\r
          if (appData.noChessProgram) {\r
-           DisplayFatalError("TwoMachines mode requires a chess engine",\r
+           DisplayFatalError(_("TwoMachines mode requires a chess engine"),\r
                              0, 2);\r
            return;\r
          }\r
          if (appData.icsActive) {\r
-           DisplayFatalError("TwoMachines mode does not work with ICS mode",\r
+           DisplayFatalError(_("TwoMachines mode does not work with ICS mode"),\r
                              0, 2);\r
            return;\r
          }\r
@@ -1239,7 +1275,7 @@ InitBackEnd3 P((void))
          EditPositionEvent();\r
        } else if (initialMode == Training) {\r
          if (*appData.loadGameFile == NULLCHAR) {\r
-           DisplayFatalError("Training mode requires a game file", 0, 2);\r
+           DisplayFatalError(_("Training mode requires a game file"), 0, 2);\r
            return;\r
          }\r
          TrainingEvent();\r
@@ -1387,14 +1423,14 @@ read_from_player(isr, closure, message, count, error)
        gotEof = 0;\r
        outCount = OutputMaybeTelnet(icsPR, message, count, &outError);\r
        if (outCount < count) {\r
-            DisplayFatalError("Error writing to ICS", outError, 1);\r
+            DisplayFatalError(_("Error writing to ICS"), outError, 1);\r
        }\r
     } else if (count < 0) {\r
        RemoveInputSource(isr);\r
-       DisplayFatalError("Error reading from keyboard", error, 1);\r
+       DisplayFatalError(_("Error reading from keyboard"), error, 1);\r
     } else if (gotEof++ > 0) {\r
        RemoveInputSource(isr);\r
-       DisplayFatalError("Got end of file from keyboard", 0, 0);\r
+       DisplayFatalError(_("Got end of file from keyboard"), 0, 0);\r
     }\r
 }\r
 \r
@@ -1409,7 +1445,7 @@ SendToICS(s)
     count = strlen(s);\r
     outCount = OutputMaybeTelnet(icsPR, s, count, &outError);\r
     if (outCount < count) {\r
-       DisplayFatalError("Error writing to ICS", outError, 1);\r
+       DisplayFatalError(_("Error writing to ICS"), outError, 1);\r
     }\r
 }\r
 \r
@@ -1434,7 +1470,7 @@ SendToICSDelayed(s,msdelay)
     outCount = OutputToProcessDelayed(icsPR, s, count, &outError,\r
                                      msdelay);\r
     if (outCount < count) {\r
-       DisplayFatalError("Error writing to ICS", outError, 1);\r
+       DisplayFatalError(_("Error writing to ICS"), outError, 1);\r
     }\r
 }\r
 \r
@@ -1678,7 +1714,7 @@ StringToVariant(e)
          v = VariantNormal;\r
          break;\r
        default:\r
-         sprintf(buf, "Unknown wild type %d", wnum);\r
+         sprintf(buf, _("Unknown wild type %d"), wnum);\r
          DisplayError(buf, 0);\r
          v = VariantUnknown;\r
          break;\r
@@ -1686,7 +1722,7 @@ StringToVariant(e)
       }\r
     }\r
     if (appData.debugMode) {\r
-      fprintf(debugFP, "recognized '%s' (%d) as variant %s\n",\r
+      fprintf(debugFP, _("recognized '%s' (%d) as variant %s\n"),\r
              e, wnum, VariantName(v));\r
     }\r
     return v;\r
@@ -1751,7 +1787,7 @@ SendToPlayer(data, length)
     int error, outCount;\r
     outCount = OutputToProcess(NoProc, data, length, &error);\r
     if (outCount < length) {\r
-       DisplayFatalError("Error writing to display", error, 1);\r
+       DisplayFatalError(_("Error writing to display"), error, 1);\r
     }\r
 }\r
 \r
@@ -1837,7 +1873,7 @@ TelnetRequest(ddww, option)
     msg[2] = option;\r
     outCount = OutputToProcess(icsPR, (char *)msg, 3, &outError);\r
     if (outCount < 3) {\r
-       DisplayFatalError("Error writing to ICS", outError, 1);\r
+       DisplayFatalError(_("Error writing to ICS"), outError, 1);\r
     }\r
 }\r
 \r
@@ -2027,9 +2063,9 @@ read_from_ics(isr, closure, data, count, error)
     int buf_len;\r
     int next_out;\r
     int tkind;\r
+    int backup;    /* [DM] For zippy color lines */\r
     char *p;\r
 \r
-#ifdef WIN32\r
     if (appData.debugMode) {\r
       if (!error) {\r
        fprintf(debugFP, "<ICS: ");\r
@@ -2037,7 +2073,6 @@ read_from_ics(isr, closure, data, count, error)
        fprintf(debugFP, "\n");\r
       }\r
     }\r
-#endif\r
 \r
     if (appData.debugMode) { int f = forwardMostMove;\r
         fprintf(debugFP, "ics input %d, castling = %d %d %d %d %d %d\n", f,\r
@@ -2226,7 +2261,7 @@ read_from_ics(isr, closure, data, count, error)
                            OutputKibitz(suppressKibitz, parse);\r
                        } else {\r
                            char tmp[MSG_SIZ];\r
-                           sprintf(tmp, "your opponent kibitzes: %s", parse);\r
+                           sprintf(tmp, _("your opponent kibitzes: %s"), parse);\r
                            SendToPlayer(tmp, strlen(tmp));\r
                        }\r
                    }\r
@@ -2312,6 +2347,7 @@ read_from_ics(isr, closure, data, count, error)
            oldi = i;\r
            // [HGM] kibitz: try to recognize opponent engine-score kibitzes, to divert them to engine-output window\r
            if (appData.autoKibitz && started == STARTED_NONE && \r
+                !appData.icsEngineAnalyze &&                     // [HGM] [DM] ICS analyze\r
                (gameMode == IcsPlayingWhite || gameMode == IcsPlayingBlack || gameMode == IcsObserving)) {\r
                if(looking_at(buf, &i, "* kibitzes: ") &&\r
                   (StrStr(star_match[0], gameInfo.white) == star_match[0] || \r
@@ -2338,16 +2374,24 @@ read_from_ics(isr, closure, data, count, error)
            } // [HGM] kibitz: end of patch\r
 \r
            if (appData.zippyTalk || appData.zippyPlay) {\r
+                /* [DM] Backup address for color zippy lines */\r
+                backup = i;\r
 #if ZIPPY\r
-               if (ZippyControl(buf, &i) ||\r
-                   ZippyConverse(buf, &i) ||\r
-                   (appData.zippyPlay && ZippyMatch(buf, &i))) {\r
-                   loggedOn = TRUE;\r
-                   continue;\r
+       #ifdef WIN32\r
+               if (loggedOn == TRUE)\r
+                       if (ZippyControl(buf, &backup) || ZippyConverse(buf, &backup) ||\r
+                          (appData.zippyPlay && ZippyMatch(buf, &backup)));\r
+       #else\r
+                if (ZippyControl(buf, &i) ||\r
+                    ZippyConverse(buf, &i) ||\r
+                    (appData.zippyPlay && ZippyMatch(buf, &i))) {\r
+                     loggedOn = TRUE;\r
+                      if (!appData.colorize) continue;\r
                }\r
+       #endif\r
 #endif\r
-           } else {\r
-               if (/* Don't color "message" or "messages" output */\r
+           } // [DM] 'else { ' deleted\r
+               if (/* Don't color "message" or "messages" output */\r
                    (tkind = 5, looking_at(buf, &i, "*. * (*:*): ")) ||\r
                    looking_at(buf, &i, "*. * at *:*: ") ||\r
                    looking_at(buf, &i, "--* (*:*): ") ||\r
@@ -2502,7 +2546,6 @@ read_from_ics(isr, closure, data, count, error)
                        curColor = ColorSeek;\r
                    }\r
                    continue;\r
-               }\r
            }\r
 \r
            if (looking_at(buf, &i, "\\   ")) {\r
@@ -2613,7 +2656,7 @@ read_from_ics(isr, closure, data, count, error)
                  case H_GOT_UNWANTED_HEADER:\r
                  case H_GETTING_MOVES:\r
                    /* Should not happen */\r
-                   DisplayError("Error gathering move list: two headers", 0);\r
+                   DisplayError(_("Error gathering move list: two headers"), 0);\r
                    ics_getting_history = H_FALSE;\r
                    break;\r
                }\r
@@ -2627,7 +2670,7 @@ read_from_ics(isr, closure, data, count, error)
                    gameInfo.whiteRating = string_to_rating(star_match[1]);\r
                    gameInfo.blackRating = string_to_rating(star_match[3]);\r
                    if (appData.debugMode)\r
-                     fprintf(debugFP, "Ratings from header: W %d, B %d\n", \r
+                     fprintf(debugFP, _("Ratings from header: W %d, B %d\n"), \r
                              gameInfo.whiteRating, gameInfo.blackRating);\r
                }\r
                continue;\r
@@ -2660,7 +2703,7 @@ read_from_ics(isr, closure, data, count, error)
                    break;\r
                  case H_GETTING_MOVES:\r
                    /* Should not happen */\r
-                   DisplayError("Error gathering move list: nested", 0);\r
+                   DisplayError(_("Error gathering move list: nested"), 0);\r
                    ics_getting_history = H_FALSE;\r
                    break;\r
                  case H_GOT_REQ_HEADER:\r
@@ -2897,7 +2940,7 @@ read_from_ics(isr, closure, data, count, error)
                    if (forwardMostMove > backwardMostMove) {\r
                        currentMove = --forwardMostMove;\r
                        DisplayMove(currentMove - 1); /* before DMError */\r
-                       DisplayMoveError("Illegal move (rejected by ICS)");\r
+                       DisplayMoveError(_("Illegal move (rejected by ICS)"));\r
                        DrawPosition(FALSE, boards[currentMove]);\r
                        SwitchClocks();\r
                        DisplayBothClocks();\r
@@ -3052,6 +3095,11 @@ read_from_ics(isr, closure, data, count, error)
                if (gameMode == IcsObserving &&\r
                    atoi(star_match[0]) == ics_gamenum)\r
                  {\r
+                      /* icsEngineAnalyze */\r
+                      if (appData.icsEngineAnalyze) {\r
+                            ExitAnalyzeMode();\r
+                            ModeHighlight();\r
+                      }\r
                      StopClocks();\r
                      gameMode = IcsIdle;\r
                      ics_gamenum = -1;\r
@@ -3206,9 +3254,9 @@ read_from_ics(isr, closure, data, count, error)
        \r
     } else if (count == 0) {\r
        RemoveInputSource(isr);\r
-        DisplayFatalError("Connection closed by ICS", 0, 0);\r
+        DisplayFatalError(_("Connection closed by ICS"), 0, 0);\r
     } else {\r
-       DisplayFatalError("Error reading from ICS", error, 1);\r
+       DisplayFatalError(_("Error reading from ICS"), error, 1);\r
     }\r
 }\r
 \r
@@ -3238,8 +3286,8 @@ ParseBoard12(string)
      char *string;\r
 { \r
     GameMode newGameMode;\r
-    int gamenum, newGame, newMove, relation, basetime, increment, ics_flip = 0;\r
-    int j, k, n, moveNum, white_stren, black_stren, white_time, black_time;\r
+    int gamenum, newGame, newMove, relation, basetime, increment, ics_flip = 0, i;\r
+    int j, k, n, moveNum, white_stren, black_stren, white_time, black_time, takeback;\r
     int double_push, castle_ws, castle_wl, castle_bs, castle_bl, irrev_count;\r
     char to_play, board_chars[200];\r
     char move_str[500], str[500], elapsed_time[500];\r
@@ -3258,7 +3306,7 @@ ParseBoard12(string)
     newGame = FALSE;\r
 \r
     if (appData.debugMode)\r
-      fprintf(debugFP, "Parsing board: %s\n", string);\r
+      fprintf(debugFP, _("Parsing board: %s\n"), string);\r
 \r
     move_str[0] = NULLCHAR;\r
     elapsed_time[0] = NULLCHAR;\r
@@ -3281,7 +3329,7 @@ ParseBoard12(string)
               &ticking);\r
 \r
     if (n < 21) {\r
-       sprintf(str, "Failed to parse board string:\n\"%s\"", string);\r
+       sprintf(str, _("Failed to parse board string:\n\"%s\""), string);\r
        DisplayError(str, 0);\r
        return;\r
     }\r
@@ -3290,7 +3338,7 @@ ParseBoard12(string)
     moveNum = (moveNum - 1) * 2;\r
     if (to_play == 'B') moveNum++;\r
     if (moveNum >= MAX_MOVES) {\r
-      DisplayFatalError("Game too long; increase MAX_MOVES and recompile",\r
+      DisplayFatalError(_("Game too long; increase MAX_MOVES and recompile"),\r
                        0, 1);\r
       return;\r
     }\r
@@ -3352,7 +3400,7 @@ ParseBoard12(string)
        return;\r
       case H_GETTING_MOVES:\r
        /* Should not happen */\r
-       DisplayError("Error gathering move list: extra board", 0);\r
+       DisplayError(_("Error gathering move list: extra board"), 0);\r
        ics_getting_history = H_FALSE;\r
        return;\r
     }\r
@@ -3553,6 +3601,16 @@ ParseBoard12(string)
     \r
     /* Update currentMove and known move number limits */\r
     newMove = newGame || moveNum > forwardMostMove;\r
+\r
+    /* [DM] If we found takebacks during icsEngineAnalyze try send to engine */\r
+    if (!newGame && appData.icsEngineAnalyze && moveNum < forwardMostMove) {\r
+        takeback = forwardMostMove - moveNum;\r
+        for (i = 0; i < takeback; i++) {\r
+             if (appData.debugMode) fprintf(debugFP, "take back move\n");\r
+             SendToProgram("undo\n", &first);\r
+        }\r
+    }\r
+\r
     if (newGame) {\r
        forwardMostMove = backwardMostMove = currentMove = moveNum;\r
        if (gameMode == IcsExamining && moveNum == 0) {\r
@@ -3708,7 +3766,7 @@ ParseBoard12(string)
            if ((gameMode == IcsPlayingWhite && WhiteOnMove(moveNum)) ||\r
                (gameMode == IcsPlayingBlack && !WhiteOnMove(moveNum))) {\r
                if (moveList[moveNum - 1][0] == NULLCHAR) {\r
-                   sprintf(str, "Couldn't parse move \"%s\" from ICS",\r
+                   sprintf(str, _("Couldn't parse move \"%s\" from ICS"),\r
                            move_str);\r
                    DisplayError(str, 0);\r
                } else {\r
@@ -3730,7 +3788,7 @@ ParseBoard12(string)
                }\r
            } else if (gameMode == IcsObserving || gameMode == IcsExamining) {\r
              if (moveList[moveNum - 1][0] == NULLCHAR) {\r
-               sprintf(str, "Couldn't parse move \"%s\" from ICS", move_str);\r
+               sprintf(str, _("Couldn't parse move \"%s\" from ICS"), move_str);\r
                DisplayError(str, 0);\r
              } else {\r
                if(gameInfo.variant == currentlyInitializedVariant) // [HGM] refrain sending moves engine can't understand!\r
@@ -3932,7 +3990,7 @@ SendMoveToICS(moveType, fromX, fromY, toX, toY)
 \r
     switch (moveType) {\r
       default:\r
-       sprintf(user_move, "say Internal error; bad moveType %d (%d,%d-%d,%d)",\r
+       sprintf(user_move, _("say Internal error; bad moveType %d (%d,%d-%d,%d)"),\r
                (int)moveType, fromX, fromY, toX, toY);\r
        DisplayError(user_move + strlen("say "), 0);\r
        break;\r
@@ -4668,7 +4726,7 @@ InitPosition(redraw)
     }\r
     if(gameInfo.holdingsSize) gameInfo.holdingsWidth = 2;\r
     if(BOARD_HEIGHT > BOARD_SIZE || BOARD_WIDTH > BOARD_SIZE)\r
-        DisplayFatalError("Recompile to support this BOARD_SIZE!", 0, 2);\r
+        DisplayFatalError(_("Recompile to support this BOARD_SIZE!"), 0, 2);\r
 \r
     pawnRow = gameInfo.boardHeight - 7; /* seems to work in all common variants */\r
     if(pawnRow < 1) pawnRow = 1;\r
@@ -4934,7 +4992,7 @@ OKToStartUserMove(x, y)
       case IcsPlayingBlack:\r
        if (appData.zippyPlay) return FALSE;\r
        if (white_piece) {\r
-           DisplayMoveError("You are playing Black");\r
+           DisplayMoveError(_("You are playing Black"));\r
            return FALSE;\r
        }\r
        break;\r
@@ -4943,18 +5001,18 @@ OKToStartUserMove(x, y)
       case IcsPlayingWhite:\r
        if (appData.zippyPlay) return FALSE;\r
        if (!white_piece) {\r
-           DisplayMoveError("You are playing White");\r
+           DisplayMoveError(_("You are playing White"));\r
            return FALSE;\r
        }\r
        break;\r
 \r
       case EditGame:\r
        if (!white_piece && WhiteOnMove(currentMove)) {\r
-           DisplayMoveError("It is White's turn");\r
+           DisplayMoveError(_("It is White's turn"));\r
            return FALSE;\r
        }           \r
        if (white_piece && !WhiteOnMove(currentMove)) {\r
-           DisplayMoveError("It is Black's turn");\r
+           DisplayMoveError(_("It is Black's turn"));\r
            return FALSE;\r
        }           \r
        if (cmailMsgLoaded && (currentMove < cmailOldMove)) {\r
@@ -4974,7 +5032,7 @@ OKToStartUserMove(x, y)
        if (appData.icsActive) return FALSE;\r
        if (!appData.noChessProgram) {\r
            if (!white_piece) {\r
-               DisplayMoveError("You are playing White");\r
+               DisplayMoveError(_("You are playing White"));\r
                return FALSE;\r
            }\r
        }\r
@@ -4982,11 +5040,11 @@ OKToStartUserMove(x, y)
        \r
       case Training:\r
        if (!white_piece && WhiteOnMove(currentMove)) {\r
-           DisplayMoveError("It is White's turn");\r
+           DisplayMoveError(_("It is White's turn"));\r
            return FALSE;\r
        }           \r
        if (white_piece && !WhiteOnMove(currentMove)) {\r
-           DisplayMoveError("It is Black's turn");\r
+           DisplayMoveError(_("It is Black's turn"));\r
            return FALSE;\r
        }           \r
        break;\r
@@ -4997,7 +5055,7 @@ OKToStartUserMove(x, y)
     }\r
     if (currentMove != forwardMostMove && gameMode != AnalyzeMode\r
        && gameMode != AnalyzeFile && gameMode != Training) {\r
-       DisplayMoveError("Displayed position is not current");\r
+       DisplayMoveError(_("Displayed position is not current"));\r
        return FALSE;\r
     }\r
     return TRUE;\r
@@ -5067,7 +5125,7 @@ UserMoveTest(fromX, fromY, toX, toY, promoChar)
       case MachinePlaysWhite:\r
        /* User is moving for Black */\r
        if (WhiteOnMove(currentMove)) {\r
-           DisplayMoveError("It is White's turn");\r
+           DisplayMoveError(_("It is White's turn"));\r
             return ImpossibleMove;\r
        }\r
        break;\r
@@ -5075,7 +5133,7 @@ UserMoveTest(fromX, fromY, toX, toY, promoChar)
       case MachinePlaysBlack:\r
        /* User is moving for White */\r
        if (!WhiteOnMove(currentMove)) {\r
-           DisplayMoveError("It is Black's turn");\r
+           DisplayMoveError(_("It is Black's turn"));\r
             return ImpossibleMove;\r
        }\r
        break;\r
@@ -5089,13 +5147,13 @@ UserMoveTest(fromX, fromY, toX, toY, promoChar)
             (int) boards[currentMove][fromY][fromX] < (int) EmptySquare) {\r
            /* User is moving for Black */\r
            if (WhiteOnMove(currentMove)) {\r
-               DisplayMoveError("It is White's turn");\r
+               DisplayMoveError(_("It is White's turn"));\r
                 return ImpossibleMove;\r
            }\r
        } else {\r
            /* User is moving for White */\r
            if (!WhiteOnMove(currentMove)) {\r
-               DisplayMoveError("It is Black's turn");\r
+               DisplayMoveError(_("It is Black's turn"));\r
                 return ImpossibleMove;\r
            }\r
        }\r
@@ -5105,7 +5163,7 @@ UserMoveTest(fromX, fromY, toX, toY, promoChar)
        /* User is moving for Black */\r
        if (WhiteOnMove(currentMove)) {\r
            if (!appData.premove) {\r
-               DisplayMoveError("It is White's turn");\r
+               DisplayMoveError(_("It is White's turn"));\r
            } else if (toX >= 0 && toY >= 0) {\r
                premoveToX = toX;\r
                premoveToY = toY;\r
@@ -5126,7 +5184,7 @@ UserMoveTest(fromX, fromY, toX, toY, promoChar)
        /* User is moving for White */\r
        if (!WhiteOnMove(currentMove)) {\r
            if (!appData.premove) {\r
-               DisplayMoveError("It is Black's turn");\r
+               DisplayMoveError(_("It is Black's turn"));\r
            } else if (toX >= 0 && toY >= 0) {\r
                premoveToX = toX;\r
                premoveToY = toY;\r
@@ -5185,7 +5243,7 @@ UserMoveTest(fromX, fromY, toX, toY, promoChar)
     /* [HGM] but possibly ignore an IllegalMove result */\r
     if (appData.testLegality) {\r
        if (moveType == IllegalMove || moveType == ImpossibleMove) {\r
-           DisplayMoveError("Illegal move");\r
+           DisplayMoveError(_("Illegal move"));\r
             return ImpossibleMove;\r
        }\r
     }\r
@@ -5262,10 +5320,10 @@ if(appData.debugMode) fprintf(debugFP, "moveType 1 = %d, promochar = %x\n", move
          gameMode = PlayFromGameFile;\r
          ModeHighlight();\r
          SetTrainingModeOff();\r
-         DisplayInformation("End of game");\r
+         DisplayInformation(_("End of game"));\r
        }\r
       } else {\r
-       DisplayError("Incorrect move", 0);\r
+       DisplayError(_("Incorrect move"), 0);\r
       }\r
       return 1;\r
     }\r
@@ -5602,7 +5660,7 @@ FakeBookMove: // [HGM] book: we jump here to simulate machine moves after book h
         if (!ParseOneMove(machineMove, forwardMostMove, &moveType,\r
                               &fromX, &fromY, &toX, &toY, &promoChar)) {\r
            /* Machine move could not be parsed; ignore it. */\r
-            sprintf(buf1, "Illegal move \"%s\" from %s machine",\r
+            sprintf(buf1, _("Illegal move \"%s\" from %s machine"),\r
                    machineMove, cps->which);\r
            DisplayError(buf1, 0);\r
             sprintf(buf1, "Xboard: Forfeit due to invalid move: %s (%c%c%c%c) res=%d%c",\r
@@ -5666,7 +5724,7 @@ FakeBookMove: // [HGM] book: we jump here to simulate machine moves after book h
            first.initDone) {\r
          SendMoveToICS(moveType, fromX, fromY, toX, toY);\r
          ics_user_moved = 1;\r
-         if(appData.autoKibitz) { /* [HGM] kibitz: send most-recent PV info to ICS */\r
+         if(appData.autoKibitz && !appData.icsEngineAnalyze ) { /* [HGM] kibitz: send most-recent PV info to ICS */\r
                char buf[3*MSG_SIZ];\r
 \r
                sprintf(buf, "kibitz %d/%+.2f (%.2f sec, %.0f nodes, %1.0f knps) PV = %s\n",\r
@@ -6084,7 +6142,7 @@ FakeBookMove: // [HGM] book: we jump here to simulate machine moves after book h
         GameEnds(GameUnfinished, "Engine aborts game", GE_XBOARD);\r
 \r
         if (!ParseFEN(initial_position, &blackPlaysFirst, message + 9)) {\r
-            DisplayError("Bad FEN received from engine", 0);\r
+            DisplayError(_("Bad FEN received from engine"), 0);\r
             return ;\r
         } else {\r
            Reset(FALSE, FALSE);\r
@@ -6226,7 +6284,7 @@ FakeBookMove: // [HGM] book: we jump here to simulate machine moves after book h
            cps->analysisSupport = FALSE;\r
            cps->analyzing = FALSE;\r
            Reset(FALSE, TRUE);\r
-           sprintf(buf2, "%s does not support analysis", cps->tidy);\r
+           sprintf(buf2, _("%s does not support analysis"), cps->tidy);\r
            DisplayError(buf2, 0);\r
            return;\r
        }\r
@@ -6272,7 +6330,7 @@ FakeBookMove: // [HGM] book: we jump here to simulate machine moves after book h
        DisplayMove(currentMove-1); /* before DisplayMoveError */\r
        SwitchClocks();\r
        DisplayBothClocks();\r
-       sprintf(buf1, "Illegal move \"%s\" (rejected by %s chess program)",\r
+       sprintf(buf1, _("Illegal move \"%s\" (rejected by %s chess program)"),\r
                parseList[currentMove], cps->which);\r
        DisplayMoveError(buf1);\r
        DrawPosition(FALSE, boards[currentMove]);\r
@@ -6304,7 +6362,7 @@ FakeBookMove: // [HGM] book: we jump here to simulate machine moves after book h
        || (StrStr(message, "Permission denied") != NULL)) {\r
 \r
        cps->maybeThinking = FALSE;\r
-       sprintf(buf1, "Failed to start %s chess program %s on %s: %s\n",\r
+       sprintf(buf1, _("Failed to start %s chess program %s on %s: %s\n"),\r
                cps->which, cps->program, cps->host, message);\r
        RemoveInputSource(cps->isr);\r
        DisplayFatalError(buf1, 0, 1);\r
@@ -6322,12 +6380,12 @@ FakeBookMove: // [HGM] book: we jump here to simulate machine moves after book h
                (void) CoordsToAlgebraic(boards[forwardMostMove],\r
                                    PosFlags(forwardMostMove), EP_UNKNOWN,\r
                                    fromY, fromX, toY, toX, promoChar, buf1);\r
-               sprintf(buf2, "Hint: %s", buf1);\r
+               sprintf(buf2, _("Hint: %s"), buf1);\r
                DisplayInformation(buf2);\r
            } else {\r
                /* Hint move could not be parsed!? */\r
                sprintf(buf2,\r
-                       "Illegal hint move \"%s\"\nfrom %s chess program",\r
+                       _("Illegal hint move \"%s\"\nfrom %s chess program"),\r
                        buf1, cps->which);\r
                DisplayError(buf2, 0);\r
            }\r
@@ -6509,10 +6567,10 @@ FakeBookMove: // [HGM] book: we jump here to simulate machine moves after book h
        } else if (gameMode == MachinePlaysWhite ||\r
                   gameMode == MachinePlaysBlack) {\r
          if (userOfferedDraw) {\r
-           DisplayInformation("Machine accepts your draw offer");\r
+           DisplayInformation(_("Machine accepts your draw offer"));\r
            GameEnds(GameIsDrawn, "Draw agreed", GE_XBOARD);\r
          } else {\r
-            DisplayInformation("Machine offers a draw\nSelect Action / Draw to agree");\r
+            DisplayInformation(_("Machine offers a draw\nSelect Action / Draw to agree"));\r
          }\r
        }\r
     }\r
@@ -6526,7 +6584,7 @@ FakeBookMove: // [HGM] book: we jump here to simulate machine moves after book h
                                ) {\r
        int plylev, mvleft, mvtot, curscore, time;\r
        char mvname[MOVE_LEN];\r
-       unsigned long nodes;\r
+       u64 nodes; // [DM]\r
        char plyext;\r
        int ignore = FALSE;\r
        int prefixHint = FALSE;\r
@@ -6543,6 +6601,9 @@ FakeBookMove: // [HGM] book: we jump here to simulate machine moves after book h
            break;\r
          case AnalyzeMode:\r
          case AnalyzeFile:\r
+            break;\r
+          case IcsObserving: /* [DM] icsEngineAnalyze */\r
+            if (!appData.icsEngineAnalyze) ignore = TRUE;\r
            break;\r
          case TwoMachinesPlay:\r
            if ((cps->twoMachinesColor[0] == 'w') != WhiteOnMove(forwardMostMove)) {\r
@@ -6556,7 +6617,7 @@ FakeBookMove: // [HGM] book: we jump here to simulate machine moves after book h
 \r
        if (!ignore) {\r
            buf1[0] = NULLCHAR;\r
-           if (sscanf(message, "%d%c %d %d %lu %[^\n]\n",\r
+           if (sscanf(message, "%d%c %d %d " u64Display " %[^\n]\n",\r
                       &plylev, &plyext, &curscore, &time, &nodes, buf1) >= 5) {\r
 \r
                if (plyext != ' ' && plyext != '\t') {\r
@@ -6640,7 +6701,8 @@ FakeBookMove: // [HGM] book: we jump here to simulate machine moves after book h
                     strcat( thinkOutput, buf1 );\r
                 }\r
 \r
-               if (currentMove == forwardMostMove || gameMode == AnalyzeMode || gameMode == AnalyzeFile) {\r
+                if (currentMove == forwardMostMove || gameMode == AnalyzeMode\r
+                        || gameMode == AnalyzeFile || appData.icsEngineAnalyze) {\r
                    DisplayMove(currentMove - 1);\r
                    DisplayAnalysis();\r
                }\r
@@ -6667,12 +6729,13 @@ FakeBookMove: // [HGM] book: we jump here to simulate machine moves after book h
 \r
                 SendProgramStatsToFrontend( cps, &programStats );\r
                 \r
-               if (currentMove == forwardMostMove || gameMode==AnalyzeMode || gameMode == AnalyzeFile) {\r
+               if (currentMove == forwardMostMove || gameMode==AnalyzeMode || \r
+                           gameMode == AnalyzeFile || appData.icsEngineAnalyze) {\r
                    DisplayMove(currentMove - 1);\r
                    DisplayAnalysis();\r
                }\r
                return;\r
-           } else if (sscanf(message,"stat01: %d %lu %d %d %d %s",\r
+           } else if (sscanf(message,"stat01: %d " u64Display " %d %d %d %s",\r
                              &time, &nodes, &plylev, &mvleft,\r
                              &mvtot, mvname) >= 5) {\r
                /* The stat01: line is from Crafty (9.29+) in response\r
@@ -6727,7 +6790,8 @@ FakeBookMove: // [HGM] book: we jump here to simulate machine moves after book h
                    strcat(programStats.movelist, p);\r
                 }\r
 \r
-               if (currentMove == forwardMostMove || gameMode==AnalyzeMode || gameMode == AnalyzeFile) {\r
+               if (currentMove == forwardMostMove || gameMode==AnalyzeMode ||\r
+                           gameMode == AnalyzeFile || appData.icsEngineAnalyze) {\r
                    DisplayMove(currentMove - 1);\r
                    DisplayAnalysis();\r
                }\r
@@ -6871,7 +6935,7 @@ ParseGameHistory(game)
            break;\r
          case AmbiguousMove:\r
            /* bug? */\r
-           sprintf(buf, "Ambiguous move in ICS output: \"%s\"", yy_text);\r
+           sprintf(buf, _("Ambiguous move in ICS output: \"%s\""), yy_text);\r
   if (appData.debugMode) {\r
     fprintf(debugFP, "Ambiguous move from ICS: '%s'\n", yy_text);\r
     fprintf(debugFP, "board L=%d, R=%d, H=%d, holdings=%d\n", BOARD_LEFT, BOARD_RGHT, BOARD_HEIGHT, gameInfo.holdingsWidth);\r
@@ -6881,7 +6945,7 @@ ParseGameHistory(game)
            return;\r
          case ImpossibleMove:\r
            /* bug? */\r
-           sprintf(buf, "Illegal move in ICS output: \"%s\"", yy_text);\r
+           sprintf(buf, _("Illegal move in ICS output: \"%s\""), yy_text);\r
   if (appData.debugMode) {\r
     fprintf(debugFP, "Impossible move from ICS: '%s'\n", yy_text);\r
     fprintf(debugFP, "board L=%d, R=%d, H=%d, holdings=%d\n", BOARD_LEFT, BOARD_RGHT, BOARD_HEIGHT, gameInfo.holdingsWidth);\r
@@ -6892,7 +6956,7 @@ ParseGameHistory(game)
          case (ChessMove) 0:   /* end of file */\r
            if (boardIndex < backwardMostMove) {\r
                /* Oops, gap.  How did that happen? */\r
-               DisplayError("Gap in move list", 0);\r
+               DisplayError(_("Gap in move list"), 0);\r
                return;\r
            }\r
            backwardMostMove =  blackPlaysFirst ? 1 : 0;\r
@@ -7312,7 +7376,7 @@ MakeMove(fromX, fromY, toX, toY, promoChar)
     }\r
 \r
     if (forwardMostMove >= MAX_MOVES) {\r
-      DisplayFatalError("Game too long; increase MAX_MOVES and recompile",\r
+      DisplayFatalError(_("Game too long; increase MAX_MOVES and recompile"),\r
                        0, 1);\r
       return;\r
     }\r
@@ -7363,6 +7427,7 @@ ShowMove(fromX, fromY, toX, toY)
 {\r
     int instant = (gameMode == PlayFromGameFile) ?\r
        (matchMode || (appData.timeDelay == 0 && !pausing)) : pausing;\r
+    if(appData.noGUI) return;\r
     if (!pausing || gameMode == PlayFromGameFile || gameMode == AnalyzeFile) {\r
        if (!instant) {\r
            if (forwardMostMove == currentMove + 1) {\r
@@ -7448,7 +7513,7 @@ InitChessProgram(cps, setup)
       char *v = VariantName(gameInfo.variant);\r
       if (cps->protocolVersion != 1 && StrStr(cps->variants, v) == NULL) {\r
         /* [HGM] in protocol 1 we have to assume all variants valid */\r
-       sprintf(buf, "Variant %s not supported by %s", v, cps->tidy);\r
+       sprintf(buf, _("Variant %s not supported by %s"), v, cps->tidy);\r
        DisplayFatalError(buf, 0, 1);\r
        return;\r
       }\r
@@ -7560,7 +7625,7 @@ StartChessProgram(cps)
     }\r
     \r
     if (err != 0) {\r
-       sprintf(buf, "Startup failure on '%s'", cps->program);\r
+       sprintf(buf, _("Startup failure on '%s'"), cps->program);\r
        DisplayFatalError(buf, err, 1);\r
        cps->pr = NoProc;\r
        cps->isr = NULL;\r
@@ -7583,13 +7648,13 @@ void
 TwoMachinesEventIfReady P((void))\r
 {\r
   if (first.lastPing != first.lastPong) {\r
-    DisplayMessage("", "Waiting for first chess program");\r
-    ScheduleDelayedEvent(TwoMachinesEventIfReady, 1000);\r
+    DisplayMessage("", _("Waiting for first chess program"));\r
+    ScheduleDelayedEvent(TwoMachinesEventIfReady, 10); // [HGM] fast: lowered from 1000\r
     return;\r
   }\r
   if (second.lastPing != second.lastPong) {\r
-    DisplayMessage("", "Waiting for second chess program");\r
-    ScheduleDelayedEvent(TwoMachinesEventIfReady, 1000);\r
+    DisplayMessage("", _("Waiting for second chess program"));\r
+    ScheduleDelayedEvent(TwoMachinesEventIfReady, 10); // [HGM] fast: lowered from 1000\r
     return;\r
   }\r
   ThawUI();\r
@@ -7962,7 +8027,7 @@ GameEnds(result, resultDetails, whosays)
        } else {\r
            char buf[MSG_SIZ];\r
            gameMode = nextGameMode;\r
-           sprintf(buf, "Match %s vs. %s: final score %d-%d-%d",\r
+           sprintf(buf, _("Match %s vs. %s: final score %d-%d-%d"),\r
                    first.tidy, second.tidy,\r
                    first.matchWins, second.matchWins,\r
                    appData.matchGames - (first.matchWins + second.matchWins));\r
@@ -8031,8 +8096,8 @@ ResurrectChessProgram()
        timeRemaining[1][currentMove] = blackTimeRemaining;\r
     }\r
 \r
-    if ((gameMode == AnalyzeMode || gameMode == AnalyzeFile) &&\r
-       first.analysisSupport) {\r
+    if ((gameMode == AnalyzeMode || gameMode == AnalyzeFile ||\r
+                appData.icsEngineAnalyze) && first.analysisSupport) {\r
       SendToProgram("analyze\n", &first);\r
       first.analyzing = TRUE;\r
     }\r
@@ -8376,7 +8441,7 @@ LoadGameOneMove(readAhead)
        if (appData.testLegality) {\r
            if (appData.debugMode)\r
              fprintf(debugFP, "Parsed IllegalMove: %s\n", yy_text);\r
-           sprintf(move, "Illegal move: %d.%s%s",\r
+           sprintf(move, _("Illegal move: %d.%s%s"),\r
                    (forwardMostMove / 2) + 1,\r
                    WhiteOnMove(forwardMostMove) ? " " : ".. ", yy_text);\r
            DisplayError(move, 0);\r
@@ -8396,7 +8461,7 @@ LoadGameOneMove(readAhead)
       case AmbiguousMove:\r
        if (appData.debugMode)\r
          fprintf(debugFP, "Parsed AmbiguousMove: %s\n", yy_text);\r
-       sprintf(move, "Ambiguous move: %d.%s%s",\r
+       sprintf(move, _("Ambiguous move: %d.%s%s"),\r
                (forwardMostMove / 2) + 1,\r
                WhiteOnMove(forwardMostMove) ? " " : ".. ", yy_text);\r
        DisplayError(move, 0);\r
@@ -8407,7 +8472,7 @@ LoadGameOneMove(readAhead)
       case ImpossibleMove:\r
        if (appData.debugMode)\r
          fprintf(debugFP, "Parsed ImpossibleMove (type = %d): %s\n", moveType, yy_text);\r
-       sprintf(move, "Illegal move: %d.%s%s",\r
+       sprintf(move, _("Illegal move: %d.%s%s"),\r
                (forwardMostMove / 2) + 1,\r
                WhiteOnMove(forwardMostMove) ? " " : ".. ", yy_text);\r
        DisplayError(move, 0);\r
@@ -8455,7 +8520,7 @@ LoadGameFromFile(filename, n, title, useList)
     } else {\r
        f = fopen(filename, "rb");\r
        if (f == NULL) {\r
-           sprintf(buf, "Can't open \"%s\"", filename);\r
+           sprintf(buf, _("Can't open \"%s\""), filename);\r
            DisplayError(buf, errno);\r
            return FALSE;\r
        }\r
@@ -8467,7 +8532,7 @@ LoadGameFromFile(filename, n, title, useList)
     if (useList && n == 0) {\r
        int error = GameListBuild(f);\r
        if (error) {\r
-           DisplayError("Cannot build game list", error);\r
+           DisplayError(_("Cannot build game list"), error);\r
        } else if (!ListEmpty(&gameList) &&\r
                   ((ListGame *) gameList.tailPred)->number > 1) {\r
            GameListPopUp(f, title);\r
@@ -8556,7 +8621,7 @@ CmailLoadGame(f, gameNumber, title, useList)
     int retVal;\r
 \r
     if (gameNumber > nCmailGames) {\r
-       DisplayError("No more games in this message", 0);\r
+       DisplayError(_("No more games in this message"), 0);\r
        return FALSE;\r
     }\r
     if (f == lastLoadGameFP) {\r
@@ -8597,11 +8662,11 @@ ReloadGame(offset)
 {\r
     int gameNumber = lastLoadGameNumber + offset;\r
     if (lastLoadGameFP == NULL) {\r
-       DisplayError("No game has been loaded yet", 0);\r
+       DisplayError(_("No game has been loaded yet"), 0);\r
        return FALSE;\r
     }\r
     if (gameNumber <= 0) {\r
-       DisplayError("Can't back up any further", 0);\r
+       DisplayError(_("Can't back up any further"), 0);\r
        return FALSE;\r
     }\r
     if (cmailMsgLoaded) {\r
@@ -8657,7 +8722,7 @@ LoadGame(f, gameNumber, title, useList)
            gn = 1;\r
        }\r
        else {\r
-           DisplayError("Game number out of range", 0);\r
+           DisplayError(_("Game number out of range"), 0);\r
            return FALSE;\r
        }\r
     } else {\r
@@ -8668,7 +8733,7 @@ LoadGame(f, gameNumber, title, useList)
                gameNumber == 1) {\r
                gn = 1;\r
            } else {\r
-               DisplayError("Can't seek on game file", 0);\r
+               DisplayError(_("Can't seek on game file"), 0);\r
                return FALSE;\r
            }\r
        }\r
@@ -8726,7 +8791,7 @@ LoadGame(f, gameNumber, title, useList)
                nCmailGames = CMAIL_MAX_GAMES - gn;\r
            } else {\r
                Reset(TRUE, TRUE);\r
-               DisplayError("Game not found in file", 0);\r
+               DisplayError(_("Game not found in file"), 0);\r
            }\r
            return FALSE;\r
 \r
@@ -8853,7 +8918,7 @@ LoadGame(f, gameNumber, title, useList)
          startedFromSetupPosition = TRUE;\r
          if (!ParseFEN(initial_position, &blackPlaysFirst, gameInfo.fen)) {\r
            Reset(TRUE, TRUE);\r
-           DisplayError("Bad FEN position in file", 0);\r
+           DisplayError(_("Bad FEN position in file"), 0);\r
            return FALSE;\r
          }\r
          CopyBoard(boards[0], initial_position);\r
@@ -9011,7 +9076,7 @@ LoadGame(f, gameNumber, title, useList)
     if ((cm == (ChessMove) 0 && lastLoadGameStart != (ChessMove) 0) ||\r
        cm == WhiteWins || cm == BlackWins ||\r
        cm == GameIsDrawn || cm == GameUnfinished) {\r
-       DisplayMessage("", "No moves in game");\r
+       DisplayMessage("", _("No moves in game"));\r
        if (cmailMsgLoaded) {\r
            if (appData.debugMode)\r
              fprintf(debugFP, "Setting flipView to %d.\n", FALSE);\r
@@ -9082,11 +9147,11 @@ ReloadPosition(offset)
 {\r
     int positionNumber = lastLoadPositionNumber + offset;\r
     if (lastLoadPositionFP == NULL) {\r
-       DisplayError("No position has been loaded yet", 0);\r
+       DisplayError(_("No position has been loaded yet"), 0);\r
        return FALSE;\r
     }\r
     if (positionNumber <= 0) {\r
-       DisplayError("Can't back up any further", 0);\r
+       DisplayError(_("Can't back up any further"), 0);\r
        return FALSE;\r
     }\r
     return LoadPosition(lastLoadPositionFP, positionNumber,\r
@@ -9108,7 +9173,7 @@ LoadPositionFromFile(filename, n, title)
     } else {\r
        f = fopen(filename, "rb");\r
        if (f == NULL) {\r
-           sprintf(buf, "Can't open \"%s\"", filename);\r
+           sprintf(buf, _("Can't open \"%s\""), filename);\r
            DisplayError(buf, errno);\r
            return FALSE;\r
        } else {\r
@@ -9149,7 +9214,7 @@ LoadPosition(f, positionNumber, title)
     if (positionNumber < 0) {\r
        /* Negative position number means to seek to that byte offset */\r
        if (fseek(f, -positionNumber, 0) == -1) {\r
-           DisplayError("Can't seek on position file", 0);\r
+           DisplayError(_("Can't seek on position file"), 0);\r
            return FALSE;\r
        };\r
        pn = 1;\r
@@ -9160,14 +9225,14 @@ LoadPosition(f, positionNumber, title)
                positionNumber == 1) {\r
                pn = 1;\r
            } else {\r
-               DisplayError("Can't seek on position file", 0);\r
+               DisplayError(_("Can't seek on position file"), 0);\r
                return FALSE;\r
            }\r
        }\r
     }\r
     /* See if this file is FEN or old-style xboard */\r
     if (fgets(line, MSG_SIZ, f) == NULL) {\r
-       DisplayError("Position not found in file", 0);\r
+       DisplayError(_("Position not found in file"), 0);\r
        return FALSE;\r
     }\r
 #if 0\r
@@ -9197,7 +9262,7 @@ LoadPosition(f, positionNumber, title)
            /* skip positions before number pn */\r
            if (fgets(line, MSG_SIZ, f) == NULL) {\r
                Reset(TRUE, TRUE);\r
-               DisplayError("Position not found in file", 0);\r
+               DisplayError(_("Position not found in file"), 0);\r
                return FALSE;\r
            }\r
            if (fenMode || line[0] == '#') pn--;\r
@@ -9206,7 +9271,7 @@ LoadPosition(f, positionNumber, title)
 \r
     if (fenMode) {\r
        if (!ParseFEN(initial_position, &blackPlaysFirst, line)) {\r
-           DisplayError("Bad FEN position in file", 0);\r
+           DisplayError(_("Bad FEN position in file"), 0);\r
            return FALSE;\r
        }\r
     } else {\r
@@ -9238,10 +9303,10 @@ LoadPosition(f, positionNumber, title)
        strcpy(moveList[0], "");\r
        strcpy(parseList[0], "");\r
        CopyBoard(boards[1], initial_position);\r
-       DisplayMessage("", "Black to play");\r
+       DisplayMessage("", _("Black to play"));\r
     } else {\r
        currentMove = forwardMostMove = backwardMostMove = 0;\r
-       DisplayMessage("", "White to play");\r
+       DisplayMessage("", _("White to play"));\r
     }\r
           /* [HGM] copy FEN attributes as well */\r
           {   int i;\r
@@ -9322,7 +9387,7 @@ SaveGameToFile(filename, append)
     } else {\r
        f = fopen(filename, append ? "a" : "w");\r
        if (f == NULL) {\r
-           sprintf(buf, "Can't open \"%s\"", filename);\r
+           sprintf(buf, _("Can't open \"%s\""), filename);\r
            DisplayError(buf, errno);\r
            return FALSE;\r
        } else {\r
@@ -9693,7 +9758,7 @@ SavePositionToFile(filename)
     } else {\r
        f = fopen(filename, "a");\r
        if (f == NULL) {\r
-           sprintf(buf, "Can't open \"%s\"", filename);\r
+           sprintf(buf, _("Can't open \"%s\""), filename);\r
            DisplayError(buf, errno);\r
            return FALSE;\r
        } else {\r
@@ -9823,17 +9888,17 @@ RegisterMove()
     }\r
 \r
     if (cmailOldMove == -1) {\r
-       DisplayError("You have edited the game history.\nUse Reload Same Game and make your move again.", 0);\r
+       DisplayError(_("You have edited the game history.\nUse Reload Same Game and make your move again."), 0);\r
        return FALSE;\r
     }\r
 \r
     if (currentMove > cmailOldMove + 1) {\r
-       DisplayError("You have entered too many moves.\nBack up to the correct position and try again.", 0);\r
+       DisplayError(_("You have entered too many moves.\nBack up to the correct position and try again."), 0);\r
        return FALSE;\r
     }\r
 \r
     if (currentMove < cmailOldMove) {\r
-       DisplayError("Displayed position is not current.\nStep forward to the correct position and try again.", 0);\r
+       DisplayError(_("Displayed position is not current.\nStep forward to the correct position and try again."), 0);\r
        return FALSE;\r
     }\r
 \r
@@ -9881,7 +9946,7 @@ RegisterMove()
        cmailMoveRegistered[lastLoadGameNumber - 1] = TRUE;\r
        nCmailMovesRegistered ++;\r
     } else if (nCmailGames == 1) {\r
-       DisplayError("You have not made a move yet", 0);\r
+       DisplayError(_("You have not made a move yet"), 0);\r
        return FALSE;\r
     }\r
 \r
@@ -9902,18 +9967,18 @@ MailMoveEvent()
     char *arcDir;\r
 \r
     if (! cmailMsgLoaded) {\r
-       DisplayError("The cmail message is not loaded.\nUse Reload CMail Message and make your move again.", 0);\r
+       DisplayError(_("The cmail message is not loaded.\nUse Reload CMail Message and make your move again."), 0);\r
        return;\r
     }\r
 \r
     if (nCmailGames == nCmailResults) {\r
-       DisplayError("No unfinished games", 0);\r
+       DisplayError(_("No unfinished games"), 0);\r
        return;\r
     }\r
 \r
 #if CMAIL_PROHIBIT_REMAIL\r
     if (cmailMailedMove) {\r
-       sprintf(msg, "You have already mailed a move.\nWait until a move arrives from your opponent.\nTo resend the same move, type\n\"cmail -remail -game %s\"\non the command line.", appData.cmailGameName);\r
+       sprintf(msg, _("You have already mailed a move.\nWait until a move arrives from your opponent.\nTo resend the same move, type\n\"cmail -remail -game %s\"\non the command line."), appData.cmailGameName);\r
        DisplayError(msg, 0);\r
        return;\r
     }\r
@@ -9925,10 +9990,10 @@ MailMoveEvent()
        || (nCmailMovesRegistered + nCmailResults == nCmailGames)) {\r
        sprintf(string, partCommandString,\r
                appData.debugMode ? " -v" : "", appData.cmailGameName);\r
-       commandOutput = popen(string, "rb");\r
+       commandOutput = popen(string, "r");\r
 \r
        if (commandOutput == NULL) {\r
-           DisplayError("Failed to invoke cmail", 0);\r
+           DisplayError(_("Failed to invoke cmail"), 0);\r
        } else {\r
            for (nBuffers = 0; (! feof(commandOutput)); nBuffers ++) {\r
                nBytes = fread(buffer, 1, MSG_SIZ - 1, commandOutput);\r
@@ -9990,7 +10055,7 @@ CmailMsg()
     if (!cmailMsgLoaded) return "";\r
 \r
     if (cmailMailedMove) {\r
-       sprintf(cmailMsg, "Waiting for reply from opponent\n");\r
+       sprintf(cmailMsg, _("Waiting for reply from opponent\n"));\r
     } else {\r
        /* Create a list of games left */\r
        sprintf(string, "[");\r
@@ -10013,17 +10078,17 @@ CmailMsg()
            switch (nCmailGames) {\r
              case 1:\r
                sprintf(cmailMsg,\r
-                       "Still need to make move for game\n");\r
+                       _("Still need to make move for game\n"));\r
                break;\r
                \r
              case 2:\r
                sprintf(cmailMsg,\r
-                       "Still need to make moves for both games\n");\r
+                       _("Still need to make moves for both games\n"));\r
                break;\r
                \r
              default:\r
                sprintf(cmailMsg,\r
-                       "Still need to make moves for all %d games\n",\r
+                       _("Still need to make moves for all %d games\n"),\r
                        nCmailGames);\r
                break;\r
            }\r
@@ -10031,21 +10096,21 @@ CmailMsg()
            switch (nCmailGames - nCmailMovesRegistered - nCmailResults) {\r
              case 1:\r
                sprintf(cmailMsg,\r
-                       "Still need to make a move for game %s\n",\r
+                       _("Still need to make a move for game %s\n"),\r
                        string);\r
                break;\r
                \r
              case 0:\r
                if (nCmailResults == nCmailGames) {\r
-                   sprintf(cmailMsg, "No unfinished games\n");\r
+                   sprintf(cmailMsg, _("No unfinished games\n"));\r
                } else {\r
-                   sprintf(cmailMsg, "Ready to send mail\n");\r
+                   sprintf(cmailMsg, _("Ready to send mail\n"));\r
                }\r
                break;\r
                \r
              default:\r
                sprintf(cmailMsg,\r
-                       "Still need to make moves for games %s\n",\r
+                       _("Still need to make moves for games %s\n"),\r
                        string);\r
            }\r
        }\r
@@ -10213,9 +10278,9 @@ EditCommentEvent()
     char title[MSG_SIZ];\r
 \r
     if (currentMove < 1 || parseList[currentMove - 1][0] == NULLCHAR) {\r
-       strcpy(title, "Edit comment");\r
+       strcpy(title, _("Edit comment"));\r
     } else {\r
-       sprintf(title, "Edit comment on %d.%s%s", (currentMove - 1) / 2 + 1,\r
+       sprintf(title, _("Edit comment on %d.%s%s"), (currentMove - 1) / 2 + 1,\r
                WhiteOnMove(currentMove - 1) ? " " : ".. ",\r
                parseList[currentMove - 1]);\r
     }\r
@@ -10239,17 +10304,19 @@ AnalyzeModeEvent()
       return;\r
 \r
     if (gameMode != AnalyzeFile) {\r
-       EditGameEvent();\r
-       if (gameMode != EditGame) return;\r
+        if (!appData.icsEngineAnalyze) {\r
+               EditGameEvent();\r
+               if (gameMode != EditGame) return;\r
+        }\r
        ResurrectChessProgram();\r
        SendToProgram("analyze\n", &first);\r
        first.analyzing = TRUE;\r
        /*first.maybeThinking = TRUE;*/\r
        first.maybeThinking = FALSE; /* avoid killing GNU Chess */\r
-       AnalysisPopUp("Analysis",\r
-                     "Starting analysis mode...\nIf this message stays up, your chess program does not support analysis.");\r
+       AnalysisPopUp(_("Analysis"),\r
+                     _("Starting analysis mode...\nIf this message stays up, your chess program does not support analysis."));\r
     }\r
-    gameMode = AnalyzeMode;\r
+    if (!appData.icsEngineAnalyze) gameMode = AnalyzeMode;\r
     pausing = FALSE;\r
     ModeHighlight();\r
     SetGameInfo();\r
@@ -10273,8 +10340,8 @@ AnalyzeFileEvent()
        first.analyzing = TRUE;\r
        /*first.maybeThinking = TRUE;*/\r
        first.maybeThinking = FALSE; /* avoid killing GNU Chess */\r
-       AnalysisPopUp("Analysis",\r
-                     "Starting analysis mode...\nIf this message stays up, your chess program does not support analysis.");\r
+       AnalysisPopUp(_("Analysis"),\r
+                     _("Starting analysis mode...\nIf this message stays up, your chess program does not support analysis."));\r
     }\r
     gameMode = AnalyzeFile;\r
     pausing = FALSE;\r
@@ -10307,7 +10374,7 @@ MachineWhiteEvent()
         EditPositionDone();\r
 \r
     if (!WhiteOnMove(currentMove)) {\r
-       DisplayError("It is not White's turn", 0);\r
+       DisplayError(_("It is not White's turn"), 0);\r
        return;\r
     }\r
   \r
@@ -10387,7 +10454,7 @@ MachineBlackEvent()
         EditPositionDone();\r
 \r
     if (WhiteOnMove(currentMove)) {\r
-       DisplayError("It is not Black's turn", 0);\r
+       DisplayError(_("It is not Black's turn"), 0);\r
        return;\r
     }\r
     \r
@@ -10480,7 +10547,7 @@ TwoMachinesEvent P((void))
       case MachinePlaysWhite:\r
       case MachinePlaysBlack:\r
        if (WhiteOnMove(forwardMostMove) == (gameMode == MachinePlaysWhite)) {\r
-           DisplayError("Wait until your turn,\nor select Move Now", 0);\r
+           DisplayError(_("Wait until your turn,\nor select Move Now"), 0);\r
            return;\r
        }\r
        /* fall through */\r
@@ -10512,7 +10579,7 @@ TwoMachinesEvent P((void))
        } else {\r
          /* kludge: allow timeout for initial "feature" command */\r
          FreezeUI();\r
-         DisplayMessage("", "Starting second chess program");\r
+         DisplayMessage("", _("Starting second chess program"));\r
          ScheduleDelayedEvent(TwoMachinesEventIfReady, FEATURE_TIMEOUT);\r
        }\r
        return;\r
@@ -10593,7 +10660,7 @@ TrainingEvent()
     if (gameMode == Training) {\r
       SetTrainingModeOff();\r
       gameMode = PlayFromGameFile;\r
-      DisplayMessage("", "Training mode off");\r
+      DisplayMessage("", _("Training mode off"));\r
     } else {\r
       gameMode = Training;\r
       animateTraining = appData.animate;\r
@@ -10601,10 +10668,10 @@ TrainingEvent()
       /* make sure we are not already at the end of the game */\r
       if (currentMove < forwardMostMove) {\r
        SetTrainingModeOn();\r
-       DisplayMessage("", "Training mode on");\r
+       DisplayMessage("", _("Training mode on"));\r
       } else {\r
        gameMode = PlayFromGameFile;\r
-       DisplayError("Already at end of game", 0);\r
+       DisplayError(_("Already at end of game"), 0);\r
       }\r
     }\r
     ModeHighlight();\r
@@ -10685,13 +10752,13 @@ EditGameEvent()
        break;\r
       case IcsPlayingBlack:\r
       case IcsPlayingWhite:\r
-       DisplayError("Warning: You are still playing a game", 0);\r
+       DisplayError(_("Warning: You are still playing a game"), 0);\r
        break;\r
       case IcsObserving:\r
-       DisplayError("Warning: You are still observing a game", 0);\r
+       DisplayError(_("Warning: You are still observing a game"), 0);\r
        break;\r
       case IcsExamining:\r
-       DisplayError("Warning: You are still examining a game", 0);\r
+       DisplayError(_("Warning: You are still examining a game"), 0);\r
        break;\r
       case IcsIdle:\r
        break;\r
@@ -10761,6 +10828,12 @@ EditPositionEvent()
 void\r
 ExitAnalyzeMode()\r
 {\r
+    /* [DM] icsEngineAnalyze - possible call from other functions */\r
+    if (appData.icsEngineAnalyze) {\r
+        appData.icsEngineAnalyze = FALSE;\r
+\r
+        DisplayMessage("",_("Close ICS engine analyze..."));\r
+    }\r
     if (first.analysisSupport && first.analyzing) {\r
       SendToProgram("exit\n", &first);\r
       first.analyzing = FALSE;\r
@@ -10981,7 +11054,7 @@ DropMenuEvent(selection, x, y)
       case IcsPlayingWhite:\r
       case MachinePlaysBlack:\r
        if (!WhiteOnMove(currentMove)) {\r
-           DisplayMoveError("It is Black's turn");\r
+           DisplayMoveError(_("It is Black's turn"));\r
            return;\r
        }\r
        moveType = WhiteDrop;\r
@@ -10989,7 +11062,7 @@ DropMenuEvent(selection, x, y)
       case IcsPlayingBlack:\r
       case MachinePlaysWhite:\r
        if (WhiteOnMove(currentMove)) {\r
-           DisplayMoveError("It is White's turn");\r
+           DisplayMoveError(_("It is White's turn"));\r
            return;\r
        }\r
        moveType = BlackDrop;\r
@@ -11006,7 +11079,7 @@ DropMenuEvent(selection, x, y)
                                 + (int) BlackPawn - (int) WhitePawn);\r
     }\r
     if (boards[currentMove][y][x] != EmptySquare) {\r
-       DisplayMoveError("That square is occupied");\r
+       DisplayMoveError(_("That square is occupied"));\r
        return;\r
     }\r
 \r
@@ -11030,7 +11103,7 @@ AcceptEvent()
            GameEnds(GameIsDrawn, "Draw agreed", GE_PLAYER);\r
            cmailMoveType[lastLoadGameNumber - 1] = CMAIL_ACCEPT;\r
        } else {\r
-           DisplayError("There is no pending offer on this move", 0);\r
+           DisplayError(_("There is no pending offer on this move"), 0);\r
            cmailMoveType[lastLoadGameNumber - 1] = CMAIL_MOVE;\r
        }\r
     } else {\r
@@ -11056,7 +11129,7 @@ DeclineEvent()
            DisplayComment(cmailOldMove - 1, "Draw declined");\r
 #endif /*NOTDEF*/\r
        } else {\r
-           DisplayError("There is no pending offer on this move", 0);\r
+           DisplayError(_("There is no pending offer on this move"), 0);\r
        }\r
     } else {\r
        /* Not used for offers from chess program */\r
@@ -11092,7 +11165,7 @@ CallFlagEvent()
                else\r
                  GameEnds(BlackWins, "Black wins on time", GE_PLAYER);\r
            } else {\r
-               DisplayError("Your opponent is not out of time", 0);\r
+               DisplayError(_("Your opponent is not out of time"), 0);\r
            }\r
            break;\r
          case MachinePlaysBlack:\r
@@ -11103,7 +11176,7 @@ CallFlagEvent()
                else\r
                  GameEnds(WhiteWins, "White wins on time", GE_PLAYER);\r
            } else {\r
-               DisplayError("Your opponent is not out of time", 0);\r
+               DisplayError(_("Your opponent is not out of time"), 0);\r
            }\r
            break;\r
        }\r
@@ -11138,7 +11211,7 @@ DrawEvent()
            DisplayComment(currentMove - 1, offer);\r
            cmailMoveType[lastLoadGameNumber - 1] = CMAIL_DRAW;\r
        } else {\r
-           DisplayError("You must make your move before offering a draw", 0);\r
+           DisplayError(_("You must make your move before offering a draw"), 0);\r
            cmailMoveType[lastLoadGameNumber - 1] = CMAIL_MOVE;\r
        }\r
     } else if (first.offeredDraw) {\r
@@ -11452,11 +11525,11 @@ void
 RevertEvent()\r
 {\r
     if (gameMode != IcsExamining) {\r
-       DisplayError("You are not examining a game", 0);\r
+       DisplayError(_("You are not examining a game"), 0);\r
        return;\r
     }\r
     if (pausing) {\r
-       DisplayError("You can't revert while pausing", 0);\r
+       DisplayError(_("You can't revert while pausing"), 0);\r
        return;\r
     }\r
     SendToICS(ics_prefix);\r
@@ -11470,7 +11543,7 @@ RetractMoveEvent()
       case MachinePlaysWhite:\r
       case MachinePlaysBlack:\r
        if (WhiteOnMove(forwardMostMove) == (gameMode == MachinePlaysWhite)) {\r
-           DisplayError("Wait until your turn,\nor select Move Now", 0);\r
+           DisplayError(_("Wait until your turn,\nor select Move Now"), 0);\r
            return;\r
        }\r
        if (forwardMostMove < 2) return;\r
@@ -11510,14 +11583,14 @@ MoveNowEvent()
     switch (gameMode) {\r
       case MachinePlaysWhite:\r
        if (!WhiteOnMove(forwardMostMove)) {\r
-           DisplayError("It is your turn", 0);\r
+           DisplayError(_("It is your turn"), 0);\r
            return;\r
        }\r
        cps = &first;\r
        break;\r
       case MachinePlaysBlack:\r
        if (WhiteOnMove(forwardMostMove)) {\r
-           DisplayError("It is your turn", 0);\r
+           DisplayError(_("It is your turn"), 0);\r
            return;\r
        }\r
        cps = &first;\r
@@ -11567,19 +11640,19 @@ HintEvent()
     switch (gameMode) {\r
       case MachinePlaysWhite:\r
        if (WhiteOnMove(forwardMostMove)) {\r
-           DisplayError("Wait until your turn", 0);\r
+           DisplayError(_("Wait until your turn"), 0);\r
            return;\r
        }\r
        break;\r
       case BeginningOfGame:\r
       case MachinePlaysBlack:\r
        if (!WhiteOnMove(forwardMostMove)) {\r
-           DisplayError("Wait until your turn", 0);\r
+           DisplayError(_("Wait until your turn"), 0);\r
            return;\r
        }\r
        break;\r
       default:\r
-       DisplayError("No hint available", 0);\r
+       DisplayError(_("No hint available"), 0);\r
        return;\r
     }\r
     SendToProgram("hint\n", &first);\r
@@ -11593,14 +11666,14 @@ BookEvent()
     switch (gameMode) {\r
       case MachinePlaysWhite:\r
        if (WhiteOnMove(forwardMostMove)) {\r
-           DisplayError("Wait until your turn", 0);\r
+           DisplayError(_("Wait until your turn"), 0);\r
            return;\r
        }\r
        break;\r
       case BeginningOfGame:\r
       case MachinePlaysBlack:\r
        if (!WhiteOnMove(forwardMostMove)) {\r
-           DisplayError("Wait until your turn", 0);\r
+           DisplayError(_("Wait until your turn"), 0);\r
            return;\r
        }\r
        break;\r
@@ -11982,7 +12055,7 @@ SendToProgram(message, cps)
     outCount = OutputToProcess(cps->pr, message, count, &error);\r
     if (outCount < count && !exiting \r
                          && !endingGame) { /* [HGM] crash: to not hang GameEnds() writing to deceased engines */\r
-       sprintf(buf, "Error writing to %s chess program", cps->which);\r
+       sprintf(buf, _("Error writing to %s chess program"), cps->which);\r
         if(gameInfo.resultDetails==NULL) { /* [HGM] crash: if game in progress, give reason for abort */\r
             if(epStatus[forwardMostMove] <= EP_DRAWS) {\r
                 gameInfo.result = GameIsDrawn; /* [HGM] accept exit as draw claim */\r
@@ -12012,12 +12085,12 @@ ReceiveFromProgram(isr, closure, message, count, error)
     if (count <= 0) {\r
        if (count == 0) {\r
            sprintf(buf,\r
-                   "Error: %s chess program (%s) exited unexpectedly",\r
+                   _("Error: %s chess program (%s) exited unexpectedly"),\r
                    cps->which, cps->program);\r
         if(gameInfo.resultDetails==NULL) { /* [HGM] crash: if game in progress, give reason for abort */\r
                 if(epStatus[forwardMostMove] <= EP_DRAWS) {\r
                     gameInfo.result = GameIsDrawn; /* [HGM] accept exit as draw claim */\r
-                    sprintf(buf, "%s program exits in draw position (%s)", cps->which, cps->program);\r
+                    sprintf(buf, _("%s program exits in draw position (%s)"), cps->which, cps->program);\r
                 } else {\r
                     gameInfo.result = cps->twoMachinesColor[0]=='w' ? BlackWins : WhiteWins;\r
                 }\r
@@ -12027,7 +12100,7 @@ ReceiveFromProgram(isr, closure, message, count, error)
            DisplayFatalError(buf, 0, 1);\r
        } else {\r
            sprintf(buf,\r
-                   "Error reading from %s chess program (%s)",\r
+                   _("Error reading from %s chess program (%s)"),\r
                    cps->which, cps->program);\r
            RemoveInputSource(cps->isr);\r
 \r
@@ -12071,6 +12144,14 @@ ReceiveFromProgram(isr, closure, message, count, error)
                        message);\r
        }\r
     }\r
+\r
+    /* [DM] if icsEngineAnalyze is active we block all whisper and kibitz output, because nobody want to see this */\r
+    if (appData.icsEngineAnalyze) {\r
+        if (strstr(message, "whisper") != NULL ||\r
+             strstr(message, "kibitz") != NULL || \r
+            strstr(message, "tellics") != NULL) return;\r
+    }\r
+\r
     HandleMachineMove(message, cps);\r
 }\r
 \r
@@ -12557,7 +12638,8 @@ DisplayAnalysisText(text)
 {\r
     char buf[MSG_SIZ];\r
 \r
-    if (gameMode == AnalyzeMode || gameMode == AnalyzeFile) {\r
+    if (gameMode == AnalyzeMode || gameMode == AnalyzeFile \r
+               || appData.icsEngineAnalyze) {\r
        sprintf(buf, "Analysis (%s)", first.tidy);\r
        AnalysisPopUp(buf, text);\r
     }\r
@@ -12593,8 +12675,8 @@ DisplayAnalysis()
     } else {\r
         safeStrCpy( lst, programStats.movelist, sizeof(lst));\r
 \r
-       nps = (((double)programStats.nodes) /\r
-              (((double)programStats.time)/100.0));\r
+        nps = (u64ToDouble(programStats.nodes) /\r
+             ((double)programStats.time /100.0));\r
 \r
        cs = programStats.time % 100;\r
        s = programStats.time / 100;\r
@@ -12605,32 +12687,32 @@ DisplayAnalysis()
 \r
        if (programStats.moves_left > 0 && appData.periodicUpdates) {\r
          if (programStats.move_name[0] != NULLCHAR) {\r
-           sprintf(buf, "depth=%d %d/%d(%s) %+.2f %s%s\nNodes: %lu NPS: %d\nTime: %02d:%02d:%02d.%02d",\r
+           sprintf(buf, "depth=%d %d/%d(%s) %+.2f %s%s\nNodes: " u64Display " NPS: %d\nTime: %02d:%02d:%02d.%02d",\r
                    programStats.depth,\r
                    programStats.nr_moves-programStats.moves_left,\r
                    programStats.nr_moves, programStats.move_name,\r
                    ((float)programStats.score)/100.0, lst,\r
                    only_one_move(lst)?\r
                    xtra[programStats.got_fail] : "",\r
-                   programStats.nodes, (int)nps, h, m, s, cs);\r
+                   (u64)programStats.nodes, (int)nps, h, m, s, cs);\r
          } else {\r
-           sprintf(buf, "depth=%d %d/%d %+.2f %s%s\nNodes: %lu NPS: %d\nTime: %02d:%02d:%02d.%02d",\r
+           sprintf(buf, "depth=%d %d/%d %+.2f %s%s\nNodes: " u64Display " NPS: %d\nTime: %02d:%02d:%02d.%02d",\r
                    programStats.depth,\r
                    programStats.nr_moves-programStats.moves_left,\r
                    programStats.nr_moves, ((float)programStats.score)/100.0,\r
                    lst,\r
                    only_one_move(lst)?\r
                    xtra[programStats.got_fail] : "",\r
-                   programStats.nodes, (int)nps, h, m, s, cs);\r
+                   (u64)programStats.nodes, (int)nps, h, m, s, cs);\r
          }\r
        } else {\r
-           sprintf(buf, "depth=%d %+.2f %s%s\nNodes: %lu NPS: %d\nTime: %02d:%02d:%02d.%02d",\r
+           sprintf(buf, "depth=%d %+.2f %s%s\nNodes: " u64Display " NPS: %d\nTime: %02d:%02d:%02d.%02d",\r
                    programStats.depth,\r
                    ((float)programStats.score)/100.0,\r
                    lst,\r
                    only_one_move(lst)?\r
                    xtra[programStats.got_fail] : "",\r
-                   programStats.nodes, (int)nps, h, m, s, cs);\r
+                   (u64)programStats.nodes, (int)nps, h, m, s, cs);\r
        }\r
     }\r
     DisplayAnalysisText(buf);\r
@@ -12715,9 +12797,9 @@ CheckFlags()
                }\r
            } else {\r
                if (blackFlag) {\r
-                    if(gameMode != TwoMachinesPlay) DisplayTitle("Both flags fell");\r
+                    if(gameMode != TwoMachinesPlay) DisplayTitle(_("Both flags fell"));\r
                } else {\r
-                    if(gameMode != TwoMachinesPlay) DisplayTitle("White's flag fell");\r
+                    if(gameMode != TwoMachinesPlay) DisplayTitle(_("White's flag fell"));\r
                    if (appData.autoCallFlag) {\r
                        GameEnds(BlackWins, "Black wins on time", GE_XBOARD);\r
                        return TRUE;\r
@@ -12737,9 +12819,9 @@ CheckFlags()
                }\r
            } else {\r
                if (whiteFlag) {\r
-                    if(gameMode != TwoMachinesPlay) DisplayTitle("Both flags fell");\r
+                    if(gameMode != TwoMachinesPlay) DisplayTitle(_("Both flags fell"));\r
                } else {\r
-                    if(gameMode != TwoMachinesPlay) DisplayTitle("Black's flag fell");\r
+                    if(gameMode != TwoMachinesPlay) DisplayTitle(_("Black's flag fell"));\r
                    if (appData.autoCallFlag) {\r
                        GameEnds(WhiteWins, "White wins on time", GE_XBOARD);\r
                        return TRUE;\r
@@ -13616,7 +13698,7 @@ EditPositionPasteFEN(char *fen)
     Board initial_position;\r
 \r
     if (!ParseFEN(initial_position, &blackPlaysFirst, fen)) {\r
-      DisplayError("Bad FEN position in clipboard", 0);\r
+      DisplayError(_("Bad FEN position in clipboard"), 0);\r
       return ;\r
     } else {\r
       int savedBlackPlaysFirst = blackPlaysFirst;\r
index eba5366..840dda3 100644 (file)
--- a/backend.h
+++ b/backend.h
 #ifndef _BACKEND\r
 #define _BACKEND\r
 \r
+/* unsigned int 64 for engine nodes work and display */\r
+#ifdef WIN32\r
+       /* I don't know the name for this type of other compiler\r
+        * If it not work, just modify here\r
+        * This is for MS Visual Studio\r
+        */\r
+       #ifdef _MSC_VER\r
+               #define u64 unsigned __int64\r
+               #define s64 signed __int64\r
+               #define u64Display "%I64u"\r
+               #define s64Display "%I64d"\r
+               #define u64Const(c) (c ## UI64)\r
+               #define s64Const(c) (c ## I64)\r
+       #else\r
+               /* place holder\r
+                * or dummy types for other compiler\r
+                */\r
+               #define u64 unsigned long long\r
+               #define s64 signed long long\r
+               #define u64Display "%llu"\r
+               #define s64Display "%lld"\r
+               #define u64Const(c) (c ## ULL)\r
+               #define s64Const(c) (c ## LL)\r
+       #endif\r
+#else\r
+       /* GNU gcc */\r
+       #define u64 unsigned long long\r
+       #define s64 signed long long\r
+       #define u64Display "%llu"\r
+       #define s64Display "%lld"\r
+       #define u64Const(c) (c ## ull)\r
+       #define s64Const(c) (c ## ll)\r
+#endif\r
+\r
 #include "lists.h"\r
 #include "frontend.h"\r
 \r
@@ -159,6 +193,7 @@ Boolean ParseOneMove P((char *move, int moveNum,
                        int *toX, int *toY, char *promoChar));\r
 char *VariantName P((VariantClass v));\r
 VariantClass StringToVariant P((char *e));\r
+double u64ToDouble P((u64 value));\r
 \r
 char *StrStr P((char *string, char *match));\r
 char *StrCaseStr P((char *string, char *match));\r
@@ -176,6 +211,14 @@ int ToUpper P((int c));
 \r
 extern GameInfo gameInfo;\r
 \r
+/* ICS vars used with backend.c and zippy.c */\r
+#define ICS_GENERIC 0\r
+#define ICS_ICC 1\r
+#define ICS_FICS 2\r
+#define ICS_CHESSNET 3 /* not really supported */\r
+int ics_type;\r
+\r
\r
 \r
 /* pgntags.c prototypes\r
  */\r
@@ -302,7 +345,7 @@ typedef struct {
   int nr_moves;           /* Total nr of root moves */\r
   int moves_left;         /* Moves remaining to be searched */\r
   char move_name[MOVE_LEN];  /* Current move being searched, if provided */\r
-  unsigned long nodes;    /* # of nodes searched */\r
+  u64 nodes;    /* # of nodes searched */\r
   int time;               /* Search time (centiseconds) */\r
   int score;              /* Score (centipawns) */\r
   int got_only_move;      /* If last msg was "(only move)" */\r
index c56cf4e..e1d080a 100644 (file)
@@ -54,7 +54,7 @@ main(int argc, char **argv)
        for(i=0; name[i]; i++) if(name[i] == '.') name[i] = 0;\r
        printf("#define %s_width %d\n", name, w);\r
        printf("#define %s_height %d\n", name, h);\r
-       printf("static char %s_bits[] = {\n", name);\r
+       printf("static unsigned char %s_bits[] = {\n", name);\r
        cnt = 0;\r
        for(i=h-1; i>=0; i--) {\r
                for(j=0; j<w; j+=8) {\r
index 8263d63..7883184 100644 (file)
--- a/common.h
+++ b/common.h
@@ -481,6 +481,7 @@ typedef struct {
     int firstProtocolVersion;\r
     int secondProtocolVersion;\r
     Boolean showButtonBar;\r
+    Boolean icsEngineAnalyze; \r
 \r
     /* [AS] New properties (down to the "ZIPPY" part) */\r
     Boolean firstScoreIsAbsolute;  /* If true, engine score is always from white side */\r
@@ -583,6 +584,7 @@ typedef struct {
     char *firstLogo;    /* [HGM] logo      */\r
     char *secondLogo;\r
     Boolean autoLogo;\r
+    Boolean noGUI;      /* [HGM] fast: suppress all display updates */\r
 } AppData, *AppDataPtr;\r
 \r
 /* [AS] PGN tags (for showing in the game list) */\r
index f0e09d3..ba3a502 100644 (file)
--- a/config.h
+++ b/config.h
-/* config.h.in.  Generated automatically from configure.in by autoheader.  */\r
-\r
-/* [HGM] Defining ADJUDICATE switches on rep-draw and insuf-material draws */\r
-#define ADJUDICATE\r
-\r
-/* [HGM] Defining FAIRY allows different K- & Q-side piece symbols */\r
-#define FAIRY\r
-\r
-#define GOTHIC "Gothic Chess (see www.GothicChess.com) is licensed under U.S. Patent #6,481,716 by Ed Trice"\r
-#define FALCON "Falcon Chess (see www.chessvariants.com) is licensed under U.S. Patent #5,690,334 by George W. Duke"\r
-\r
-/* Define if you have <sys/wait.h> that is POSIX.1 compatible.  */\r
-/*#undef HAVE_SYS_WAIT_H*/\r
-\r
-/* Define if you need to in order for stat and other things to work.  */\r
-/*#undef _POSIX_SOURCE*/\r
-\r
-/* Define as the return type of signal handlers (int or void).  */\r
-/*#undef RETSIGTYPE*/\r
-\r
-/* Define if you have the ANSI C header files.  */\r
-#define STDC_HEADERS 1\r
-\r
-/* Define if you can safely include both <sys/time.h> and <time.h>.  */\r
-/*#undef TIME_WITH_SYS_TIME*/\r
-\r
-/* Define if lex declares yytext as a char * by default, not a char[].  */\r
-/*#undef YYTEXT_POINTER*/\r
-\r
-/*#define FIRST_PTY_LETTER 'p'*/\r
-\r
-#define HAVE_FCNTL_H 1\r
-\r
-#define HAVE_GETHOSTNAME 0\r
-\r
-#define HAVE_GETTIMEOFDAY 0\r
-\r
-/* Use our own random() defined in winboard.c. */\r
-#define HAVE_RANDOM 1\r
-#define random myrandom\r
-#define srandom mysrandom\r
-\r
-#define HAVE_SYS_SOCKET_H 0\r
-\r
-/*#undef IBMRTAIX*/\r
-\r
-#define LAST_PTY_LETTER 'q'\r
-\r
-#define PATCHLEVEL "13c"\r
-\r
-#define PRODUCT "WinBoard"\r
-\r
-#define PTY_ITERATION\r
-\r
-#define PTY_NAME_SPRINTF\r
-\r
-#define PTY_TTY_NAME_SPRINTF\r
-\r
-#define REMOTE_SHELL ""\r
-\r
-/*#undef RTU*/\r
-\r
-/*#undef UNIPLUS*/\r
-\r
-#define USE_PTYS 0\r
-\r
-#define VERSION "4.3"\r
-\r
-/*#undef X_WCHAR*/\r
-\r
-#ifndef __BORLANDC__\r
-#define WIN32 1\r
-#else\r
-#define WIN32\r
-#endif\r
-\r
-#define ZIPPY 1\r
-\r
-/* Define if you have the _getpty function.  */\r
-/*#undef HAVE__GETPTY*/\r
-\r
-/* Define if you have the ftime function.  */\r
-#define HAVE_FTIME 1\r
-\r
-/* Define if you have the grantpt function.  */\r
-/*#undef HAVE_GRANTPT*/\r
-\r
-/* Define if you have the rand48 function.  */\r
-/*#undef HAVE_RAND48*/\r
-\r
-/* Define if you have the sysinfo function.  */\r
-/*#undef HAVE_SYSINFO*/\r
-\r
-/* Define if you have the <lan/socket.h> header file.  */\r
-/*#undef HAVE_LAN_SOCKET_H*/\r
-\r
-/* Define if you have the <string.h> header file.  */\r
-#define HAVE_STRING_H 1\r
-\r
-/* Define if you have the <stropts.h> header file.  */\r
-/*#undef HAVE_STROPTS_H*/\r
-\r
-/* Define if you have the <sys/fcntl.h> header file.  */\r
-#define HAVE_SYS_FCNTL_H 0\r
-\r
-/* Define if you have the <sys/systeminfo.h> header file.  */\r
-/*#undef HAVE_SYS_SYSTEMINFO_H*/\r
-\r
-/* Define if you have the <sys/time.h> header file.  */\r
-/*#undef HAVE_SYS_TIME_H*/\r
-\r
-/* Define if you have the <unistd.h> header file.  */\r
-/*#undef HAVE_UNISTD_H*/\r
-\r
-/* Define if you have the i library (-li).  */\r
-/*#undef HAVE_LIBI*/\r
-\r
-/* Define if you have the seq library (-lseq).  */\r
-/*#undef HAVE_LIBSEQ*/\r
-\r
-/*\r
-  Options\r
-  -DEMULATE_RSH -DREMOTE_SHELL=\"\" is necessary on Windows 95, because it\r
-    does not have its own rsh command.  It works better this way on NT too,\r
-    because the NT rsh does not propagate signals to the remote process.\r
-  -DATTENTION is included even though I haven't been able to send signals to\r
-    child processes on Windows, because at least I can send them over rsh to\r
-    Unix programs.  On Windows I send a newline instead, which wakes up the\r
-    chess program if it's polling.  On my GNU Chess port the newline actually \r
-    works even for Move Now.\r
-*/\r
-#define EMULATE_RSH 1\r
-#define ATTENTION 1\r
-\r
-#ifdef __BORLANDC__\r
-#define _strdup(x) strdup(x)\r
-#define STRICT\r
-#define _winmajor 3  /* windows 95 */\r
-#define SCF_DEFAULT 0x0000\r
-#define SCF_ALL 0x0004\r
-#endif\r
-\r
+/* config.h.  Generated from config.h.in by configure.  */
+/* config.h.in.  Generated from configure.ac by autoheader.  */
+
+/* template */
+#define ATTENTION 1
+
+/* template */
+/* #undef DEFINED_SYS_ERRLIST */
+
+/* template */
+/* #undef FIRST_PTY_LETTER */
+
+/* Define to 1 if you have the <dirent.h> header file, and it defines `DIR'.
+   */
+#define HAVE_DIRENT_H 1
+
+/* Define to 1 if you have the <fcntl.h> header file. */
+#define HAVE_FCNTL_H 1
+
+/* Define to 1 if you have the `ftime' function. */
+/* #undef HAVE_FTIME */
+
+/* Define to 1 if you have the `gethostname' function. */
+#define HAVE_GETHOSTNAME 1
+
+/* Define to 1 if you have the `gettimeofday' function. */
+#define HAVE_GETTIMEOFDAY 1
+
+/* Define to 1 if you have the `grantpt' function. */
+#define HAVE_GRANTPT 1
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#define HAVE_INTTYPES_H 1
+
+/* Define to 1 if you have the <lan/socket.h> header file. */
+/* #undef HAVE_LAN_SOCKET_H */
+
+/* Define to 1 if you have the `i' library (-li). */
+/* #undef HAVE_LIBI */
+
+/* Define to 1 if you have the `seq' library (-lseq). */
+/* #undef HAVE_LIBSEQ */
+
+/* template */
+#define HAVE_LIBXPM 1
+
+/* Define to 1 if you have the <memory.h> header file. */
+#define HAVE_MEMORY_H 1
+
+/* Define to 1 if you have the <ndir.h> header file, and it defines `DIR'. */
+/* #undef HAVE_NDIR_H */
+
+/* Define to 1 if you have the `rand48' function. */
+/* #undef HAVE_RAND48 */
+
+/* Define to 1 if you have the `random' function. */
+#define HAVE_RANDOM 1
+
+/* Define to 1 if you have the `setitimer' function. */
+#define HAVE_SETITIMER 1
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#define HAVE_STDINT_H 1
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#define HAVE_STDLIB_H 1
+
+/* Define to 1 if you have the <strings.h> header file. */
+#define HAVE_STRINGS_H 1
+
+/* Define to 1 if you have the <string.h> header file. */
+#define HAVE_STRING_H 1
+
+/* Define to 1 if you have the <stropts.h> header file. */
+#define HAVE_STROPTS_H 1
+
+/* Define to 1 if you have the `sysinfo' function. */
+/* #undef HAVE_SYSINFO */
+
+/* Define to 1 if you have the <sys/dir.h> header file, and it defines `DIR'.
+   */
+/* #undef HAVE_SYS_DIR_H */
+
+/* Define to 1 if you have the <sys/fcntl.h> header file. */
+/* #undef HAVE_SYS_FCNTL_H */
+
+/* Define to 1 if you have the <sys/ndir.h> header file, and it defines `DIR'.
+   */
+/* #undef HAVE_SYS_NDIR_H */
+
+/* Define to 1 if you have the <sys/socket.h> header file. */
+#define HAVE_SYS_SOCKET_H 1
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#define HAVE_SYS_STAT_H 1
+
+/* Define to 1 if you have the <sys/systeminfo.h> header file. */
+/* #undef HAVE_SYS_SYSTEMINFO_H */
+
+/* Define to 1 if you have the <sys/time.h> header file. */
+#define HAVE_SYS_TIME_H 1
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#define HAVE_SYS_TYPES_H 1
+
+/* Define to 1 if you have <sys/wait.h> that is POSIX.1 compatible. */
+#define HAVE_SYS_WAIT_H 1
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#define HAVE_UNISTD_H 1
+
+/* Define to 1 if you have the `usleep' function. */
+#define HAVE_USLEEP 1
+
+/* Define to 1 if you have the <X11/xpm.h> header file. */
+#define HAVE_X11_XPM_H 1
+
+/* Define to 1 if you have the `_getpty' function. */
+/* #undef HAVE__GETPTY */
+
+/* template */
+/* #undef IBMRTAIX */
+
+/* template */
+/* #undef LAST_PTY_LETTER */
+
+/* Name of package */
+#define PACKAGE "xboard"
+
+/* Define to the address where bug reports for this package should be sent. */
+#define PACKAGE_BUGREPORT "bug-xboard@gnu.org"
+
+/* Define to the full name of this package. */
+#define PACKAGE_NAME "xboard"
+
+/* Define to the full name and version of this package. */
+#define PACKAGE_STRING "xboard 4.4.0e"
+
+/* Define to the one symbol short name of this package. */
+#define PACKAGE_TARNAME "xboard"
+
+/* Define to the version of this package. */
+#define PACKAGE_VERSION "4.4.0e"
+
+/* template */
+#define PATCHLEVEL ""
+
+/* template */
+#define PRODUCT ""
+
+/* template */
+/* #undef PTY_ITERATION */
+
+/* template */
+/* #undef PTY_NAME_SPRINTF */
+
+/* template */
+/* #undef PTY_OPEN */
+
+/* template */
+/* #undef PTY_TTY_NAME_SPRINTF */
+
+/* template */
+#define REMOTE_SHELL "rsh"
+
+/* Define as the return type of signal handlers (`int' or `void'). */
+#define RETSIGTYPE void
+
+/* template */
+/* #undef RTU */
+
+/* Define to 1 if you have the ANSI C header files. */
+#define STDC_HEADERS 1
+
+/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
+#define TIME_WITH_SYS_TIME 1
+
+/* template */
+/* #undef UNIPLUS */
+
+/* template */
+#define USE_PTYS 0
+
+/* template */
+/* #undef USE_XAW3D */
+
+/* template */
+#define VERSION "4.4.0e"
+
+/* Define to 1 if the X Window System is missing or not being used. */
+/* #undef X_DISPLAY_MISSING */
+
+/* template */
+/* #undef X_LOCALE */
+
+/* template */
+/* #undef X_WCHAR */
+
+/* Define to 1 if `lex' declares `yytext' as a `char *' by default, not a
+   `char[]'. */
+#define YYTEXT_POINTER 1
+
+/* should zippy be enabled */
+#define ZIPPY 1
diff --git a/config.rpath b/config.rpath
new file mode 100755 (executable)
index 0000000..fa24bfc
--- /dev/null
@@ -0,0 +1,548 @@
+#! /bin/sh
+# Output a system dependent set of variables, describing how to set the
+# run time search path of shared libraries in an executable.
+#
+#   Copyright 1996-2003 Free Software Foundation, Inc.
+#   Taken from GNU libtool, 2001
+#   Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
+#
+#   This program is free software; you can redistribute it and/or modify
+#   it under the terms of the GNU General Public License as published by
+#   the Free Software Foundation; either version 2 of the License, or
+#   (at your option) any later version.
+#
+#   This program is distributed in the hope that it will be useful, but
+#   WITHOUT ANY WARRANTY; without even the implied warranty of
+#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+#   General Public License for more details.
+#
+#   You should have received a copy of the GNU General Public License
+#   along with this program; if not, write to the Free Software
+#   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+#   As a special exception to the GNU General Public License, if you
+#   distribute this file as part of a program that contains a
+#   configuration script generated by Autoconf, you may include it under
+#   the same distribution terms that you use for the rest of that program.
+#
+# The first argument passed to this file is the canonical host specification,
+#    CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
+# or
+#    CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
+# The environment variables CC, GCC, LDFLAGS, LD, with_gnu_ld
+# should be set by the caller.
+#
+# The set of defined variables is at the end of this script.
+
+# Known limitations:
+# - On IRIX 6.5 with CC="cc", the run time search patch must not be longer
+#   than 256 bytes, otherwise the compiler driver will dump core. The only
+#   known workaround is to choose shorter directory names for the build
+#   directory and/or the installation directory.
+
+# All known linkers require a `.a' archive for static linking (except M$VC,
+# which needs '.lib').
+libext=a
+shrext=.so
+
+host="$1"
+host_cpu=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
+host_vendor=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
+host_os=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
+
+# Code taken from libtool.m4's AC_LIBTOOL_PROG_COMPILER_PIC.
+
+wl=
+if test "$GCC" = yes; then
+  wl='-Wl,'
+else
+  case "$host_os" in
+    aix*)
+      wl='-Wl,'
+      ;;
+    mingw* | pw32* | os2*)
+      ;;
+    hpux9* | hpux10* | hpux11*)
+      wl='-Wl,'
+      ;;
+    irix5* | irix6* | nonstopux*)
+      wl='-Wl,'
+      ;;
+    newsos6)
+      ;;
+    linux*)
+      case $CC in
+        icc|ecc)
+          wl='-Wl,'
+          ;;
+        ccc)
+          wl='-Wl,'
+          ;;
+      esac
+      ;;
+    osf3* | osf4* | osf5*)
+      wl='-Wl,'
+      ;;
+    sco3.2v5*)
+      ;;
+    solaris*)
+      wl='-Wl,'
+      ;;
+    sunos4*)
+      wl='-Qoption ld '
+      ;;
+    sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+      wl='-Wl,'
+      ;;
+    sysv4*MP*)
+      ;;
+    uts4*)
+      ;;
+  esac
+fi
+
+# Code taken from libtool.m4's AC_LIBTOOL_PROG_LD_SHLIBS.
+
+hardcode_libdir_flag_spec=
+hardcode_libdir_separator=
+hardcode_direct=no
+hardcode_minus_L=no
+
+case "$host_os" in
+  cygwin* | mingw* | pw32*)
+    # FIXME: the MSVC++ port hasn't been tested in a loooong time
+    # When not using gcc, we currently assume that we are using
+    # Microsoft Visual C++.
+    if test "$GCC" != yes; then
+      with_gnu_ld=no
+    fi
+    ;;
+  openbsd*)
+    with_gnu_ld=no
+    ;;
+esac
+
+ld_shlibs=yes
+if test "$with_gnu_ld" = yes; then
+  case "$host_os" in
+    aix3* | aix4* | aix5*)
+      # On AIX/PPC, the GNU linker is very broken
+      if test "$host_cpu" != ia64; then
+        ld_shlibs=no
+      fi
+      ;;
+    amigaos*)
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_minus_L=yes
+      # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
+      # that the semantics of dynamic libraries on AmigaOS, at least up
+      # to version 4, is to share data among multiple programs linked
+      # with the same dynamic library.  Since this doesn't match the
+      # behavior of shared libraries on other platforms, we can use
+      # them.
+      ld_shlibs=no
+      ;;
+    beos*)
+      if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then
+        :
+      else
+        ld_shlibs=no
+      fi
+      ;;
+    cygwin* | mingw* | pw32*)
+      # hardcode_libdir_flag_spec is actually meaningless, as there is
+      # no search path for DLLs.
+      hardcode_libdir_flag_spec='-L$libdir'
+      if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+        :
+      else
+        ld_shlibs=no
+      fi
+      ;;
+    netbsd*)
+      ;;
+    solaris* | sysv5*)
+      if $LD -v 2>&1 | egrep 'BFD 2\.8' > /dev/null; then
+        ld_shlibs=no
+      elif $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then
+        :
+      else
+        ld_shlibs=no
+      fi
+      ;;
+    sunos4*)
+      hardcode_direct=yes
+      ;;
+    *)
+      if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then
+        :
+      else
+        ld_shlibs=no
+      fi
+      ;;
+  esac
+  if test "$ld_shlibs" = yes; then
+    # Unlike libtool, we use -rpath here, not --rpath, since the documented
+    # option of GNU ld is called -rpath, not --rpath.
+    hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+  fi
+else
+  case "$host_os" in
+    aix3*)
+      # Note: this linker hardcodes the directories in LIBPATH if there
+      # are no directories specified by -L.
+      hardcode_minus_L=yes
+      if test "$GCC" = yes; then
+        # Neither direct hardcoding nor static linking is supported with a
+        # broken collect2.
+        hardcode_direct=unsupported
+      fi
+      ;;
+    aix4* | aix5*)
+      if test "$host_cpu" = ia64; then
+        # On IA64, the linker does run time linking by default, so we don't
+        # have to do anything special.
+        aix_use_runtimelinking=no
+      else
+        aix_use_runtimelinking=no
+        # Test if we are trying to use run time linking or normal
+        # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+        # need to do runtime linking.
+        case $host_os in aix4.[23]|aix4.[23].*|aix5*)
+          for ld_flag in $LDFLAGS; do
+            if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+              aix_use_runtimelinking=yes
+              break
+            fi
+          done
+        esac
+      fi
+      hardcode_direct=yes
+      hardcode_libdir_separator=':'
+      if test "$GCC" = yes; then
+        case $host_os in aix4.[012]|aix4.[012].*)
+          collect2name=`${CC} -print-prog-name=collect2`
+          if test -f "$collect2name" && \
+            strings "$collect2name" | grep resolve_lib_name >/dev/null
+          then
+            # We have reworked collect2
+            hardcode_direct=yes
+          else
+            # We have old collect2
+            hardcode_direct=unsupported
+            hardcode_minus_L=yes
+            hardcode_libdir_flag_spec='-L$libdir'
+            hardcode_libdir_separator=
+          fi
+        esac
+      fi
+      # Begin _LT_AC_SYS_LIBPATH_AIX.
+      echo 'int main () { return 0; }' > conftest.c
+      ${CC} ${LDFLAGS} conftest.c -o conftest
+      aix_libpath=`dump -H conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`
+      if test -z "$aix_libpath"; then
+        aix_libpath=`dump -HX64 conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`
+      fi
+      if test -z "$aix_libpath"; then
+        aix_libpath="/usr/lib:/lib"
+      fi
+      rm -f conftest.c conftest
+      # End _LT_AC_SYS_LIBPATH_AIX.
+      if test "$aix_use_runtimelinking" = yes; then
+        hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
+      else
+        if test "$host_cpu" = ia64; then
+          hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
+        else
+          hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
+        fi
+      fi
+      ;;
+    amigaos*)
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_minus_L=yes
+      # see comment about different semantics on the GNU ld section
+      ld_shlibs=no
+      ;;
+    bsdi4*)
+      ;;
+    cygwin* | mingw* | pw32*)
+      # When not using gcc, we currently assume that we are using
+      # Microsoft Visual C++.
+      # hardcode_libdir_flag_spec is actually meaningless, as there is
+      # no search path for DLLs.
+      hardcode_libdir_flag_spec=' '
+      libext=lib
+      ;;
+    darwin* | rhapsody*)
+      if $CC -v 2>&1 | grep 'Apple' >/dev/null ; then
+        hardcode_direct=no
+      fi
+      ;;
+    dgux*)
+      hardcode_libdir_flag_spec='-L$libdir'
+      ;;
+    freebsd1*)
+      ld_shlibs=no
+      ;;
+    freebsd2.2*)
+      hardcode_libdir_flag_spec='-R$libdir'
+      hardcode_direct=yes
+      ;;
+    freebsd2*)
+      hardcode_direct=yes
+      hardcode_minus_L=yes
+      ;;
+    freebsd*)
+      hardcode_libdir_flag_spec='-R$libdir'
+      hardcode_direct=yes
+      ;;
+    hpux9*)
+      hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+      hardcode_libdir_separator=:
+      hardcode_direct=yes
+      # hardcode_minus_L: Not really in the search PATH,
+      # but as the default location of the library.
+      hardcode_minus_L=yes
+      ;;
+    hpux10* | hpux11*)
+      if test "$with_gnu_ld" = no; then
+        case "$host_cpu" in
+          hppa*64*)
+            hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+            hardcode_libdir_separator=:
+            hardcode_direct=no
+            ;;
+          ia64*)
+            hardcode_libdir_flag_spec='-L$libdir'
+            hardcode_direct=no
+            # hardcode_minus_L: Not really in the search PATH,
+            # but as the default location of the library.
+            hardcode_minus_L=yes
+            ;;
+          *)
+            hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+            hardcode_libdir_separator=:
+            hardcode_direct=yes
+            # hardcode_minus_L: Not really in the search PATH,
+            # but as the default location of the library.
+            hardcode_minus_L=yes
+            ;;
+        esac
+      fi
+      ;;
+    irix5* | irix6* | nonstopux*)
+      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator=:
+      ;;
+    netbsd*)
+      hardcode_libdir_flag_spec='-R$libdir'
+      hardcode_direct=yes
+      ;;
+    newsos6)
+      hardcode_direct=yes
+      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator=:
+      ;;
+    openbsd*)
+      hardcode_direct=yes
+      if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+        hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+      else
+        case "$host_os" in
+          openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
+            hardcode_libdir_flag_spec='-R$libdir'
+            ;;
+          *)
+            hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+            ;;
+        esac
+      fi
+      ;;
+    os2*)
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_minus_L=yes
+      ;;
+    osf3*)
+      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator=:
+      ;;
+    osf4* | osf5*)
+      if test "$GCC" = yes; then
+        hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+      else
+        # Both cc and cxx compiler support -rpath directly
+        hardcode_libdir_flag_spec='-rpath $libdir'
+      fi
+      hardcode_libdir_separator=:
+      ;;
+    sco3.2v5*)
+      ;;
+    solaris*)
+      hardcode_libdir_flag_spec='-R$libdir'
+      ;;
+    sunos4*)
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_direct=yes
+      hardcode_minus_L=yes
+      ;;
+    sysv4)
+      case $host_vendor in
+        sni)
+          hardcode_direct=yes # is this really true???
+          ;;
+        siemens)
+          hardcode_direct=no
+          ;;
+        motorola)
+          hardcode_direct=no #Motorola manual says yes, but my tests say they lie
+          ;;
+      esac
+      ;;
+    sysv4.3*)
+      ;;
+    sysv4*MP*)
+      if test -d /usr/nec; then
+        ld_shlibs=yes
+      fi
+      ;;
+    sysv4.2uw2*)
+      hardcode_direct=yes
+      hardcode_minus_L=no
+      ;;
+    sysv5OpenUNIX8* | sysv5UnixWare7* |  sysv5uw[78]* | unixware7*)
+      ;;
+    sysv5*)
+      hardcode_libdir_flag_spec=
+      ;;
+    uts4*)
+      hardcode_libdir_flag_spec='-L$libdir'
+      ;;
+    *)
+      ld_shlibs=no
+      ;;
+  esac
+fi
+
+# Check dynamic linker characteristics
+# Code taken from libtool.m4's AC_LIBTOOL_SYS_DYNAMIC_LINKER.
+libname_spec='lib$name'
+case "$host_os" in
+  aix3*)
+    ;;
+  aix4* | aix5*)
+    ;;
+  amigaos*)
+    ;;
+  beos*)
+    ;;
+  bsdi4*)
+    ;;
+  cygwin* | mingw* | pw32*)
+    shrext=.dll
+    ;;
+  darwin* | rhapsody*)
+    shrext=.dylib
+    ;;
+  dgux*)
+    ;;
+  freebsd1*)
+    ;;
+  freebsd*)
+    ;;
+  gnu*)
+    ;;
+  hpux9* | hpux10* | hpux11*)
+    case "$host_cpu" in
+      ia64*)
+        shrext=.so
+        ;;
+      hppa*64*)
+        shrext=.sl
+        ;;
+      *)
+        shrext=.sl
+        ;;
+    esac
+    ;;
+  irix5* | irix6* | nonstopux*)
+    case "$host_os" in
+      irix5* | nonstopux*)
+        libsuff= shlibsuff=
+        ;;
+      *)
+        case $LD in
+          *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= ;;
+          *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 ;;
+          *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 ;;
+          *) libsuff= shlibsuff= ;;
+        esac
+        ;;
+    esac
+    ;;
+  linux*oldld* | linux*aout* | linux*coff*)
+    ;;
+  linux*)
+    ;;
+  netbsd*)
+    ;;
+  newsos6)
+    ;;
+  nto-qnx)
+    ;;
+  openbsd*)
+    ;;
+  os2*)
+    libname_spec='$name'
+    shrext=.dll
+    ;;
+  osf3* | osf4* | osf5*)
+    ;;
+  sco3.2v5*)
+    ;;
+  solaris*)
+    ;;
+  sunos4*)
+    ;;
+  sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+    ;;
+  sysv4*MP*)
+    ;;
+  uts4*)
+    ;;
+esac
+
+sed_quote_subst='s/\(["`$\\]\)/\\\1/g'
+escaped_wl=`echo "X$wl" | sed -e 's/^X//' -e "$sed_quote_subst"`
+shlibext=`echo "$shrext" | sed -e 's,^\.,,'`
+escaped_hardcode_libdir_flag_spec=`echo "X$hardcode_libdir_flag_spec" | sed -e 's/^X//' -e "$sed_quote_subst"`
+
+sed -e 's/^\([a-zA-Z0-9_]*\)=/acl_cv_\1=/' <<EOF
+
+# How to pass a linker flag through the compiler.
+wl="$escaped_wl"
+
+# Static library suffix (normally "a").
+libext="$libext"
+
+# Shared library suffix (normally "so").
+shlibext="$shlibext"
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec="$escaped_hardcode_libdir_flag_spec"
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator="$hardcode_libdir_separator"
+
+# Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct="$hardcode_direct"
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L="$hardcode_minus_L"
+
+EOF
index 335b730..42bec05 100755 (executable)
--- a/configure
+++ b/configure
-#! /bin/sh
-# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.61 for xboard 4.3.
-#
-# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
-# 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
-# This configure script is free software; the Free Software Foundation
-# gives unlimited permission to copy, distribute and modify it.
-## --------------------- ##
-## M4sh Initialization.  ##
-## --------------------- ##
-
-# Be more Bourne compatible
-DUALCASE=1; export DUALCASE # for MKS sh
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
-  emulate sh
-  NULLCMD=:
-  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
-  # is contrary to our usage.  Disable this feature.
-  alias -g '${1+"$@"}'='"$@"'
-  setopt NO_GLOB_SUBST
-else
-  case `(set -o) 2>/dev/null` in
-  *posix*) set -o posix ;;
-esac
-
-fi
-
-
-
-
-# PATH needs CR
-# Avoid depending upon Character Ranges.
-as_cr_letters='abcdefghijklmnopqrstuvwxyz'
-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
-as_cr_Letters=$as_cr_letters$as_cr_LETTERS
-as_cr_digits='0123456789'
-as_cr_alnum=$as_cr_Letters$as_cr_digits
-
-# The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
-  echo "#! /bin/sh" >conf$$.sh
-  echo  "exit 0"   >>conf$$.sh
-  chmod +x conf$$.sh
-  if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
-    PATH_SEPARATOR=';'
-  else
-    PATH_SEPARATOR=:
-  fi
-  rm -f conf$$.sh
-fi
-
-# Support unset when possible.
-if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
-  as_unset=unset
-else
-  as_unset=false
-fi
-
-
-# IFS
-# We need space, tab and new line, in precisely that order.  Quoting is
-# there to prevent editors from complaining about space-tab.
-# (If _AS_PATH_WALK were called with IFS unset, it would disable word
-# splitting by setting IFS to empty value.)
-as_nl='
-'
-IFS=" ""       $as_nl"
-
-# Find who we are.  Look in the path if we contain no directory separator.
-case $0 in
-  *[\\/]* ) as_myself=$0 ;;
-  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
-done
-IFS=$as_save_IFS
-
-     ;;
-esac
-# We did not find ourselves, most probably we were run as `sh COMMAND'
-# in which case we are not to be found in the path.
-if test "x$as_myself" = x; then
-  as_myself=$0
-fi
-if test ! -f "$as_myself"; then
-  echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
-  { (exit 1); exit 1; }
-fi
-
-# Work around bugs in pre-3.0 UWIN ksh.
-for as_var in ENV MAIL MAILPATH
-do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
-done
-PS1='$ '
-PS2='> '
-PS4='+ '
-
-# NLS nuisances.
-for as_var in \
-  LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
-  LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
-  LC_TELEPHONE LC_TIME
-do
-  if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
-    eval $as_var=C; export $as_var
-  else
-    ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
-  fi
-done
-
-# Required to use basename.
-if expr a : '\(a\)' >/dev/null 2>&1 &&
-   test "X`expr 00001 : '.*\(...\)'`" = X001; then
-  as_expr=expr
-else
-  as_expr=false
-fi
-
-if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
-  as_basename=basename
-else
-  as_basename=false
-fi
-
-
-# Name of the executable.
-as_me=`$as_basename -- "$0" ||
-$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
-        X"$0" : 'X\(//\)$' \| \
-        X"$0" : 'X\(/\)' \| . 2>/dev/null ||
-echo X/"$0" |
-    sed '/^.*\/\([^/][^/]*\)\/*$/{
-           s//\1/
-           q
-         }
-         /^X\/\(\/\/\)$/{
-           s//\1/
-           q
-         }
-         /^X\/\(\/\).*/{
-           s//\1/
-           q
-         }
-         s/.*/./; q'`
-
-# CDPATH.
-$as_unset CDPATH
-
-
-if test "x$CONFIG_SHELL" = x; then
-  if (eval ":") 2>/dev/null; then
-  as_have_required=yes
-else
-  as_have_required=no
-fi
-
-  if test $as_have_required = yes &&    (eval ":
-(as_func_return () {
-  (exit \$1)
-}
-as_func_success () {
-  as_func_return 0
-}
-as_func_failure () {
-  as_func_return 1
-}
-as_func_ret_success () {
-  return 0
-}
-as_func_ret_failure () {
-  return 1
-}
-
-exitcode=0
-if as_func_success; then
-  :
-else
-  exitcode=1
-  echo as_func_success failed.
-fi
-
-if as_func_failure; then
-  exitcode=1
-  echo as_func_failure succeeded.
-fi
-
-if as_func_ret_success; then
-  :
-else
-  exitcode=1
-  echo as_func_ret_success failed.
-fi
-
-if as_func_ret_failure; then
-  exitcode=1
-  echo as_func_ret_failure succeeded.
-fi
-
-if ( set x; as_func_ret_success y && test x = \"\$1\" ); then
-  :
-else
-  exitcode=1
-  echo positional parameters were not saved.
-fi
-
-test \$exitcode = 0) || { (exit 1); exit 1; }
-
-(
-  as_lineno_1=\$LINENO
-  as_lineno_2=\$LINENO
-  test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" &&
-  test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; }
-") 2> /dev/null; then
-  :
-else
-  as_candidate_shells=
-    as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  case $as_dir in
-        /*)
-          for as_base in sh bash ksh sh5; do
-            as_candidate_shells="$as_candidate_shells $as_dir/$as_base"
-          done;;
-       esac
-done
-IFS=$as_save_IFS
-
-
-      for as_shell in $as_candidate_shells $SHELL; do
-        # Try only shells that exist, to save several forks.
-        if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
-               { ("$as_shell") 2> /dev/null <<\_ASEOF
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
-  emulate sh
-  NULLCMD=:
-  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
-  # is contrary to our usage.  Disable this feature.
-  alias -g '${1+"$@"}'='"$@"'
-  setopt NO_GLOB_SUBST
-else
-  case `(set -o) 2>/dev/null` in
-  *posix*) set -o posix ;;
-esac
-
-fi
-
-
-:
-_ASEOF
-}; then
-  CONFIG_SHELL=$as_shell
-              as_have_required=yes
-              if { "$as_shell" 2> /dev/null <<\_ASEOF
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
-  emulate sh
-  NULLCMD=:
-  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
-  # is contrary to our usage.  Disable this feature.
-  alias -g '${1+"$@"}'='"$@"'
-  setopt NO_GLOB_SUBST
-else
-  case `(set -o) 2>/dev/null` in
-  *posix*) set -o posix ;;
-esac
-
-fi
-
-
-:
-(as_func_return () {
-  (exit $1)
-}
-as_func_success () {
-  as_func_return 0
-}
-as_func_failure () {
-  as_func_return 1
-}
-as_func_ret_success () {
-  return 0
-}
-as_func_ret_failure () {
-  return 1
-}
-
-exitcode=0
-if as_func_success; then
-  :
-else
-  exitcode=1
-  echo as_func_success failed.
-fi
-
-if as_func_failure; then
-  exitcode=1
-  echo as_func_failure succeeded.
-fi
-
-if as_func_ret_success; then
-  :
-else
-  exitcode=1
-  echo as_func_ret_success failed.
-fi
-
-if as_func_ret_failure; then
-  exitcode=1
-  echo as_func_ret_failure succeeded.
-fi
-
-if ( set x; as_func_ret_success y && test x = "$1" ); then
-  :
-else
-  exitcode=1
-  echo positional parameters were not saved.
-fi
-
-test $exitcode = 0) || { (exit 1); exit 1; }
-
-(
-  as_lineno_1=$LINENO
-  as_lineno_2=$LINENO
-  test "x$as_lineno_1" != "x$as_lineno_2" &&
-  test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2") || { (exit 1); exit 1; }
-
-_ASEOF
-}; then
-  break
-fi
-
-fi
-
-      done
-
-      if test "x$CONFIG_SHELL" != x; then
-  for as_var in BASH_ENV ENV
-        do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
-        done
-        export CONFIG_SHELL
-        exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"}
-fi
-
-
-    if test $as_have_required = no; then
-  echo This script requires a shell more modern than all the
-      echo shells that I found on your system.  Please install a
-      echo modern shell, or manually run the script under such a
-      echo shell if you do have one.
-      { (exit 1); exit 1; }
-fi
-
-
-fi
-
-fi
-
-
-
-(eval "as_func_return () {
-  (exit \$1)
-}
-as_func_success () {
-  as_func_return 0
-}
-as_func_failure () {
-  as_func_return 1
-}
-as_func_ret_success () {
-  return 0
-}
-as_func_ret_failure () {
-  return 1
-}
-
-exitcode=0
-if as_func_success; then
-  :
-else
-  exitcode=1
-  echo as_func_success failed.
-fi
-
-if as_func_failure; then
-  exitcode=1
-  echo as_func_failure succeeded.
-fi
-
-if as_func_ret_success; then
-  :
-else
-  exitcode=1
-  echo as_func_ret_success failed.
-fi
-
-if as_func_ret_failure; then
-  exitcode=1
-  echo as_func_ret_failure succeeded.
-fi
-
-if ( set x; as_func_ret_success y && test x = \"\$1\" ); then
-  :
-else
-  exitcode=1
-  echo positional parameters were not saved.
-fi
-
-test \$exitcode = 0") || {
-  echo No shell found that supports shell functions.
-  echo Please tell autoconf@gnu.org about your system,
-  echo including any error possibly output before this
-  echo message
-}
-
-
-
-  as_lineno_1=$LINENO
-  as_lineno_2=$LINENO
-  test "x$as_lineno_1" != "x$as_lineno_2" &&
-  test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || {
-
-  # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
-  # uniformly replaced by the line number.  The first 'sed' inserts a
-  # line-number line after each line using $LINENO; the second 'sed'
-  # does the real work.  The second script uses 'N' to pair each
-  # line-number line with the line containing $LINENO, and appends
-  # trailing '-' during substitution so that $LINENO is not a special
-  # case at line end.
-  # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
-  # scripts with optimization help from Paolo Bonzini.  Blame Lee
-  # E. McMahon (1931-1989) for sed's syntax.  :-)
-  sed -n '
-    p
-    /[$]LINENO/=
-  ' <$as_myself |
-    sed '
-      s/[$]LINENO.*/&-/
-      t lineno
-      b
-      :lineno
-      N
-      :loop
-      s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
-      t loop
-      s/-\n.*//
-    ' >$as_me.lineno &&
-  chmod +x "$as_me.lineno" ||
-    { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
-   { (exit 1); exit 1; }; }
-
-  # Don't try to exec as it changes $[0], causing all sort of problems
-  # (the dirname of $[0] is not the place where we might find the
-  # original and so on.  Autoconf is especially sensitive to this).
-  . "./$as_me.lineno"
-  # Exit status is that of the last command.
-  exit
-}
-
-
-if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
-  as_dirname=dirname
-else
-  as_dirname=false
-fi
-
-ECHO_C= ECHO_N= ECHO_T=
-case `echo -n x` in
--n*)
-  case `echo 'x\c'` in
-  *c*) ECHO_T='        ';;     # ECHO_T is single tab character.
-  *)   ECHO_C='\c';;
-  esac;;
-*)
-  ECHO_N='-n';;
-esac
-
-if expr a : '\(a\)' >/dev/null 2>&1 &&
-   test "X`expr 00001 : '.*\(...\)'`" = X001; then
-  as_expr=expr
-else
-  as_expr=false
-fi
-
-rm -f conf$$ conf$$.exe conf$$.file
-if test -d conf$$.dir; then
-  rm -f conf$$.dir/conf$$.file
-else
-  rm -f conf$$.dir
-  mkdir conf$$.dir
-fi
-echo >conf$$.file
-if ln -s conf$$.file conf$$ 2>/dev/null; then
-  as_ln_s='ln -s'
-  # ... but there are two gotchas:
-  # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
-  # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
-  # In both cases, we have to default to `cp -p'.
-  ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
-    as_ln_s='cp -p'
-elif ln conf$$.file conf$$ 2>/dev/null; then
-  as_ln_s=ln
-else
-  as_ln_s='cp -p'
-fi
-rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
-rmdir conf$$.dir 2>/dev/null
-
-if mkdir -p . 2>/dev/null; then
-  as_mkdir_p=:
-else
-  test -d ./-p && rmdir ./-p
-  as_mkdir_p=false
-fi
-
-if test -x / >/dev/null 2>&1; then
-  as_test_x='test -x'
-else
-  if ls -dL / >/dev/null 2>&1; then
-    as_ls_L_option=L
-  else
-    as_ls_L_option=
-  fi
-  as_test_x='
-    eval sh -c '\''
-      if test -d "$1"; then
-        test -d "$1/.";
-      else
-       case $1 in
-        -*)set "./$1";;
-       esac;
-       case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in
-       ???[sx]*):;;*)false;;esac;fi
-    '\'' sh
-  '
-fi
-as_executable_p=$as_test_x
-
-# Sed expression to map a string onto a valid CPP name.
-as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
-
-# Sed expression to map a string onto a valid variable name.
-as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
-
-
-
-exec 7<&0 </dev/null 6>&1
-
-# Name of the host.
-# hostname on some systems (SVR3.2, Linux) returns a bogus exit status,
-# so uname gets run too.
-ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
-
-#
-# Initializations.
-#
-ac_default_prefix=/usr/local
-ac_clean_files=
-ac_config_libobj_dir=.
-LIBOBJS=
-cross_compiling=no
-subdirs=
-MFLAGS=
-MAKEFLAGS=
-SHELL=${CONFIG_SHELL-/bin/sh}
-
-# Identity of this package.
-PACKAGE_NAME='xboard'
-PACKAGE_TARNAME='xboard'
-PACKAGE_VERSION='4.3'
-PACKAGE_STRING='xboard 4.3'
-PACKAGE_BUGREPORT=''
-
-# Factoring default headers for most tests.
-ac_includes_default="\
-#include <stdio.h>
-#ifdef HAVE_SYS_TYPES_H
-# include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_STAT_H
-# include <sys/stat.h>
-#endif
-#ifdef STDC_HEADERS
-# include <stdlib.h>
-# include <stddef.h>
-#else
-# ifdef HAVE_STDLIB_H
-#  include <stdlib.h>
-# endif
-#endif
-#ifdef HAVE_STRING_H
-# if !defined STDC_HEADERS && defined HAVE_MEMORY_H
-#  include <memory.h>
-# endif
-# include <string.h>
-#endif
-#ifdef HAVE_STRINGS_H
-# include <strings.h>
-#endif
-#ifdef HAVE_INTTYPES_H
-# include <inttypes.h>
-#endif
-#ifdef HAVE_STDINT_H
-# include <stdint.h>
-#endif
-#ifdef HAVE_UNISTD_H
-# include <unistd.h>
-#endif"
-
-ac_subst_vars='SHELL
-PATH_SEPARATOR
-PACKAGE_NAME
-PACKAGE_TARNAME
-PACKAGE_VERSION
-PACKAGE_STRING
-PACKAGE_BUGREPORT
-exec_prefix
-prefix
-program_transform_name
-bindir
-sbindir
-libexecdir
-datarootdir
-datadir
-sysconfdir
-sharedstatedir
-localstatedir
-includedir
-oldincludedir
-docdir
-infodir
-htmldir
-dvidir
-pdfdir
-psdir
-libdir
-localedir
-mandir
-DEFS
-ECHO_C
-ECHO_N
-ECHO_T
-LIBS
-build_alias
-host_alias
-target_alias
-INSTALL_PROGRAM
-INSTALL_SCRIPT
-INSTALL_DATA
-am__isrc
-CYGPATH_W
-PACKAGE
-VERSION
-ACLOCAL
-AUTOCONF
-AUTOMAKE
-AUTOHEADER
-MAKEINFO
-install_sh
-STRIP
-INSTALL_STRIP_PROGRAM
-mkdir_p
-AWK
-SET_MAKE
-am__leading_dot
-AMTAR
-am__tar
-am__untar
-CC
-CFLAGS
-LDFLAGS
-CPPFLAGS
-ac_ct_CC
-EXEEXT
-OBJEXT
-DEPDIR
-am__include
-am__quote
-AMDEP_TRUE
-AMDEP_FALSE
-AMDEPBACKSLASH
-CCDEPMODE
-am__fastdepCC_TRUE
-am__fastdepCC_FALSE
-LIBOBJS
-LTLIBOBJS
-CPP
-LEX
-LEX_OUTPUT_ROOT
-LEXLIB
-RSH
-MINFO
-NROFF
-NROFFFLAGS
-AWKPATH
-PERLPATH
-GREP
-EGREP
-XMKMF
-X_CFLAGS
-X_PRE_LIBS
-X_LIBS
-X_EXTRA_LIBS
-XAW_LIBS
-build
-build_cpu
-build_vendor
-build_os
-host
-host_cpu
-host_vendor
-host_os
-PRE_XMULIB
-POST_XMULIB
-CONF_CFLAGS
-CONF_LDFLAGS
-ZIPPY_O
-ZIPPY_H
-PRODUCT
-PATCHLEVEL'
-ac_subst_files=''
-      ac_precious_vars='build_alias
-host_alias
-target_alias
-CC
-CFLAGS
-LDFLAGS
-LIBS
-CPPFLAGS
-CPP
-XMKMF'
-
-
-# Initialize some variables set by options.
-ac_init_help=
-ac_init_version=false
-# The variables have the same names as the options, with
-# dashes changed to underlines.
-cache_file=/dev/null
-exec_prefix=NONE
-no_create=
-no_recursion=
-prefix=NONE
-program_prefix=NONE
-program_suffix=NONE
-program_transform_name=s,x,x,
-silent=
-site=
-srcdir=
-verbose=
-x_includes=NONE
-x_libraries=NONE
-
-# Installation directory options.
-# These are left unexpanded so users can "make install exec_prefix=/foo"
-# and all the variables that are supposed to be based on exec_prefix
-# by default will actually change.
-# Use braces instead of parens because sh, perl, etc. also accept them.
-# (The list follows the same order as the GNU Coding Standards.)
-bindir='${exec_prefix}/bin'
-sbindir='${exec_prefix}/sbin'
-libexecdir='${exec_prefix}/libexec'
-datarootdir='${prefix}/share'
-datadir='${datarootdir}'
-sysconfdir='${prefix}/etc'
-sharedstatedir='${prefix}/com'
-localstatedir='${prefix}/var'
-includedir='${prefix}/include'
-oldincludedir='/usr/include'
-docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
-infodir='${datarootdir}/info'
-htmldir='${docdir}'
-dvidir='${docdir}'
-pdfdir='${docdir}'
-psdir='${docdir}'
-libdir='${exec_prefix}/lib'
-localedir='${datarootdir}/locale'
-mandir='${datarootdir}/man'
-
-ac_prev=
-ac_dashdash=
-for ac_option
-do
-  # If the previous option needs an argument, assign it.
-  if test -n "$ac_prev"; then
-    eval $ac_prev=\$ac_option
-    ac_prev=
-    continue
-  fi
-
-  case $ac_option in
-  *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
-  *)   ac_optarg=yes ;;
-  esac
-
-  # Accept the important Cygnus configure options, so we can diagnose typos.
-
-  case $ac_dashdash$ac_option in
-  --)
-    ac_dashdash=yes ;;
-
-  -bindir | --bindir | --bindi | --bind | --bin | --bi)
-    ac_prev=bindir ;;
-  -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
-    bindir=$ac_optarg ;;
-
-  -build | --build | --buil | --bui | --bu)
-    ac_prev=build_alias ;;
-  -build=* | --build=* | --buil=* | --bui=* | --bu=*)
-    build_alias=$ac_optarg ;;
-
-  -cache-file | --cache-file | --cache-fil | --cache-fi \
-  | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
-    ac_prev=cache_file ;;
-  -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
-  | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
-    cache_file=$ac_optarg ;;
-
-  --config-cache | -C)
-    cache_file=config.cache ;;
-
-  -datadir | --datadir | --datadi | --datad)
-    ac_prev=datadir ;;
-  -datadir=* | --datadir=* | --datadi=* | --datad=*)
-    datadir=$ac_optarg ;;
-
-  -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \
-  | --dataroo | --dataro | --datar)
-    ac_prev=datarootdir ;;
-  -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \
-  | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)
-    datarootdir=$ac_optarg ;;
-
-  -disable-* | --disable-*)
-    ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
-    # Reject names that are not valid shell variable names.
-    expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null &&
-      { echo "$as_me: error: invalid feature name: $ac_feature" >&2
-   { (exit 1); exit 1; }; }
-    ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'`
-    eval enable_$ac_feature=no ;;
-
-  -docdir | --docdir | --docdi | --doc | --do)
-    ac_prev=docdir ;;
-  -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)
-    docdir=$ac_optarg ;;
-
-  -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)
-    ac_prev=dvidir ;;
-  -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)
-    dvidir=$ac_optarg ;;
-
-  -enable-* | --enable-*)
-    ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
-    # Reject names that are not valid shell variable names.
-    expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null &&
-      { echo "$as_me: error: invalid feature name: $ac_feature" >&2
-   { (exit 1); exit 1; }; }
-    ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'`
-    eval enable_$ac_feature=\$ac_optarg ;;
-
-  -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
-  | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
-  | --exec | --exe | --ex)
-    ac_prev=exec_prefix ;;
-  -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
-  | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
-  | --exec=* | --exe=* | --ex=*)
-    exec_prefix=$ac_optarg ;;
-
-  -gas | --gas | --ga | --g)
-    # Obsolete; use --with-gas.
-    with_gas=yes ;;
-
-  -help | --help | --hel | --he | -h)
-    ac_init_help=long ;;
-  -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
-    ac_init_help=recursive ;;
-  -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
-    ac_init_help=short ;;
-
-  -host | --host | --hos | --ho)
-    ac_prev=host_alias ;;
-  -host=* | --host=* | --hos=* | --ho=*)
-    host_alias=$ac_optarg ;;
-
-  -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)
-    ac_prev=htmldir ;;
-  -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \
-  | --ht=*)
-    htmldir=$ac_optarg ;;
-
-  -includedir | --includedir | --includedi | --included | --include \
-  | --includ | --inclu | --incl | --inc)
-    ac_prev=includedir ;;
-  -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
-  | --includ=* | --inclu=* | --incl=* | --inc=*)
-    includedir=$ac_optarg ;;
-
-  -infodir | --infodir | --infodi | --infod | --info | --inf)
-    ac_prev=infodir ;;
-  -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
-    infodir=$ac_optarg ;;
-
-  -libdir | --libdir | --libdi | --libd)
-    ac_prev=libdir ;;
-  -libdir=* | --libdir=* | --libdi=* | --libd=*)
-    libdir=$ac_optarg ;;
-
-  -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
-  | --libexe | --libex | --libe)
-    ac_prev=libexecdir ;;
-  -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
-  | --libexe=* | --libex=* | --libe=*)
-    libexecdir=$ac_optarg ;;
-
-  -localedir | --localedir | --localedi | --localed | --locale)
-    ac_prev=localedir ;;
-  -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)
-    localedir=$ac_optarg ;;
-
-  -localstatedir | --localstatedir | --localstatedi | --localstated \
-  | --localstate | --localstat | --localsta | --localst | --locals)
-    ac_prev=localstatedir ;;
-  -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
-  | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)
-    localstatedir=$ac_optarg ;;
-
-  -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
-    ac_prev=mandir ;;
-  -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
-    mandir=$ac_optarg ;;
-
-  -nfp | --nfp | --nf)
-    # Obsolete; use --without-fp.
-    with_fp=no ;;
-
-  -no-create | --no-create | --no-creat | --no-crea | --no-cre \
-  | --no-cr | --no-c | -n)
-    no_create=yes ;;
-
-  -no-recursion | --no-recursion | --no-recursio | --no-recursi \
-  | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
-    no_recursion=yes ;;
-
-  -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
-  | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
-  | --oldin | --oldi | --old | --ol | --o)
-    ac_prev=oldincludedir ;;
-  -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
-  | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
-  | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
-    oldincludedir=$ac_optarg ;;
-
-  -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
-    ac_prev=prefix ;;
-  -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
-    prefix=$ac_optarg ;;
-
-  -program-prefix | --program-prefix | --program-prefi | --program-pref \
-  | --program-pre | --program-pr | --program-p)
-    ac_prev=program_prefix ;;
-  -program-prefix=* | --program-prefix=* | --program-prefi=* \
-  | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
-    program_prefix=$ac_optarg ;;
-
-  -program-suffix | --program-suffix | --program-suffi | --program-suff \
-  | --program-suf | --program-su | --program-s)
-    ac_prev=program_suffix ;;
-  -program-suffix=* | --program-suffix=* | --program-suffi=* \
-  | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
-    program_suffix=$ac_optarg ;;
-
-  -program-transform-name | --program-transform-name \
-  | --program-transform-nam | --program-transform-na \
-  | --program-transform-n | --program-transform- \
-  | --program-transform | --program-transfor \
-  | --program-transfo | --program-transf \
-  | --program-trans | --program-tran \
-  | --progr-tra | --program-tr | --program-t)
-    ac_prev=program_transform_name ;;
-  -program-transform-name=* | --program-transform-name=* \
-  | --program-transform-nam=* | --program-transform-na=* \
-  | --program-transform-n=* | --program-transform-=* \
-  | --program-transform=* | --program-transfor=* \
-  | --program-transfo=* | --program-transf=* \
-  | --program-trans=* | --program-tran=* \
-  | --progr-tra=* | --program-tr=* | --program-t=*)
-    program_transform_name=$ac_optarg ;;
-
-  -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)
-    ac_prev=pdfdir ;;
-  -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*)
-    pdfdir=$ac_optarg ;;
-
-  -psdir | --psdir | --psdi | --psd | --ps)
-    ac_prev=psdir ;;
-  -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*)
-    psdir=$ac_optarg ;;
-
-  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
-  | -silent | --silent | --silen | --sile | --sil)
-    silent=yes ;;
-
-  -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
-    ac_prev=sbindir ;;
-  -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
-  | --sbi=* | --sb=*)
-    sbindir=$ac_optarg ;;
-
-  -sharedstatedir | --sharedstatedir | --sharedstatedi \
-  | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
-  | --sharedst | --shareds | --shared | --share | --shar \
-  | --sha | --sh)
-    ac_prev=sharedstatedir ;;
-  -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
-  | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
-  | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
-  | --sha=* | --sh=*)
-    sharedstatedir=$ac_optarg ;;
-
-  -site | --site | --sit)
-    ac_prev=site ;;
-  -site=* | --site=* | --sit=*)
-    site=$ac_optarg ;;
-
-  -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
-    ac_prev=srcdir ;;
-  -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
-    srcdir=$ac_optarg ;;
-
-  -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
-  | --syscon | --sysco | --sysc | --sys | --sy)
-    ac_prev=sysconfdir ;;
-  -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
-  | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
-    sysconfdir=$ac_optarg ;;
-
-  -target | --target | --targe | --targ | --tar | --ta | --t)
-    ac_prev=target_alias ;;
-  -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
-    target_alias=$ac_optarg ;;
-
-  -v | -verbose | --verbose | --verbos | --verbo | --verb)
-    verbose=yes ;;
-
-  -version | --version | --versio | --versi | --vers | -V)
-    ac_init_version=: ;;
-
-  -with-* | --with-*)
-    ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
-    # Reject names that are not valid shell variable names.
-    expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null &&
-      { echo "$as_me: error: invalid package name: $ac_package" >&2
-   { (exit 1); exit 1; }; }
-    ac_package=`echo $ac_package | sed 's/[-.]/_/g'`
-    eval with_$ac_package=\$ac_optarg ;;
-
-  -without-* | --without-*)
-    ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'`
-    # Reject names that are not valid shell variable names.
-    expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null &&
-      { echo "$as_me: error: invalid package name: $ac_package" >&2
-   { (exit 1); exit 1; }; }
-    ac_package=`echo $ac_package | sed 's/[-.]/_/g'`
-    eval with_$ac_package=no ;;
-
-  --x)
-    # Obsolete; use --with-x.
-    with_x=yes ;;
-
-  -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
-  | --x-incl | --x-inc | --x-in | --x-i)
-    ac_prev=x_includes ;;
-  -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
-  | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
-    x_includes=$ac_optarg ;;
-
-  -x-libraries | --x-libraries | --x-librarie | --x-librari \
-  | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
-    ac_prev=x_libraries ;;
-  -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
-  | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
-    x_libraries=$ac_optarg ;;
-
-  -*) { echo "$as_me: error: unrecognized option: $ac_option
-Try \`$0 --help' for more information." >&2
-   { (exit 1); exit 1; }; }
-    ;;
-
-  *=*)
-    ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
-    # Reject names that are not valid shell variable names.
-    expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null &&
-      { echo "$as_me: error: invalid variable name: $ac_envvar" >&2
-   { (exit 1); exit 1; }; }
-    eval $ac_envvar=\$ac_optarg
-    export $ac_envvar ;;
-
-  *)
-    # FIXME: should be removed in autoconf 3.0.
-    echo "$as_me: WARNING: you should use --build, --host, --target" >&2
-    expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
-      echo "$as_me: WARNING: invalid host type: $ac_option" >&2
-    : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}
-    ;;
-
-  esac
-done
-
-if test -n "$ac_prev"; then
-  ac_option=--`echo $ac_prev | sed 's/_/-/g'`
-  { echo "$as_me: error: missing argument to $ac_option" >&2
-   { (exit 1); exit 1; }; }
-fi
-
-# Be sure to have absolute directory names.
-for ac_var in  exec_prefix prefix bindir sbindir libexecdir datarootdir \
-               datadir sysconfdir sharedstatedir localstatedir includedir \
-               oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
-               libdir localedir mandir
-do
-  eval ac_val=\$$ac_var
-  case $ac_val in
-    [\\/$]* | ?:[\\/]* )  continue;;
-    NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
-  esac
-  { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
-   { (exit 1); exit 1; }; }
-done
-
-# There might be people who depend on the old broken behavior: `$host'
-# used to hold the argument of --host etc.
-# FIXME: To remove some day.
-build=$build_alias
-host=$host_alias
-target=$target_alias
-
-# FIXME: To remove some day.
-if test "x$host_alias" != x; then
-  if test "x$build_alias" = x; then
-    cross_compiling=maybe
-    echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host.
-    If a cross compiler is detected then cross compile mode will be used." >&2
-  elif test "x$build_alias" != "x$host_alias"; then
-    cross_compiling=yes
-  fi
-fi
-
-ac_tool_prefix=
-test -n "$host_alias" && ac_tool_prefix=$host_alias-
-
-test "$silent" = yes && exec 6>/dev/null
-
-
-ac_pwd=`pwd` && test -n "$ac_pwd" &&
-ac_ls_di=`ls -di .` &&
-ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
-  { echo "$as_me: error: Working directory cannot be determined" >&2
-   { (exit 1); exit 1; }; }
-test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
-  { echo "$as_me: error: pwd does not report name of working directory" >&2
-   { (exit 1); exit 1; }; }
-
-
-# Find the source files, if location was not specified.
-if test -z "$srcdir"; then
-  ac_srcdir_defaulted=yes
-  # Try the directory containing this script, then the parent directory.
-  ac_confdir=`$as_dirname -- "$0" ||
-$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-        X"$0" : 'X\(//\)[^/]' \| \
-        X"$0" : 'X\(//\)$' \| \
-        X"$0" : 'X\(/\)' \| . 2>/dev/null ||
-echo X"$0" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-           s//\1/
-           q
-         }
-         /^X\(\/\/\)[^/].*/{
-           s//\1/
-           q
-         }
-         /^X\(\/\/\)$/{
-           s//\1/
-           q
-         }
-         /^X\(\/\).*/{
-           s//\1/
-           q
-         }
-         s/.*/./; q'`
-  srcdir=$ac_confdir
-  if test ! -r "$srcdir/$ac_unique_file"; then
-    srcdir=..
-  fi
-else
-  ac_srcdir_defaulted=no
-fi
-if test ! -r "$srcdir/$ac_unique_file"; then
-  test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
-  { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2
-   { (exit 1); exit 1; }; }
-fi
-ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
-ac_abs_confdir=`(
-       cd "$srcdir" && test -r "./$ac_unique_file" || { echo "$as_me: error: $ac_msg" >&2
-   { (exit 1); exit 1; }; }
-       pwd)`
-# When building in place, set srcdir=.
-if test "$ac_abs_confdir" = "$ac_pwd"; then
-  srcdir=.
-fi
-# Remove unnecessary trailing slashes from srcdir.
-# Double slashes in file names in object file debugging info
-# mess up M-x gdb in Emacs.
-case $srcdir in
-*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;;
-esac
-for ac_var in $ac_precious_vars; do
-  eval ac_env_${ac_var}_set=\${${ac_var}+set}
-  eval ac_env_${ac_var}_value=\$${ac_var}
-  eval ac_cv_env_${ac_var}_set=\${${ac_var}+set}
-  eval ac_cv_env_${ac_var}_value=\$${ac_var}
-done
-
-#
-# Report the --help message.
-#
-if test "$ac_init_help" = "long"; then
-  # Omit some internal or obsolete options to make the list less imposing.
-  # This message is too long to be a string in the A/UX 3.1 sh.
-  cat <<_ACEOF
-\`configure' configures xboard 4.3 to adapt to many kinds of systems.
-
-Usage: $0 [OPTION]... [VAR=VALUE]...
-
-To assign environment variables (e.g., CC, CFLAGS...), specify them as
-VAR=VALUE.  See below for descriptions of some of the useful variables.
-
-Defaults for the options are specified in brackets.
-
-Configuration:
-  -h, --help              display this help and exit
-      --help=short        display options specific to this package
-      --help=recursive    display the short help of all the included packages
-  -V, --version           display version information and exit
-  -q, --quiet, --silent   do not print \`checking...' messages
-      --cache-file=FILE   cache test results in FILE [disabled]
-  -C, --config-cache      alias for \`--cache-file=config.cache'
-  -n, --no-create         do not create output files
-      --srcdir=DIR        find the sources in DIR [configure dir or \`..']
-
-Installation directories:
-  --prefix=PREFIX         install architecture-independent files in PREFIX
-                         [$ac_default_prefix]
-  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
-                         [PREFIX]
-
-By default, \`make install' will install all the files in
-\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc.  You can specify
-an installation prefix other than \`$ac_default_prefix' using \`--prefix',
-for instance \`--prefix=\$HOME'.
-
-For better control, use the options below.
-
-Fine tuning of the installation directories:
-  --bindir=DIR           user executables [EPREFIX/bin]
-  --sbindir=DIR          system admin executables [EPREFIX/sbin]
-  --libexecdir=DIR       program executables [EPREFIX/libexec]
-  --sysconfdir=DIR       read-only single-machine data [PREFIX/etc]
-  --sharedstatedir=DIR   modifiable architecture-independent data [PREFIX/com]
-  --localstatedir=DIR    modifiable single-machine data [PREFIX/var]
-  --libdir=DIR           object code libraries [EPREFIX/lib]
-  --includedir=DIR       C header files [PREFIX/include]
-  --oldincludedir=DIR    C header files for non-gcc [/usr/include]
-  --datarootdir=DIR      read-only arch.-independent data root [PREFIX/share]
-  --datadir=DIR          read-only architecture-independent data [DATAROOTDIR]
-  --infodir=DIR          info documentation [DATAROOTDIR/info]
-  --localedir=DIR        locale-dependent data [DATAROOTDIR/locale]
-  --mandir=DIR           man documentation [DATAROOTDIR/man]
-  --docdir=DIR           documentation root [DATAROOTDIR/doc/xboard]
-  --htmldir=DIR          html documentation [DOCDIR]
-  --dvidir=DIR           dvi documentation [DOCDIR]
-  --pdfdir=DIR           pdf documentation [DOCDIR]
-  --psdir=DIR            ps documentation [DOCDIR]
-_ACEOF
-
-  cat <<\_ACEOF
-
-Program names:
-  --program-prefix=PREFIX            prepend PREFIX to installed program names
-  --program-suffix=SUFFIX            append SUFFIX to installed program names
-  --program-transform-name=PROGRAM   run sed PROGRAM on installed program names
-
-X features:
-  --x-includes=DIR    X include files are in DIR
-  --x-libraries=DIR   X library files are in DIR
-
-System types:
-  --build=BUILD     configure for building on BUILD [guessed]
-  --host=HOST       cross-compile to build programs to run on HOST [BUILD]
-_ACEOF
-fi
-
-if test -n "$ac_init_help"; then
-  case $ac_init_help in
-     short | recursive ) echo "Configuration of xboard 4.3:";;
-   esac
-  cat <<\_ACEOF
-
-Optional Features:
-  --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
-  --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
-  --disable-dependency-tracking  speeds up one-time build
-  --enable-dependency-tracking   do not reject slow dependency extractors
-  --enable-xpm            libXpm will be used if found (default)
-  --disable-xpm           libXpm will not be used
-  --enable-ptys           force use of pseudo-ttys with child processes
-  --disable-ptys          force use of pipes with child processes
-  --enable-zippy          support interfacing a chess program to ICS (default)
-  --disable-zippy         do not support interfacing a chess program to ICS
-  --enable-sigint         sending SIGINT (^C) wakes up GNU Chess (default)
-  --disable-sigint        typing a command wakes up GNU Chess
-
-Optional Packages:
-  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
-  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
-  --with-x                use the X Window System
-  --with-Xaw3d            use Xaw3d instead of Xaw
-
-Some influential environment variables:
-  CC          C compiler command
-  CFLAGS      C compiler flags
-  LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
-              nonstandard directory <lib dir>
-  LIBS        libraries to pass to the linker, e.g. -l<library>
-  CPPFLAGS    C/C++/Objective C preprocessor flags, e.g. -I<include dir> if
-              you have headers in a nonstandard directory <include dir>
-  CPP         C preprocessor
-  XMKMF       Path to xmkmf, Makefile generator for X Window System
-
-Use these variables to override the choices made by `configure' or to help
-it to find libraries and programs with nonstandard names/locations.
-
-_ACEOF
-ac_status=$?
-fi
-
-if test "$ac_init_help" = "recursive"; then
-  # If there are subdirs, report their specific --help.
-  for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
-    test -d "$ac_dir" || continue
-    ac_builddir=.
-
-case "$ac_dir" in
-.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
-*)
-  ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
-  # A ".." for each directory in $ac_dir_suffix.
-  ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'`
-  case $ac_top_builddir_sub in
-  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
-  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
-  esac ;;
-esac
-ac_abs_top_builddir=$ac_pwd
-ac_abs_builddir=$ac_pwd$ac_dir_suffix
-# for backward compatibility:
-ac_top_builddir=$ac_top_build_prefix
-
-case $srcdir in
-  .)  # We are building in place.
-    ac_srcdir=.
-    ac_top_srcdir=$ac_top_builddir_sub
-    ac_abs_top_srcdir=$ac_pwd ;;
-  [\\/]* | ?:[\\/]* )  # Absolute name.
-    ac_srcdir=$srcdir$ac_dir_suffix;
-    ac_top_srcdir=$srcdir
-    ac_abs_top_srcdir=$srcdir ;;
-  *) # Relative name.
-    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
-    ac_top_srcdir=$ac_top_build_prefix$srcdir
-    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
-esac
-ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
-
-    cd "$ac_dir" || { ac_status=$?; continue; }
-    # Check for guested configure.
-    if test -f "$ac_srcdir/configure.gnu"; then
-      echo &&
-      $SHELL "$ac_srcdir/configure.gnu" --help=recursive
-    elif test -f "$ac_srcdir/configure"; then
-      echo &&
-      $SHELL "$ac_srcdir/configure" --help=recursive
-    else
-      echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
-    fi || ac_status=$?
-    cd "$ac_pwd" || { ac_status=$?; break; }
-  done
-fi
-
-test -n "$ac_init_help" && exit $ac_status
-if $ac_init_version; then
-  cat <<\_ACEOF
-xboard configure 4.3
-generated by GNU Autoconf 2.61
-
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
-2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
-This configure script is free software; the Free Software Foundation
-gives unlimited permission to copy, distribute and modify it.
-_ACEOF
-  exit
-fi
-cat >config.log <<_ACEOF
-This file contains any messages produced by compilers while
-running configure, to aid debugging if configure makes a mistake.
-
-It was created by xboard $as_me 4.3, which was
-generated by GNU Autoconf 2.61.  Invocation command line was
-
-  $ $0 $@
-
-_ACEOF
-exec 5>>config.log
-{
-cat <<_ASUNAME
-## --------- ##
-## Platform. ##
-## --------- ##
-
-hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
-uname -m = `(uname -m) 2>/dev/null || echo unknown`
-uname -r = `(uname -r) 2>/dev/null || echo unknown`
-uname -s = `(uname -s) 2>/dev/null || echo unknown`
-uname -v = `(uname -v) 2>/dev/null || echo unknown`
-
-/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
-/bin/uname -X     = `(/bin/uname -X) 2>/dev/null     || echo unknown`
-
-/bin/arch              = `(/bin/arch) 2>/dev/null              || echo unknown`
-/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null       || echo unknown`
-/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
-/usr/bin/hostinfo      = `(/usr/bin/hostinfo) 2>/dev/null      || echo unknown`
-/bin/machine           = `(/bin/machine) 2>/dev/null           || echo unknown`
-/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null       || echo unknown`
-/bin/universe          = `(/bin/universe) 2>/dev/null          || echo unknown`
-
-_ASUNAME
-
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  echo "PATH: $as_dir"
-done
-IFS=$as_save_IFS
-
-} >&5
-
-cat >&5 <<_ACEOF
-
-
-## ----------- ##
-## Core tests. ##
-## ----------- ##
-
-_ACEOF
-
-
-# Keep a trace of the command line.
-# Strip out --no-create and --no-recursion so they do not pile up.
-# Strip out --silent because we don't want to record it for future runs.
-# Also quote any args containing shell meta-characters.
-# Make two passes to allow for proper duplicate-argument suppression.
-ac_configure_args=
-ac_configure_args0=
-ac_configure_args1=
-ac_must_keep_next=false
-for ac_pass in 1 2
-do
-  for ac_arg
-  do
-    case $ac_arg in
-    -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
-    -q | -quiet | --quiet | --quie | --qui | --qu | --q \
-    | -silent | --silent | --silen | --sile | --sil)
-      continue ;;
-    *\'*)
-      ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
-    esac
-    case $ac_pass in
-    1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;;
-    2)
-      ac_configure_args1="$ac_configure_args1 '$ac_arg'"
-      if test $ac_must_keep_next = true; then
-       ac_must_keep_next=false # Got value, back to normal.
-      else
-       case $ac_arg in
-         *=* | --config-cache | -C | -disable-* | --disable-* \
-         | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
-         | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
-         | -with-* | --with-* | -without-* | --without-* | --x)
-           case "$ac_configure_args0 " in
-             "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
-           esac
-           ;;
-         -* ) ac_must_keep_next=true ;;
-       esac
-      fi
-      ac_configure_args="$ac_configure_args '$ac_arg'"
-      ;;
-    esac
-  done
-done
-$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; }
-$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; }
-
-# When interrupted or exit'd, cleanup temporary files, and complete
-# config.log.  We remove comments because anyway the quotes in there
-# would cause problems or look ugly.
-# WARNING: Use '\'' to represent an apostrophe within the trap.
-# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
-trap 'exit_status=$?
-  # Save into config.log some information that might help in debugging.
-  {
-    echo
-
-    cat <<\_ASBOX
-## ---------------- ##
-## Cache variables. ##
-## ---------------- ##
-_ASBOX
-    echo
-    # The following way of writing the cache mishandles newlines in values,
-(
-  for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do
-    eval ac_val=\$$ac_var
-    case $ac_val in #(
-    *${as_nl}*)
-      case $ac_var in #(
-      *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5
-echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;;
-      esac
-      case $ac_var in #(
-      _ | IFS | as_nl) ;; #(
-      *) $as_unset $ac_var ;;
-      esac ;;
-    esac
-  done
-  (set) 2>&1 |
-    case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(
-    *${as_nl}ac_space=\ *)
-      sed -n \
-       "s/'\''/'\''\\\\'\'''\''/g;
-         s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p"
-      ;; #(
-    *)
-      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
-      ;;
-    esac |
-    sort
-)
-    echo
-
-    cat <<\_ASBOX
-## ----------------- ##
-## Output variables. ##
-## ----------------- ##
-_ASBOX
-    echo
-    for ac_var in $ac_subst_vars
-    do
-      eval ac_val=\$$ac_var
-      case $ac_val in
-      *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
-      esac
-      echo "$ac_var='\''$ac_val'\''"
-    done | sort
-    echo
-
-    if test -n "$ac_subst_files"; then
-      cat <<\_ASBOX
-## ------------------- ##
-## File substitutions. ##
-## ------------------- ##
-_ASBOX
-      echo
-      for ac_var in $ac_subst_files
-      do
-       eval ac_val=\$$ac_var
-       case $ac_val in
-       *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
-       esac
-       echo "$ac_var='\''$ac_val'\''"
-      done | sort
-      echo
-    fi
-
-    if test -s confdefs.h; then
-      cat <<\_ASBOX
-## ----------- ##
-## confdefs.h. ##
-## ----------- ##
-_ASBOX
-      echo
-      cat confdefs.h
-      echo
-    fi
-    test "$ac_signal" != 0 &&
-      echo "$as_me: caught signal $ac_signal"
-    echo "$as_me: exit $exit_status"
-  } >&5
-  rm -f core *.core core.conftest.* &&
-    rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
-    exit $exit_status
-' 0
-for ac_signal in 1 2 13 15; do
-  trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal
-done
-ac_signal=0
-
-# confdefs.h avoids OS command line length limits that DEFS can exceed.
-rm -f -r conftest* confdefs.h
-
-# Predefined preprocessor variables.
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_NAME "$PACKAGE_NAME"
-_ACEOF
-
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
-_ACEOF
-
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_VERSION "$PACKAGE_VERSION"
-_ACEOF
-
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_STRING "$PACKAGE_STRING"
-_ACEOF
-
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
-_ACEOF
-
-
-# Let the site file select an alternate cache file if it wants to.
-# Prefer explicitly selected file to automatically selected ones.
-if test -n "$CONFIG_SITE"; then
-  set x "$CONFIG_SITE"
-elif test "x$prefix" != xNONE; then
-  set x "$prefix/share/config.site" "$prefix/etc/config.site"
-else
-  set x "$ac_default_prefix/share/config.site" \
-       "$ac_default_prefix/etc/config.site"
-fi
-shift
-for ac_site_file
-do
-  if test -r "$ac_site_file"; then
-    { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5
-echo "$as_me: loading site script $ac_site_file" >&6;}
-    sed 's/^/| /' "$ac_site_file" >&5
-    . "$ac_site_file"
-  fi
-done
-
-if test -r "$cache_file"; then
-  # Some versions of bash will fail to source /dev/null (special
-  # files actually), so we avoid doing that.
-  if test -f "$cache_file"; then
-    { echo "$as_me:$LINENO: loading cache $cache_file" >&5
-echo "$as_me: loading cache $cache_file" >&6;}
-    case $cache_file in
-      [\\/]* | ?:[\\/]* ) . "$cache_file";;
-      *)                      . "./$cache_file";;
-    esac
-  fi
-else
-  { echo "$as_me:$LINENO: creating cache $cache_file" >&5
-echo "$as_me: creating cache $cache_file" >&6;}
-  >$cache_file
-fi
-
-# Check that the precious variables saved in the cache have kept the same
-# value.
-ac_cache_corrupted=false
-for ac_var in $ac_precious_vars; do
-  eval ac_old_set=\$ac_cv_env_${ac_var}_set
-  eval ac_new_set=\$ac_env_${ac_var}_set
-  eval ac_old_val=\$ac_cv_env_${ac_var}_value
-  eval ac_new_val=\$ac_env_${ac_var}_value
-  case $ac_old_set,$ac_new_set in
-    set,)
-      { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
-echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
-      ac_cache_corrupted=: ;;
-    ,set)
-      { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5
-echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
-      ac_cache_corrupted=: ;;
-    ,);;
-    *)
-      if test "x$ac_old_val" != "x$ac_new_val"; then
-       { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5
-echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
-       { echo "$as_me:$LINENO:   former value:  $ac_old_val" >&5
-echo "$as_me:   former value:  $ac_old_val" >&2;}
-       { echo "$as_me:$LINENO:   current value: $ac_new_val" >&5
-echo "$as_me:   current value: $ac_new_val" >&2;}
-       ac_cache_corrupted=:
-      fi;;
-  esac
-  # Pass precious variables to config.status.
-  if test "$ac_new_set" = set; then
-    case $ac_new_val in
-    *\'*) ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
-    *) ac_arg=$ac_var=$ac_new_val ;;
-    esac
-    case " $ac_configure_args " in
-      *" '$ac_arg' "*) ;; # Avoid dups.  Use of quotes ensures accuracy.
-      *) ac_configure_args="$ac_configure_args '$ac_arg'" ;;
-    esac
-  fi
-done
-if $ac_cache_corrupted; then
-  { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5
-echo "$as_me: error: changes in the environment can compromise the build" >&2;}
-  { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5
-echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;}
-   { (exit 1); exit 1; }; }
-fi
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-am__api_version='1.10'
-
-ac_aux_dir=
-for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do
-  if test -f "$ac_dir/install-sh"; then
-    ac_aux_dir=$ac_dir
-    ac_install_sh="$ac_aux_dir/install-sh -c"
-    break
-  elif test -f "$ac_dir/install.sh"; then
-    ac_aux_dir=$ac_dir
-    ac_install_sh="$ac_aux_dir/install.sh -c"
-    break
-  elif test -f "$ac_dir/shtool"; then
-    ac_aux_dir=$ac_dir
-    ac_install_sh="$ac_aux_dir/shtool install -c"
-    break
-  fi
-done
-if test -z "$ac_aux_dir"; then
-  { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&5
-echo "$as_me: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&2;}
-   { (exit 1); exit 1; }; }
-fi
-
-# These three variables are undocumented and unsupported,
-# and are intended to be withdrawn in a future Autoconf release.
-# They can cause serious problems if a builder's source tree is in a directory
-# whose full name contains unusual characters.
-ac_config_guess="$SHELL $ac_aux_dir/config.guess"  # Please don't use this var.
-ac_config_sub="$SHELL $ac_aux_dir/config.sub"  # Please don't use this var.
-ac_configure="$SHELL $ac_aux_dir/configure"  # Please don't use this var.
-
-
-# Find a good install program.  We prefer a C program (faster),
-# so one script is as good as another.  But avoid the broken or
-# incompatible versions:
-# SysV /etc/install, /usr/sbin/install
-# SunOS /usr/etc/install
-# IRIX /sbin/install
-# AIX /bin/install
-# AmigaOS /C/install, which installs bootblocks on floppy discs
-# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
-# AFS /usr/afsws/bin/install, which mishandles nonexistent args
-# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
-# OS/2's system install, which has a completely different semantic
-# ./install, which can be erroneously created by make from ./install.sh.
-{ echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5
-echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6; }
-if test -z "$INSTALL"; then
-if test "${ac_cv_path_install+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  # Account for people who put trailing slashes in PATH elements.
-case $as_dir/ in
-  ./ | .// | /cC/* | \
-  /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
-  ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \
-  /usr/ucb/* ) ;;
-  *)
-    # OSF1 and SCO ODT 3.0 have their own names for install.
-    # Don't use installbsd from OSF since it installs stuff as root
-    # by default.
-    for ac_prog in ginstall scoinst install; do
-      for ac_exec_ext in '' $ac_executable_extensions; do
-       if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then
-         if test $ac_prog = install &&
-           grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
-           # AIX install.  It has an incompatible calling convention.
-           :
-         elif test $ac_prog = install &&
-           grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
-           # program-specific install script used by HP pwplus--don't use.
-           :
-         else
-           ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
-           break 3
-         fi
-       fi
-      done
-    done
-    ;;
-esac
-done
-IFS=$as_save_IFS
-
-
-fi
-  if test "${ac_cv_path_install+set}" = set; then
-    INSTALL=$ac_cv_path_install
-  else
-    # As a last resort, use the slow shell script.  Don't cache a
-    # value for INSTALL within a source directory, because that will
-    # break other packages using the cache if that directory is
-    # removed, or if the value is a relative name.
-    INSTALL=$ac_install_sh
-  fi
-fi
-{ echo "$as_me:$LINENO: result: $INSTALL" >&5
-echo "${ECHO_T}$INSTALL" >&6; }
-
-# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
-# It thinks the first close brace ends the variable substitution.
-test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
-
-test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
-
-test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
-
-{ echo "$as_me:$LINENO: checking whether build environment is sane" >&5
-echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6; }
-# Just in case
-sleep 1
-echo timestamp > conftest.file
-# Do `set' in a subshell so we don't clobber the current shell's
-# arguments.  Must try -L first in case configure is actually a
-# symlink; some systems play weird games with the mod time of symlinks
-# (eg FreeBSD returns the mod time of the symlink's containing
-# directory).
-if (
-   set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null`
-   if test "$*" = "X"; then
-      # -L didn't work.
-      set X `ls -t $srcdir/configure conftest.file`
-   fi
-   rm -f conftest.file
-   if test "$*" != "X $srcdir/configure conftest.file" \
-      && test "$*" != "X conftest.file $srcdir/configure"; then
-
-      # If neither matched, then we have a broken ls.  This can happen
-      # if, for instance, CONFIG_SHELL is bash and it inherits a
-      # broken ls alias from the environment.  This has actually
-      # happened.  Such a system could not be considered "sane".
-      { { echo "$as_me:$LINENO: error: ls -t appears to fail.  Make sure there is not a broken
-alias in your environment" >&5
-echo "$as_me: error: ls -t appears to fail.  Make sure there is not a broken
-alias in your environment" >&2;}
-   { (exit 1); exit 1; }; }
-   fi
-
-   test "$2" = conftest.file
-   )
-then
-   # Ok.
-   :
-else
-   { { echo "$as_me:$LINENO: error: newly created file is older than distributed files!
-Check your system clock" >&5
-echo "$as_me: error: newly created file is older than distributed files!
-Check your system clock" >&2;}
-   { (exit 1); exit 1; }; }
-fi
-{ echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6; }
-test "$program_prefix" != NONE &&
-  program_transform_name="s&^&$program_prefix&;$program_transform_name"
-# Use a double $ so make ignores it.
-test "$program_suffix" != NONE &&
-  program_transform_name="s&\$&$program_suffix&;$program_transform_name"
-# Double any \ or $.  echo might interpret backslashes.
-# By default was `s,x,x', remove it if useless.
-cat <<\_ACEOF >conftest.sed
-s/[\\$]/&&/g;s/;s,x,x,$//
-_ACEOF
-program_transform_name=`echo $program_transform_name | sed -f conftest.sed`
-rm -f conftest.sed
-
-# expand $ac_aux_dir to an absolute path
-am_aux_dir=`cd $ac_aux_dir && pwd`
-
-test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing"
-# Use eval to expand $SHELL
-if eval "$MISSING --run true"; then
-  am_missing_run="$MISSING --run "
-else
-  am_missing_run=
-  { echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5
-echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;}
-fi
-
-{ echo "$as_me:$LINENO: checking for a thread-safe mkdir -p" >&5
-echo $ECHO_N "checking for a thread-safe mkdir -p... $ECHO_C" >&6; }
-if test -z "$MKDIR_P"; then
-  if test "${ac_cv_path_mkdir+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for ac_prog in mkdir gmkdir; do
-        for ac_exec_ext in '' $ac_executable_extensions; do
-          { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue
-          case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #(
-            'mkdir (GNU coreutils) '* | \
-            'mkdir (coreutils) '* | \
-            'mkdir (fileutils) '4.1*)
-              ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext
-              break 3;;
-          esac
-        done
-       done
-done
-IFS=$as_save_IFS
-
-fi
-
-  if test "${ac_cv_path_mkdir+set}" = set; then
-    MKDIR_P="$ac_cv_path_mkdir -p"
-  else
-    # As a last resort, use the slow shell script.  Don't cache a
-    # value for MKDIR_P within a source directory, because that will
-    # break other packages using the cache if that directory is
-    # removed, or if the value is a relative name.
-    test -d ./--version && rmdir ./--version
-    MKDIR_P="$ac_install_sh -d"
-  fi
-fi
-{ echo "$as_me:$LINENO: result: $MKDIR_P" >&5
-echo "${ECHO_T}$MKDIR_P" >&6; }
-
-mkdir_p="$MKDIR_P"
-case $mkdir_p in
-  [\\/$]* | ?:[\\/]*) ;;
-  */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
-esac
-
-for ac_prog in gawk mawk nawk awk
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
-if test "${ac_cv_prog_AWK+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test -n "$AWK"; then
-  ac_cv_prog_AWK="$AWK" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_AWK="$ac_prog"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-IFS=$as_save_IFS
-
-fi
-fi
-AWK=$ac_cv_prog_AWK
-if test -n "$AWK"; then
-  { echo "$as_me:$LINENO: result: $AWK" >&5
-echo "${ECHO_T}$AWK" >&6; }
-else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
-fi
-
-
-  test -n "$AWK" && break
-done
-
-{ echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5
-echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6; }
-set x ${MAKE-make}; ac_make=`echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
-if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.make <<\_ACEOF
-SHELL = /bin/sh
-all:
-       @echo '@@@%%%=$(MAKE)=@@@%%%'
-_ACEOF
-# GNU make sometimes prints "make[1]: Entering...", which would confuse us.
-case `${MAKE-make} -f conftest.make 2>/dev/null` in
-  *@@@%%%=?*=@@@%%%*)
-    eval ac_cv_prog_make_${ac_make}_set=yes;;
-  *)
-    eval ac_cv_prog_make_${ac_make}_set=no;;
-esac
-rm -f conftest.make
-fi
-if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
-  { echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6; }
-  SET_MAKE=
-else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
-  SET_MAKE="MAKE=${MAKE-make}"
-fi
-
-rm -rf .tst 2>/dev/null
-mkdir .tst 2>/dev/null
-if test -d .tst; then
-  am__leading_dot=.
-else
-  am__leading_dot=_
-fi
-rmdir .tst 2>/dev/null
-
-if test "`cd $srcdir && pwd`" != "`pwd`"; then
-  # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
-  # is not polluted with repeated "-I."
-  am__isrc=' -I$(srcdir)'
-  # test to see if srcdir already configured
-  if test -f $srcdir/config.status; then
-    { { echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5
-echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;}
-   { (exit 1); exit 1; }; }
-  fi
-fi
-
-# test whether we have cygpath
-if test -z "$CYGPATH_W"; then
-  if (cygpath --version) >/dev/null 2>/dev/null; then
-    CYGPATH_W='cygpath -w'
-  else
-    CYGPATH_W=echo
-  fi
-fi
-
-
-# Define the identity of the package.
- PACKAGE='xboard'
- VERSION='4.3'
-
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE "$PACKAGE"
-_ACEOF
-
-
-cat >>confdefs.h <<_ACEOF
-#define VERSION "$VERSION"
-_ACEOF
-
-# Some tools Automake needs.
-
-ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"}
-
-
-AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"}
-
-
-AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"}
-
-
-AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"}
-
-
-MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
-
-install_sh=${install_sh-"\$(SHELL) $am_aux_dir/install-sh"}
-
-# Installed binaries are usually stripped using `strip' when the user
-# run `make install-strip'.  However `strip' might not be the right
-# tool to use in cross-compilation environments, therefore Automake
-# will honor the `STRIP' environment variable to overrule this program.
-if test "$cross_compiling" != no; then
-  if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
-set dummy ${ac_tool_prefix}strip; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
-if test "${ac_cv_prog_STRIP+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test -n "$STRIP"; then
-  ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_STRIP="${ac_tool_prefix}strip"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-IFS=$as_save_IFS
-
-fi
-fi
-STRIP=$ac_cv_prog_STRIP
-if test -n "$STRIP"; then
-  { echo "$as_me:$LINENO: result: $STRIP" >&5
-echo "${ECHO_T}$STRIP" >&6; }
-else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_STRIP"; then
-  ac_ct_STRIP=$STRIP
-  # Extract the first word of "strip", so it can be a program name with args.
-set dummy strip; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
-if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test -n "$ac_ct_STRIP"; then
-  ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_ac_ct_STRIP="strip"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
-if test -n "$ac_ct_STRIP"; then
-  { echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5
-echo "${ECHO_T}$ac_ct_STRIP" >&6; }
-else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
-fi
-
-  if test "x$ac_ct_STRIP" = x; then
-    STRIP=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
-whose name does not start with the host triplet.  If you think this
-configuration is useful to you, please write to autoconf@gnu.org." >&5
-echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
-whose name does not start with the host triplet.  If you think this
-configuration is useful to you, please write to autoconf@gnu.org." >&2;}
-ac_tool_warned=yes ;;
-esac
-    STRIP=$ac_ct_STRIP
-  fi
-else
-  STRIP="$ac_cv_prog_STRIP"
-fi
-
-fi
-INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
-
-# We need awk for the "check" target.  The system "awk" is bad on
-# some platforms.
-# Always define AMTAR for backward compatibility.
-
-AMTAR=${AMTAR-"${am_missing_run}tar"}
-
-am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'
-
-
-
-
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
-set dummy ${ac_tool_prefix}gcc; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
-if test "${ac_cv_prog_CC+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_CC="${ac_tool_prefix}gcc"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-IFS=$as_save_IFS
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  { echo "$as_me:$LINENO: result: $CC" >&5
-echo "${ECHO_T}$CC" >&6; }
-else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_CC"; then
-  ac_ct_CC=$CC
-  # Extract the first word of "gcc", so it can be a program name with args.
-set dummy gcc; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test -n "$ac_ct_CC"; then
-  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_ac_ct_CC="gcc"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_CC=$ac_cv_prog_ac_ct_CC
-if test -n "$ac_ct_CC"; then
-  { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
-echo "${ECHO_T}$ac_ct_CC" >&6; }
-else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
-fi
-
-  if test "x$ac_ct_CC" = x; then
-    CC=""
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
-whose name does not start with the host triplet.  If you think this
-configuration is useful to you, please write to autoconf@gnu.org." >&5
-echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
-whose name does not start with the host triplet.  If you think this
-configuration is useful to you, please write to autoconf@gnu.org." >&2;}
-ac_tool_warned=yes ;;
-esac
-    CC=$ac_ct_CC
-  fi
-else
-  CC="$ac_cv_prog_CC"
-fi
-
-if test -z "$CC"; then
-          if test -n "$ac_tool_prefix"; then
-    # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
-set dummy ${ac_tool_prefix}cc; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
-if test "${ac_cv_prog_CC+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_CC="${ac_tool_prefix}cc"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-IFS=$as_save_IFS
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  { echo "$as_me:$LINENO: result: $CC" >&5
-echo "${ECHO_T}$CC" >&6; }
-else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
-fi
-
-
-  fi
-fi
-if test -z "$CC"; then
-  # Extract the first word of "cc", so it can be a program name with args.
-set dummy cc; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
-if test "${ac_cv_prog_CC+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-  ac_prog_rejected=no
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
-       ac_prog_rejected=yes
-       continue
-     fi
-    ac_cv_prog_CC="cc"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-IFS=$as_save_IFS
-
-if test $ac_prog_rejected = yes; then
-  # We found a bogon in the path, so make sure we never use it.
-  set dummy $ac_cv_prog_CC
-  shift
-  if test $# != 0; then
-    # We chose a different compiler from the bogus one.
-    # However, it has the same basename, so the bogon will be chosen
-    # first if we set CC to just the basename; use the full file name.
-    shift
-    ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
-  fi
-fi
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  { echo "$as_me:$LINENO: result: $CC" >&5
-echo "${ECHO_T}$CC" >&6; }
-else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
-fi
-
-
-fi
-if test -z "$CC"; then
-  if test -n "$ac_tool_prefix"; then
-  for ac_prog in cl.exe
-  do
-    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
-set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
-if test "${ac_cv_prog_CC+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-IFS=$as_save_IFS
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  { echo "$as_me:$LINENO: result: $CC" >&5
-echo "${ECHO_T}$CC" >&6; }
-else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
-fi
-
-
-    test -n "$CC" && break
-  done
-fi
-if test -z "$CC"; then
-  ac_ct_CC=$CC
-  for ac_prog in cl.exe
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test -n "$ac_ct_CC"; then
-  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_ac_ct_CC="$ac_prog"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_CC=$ac_cv_prog_ac_ct_CC
-if test -n "$ac_ct_CC"; then
-  { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
-echo "${ECHO_T}$ac_ct_CC" >&6; }
-else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
-fi
-
-
-  test -n "$ac_ct_CC" && break
-done
-
-  if test "x$ac_ct_CC" = x; then
-    CC=""
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
-whose name does not start with the host triplet.  If you think this
-configuration is useful to you, please write to autoconf@gnu.org." >&5
-echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
-whose name does not start with the host triplet.  If you think this
-configuration is useful to you, please write to autoconf@gnu.org." >&2;}
-ac_tool_warned=yes ;;
-esac
-    CC=$ac_ct_CC
-  fi
-fi
-
-fi
-
-
-test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH
-See \`config.log' for more details." >&5
-echo "$as_me: error: no acceptable C compiler found in \$PATH
-See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; }
-
-# Provide some information about the compiler.
-echo "$as_me:$LINENO: checking for C compiler version" >&5
-ac_compiler=`set X $ac_compile; echo $2`
-{ (ac_try="$ac_compiler --version >&5"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compiler --version >&5") 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }
-{ (ac_try="$ac_compiler -v >&5"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compiler -v >&5") 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }
-{ (ac_try="$ac_compiler -V >&5"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compiler -V >&5") 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }
-
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-ac_clean_files_save=$ac_clean_files
-ac_clean_files="$ac_clean_files a.out a.exe b.out"
-# Try to create an executable without -o first, disregard a.out.
-# It will help us diagnose broken compilers, and finding out an intuition
-# of exeext.
-{ echo "$as_me:$LINENO: checking for C compiler default output file name" >&5
-echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6; }
-ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
-#
-# List of possible output files, starting from the most likely.
-# The algorithm is not robust to junk in `.', hence go to wildcards (a.*)
-# only as a last resort.  b.out is created by i960 compilers.
-ac_files='a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out'
-#
-# The IRIX 6 linker writes into existing files which may not be
-# executable, retaining their permissions.  Remove them first so a
-# subsequent execution test works.
-ac_rmfiles=
-for ac_file in $ac_files
-do
-  case $ac_file in
-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;;
-    * ) ac_rmfiles="$ac_rmfiles $ac_file";;
-  esac
-done
-rm -f $ac_rmfiles
-
-if { (ac_try="$ac_link_default"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_link_default") 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; then
-  # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
-# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
-# in a Makefile.  We should not override ac_cv_exeext if it was cached,
-# so that the user can short-circuit this test for compilers unknown to
-# Autoconf.
-for ac_file in $ac_files ''
-do
-  test -f "$ac_file" || continue
-  case $ac_file in
-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj )
-       ;;
-    [ab].out )
-       # We found the default executable, but exeext='' is most
-       # certainly right.
-       break;;
-    *.* )
-        if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
-       then :; else
-          ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
-       fi
-       # We set ac_cv_exeext here because the later test for it is not
-       # safe: cross compilers may not add the suffix if given an `-o'
-       # argument, so we may need to know it at that point already.
-       # Even if this section looks crufty: it has the advantage of
-       # actually working.
-       break;;
-    * )
-       break;;
-  esac
-done
-test "$ac_cv_exeext" = no && ac_cv_exeext=
-
-else
-  ac_file=''
-fi
-
-{ echo "$as_me:$LINENO: result: $ac_file" >&5
-echo "${ECHO_T}$ac_file" >&6; }
-if test -z "$ac_file"; then
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-{ { echo "$as_me:$LINENO: error: C compiler cannot create executables
-See \`config.log' for more details." >&5
-echo "$as_me: error: C compiler cannot create executables
-See \`config.log' for more details." >&2;}
-   { (exit 77); exit 77; }; }
-fi
-
-ac_exeext=$ac_cv_exeext
-
-# Check that the compiler produces executables we can run.  If not, either
-# the compiler is broken, or we cross compile.
-{ echo "$as_me:$LINENO: checking whether the C compiler works" >&5
-echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6; }
-# FIXME: These cross compiler hacks should be removed for Autoconf 3.0
-# If not cross compiling, check that we can run a simple program.
-if test "$cross_compiling" != yes; then
-  if { ac_try='./$ac_file'
-  { (case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-    cross_compiling=no
-  else
-    if test "$cross_compiling" = maybe; then
-       cross_compiling=yes
-    else
-       { { echo "$as_me:$LINENO: error: cannot run C compiled programs.
-If you meant to cross compile, use \`--host'.
-See \`config.log' for more details." >&5
-echo "$as_me: error: cannot run C compiled programs.
-If you meant to cross compile, use \`--host'.
-See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; }
-    fi
-  fi
-fi
-{ echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6; }
-
-rm -f a.out a.exe conftest$ac_cv_exeext b.out
-ac_clean_files=$ac_clean_files_save
-# Check that the compiler produces executables we can run.  If not, either
-# the compiler is broken, or we cross compile.
-{ echo "$as_me:$LINENO: checking whether we are cross compiling" >&5
-echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: $cross_compiling" >&5
-echo "${ECHO_T}$cross_compiling" >&6; }
-
-{ echo "$as_me:$LINENO: checking for suffix of executables" >&5
-echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6; }
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_link") 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; then
-  # If both `conftest.exe' and `conftest' are `present' (well, observable)
-# catch `conftest.exe'.  For instance with Cygwin, `ls conftest' will
-# work properly (i.e., refer to `conftest.exe'), while it won't with
-# `rm'.
-for ac_file in conftest.exe conftest conftest.*; do
-  test -f "$ac_file" || continue
-  case $ac_file in
-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;;
-    *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
-         break;;
-    * ) break;;
-  esac
-done
-else
-  { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link
-See \`config.log' for more details." >&5
-echo "$as_me: error: cannot compute suffix of executables: cannot compile and link
-See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-
-rm -f conftest$ac_cv_exeext
-{ echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5
-echo "${ECHO_T}$ac_cv_exeext" >&6; }
-
-rm -f conftest.$ac_ext
-EXEEXT=$ac_cv_exeext
-ac_exeext=$EXEEXT
-{ echo "$as_me:$LINENO: checking for suffix of object files" >&5
-echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6; }
-if test "${ac_cv_objext+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.o conftest.obj
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; then
-  for ac_file in conftest.o conftest.obj conftest.*; do
-  test -f "$ac_file" || continue;
-  case $ac_file in
-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf ) ;;
-    *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
-       break;;
-  esac
-done
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile
-See \`config.log' for more details." >&5
-echo "$as_me: error: cannot compute suffix of object files: cannot compile
-See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-
-rm -f conftest.$ac_cv_objext conftest.$ac_ext
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_objext" >&5
-echo "${ECHO_T}$ac_cv_objext" >&6; }
-OBJEXT=$ac_cv_objext
-ac_objext=$OBJEXT
-{ echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5
-echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6; }
-if test "${ac_cv_c_compiler_gnu+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-int
-main ()
-{
-#ifndef __GNUC__
-       choke me
-#endif
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_compiler_gnu=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       ac_compiler_gnu=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-ac_cv_c_compiler_gnu=$ac_compiler_gnu
-
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5
-echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6; }
-GCC=`test $ac_compiler_gnu = yes && echo yes`
-ac_test_CFLAGS=${CFLAGS+set}
-ac_save_CFLAGS=$CFLAGS
-{ echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5
-echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6; }
-if test "${ac_cv_prog_cc_g+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_save_c_werror_flag=$ac_c_werror_flag
-   ac_c_werror_flag=yes
-   ac_cv_prog_cc_g=no
-   CFLAGS="-g"
-   cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_cv_prog_cc_g=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       CFLAGS=""
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  :
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       ac_c_werror_flag=$ac_save_c_werror_flag
-        CFLAGS="-g"
-        cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_cv_prog_cc_g=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-   ac_c_werror_flag=$ac_save_c_werror_flag
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5
-echo "${ECHO_T}$ac_cv_prog_cc_g" >&6; }
-if test "$ac_test_CFLAGS" = set; then
-  CFLAGS=$ac_save_CFLAGS
-elif test $ac_cv_prog_cc_g = yes; then
-  if test "$GCC" = yes; then
-    CFLAGS="-g -O2"
-  else
-    CFLAGS="-g"
-  fi
-else
-  if test "$GCC" = yes; then
-    CFLAGS="-O2"
-  else
-    CFLAGS=
-  fi
-fi
-{ echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5
-echo $ECHO_N "checking for $CC option to accept ISO C89... $ECHO_C" >&6; }
-if test "${ac_cv_prog_cc_c89+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_cv_prog_cc_c89=no
-ac_save_CC=$CC
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <stdarg.h>
-#include <stdio.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-/* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
-struct buf { int x; };
-FILE * (*rcsopen) (struct buf *, struct stat *, int);
-static char *e (p, i)
-     char **p;
-     int i;
-{
-  return p[i];
-}
-static char *f (char * (*g) (char **, int), char **p, ...)
-{
-  char *s;
-  va_list v;
-  va_start (v,p);
-  s = g (p, va_arg (v,int));
-  va_end (v);
-  return s;
-}
-
-/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has
-   function prototypes and stuff, but not '\xHH' hex character constants.
-   These don't provoke an error unfortunately, instead are silently treated
-   as 'x'.  The following induces an error, until -std is added to get
-   proper ANSI mode.  Curiously '\x00'!='x' always comes out true, for an
-   array size at least.  It's necessary to write '\x00'==0 to get something
-   that's true only with -std.  */
-int osf4_cc_array ['\x00' == 0 ? 1 : -1];
-
-/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
-   inside strings and character constants.  */
-#define FOO(x) 'x'
-int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
-
-int test (int i, double x);
-struct s1 {int (*f) (int a);};
-struct s2 {int (*f) (double a);};
-int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
-int argc;
-char **argv;
-int
-main ()
-{
-return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];
-  ;
-  return 0;
-}
-_ACEOF
-for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
-       -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
-do
-  CC="$ac_save_CC $ac_arg"
-  rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_cv_prog_cc_c89=$ac_arg
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
-fi
-
-rm -f core conftest.err conftest.$ac_objext
-  test "x$ac_cv_prog_cc_c89" != "xno" && break
-done
-rm -f conftest.$ac_ext
-CC=$ac_save_CC
-
-fi
-# AC_CACHE_VAL
-case "x$ac_cv_prog_cc_c89" in
-  x)
-    { echo "$as_me:$LINENO: result: none needed" >&5
-echo "${ECHO_T}none needed" >&6; } ;;
-  xno)
-    { echo "$as_me:$LINENO: result: unsupported" >&5
-echo "${ECHO_T}unsupported" >&6; } ;;
-  *)
-    CC="$CC $ac_cv_prog_cc_c89"
-    { echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5
-echo "${ECHO_T}$ac_cv_prog_cc_c89" >&6; } ;;
-esac
-
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-DEPDIR="${am__leading_dot}deps"
-
-ac_config_commands="$ac_config_commands depfiles"
-
-
-am_make=${MAKE-make}
-cat > confinc << 'END'
-am__doit:
-       @echo done
-.PHONY: am__doit
-END
-# If we don't find an include directive, just comment out the code.
-{ echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5
-echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6; }
-am__include="#"
-am__quote=
-_am_result=none
-# First try GNU make style include.
-echo "include confinc" > confmf
-# We grep out `Entering directory' and `Leaving directory'
-# messages which can occur if `w' ends up in MAKEFLAGS.
-# In particular we don't look at `^make:' because GNU make might
-# be invoked under some other name (usually "gmake"), in which
-# case it prints its new name instead of `make'.
-if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then
-   am__include=include
-   am__quote=
-   _am_result=GNU
-fi
-# Now try BSD make style include.
-if test "$am__include" = "#"; then
-   echo '.include "confinc"' > confmf
-   if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then
-      am__include=.include
-      am__quote="\""
-      _am_result=BSD
-   fi
-fi
-
-
-{ echo "$as_me:$LINENO: result: $_am_result" >&5
-echo "${ECHO_T}$_am_result" >&6; }
-rm -f confinc confmf
-
-# Check whether --enable-dependency-tracking was given.
-if test "${enable_dependency_tracking+set}" = set; then
-  enableval=$enable_dependency_tracking;
-fi
-
-if test "x$enable_dependency_tracking" != xno; then
-  am_depcomp="$ac_aux_dir/depcomp"
-  AMDEPBACKSLASH='\'
-fi
- if test "x$enable_dependency_tracking" != xno; then
-  AMDEP_TRUE=
-  AMDEP_FALSE='#'
-else
-  AMDEP_TRUE='#'
-  AMDEP_FALSE=
-fi
-
-
-
-depcc="$CC"   am_compiler_list=
-
-{ echo "$as_me:$LINENO: checking dependency style of $depcc" >&5
-echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6; }
-if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
-  # We make a subdir and do the tests there.  Otherwise we can end up
-  # making bogus files that we don't know about and never remove.  For
-  # instance it was reported that on HP-UX the gcc test will end up
-  # making a dummy file named `D' -- because `-MD' means `put the output
-  # in D'.
-  mkdir conftest.dir
-  # Copy depcomp to subdir because otherwise we won't find it if we're
-  # using a relative directory.
-  cp "$am_depcomp" conftest.dir
-  cd conftest.dir
-  # We will build objects and dependencies in a subdirectory because
-  # it helps to detect inapplicable dependency modes.  For instance
-  # both Tru64's cc and ICC support -MD to output dependencies as a
-  # side effect of compilation, but ICC will put the dependencies in
-  # the current directory while Tru64 will put them in the object
-  # directory.
-  mkdir sub
-
-  am_cv_CC_dependencies_compiler_type=none
-  if test "$am_compiler_list" = ""; then
-     am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
-  fi
-  for depmode in $am_compiler_list; do
-    # Setup a source with many dependencies, because some compilers
-    # like to wrap large dependency lists on column 80 (with \), and
-    # we should not choose a depcomp mode which is confused by this.
-    #
-    # We need to recreate these files for each test, as the compiler may
-    # overwrite some of them when testing with obscure command lines.
-    # This happens at least with the AIX C compiler.
-    : > sub/conftest.c
-    for i in 1 2 3 4 5 6; do
-      echo '#include "conftst'$i'.h"' >> sub/conftest.c
-      # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
-      # Solaris 8's {/usr,}/bin/sh.
-      touch sub/conftst$i.h
-    done
-    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
-
-    case $depmode in
-    nosideeffect)
-      # after this tag, mechanisms are not by side-effect, so they'll
-      # only be used when explicitly requested
-      if test "x$enable_dependency_tracking" = xyes; then
-       continue
-      else
-       break
-      fi
-      ;;
-    none) break ;;
-    esac
-    # We check with `-c' and `-o' for the sake of the "dashmstdout"
-    # mode.  It turns out that the SunPro C++ compiler does not properly
-    # handle `-M -o', and we need to detect this.
-    if depmode=$depmode \
-       source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \
-       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
-       $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \
-         >/dev/null 2>conftest.err &&
-       grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
-       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
-       grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 &&
-       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
-      # icc doesn't choke on unknown options, it will just issue warnings
-      # or remarks (even with -Werror).  So we grep stderr for any message
-      # that says an option was ignored or not supported.
-      # When given -MP, icc 7.0 and 7.1 complain thusly:
-      #   icc: Command line warning: ignoring option '-M'; no argument required
-      # The diagnosis changed in icc 8.0:
-      #   icc: Command line remark: option '-MP' not supported
-      if (grep 'ignoring option' conftest.err ||
-          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
-        am_cv_CC_dependencies_compiler_type=$depmode
-        break
-      fi
-    fi
-  done
-
-  cd ..
-  rm -rf conftest.dir
-else
-  am_cv_CC_dependencies_compiler_type=none
-fi
-
-fi
-{ echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5
-echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6; }
-CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
-
- if
-  test "x$enable_dependency_tracking" != xno \
-  && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then
-  am__fastdepCC_TRUE=
-  am__fastdepCC_FALSE='#'
-else
-  am__fastdepCC_TRUE='#'
-  am__fastdepCC_FALSE=
-fi
-
-
-ac_config_headers="$ac_config_headers config.h"
-
-ac_config_files="$ac_config_files Makefile"
-
-cat >confcache <<\_ACEOF
-# This file is a shell script that caches the results of configure
-# tests run on this system so they can be shared between configure
-# scripts and configure runs, see configure's option --config-cache.
-# It is not useful on other systems.  If it contains results you don't
-# want to keep, you may remove or edit it.
-#
-# config.status only pays attention to the cache file if you give it
-# the --recheck option to rerun configure.
-#
-# `ac_cv_env_foo' variables (set or unset) will be overridden when
-# loading this file, other *unset* `ac_cv_foo' will be assigned the
-# following values.
-
-_ACEOF
-
-# The following way of writing the cache mishandles newlines in values,
-# but we know of no workaround that is simple, portable, and efficient.
-# So, we kill variables containing newlines.
-# Ultrix sh set writes to stderr and can't be redirected directly,
-# and sets the high bit in the cache file unless we assign to the vars.
-(
-  for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do
-    eval ac_val=\$$ac_var
-    case $ac_val in #(
-    *${as_nl}*)
-      case $ac_var in #(
-      *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5
-echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;;
-      esac
-      case $ac_var in #(
-      _ | IFS | as_nl) ;; #(
-      *) $as_unset $ac_var ;;
-      esac ;;
-    esac
-  done
-
-  (set) 2>&1 |
-    case $as_nl`(ac_space=' '; set) 2>&1` in #(
-    *${as_nl}ac_space=\ *)
-      # `set' does not quote correctly, so add quotes (double-quote
-      # substitution turns \\\\ into \\, and sed turns \\ into \).
-      sed -n \
-       "s/'/'\\\\''/g;
-         s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
-      ;; #(
-    *)
-      # `set' quotes correctly as required by POSIX, so do not add quotes.
-      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
-      ;;
-    esac |
-    sort
-) |
-  sed '
-     /^ac_cv_env_/b end
-     t clear
-     :clear
-     s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
-     t end
-     s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
-     :end' >>confcache
-if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
-  if test -w "$cache_file"; then
-    test "x$cache_file" != "x/dev/null" &&
-      { echo "$as_me:$LINENO: updating cache $cache_file" >&5
-echo "$as_me: updating cache $cache_file" >&6;}
-    cat confcache >$cache_file
-  else
-    { echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5
-echo "$as_me: not updating unwritable cache $cache_file" >&6;}
-  fi
-fi
-rm -f confcache
-
-test "x$prefix" = xNONE && prefix=$ac_default_prefix
-# Let make expand exec_prefix.
-test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
-
-DEFS=-DHAVE_CONFIG_H
-
-ac_libobjs=
-ac_ltlibobjs=
-for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
-  # 1. Remove the extension, and $U if already installed.
-  ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
-  ac_i=`echo "$ac_i" | sed "$ac_script"`
-  # 2. Prepend LIBOBJDIR.  When used with automake>=1.10 LIBOBJDIR
-  #    will be set to the directory where LIBOBJS objects are built.
-  ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext"
-  ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$ac_i"'$U.lo'
-done
-LIBOBJS=$ac_libobjs
-
-LTLIBOBJS=$ac_ltlibobjs
-
-
-if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"AMDEP\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"am__fastdepCC\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-
-: ${CONFIG_STATUS=./config.status}
-ac_clean_files_save=$ac_clean_files
-ac_clean_files="$ac_clean_files $CONFIG_STATUS"
-{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5
-echo "$as_me: creating $CONFIG_STATUS" >&6;}
-cat >$CONFIG_STATUS <<_ACEOF
-#! $SHELL
-# Generated by $as_me.
-# Run this file to recreate the current configuration.
-# Compiler output produced by configure, useful for debugging
-# configure, is in config.log if it exists.
-
-debug=false
-ac_cs_recheck=false
-ac_cs_silent=false
-SHELL=\${CONFIG_SHELL-$SHELL}
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF
-## --------------------- ##
-## M4sh Initialization.  ##
-## --------------------- ##
-
-# Be more Bourne compatible
-DUALCASE=1; export DUALCASE # for MKS sh
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
-  emulate sh
-  NULLCMD=:
-  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
-  # is contrary to our usage.  Disable this feature.
-  alias -g '${1+"$@"}'='"$@"'
-  setopt NO_GLOB_SUBST
-else
-  case `(set -o) 2>/dev/null` in
-  *posix*) set -o posix ;;
-esac
-
-fi
-
-
-
-
-# PATH needs CR
-# Avoid depending upon Character Ranges.
-as_cr_letters='abcdefghijklmnopqrstuvwxyz'
-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
-as_cr_Letters=$as_cr_letters$as_cr_LETTERS
-as_cr_digits='0123456789'
-as_cr_alnum=$as_cr_Letters$as_cr_digits
-
-# The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
-  echo "#! /bin/sh" >conf$$.sh
-  echo  "exit 0"   >>conf$$.sh
-  chmod +x conf$$.sh
-  if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
-    PATH_SEPARATOR=';'
-  else
-    PATH_SEPARATOR=:
-  fi
-  rm -f conf$$.sh
-fi
-
-# Support unset when possible.
-if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
-  as_unset=unset
-else
-  as_unset=false
-fi
-
-
-# IFS
-# We need space, tab and new line, in precisely that order.  Quoting is
-# there to prevent editors from complaining about space-tab.
-# (If _AS_PATH_WALK were called with IFS unset, it would disable word
-# splitting by setting IFS to empty value.)
-as_nl='
-'
-IFS=" ""       $as_nl"
-
-# Find who we are.  Look in the path if we contain no directory separator.
-case $0 in
-  *[\\/]* ) as_myself=$0 ;;
-  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
-done
-IFS=$as_save_IFS
-
-     ;;
-esac
-# We did not find ourselves, most probably we were run as `sh COMMAND'
-# in which case we are not to be found in the path.
-if test "x$as_myself" = x; then
-  as_myself=$0
-fi
-if test ! -f "$as_myself"; then
-  echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
-  { (exit 1); exit 1; }
-fi
-
-# Work around bugs in pre-3.0 UWIN ksh.
-for as_var in ENV MAIL MAILPATH
-do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
-done
-PS1='$ '
-PS2='> '
-PS4='+ '
-
-# NLS nuisances.
-for as_var in \
-  LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
-  LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
-  LC_TELEPHONE LC_TIME
-do
-  if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
-    eval $as_var=C; export $as_var
-  else
-    ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
-  fi
-done
-
-# Required to use basename.
-if expr a : '\(a\)' >/dev/null 2>&1 &&
-   test "X`expr 00001 : '.*\(...\)'`" = X001; then
-  as_expr=expr
-else
-  as_expr=false
-fi
-
-if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
-  as_basename=basename
-else
-  as_basename=false
-fi
-
-
-# Name of the executable.
-as_me=`$as_basename -- "$0" ||
-$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
-        X"$0" : 'X\(//\)$' \| \
-        X"$0" : 'X\(/\)' \| . 2>/dev/null ||
-echo X/"$0" |
-    sed '/^.*\/\([^/][^/]*\)\/*$/{
-           s//\1/
-           q
-         }
-         /^X\/\(\/\/\)$/{
-           s//\1/
-           q
-         }
-         /^X\/\(\/\).*/{
-           s//\1/
-           q
-         }
-         s/.*/./; q'`
-
-# CDPATH.
-$as_unset CDPATH
-
-
-
-  as_lineno_1=$LINENO
-  as_lineno_2=$LINENO
-  test "x$as_lineno_1" != "x$as_lineno_2" &&
-  test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || {
-
-  # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
-  # uniformly replaced by the line number.  The first 'sed' inserts a
-  # line-number line after each line using $LINENO; the second 'sed'
-  # does the real work.  The second script uses 'N' to pair each
-  # line-number line with the line containing $LINENO, and appends
-  # trailing '-' during substitution so that $LINENO is not a special
-  # case at line end.
-  # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
-  # scripts with optimization help from Paolo Bonzini.  Blame Lee
-  # E. McMahon (1931-1989) for sed's syntax.  :-)
-  sed -n '
-    p
-    /[$]LINENO/=
-  ' <$as_myself |
-    sed '
-      s/[$]LINENO.*/&-/
-      t lineno
-      b
-      :lineno
-      N
-      :loop
-      s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
-      t loop
-      s/-\n.*//
-    ' >$as_me.lineno &&
-  chmod +x "$as_me.lineno" ||
-    { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
-   { (exit 1); exit 1; }; }
-
-  # Don't try to exec as it changes $[0], causing all sort of problems
-  # (the dirname of $[0] is not the place where we might find the
-  # original and so on.  Autoconf is especially sensitive to this).
-  . "./$as_me.lineno"
-  # Exit status is that of the last command.
-  exit
-}
-
-
-if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
-  as_dirname=dirname
-else
-  as_dirname=false
-fi
-
-ECHO_C= ECHO_N= ECHO_T=
-case `echo -n x` in
--n*)
-  case `echo 'x\c'` in
-  *c*) ECHO_T='        ';;     # ECHO_T is single tab character.
-  *)   ECHO_C='\c';;
-  esac;;
-*)
-  ECHO_N='-n';;
-esac
-
-if expr a : '\(a\)' >/dev/null 2>&1 &&
-   test "X`expr 00001 : '.*\(...\)'`" = X001; then
-  as_expr=expr
-else
-  as_expr=false
-fi
-
-rm -f conf$$ conf$$.exe conf$$.file
-if test -d conf$$.dir; then
-  rm -f conf$$.dir/conf$$.file
-else
-  rm -f conf$$.dir
-  mkdir conf$$.dir
-fi
-echo >conf$$.file
-if ln -s conf$$.file conf$$ 2>/dev/null; then
-  as_ln_s='ln -s'
-  # ... but there are two gotchas:
-  # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
-  # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
-  # In both cases, we have to default to `cp -p'.
-  ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
-    as_ln_s='cp -p'
-elif ln conf$$.file conf$$ 2>/dev/null; then
-  as_ln_s=ln
-else
-  as_ln_s='cp -p'
-fi
-rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
-rmdir conf$$.dir 2>/dev/null
-
-if mkdir -p . 2>/dev/null; then
-  as_mkdir_p=:
-else
-  test -d ./-p && rmdir ./-p
-  as_mkdir_p=false
-fi
-
-if test -x / >/dev/null 2>&1; then
-  as_test_x='test -x'
-else
-  if ls -dL / >/dev/null 2>&1; then
-    as_ls_L_option=L
-  else
-    as_ls_L_option=
-  fi
-  as_test_x='
-    eval sh -c '\''
-      if test -d "$1"; then
-        test -d "$1/.";
-      else
-       case $1 in
-        -*)set "./$1";;
-       esac;
-       case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in
-       ???[sx]*):;;*)false;;esac;fi
-    '\'' sh
-  '
-fi
-as_executable_p=$as_test_x
-
-# Sed expression to map a string onto a valid CPP name.
-as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
-
-# Sed expression to map a string onto a valid variable name.
-as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
-
-
-exec 6>&1
-
-# Save the log message, to keep $[0] and so on meaningful, and to
-# report actual input values of CONFIG_FILES etc. instead of their
-# values after options handling.
-ac_log="
-This file was extended by xboard $as_me 4.3, which was
-generated by GNU Autoconf 2.61.  Invocation command line was
-
-  CONFIG_FILES    = $CONFIG_FILES
-  CONFIG_HEADERS  = $CONFIG_HEADERS
-  CONFIG_LINKS    = $CONFIG_LINKS
-  CONFIG_COMMANDS = $CONFIG_COMMANDS
-  $ $0 $@
-
-on `(hostname || uname -n) 2>/dev/null | sed 1q`
-"
-
-_ACEOF
-
-cat >>$CONFIG_STATUS <<_ACEOF
-# Files that config.status was made for.
-config_files="$ac_config_files"
-config_headers="$ac_config_headers"
-config_commands="$ac_config_commands"
-
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF
-ac_cs_usage="\
-\`$as_me' instantiates files from templates according to the
-current configuration.
-
-Usage: $0 [OPTIONS] [FILE]...
-
-  -h, --help       print this help, then exit
-  -V, --version    print version number and configuration settings, then exit
-  -q, --quiet      do not print progress messages
-  -d, --debug      don't remove temporary files
-      --recheck    update $as_me by reconfiguring in the same conditions
-  --file=FILE[:TEMPLATE]
-                  instantiate the configuration file FILE
-  --header=FILE[:TEMPLATE]
-                  instantiate the configuration header FILE
-
-Configuration files:
-$config_files
-
-Configuration headers:
-$config_headers
-
-Configuration commands:
-$config_commands
-
-Report bugs to <bug-autoconf@gnu.org>."
-
-_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF
-ac_cs_version="\\
-xboard config.status 4.3
-configured by $0, generated by GNU Autoconf 2.61,
-  with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
-
-Copyright (C) 2006 Free Software Foundation, Inc.
-This config.status script is free software; the Free Software Foundation
-gives unlimited permission to copy, distribute and modify it."
-
-ac_pwd='$ac_pwd'
-srcdir='$srcdir'
-INSTALL='$INSTALL'
-MKDIR_P='$MKDIR_P'
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF
-# If no file are specified by the user, then we need to provide default
-# value.  By we need to know if files were specified by the user.
-ac_need_defaults=:
-while test $# != 0
-do
-  case $1 in
-  --*=*)
-    ac_option=`expr "X$1" : 'X\([^=]*\)='`
-    ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
-    ac_shift=:
-    ;;
-  *)
-    ac_option=$1
-    ac_optarg=$2
-    ac_shift=shift
-    ;;
-  esac
-
-  case $ac_option in
-  # Handling of the options.
-  -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
-    ac_cs_recheck=: ;;
-  --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
-    echo "$ac_cs_version"; exit ;;
-  --debug | --debu | --deb | --de | --d | -d )
-    debug=: ;;
-  --file | --fil | --fi | --f )
-    $ac_shift
-    CONFIG_FILES="$CONFIG_FILES $ac_optarg"
-    ac_need_defaults=false;;
-  --header | --heade | --head | --hea )
-    $ac_shift
-    CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg"
-    ac_need_defaults=false;;
-  --he | --h)
-    # Conflict between --help and --header
-    { echo "$as_me: error: ambiguous option: $1
-Try \`$0 --help' for more information." >&2
-   { (exit 1); exit 1; }; };;
-  --help | --hel | -h )
-    echo "$ac_cs_usage"; exit ;;
-  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
-  | -silent | --silent | --silen | --sile | --sil | --si | --s)
-    ac_cs_silent=: ;;
-
-  # This is an error.
-  -*) { echo "$as_me: error: unrecognized option: $1
-Try \`$0 --help' for more information." >&2
-   { (exit 1); exit 1; }; } ;;
-
-  *) ac_config_targets="$ac_config_targets $1"
-     ac_need_defaults=false ;;
-
-  esac
-  shift
-done
-
-ac_configure_extra_args=
-
-if $ac_cs_silent; then
-  exec 6>/dev/null
-  ac_configure_extra_args="$ac_configure_extra_args --silent"
-fi
-
-_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF
-if \$ac_cs_recheck; then
-  echo "running CONFIG_SHELL=$SHELL $SHELL $0 "$ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6
-  CONFIG_SHELL=$SHELL
-  export CONFIG_SHELL
-  exec $SHELL "$0"$ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
-fi
-
-_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF
-exec 5>>config.log
-{
-  echo
-  sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
-## Running $as_me. ##
-_ASBOX
-  echo "$ac_log"
-} >&5
-
-_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF
-#
-# INIT-COMMANDS
-#
-AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
-
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF
-
-# Handling of arguments.
-for ac_config_target in $ac_config_targets
-do
-  case $ac_config_target in
-    "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
-    "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;;
-    "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
-
-  *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
-echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
-   { (exit 1); exit 1; }; };;
-  esac
-done
-
-
-# If the user did not use the arguments to specify the items to instantiate,
-# then the envvar interface is used.  Set only those that are not.
-# We use the long form for the default assignment because of an extremely
-# bizarre bug on SunOS 4.1.3.
-if $ac_need_defaults; then
-  test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
-  test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
-  test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands
-fi
-
-# Have a temporary directory for convenience.  Make it in the build tree
-# simply because there is no reason against having it here, and in addition,
-# creating and moving files from /tmp can sometimes cause problems.
-# Hook for its removal unless debugging.
-# Note that there is a small window in which the directory will not be cleaned:
-# after its creation but before its name has been assigned to `$tmp'.
-$debug ||
-{
-  tmp=
-  trap 'exit_status=$?
-  { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status
-' 0
-  trap '{ (exit 1); exit 1; }' 1 2 13 15
-}
-# Create a (secure) tmp directory for tmp files.
-
-{
-  tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
-  test -n "$tmp" && test -d "$tmp"
-}  ||
-{
-  tmp=./conf$$-$RANDOM
-  (umask 077 && mkdir "$tmp")
-} ||
-{
-   echo "$me: cannot create a temporary directory in ." >&2
-   { (exit 1); exit 1; }
-}
-
-#
-# Set up the sed scripts for CONFIG_FILES section.
-#
-
-# No need to generate the scripts if there are no CONFIG_FILES.
-# This happens for instance when ./config.status config.h
-if test -n "$CONFIG_FILES"; then
-
-_ACEOF
-
-
-
-ac_delim='%!_!# '
-for ac_last_try in false false false false false :; do
-  cat >conf$$subs.sed <<_ACEOF
-SHELL!$SHELL$ac_delim
-PATH_SEPARATOR!$PATH_SEPARATOR$ac_delim
-PACKAGE_NAME!$PACKAGE_NAME$ac_delim
-PACKAGE_TARNAME!$PACKAGE_TARNAME$ac_delim
-PACKAGE_VERSION!$PACKAGE_VERSION$ac_delim
-PACKAGE_STRING!$PACKAGE_STRING$ac_delim
-PACKAGE_BUGREPORT!$PACKAGE_BUGREPORT$ac_delim
-exec_prefix!$exec_prefix$ac_delim
-prefix!$prefix$ac_delim
-program_transform_name!$program_transform_name$ac_delim
-bindir!$bindir$ac_delim
-sbindir!$sbindir$ac_delim
-libexecdir!$libexecdir$ac_delim
-datarootdir!$datarootdir$ac_delim
-datadir!$datadir$ac_delim
-sysconfdir!$sysconfdir$ac_delim
-sharedstatedir!$sharedstatedir$ac_delim
-localstatedir!$localstatedir$ac_delim
-includedir!$includedir$ac_delim
-oldincludedir!$oldincludedir$ac_delim
-docdir!$docdir$ac_delim
-infodir!$infodir$ac_delim
-htmldir!$htmldir$ac_delim
-dvidir!$dvidir$ac_delim
-pdfdir!$pdfdir$ac_delim
-psdir!$psdir$ac_delim
-libdir!$libdir$ac_delim
-localedir!$localedir$ac_delim
-mandir!$mandir$ac_delim
-DEFS!$DEFS$ac_delim
-ECHO_C!$ECHO_C$ac_delim
-ECHO_N!$ECHO_N$ac_delim
-ECHO_T!$ECHO_T$ac_delim
-LIBS!$LIBS$ac_delim
-build_alias!$build_alias$ac_delim
-host_alias!$host_alias$ac_delim
-target_alias!$target_alias$ac_delim
-INSTALL_PROGRAM!$INSTALL_PROGRAM$ac_delim
-INSTALL_SCRIPT!$INSTALL_SCRIPT$ac_delim
-INSTALL_DATA!$INSTALL_DATA$ac_delim
-am__isrc!$am__isrc$ac_delim
-CYGPATH_W!$CYGPATH_W$ac_delim
-PACKAGE!$PACKAGE$ac_delim
-VERSION!$VERSION$ac_delim
-ACLOCAL!$ACLOCAL$ac_delim
-AUTOCONF!$AUTOCONF$ac_delim
-AUTOMAKE!$AUTOMAKE$ac_delim
-AUTOHEADER!$AUTOHEADER$ac_delim
-MAKEINFO!$MAKEINFO$ac_delim
-install_sh!$install_sh$ac_delim
-STRIP!$STRIP$ac_delim
-INSTALL_STRIP_PROGRAM!$INSTALL_STRIP_PROGRAM$ac_delim
-mkdir_p!$mkdir_p$ac_delim
-AWK!$AWK$ac_delim
-SET_MAKE!$SET_MAKE$ac_delim
-am__leading_dot!$am__leading_dot$ac_delim
-AMTAR!$AMTAR$ac_delim
-am__tar!$am__tar$ac_delim
-am__untar!$am__untar$ac_delim
-CC!$CC$ac_delim
-CFLAGS!$CFLAGS$ac_delim
-LDFLAGS!$LDFLAGS$ac_delim
-CPPFLAGS!$CPPFLAGS$ac_delim
-ac_ct_CC!$ac_ct_CC$ac_delim
-EXEEXT!$EXEEXT$ac_delim
-OBJEXT!$OBJEXT$ac_delim
-DEPDIR!$DEPDIR$ac_delim
-am__include!$am__include$ac_delim
-am__quote!$am__quote$ac_delim
-AMDEP_TRUE!$AMDEP_TRUE$ac_delim
-AMDEP_FALSE!$AMDEP_FALSE$ac_delim
-AMDEPBACKSLASH!$AMDEPBACKSLASH$ac_delim
-CCDEPMODE!$CCDEPMODE$ac_delim
-am__fastdepCC_TRUE!$am__fastdepCC_TRUE$ac_delim
-am__fastdepCC_FALSE!$am__fastdepCC_FALSE$ac_delim
-LIBOBJS!$LIBOBJS$ac_delim
-LTLIBOBJS!$LTLIBOBJS$ac_delim
-_ACEOF
-
-  if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 77; then
-    break
-  elif $ac_last_try; then
-    { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
-echo "$as_me: error: could not make $CONFIG_STATUS" >&2;}
-   { (exit 1); exit 1; }; }
-  else
-    ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
-  fi
-done
-
-ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed`
-if test -n "$ac_eof"; then
-  ac_eof=`echo "$ac_eof" | sort -nru | sed 1q`
-  ac_eof=`expr $ac_eof + 1`
-fi
-
-cat >>$CONFIG_STATUS <<_ACEOF
-cat >"\$tmp/subs-1.sed" <<\CEOF$ac_eof
-/@[a-zA-Z_][a-zA-Z_0-9]*@/!b end
-_ACEOF
-sed '
-s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g
-s/^/s,@/; s/!/@,|#_!!_#|/
-:n
-t n
-s/'"$ac_delim"'$/,g/; t
-s/$/\\/; p
-N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n
-' >>$CONFIG_STATUS <conf$$subs.sed
-rm -f conf$$subs.sed
-cat >>$CONFIG_STATUS <<_ACEOF
-:end
-s/|#_!!_#|//g
-CEOF$ac_eof
-_ACEOF
-
-
-# VPATH may cause trouble with some makes, so we remove $(srcdir),
-# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and
-# trailing colons and then remove the whole line if VPATH becomes empty
-# (actually we leave an empty line to preserve line numbers).
-if test "x$srcdir" = x.; then
-  ac_vpsub='/^[         ]*VPATH[        ]*=/{
-s/:*\$(srcdir):*/:/
-s/:*\${srcdir}:*/:/
-s/:*@srcdir@:*/:/
-s/^\([^=]*=[    ]*\):*/\1/
-s/:*$//
-s/^[^=]*=[      ]*$//
-}'
-fi
-
-cat >>$CONFIG_STATUS <<\_ACEOF
-fi # test -n "$CONFIG_FILES"
-
-
-for ac_tag in  :F $CONFIG_FILES  :H $CONFIG_HEADERS    :C $CONFIG_COMMANDS
-do
-  case $ac_tag in
-  :[FHLC]) ac_mode=$ac_tag; continue;;
-  esac
-  case $ac_mode$ac_tag in
-  :[FHL]*:*);;
-  :L* | :C*:*) { { echo "$as_me:$LINENO: error: Invalid tag $ac_tag." >&5
-echo "$as_me: error: Invalid tag $ac_tag." >&2;}
-   { (exit 1); exit 1; }; };;
-  :[FH]-) ac_tag=-:-;;
-  :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
-  esac
-  ac_save_IFS=$IFS
-  IFS=:
-  set x $ac_tag
-  IFS=$ac_save_IFS
-  shift
-  ac_file=$1
-  shift
-
-  case $ac_mode in
-  :L) ac_source=$1;;
-  :[FH])
-    ac_file_inputs=
-    for ac_f
-    do
-      case $ac_f in
-      -) ac_f="$tmp/stdin";;
-      *) # Look for the file first in the build tree, then in the source tree
-        # (if the path is not absolute).  The absolute path cannot be DOS-style,
-        # because $ac_f cannot contain `:'.
-        test -f "$ac_f" ||
-          case $ac_f in
-          [\\/$]*) false;;
-          *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
-          esac ||
-          { { echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5
-echo "$as_me: error: cannot find input file: $ac_f" >&2;}
-   { (exit 1); exit 1; }; };;
-      esac
-      ac_file_inputs="$ac_file_inputs $ac_f"
-    done
-
-    # Let's still pretend it is `configure' which instantiates (i.e., don't
-    # use $as_me), people would be surprised to read:
-    #    /* config.h.  Generated by config.status.  */
-    configure_input="Generated from "`IFS=:
-         echo $* | sed 's|^[^:]*/||;s|:[^:]*/|, |g'`" by configure."
-    if test x"$ac_file" != x-; then
-      configure_input="$ac_file.  $configure_input"
-      { echo "$as_me:$LINENO: creating $ac_file" >&5
-echo "$as_me: creating $ac_file" >&6;}
-    fi
-
-    case $ac_tag in
-    *:-:* | *:-) cat >"$tmp/stdin";;
-    esac
-    ;;
-  esac
-
-  ac_dir=`$as_dirname -- "$ac_file" ||
-$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-        X"$ac_file" : 'X\(//\)[^/]' \| \
-        X"$ac_file" : 'X\(//\)$' \| \
-        X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
-echo X"$ac_file" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-           s//\1/
-           q
-         }
-         /^X\(\/\/\)[^/].*/{
-           s//\1/
-           q
-         }
-         /^X\(\/\/\)$/{
-           s//\1/
-           q
-         }
-         /^X\(\/\).*/{
-           s//\1/
-           q
-         }
-         s/.*/./; q'`
-  { as_dir="$ac_dir"
-  case $as_dir in #(
-  -*) as_dir=./$as_dir;;
-  esac
-  test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || {
-    as_dirs=
-    while :; do
-      case $as_dir in #(
-      *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #(
-      *) as_qdir=$as_dir;;
-      esac
-      as_dirs="'$as_qdir' $as_dirs"
-      as_dir=`$as_dirname -- "$as_dir" ||
-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-        X"$as_dir" : 'X\(//\)[^/]' \| \
-        X"$as_dir" : 'X\(//\)$' \| \
-        X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
-echo X"$as_dir" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-           s//\1/
-           q
-         }
-         /^X\(\/\/\)[^/].*/{
-           s//\1/
-           q
-         }
-         /^X\(\/\/\)$/{
-           s//\1/
-           q
-         }
-         /^X\(\/\).*/{
-           s//\1/
-           q
-         }
-         s/.*/./; q'`
-      test -d "$as_dir" && break
-    done
-    test -z "$as_dirs" || eval "mkdir $as_dirs"
-  } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5
-echo "$as_me: error: cannot create directory $as_dir" >&2;}
-   { (exit 1); exit 1; }; }; }
-  ac_builddir=.
-
-case "$ac_dir" in
-.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
-*)
-  ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
-  # A ".." for each directory in $ac_dir_suffix.
-  ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'`
-  case $ac_top_builddir_sub in
-  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
-  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
-  esac ;;
-esac
-ac_abs_top_builddir=$ac_pwd
-ac_abs_builddir=$ac_pwd$ac_dir_suffix
-# for backward compatibility:
-ac_top_builddir=$ac_top_build_prefix
-
-case $srcdir in
-  .)  # We are building in place.
-    ac_srcdir=.
-    ac_top_srcdir=$ac_top_builddir_sub
-    ac_abs_top_srcdir=$ac_pwd ;;
-  [\\/]* | ?:[\\/]* )  # Absolute name.
-    ac_srcdir=$srcdir$ac_dir_suffix;
-    ac_top_srcdir=$srcdir
-    ac_abs_top_srcdir=$srcdir ;;
-  *) # Relative name.
-    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
-    ac_top_srcdir=$ac_top_build_prefix$srcdir
-    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
-esac
-ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
-
-
-  case $ac_mode in
-  :F)
-  #
-  # CONFIG_FILE
-  #
-
-  case $INSTALL in
-  [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
-  *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;;
-  esac
-  ac_MKDIR_P=$MKDIR_P
-  case $MKDIR_P in
-  [\\/$]* | ?:[\\/]* ) ;;
-  */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;;
-  esac
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF
-# If the template does not know about datarootdir, expand it.
-# FIXME: This hack should be removed a few years after 2.60.
-ac_datarootdir_hack=; ac_datarootdir_seen=
-
-case `sed -n '/datarootdir/ {
-  p
-  q
-}
-/@datadir@/p
-/@docdir@/p
-/@infodir@/p
-/@localedir@/p
-/@mandir@/p
-' $ac_file_inputs` in
-*datarootdir*) ac_datarootdir_seen=yes;;
-*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
-  { echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
-echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
-_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF
-  ac_datarootdir_hack='
-  s&@datadir@&$datadir&g
-  s&@docdir@&$docdir&g
-  s&@infodir@&$infodir&g
-  s&@localedir@&$localedir&g
-  s&@mandir@&$mandir&g
-    s&\\\${datarootdir}&$datarootdir&g' ;;
-esac
-_ACEOF
-
-# Neutralize VPATH when `$srcdir' = `.'.
-# Shell code in configure.ac might set extrasub.
-# FIXME: do we really want to maintain this feature?
-cat >>$CONFIG_STATUS <<_ACEOF
-  sed "$ac_vpsub
-$extrasub
-_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF
-:t
-/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
-s&@configure_input@&$configure_input&;t t
-s&@top_builddir@&$ac_top_builddir_sub&;t t
-s&@srcdir@&$ac_srcdir&;t t
-s&@abs_srcdir@&$ac_abs_srcdir&;t t
-s&@top_srcdir@&$ac_top_srcdir&;t t
-s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t
-s&@builddir@&$ac_builddir&;t t
-s&@abs_builddir@&$ac_abs_builddir&;t t
-s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
-s&@INSTALL@&$ac_INSTALL&;t t
-s&@MKDIR_P@&$ac_MKDIR_P&;t t
-$ac_datarootdir_hack
-" $ac_file_inputs | sed -f "$tmp/subs-1.sed" >$tmp/out
-
-test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
-  { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } &&
-  { ac_out=`sed -n '/^[         ]*datarootdir[  ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } &&
-  { echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir'
-which seems to be undefined.  Please make sure it is defined." >&5
-echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
-which seems to be undefined.  Please make sure it is defined." >&2;}
-
-  rm -f "$tmp/stdin"
-  case $ac_file in
-  -) cat "$tmp/out"; rm -f "$tmp/out";;
-  *) rm -f "$ac_file"; mv "$tmp/out" $ac_file;;
-  esac
- ;;
-  :H)
-  #
-  # CONFIG_HEADER
-  #
-_ACEOF
-
-# Transform confdefs.h into a sed script `conftest.defines', that
-# substitutes the proper values into config.h.in to produce config.h.
-rm -f conftest.defines conftest.tail
-# First, append a space to every undef/define line, to ease matching.
-echo 's/$/ /' >conftest.defines
-# Then, protect against being on the right side of a sed subst, or in
-# an unquoted here document, in config.status.  If some macros were
-# called several times there might be several #defines for the same
-# symbol, which is useless.  But do not sort them, since the last
-# AC_DEFINE must be honored.
-ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]*
-# These sed commands are passed to sed as "A NAME B PARAMS C VALUE D", where
-# NAME is the cpp macro being defined, VALUE is the value it is being given.
-# PARAMS is the parameter list in the macro definition--in most cases, it's
-# just an empty string.
-ac_dA='s,^\\([  #]*\\)[^        ]*\\([  ]*'
-ac_dB='\\)[     (].*,\\1define\\2'
-ac_dC=' '
-ac_dD=' ,'
-
-uniq confdefs.h |
-  sed -n '
-       t rset
-       :rset
-       s/^[     ]*#[    ]*define[       ][      ]*//
-       t ok
-       d
-       :ok
-       s/[\\&,]/\\&/g
-       s/^\('"$ac_word_re"'\)\(([^()]*)\)[      ]*\(.*\)/ '"$ac_dA"'\1'"$ac_dB"'\2'"${ac_dC}"'\3'"$ac_dD"'/p
-       s/^\('"$ac_word_re"'\)[  ]*\(.*\)/'"$ac_dA"'\1'"$ac_dB$ac_dC"'\2'"$ac_dD"'/p
-  ' >>conftest.defines
-
-# Remove the space that was appended to ease matching.
-# Then replace #undef with comments.  This is necessary, for
-# example, in the case of _POSIX_SOURCE, which is predefined and required
-# on some systems where configure will not decide to define it.
-# (The regexp can be short, since the line contains either #define or #undef.)
-echo 's/ $//
-s,^[    #]*u.*,/* & */,' >>conftest.defines
-
-# Break up conftest.defines:
-ac_max_sed_lines=50
-
-# First sed command is:         sed -f defines.sed $ac_file_inputs >"$tmp/out1"
-# Second one is:        sed -f defines.sed "$tmp/out1" >"$tmp/out2"
-# Third one will be:    sed -f defines.sed "$tmp/out2" >"$tmp/out1"
-# et cetera.
-ac_in='$ac_file_inputs'
-ac_out='"$tmp/out1"'
-ac_nxt='"$tmp/out2"'
-
-while :
-do
-  # Write a here document:
-    cat >>$CONFIG_STATUS <<_ACEOF
-    # First, check the format of the line:
-    cat >"\$tmp/defines.sed" <<\\CEOF
-/^[     ]*#[    ]*undef[        ][      ]*$ac_word_re[  ]*\$/b def
-/^[     ]*#[    ]*define[       ][      ]*$ac_word_re[(         ]/b def
-b
-:def
-_ACEOF
-  sed ${ac_max_sed_lines}q conftest.defines >>$CONFIG_STATUS
-  echo 'CEOF
-    sed -f "$tmp/defines.sed"' "$ac_in >$ac_out" >>$CONFIG_STATUS
-  ac_in=$ac_out; ac_out=$ac_nxt; ac_nxt=$ac_in
-  sed 1,${ac_max_sed_lines}d conftest.defines >conftest.tail
-  grep . conftest.tail >/dev/null || break
-  rm -f conftest.defines
-  mv conftest.tail conftest.defines
-done
-rm -f conftest.defines conftest.tail
-
-echo "ac_result=$ac_in" >>$CONFIG_STATUS
-cat >>$CONFIG_STATUS <<\_ACEOF
-  if test x"$ac_file" != x-; then
-    echo "/* $configure_input  */" >"$tmp/config.h"
-    cat "$ac_result" >>"$tmp/config.h"
-    if diff $ac_file "$tmp/config.h" >/dev/null 2>&1; then
-      { echo "$as_me:$LINENO: $ac_file is unchanged" >&5
-echo "$as_me: $ac_file is unchanged" >&6;}
-    else
-      rm -f $ac_file
-      mv "$tmp/config.h" $ac_file
-    fi
-  else
-    echo "/* $configure_input  */"
-    cat "$ac_result"
-  fi
-  rm -f "$tmp/out12"
-# Compute $ac_file's index in $config_headers.
-_am_arg=$ac_file
-_am_stamp_count=1
-for _am_header in $config_headers :; do
-  case $_am_header in
-    $_am_arg | $_am_arg:* )
-      break ;;
-    * )
-      _am_stamp_count=`expr $_am_stamp_count + 1` ;;
-  esac
-done
-echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" ||
-$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-        X"$_am_arg" : 'X\(//\)[^/]' \| \
-        X"$_am_arg" : 'X\(//\)$' \| \
-        X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null ||
-echo X"$_am_arg" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-           s//\1/
-           q
-         }
-         /^X\(\/\/\)[^/].*/{
-           s//\1/
-           q
-         }
-         /^X\(\/\/\)$/{
-           s//\1/
-           q
-         }
-         /^X\(\/\).*/{
-           s//\1/
-           q
-         }
-         s/.*/./; q'`/stamp-h$_am_stamp_count
- ;;
-
-  :C)  { echo "$as_me:$LINENO: executing $ac_file commands" >&5
-echo "$as_me: executing $ac_file commands" >&6;}
- ;;
-  esac
-
-
-  case $ac_file$ac_mode in
-    "depfiles":C) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do
-  # Strip MF so we end up with the name of the file.
-  mf=`echo "$mf" | sed -e 's/:.*$//'`
-  # Check whether this is an Automake generated Makefile or not.
-  # We used to match only the files named `Makefile.in', but
-  # some people rename them; so instead we look at the file content.
-  # Grep'ing the first line is not enough: some people post-process
-  # each Makefile.in and add a new line on top of each file to say so.
-  # Grep'ing the whole file is not good either: AIX grep has a line
-  # limit of 2048, but all sed's we know have understand at least 4000.
-  if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
-    dirpart=`$as_dirname -- "$mf" ||
-$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-        X"$mf" : 'X\(//\)[^/]' \| \
-        X"$mf" : 'X\(//\)$' \| \
-        X"$mf" : 'X\(/\)' \| . 2>/dev/null ||
-echo X"$mf" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-           s//\1/
-           q
-         }
-         /^X\(\/\/\)[^/].*/{
-           s//\1/
-           q
-         }
-         /^X\(\/\/\)$/{
-           s//\1/
-           q
-         }
-         /^X\(\/\).*/{
-           s//\1/
-           q
-         }
-         s/.*/./; q'`
-  else
-    continue
-  fi
-  # Extract the definition of DEPDIR, am__include, and am__quote
-  # from the Makefile without running `make'.
-  DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
-  test -z "$DEPDIR" && continue
-  am__include=`sed -n 's/^am__include = //p' < "$mf"`
-  test -z "am__include" && continue
-  am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
-  # When using ansi2knr, U may be empty or an underscore; expand it
-  U=`sed -n 's/^U = //p' < "$mf"`
-  # Find all dependency output files, they are included files with
-  # $(DEPDIR) in their names.  We invoke sed twice because it is the
-  # simplest approach to changing $(DEPDIR) to its actual value in the
-  # expansion.
-  for file in `sed -n "
-    s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
-       sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
-    # Make sure the directory exists.
-    test -f "$dirpart/$file" && continue
-    fdir=`$as_dirname -- "$file" ||
-$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-        X"$file" : 'X\(//\)[^/]' \| \
-        X"$file" : 'X\(//\)$' \| \
-        X"$file" : 'X\(/\)' \| . 2>/dev/null ||
-echo X"$file" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-           s//\1/
-           q
-         }
-         /^X\(\/\/\)[^/].*/{
-           s//\1/
-           q
-         }
-         /^X\(\/\/\)$/{
-           s//\1/
-           q
-         }
-         /^X\(\/\).*/{
-           s//\1/
-           q
-         }
-         s/.*/./; q'`
-    { as_dir=$dirpart/$fdir
-  case $as_dir in #(
-  -*) as_dir=./$as_dir;;
-  esac
-  test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || {
-    as_dirs=
-    while :; do
-      case $as_dir in #(
-      *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #(
-      *) as_qdir=$as_dir;;
-      esac
-      as_dirs="'$as_qdir' $as_dirs"
-      as_dir=`$as_dirname -- "$as_dir" ||
-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-        X"$as_dir" : 'X\(//\)[^/]' \| \
-        X"$as_dir" : 'X\(//\)$' \| \
-        X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
-echo X"$as_dir" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-           s//\1/
-           q
-         }
-         /^X\(\/\/\)[^/].*/{
-           s//\1/
-           q
-         }
-         /^X\(\/\/\)$/{
-           s//\1/
-           q
-         }
-         /^X\(\/\).*/{
-           s//\1/
-           q
-         }
-         s/.*/./; q'`
-      test -d "$as_dir" && break
-    done
-    test -z "$as_dirs" || eval "mkdir $as_dirs"
-  } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5
-echo "$as_me: error: cannot create directory $as_dir" >&2;}
-   { (exit 1); exit 1; }; }; }
-    # echo "creating $dirpart/$file"
-    echo '# dummy' > "$dirpart/$file"
-  done
-done
- ;;
-
-  esac
-done # for ac_tag
-
-
-{ (exit 0); exit 0; }
-_ACEOF
-chmod +x $CONFIG_STATUS
-ac_clean_files=$ac_clean_files_save
-
-
-# configure is writing to config.log, and then calls config.status.
-# config.status does its own redirection, appending to config.log.
-# Unfortunately, on DOS this fails, as config.log is still kept open
-# by configure, so config.status won't be able to write to it; its
-# output is simply discarded.  So we exec the FD to /dev/null,
-# effectively closing config.log, so it can be properly (re)opened and
-# appended to by config.status.  When coming back to configure, we
-# need to make the FD available again.
-if test "$no_create" != yes; then
-  ac_cs_success=:
-  ac_config_status_args=
-  test "$silent" = yes &&
-    ac_config_status_args="$ac_config_status_args --quiet"
-  exec 5>/dev/null
-  $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
-  exec 5>>config.log
-  # Use ||, not &&, to avoid exiting from the if with $? = 1, which
-  # would make configure fail if this is the last instruction.
-  $ac_cs_success || { (exit 1); exit 1; }
-fi
-
-PRODUCT=xboard
-#VERSION=4.3  # version is already defined
-PATCHLEVEL=16
-
-
-if test -z "$CFLAGS" ; then
-  CFLAGS=" "
-fi
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
-set dummy ${ac_tool_prefix}gcc; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
-if test "${ac_cv_prog_CC+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_CC="${ac_tool_prefix}gcc"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-IFS=$as_save_IFS
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  { echo "$as_me:$LINENO: result: $CC" >&5
-echo "${ECHO_T}$CC" >&6; }
-else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_CC"; then
-  ac_ct_CC=$CC
-  # Extract the first word of "gcc", so it can be a program name with args.
-set dummy gcc; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test -n "$ac_ct_CC"; then
-  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_ac_ct_CC="gcc"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_CC=$ac_cv_prog_ac_ct_CC
-if test -n "$ac_ct_CC"; then
-  { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
-echo "${ECHO_T}$ac_ct_CC" >&6; }
-else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
-fi
-
-  if test "x$ac_ct_CC" = x; then
-    CC=""
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
-whose name does not start with the host triplet.  If you think this
-configuration is useful to you, please write to autoconf@gnu.org." >&5
-echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
-whose name does not start with the host triplet.  If you think this
-configuration is useful to you, please write to autoconf@gnu.org." >&2;}
-ac_tool_warned=yes ;;
-esac
-    CC=$ac_ct_CC
-  fi
-else
-  CC="$ac_cv_prog_CC"
-fi
-
-if test -z "$CC"; then
-          if test -n "$ac_tool_prefix"; then
-    # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
-set dummy ${ac_tool_prefix}cc; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
-if test "${ac_cv_prog_CC+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_CC="${ac_tool_prefix}cc"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-IFS=$as_save_IFS
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  { echo "$as_me:$LINENO: result: $CC" >&5
-echo "${ECHO_T}$CC" >&6; }
-else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
-fi
-
-
-  fi
-fi
-if test -z "$CC"; then
-  # Extract the first word of "cc", so it can be a program name with args.
-set dummy cc; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
-if test "${ac_cv_prog_CC+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-  ac_prog_rejected=no
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
-       ac_prog_rejected=yes
-       continue
-     fi
-    ac_cv_prog_CC="cc"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-IFS=$as_save_IFS
-
-if test $ac_prog_rejected = yes; then
-  # We found a bogon in the path, so make sure we never use it.
-  set dummy $ac_cv_prog_CC
-  shift
-  if test $# != 0; then
-    # We chose a different compiler from the bogus one.
-    # However, it has the same basename, so the bogon will be chosen
-    # first if we set CC to just the basename; use the full file name.
-    shift
-    ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
-  fi
-fi
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  { echo "$as_me:$LINENO: result: $CC" >&5
-echo "${ECHO_T}$CC" >&6; }
-else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
-fi
-
-
-fi
-if test -z "$CC"; then
-  if test -n "$ac_tool_prefix"; then
-  for ac_prog in cl.exe
-  do
-    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
-set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
-if test "${ac_cv_prog_CC+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-IFS=$as_save_IFS
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  { echo "$as_me:$LINENO: result: $CC" >&5
-echo "${ECHO_T}$CC" >&6; }
-else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
-fi
-
-
-    test -n "$CC" && break
-  done
-fi
-if test -z "$CC"; then
-  ac_ct_CC=$CC
-  for ac_prog in cl.exe
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test -n "$ac_ct_CC"; then
-  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_ac_ct_CC="$ac_prog"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_CC=$ac_cv_prog_ac_ct_CC
-if test -n "$ac_ct_CC"; then
-  { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
-echo "${ECHO_T}$ac_ct_CC" >&6; }
-else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
-fi
-
-
-  test -n "$ac_ct_CC" && break
-done
-
-  if test "x$ac_ct_CC" = x; then
-    CC=""
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
-whose name does not start with the host triplet.  If you think this
-configuration is useful to you, please write to autoconf@gnu.org." >&5
-echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
-whose name does not start with the host triplet.  If you think this
-configuration is useful to you, please write to autoconf@gnu.org." >&2;}
-ac_tool_warned=yes ;;
-esac
-    CC=$ac_ct_CC
-  fi
-fi
-
-fi
-
-
-test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH
-See \`config.log' for more details." >&5
-echo "$as_me: error: no acceptable C compiler found in \$PATH
-See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; }
-
-# Provide some information about the compiler.
-echo "$as_me:$LINENO: checking for C compiler version" >&5
-ac_compiler=`set X $ac_compile; echo $2`
-{ (ac_try="$ac_compiler --version >&5"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compiler --version >&5") 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }
-{ (ac_try="$ac_compiler -v >&5"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compiler -v >&5") 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }
-{ (ac_try="$ac_compiler -V >&5"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compiler -V >&5") 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }
-
-{ echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5
-echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6; }
-if test "${ac_cv_c_compiler_gnu+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-int
-main ()
-{
-#ifndef __GNUC__
-       choke me
-#endif
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_compiler_gnu=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       ac_compiler_gnu=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-ac_cv_c_compiler_gnu=$ac_compiler_gnu
-
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5
-echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6; }
-GCC=`test $ac_compiler_gnu = yes && echo yes`
-ac_test_CFLAGS=${CFLAGS+set}
-ac_save_CFLAGS=$CFLAGS
-{ echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5
-echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6; }
-if test "${ac_cv_prog_cc_g+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_save_c_werror_flag=$ac_c_werror_flag
-   ac_c_werror_flag=yes
-   ac_cv_prog_cc_g=no
-   CFLAGS="-g"
-   cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_cv_prog_cc_g=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       CFLAGS=""
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  :
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       ac_c_werror_flag=$ac_save_c_werror_flag
-        CFLAGS="-g"
-        cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_cv_prog_cc_g=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-   ac_c_werror_flag=$ac_save_c_werror_flag
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5
-echo "${ECHO_T}$ac_cv_prog_cc_g" >&6; }
-if test "$ac_test_CFLAGS" = set; then
-  CFLAGS=$ac_save_CFLAGS
-elif test $ac_cv_prog_cc_g = yes; then
-  if test "$GCC" = yes; then
-    CFLAGS="-g -O2"
-  else
-    CFLAGS="-g"
-  fi
-else
-  if test "$GCC" = yes; then
-    CFLAGS="-O2"
-  else
-    CFLAGS=
-  fi
-fi
-{ echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5
-echo $ECHO_N "checking for $CC option to accept ISO C89... $ECHO_C" >&6; }
-if test "${ac_cv_prog_cc_c89+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_cv_prog_cc_c89=no
-ac_save_CC=$CC
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <stdarg.h>
-#include <stdio.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-/* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
-struct buf { int x; };
-FILE * (*rcsopen) (struct buf *, struct stat *, int);
-static char *e (p, i)
-     char **p;
-     int i;
-{
-  return p[i];
-}
-static char *f (char * (*g) (char **, int), char **p, ...)
-{
-  char *s;
-  va_list v;
-  va_start (v,p);
-  s = g (p, va_arg (v,int));
-  va_end (v);
-  return s;
-}
-
-/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has
-   function prototypes and stuff, but not '\xHH' hex character constants.
-   These don't provoke an error unfortunately, instead are silently treated
-   as 'x'.  The following induces an error, until -std is added to get
-   proper ANSI mode.  Curiously '\x00'!='x' always comes out true, for an
-   array size at least.  It's necessary to write '\x00'==0 to get something
-   that's true only with -std.  */
-int osf4_cc_array ['\x00' == 0 ? 1 : -1];
-
-/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
-   inside strings and character constants.  */
-#define FOO(x) 'x'
-int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
-
-int test (int i, double x);
-struct s1 {int (*f) (int a);};
-struct s2 {int (*f) (double a);};
-int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
-int argc;
-char **argv;
-int
-main ()
-{
-return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];
-  ;
-  return 0;
-}
-_ACEOF
-for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
-       -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
-do
-  CC="$ac_save_CC $ac_arg"
-  rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_cv_prog_cc_c89=$ac_arg
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
-fi
-
-rm -f core conftest.err conftest.$ac_objext
-  test "x$ac_cv_prog_cc_c89" != "xno" && break
-done
-rm -f conftest.$ac_ext
-CC=$ac_save_CC
-
-fi
-# AC_CACHE_VAL
-case "x$ac_cv_prog_cc_c89" in
-  x)
-    { echo "$as_me:$LINENO: result: none needed" >&5
-echo "${ECHO_T}none needed" >&6; } ;;
-  xno)
-    { echo "$as_me:$LINENO: result: unsupported" >&5
-echo "${ECHO_T}unsupported" >&6; } ;;
-  *)
-    CC="$CC $ac_cv_prog_cc_c89"
-    { echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5
-echo "${ECHO_T}$ac_cv_prog_cc_c89" >&6; } ;;
-esac
-
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-depcc="$CC"   am_compiler_list=
-
-{ echo "$as_me:$LINENO: checking dependency style of $depcc" >&5
-echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6; }
-if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
-  # We make a subdir and do the tests there.  Otherwise we can end up
-  # making bogus files that we don't know about and never remove.  For
-  # instance it was reported that on HP-UX the gcc test will end up
-  # making a dummy file named `D' -- because `-MD' means `put the output
-  # in D'.
-  mkdir conftest.dir
-  # Copy depcomp to subdir because otherwise we won't find it if we're
-  # using a relative directory.
-  cp "$am_depcomp" conftest.dir
-  cd conftest.dir
-  # We will build objects and dependencies in a subdirectory because
-  # it helps to detect inapplicable dependency modes.  For instance
-  # both Tru64's cc and ICC support -MD to output dependencies as a
-  # side effect of compilation, but ICC will put the dependencies in
-  # the current directory while Tru64 will put them in the object
-  # directory.
-  mkdir sub
-
-  am_cv_CC_dependencies_compiler_type=none
-  if test "$am_compiler_list" = ""; then
-     am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
-  fi
-  for depmode in $am_compiler_list; do
-    # Setup a source with many dependencies, because some compilers
-    # like to wrap large dependency lists on column 80 (with \), and
-    # we should not choose a depcomp mode which is confused by this.
-    #
-    # We need to recreate these files for each test, as the compiler may
-    # overwrite some of them when testing with obscure command lines.
-    # This happens at least with the AIX C compiler.
-    : > sub/conftest.c
-    for i in 1 2 3 4 5 6; do
-      echo '#include "conftst'$i'.h"' >> sub/conftest.c
-      # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
-      # Solaris 8's {/usr,}/bin/sh.
-      touch sub/conftst$i.h
-    done
-    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
-
-    case $depmode in
-    nosideeffect)
-      # after this tag, mechanisms are not by side-effect, so they'll
-      # only be used when explicitly requested
-      if test "x$enable_dependency_tracking" = xyes; then
-       continue
-      else
-       break
-      fi
-      ;;
-    none) break ;;
-    esac
-    # We check with `-c' and `-o' for the sake of the "dashmstdout"
-    # mode.  It turns out that the SunPro C++ compiler does not properly
-    # handle `-M -o', and we need to detect this.
-    if depmode=$depmode \
-       source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \
-       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
-       $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \
-         >/dev/null 2>conftest.err &&
-       grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
-       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
-       grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 &&
-       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
-      # icc doesn't choke on unknown options, it will just issue warnings
-      # or remarks (even with -Werror).  So we grep stderr for any message
-      # that says an option was ignored or not supported.
-      # When given -MP, icc 7.0 and 7.1 complain thusly:
-      #   icc: Command line warning: ignoring option '-M'; no argument required
-      # The diagnosis changed in icc 8.0:
-      #   icc: Command line remark: option '-MP' not supported
-      if (grep 'ignoring option' conftest.err ||
-          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
-        am_cv_CC_dependencies_compiler_type=$depmode
-        break
-      fi
-    fi
-  done
-
-  cd ..
-  rm -rf conftest.dir
-else
-  am_cv_CC_dependencies_compiler_type=none
-fi
-
-fi
-{ echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5
-echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6; }
-CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
-
- if
-  test "x$enable_dependency_tracking" != xno \
-  && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then
-  am__fastdepCC_TRUE=
-  am__fastdepCC_FALSE='#'
-else
-  am__fastdepCC_TRUE='#'
-  am__fastdepCC_FALSE=
-fi
-
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-{ echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5
-echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6; }
-# On Suns, sometimes $CPP names a directory.
-if test -n "$CPP" && test -d "$CPP"; then
-  CPP=
-fi
-if test -z "$CPP"; then
-  if test "${ac_cv_prog_CPP+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-      # Double quotes because CPP needs to be expanded
-    for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
-    do
-      ac_preproc_ok=false
-for ac_c_preproc_warn_flag in '' yes
-do
-  # Use a header file that comes with gcc, so configuring glibc
-  # with a fresh cross-compiler works.
-  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-  # <limits.h> exists even on freestanding compilers.
-  # On the NeXT, cc -E runs the code through the compiler's parser,
-  # not just through cpp. "Syntax error" is here to catch this case.
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-                    Syntax error
-_ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null && {
-        test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       }; then
-  :
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  # Broken: fails on valid input.
-continue
-fi
-
-rm -f conftest.err conftest.$ac_ext
-
-  # OK, works on sane cases.  Now check whether nonexistent headers
-  # can be detected and how.
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <ac_nonexistent.h>
-_ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null && {
-        test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       }; then
-  # Broken: success on invalid input.
-continue
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  # Passes both tests.
-ac_preproc_ok=:
-break
-fi
-
-rm -f conftest.err conftest.$ac_ext
-
-done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then
-  break
-fi
-
-    done
-    ac_cv_prog_CPP=$CPP
-
-fi
-  CPP=$ac_cv_prog_CPP
-else
-  ac_cv_prog_CPP=$CPP
-fi
-{ echo "$as_me:$LINENO: result: $CPP" >&5
-echo "${ECHO_T}$CPP" >&6; }
-ac_preproc_ok=false
-for ac_c_preproc_warn_flag in '' yes
-do
-  # Use a header file that comes with gcc, so configuring glibc
-  # with a fresh cross-compiler works.
-  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-  # <limits.h> exists even on freestanding compilers.
-  # On the NeXT, cc -E runs the code through the compiler's parser,
-  # not just through cpp. "Syntax error" is here to catch this case.
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-                    Syntax error
-_ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null && {
-        test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       }; then
-  :
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  # Broken: fails on valid input.
-continue
-fi
-
-rm -f conftest.err conftest.$ac_ext
-
-  # OK, works on sane cases.  Now check whether nonexistent headers
-  # can be detected and how.
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <ac_nonexistent.h>
-_ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null && {
-        test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       }; then
-  # Broken: success on invalid input.
-continue
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  # Passes both tests.
-ac_preproc_ok=:
-break
-fi
-
-rm -f conftest.err conftest.$ac_ext
-
-done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then
-  :
-else
-  { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check
-See \`config.log' for more details." >&5
-echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check
-See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-{ echo "$as_me:$LINENO: checking for library containing strerror" >&5
-echo $ECHO_N "checking for library containing strerror... $ECHO_C" >&6; }
-if test "${ac_cv_search_strerror+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_func_search_save_LIBS=$LIBS
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char strerror ();
-int
-main ()
-{
-return strerror ();
-  ;
-  return 0;
-}
-_ACEOF
-for ac_lib in '' cposix; do
-  if test -z "$ac_lib"; then
-    ac_res="none required"
-  else
-    ac_res=-l$ac_lib
-    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
-  fi
-  rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
-  ac_cv_search_strerror=$ac_res
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext
-  if test "${ac_cv_search_strerror+set}" = set; then
-  break
-fi
-done
-if test "${ac_cv_search_strerror+set}" = set; then
-  :
-else
-  ac_cv_search_strerror=no
-fi
-rm conftest.$ac_ext
-LIBS=$ac_func_search_save_LIBS
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_search_strerror" >&5
-echo "${ECHO_T}$ac_cv_search_strerror" >&6; }
-ac_res=$ac_cv_search_strerror
-if test "$ac_res" != no; then
-  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
-
-fi
-
-# Find a good install program.  We prefer a C program (faster),
-# so one script is as good as another.  But avoid the broken or
-# incompatible versions:
-# SysV /etc/install, /usr/sbin/install
-# SunOS /usr/etc/install
-# IRIX /sbin/install
-# AIX /bin/install
-# AmigaOS /C/install, which installs bootblocks on floppy discs
-# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
-# AFS /usr/afsws/bin/install, which mishandles nonexistent args
-# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
-# OS/2's system install, which has a completely different semantic
-# ./install, which can be erroneously created by make from ./install.sh.
-{ echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5
-echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6; }
-if test -z "$INSTALL"; then
-if test "${ac_cv_path_install+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  # Account for people who put trailing slashes in PATH elements.
-case $as_dir/ in
-  ./ | .// | /cC/* | \
-  /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
-  ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \
-  /usr/ucb/* ) ;;
-  *)
-    # OSF1 and SCO ODT 3.0 have their own names for install.
-    # Don't use installbsd from OSF since it installs stuff as root
-    # by default.
-    for ac_prog in ginstall scoinst install; do
-      for ac_exec_ext in '' $ac_executable_extensions; do
-       if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then
-         if test $ac_prog = install &&
-           grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
-           # AIX install.  It has an incompatible calling convention.
-           :
-         elif test $ac_prog = install &&
-           grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
-           # program-specific install script used by HP pwplus--don't use.
-           :
-         else
-           ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
-           break 3
-         fi
-       fi
-      done
-    done
-    ;;
-esac
-done
-IFS=$as_save_IFS
-
-
-fi
-  if test "${ac_cv_path_install+set}" = set; then
-    INSTALL=$ac_cv_path_install
-  else
-    # As a last resort, use the slow shell script.  Don't cache a
-    # value for INSTALL within a source directory, because that will
-    # break other packages using the cache if that directory is
-    # removed, or if the value is a relative name.
-    INSTALL=$ac_install_sh
-  fi
-fi
-{ echo "$as_me:$LINENO: result: $INSTALL" >&5
-echo "${ECHO_T}$INSTALL" >&6; }
-
-# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
-# It thinks the first close brace ends the variable substitution.
-test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
-
-test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
-
-test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
-
-for ac_prog in lex flex
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
-if test "${ac_cv_prog_LEX+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test -n "$LEX"; then
-  ac_cv_prog_LEX="$LEX" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_LEX="$ac_prog"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-IFS=$as_save_IFS
-
-fi
-fi
-LEX=$ac_cv_prog_LEX
-if test -n "$LEX"; then
-  { echo "$as_me:$LINENO: result: $LEX" >&5
-echo "${ECHO_T}$LEX" >&6; }
-else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
-fi
-
-
-  test -n "$LEX" && break
-done
-test -n "$LEX" || LEX="lex_not_found"
-
-if test "$LEX" != lex_not_found ; then
-  for ac_prog in flex lex
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
-if test "${ac_cv_prog_LEX+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test -n "$LEX"; then
-  ac_cv_prog_LEX="$LEX" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_LEX="$ac_prog"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-IFS=$as_save_IFS
-
-fi
-fi
-LEX=$ac_cv_prog_LEX
-if test -n "$LEX"; then
-  { echo "$as_me:$LINENO: result: $LEX" >&5
-echo "${ECHO_T}$LEX" >&6; }
-else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
-fi
-
-
-  test -n "$LEX" && break
-done
-test -n "$LEX" || LEX=":"
-
-if test "x$LEX" != "x:"; then
-  cat >conftest.l <<_ACEOF
-%%
-a { ECHO; }
-b { REJECT; }
-c { yymore (); }
-d { yyless (1); }
-e { yyless (input () != 0); }
-f { unput (yytext[0]); }
-. { BEGIN INITIAL; }
-%%
-#ifdef YYTEXT_POINTER
-extern char *yytext;
-#endif
-int
-main (void)
-{
-  return ! yylex () + ! yywrap ();
-}
-_ACEOF
-{ (ac_try="$LEX conftest.l"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$LEX conftest.l") 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }
-{ echo "$as_me:$LINENO: checking lex output file root" >&5
-echo $ECHO_N "checking lex output file root... $ECHO_C" >&6; }
-if test "${ac_cv_prog_lex_root+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-if test -f lex.yy.c; then
-  ac_cv_prog_lex_root=lex.yy
-elif test -f lexyy.c; then
-  ac_cv_prog_lex_root=lexyy
-else
-  { { echo "$as_me:$LINENO: error: cannot find output from $LEX; giving up" >&5
-echo "$as_me: error: cannot find output from $LEX; giving up" >&2;}
-   { (exit 1); exit 1; }; }
-fi
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_prog_lex_root" >&5
-echo "${ECHO_T}$ac_cv_prog_lex_root" >&6; }
-LEX_OUTPUT_ROOT=$ac_cv_prog_lex_root
-
-if test -z "${LEXLIB+set}"; then
-  { echo "$as_me:$LINENO: checking lex library" >&5
-echo $ECHO_N "checking lex library... $ECHO_C" >&6; }
-if test "${ac_cv_lib_lex+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-    ac_save_LIBS=$LIBS
-    ac_cv_lib_lex='none needed'
-    for ac_lib in '' -lfl -ll; do
-      LIBS="$ac_lib $ac_save_LIBS"
-      cat >conftest.$ac_ext <<_ACEOF
-`cat $LEX_OUTPUT_ROOT.c`
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
-  ac_cv_lib_lex=$ac_lib
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-      test "$ac_cv_lib_lex" != 'none needed' && break
-    done
-    LIBS=$ac_save_LIBS
-
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_lib_lex" >&5
-echo "${ECHO_T}$ac_cv_lib_lex" >&6; }
-  test "$ac_cv_lib_lex" != 'none needed' && LEXLIB=$ac_cv_lib_lex
-fi
-
-
-{ echo "$as_me:$LINENO: checking whether yytext is a pointer" >&5
-echo $ECHO_N "checking whether yytext is a pointer... $ECHO_C" >&6; }
-if test "${ac_cv_prog_lex_yytext_pointer+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  # POSIX says lex can declare yytext either as a pointer or an array; the
-# default is implementation-dependent.  Figure out which it is, since
-# not all implementations provide the %pointer and %array declarations.
-ac_cv_prog_lex_yytext_pointer=no
-ac_save_LIBS=$LIBS
-LIBS="$LEXLIB $ac_save_LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-#define YYTEXT_POINTER 1
-`cat $LEX_OUTPUT_ROOT.c`
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
-  ac_cv_prog_lex_yytext_pointer=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_save_LIBS
-
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_prog_lex_yytext_pointer" >&5
-echo "${ECHO_T}$ac_cv_prog_lex_yytext_pointer" >&6; }
-if test $ac_cv_prog_lex_yytext_pointer = yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define YYTEXT_POINTER 1
-_ACEOF
-
-fi
-rm -f conftest.l $LEX_OUTPUT_ROOT.c
-
-fi
-fi
-for ac_prog in remsh rsh
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
-if test "${ac_cv_prog_RSH+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test -n "$RSH"; then
-  ac_cv_prog_RSH="$RSH" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_RSH="$ac_prog"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-IFS=$as_save_IFS
-
-fi
-fi
-RSH=$ac_cv_prog_RSH
-if test -n "$RSH"; then
-  { echo "$as_me:$LINENO: result: $RSH" >&5
-echo "${ECHO_T}$RSH" >&6; }
-else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
-fi
-
-
-  test -n "$RSH" && break
-done
-test -n "$RSH" || RSH="rsh"
-
-for ac_prog in makeinfo
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
-if test "${ac_cv_prog_MINFO+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test -n "$MINFO"; then
-  ac_cv_prog_MINFO="$MINFO" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_MINFO="$ac_prog"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-IFS=$as_save_IFS
-
-fi
-fi
-MINFO=$ac_cv_prog_MINFO
-if test -n "$MINFO"; then
-  { echo "$as_me:$LINENO: result: $MINFO" >&5
-echo "${ECHO_T}$MINFO" >&6; }
-else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
-fi
-
-
-  test -n "$MINFO" && break
-done
-test -n "$MINFO" || MINFO="makeinfo_not_found"
-
-if test "$MINFO" == makeinfo_not_found ; then
-   echo Please install \"makeinfo\"
-   exit 1
-fi
-cat >>confdefs.h <<_ACEOF
-#define REMOTE_SHELL "$RSH"
-_ACEOF
-
-# Extract the first word of "nroff", so it can be a program name with args.
-set dummy nroff; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
-if test "${ac_cv_prog_NROFF+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test -n "$NROFF"; then
-  ac_cv_prog_NROFF="$NROFF" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_NROFF="nroff -man"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-IFS=$as_save_IFS
-
-  test -z "$ac_cv_prog_NROFF" && ac_cv_prog_NROFF="cat"
-fi
-fi
-NROFF=$ac_cv_prog_NROFF
-if test -n "$NROFF"; then
-  { echo "$as_me:$LINENO: result: $NROFF" >&5
-echo "${ECHO_T}$NROFF" >&6; }
-else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
-fi
-
-
-
-for ac_prog in awk mawk gawk nawk
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
-if test "${ac_cv_path_AWKPATH+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  case $AWKPATH in
-  [\\/]* | ?:[\\/]*)
-  ac_cv_path_AWKPATH="$AWKPATH" # Let the user override the test with a path.
-  ;;
-  *)
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_path_AWKPATH="$as_dir/$ac_word$ac_exec_ext"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-IFS=$as_save_IFS
-
-  ;;
-esac
-fi
-AWKPATH=$ac_cv_path_AWKPATH
-if test -n "$AWKPATH"; then
-  { echo "$as_me:$LINENO: result: $AWKPATH" >&5
-echo "${ECHO_T}$AWKPATH" >&6; }
-else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
-fi
-
-
-  test -n "$AWKPATH" && break
-done
-
-for ac_prog in perl
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
-if test "${ac_cv_path_PERLPATH+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  case $PERLPATH in
-  [\\/]* | ?:[\\/]*)
-  ac_cv_path_PERLPATH="$PERLPATH" # Let the user override the test with a path.
-  ;;
-  *)
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_path_PERLPATH="$as_dir/$ac_word$ac_exec_ext"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-IFS=$as_save_IFS
-
-  ;;
-esac
-fi
-PERLPATH=$ac_cv_path_PERLPATH
-if test -n "$PERLPATH"; then
-  { echo "$as_me:$LINENO: result: $PERLPATH" >&5
-echo "${ECHO_T}$PERLPATH" >&6; }
-else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
-fi
-
-
-  test -n "$PERLPATH" && break
-done
-
-
-
-
-
-
-{ echo "$as_me:$LINENO: checking for grep that handles long lines and -e" >&5
-echo $ECHO_N "checking for grep that handles long lines and -e... $ECHO_C" >&6; }
-if test "${ac_cv_path_GREP+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  # Extract the first word of "grep ggrep" to use in msg output
-if test -z "$GREP"; then
-set dummy grep ggrep; ac_prog_name=$2
-if test "${ac_cv_path_GREP+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_path_GREP_found=false
-# Loop through the user's path and test for each of PROGNAME-LIST
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for ac_prog in grep ggrep; do
-  for ac_exec_ext in '' $ac_executable_extensions; do
-    ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
-    { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue
-    # Check for GNU ac_path_GREP and select it if it is found.
-  # Check for GNU $ac_path_GREP
-case `"$ac_path_GREP" --version 2>&1` in
-*GNU*)
-  ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
-*)
-  ac_count=0
-  echo $ECHO_N "0123456789$ECHO_C" >"conftest.in"
-  while :
-  do
-    cat "conftest.in" "conftest.in" >"conftest.tmp"
-    mv "conftest.tmp" "conftest.in"
-    cp "conftest.in" "conftest.nl"
-    echo 'GREP' >> "conftest.nl"
-    "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
-    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
-    ac_count=`expr $ac_count + 1`
-    if test $ac_count -gt ${ac_path_GREP_max-0}; then
-      # Best one so far, save it but keep looking for a better one
-      ac_cv_path_GREP="$ac_path_GREP"
-      ac_path_GREP_max=$ac_count
-    fi
-    # 10*(2^10) chars as input seems more than enough
-    test $ac_count -gt 10 && break
-  done
-  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-esac
-
-
-    $ac_path_GREP_found && break 3
-  done
-done
-
-done
-IFS=$as_save_IFS
-
-
-fi
-
-GREP="$ac_cv_path_GREP"
-if test -z "$GREP"; then
-  { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5
-echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;}
-   { (exit 1); exit 1; }; }
-fi
-
-else
-  ac_cv_path_GREP=$GREP
-fi
-
-
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5
-echo "${ECHO_T}$ac_cv_path_GREP" >&6; }
- GREP="$ac_cv_path_GREP"
-
-
-{ echo "$as_me:$LINENO: checking for egrep" >&5
-echo $ECHO_N "checking for egrep... $ECHO_C" >&6; }
-if test "${ac_cv_path_EGREP+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
-   then ac_cv_path_EGREP="$GREP -E"
-   else
-     # Extract the first word of "egrep" to use in msg output
-if test -z "$EGREP"; then
-set dummy egrep; ac_prog_name=$2
-if test "${ac_cv_path_EGREP+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_path_EGREP_found=false
-# Loop through the user's path and test for each of PROGNAME-LIST
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for ac_prog in egrep; do
-  for ac_exec_ext in '' $ac_executable_extensions; do
-    ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
-    { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue
-    # Check for GNU ac_path_EGREP and select it if it is found.
-  # Check for GNU $ac_path_EGREP
-case `"$ac_path_EGREP" --version 2>&1` in
-*GNU*)
-  ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
-*)
-  ac_count=0
-  echo $ECHO_N "0123456789$ECHO_C" >"conftest.in"
-  while :
-  do
-    cat "conftest.in" "conftest.in" >"conftest.tmp"
-    mv "conftest.tmp" "conftest.in"
-    cp "conftest.in" "conftest.nl"
-    echo 'EGREP' >> "conftest.nl"
-    "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
-    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
-    ac_count=`expr $ac_count + 1`
-    if test $ac_count -gt ${ac_path_EGREP_max-0}; then
-      # Best one so far, save it but keep looking for a better one
-      ac_cv_path_EGREP="$ac_path_EGREP"
-      ac_path_EGREP_max=$ac_count
-    fi
-    # 10*(2^10) chars as input seems more than enough
-    test $ac_count -gt 10 && break
-  done
-  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-esac
-
-
-    $ac_path_EGREP_found && break 3
-  done
-done
-
-done
-IFS=$as_save_IFS
-
-
-fi
-
-EGREP="$ac_cv_path_EGREP"
-if test -z "$EGREP"; then
-  { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5
-echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;}
-   { (exit 1); exit 1; }; }
-fi
-
-else
-  ac_cv_path_EGREP=$EGREP
-fi
-
-
-   fi
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5
-echo "${ECHO_T}$ac_cv_path_EGREP" >&6; }
- EGREP="$ac_cv_path_EGREP"
-
-
-{ echo "$as_me:$LINENO: checking for ANSI C header files" >&5
-echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6; }
-if test "${ac_cv_header_stdc+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <stdlib.h>
-#include <stdarg.h>
-#include <string.h>
-#include <float.h>
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_cv_header_stdc=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       ac_cv_header_stdc=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-if test $ac_cv_header_stdc = yes; then
-  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <string.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "memchr" >/dev/null 2>&1; then
-  :
-else
-  ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
-  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <stdlib.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "free" >/dev/null 2>&1; then
-  :
-else
-  ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
-  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
-  if test "$cross_compiling" = yes; then
-  :
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <ctype.h>
-#include <stdlib.h>
-#if ((' ' & 0x0FF) == 0x020)
-# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
-# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
-#else
-# define ISLOWER(c) \
-                  (('a' <= (c) && (c) <= 'i') \
-                    || ('j' <= (c) && (c) <= 'r') \
-                    || ('s' <= (c) && (c) <= 'z'))
-# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
-#endif
-
-#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
-int
-main ()
-{
-  int i;
-  for (i = 0; i < 256; i++)
-    if (XOR (islower (i), ISLOWER (i))
-       || toupper (i) != TOUPPER (i))
-      return 2;
-  return 0;
-}
-_ACEOF
-rm -f conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_link") 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
-  { (case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  :
-else
-  echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-( exit $ac_status )
-ac_cv_header_stdc=no
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
-
-
-fi
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5
-echo "${ECHO_T}$ac_cv_header_stdc" >&6; }
-if test $ac_cv_header_stdc = yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define STDC_HEADERS 1
-_ACEOF
-
-fi
-
-{ echo "$as_me:$LINENO: checking whether time.h and sys/time.h may both be included" >&5
-echo $ECHO_N "checking whether time.h and sys/time.h may both be included... $ECHO_C" >&6; }
-if test "${ac_cv_header_time+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <sys/types.h>
-#include <sys/time.h>
-#include <time.h>
-
-int
-main ()
-{
-if ((struct tm *) 0)
-return 0;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_cv_header_time=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       ac_cv_header_time=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_header_time" >&5
-echo "${ECHO_T}$ac_cv_header_time" >&6; }
-if test $ac_cv_header_time = yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define TIME_WITH_SYS_TIME 1
-_ACEOF
-
-fi
-
-{ echo "$as_me:$LINENO: checking for sys/wait.h that is POSIX.1 compatible" >&5
-echo $ECHO_N "checking for sys/wait.h that is POSIX.1 compatible... $ECHO_C" >&6; }
-if test "${ac_cv_header_sys_wait_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <sys/types.h>
-#include <sys/wait.h>
-#ifndef WEXITSTATUS
-# define WEXITSTATUS(stat_val) ((unsigned int) (stat_val) >> 8)
-#endif
-#ifndef WIFEXITED
-# define WIFEXITED(stat_val) (((stat_val) & 255) == 0)
-#endif
-
-int
-main ()
-{
-  int s;
-  wait (&s);
-  s = WIFEXITED (s) ? WEXITSTATUS (s) : 1;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_cv_header_sys_wait_h=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       ac_cv_header_sys_wait_h=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_header_sys_wait_h" >&5
-echo "${ECHO_T}$ac_cv_header_sys_wait_h" >&6; }
-if test $ac_cv_header_sys_wait_h = yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_SYS_WAIT_H 1
-_ACEOF
-
-fi
-
-
-
-
-
-
-ac_header_dirent=no
-for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h; do
-  as_ac_Header=`echo "ac_cv_header_dirent_$ac_hdr" | $as_tr_sh`
-{ echo "$as_me:$LINENO: checking for $ac_hdr that defines DIR" >&5
-echo $ECHO_N "checking for $ac_hdr that defines DIR... $ECHO_C" >&6; }
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <sys/types.h>
-#include <$ac_hdr>
-
-int
-main ()
-{
-if ((DIR *) 0)
-return 0;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  eval "$as_ac_Header=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       eval "$as_ac_Header=no"
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-ac_res=`eval echo '${'$as_ac_Header'}'`
-              { echo "$as_me:$LINENO: result: $ac_res" >&5
-echo "${ECHO_T}$ac_res" >&6; }
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_hdr" | $as_tr_cpp` 1
-_ACEOF
-
-ac_header_dirent=$ac_hdr; break
-fi
-
-done
-# Two versions of opendir et al. are in -ldir and -lx on SCO Xenix.
-if test $ac_header_dirent = dirent.h; then
-  { echo "$as_me:$LINENO: checking for library containing opendir" >&5
-echo $ECHO_N "checking for library containing opendir... $ECHO_C" >&6; }
-if test "${ac_cv_search_opendir+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_func_search_save_LIBS=$LIBS
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char opendir ();
-int
-main ()
-{
-return opendir ();
-  ;
-  return 0;
-}
-_ACEOF
-for ac_lib in '' dir; do
-  if test -z "$ac_lib"; then
-    ac_res="none required"
-  else
-    ac_res=-l$ac_lib
-    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
-  fi
-  rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
-  ac_cv_search_opendir=$ac_res
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext
-  if test "${ac_cv_search_opendir+set}" = set; then
-  break
-fi
-done
-if test "${ac_cv_search_opendir+set}" = set; then
-  :
-else
-  ac_cv_search_opendir=no
-fi
-rm conftest.$ac_ext
-LIBS=$ac_func_search_save_LIBS
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_search_opendir" >&5
-echo "${ECHO_T}$ac_cv_search_opendir" >&6; }
-ac_res=$ac_cv_search_opendir
-if test "$ac_res" != no; then
-  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
-
-fi
-
-else
-  { echo "$as_me:$LINENO: checking for library containing opendir" >&5
-echo $ECHO_N "checking for library containing opendir... $ECHO_C" >&6; }
-if test "${ac_cv_search_opendir+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_func_search_save_LIBS=$LIBS
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char opendir ();
-int
-main ()
-{
-return opendir ();
-  ;
-  return 0;
-}
-_ACEOF
-for ac_lib in '' x; do
-  if test -z "$ac_lib"; then
-    ac_res="none required"
-  else
-    ac_res=-l$ac_lib
-    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
-  fi
-  rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
-  ac_cv_search_opendir=$ac_res
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext
-  if test "${ac_cv_search_opendir+set}" = set; then
-  break
-fi
-done
-if test "${ac_cv_search_opendir+set}" = set; then
-  :
-else
-  ac_cv_search_opendir=no
-fi
-rm conftest.$ac_ext
-LIBS=$ac_func_search_save_LIBS
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_search_opendir" >&5
-echo "${ECHO_T}$ac_cv_search_opendir" >&6; }
-ac_res=$ac_cv_search_opendir
-if test "$ac_res" != no; then
-  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
-
-fi
-
-fi
-
-{ echo "$as_me:$LINENO: checking return type of signal handlers" >&5
-echo $ECHO_N "checking return type of signal handlers... $ECHO_C" >&6; }
-if test "${ac_cv_type_signal+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <sys/types.h>
-#include <signal.h>
-
-int
-main ()
-{
-return *(signal (0, 0)) (0) == 1;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_cv_type_signal=int
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       ac_cv_type_signal=void
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_type_signal" >&5
-echo "${ECHO_T}$ac_cv_type_signal" >&6; }
-
-cat >>confdefs.h <<_ACEOF
-#define RETSIGTYPE $ac_cv_type_signal
-_ACEOF
-
-
-# On IRIX 5.3, sys/types and inttypes.h are conflicting.
-
-
-
-
-
-
-
-
-
-for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
-                 inttypes.h stdint.h unistd.h
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-{ echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  eval "$as_ac_Header=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       eval "$as_ac_Header=no"
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-ac_res=`eval echo '${'$as_ac_Header'}'`
-              { echo "$as_me:$LINENO: result: $ac_res" >&5
-echo "${ECHO_T}$ac_res" >&6; }
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-
-
-
-
-
-
-for ac_header in stropts.h sys/time.h string.h unistd.h sys/systeminfo.h
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  { echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-ac_res=`eval echo '${'$as_ac_Header'}'`
-              { echo "$as_me:$LINENO: result: $ac_res" >&5
-echo "${ECHO_T}$ac_res" >&6; }
-else
-  # Is the header compilable?
-{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_header_compiler=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       ac_header_compiler=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6; }
-
-# Is the header present?
-{ echo "$as_me:$LINENO: checking $ac_header presence" >&5
-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <$ac_header>
-_ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null && {
-        test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       }; then
-  ac_header_preproc=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-
-rm -f conftest.err conftest.$ac_ext
-{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6; }
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
-
-    ;;
-esac
-{ echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  eval "$as_ac_Header=\$ac_header_preproc"
-fi
-ac_res=`eval echo '${'$as_ac_Header'}'`
-              { echo "$as_me:$LINENO: result: $ac_res" >&5
-echo "${ECHO_T}$ac_res" >&6; }
-
-fi
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-
-
-for ac_header in fcntl.h sys/fcntl.h
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  { echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-ac_res=`eval echo '${'$as_ac_Header'}'`
-              { echo "$as_me:$LINENO: result: $ac_res" >&5
-echo "${ECHO_T}$ac_res" >&6; }
-else
-  # Is the header compilable?
-{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_header_compiler=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       ac_header_compiler=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6; }
-
-# Is the header present?
-{ echo "$as_me:$LINENO: checking $ac_header presence" >&5
-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <$ac_header>
-_ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null && {
-        test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       }; then
-  ac_header_preproc=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-
-rm -f conftest.err conftest.$ac_ext
-{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6; }
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
-
-    ;;
-esac
-{ echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  eval "$as_ac_Header=\$ac_header_preproc"
-fi
-ac_res=`eval echo '${'$as_ac_Header'}'`
-              { echo "$as_me:$LINENO: result: $ac_res" >&5
-echo "${ECHO_T}$ac_res" >&6; }
-
-fi
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
- break
-fi
-
-done
-
-
-
-for ac_header in sys/socket.h lan/socket.h
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  { echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-ac_res=`eval echo '${'$as_ac_Header'}'`
-              { echo "$as_me:$LINENO: result: $ac_res" >&5
-echo "${ECHO_T}$ac_res" >&6; }
-else
-  # Is the header compilable?
-{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_header_compiler=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       ac_header_compiler=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6; }
-
-# Is the header present?
-{ echo "$as_me:$LINENO: checking $ac_header presence" >&5
-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <$ac_header>
-_ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null && {
-        test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       }; then
-  ac_header_preproc=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-
-rm -f conftest.err conftest.$ac_ext
-{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6; }
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
-
-    ;;
-esac
-{ echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  eval "$as_ac_Header=\$ac_header_preproc"
-fi
-ac_res=`eval echo '${'$as_ac_Header'}'`
-              { echo "$as_me:$LINENO: result: $ac_res" >&5
-echo "${ECHO_T}$ac_res" >&6; }
-
-fi
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
- break
-fi
-
-done
-
-if test "${ac_cv_header_stddef_h+set}" = set; then
-  { echo "$as_me:$LINENO: checking for stddef.h" >&5
-echo $ECHO_N "checking for stddef.h... $ECHO_C" >&6; }
-if test "${ac_cv_header_stddef_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_header_stddef_h" >&5
-echo "${ECHO_T}$ac_cv_header_stddef_h" >&6; }
-else
-  # Is the header compilable?
-{ echo "$as_me:$LINENO: checking stddef.h usability" >&5
-echo $ECHO_N "checking stddef.h usability... $ECHO_C" >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-#include <stddef.h>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_header_compiler=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       ac_header_compiler=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6; }
-
-# Is the header present?
-{ echo "$as_me:$LINENO: checking stddef.h presence" >&5
-echo $ECHO_N "checking stddef.h presence... $ECHO_C" >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <stddef.h>
-_ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null && {
-        test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       }; then
-  ac_header_preproc=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-
-rm -f conftest.err conftest.$ac_ext
-{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6; }
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { echo "$as_me:$LINENO: WARNING: stddef.h: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: stddef.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: stddef.h: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: stddef.h: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: stddef.h: present but cannot be compiled" >&5
-echo "$as_me: WARNING: stddef.h: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: stddef.h:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: stddef.h:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: stddef.h: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: stddef.h: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: stddef.h:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: stddef.h:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: stddef.h: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: stddef.h: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: stddef.h: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: stddef.h: in the future, the compiler will take precedence" >&2;}
-
-    ;;
-esac
-{ echo "$as_me:$LINENO: checking for stddef.h" >&5
-echo $ECHO_N "checking for stddef.h... $ECHO_C" >&6; }
-if test "${ac_cv_header_stddef_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_cv_header_stddef_h=$ac_header_preproc
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_header_stddef_h" >&5
-echo "${ECHO_T}$ac_cv_header_stddef_h" >&6; }
-
-fi
-if test $ac_cv_header_stddef_h = yes; then
-  :
-else
-  cat >>confdefs.h <<\_ACEOF
-#define X_WCHAR 1
-_ACEOF
-
-fi
-
-
-
-
-
-
-
-for ac_func in _getpty grantpt setitimer usleep
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-{ echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
-if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define $ac_func innocuous_$ac_func
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef $ac_func
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char $ac_func ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined __stub_$ac_func || defined __stub___$ac_func
-choke me
-#endif
-
-int
-main ()
-{
-return $ac_func ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       eval "$as_ac_var=no"
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-ac_res=`eval echo '${'$as_ac_var'}'`
-              { echo "$as_me:$LINENO: result: $ac_res" >&5
-echo "${ECHO_T}$ac_res" >&6; }
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-
-
-for ac_func in gettimeofday ftime
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-{ echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
-if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define $ac_func innocuous_$ac_func
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef $ac_func
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char $ac_func ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined __stub_$ac_func || defined __stub___$ac_func
-choke me
-#endif
-
-int
-main ()
-{
-return $ac_func ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       eval "$as_ac_var=no"
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-ac_res=`eval echo '${'$as_ac_var'}'`
-              { echo "$as_me:$LINENO: result: $ac_res" >&5
-echo "${ECHO_T}$ac_res" >&6; }
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
- break
-fi
-done
-
-
-
-for ac_func in random rand48
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-{ echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
-if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define $ac_func innocuous_$ac_func
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef $ac_func
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char $ac_func ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined __stub_$ac_func || defined __stub___$ac_func
-choke me
-#endif
-
-int
-main ()
-{
-return $ac_func ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       eval "$as_ac_var=no"
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-ac_res=`eval echo '${'$as_ac_var'}'`
-              { echo "$as_me:$LINENO: result: $ac_res" >&5
-echo "${ECHO_T}$ac_res" >&6; }
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
- break
-fi
-done
-
-
-
-for ac_func in gethostname sysinfo
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-{ echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
-if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define $ac_func innocuous_$ac_func
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef $ac_func
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char $ac_func ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined __stub_$ac_func || defined __stub___$ac_func
-choke me
-#endif
-
-int
-main ()
-{
-return $ac_func ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       eval "$as_ac_var=no"
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-ac_res=`eval echo '${'$as_ac_var'}'`
-              { echo "$as_me:$LINENO: result: $ac_res" >&5
-echo "${ECHO_T}$ac_res" >&6; }
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
- break
-fi
-done
-
-{ echo "$as_me:$LINENO: checking for setlocale" >&5
-echo $ECHO_N "checking for setlocale... $ECHO_C" >&6; }
-if test "${ac_cv_func_setlocale+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-/* Define setlocale to an innocuous variant, in case <limits.h> declares setlocale.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define setlocale innocuous_setlocale
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char setlocale (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef setlocale
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char setlocale ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined __stub_setlocale || defined __stub___setlocale
-choke me
-#endif
-
-int
-main ()
-{
-return setlocale ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
-  ac_cv_func_setlocale=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       ac_cv_func_setlocale=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_func_setlocale" >&5
-echo "${ECHO_T}$ac_cv_func_setlocale" >&6; }
-if test $ac_cv_func_setlocale = yes; then
-  :
-else
-
-{ echo "$as_me:$LINENO: checking for setlocale in -li" >&5
-echo $ECHO_N "checking for setlocale in -li... $ECHO_C" >&6; }
-if test "${ac_cv_lib_i_setlocale+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-li  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char setlocale ();
-int
-main ()
-{
-return setlocale ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
-  ac_cv_lib_i_setlocale=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       ac_cv_lib_i_setlocale=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_lib_i_setlocale" >&5
-echo "${ECHO_T}$ac_cv_lib_i_setlocale" >&6; }
-if test $ac_cv_lib_i_setlocale = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBI 1
-_ACEOF
-
-  LIBS="-li $LIBS"
-
-else
-  cat >>confdefs.h <<\_ACEOF
-#define X_LOCALE 1
-_ACEOF
-
-fi
-
-fi
-
-
-
-{ echo "$as_me:$LINENO: checking for getpseudotty in -lseq" >&5
-echo $ECHO_N "checking for getpseudotty in -lseq... $ECHO_C" >&6; }
-if test "${ac_cv_lib_seq_getpseudotty+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lseq  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char getpseudotty ();
-int
-main ()
-{
-return getpseudotty ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
-  ac_cv_lib_seq_getpseudotty=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       ac_cv_lib_seq_getpseudotty=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_lib_seq_getpseudotty" >&5
-echo "${ECHO_T}$ac_cv_lib_seq_getpseudotty" >&6; }
-if test $ac_cv_lib_seq_getpseudotty = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBSEQ 1
-_ACEOF
-
-  LIBS="-lseq $LIBS"
-
-fi
-
-
-{ echo "$as_me:$LINENO: checking for X" >&5
-echo $ECHO_N "checking for X... $ECHO_C" >&6; }
-
-
-# Check whether --with-x was given.
-if test "${with_x+set}" = set; then
-  withval=$with_x;
-fi
-
-# $have_x is `yes', `no', `disabled', or empty when we do not yet know.
-if test "x$with_x" = xno; then
-  # The user explicitly disabled X.
-  have_x=disabled
-else
-  case $x_includes,$x_libraries in #(
-    *\'*) { { echo "$as_me:$LINENO: error: Cannot use X directory names containing '" >&5
-echo "$as_me: error: Cannot use X directory names containing '" >&2;}
-   { (exit 1); exit 1; }; };; #(
-    *,NONE | NONE,*) if test "${ac_cv_have_x+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  # One or both of the vars are not set, and there is no cached value.
-ac_x_includes=no ac_x_libraries=no
-rm -f -r conftest.dir
-if mkdir conftest.dir; then
-  cd conftest.dir
-  cat >Imakefile <<'_ACEOF'
-incroot:
-       @echo incroot='${INCROOT}'
-usrlibdir:
-       @echo usrlibdir='${USRLIBDIR}'
-libdir:
-       @echo libdir='${LIBDIR}'
-_ACEOF
-  if (export CC; ${XMKMF-xmkmf}) >/dev/null 2>/dev/null && test -f Makefile; then
-    # GNU make sometimes prints "make[1]: Entering...", which would confuse us.
-    for ac_var in incroot usrlibdir libdir; do
-      eval "ac_im_$ac_var=\`\${MAKE-make} $ac_var 2>/dev/null | sed -n 's/^$ac_var=//p'\`"
-    done
-    # Open Windows xmkmf reportedly sets LIBDIR instead of USRLIBDIR.
-    for ac_extension in a so sl; do
-      if test ! -f "$ac_im_usrlibdir/libX11.$ac_extension" &&
-        test -f "$ac_im_libdir/libX11.$ac_extension"; then
-       ac_im_usrlibdir=$ac_im_libdir; break
-      fi
-    done
-    # Screen out bogus values from the imake configuration.  They are
-    # bogus both because they are the default anyway, and because
-    # using them would break gcc on systems where it needs fixed includes.
-    case $ac_im_incroot in
-       /usr/include) ac_x_includes= ;;
-       *) test -f "$ac_im_incroot/X11/Xos.h" && ac_x_includes=$ac_im_incroot;;
-    esac
-    case $ac_im_usrlibdir in
-       /usr/lib | /lib) ;;
-       *) test -d "$ac_im_usrlibdir" && ac_x_libraries=$ac_im_usrlibdir ;;
-    esac
-  fi
-  cd ..
-  rm -f -r conftest.dir
-fi
-
-# Standard set of common directories for X headers.
-# Check X11 before X11Rn because it is often a symlink to the current release.
-ac_x_header_dirs='
-/usr/X11/include
-/usr/X11R6/include
-/usr/X11R5/include
-/usr/X11R4/include
-
-/usr/include/X11
-/usr/include/X11R6
-/usr/include/X11R5
-/usr/include/X11R4
-
-/usr/local/X11/include
-/usr/local/X11R6/include
-/usr/local/X11R5/include
-/usr/local/X11R4/include
-
-/usr/local/include/X11
-/usr/local/include/X11R6
-/usr/local/include/X11R5
-/usr/local/include/X11R4
-
-/usr/X386/include
-/usr/x386/include
-/usr/XFree86/include/X11
-
-/usr/include
-/usr/local/include
-/usr/unsupported/include
-/usr/athena/include
-/usr/local/x11r5/include
-/usr/lpp/Xamples/include
-
-/usr/openwin/include
-/usr/openwin/share/include'
-
-if test "$ac_x_includes" = no; then
-  # Guess where to find include files, by looking for Xlib.h.
-  # First, try using that file with no special directory specified.
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <X11/Xlib.h>
-_ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null && {
-        test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       }; then
-  # We can compile using X headers with no special include directory.
-ac_x_includes=
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  for ac_dir in $ac_x_header_dirs; do
-  if test -r "$ac_dir/X11/Xlib.h"; then
-    ac_x_includes=$ac_dir
-    break
-  fi
-done
-fi
-
-rm -f conftest.err conftest.$ac_ext
-fi # $ac_x_includes = no
-
-if test "$ac_x_libraries" = no; then
-  # Check for the libraries.
-  # See if we find them without any special options.
-  # Don't add to $LIBS permanently.
-  ac_save_LIBS=$LIBS
-  LIBS="-lX11 $LIBS"
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <X11/Xlib.h>
-int
-main ()
-{
-XrmInitialize ()
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
-  LIBS=$ac_save_LIBS
-# We can link X programs with no special library path.
-ac_x_libraries=
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       LIBS=$ac_save_LIBS
-for ac_dir in `echo "$ac_x_includes $ac_x_header_dirs" | sed s/include/lib/g`
-do
-  # Don't even attempt the hair of trying to link an X program!
-  for ac_extension in a so sl; do
-    if test -r "$ac_dir/libX11.$ac_extension"; then
-      ac_x_libraries=$ac_dir
-      break 2
-    fi
-  done
-done
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-fi # $ac_x_libraries = no
-
-case $ac_x_includes,$ac_x_libraries in #(
-  no,* | *,no | *\'*)
-    # Didn't find X, or a directory has "'" in its name.
-    ac_cv_have_x="have_x=no";; #(
-  *)
-    # Record where we found X for the cache.
-    ac_cv_have_x="have_x=yes\
-       ac_x_includes='$ac_x_includes'\
-       ac_x_libraries='$ac_x_libraries'"
-esac
-fi
-;; #(
-    *) have_x=yes;;
-  esac
-  eval "$ac_cv_have_x"
-fi # $with_x != no
-
-if test "$have_x" != yes; then
-  { echo "$as_me:$LINENO: result: $have_x" >&5
-echo "${ECHO_T}$have_x" >&6; }
-  no_x=yes
-else
-  # If each of the values was on the command line, it overrides each guess.
-  test "x$x_includes" = xNONE && x_includes=$ac_x_includes
-  test "x$x_libraries" = xNONE && x_libraries=$ac_x_libraries
-  # Update the cache value to reflect the command line values.
-  ac_cv_have_x="have_x=yes\
-       ac_x_includes='$x_includes'\
-       ac_x_libraries='$x_libraries'"
-  { echo "$as_me:$LINENO: result: libraries $x_libraries, headers $x_includes" >&5
-echo "${ECHO_T}libraries $x_libraries, headers $x_includes" >&6; }
-fi
-
-if test "$no_x" = yes; then
-  # Not all programs may use this symbol, but it does not hurt to define it.
-
-cat >>confdefs.h <<\_ACEOF
-#define X_DISPLAY_MISSING 1
-_ACEOF
-
-  X_CFLAGS= X_PRE_LIBS= X_LIBS= X_EXTRA_LIBS=
-else
-  if test -n "$x_includes"; then
-    X_CFLAGS="$X_CFLAGS -I$x_includes"
-  fi
-
-  # It would also be nice to do this for all -L options, not just this one.
-  if test -n "$x_libraries"; then
-    X_LIBS="$X_LIBS -L$x_libraries"
-    # For Solaris; some versions of Sun CC require a space after -R and
-    # others require no space.  Words are not sufficient . . . .
-    { echo "$as_me:$LINENO: checking whether -R must be followed by a space" >&5
-echo $ECHO_N "checking whether -R must be followed by a space... $ECHO_C" >&6; }
-    ac_xsave_LIBS=$LIBS; LIBS="$LIBS -R$x_libraries"
-    ac_xsave_c_werror_flag=$ac_c_werror_flag
-    ac_c_werror_flag=yes
-    cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
-       X_LIBS="$X_LIBS -R$x_libraries"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       LIBS="$ac_xsave_LIBS -R $x_libraries"
-       cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
-  { echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6; }
-         X_LIBS="$X_LIBS -R $x_libraries"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       { echo "$as_me:$LINENO: result: neither works" >&5
-echo "${ECHO_T}neither works" >&6; }
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-    ac_c_werror_flag=$ac_xsave_c_werror_flag
-    LIBS=$ac_xsave_LIBS
-  fi
-
-  # Check for system-dependent libraries X programs must link with.
-  # Do this before checking for the system-independent R6 libraries
-  # (-lICE), since we may need -lsocket or whatever for X linking.
-
-  if test "$ISC" = yes; then
-    X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl_s -linet"
-  else
-    # Martyn Johnson says this is needed for Ultrix, if the X
-    # libraries were built with DECnet support.  And Karl Berry says
-    # the Alpha needs dnet_stub (dnet does not exist).
-    ac_xsave_LIBS="$LIBS"; LIBS="$LIBS $X_LIBS -lX11"
-    cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char XOpenDisplay ();
-int
-main ()
-{
-return XOpenDisplay ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
-  :
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       { echo "$as_me:$LINENO: checking for dnet_ntoa in -ldnet" >&5
-echo $ECHO_N "checking for dnet_ntoa in -ldnet... $ECHO_C" >&6; }
-if test "${ac_cv_lib_dnet_dnet_ntoa+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-ldnet  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char dnet_ntoa ();
-int
-main ()
-{
-return dnet_ntoa ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
-  ac_cv_lib_dnet_dnet_ntoa=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       ac_cv_lib_dnet_dnet_ntoa=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_lib_dnet_dnet_ntoa" >&5
-echo "${ECHO_T}$ac_cv_lib_dnet_dnet_ntoa" >&6; }
-if test $ac_cv_lib_dnet_dnet_ntoa = yes; then
-  X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet"
-fi
-
-    if test $ac_cv_lib_dnet_dnet_ntoa = no; then
-      { echo "$as_me:$LINENO: checking for dnet_ntoa in -ldnet_stub" >&5
-echo $ECHO_N "checking for dnet_ntoa in -ldnet_stub... $ECHO_C" >&6; }
-if test "${ac_cv_lib_dnet_stub_dnet_ntoa+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-ldnet_stub  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char dnet_ntoa ();
-int
-main ()
-{
-return dnet_ntoa ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
-  ac_cv_lib_dnet_stub_dnet_ntoa=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       ac_cv_lib_dnet_stub_dnet_ntoa=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_lib_dnet_stub_dnet_ntoa" >&5
-echo "${ECHO_T}$ac_cv_lib_dnet_stub_dnet_ntoa" >&6; }
-if test $ac_cv_lib_dnet_stub_dnet_ntoa = yes; then
-  X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet_stub"
-fi
-
-    fi
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-    LIBS="$ac_xsave_LIBS"
-
-    # msh@cis.ufl.edu says -lnsl (and -lsocket) are needed for his 386/AT,
-    # to get the SysV transport functions.
-    # Chad R. Larson says the Pyramis MIS-ES running DC/OSx (SVR4)
-    # needs -lnsl.
-    # The nsl library prevents programs from opening the X display
-    # on Irix 5.2, according to T.E. Dickey.
-    # The functions gethostbyname, getservbyname, and inet_addr are
-    # in -lbsd on LynxOS 3.0.1/i386, according to Lars Hecking.
-    { echo "$as_me:$LINENO: checking for gethostbyname" >&5
-echo $ECHO_N "checking for gethostbyname... $ECHO_C" >&6; }
-if test "${ac_cv_func_gethostbyname+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-/* Define gethostbyname to an innocuous variant, in case <limits.h> declares gethostbyname.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define gethostbyname innocuous_gethostbyname
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char gethostbyname (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef gethostbyname
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char gethostbyname ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined __stub_gethostbyname || defined __stub___gethostbyname
-choke me
-#endif
-
-int
-main ()
-{
-return gethostbyname ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
-  ac_cv_func_gethostbyname=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       ac_cv_func_gethostbyname=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_func_gethostbyname" >&5
-echo "${ECHO_T}$ac_cv_func_gethostbyname" >&6; }
-
-    if test $ac_cv_func_gethostbyname = no; then
-      { echo "$as_me:$LINENO: checking for gethostbyname in -lnsl" >&5
-echo $ECHO_N "checking for gethostbyname in -lnsl... $ECHO_C" >&6; }
-if test "${ac_cv_lib_nsl_gethostbyname+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lnsl  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char gethostbyname ();
-int
-main ()
-{
-return gethostbyname ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
-  ac_cv_lib_nsl_gethostbyname=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       ac_cv_lib_nsl_gethostbyname=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_lib_nsl_gethostbyname" >&5
-echo "${ECHO_T}$ac_cv_lib_nsl_gethostbyname" >&6; }
-if test $ac_cv_lib_nsl_gethostbyname = yes; then
-  X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl"
-fi
-
-      if test $ac_cv_lib_nsl_gethostbyname = no; then
-       { echo "$as_me:$LINENO: checking for gethostbyname in -lbsd" >&5
-echo $ECHO_N "checking for gethostbyname in -lbsd... $ECHO_C" >&6; }
-if test "${ac_cv_lib_bsd_gethostbyname+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lbsd  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char gethostbyname ();
-int
-main ()
-{
-return gethostbyname ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
-  ac_cv_lib_bsd_gethostbyname=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       ac_cv_lib_bsd_gethostbyname=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_lib_bsd_gethostbyname" >&5
-echo "${ECHO_T}$ac_cv_lib_bsd_gethostbyname" >&6; }
-if test $ac_cv_lib_bsd_gethostbyname = yes; then
-  X_EXTRA_LIBS="$X_EXTRA_LIBS -lbsd"
-fi
-
-      fi
-    fi
-
-    # lieder@skyler.mavd.honeywell.com says without -lsocket,
-    # socket/setsockopt and other routines are undefined under SCO ODT
-    # 2.0.  But -lsocket is broken on IRIX 5.2 (and is not necessary
-    # on later versions), says Simon Leinen: it contains gethostby*
-    # variants that don't use the name server (or something).  -lsocket
-    # must be given before -lnsl if both are needed.  We assume that
-    # if connect needs -lnsl, so does gethostbyname.
-    { echo "$as_me:$LINENO: checking for connect" >&5
-echo $ECHO_N "checking for connect... $ECHO_C" >&6; }
-if test "${ac_cv_func_connect+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-/* Define connect to an innocuous variant, in case <limits.h> declares connect.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define connect innocuous_connect
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char connect (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef connect
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char connect ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined __stub_connect || defined __stub___connect
-choke me
-#endif
-
-int
-main ()
-{
-return connect ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
-  ac_cv_func_connect=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       ac_cv_func_connect=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_func_connect" >&5
-echo "${ECHO_T}$ac_cv_func_connect" >&6; }
-
-    if test $ac_cv_func_connect = no; then
-      { echo "$as_me:$LINENO: checking for connect in -lsocket" >&5
-echo $ECHO_N "checking for connect in -lsocket... $ECHO_C" >&6; }
-if test "${ac_cv_lib_socket_connect+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lsocket $X_EXTRA_LIBS $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char connect ();
-int
-main ()
-{
-return connect ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
-  ac_cv_lib_socket_connect=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       ac_cv_lib_socket_connect=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_lib_socket_connect" >&5
-echo "${ECHO_T}$ac_cv_lib_socket_connect" >&6; }
-if test $ac_cv_lib_socket_connect = yes; then
-  X_EXTRA_LIBS="-lsocket $X_EXTRA_LIBS"
-fi
-
-    fi
-
-    # Guillermo Gomez says -lposix is necessary on A/UX.
-    { echo "$as_me:$LINENO: checking for remove" >&5
-echo $ECHO_N "checking for remove... $ECHO_C" >&6; }
-if test "${ac_cv_func_remove+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-/* Define remove to an innocuous variant, in case <limits.h> declares remove.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define remove innocuous_remove
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char remove (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef remove
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char remove ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined __stub_remove || defined __stub___remove
-choke me
-#endif
-
-int
-main ()
-{
-return remove ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
-  ac_cv_func_remove=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       ac_cv_func_remove=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_func_remove" >&5
-echo "${ECHO_T}$ac_cv_func_remove" >&6; }
-
-    if test $ac_cv_func_remove = no; then
-      { echo "$as_me:$LINENO: checking for remove in -lposix" >&5
-echo $ECHO_N "checking for remove in -lposix... $ECHO_C" >&6; }
-if test "${ac_cv_lib_posix_remove+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lposix  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char remove ();
-int
-main ()
-{
-return remove ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
-  ac_cv_lib_posix_remove=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       ac_cv_lib_posix_remove=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_lib_posix_remove" >&5
-echo "${ECHO_T}$ac_cv_lib_posix_remove" >&6; }
-if test $ac_cv_lib_posix_remove = yes; then
-  X_EXTRA_LIBS="$X_EXTRA_LIBS -lposix"
-fi
-
-    fi
-
-    # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay.
-    { echo "$as_me:$LINENO: checking for shmat" >&5
-echo $ECHO_N "checking for shmat... $ECHO_C" >&6; }
-if test "${ac_cv_func_shmat+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-/* Define shmat to an innocuous variant, in case <limits.h> declares shmat.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define shmat innocuous_shmat
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char shmat (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef shmat
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char shmat ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined __stub_shmat || defined __stub___shmat
-choke me
-#endif
-
-int
-main ()
-{
-return shmat ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
-  ac_cv_func_shmat=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       ac_cv_func_shmat=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_func_shmat" >&5
-echo "${ECHO_T}$ac_cv_func_shmat" >&6; }
-
-    if test $ac_cv_func_shmat = no; then
-      { echo "$as_me:$LINENO: checking for shmat in -lipc" >&5
-echo $ECHO_N "checking for shmat in -lipc... $ECHO_C" >&6; }
-if test "${ac_cv_lib_ipc_shmat+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lipc  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char shmat ();
-int
-main ()
-{
-return shmat ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
-  ac_cv_lib_ipc_shmat=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       ac_cv_lib_ipc_shmat=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_lib_ipc_shmat" >&5
-echo "${ECHO_T}$ac_cv_lib_ipc_shmat" >&6; }
-if test $ac_cv_lib_ipc_shmat = yes; then
-  X_EXTRA_LIBS="$X_EXTRA_LIBS -lipc"
-fi
-
-    fi
-  fi
-
-  # Check for libraries that X11R6 Xt/Xaw programs need.
-  ac_save_LDFLAGS=$LDFLAGS
-  test -n "$x_libraries" && LDFLAGS="$LDFLAGS -L$x_libraries"
-  # SM needs ICE to (dynamically) link under SunOS 4.x (so we have to
-  # check for ICE first), but we must link in the order -lSM -lICE or
-  # we get undefined symbols.  So assume we have SM if we have ICE.
-  # These have to be linked with before -lX11, unlike the other
-  # libraries we check for below, so use a different variable.
-  # John Interrante, Karl Berry
-  { echo "$as_me:$LINENO: checking for IceConnectionNumber in -lICE" >&5
-echo $ECHO_N "checking for IceConnectionNumber in -lICE... $ECHO_C" >&6; }
-if test "${ac_cv_lib_ICE_IceConnectionNumber+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lICE $X_EXTRA_LIBS $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char IceConnectionNumber ();
-int
-main ()
-{
-return IceConnectionNumber ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
-  ac_cv_lib_ICE_IceConnectionNumber=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       ac_cv_lib_ICE_IceConnectionNumber=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_lib_ICE_IceConnectionNumber" >&5
-echo "${ECHO_T}$ac_cv_lib_ICE_IceConnectionNumber" >&6; }
-if test $ac_cv_lib_ICE_IceConnectionNumber = yes; then
-  X_PRE_LIBS="$X_PRE_LIBS -lSM -lICE"
-fi
-
-  LDFLAGS=$ac_save_LDFLAGS
-
-fi
-
-if test -n "$no_x" ; then
-  echo $PRODUCT requires the X Window System header files and libraries!
-  echo They were not found on your system.  See FAQ topic C.2.
-  echo configure failed
-  exit 1
-fi
-
-if test "${ac_cv_header_X11_Intrinsic_h+set}" = set; then
-  { echo "$as_me:$LINENO: checking for X11/Intrinsic.h" >&5
-echo $ECHO_N "checking for X11/Intrinsic.h... $ECHO_C" >&6; }
-if test "${ac_cv_header_X11_Intrinsic_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_header_X11_Intrinsic_h" >&5
-echo "${ECHO_T}$ac_cv_header_X11_Intrinsic_h" >&6; }
-else
-  # Is the header compilable?
-{ echo "$as_me:$LINENO: checking X11/Intrinsic.h usability" >&5
-echo $ECHO_N "checking X11/Intrinsic.h usability... $ECHO_C" >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-#include <X11/Intrinsic.h>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_header_compiler=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       ac_header_compiler=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6; }
-
-# Is the header present?
-{ echo "$as_me:$LINENO: checking X11/Intrinsic.h presence" >&5
-echo $ECHO_N "checking X11/Intrinsic.h presence... $ECHO_C" >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <X11/Intrinsic.h>
-_ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null && {
-        test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       }; then
-  ac_header_preproc=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-
-rm -f conftest.err conftest.$ac_ext
-{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6; }
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { echo "$as_me:$LINENO: WARNING: X11/Intrinsic.h: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: X11/Intrinsic.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: X11/Intrinsic.h: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: X11/Intrinsic.h: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: X11/Intrinsic.h: present but cannot be compiled" >&5
-echo "$as_me: WARNING: X11/Intrinsic.h: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: X11/Intrinsic.h:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: X11/Intrinsic.h:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: X11/Intrinsic.h: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: X11/Intrinsic.h: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: X11/Intrinsic.h:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: X11/Intrinsic.h:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: X11/Intrinsic.h: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: X11/Intrinsic.h: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: X11/Intrinsic.h: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: X11/Intrinsic.h: in the future, the compiler will take precedence" >&2;}
-
-    ;;
-esac
-{ echo "$as_me:$LINENO: checking for X11/Intrinsic.h" >&5
-echo $ECHO_N "checking for X11/Intrinsic.h... $ECHO_C" >&6; }
-if test "${ac_cv_header_X11_Intrinsic_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_cv_header_X11_Intrinsic_h=$ac_header_preproc
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_header_X11_Intrinsic_h" >&5
-echo "${ECHO_T}$ac_cv_header_X11_Intrinsic_h" >&6; }
-
-fi
-if test $ac_cv_header_X11_Intrinsic_h = yes; then
-  xt="yes"
-else
-  xt="no"
-fi
-
-
-
-if test "$xt" == "no" ; then
-   echo Xt headers not found
-   exit 1
-fi
-
-
-# Check whether --with-Xaw3d was given.
-if test "${with_Xaw3d+set}" = set; then
-  withval=$with_Xaw3d; with_xaw3d="yes"
-else
-  with_xaw3d="no"
-fi
-
-
-
-xaw_headers="no"
-if test "$with_xaw3d" == "yes" ; then
-   XAW_LIBS="-lXaw3d"
-   { echo "$as_me:$LINENO: checking for XawTextReplace in -lXaw3d" >&5
-echo $ECHO_N "checking for XawTextReplace in -lXaw3d... $ECHO_C" >&6; }
-if test "${ac_cv_lib_Xaw3d_XawTextReplace+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lXaw3d  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char XawTextReplace ();
-int
-main ()
-{
-return XawTextReplace ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
-  ac_cv_lib_Xaw3d_XawTextReplace=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       ac_cv_lib_Xaw3d_XawTextReplace=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_lib_Xaw3d_XawTextReplace" >&5
-echo "${ECHO_T}$ac_cv_lib_Xaw3d_XawTextReplace" >&6; }
-if test $ac_cv_lib_Xaw3d_XawTextReplace = yes; then
-  xaw3d_lib="yes"
-else
-  xaw3d_lib="no"
-fi
-
-   if test "$xaw3d_lib" == "no" ; then
-      echo Xaw3d libraries not found
-      exit 1
-   else
-      if test "${ac_cv_header_X11_Xaw3d_Dialog_h+set}" = set; then
-  { echo "$as_me:$LINENO: checking for X11/Xaw3d/Dialog.h" >&5
-echo $ECHO_N "checking for X11/Xaw3d/Dialog.h... $ECHO_C" >&6; }
-if test "${ac_cv_header_X11_Xaw3d_Dialog_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_header_X11_Xaw3d_Dialog_h" >&5
-echo "${ECHO_T}$ac_cv_header_X11_Xaw3d_Dialog_h" >&6; }
-else
-  # Is the header compilable?
-{ echo "$as_me:$LINENO: checking X11/Xaw3d/Dialog.h usability" >&5
-echo $ECHO_N "checking X11/Xaw3d/Dialog.h usability... $ECHO_C" >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-#include <X11/Xaw3d/Dialog.h>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_header_compiler=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       ac_header_compiler=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6; }
-
-# Is the header present?
-{ echo "$as_me:$LINENO: checking X11/Xaw3d/Dialog.h presence" >&5
-echo $ECHO_N "checking X11/Xaw3d/Dialog.h presence... $ECHO_C" >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <X11/Xaw3d/Dialog.h>
-_ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null && {
-        test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       }; then
-  ac_header_preproc=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-
-rm -f conftest.err conftest.$ac_ext
-{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6; }
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { echo "$as_me:$LINENO: WARNING: X11/Xaw3d/Dialog.h: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: X11/Xaw3d/Dialog.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: X11/Xaw3d/Dialog.h: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: X11/Xaw3d/Dialog.h: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: X11/Xaw3d/Dialog.h: present but cannot be compiled" >&5
-echo "$as_me: WARNING: X11/Xaw3d/Dialog.h: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: X11/Xaw3d/Dialog.h:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: X11/Xaw3d/Dialog.h:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: X11/Xaw3d/Dialog.h: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: X11/Xaw3d/Dialog.h: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: X11/Xaw3d/Dialog.h:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: X11/Xaw3d/Dialog.h:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: X11/Xaw3d/Dialog.h: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: X11/Xaw3d/Dialog.h: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: X11/Xaw3d/Dialog.h: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: X11/Xaw3d/Dialog.h: in the future, the compiler will take precedence" >&2;}
-
-    ;;
-esac
-{ echo "$as_me:$LINENO: checking for X11/Xaw3d/Dialog.h" >&5
-echo $ECHO_N "checking for X11/Xaw3d/Dialog.h... $ECHO_C" >&6; }
-if test "${ac_cv_header_X11_Xaw3d_Dialog_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_cv_header_X11_Xaw3d_Dialog_h=$ac_header_preproc
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_header_X11_Xaw3d_Dialog_h" >&5
-echo "${ECHO_T}$ac_cv_header_X11_Xaw3d_Dialog_h" >&6; }
-
-fi
-if test $ac_cv_header_X11_Xaw3d_Dialog_h = yes; then
-  xaw3d_headers="yes"
-else
-  xaw3d_headers="no"
-fi
-
-
-      if test "$xaw3d_headers" == "yes" ; then
-        cat >>confdefs.h <<\_ACEOF
-#define USE_XAW3D 1
-_ACEOF
-
-        xaw_headers="yes"
-      else
-       if test "${ac_cv_header_X11_Xaw_Dialog_h+set}" = set; then
-  { echo "$as_me:$LINENO: checking for X11/Xaw/Dialog.h" >&5
-echo $ECHO_N "checking for X11/Xaw/Dialog.h... $ECHO_C" >&6; }
-if test "${ac_cv_header_X11_Xaw_Dialog_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_header_X11_Xaw_Dialog_h" >&5
-echo "${ECHO_T}$ac_cv_header_X11_Xaw_Dialog_h" >&6; }
-else
-  # Is the header compilable?
-{ echo "$as_me:$LINENO: checking X11/Xaw/Dialog.h usability" >&5
-echo $ECHO_N "checking X11/Xaw/Dialog.h usability... $ECHO_C" >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-#include <X11/Xaw/Dialog.h>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_header_compiler=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       ac_header_compiler=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6; }
-
-# Is the header present?
-{ echo "$as_me:$LINENO: checking X11/Xaw/Dialog.h presence" >&5
-echo $ECHO_N "checking X11/Xaw/Dialog.h presence... $ECHO_C" >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <X11/Xaw/Dialog.h>
-_ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null && {
-        test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       }; then
-  ac_header_preproc=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-
-rm -f conftest.err conftest.$ac_ext
-{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6; }
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { echo "$as_me:$LINENO: WARNING: X11/Xaw/Dialog.h: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: X11/Xaw/Dialog.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: X11/Xaw/Dialog.h: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: X11/Xaw/Dialog.h: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: X11/Xaw/Dialog.h: present but cannot be compiled" >&5
-echo "$as_me: WARNING: X11/Xaw/Dialog.h: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: X11/Xaw/Dialog.h:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: X11/Xaw/Dialog.h:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: X11/Xaw/Dialog.h: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: X11/Xaw/Dialog.h: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: X11/Xaw/Dialog.h:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: X11/Xaw/Dialog.h:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: X11/Xaw/Dialog.h: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: X11/Xaw/Dialog.h: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: X11/Xaw/Dialog.h: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: X11/Xaw/Dialog.h: in the future, the compiler will take precedence" >&2;}
-
-    ;;
-esac
-{ echo "$as_me:$LINENO: checking for X11/Xaw/Dialog.h" >&5
-echo $ECHO_N "checking for X11/Xaw/Dialog.h... $ECHO_C" >&6; }
-if test "${ac_cv_header_X11_Xaw_Dialog_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_cv_header_X11_Xaw_Dialog_h=$ac_header_preproc
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_header_X11_Xaw_Dialog_h" >&5
-echo "${ECHO_T}$ac_cv_header_X11_Xaw_Dialog_h" >&6; }
-
-fi
-if test $ac_cv_header_X11_Xaw_Dialog_h = yes; then
-  xaw_headers="yes"
-fi
-
-
-      fi
-   fi
-else
-   XAW_LIBS="-lXaw"
-   if test "${ac_cv_header_X11_Xaw_Dialog_h+set}" = set; then
-  { echo "$as_me:$LINENO: checking for X11/Xaw/Dialog.h" >&5
-echo $ECHO_N "checking for X11/Xaw/Dialog.h... $ECHO_C" >&6; }
-if test "${ac_cv_header_X11_Xaw_Dialog_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_header_X11_Xaw_Dialog_h" >&5
-echo "${ECHO_T}$ac_cv_header_X11_Xaw_Dialog_h" >&6; }
-else
-  # Is the header compilable?
-{ echo "$as_me:$LINENO: checking X11/Xaw/Dialog.h usability" >&5
-echo $ECHO_N "checking X11/Xaw/Dialog.h usability... $ECHO_C" >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-#include <X11/Xaw/Dialog.h>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_header_compiler=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       ac_header_compiler=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6; }
-
-# Is the header present?
-{ echo "$as_me:$LINENO: checking X11/Xaw/Dialog.h presence" >&5
-echo $ECHO_N "checking X11/Xaw/Dialog.h presence... $ECHO_C" >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <X11/Xaw/Dialog.h>
-_ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null && {
-        test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       }; then
-  ac_header_preproc=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-
-rm -f conftest.err conftest.$ac_ext
-{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6; }
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { echo "$as_me:$LINENO: WARNING: X11/Xaw/Dialog.h: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: X11/Xaw/Dialog.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: X11/Xaw/Dialog.h: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: X11/Xaw/Dialog.h: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: X11/Xaw/Dialog.h: present but cannot be compiled" >&5
-echo "$as_me: WARNING: X11/Xaw/Dialog.h: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: X11/Xaw/Dialog.h:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: X11/Xaw/Dialog.h:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: X11/Xaw/Dialog.h: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: X11/Xaw/Dialog.h: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: X11/Xaw/Dialog.h:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: X11/Xaw/Dialog.h:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: X11/Xaw/Dialog.h: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: X11/Xaw/Dialog.h: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: X11/Xaw/Dialog.h: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: X11/Xaw/Dialog.h: in the future, the compiler will take precedence" >&2;}
-
-    ;;
-esac
-{ echo "$as_me:$LINENO: checking for X11/Xaw/Dialog.h" >&5
-echo $ECHO_N "checking for X11/Xaw/Dialog.h... $ECHO_C" >&6; }
-if test "${ac_cv_header_X11_Xaw_Dialog_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_cv_header_X11_Xaw_Dialog_h=$ac_header_preproc
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_header_X11_Xaw_Dialog_h" >&5
-echo "${ECHO_T}$ac_cv_header_X11_Xaw_Dialog_h" >&6; }
-
-fi
-if test $ac_cv_header_X11_Xaw_Dialog_h = yes; then
-  xaw_headers="yes"
-fi
-
-
-fi
-
-
-
-
-
-if test "$xaw_headers" == "no" ; then
-   echo Xaw headers not found
-   exit 1
-
-fi
-
-
-
-
-# Make sure we can run config.sub.
-$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
-  { { echo "$as_me:$LINENO: error: cannot run $SHELL $ac_aux_dir/config.sub" >&5
-echo "$as_me: error: cannot run $SHELL $ac_aux_dir/config.sub" >&2;}
-   { (exit 1); exit 1; }; }
-
-{ echo "$as_me:$LINENO: checking build system type" >&5
-echo $ECHO_N "checking build system type... $ECHO_C" >&6; }
-if test "${ac_cv_build+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_build_alias=$build_alias
-test "x$ac_build_alias" = x &&
-  ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
-test "x$ac_build_alias" = x &&
-  { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5
-echo "$as_me: error: cannot guess build type; you must specify one" >&2;}
-   { (exit 1); exit 1; }; }
-ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
-  { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&5
-echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&2;}
-   { (exit 1); exit 1; }; }
-
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_build" >&5
-echo "${ECHO_T}$ac_cv_build" >&6; }
-case $ac_cv_build in
-*-*-*) ;;
-*) { { echo "$as_me:$LINENO: error: invalid value of canonical build" >&5
-echo "$as_me: error: invalid value of canonical build" >&2;}
-   { (exit 1); exit 1; }; };;
-esac
-build=$ac_cv_build
-ac_save_IFS=$IFS; IFS='-'
-set x $ac_cv_build
-shift
-build_cpu=$1
-build_vendor=$2
-shift; shift
-# Remember, the first character of IFS is used to create $*,
-# except with old shells:
-build_os=$*
-IFS=$ac_save_IFS
-case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
-
-
-{ echo "$as_me:$LINENO: checking host system type" >&5
-echo $ECHO_N "checking host system type... $ECHO_C" >&6; }
-if test "${ac_cv_host+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test "x$host_alias" = x; then
-  ac_cv_host=$ac_cv_build
-else
-  ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
-    { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&5
-echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&2;}
-   { (exit 1); exit 1; }; }
-fi
-
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_host" >&5
-echo "${ECHO_T}$ac_cv_host" >&6; }
-case $ac_cv_host in
-*-*-*) ;;
-*) { { echo "$as_me:$LINENO: error: invalid value of canonical host" >&5
-echo "$as_me: error: invalid value of canonical host" >&2;}
-   { (exit 1); exit 1; }; };;
-esac
-host=$ac_cv_host
-ac_save_IFS=$IFS; IFS='-'
-set x $ac_cv_host
-shift
-host_cpu=$1
-host_vendor=$2
-shift; shift
-# Remember, the first character of IFS is used to create $*,
-# except with old shells:
-host_os=$*
-IFS=$ac_save_IFS
-case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
-
-
-
-
-
-USE_PTYS=0
-case "$host" in
-  *-*-hpux* )
-    cat >>confdefs.h <<\_ACEOF
-#define PTY_TTY_NAME_SPRINTF sprintf (pty_name, "/dev/pty/tty%c%x", c, i);
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define PTY_NAME_SPRINTF sprintf (pty_name, "/dev/ptym/pty%c%x", c, i);
-_ACEOF
-
-    if test "$GCC" = yes; then
-      CONF_CFLAGS="-fwritable-strings"
-    else
-
-
-      CONF_CFLAGS="-Aa -D_HPUX_SOURCE"
-    fi
-
-
-    if test -d /opt/hppd/include/X11; then
-      X_CFLAGS="$X_CFLAGS -I/opt/hppd/include"
-      X_LIBS="$X_LIBS -L/opt/hppd/lib"
-    elif test -d /usr/contrib/X11R5/include; then
-      X_CFLAGS="$X_CFLAGS -I/usr/contrib/X11R5/include"
-      X_LIBS="$X_LIBS -L/usr/contrib/X11R5/lib"
-    elif test -d /usr/contrib/mitX11R5/include; then
-      X_CFLAGS="$X_CFLAGS -I/usr/contrib/mitX11R5/include"
-      X_LIBS="$X_LIBS -L/usr/contrib/mitX11R5/lib"
-    elif test -d /MIT/X11R5/include; then
-      X_CFLAGS="$X_CFLAGS -I/MIT/X11R5/include"
-      X_LIBS="$X_LIBS -L/MIT/X11R5/lib"
-    elif test -d /usr/local/include/X11R5; then
-      X_CFLAGS="$X_CFLAGS -I/usr/local/include/X11R5"
-      X_LIBS="$X_LIBS -L/usr/local/lib/X11R5"
-    fi
-    if test -d /usr/include/X11R5; then
-      X_CFLAGS="$X_CFLAGS -I/usr/include/X11R5"
-      X_LIBS="$X_LIBS -L/usr/lib/X11R5 -L/usr/lib/X11R4"
-    elif test -d /usr/include/X11R4; then
-      X_CFLAGS="$X_CFLAGS -I/usr/include/X11R4"
-      X_LIBS="$X_LIBS -L/usr/lib/X11R4"
-    fi
-  ;;
-
-  romp-ibm-aix* )
-    cat >>confdefs.h <<\_ACEOF
-#define IBMRTAIX 1
-_ACEOF
-
-  ;;
-
-  i386-ibm-aix )
-    if test "$GCC" = yes; then
-      CONF_CFLAGS="-fwritable-strings"
-    fi
-  ;;
-
-  *-*-aix3* | *-*-bosx* )
-    cat >>confdefs.h <<\_ACEOF
-#define PTY_ITERATION for (c = 0; !c; c++)
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define PTY_NAME_SPRINTF strcpy (pty_name, "/dev/ptc");
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define PTY_TTY_NAME_SPRINTF strcpy (pty_name, ttyname (fd));
-_ACEOF
-
-  ;;
-
-  *-*-cxux* )
-    cat >>confdefs.h <<\_ACEOF
-#define FIRST_PTY_LETTER 'A'
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define LAST_PTY_LETTER 'P'
-_ACEOF
-
-  ;;
-
-  *-*-uniplus* )
-    cat >>confdefs.h <<\_ACEOF
-#define UNIPLUS 1
-_ACEOF
-
-  ;;
-
-  *-*-rtu* )
-    cat >>confdefs.h <<\_ACEOF
-#define FIRST_PTY_LETTER 'z'
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define PTY_TTY_NAME_SPRINTF sprintf (pty_name, "/dev/ttyp%x", i);
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define PTY_NAME_SPRINTF sprintf (pty_name, "/dev/pty%x", i);
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define RTU 1
-_ACEOF
-
-  ;;
-
-  *-*-iris* | *-*-irix3* )
-    cat >>confdefs.h <<\_ACEOF
-#define PTY_ITERATION for (c = 0; !c; c++)
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define PTY_NAME_SPRINTF strcpy (pty_name, "/dev/ptc");
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define PTY_TTY_NAME_SPRINTF sprintf (pty_name, "/dev/ttyq%d", minor(stb.st_rdev));
-_ACEOF
-
-  ;;
-
-  *-*-irix* )
-  ;;
-
-  *-*-sunos4* | *-*-solaris1* )
-
-
-    if test "$GCC" = yes; then
-      PRE_XMULIB="-static"
-      POST_XMULIB="-dynamic"
-    else
-      PRE_XMULIB="-Bstatic"
-      POST_XMULIB="-Bdynamic"
-    fi
-  ;;
-
-  *-*-sunos5* | *-*-solaris2* )
-
-
-    X_LIBS="$X_LIBS -lelf"
-  ;;
-
-  *-*-sco* )
-    cat >>confdefs.h <<\_ACEOF
-#define PTY_ITERATION for (i = 0; ; i++)
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define PTY_NAME_SPRINTF sprintf (pty_name, "/dev/ptyp%d", i);
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define PTY_TTY_NAME_SPRINTF sprintf (pty_name, "/dev/ttyp%d", i);
-_ACEOF
-
-  ;;
-
-  *-*-dynix* | *-*-ptx* )
-  ;;
-
-  *-*-esix* )
-  ;;
-
-  *-*-usg5-4* | *-*-sysvr4* )
-  ;;
-
-  *-*-usg* | *-*-sysv* | *-*-aix* )
-  ;;
-
-  vax-*-ultrix )
-    if test "$GCC" = yes; then
-      CONF_CFLAGS="-fwritable-strings"
-    fi
-  ;;
-esac
-
-# Check whether --enable-xpm was given.
-if test "${enable_xpm+set}" = set; then
-  enableval=$enable_xpm; enable_xpm="$enableval"
-else
-  enable_xpm="yes"
-fi
-
-
-if test "$enable_xpm" = "yes"; then
-  save_cflags="$CFLAGS"
-  CFLAGS="$CFLAGS $X_CFLAGS"
-  CPPFLAGS="$CPPFLAGS $X_CFLAGS"
-
-for ac_header in X11/xpm.h
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  { echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-ac_res=`eval echo '${'$as_ac_Header'}'`
-              { echo "$as_me:$LINENO: result: $ac_res" >&5
-echo "${ECHO_T}$ac_res" >&6; }
-else
-  # Is the header compilable?
-{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_header_compiler=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       ac_header_compiler=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6; }
-
-# Is the header present?
-{ echo "$as_me:$LINENO: checking $ac_header presence" >&5
-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <$ac_header>
-_ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null && {
-        test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       }; then
-  ac_header_preproc=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-
-rm -f conftest.err conftest.$ac_ext
-{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6; }
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
-
-    ;;
-esac
-{ echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  eval "$as_ac_Header=\$ac_header_preproc"
-fi
-ac_res=`eval echo '${'$as_ac_Header'}'`
-              { echo "$as_me:$LINENO: result: $ac_res" >&5
-echo "${ECHO_T}$ac_res" >&6; }
-
-fi
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-  CFLAGS="$save_cflags"
-  if test "$ac_cv_header_X11_xpm_h" = "yes"; then
-    save_ldflags="$LDFLAGS"
-    LDFLAGS="$LDFLAGS $X_LIBS"
-    { echo "$as_me:$LINENO: checking for XpmReadFileToPixmap in -lXpm" >&5
-echo $ECHO_N "checking for XpmReadFileToPixmap in -lXpm... $ECHO_C" >&6; }
-if test "${ac_cv_lib_Xpm_XpmReadFileToPixmap+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lXpm $X_PRE_LIBS -lX11 $X_EXTRA_LIBS $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char XpmReadFileToPixmap ();
-int
-main ()
-{
-return XpmReadFileToPixmap ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
-  ac_cv_lib_Xpm_XpmReadFileToPixmap=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       ac_cv_lib_Xpm_XpmReadFileToPixmap=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_lib_Xpm_XpmReadFileToPixmap" >&5
-echo "${ECHO_T}$ac_cv_lib_Xpm_XpmReadFileToPixmap" >&6; }
-if test $ac_cv_lib_Xpm_XpmReadFileToPixmap = yes; then
-  X_PRE_LIBS="-lXpm $X_PRE_LIBS"; cat >>confdefs.h <<\_ACEOF
-#define HAVE_LIBXPM 1
-_ACEOF
-
-fi
-
-    LDFLAGS="$save_ldflags"
-  fi
-fi
-
-
-
-
-
-
-{ echo "$as_me:$LINENO: checking whether ptys or pipes should be used" >&5
-echo $ECHO_N "checking whether ptys or pipes should be used... $ECHO_C" >&6; }
-# Check whether --enable-ptys was given.
-if test "${enable_ptys+set}" = set; then
-  enableval=$enable_ptys; if test "$enableval" = yes; then
-  USE_PTYS=1
-  { echo "$as_me:$LINENO: result: ptys (user override)" >&5
-echo "${ECHO_T}ptys (user override)" >&6; }
-fi
-if test "$enableval" = no; then
-  USE_PTYS=0
-  { echo "$as_me:$LINENO: result: pipes (user override)" >&5
-echo "${ECHO_T}pipes (user override)" >&6; }
-fi
-else
-  if test "$USE_PTYS" = 1; then
-  { echo "$as_me:$LINENO: result: ptys" >&5
-echo "${ECHO_T}ptys" >&6; }
-else
-  { echo "$as_me:$LINENO: result: pipes" >&5
-echo "${ECHO_T}pipes" >&6; }
-fi
-fi
-
-cat >>confdefs.h <<_ACEOF
-#define USE_PTYS $USE_PTYS
-_ACEOF
-
-
-# Check whether --enable-zippy was given.
-if test "${enable_zippy+set}" = set; then
-  enableval=$enable_zippy; enable_zippy="$enableval"
-else
-  enable_zippy="yes"
-fi
-
-if test "$enable_zippy" = yes; then
-  cat >>confdefs.h <<\_ACEOF
-#define ZIPPY 1
-_ACEOF
-
-  ZIPPY_O=zippy.o
-  ZIPPY_H=zippy.h
-fi
-
-
-
-# Check whether --enable-sigint was given.
-if test "${enable_sigint+set}" = set; then
-  enableval=$enable_sigint; if test "$enableval" = yes; then
-  cat >>confdefs.h <<\_ACEOF
-#define ATTENTION 1
-_ACEOF
-
-fi
-else
-  cat >>confdefs.h <<\_ACEOF
-#define ATTENTION 1
-_ACEOF
-
-fi
-
-
-cat >>confdefs.h <<_ACEOF
-#define PRODUCT "$PRODUCT"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-#define VERSION "$VERSION"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-#define PATCHLEVEL "$PATCHLEVEL"
-_ACEOF
-
-
-
-
-
-ac_config_files="$ac_config_files cmail xboard.texinfo"
-
-ac_config_commands="$ac_config_commands default"
-
-cat >confcache <<\_ACEOF
-# This file is a shell script that caches the results of configure
-# tests run on this system so they can be shared between configure
-# scripts and configure runs, see configure's option --config-cache.
-# It is not useful on other systems.  If it contains results you don't
-# want to keep, you may remove or edit it.
-#
-# config.status only pays attention to the cache file if you give it
-# the --recheck option to rerun configure.
-#
-# `ac_cv_env_foo' variables (set or unset) will be overridden when
-# loading this file, other *unset* `ac_cv_foo' will be assigned the
-# following values.
-
-_ACEOF
-
-# The following way of writing the cache mishandles newlines in values,
-# but we know of no workaround that is simple, portable, and efficient.
-# So, we kill variables containing newlines.
-# Ultrix sh set writes to stderr and can't be redirected directly,
-# and sets the high bit in the cache file unless we assign to the vars.
-(
-  for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do
-    eval ac_val=\$$ac_var
-    case $ac_val in #(
-    *${as_nl}*)
-      case $ac_var in #(
-      *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5
-echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;;
-      esac
-      case $ac_var in #(
-      _ | IFS | as_nl) ;; #(
-      *) $as_unset $ac_var ;;
-      esac ;;
-    esac
-  done
-
-  (set) 2>&1 |
-    case $as_nl`(ac_space=' '; set) 2>&1` in #(
-    *${as_nl}ac_space=\ *)
-      # `set' does not quote correctly, so add quotes (double-quote
-      # substitution turns \\\\ into \\, and sed turns \\ into \).
-      sed -n \
-       "s/'/'\\\\''/g;
-         s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
-      ;; #(
-    *)
-      # `set' quotes correctly as required by POSIX, so do not add quotes.
-      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
-      ;;
-    esac |
-    sort
-) |
-  sed '
-     /^ac_cv_env_/b end
-     t clear
-     :clear
-     s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
-     t end
-     s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
-     :end' >>confcache
-if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
-  if test -w "$cache_file"; then
-    test "x$cache_file" != "x/dev/null" &&
-      { echo "$as_me:$LINENO: updating cache $cache_file" >&5
-echo "$as_me: updating cache $cache_file" >&6;}
-    cat confcache >$cache_file
-  else
-    { echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5
-echo "$as_me: not updating unwritable cache $cache_file" >&6;}
-  fi
-fi
-rm -f confcache
-
-test "x$prefix" = xNONE && prefix=$ac_default_prefix
-# Let make expand exec_prefix.
-test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
-
-DEFS=-DHAVE_CONFIG_H
-
-ac_libobjs=
-ac_ltlibobjs=
-for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
-  # 1. Remove the extension, and $U if already installed.
-  ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
-  ac_i=`echo "$ac_i" | sed "$ac_script"`
-  # 2. Prepend LIBOBJDIR.  When used with automake>=1.10 LIBOBJDIR
-  #    will be set to the directory where LIBOBJS objects are built.
-  ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext"
-  ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$ac_i"'$U.lo'
-done
-LIBOBJS=$ac_libobjs
-
-LTLIBOBJS=$ac_ltlibobjs
-
-
-if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"AMDEP\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"am__fastdepCC\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"am__fastdepCC\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-
-: ${CONFIG_STATUS=./config.status}
-ac_clean_files_save=$ac_clean_files
-ac_clean_files="$ac_clean_files $CONFIG_STATUS"
-{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5
-echo "$as_me: creating $CONFIG_STATUS" >&6;}
-cat >$CONFIG_STATUS <<_ACEOF
-#! $SHELL
-# Generated by $as_me.
-# Run this file to recreate the current configuration.
-# Compiler output produced by configure, useful for debugging
-# configure, is in config.log if it exists.
-
-debug=false
-ac_cs_recheck=false
-ac_cs_silent=false
-SHELL=\${CONFIG_SHELL-$SHELL}
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF
-## --------------------- ##
-## M4sh Initialization.  ##
-## --------------------- ##
-
-# Be more Bourne compatible
-DUALCASE=1; export DUALCASE # for MKS sh
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
-  emulate sh
-  NULLCMD=:
-  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
-  # is contrary to our usage.  Disable this feature.
-  alias -g '${1+"$@"}'='"$@"'
-  setopt NO_GLOB_SUBST
-else
-  case `(set -o) 2>/dev/null` in
-  *posix*) set -o posix ;;
-esac
-
-fi
-
-
-
-
-# PATH needs CR
-# Avoid depending upon Character Ranges.
-as_cr_letters='abcdefghijklmnopqrstuvwxyz'
-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
-as_cr_Letters=$as_cr_letters$as_cr_LETTERS
-as_cr_digits='0123456789'
-as_cr_alnum=$as_cr_Letters$as_cr_digits
-
-# The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
-  echo "#! /bin/sh" >conf$$.sh
-  echo  "exit 0"   >>conf$$.sh
-  chmod +x conf$$.sh
-  if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
-    PATH_SEPARATOR=';'
-  else
-    PATH_SEPARATOR=:
-  fi
-  rm -f conf$$.sh
-fi
-
-# Support unset when possible.
-if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
-  as_unset=unset
-else
-  as_unset=false
-fi
-
-
-# IFS
-# We need space, tab and new line, in precisely that order.  Quoting is
-# there to prevent editors from complaining about space-tab.
-# (If _AS_PATH_WALK were called with IFS unset, it would disable word
-# splitting by setting IFS to empty value.)
-as_nl='
-'
-IFS=" ""       $as_nl"
-
-# Find who we are.  Look in the path if we contain no directory separator.
-case $0 in
-  *[\\/]* ) as_myself=$0 ;;
-  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
-done
-IFS=$as_save_IFS
-
-     ;;
-esac
-# We did not find ourselves, most probably we were run as `sh COMMAND'
-# in which case we are not to be found in the path.
-if test "x$as_myself" = x; then
-  as_myself=$0
-fi
-if test ! -f "$as_myself"; then
-  echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
-  { (exit 1); exit 1; }
-fi
-
-# Work around bugs in pre-3.0 UWIN ksh.
-for as_var in ENV MAIL MAILPATH
-do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
-done
-PS1='$ '
-PS2='> '
-PS4='+ '
-
-# NLS nuisances.
-for as_var in \
-  LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
-  LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
-  LC_TELEPHONE LC_TIME
-do
-  if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
-    eval $as_var=C; export $as_var
-  else
-    ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
-  fi
-done
-
-# Required to use basename.
-if expr a : '\(a\)' >/dev/null 2>&1 &&
-   test "X`expr 00001 : '.*\(...\)'`" = X001; then
-  as_expr=expr
-else
-  as_expr=false
-fi
-
-if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
-  as_basename=basename
-else
-  as_basename=false
-fi
-
-
-# Name of the executable.
-as_me=`$as_basename -- "$0" ||
-$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
-        X"$0" : 'X\(//\)$' \| \
-        X"$0" : 'X\(/\)' \| . 2>/dev/null ||
-echo X/"$0" |
-    sed '/^.*\/\([^/][^/]*\)\/*$/{
-           s//\1/
-           q
-         }
-         /^X\/\(\/\/\)$/{
-           s//\1/
-           q
-         }
-         /^X\/\(\/\).*/{
-           s//\1/
-           q
-         }
-         s/.*/./; q'`
-
-# CDPATH.
-$as_unset CDPATH
-
-
-
-  as_lineno_1=$LINENO
-  as_lineno_2=$LINENO
-  test "x$as_lineno_1" != "x$as_lineno_2" &&
-  test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || {
-
-  # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
-  # uniformly replaced by the line number.  The first 'sed' inserts a
-  # line-number line after each line using $LINENO; the second 'sed'
-  # does the real work.  The second script uses 'N' to pair each
-  # line-number line with the line containing $LINENO, and appends
-  # trailing '-' during substitution so that $LINENO is not a special
-  # case at line end.
-  # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
-  # scripts with optimization help from Paolo Bonzini.  Blame Lee
-  # E. McMahon (1931-1989) for sed's syntax.  :-)
-  sed -n '
-    p
-    /[$]LINENO/=
-  ' <$as_myself |
-    sed '
-      s/[$]LINENO.*/&-/
-      t lineno
-      b
-      :lineno
-      N
-      :loop
-      s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
-      t loop
-      s/-\n.*//
-    ' >$as_me.lineno &&
-  chmod +x "$as_me.lineno" ||
-    { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
-   { (exit 1); exit 1; }; }
-
-  # Don't try to exec as it changes $[0], causing all sort of problems
-  # (the dirname of $[0] is not the place where we might find the
-  # original and so on.  Autoconf is especially sensitive to this).
-  . "./$as_me.lineno"
-  # Exit status is that of the last command.
-  exit
-}
-
-
-if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
-  as_dirname=dirname
-else
-  as_dirname=false
-fi
-
-ECHO_C= ECHO_N= ECHO_T=
-case `echo -n x` in
--n*)
-  case `echo 'x\c'` in
-  *c*) ECHO_T='        ';;     # ECHO_T is single tab character.
-  *)   ECHO_C='\c';;
-  esac;;
-*)
-  ECHO_N='-n';;
-esac
-
-if expr a : '\(a\)' >/dev/null 2>&1 &&
-   test "X`expr 00001 : '.*\(...\)'`" = X001; then
-  as_expr=expr
-else
-  as_expr=false
-fi
-
-rm -f conf$$ conf$$.exe conf$$.file
-if test -d conf$$.dir; then
-  rm -f conf$$.dir/conf$$.file
-else
-  rm -f conf$$.dir
-  mkdir conf$$.dir
-fi
-echo >conf$$.file
-if ln -s conf$$.file conf$$ 2>/dev/null; then
-  as_ln_s='ln -s'
-  # ... but there are two gotchas:
-  # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
-  # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
-  # In both cases, we have to default to `cp -p'.
-  ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
-    as_ln_s='cp -p'
-elif ln conf$$.file conf$$ 2>/dev/null; then
-  as_ln_s=ln
-else
-  as_ln_s='cp -p'
-fi
-rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
-rmdir conf$$.dir 2>/dev/null
-
-if mkdir -p . 2>/dev/null; then
-  as_mkdir_p=:
-else
-  test -d ./-p && rmdir ./-p
-  as_mkdir_p=false
-fi
-
-if test -x / >/dev/null 2>&1; then
-  as_test_x='test -x'
-else
-  if ls -dL / >/dev/null 2>&1; then
-    as_ls_L_option=L
-  else
-    as_ls_L_option=
-  fi
-  as_test_x='
-    eval sh -c '\''
-      if test -d "$1"; then
-        test -d "$1/.";
-      else
-       case $1 in
-        -*)set "./$1";;
-       esac;
-       case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in
-       ???[sx]*):;;*)false;;esac;fi
-    '\'' sh
-  '
-fi
-as_executable_p=$as_test_x
-
-# Sed expression to map a string onto a valid CPP name.
-as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
-
-# Sed expression to map a string onto a valid variable name.
-as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
-
-
-exec 6>&1
-
-# Save the log message, to keep $[0] and so on meaningful, and to
-# report actual input values of CONFIG_FILES etc. instead of their
-# values after options handling.
-ac_log="
-This file was extended by xboard $as_me 4.3, which was
-generated by GNU Autoconf 2.61.  Invocation command line was
-
-  CONFIG_FILES    = $CONFIG_FILES
-  CONFIG_HEADERS  = $CONFIG_HEADERS
-  CONFIG_LINKS    = $CONFIG_LINKS
-  CONFIG_COMMANDS = $CONFIG_COMMANDS
-  $ $0 $@
-
-on `(hostname || uname -n) 2>/dev/null | sed 1q`
-"
-
-_ACEOF
-
-cat >>$CONFIG_STATUS <<_ACEOF
-# Files that config.status was made for.
-config_files="$ac_config_files"
-config_headers="$ac_config_headers"
-config_commands="$ac_config_commands"
-
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF
-ac_cs_usage="\
-\`$as_me' instantiates files from templates according to the
-current configuration.
-
-Usage: $0 [OPTIONS] [FILE]...
-
-  -h, --help       print this help, then exit
-  -V, --version    print version number and configuration settings, then exit
-  -q, --quiet      do not print progress messages
-  -d, --debug      don't remove temporary files
-      --recheck    update $as_me by reconfiguring in the same conditions
-  --file=FILE[:TEMPLATE]
-                  instantiate the configuration file FILE
-  --header=FILE[:TEMPLATE]
-                  instantiate the configuration header FILE
-
-Configuration files:
-$config_files
-
-Configuration headers:
-$config_headers
-
-Configuration commands:
-$config_commands
-
-Report bugs to <bug-autoconf@gnu.org>."
-
-_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF
-ac_cs_version="\\
-xboard config.status 4.3
-configured by $0, generated by GNU Autoconf 2.61,
-  with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
-
-Copyright (C) 2006 Free Software Foundation, Inc.
-This config.status script is free software; the Free Software Foundation
-gives unlimited permission to copy, distribute and modify it."
-
-ac_pwd='$ac_pwd'
-srcdir='$srcdir'
-INSTALL='$INSTALL'
-MKDIR_P='$MKDIR_P'
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF
-# If no file are specified by the user, then we need to provide default
-# value.  By we need to know if files were specified by the user.
-ac_need_defaults=:
-while test $# != 0
-do
-  case $1 in
-  --*=*)
-    ac_option=`expr "X$1" : 'X\([^=]*\)='`
-    ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
-    ac_shift=:
-    ;;
-  *)
-    ac_option=$1
-    ac_optarg=$2
-    ac_shift=shift
-    ;;
-  esac
-
-  case $ac_option in
-  # Handling of the options.
-  -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
-    ac_cs_recheck=: ;;
-  --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
-    echo "$ac_cs_version"; exit ;;
-  --debug | --debu | --deb | --de | --d | -d )
-    debug=: ;;
-  --file | --fil | --fi | --f )
-    $ac_shift
-    CONFIG_FILES="$CONFIG_FILES $ac_optarg"
-    ac_need_defaults=false;;
-  --header | --heade | --head | --hea )
-    $ac_shift
-    CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg"
-    ac_need_defaults=false;;
-  --he | --h)
-    # Conflict between --help and --header
-    { echo "$as_me: error: ambiguous option: $1
-Try \`$0 --help' for more information." >&2
-   { (exit 1); exit 1; }; };;
-  --help | --hel | -h )
-    echo "$ac_cs_usage"; exit ;;
-  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
-  | -silent | --silent | --silen | --sile | --sil | --si | --s)
-    ac_cs_silent=: ;;
-
-  # This is an error.
-  -*) { echo "$as_me: error: unrecognized option: $1
-Try \`$0 --help' for more information." >&2
-   { (exit 1); exit 1; }; } ;;
-
-  *) ac_config_targets="$ac_config_targets $1"
-     ac_need_defaults=false ;;
-
-  esac
-  shift
-done
-
-ac_configure_extra_args=
-
-if $ac_cs_silent; then
-  exec 6>/dev/null
-  ac_configure_extra_args="$ac_configure_extra_args --silent"
-fi
-
-_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF
-if \$ac_cs_recheck; then
-  echo "running CONFIG_SHELL=$SHELL $SHELL $0 "$ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6
-  CONFIG_SHELL=$SHELL
-  export CONFIG_SHELL
-  exec $SHELL "$0"$ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
-fi
-
-_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF
-exec 5>>config.log
-{
-  echo
-  sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
-## Running $as_me. ##
-_ASBOX
-  echo "$ac_log"
-} >&5
-
-_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF
-#
-# INIT-COMMANDS
-#
-AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
-
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF
-
-# Handling of arguments.
-for ac_config_target in $ac_config_targets
-do
-  case $ac_config_target in
-    "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
-    "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;;
-    "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
-    "cmail") CONFIG_FILES="$CONFIG_FILES cmail" ;;
-    "xboard.texinfo") CONFIG_FILES="$CONFIG_FILES xboard.texinfo" ;;
-    "default") CONFIG_COMMANDS="$CONFIG_COMMANDS default" ;;
-
-  *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
-echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
-   { (exit 1); exit 1; }; };;
-  esac
-done
-
-
-# If the user did not use the arguments to specify the items to instantiate,
-# then the envvar interface is used.  Set only those that are not.
-# We use the long form for the default assignment because of an extremely
-# bizarre bug on SunOS 4.1.3.
-if $ac_need_defaults; then
-  test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
-  test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
-  test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands
-fi
-
-# Have a temporary directory for convenience.  Make it in the build tree
-# simply because there is no reason against having it here, and in addition,
-# creating and moving files from /tmp can sometimes cause problems.
-# Hook for its removal unless debugging.
-# Note that there is a small window in which the directory will not be cleaned:
-# after its creation but before its name has been assigned to `$tmp'.
-$debug ||
-{
-  tmp=
-  trap 'exit_status=$?
-  { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status
-' 0
-  trap '{ (exit 1); exit 1; }' 1 2 13 15
-}
-# Create a (secure) tmp directory for tmp files.
-
-{
-  tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
-  test -n "$tmp" && test -d "$tmp"
-}  ||
-{
-  tmp=./conf$$-$RANDOM
-  (umask 077 && mkdir "$tmp")
-} ||
-{
-   echo "$me: cannot create a temporary directory in ." >&2
-   { (exit 1); exit 1; }
-}
-
-#
-# Set up the sed scripts for CONFIG_FILES section.
-#
-
-# No need to generate the scripts if there are no CONFIG_FILES.
-# This happens for instance when ./config.status config.h
-if test -n "$CONFIG_FILES"; then
-
-_ACEOF
-
-
-
-ac_delim='%!_!# '
-for ac_last_try in false false false false false :; do
-  cat >conf$$subs.sed <<_ACEOF
-SHELL!$SHELL$ac_delim
-PATH_SEPARATOR!$PATH_SEPARATOR$ac_delim
-PACKAGE_NAME!$PACKAGE_NAME$ac_delim
-PACKAGE_TARNAME!$PACKAGE_TARNAME$ac_delim
-PACKAGE_VERSION!$PACKAGE_VERSION$ac_delim
-PACKAGE_STRING!$PACKAGE_STRING$ac_delim
-PACKAGE_BUGREPORT!$PACKAGE_BUGREPORT$ac_delim
-exec_prefix!$exec_prefix$ac_delim
-prefix!$prefix$ac_delim
-program_transform_name!$program_transform_name$ac_delim
-bindir!$bindir$ac_delim
-sbindir!$sbindir$ac_delim
-libexecdir!$libexecdir$ac_delim
-datarootdir!$datarootdir$ac_delim
-datadir!$datadir$ac_delim
-sysconfdir!$sysconfdir$ac_delim
-sharedstatedir!$sharedstatedir$ac_delim
-localstatedir!$localstatedir$ac_delim
-includedir!$includedir$ac_delim
-oldincludedir!$oldincludedir$ac_delim
-docdir!$docdir$ac_delim
-infodir!$infodir$ac_delim
-htmldir!$htmldir$ac_delim
-dvidir!$dvidir$ac_delim
-pdfdir!$pdfdir$ac_delim
-psdir!$psdir$ac_delim
-libdir!$libdir$ac_delim
-localedir!$localedir$ac_delim
-mandir!$mandir$ac_delim
-DEFS!$DEFS$ac_delim
-ECHO_C!$ECHO_C$ac_delim
-ECHO_N!$ECHO_N$ac_delim
-ECHO_T!$ECHO_T$ac_delim
-LIBS!$LIBS$ac_delim
-build_alias!$build_alias$ac_delim
-host_alias!$host_alias$ac_delim
-target_alias!$target_alias$ac_delim
-INSTALL_PROGRAM!$INSTALL_PROGRAM$ac_delim
-INSTALL_SCRIPT!$INSTALL_SCRIPT$ac_delim
-INSTALL_DATA!$INSTALL_DATA$ac_delim
-am__isrc!$am__isrc$ac_delim
-CYGPATH_W!$CYGPATH_W$ac_delim
-PACKAGE!$PACKAGE$ac_delim
-VERSION!$VERSION$ac_delim
-ACLOCAL!$ACLOCAL$ac_delim
-AUTOCONF!$AUTOCONF$ac_delim
-AUTOMAKE!$AUTOMAKE$ac_delim
-AUTOHEADER!$AUTOHEADER$ac_delim
-MAKEINFO!$MAKEINFO$ac_delim
-install_sh!$install_sh$ac_delim
-STRIP!$STRIP$ac_delim
-INSTALL_STRIP_PROGRAM!$INSTALL_STRIP_PROGRAM$ac_delim
-mkdir_p!$mkdir_p$ac_delim
-AWK!$AWK$ac_delim
-SET_MAKE!$SET_MAKE$ac_delim
-am__leading_dot!$am__leading_dot$ac_delim
-AMTAR!$AMTAR$ac_delim
-am__tar!$am__tar$ac_delim
-am__untar!$am__untar$ac_delim
-CC!$CC$ac_delim
-CFLAGS!$CFLAGS$ac_delim
-LDFLAGS!$LDFLAGS$ac_delim
-CPPFLAGS!$CPPFLAGS$ac_delim
-ac_ct_CC!$ac_ct_CC$ac_delim
-EXEEXT!$EXEEXT$ac_delim
-OBJEXT!$OBJEXT$ac_delim
-DEPDIR!$DEPDIR$ac_delim
-am__include!$am__include$ac_delim
-am__quote!$am__quote$ac_delim
-AMDEP_TRUE!$AMDEP_TRUE$ac_delim
-AMDEP_FALSE!$AMDEP_FALSE$ac_delim
-AMDEPBACKSLASH!$AMDEPBACKSLASH$ac_delim
-CCDEPMODE!$CCDEPMODE$ac_delim
-am__fastdepCC_TRUE!$am__fastdepCC_TRUE$ac_delim
-am__fastdepCC_FALSE!$am__fastdepCC_FALSE$ac_delim
-LIBOBJS!$LIBOBJS$ac_delim
-LTLIBOBJS!$LTLIBOBJS$ac_delim
-CPP!$CPP$ac_delim
-LEX!$LEX$ac_delim
-LEX_OUTPUT_ROOT!$LEX_OUTPUT_ROOT$ac_delim
-LEXLIB!$LEXLIB$ac_delim
-RSH!$RSH$ac_delim
-MINFO!$MINFO$ac_delim
-NROFF!$NROFF$ac_delim
-NROFFFLAGS!$NROFFFLAGS$ac_delim
-AWKPATH!$AWKPATH$ac_delim
-PERLPATH!$PERLPATH$ac_delim
-GREP!$GREP$ac_delim
-EGREP!$EGREP$ac_delim
-XMKMF!$XMKMF$ac_delim
-X_CFLAGS!$X_CFLAGS$ac_delim
-X_PRE_LIBS!$X_PRE_LIBS$ac_delim
-X_LIBS!$X_LIBS$ac_delim
-X_EXTRA_LIBS!$X_EXTRA_LIBS$ac_delim
-XAW_LIBS!$XAW_LIBS$ac_delim
-build!$build$ac_delim
-build_cpu!$build_cpu$ac_delim
-_ACEOF
-
-  if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 97; then
-    break
-  elif $ac_last_try; then
-    { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
-echo "$as_me: error: could not make $CONFIG_STATUS" >&2;}
-   { (exit 1); exit 1; }; }
-  else
-    ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
-  fi
-done
-
-ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed`
-if test -n "$ac_eof"; then
-  ac_eof=`echo "$ac_eof" | sort -nru | sed 1q`
-  ac_eof=`expr $ac_eof + 1`
-fi
-
-cat >>$CONFIG_STATUS <<_ACEOF
-cat >"\$tmp/subs-1.sed" <<\CEOF$ac_eof
-/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
-_ACEOF
-sed '
-s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g
-s/^/s,@/; s/!/@,|#_!!_#|/
-:n
-t n
-s/'"$ac_delim"'$/,g/; t
-s/$/\\/; p
-N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n
-' >>$CONFIG_STATUS <conf$$subs.sed
-rm -f conf$$subs.sed
-cat >>$CONFIG_STATUS <<_ACEOF
-CEOF$ac_eof
-_ACEOF
-
-
-ac_delim='%!_!# '
-for ac_last_try in false false false false false :; do
-  cat >conf$$subs.sed <<_ACEOF
-build_vendor!$build_vendor$ac_delim
-build_os!$build_os$ac_delim
-host!$host$ac_delim
-host_cpu!$host_cpu$ac_delim
-host_vendor!$host_vendor$ac_delim
-host_os!$host_os$ac_delim
-PRE_XMULIB!$PRE_XMULIB$ac_delim
-POST_XMULIB!$POST_XMULIB$ac_delim
-CONF_CFLAGS!$CONF_CFLAGS$ac_delim
-CONF_LDFLAGS!$CONF_LDFLAGS$ac_delim
-ZIPPY_O!$ZIPPY_O$ac_delim
-ZIPPY_H!$ZIPPY_H$ac_delim
-PRODUCT!$PRODUCT$ac_delim
-PATCHLEVEL!$PATCHLEVEL$ac_delim
-_ACEOF
-
-  if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 14; then
-    break
-  elif $ac_last_try; then
-    { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
-echo "$as_me: error: could not make $CONFIG_STATUS" >&2;}
-   { (exit 1); exit 1; }; }
-  else
-    ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
-  fi
-done
-
-ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed`
-if test -n "$ac_eof"; then
-  ac_eof=`echo "$ac_eof" | sort -nru | sed 1q`
-  ac_eof=`expr $ac_eof + 1`
-fi
-
-cat >>$CONFIG_STATUS <<_ACEOF
-cat >"\$tmp/subs-2.sed" <<\CEOF$ac_eof
-/@[a-zA-Z_][a-zA-Z_0-9]*@/!b end
-_ACEOF
-sed '
-s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g
-s/^/s,@/; s/!/@,|#_!!_#|/
-:n
-t n
-s/'"$ac_delim"'$/,g/; t
-s/$/\\/; p
-N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n
-' >>$CONFIG_STATUS <conf$$subs.sed
-rm -f conf$$subs.sed
-cat >>$CONFIG_STATUS <<_ACEOF
-:end
-s/|#_!!_#|//g
-CEOF$ac_eof
-_ACEOF
-
-
-# VPATH may cause trouble with some makes, so we remove $(srcdir),
-# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and
-# trailing colons and then remove the whole line if VPATH becomes empty
-# (actually we leave an empty line to preserve line numbers).
-if test "x$srcdir" = x.; then
-  ac_vpsub='/^[         ]*VPATH[        ]*=/{
-s/:*\$(srcdir):*/:/
-s/:*\${srcdir}:*/:/
-s/:*@srcdir@:*/:/
-s/^\([^=]*=[    ]*\):*/\1/
-s/:*$//
-s/^[^=]*=[      ]*$//
-}'
-fi
-
-cat >>$CONFIG_STATUS <<\_ACEOF
-fi # test -n "$CONFIG_FILES"
-
-
-for ac_tag in  :F $CONFIG_FILES  :H $CONFIG_HEADERS    :C $CONFIG_COMMANDS
-do
-  case $ac_tag in
-  :[FHLC]) ac_mode=$ac_tag; continue;;
-  esac
-  case $ac_mode$ac_tag in
-  :[FHL]*:*);;
-  :L* | :C*:*) { { echo "$as_me:$LINENO: error: Invalid tag $ac_tag." >&5
-echo "$as_me: error: Invalid tag $ac_tag." >&2;}
-   { (exit 1); exit 1; }; };;
-  :[FH]-) ac_tag=-:-;;
-  :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
-  esac
-  ac_save_IFS=$IFS
-  IFS=:
-  set x $ac_tag
-  IFS=$ac_save_IFS
-  shift
-  ac_file=$1
-  shift
-
-  case $ac_mode in
-  :L) ac_source=$1;;
-  :[FH])
-    ac_file_inputs=
-    for ac_f
-    do
-      case $ac_f in
-      -) ac_f="$tmp/stdin";;
-      *) # Look for the file first in the build tree, then in the source tree
-        # (if the path is not absolute).  The absolute path cannot be DOS-style,
-        # because $ac_f cannot contain `:'.
-        test -f "$ac_f" ||
-          case $ac_f in
-          [\\/$]*) false;;
-          *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
-          esac ||
-          { { echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5
-echo "$as_me: error: cannot find input file: $ac_f" >&2;}
-   { (exit 1); exit 1; }; };;
-      esac
-      ac_file_inputs="$ac_file_inputs $ac_f"
-    done
-
-    # Let's still pretend it is `configure' which instantiates (i.e., don't
-    # use $as_me), people would be surprised to read:
-    #    /* config.h.  Generated by config.status.  */
-    configure_input="Generated from "`IFS=:
-         echo $* | sed 's|^[^:]*/||;s|:[^:]*/|, |g'`" by configure."
-    if test x"$ac_file" != x-; then
-      configure_input="$ac_file.  $configure_input"
-      { echo "$as_me:$LINENO: creating $ac_file" >&5
-echo "$as_me: creating $ac_file" >&6;}
-    fi
-
-    case $ac_tag in
-    *:-:* | *:-) cat >"$tmp/stdin";;
-    esac
-    ;;
-  esac
-
-  ac_dir=`$as_dirname -- "$ac_file" ||
-$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-        X"$ac_file" : 'X\(//\)[^/]' \| \
-        X"$ac_file" : 'X\(//\)$' \| \
-        X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
-echo X"$ac_file" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-           s//\1/
-           q
-         }
-         /^X\(\/\/\)[^/].*/{
-           s//\1/
-           q
-         }
-         /^X\(\/\/\)$/{
-           s//\1/
-           q
-         }
-         /^X\(\/\).*/{
-           s//\1/
-           q
-         }
-         s/.*/./; q'`
-  { as_dir="$ac_dir"
-  case $as_dir in #(
-  -*) as_dir=./$as_dir;;
-  esac
-  test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || {
-    as_dirs=
-    while :; do
-      case $as_dir in #(
-      *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #(
-      *) as_qdir=$as_dir;;
-      esac
-      as_dirs="'$as_qdir' $as_dirs"
-      as_dir=`$as_dirname -- "$as_dir" ||
-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-        X"$as_dir" : 'X\(//\)[^/]' \| \
-        X"$as_dir" : 'X\(//\)$' \| \
-        X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
-echo X"$as_dir" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-           s//\1/
-           q
-         }
-         /^X\(\/\/\)[^/].*/{
-           s//\1/
-           q
-         }
-         /^X\(\/\/\)$/{
-           s//\1/
-           q
-         }
-         /^X\(\/\).*/{
-           s//\1/
-           q
-         }
-         s/.*/./; q'`
-      test -d "$as_dir" && break
-    done
-    test -z "$as_dirs" || eval "mkdir $as_dirs"
-  } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5
-echo "$as_me: error: cannot create directory $as_dir" >&2;}
-   { (exit 1); exit 1; }; }; }
-  ac_builddir=.
-
-case "$ac_dir" in
-.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
-*)
-  ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
-  # A ".." for each directory in $ac_dir_suffix.
-  ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'`
-  case $ac_top_builddir_sub in
-  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
-  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
-  esac ;;
-esac
-ac_abs_top_builddir=$ac_pwd
-ac_abs_builddir=$ac_pwd$ac_dir_suffix
-# for backward compatibility:
-ac_top_builddir=$ac_top_build_prefix
-
-case $srcdir in
-  .)  # We are building in place.
-    ac_srcdir=.
-    ac_top_srcdir=$ac_top_builddir_sub
-    ac_abs_top_srcdir=$ac_pwd ;;
-  [\\/]* | ?:[\\/]* )  # Absolute name.
-    ac_srcdir=$srcdir$ac_dir_suffix;
-    ac_top_srcdir=$srcdir
-    ac_abs_top_srcdir=$srcdir ;;
-  *) # Relative name.
-    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
-    ac_top_srcdir=$ac_top_build_prefix$srcdir
-    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
-esac
-ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
-
-
-  case $ac_mode in
-  :F)
-  #
-  # CONFIG_FILE
-  #
-
-  case $INSTALL in
-  [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
-  *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;;
-  esac
-  ac_MKDIR_P=$MKDIR_P
-  case $MKDIR_P in
-  [\\/$]* | ?:[\\/]* ) ;;
-  */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;;
-  esac
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF
-# If the template does not know about datarootdir, expand it.
-# FIXME: This hack should be removed a few years after 2.60.
-ac_datarootdir_hack=; ac_datarootdir_seen=
-
-case `sed -n '/datarootdir/ {
-  p
-  q
-}
-/@datadir@/p
-/@docdir@/p
-/@infodir@/p
-/@localedir@/p
-/@mandir@/p
-' $ac_file_inputs` in
-*datarootdir*) ac_datarootdir_seen=yes;;
-*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
-  { echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
-echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
-_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF
-  ac_datarootdir_hack='
-  s&@datadir@&$datadir&g
-  s&@docdir@&$docdir&g
-  s&@infodir@&$infodir&g
-  s&@localedir@&$localedir&g
-  s&@mandir@&$mandir&g
-    s&\\\${datarootdir}&$datarootdir&g' ;;
-esac
-_ACEOF
-
-# Neutralize VPATH when `$srcdir' = `.'.
-# Shell code in configure.ac might set extrasub.
-# FIXME: do we really want to maintain this feature?
-cat >>$CONFIG_STATUS <<_ACEOF
-  sed "$ac_vpsub
-$extrasub
-_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF
-:t
-/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
-s&@configure_input@&$configure_input&;t t
-s&@top_builddir@&$ac_top_builddir_sub&;t t
-s&@srcdir@&$ac_srcdir&;t t
-s&@abs_srcdir@&$ac_abs_srcdir&;t t
-s&@top_srcdir@&$ac_top_srcdir&;t t
-s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t
-s&@builddir@&$ac_builddir&;t t
-s&@abs_builddir@&$ac_abs_builddir&;t t
-s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
-s&@INSTALL@&$ac_INSTALL&;t t
-s&@MKDIR_P@&$ac_MKDIR_P&;t t
-$ac_datarootdir_hack
-" $ac_file_inputs | sed -f "$tmp/subs-1.sed" | sed -f "$tmp/subs-2.sed" >$tmp/out
-
-test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
-  { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } &&
-  { ac_out=`sed -n '/^[         ]*datarootdir[  ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } &&
-  { echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir'
-which seems to be undefined.  Please make sure it is defined." >&5
-echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
-which seems to be undefined.  Please make sure it is defined." >&2;}
-
-  rm -f "$tmp/stdin"
-  case $ac_file in
-  -) cat "$tmp/out"; rm -f "$tmp/out";;
-  *) rm -f "$ac_file"; mv "$tmp/out" $ac_file;;
-  esac
- ;;
-  :H)
-  #
-  # CONFIG_HEADER
-  #
-_ACEOF
-
-# Transform confdefs.h into a sed script `conftest.defines', that
-# substitutes the proper values into config.h.in to produce config.h.
-rm -f conftest.defines conftest.tail
-# First, append a space to every undef/define line, to ease matching.
-echo 's/$/ /' >conftest.defines
-# Then, protect against being on the right side of a sed subst, or in
-# an unquoted here document, in config.status.  If some macros were
-# called several times there might be several #defines for the same
-# symbol, which is useless.  But do not sort them, since the last
-# AC_DEFINE must be honored.
-ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]*
-# These sed commands are passed to sed as "A NAME B PARAMS C VALUE D", where
-# NAME is the cpp macro being defined, VALUE is the value it is being given.
-# PARAMS is the parameter list in the macro definition--in most cases, it's
-# just an empty string.
-ac_dA='s,^\\([  #]*\\)[^        ]*\\([  ]*'
-ac_dB='\\)[     (].*,\\1define\\2'
-ac_dC=' '
-ac_dD=' ,'
-
-uniq confdefs.h |
-  sed -n '
-       t rset
-       :rset
-       s/^[     ]*#[    ]*define[       ][      ]*//
-       t ok
-       d
-       :ok
-       s/[\\&,]/\\&/g
-       s/^\('"$ac_word_re"'\)\(([^()]*)\)[      ]*\(.*\)/ '"$ac_dA"'\1'"$ac_dB"'\2'"${ac_dC}"'\3'"$ac_dD"'/p
-       s/^\('"$ac_word_re"'\)[  ]*\(.*\)/'"$ac_dA"'\1'"$ac_dB$ac_dC"'\2'"$ac_dD"'/p
-  ' >>conftest.defines
-
-# Remove the space that was appended to ease matching.
-# Then replace #undef with comments.  This is necessary, for
-# example, in the case of _POSIX_SOURCE, which is predefined and required
-# on some systems where configure will not decide to define it.
-# (The regexp can be short, since the line contains either #define or #undef.)
-echo 's/ $//
-s,^[    #]*u.*,/* & */,' >>conftest.defines
-
-# Break up conftest.defines:
-ac_max_sed_lines=50
-
-# First sed command is:         sed -f defines.sed $ac_file_inputs >"$tmp/out1"
-# Second one is:        sed -f defines.sed "$tmp/out1" >"$tmp/out2"
-# Third one will be:    sed -f defines.sed "$tmp/out2" >"$tmp/out1"
-# et cetera.
-ac_in='$ac_file_inputs'
-ac_out='"$tmp/out1"'
-ac_nxt='"$tmp/out2"'
-
-while :
-do
-  # Write a here document:
-    cat >>$CONFIG_STATUS <<_ACEOF
-    # First, check the format of the line:
-    cat >"\$tmp/defines.sed" <<\\CEOF
-/^[     ]*#[    ]*undef[        ][      ]*$ac_word_re[  ]*\$/b def
-/^[     ]*#[    ]*define[       ][      ]*$ac_word_re[(         ]/b def
-b
-:def
-_ACEOF
-  sed ${ac_max_sed_lines}q conftest.defines >>$CONFIG_STATUS
-  echo 'CEOF
-    sed -f "$tmp/defines.sed"' "$ac_in >$ac_out" >>$CONFIG_STATUS
-  ac_in=$ac_out; ac_out=$ac_nxt; ac_nxt=$ac_in
-  sed 1,${ac_max_sed_lines}d conftest.defines >conftest.tail
-  grep . conftest.tail >/dev/null || break
-  rm -f conftest.defines
-  mv conftest.tail conftest.defines
-done
-rm -f conftest.defines conftest.tail
-
-echo "ac_result=$ac_in" >>$CONFIG_STATUS
-cat >>$CONFIG_STATUS <<\_ACEOF
-  if test x"$ac_file" != x-; then
-    echo "/* $configure_input  */" >"$tmp/config.h"
-    cat "$ac_result" >>"$tmp/config.h"
-    if diff $ac_file "$tmp/config.h" >/dev/null 2>&1; then
-      { echo "$as_me:$LINENO: $ac_file is unchanged" >&5
-echo "$as_me: $ac_file is unchanged" >&6;}
-    else
-      rm -f $ac_file
-      mv "$tmp/config.h" $ac_file
-    fi
-  else
-    echo "/* $configure_input  */"
-    cat "$ac_result"
-  fi
-  rm -f "$tmp/out12"
-# Compute $ac_file's index in $config_headers.
-_am_arg=$ac_file
-_am_stamp_count=1
-for _am_header in $config_headers :; do
-  case $_am_header in
-    $_am_arg | $_am_arg:* )
-      break ;;
-    * )
-      _am_stamp_count=`expr $_am_stamp_count + 1` ;;
-  esac
-done
-echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" ||
-$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-        X"$_am_arg" : 'X\(//\)[^/]' \| \
-        X"$_am_arg" : 'X\(//\)$' \| \
-        X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null ||
-echo X"$_am_arg" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-           s//\1/
-           q
-         }
-         /^X\(\/\/\)[^/].*/{
-           s//\1/
-           q
-         }
-         /^X\(\/\/\)$/{
-           s//\1/
-           q
-         }
-         /^X\(\/\).*/{
-           s//\1/
-           q
-         }
-         s/.*/./; q'`/stamp-h$_am_stamp_count
- ;;
-
-  :C)  { echo "$as_me:$LINENO: executing $ac_file commands" >&5
-echo "$as_me: executing $ac_file commands" >&6;}
- ;;
-  esac
-
-
-  case $ac_file$ac_mode in
-    "depfiles":C) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do
-  # Strip MF so we end up with the name of the file.
-  mf=`echo "$mf" | sed -e 's/:.*$//'`
-  # Check whether this is an Automake generated Makefile or not.
-  # We used to match only the files named `Makefile.in', but
-  # some people rename them; so instead we look at the file content.
-  # Grep'ing the first line is not enough: some people post-process
-  # each Makefile.in and add a new line on top of each file to say so.
-  # Grep'ing the whole file is not good either: AIX grep has a line
-  # limit of 2048, but all sed's we know have understand at least 4000.
-  if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
-    dirpart=`$as_dirname -- "$mf" ||
-$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-        X"$mf" : 'X\(//\)[^/]' \| \
-        X"$mf" : 'X\(//\)$' \| \
-        X"$mf" : 'X\(/\)' \| . 2>/dev/null ||
-echo X"$mf" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-           s//\1/
-           q
-         }
-         /^X\(\/\/\)[^/].*/{
-           s//\1/
-           q
-         }
-         /^X\(\/\/\)$/{
-           s//\1/
-           q
-         }
-         /^X\(\/\).*/{
-           s//\1/
-           q
-         }
-         s/.*/./; q'`
-  else
-    continue
-  fi
-  # Extract the definition of DEPDIR, am__include, and am__quote
-  # from the Makefile without running `make'.
-  DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
-  test -z "$DEPDIR" && continue
-  am__include=`sed -n 's/^am__include = //p' < "$mf"`
-  test -z "am__include" && continue
-  am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
-  # When using ansi2knr, U may be empty or an underscore; expand it
-  U=`sed -n 's/^U = //p' < "$mf"`
-  # Find all dependency output files, they are included files with
-  # $(DEPDIR) in their names.  We invoke sed twice because it is the
-  # simplest approach to changing $(DEPDIR) to its actual value in the
-  # expansion.
-  for file in `sed -n "
-    s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
-       sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
-    # Make sure the directory exists.
-    test -f "$dirpart/$file" && continue
-    fdir=`$as_dirname -- "$file" ||
-$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-        X"$file" : 'X\(//\)[^/]' \| \
-        X"$file" : 'X\(//\)$' \| \
-        X"$file" : 'X\(/\)' \| . 2>/dev/null ||
-echo X"$file" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-           s//\1/
-           q
-         }
-         /^X\(\/\/\)[^/].*/{
-           s//\1/
-           q
-         }
-         /^X\(\/\/\)$/{
-           s//\1/
-           q
-         }
-         /^X\(\/\).*/{
-           s//\1/
-           q
-         }
-         s/.*/./; q'`
-    { as_dir=$dirpart/$fdir
-  case $as_dir in #(
-  -*) as_dir=./$as_dir;;
-  esac
-  test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || {
-    as_dirs=
-    while :; do
-      case $as_dir in #(
-      *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #(
-      *) as_qdir=$as_dir;;
-      esac
-      as_dirs="'$as_qdir' $as_dirs"
-      as_dir=`$as_dirname -- "$as_dir" ||
-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-        X"$as_dir" : 'X\(//\)[^/]' \| \
-        X"$as_dir" : 'X\(//\)$' \| \
-        X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
-echo X"$as_dir" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-           s//\1/
-           q
-         }
-         /^X\(\/\/\)[^/].*/{
-           s//\1/
-           q
-         }
-         /^X\(\/\/\)$/{
-           s//\1/
-           q
-         }
-         /^X\(\/\).*/{
-           s//\1/
-           q
-         }
-         s/.*/./; q'`
-      test -d "$as_dir" && break
-    done
-    test -z "$as_dirs" || eval "mkdir $as_dirs"
-  } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5
-echo "$as_me: error: cannot create directory $as_dir" >&2;}
-   { (exit 1); exit 1; }; }; }
-    # echo "creating $dirpart/$file"
-    echo '# dummy' > "$dirpart/$file"
-  done
-done
- ;;
-    "default":C) test -z "$CONFIG_HEADERS" || date > stamp-h
-chmod 755 cmail
- ;;
-
-  esac
-done # for ac_tag
-
-
-{ (exit 0); exit 0; }
-_ACEOF
-chmod +x $CONFIG_STATUS
-ac_clean_files=$ac_clean_files_save
-
-
-# configure is writing to config.log, and then calls config.status.
-# config.status does its own redirection, appending to config.log.
-# Unfortunately, on DOS this fails, as config.log is still kept open
-# by configure, so config.status won't be able to write to it; its
-# output is simply discarded.  So we exec the FD to /dev/null,
-# effectively closing config.log, so it can be properly (re)opened and
-# appended to by config.status.  When coming back to configure, we
-# need to make the FD available again.
-if test "$no_create" != yes; then
-  ac_cs_success=:
-  ac_config_status_args=
-  test "$silent" = yes &&
-    ac_config_status_args="$ac_config_status_args --quiet"
-  exec 5>/dev/null
-  $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
-  exec 5>>config.log
-  # Use ||, not &&, to avoid exiting from the if with $? = 1, which
-  # would make configure fail if this is the last instruction.
-  $ac_cs_success || { (exit 1); exit 1; }
-fi
-
+#! /bin/sh\r
+# Guess values for system-dependent variables and create Makefiles.\r
+# Generated by GNU Autoconf 2.61 for xboard 4.3.\r
+#\r
+# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,\r
+# 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.\r
+# This configure script is free software; the Free Software Foundation\r
+# gives unlimited permission to copy, distribute and modify it.\r
+## --------------------- ##\r
+## M4sh Initialization.  ##\r
+## --------------------- ##\r
+\r
+# Be more Bourne compatible\r
+DUALCASE=1; export DUALCASE # for MKS sh\r
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then\r
+  emulate sh\r
+  NULLCMD=:\r
+  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which\r
+  # is contrary to our usage.  Disable this feature.\r
+  alias -g '${1+"$@"}'='"$@"'\r
+  setopt NO_GLOB_SUBST\r
+else\r
+  case `(set -o) 2>/dev/null` in\r
+  *posix*) set -o posix ;;\r
+esac\r
+\r
+fi\r
+\r
+\r
+\r
+\r
+# PATH needs CR\r
+# Avoid depending upon Character Ranges.\r
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'\r
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'\r
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS\r
+as_cr_digits='0123456789'\r
+as_cr_alnum=$as_cr_Letters$as_cr_digits\r
+\r
+# The user is always right.\r
+if test "${PATH_SEPARATOR+set}" != set; then\r
+  echo "#! /bin/sh" >conf$$.sh\r
+  echo  "exit 0"   >>conf$$.sh\r
+  chmod +x conf$$.sh\r
+  if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then\r
+    PATH_SEPARATOR=';'\r
+  else\r
+    PATH_SEPARATOR=:\r
+  fi\r
+  rm -f conf$$.sh\r
+fi\r
+\r
+# Support unset when possible.\r
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then\r
+  as_unset=unset\r
+else\r
+  as_unset=false\r
+fi\r
+\r
+\r
+# IFS\r
+# We need space, tab and new line, in precisely that order.  Quoting is\r
+# there to prevent editors from complaining about space-tab.\r
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word\r
+# splitting by setting IFS to empty value.)\r
+as_nl='\r
+'\r
+IFS=" ""       $as_nl"\r
+\r
+# Find who we are.  Look in the path if we contain no directory separator.\r
+case $0 in\r
+  *[\\/]* ) as_myself=$0 ;;\r
+  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR\r
+for as_dir in $PATH\r
+do\r
+  IFS=$as_save_IFS\r
+  test -z "$as_dir" && as_dir=.\r
+  test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break\r
+done\r
+IFS=$as_save_IFS\r
+\r
+     ;;\r
+esac\r
+# We did not find ourselves, most probably we were run as `sh COMMAND'\r
+# in which case we are not to be found in the path.\r
+if test "x$as_myself" = x; then\r
+  as_myself=$0\r
+fi\r
+if test ! -f "$as_myself"; then\r
+  echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2\r
+  { (exit 1); exit 1; }\r
+fi\r
+\r
+# Work around bugs in pre-3.0 UWIN ksh.\r
+for as_var in ENV MAIL MAILPATH\r
+do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var\r
+done\r
+PS1='$ '\r
+PS2='> '\r
+PS4='+ '\r
+\r
+# NLS nuisances.\r
+for as_var in \\r
+  LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \\r
+  LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \\r
+  LC_TELEPHONE LC_TIME\r
+do\r
+  if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then\r
+    eval $as_var=C; export $as_var\r
+  else\r
+    ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var\r
+  fi\r
+done\r
+\r
+# Required to use basename.\r
+if expr a : '\(a\)' >/dev/null 2>&1 &&\r
+   test "X`expr 00001 : '.*\(...\)'`" = X001; then\r
+  as_expr=expr\r
+else\r
+  as_expr=false\r
+fi\r
+\r
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then\r
+  as_basename=basename\r
+else\r
+  as_basename=false\r
+fi\r
+\r
+\r
+# Name of the executable.\r
+as_me=`$as_basename -- "$0" ||\r
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \\r
+        X"$0" : 'X\(//\)$' \| \\r
+        X"$0" : 'X\(/\)' \| . 2>/dev/null ||\r
+echo X/"$0" |\r
+    sed '/^.*\/\([^/][^/]*\)\/*$/{\r
+           s//\1/\r
+           q\r
+         }\r
+         /^X\/\(\/\/\)$/{\r
+           s//\1/\r
+           q\r
+         }\r
+         /^X\/\(\/\).*/{\r
+           s//\1/\r
+           q\r
+         }\r
+         s/.*/./; q'`\r
+\r
+# CDPATH.\r
+$as_unset CDPATH\r
+\r
+\r
+if test "x$CONFIG_SHELL" = x; then\r
+  if (eval ":") 2>/dev/null; then\r
+  as_have_required=yes\r
+else\r
+  as_have_required=no\r
+fi\r
+\r
+  if test $as_have_required = yes &&    (eval ":\r
+(as_func_return () {\r
+  (exit \$1)\r
+}\r
+as_func_success () {\r
+  as_func_return 0\r
+}\r
+as_func_failure () {\r
+  as_func_return 1\r
+}\r
+as_func_ret_success () {\r
+  return 0\r
+}\r
+as_func_ret_failure () {\r
+  return 1\r
+}\r
+\r
+exitcode=0\r
+if as_func_success; then\r
+  :\r
+else\r
+  exitcode=1\r
+  echo as_func_success failed.\r
+fi\r
+\r
+if as_func_failure; then\r
+  exitcode=1\r
+  echo as_func_failure succeeded.\r
+fi\r
+\r
+if as_func_ret_success; then\r
+  :\r
+else\r
+  exitcode=1\r
+  echo as_func_ret_success failed.\r
+fi\r
+\r
+if as_func_ret_failure; then\r
+  exitcode=1\r
+  echo as_func_ret_failure succeeded.\r
+fi\r
+\r
+if ( set x; as_func_ret_success y && test x = \"\$1\" ); then\r
+  :\r
+else\r
+  exitcode=1\r
+  echo positional parameters were not saved.\r
+fi\r
+\r
+test \$exitcode = 0) || { (exit 1); exit 1; }\r
+\r
+(\r
+  as_lineno_1=\$LINENO\r
+  as_lineno_2=\$LINENO\r
+  test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" &&\r
+  test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; }\r
+") 2> /dev/null; then\r
+  :\r
+else\r
+  as_candidate_shells=\r
+    as_save_IFS=$IFS; IFS=$PATH_SEPARATOR\r
+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH\r
+do\r
+  IFS=$as_save_IFS\r
+  test -z "$as_dir" && as_dir=.\r
+  case $as_dir in\r
+        /*)\r
+          for as_base in sh bash ksh sh5; do\r
+            as_candidate_shells="$as_candidate_shells $as_dir/$as_base"\r
+          done;;\r
+       esac\r
+done\r
+IFS=$as_save_IFS\r
+\r
+\r
+      for as_shell in $as_candidate_shells $SHELL; do\r
+        # Try only shells that exist, to save several forks.\r
+        if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&\r
+               { ("$as_shell") 2> /dev/null <<\_ASEOF\r
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then\r
+  emulate sh\r
+  NULLCMD=:\r
+  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which\r
+  # is contrary to our usage.  Disable this feature.\r
+  alias -g '${1+"$@"}'='"$@"'\r
+  setopt NO_GLOB_SUBST\r
+else\r
+  case `(set -o) 2>/dev/null` in\r
+  *posix*) set -o posix ;;\r
+esac\r
+\r
+fi\r
+\r
+\r
+:\r
+_ASEOF\r
+}; then\r
+  CONFIG_SHELL=$as_shell\r
+              as_have_required=yes\r
+              if { "$as_shell" 2> /dev/null <<\_ASEOF\r
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then\r
+  emulate sh\r
+  NULLCMD=:\r
+  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which\r
+  # is contrary to our usage.  Disable this feature.\r
+  alias -g '${1+"$@"}'='"$@"'\r
+  setopt NO_GLOB_SUBST\r
+else\r
+  case `(set -o) 2>/dev/null` in\r
+  *posix*) set -o posix ;;\r
+esac\r
+\r
+fi\r
+\r
+\r
+:\r
+(as_func_return () {\r
+  (exit $1)\r
+}\r
+as_func_success () {\r
+  as_func_return 0\r
+}\r
+as_func_failure () {\r
+  as_func_return 1\r
+}\r
+as_func_ret_success () {\r
+  return 0\r
+}\r
+as_func_ret_failure () {\r
+  return 1\r
+}\r
+\r
+exitcode=0\r
+if as_func_success; then\r
+  :\r
+else\r
+  exitcode=1\r
+  echo as_func_success failed.\r
+fi\r
+\r
+if as_func_failure; then\r
+  exitcode=1\r
+  echo as_func_failure succeeded.\r
+fi\r
+\r
+if as_func_ret_success; then\r
+  :\r
+else\r
+  exitcode=1\r
+  echo as_func_ret_success failed.\r
+fi\r
+\r
+if as_func_ret_failure; then\r
+  exitcode=1\r
+  echo as_func_ret_failure succeeded.\r
+fi\r
+\r
+if ( set x; as_func_ret_success y && test x = "$1" ); then\r
+  :\r
+else\r
+  exitcode=1\r
+  echo positional parameters were not saved.\r
+fi\r
+\r
+test $exitcode = 0) || { (exit 1); exit 1; }\r
+\r
+(\r
+  as_lineno_1=$LINENO\r
+  as_lineno_2=$LINENO\r
+  test "x$as_lineno_1" != "x$as_lineno_2" &&\r
+  test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2") || { (exit 1); exit 1; }\r
+\r
+_ASEOF\r
+}; then\r
+  break\r
+fi\r
+\r
+fi\r
+\r
+      done\r
+\r
+      if test "x$CONFIG_SHELL" != x; then\r
+  for as_var in BASH_ENV ENV\r
+        do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var\r
+        done\r
+        export CONFIG_SHELL\r
+        exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"}\r
+fi\r
+\r
+\r
+    if test $as_have_required = no; then\r
+  echo This script requires a shell more modern than all the\r
+      echo shells that I found on your system.  Please install a\r
+      echo modern shell, or manually run the script under such a\r
+      echo shell if you do have one.\r
+      { (exit 1); exit 1; }\r
+fi\r
+\r
+\r
+fi\r
+\r
+fi\r
+\r
+\r
+\r
+(eval "as_func_return () {\r
+  (exit \$1)\r
+}\r
+as_func_success () {\r
+  as_func_return 0\r
+}\r
+as_func_failure () {\r
+  as_func_return 1\r
+}\r
+as_func_ret_success () {\r
+  return 0\r
+}\r
+as_func_ret_failure () {\r
+  return 1\r
+}\r
+\r
+exitcode=0\r
+if as_func_success; then\r
+  :\r
+else\r
+  exitcode=1\r
+  echo as_func_success failed.\r
+fi\r
+\r
+if as_func_failure; then\r
+  exitcode=1\r
+  echo as_func_failure succeeded.\r
+fi\r
+\r
+if as_func_ret_success; then\r
+  :\r
+else\r
+  exitcode=1\r
+  echo as_func_ret_success failed.\r
+fi\r
+\r
+if as_func_ret_failure; then\r
+  exitcode=1\r
+  echo as_func_ret_failure succeeded.\r
+fi\r
+\r
+if ( set x; as_func_ret_success y && test x = \"\$1\" ); then\r
+  :\r
+else\r
+  exitcode=1\r
+  echo positional parameters were not saved.\r
+fi\r
+\r
+test \$exitcode = 0") || {\r
+  echo No shell found that supports shell functions.\r
+  echo Please tell autoconf@gnu.org about your system,\r
+  echo including any error possibly output before this\r
+  echo message\r
+}\r
+\r
+\r
+\r
+  as_lineno_1=$LINENO\r
+  as_lineno_2=$LINENO\r
+  test "x$as_lineno_1" != "x$as_lineno_2" &&\r
+  test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || {\r
+\r
+  # Create $as_me.lineno as a copy of $as_myself, but with $LINENO\r
+  # uniformly replaced by the line number.  The first 'sed' inserts a\r
+  # line-number line after each line using $LINENO; the second 'sed'\r
+  # does the real work.  The second script uses 'N' to pair each\r
+  # line-number line with the line containing $LINENO, and appends\r
+  # trailing '-' during substitution so that $LINENO is not a special\r
+  # case at line end.\r
+  # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the\r
+  # scripts with optimization help from Paolo Bonzini.  Blame Lee\r
+  # E. McMahon (1931-1989) for sed's syntax.  :-)\r
+  sed -n '\r
+    p\r
+    /[$]LINENO/=\r
+  ' <$as_myself |\r
+    sed '\r
+      s/[$]LINENO.*/&-/\r
+      t lineno\r
+      b\r
+      :lineno\r
+      N\r
+      :loop\r
+      s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/\r
+      t loop\r
+      s/-\n.*//\r
+    ' >$as_me.lineno &&\r
+  chmod +x "$as_me.lineno" ||\r
+    { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2\r
+   { (exit 1); exit 1; }; }\r
+\r
+  # Don't try to exec as it changes $[0], causing all sort of problems\r
+  # (the dirname of $[0] is not the place where we might find the\r
+  # original and so on.  Autoconf is especially sensitive to this).\r
+  . "./$as_me.lineno"\r
+  # Exit status is that of the last command.\r
+  exit\r
+}\r
+\r
+\r
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then\r
+  as_dirname=dirname\r
+else\r
+  as_dirname=false\r
+fi\r
+\r
+ECHO_C= ECHO_N= ECHO_T=\r
+case `echo -n x` in\r
+-n*)\r
+  case `echo 'x\c'` in\r
+  *c*) ECHO_T='        ';;     # ECHO_T is single tab character.\r
+  *)   ECHO_C='\c';;\r
+  esac;;\r
+*)\r
+  ECHO_N='-n';;\r
+esac\r
+\r
+if expr a : '\(a\)' >/dev/null 2>&1 &&\r
+   test "X`expr 00001 : '.*\(...\)'`" = X001; then\r
+  as_expr=expr\r
+else\r
+  as_expr=false\r
+fi\r
+\r
+rm -f conf$$ conf$$.exe conf$$.file\r
+if test -d conf$$.dir; then\r
+  rm -f conf$$.dir/conf$$.file\r
+else\r
+  rm -f conf$$.dir\r
+  mkdir conf$$.dir\r
+fi\r
+echo >conf$$.file\r
+if ln -s conf$$.file conf$$ 2>/dev/null; then\r
+  as_ln_s='ln -s'\r
+  # ... but there are two gotchas:\r
+  # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.\r
+  # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.\r
+  # In both cases, we have to default to `cp -p'.\r
+  ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||\r
+    as_ln_s='cp -p'\r
+elif ln conf$$.file conf$$ 2>/dev/null; then\r
+  as_ln_s=ln\r
+else\r
+  as_ln_s='cp -p'\r
+fi\r
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file\r
+rmdir conf$$.dir 2>/dev/null\r
+\r
+if mkdir -p . 2>/dev/null; then\r
+  as_mkdir_p=:\r
+else\r
+  test -d ./-p && rmdir ./-p\r
+  as_mkdir_p=false\r
+fi\r
+\r
+if test -x / >/dev/null 2>&1; then\r
+  as_test_x='test -x'\r
+else\r
+  if ls -dL / >/dev/null 2>&1; then\r
+    as_ls_L_option=L\r
+  else\r
+    as_ls_L_option=\r
+  fi\r
+  as_test_x='\r
+    eval sh -c '\''\r
+      if test -d "$1"; then\r
+        test -d "$1/.";\r
+      else\r
+       case $1 in\r
+        -*)set "./$1";;\r
+       esac;\r
+       case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in\r
+       ???[sx]*):;;*)false;;esac;fi\r
+    '\'' sh\r
+  '\r
+fi\r
+as_executable_p=$as_test_x\r
+\r
+# Sed expression to map a string onto a valid CPP name.\r
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"\r
+\r
+# Sed expression to map a string onto a valid variable name.\r
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"\r
+\r
+\r
+\r
+exec 7<&0 </dev/null 6>&1\r
+\r
+# Name of the host.\r
+# hostname on some systems (SVR3.2, Linux) returns a bogus exit status,\r
+# so uname gets run too.\r
+ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`\r
+\r
+#\r
+# Initializations.\r
+#\r
+ac_default_prefix=/usr/local\r
+ac_clean_files=\r
+ac_config_libobj_dir=.\r
+LIBOBJS=\r
+cross_compiling=no\r
+subdirs=\r
+MFLAGS=\r
+MAKEFLAGS=\r
+SHELL=${CONFIG_SHELL-/bin/sh}\r
+\r
+# Identity of this package.\r
+PACKAGE_NAME='xboard'\r
+PACKAGE_TARNAME='xboard'\r
+PACKAGE_VERSION='4.4'\r
+PACKAGE_STRING='xboard 4.4'\r
+PACKAGE_BUGREPORT=''\r
+\r
+# Factoring default headers for most tests.\r
+ac_includes_default="\\r
+#include <stdio.h>\r
+#ifdef HAVE_SYS_TYPES_H\r
+# include <sys/types.h>\r
+#endif\r
+#ifdef HAVE_SYS_STAT_H\r
+# include <sys/stat.h>\r
+#endif\r
+#ifdef STDC_HEADERS\r
+# include <stdlib.h>\r
+# include <stddef.h>\r
+#else\r
+# ifdef HAVE_STDLIB_H\r
+#  include <stdlib.h>\r
+# endif\r
+#endif\r
+#ifdef HAVE_STRING_H\r
+# if !defined STDC_HEADERS && defined HAVE_MEMORY_H\r
+#  include <memory.h>\r
+# endif\r
+# include <string.h>\r
+#endif\r
+#ifdef HAVE_STRINGS_H\r
+# include <strings.h>\r
+#endif\r
+#ifdef HAVE_INTTYPES_H\r
+# include <inttypes.h>\r
+#endif\r
+#ifdef HAVE_STDINT_H\r
+# include <stdint.h>\r
+#endif\r
+#ifdef HAVE_UNISTD_H\r
+# include <unistd.h>\r
+#endif"\r
+\r
+ac_subst_vars='SHELL\r
+PATH_SEPARATOR\r
+PACKAGE_NAME\r
+PACKAGE_TARNAME\r
+PACKAGE_VERSION\r
+PACKAGE_STRING\r
+PACKAGE_BUGREPORT\r
+exec_prefix\r
+prefix\r
+program_transform_name\r
+bindir\r
+sbindir\r
+libexecdir\r
+datarootdir\r
+datadir\r
+sysconfdir\r
+sharedstatedir\r
+localstatedir\r
+includedir\r
+oldincludedir\r
+docdir\r
+infodir\r
+htmldir\r
+dvidir\r
+pdfdir\r
+psdir\r
+libdir\r
+localedir\r
+mandir\r
+DEFS\r
+ECHO_C\r
+ECHO_N\r
+ECHO_T\r
+LIBS\r
+build_alias\r
+host_alias\r
+target_alias\r
+INSTALL_PROGRAM\r
+INSTALL_SCRIPT\r
+INSTALL_DATA\r
+am__isrc\r
+CYGPATH_W\r
+PACKAGE\r
+VERSION\r
+ACLOCAL\r
+AUTOCONF\r
+AUTOMAKE\r
+AUTOHEADER\r
+MAKEINFO\r
+install_sh\r
+STRIP\r
+INSTALL_STRIP_PROGRAM\r
+mkdir_p\r
+AWK\r
+SET_MAKE\r
+am__leading_dot\r
+AMTAR\r
+am__tar\r
+am__untar\r
+CC\r
+CFLAGS\r
+LDFLAGS\r
+CPPFLAGS\r
+ac_ct_CC\r
+EXEEXT\r
+OBJEXT\r
+DEPDIR\r
+am__include\r
+am__quote\r
+AMDEP_TRUE\r
+AMDEP_FALSE\r
+AMDEPBACKSLASH\r
+CCDEPMODE\r
+am__fastdepCC_TRUE\r
+am__fastdepCC_FALSE\r
+LIBOBJS\r
+LTLIBOBJS\r
+CPP\r
+LEX\r
+LEX_OUTPUT_ROOT\r
+LEXLIB\r
+RSH\r
+MINFO\r
+NROFF\r
+NROFFFLAGS\r
+AWKPATH\r
+PERLPATH\r
+GREP\r
+EGREP\r
+XMKMF\r
+X_CFLAGS\r
+X_PRE_LIBS\r
+X_LIBS\r
+X_EXTRA_LIBS\r
+XAW_LIBS\r
+build\r
+build_cpu\r
+build_vendor\r
+build_os\r
+host\r
+host_cpu\r
+host_vendor\r
+host_os\r
+PRE_XMULIB\r
+POST_XMULIB\r
+CONF_CFLAGS\r
+CONF_LDFLAGS\r
+ZIPPY_O\r
+ZIPPY_H\r
+PRODUCT\r
+PATCHLEVEL'\r
+ac_subst_files=''\r
+      ac_precious_vars='build_alias\r
+host_alias\r
+target_alias\r
+CC\r
+CFLAGS\r
+LDFLAGS\r
+LIBS\r
+CPPFLAGS\r
+CPP\r
+XMKMF'\r
+\r
+\r
+# Initialize some variables set by options.\r
+ac_init_help=\r
+ac_init_version=false\r
+# The variables have the same names as the options, with\r
+# dashes changed to underlines.\r
+cache_file=/dev/null\r
+exec_prefix=NONE\r
+no_create=\r
+no_recursion=\r
+prefix=NONE\r
+program_prefix=NONE\r
+program_suffix=NONE\r
+program_transform_name=s,x,x,\r
+silent=\r
+site=\r
+srcdir=\r
+verbose=\r
+x_includes=NONE\r
+x_libraries=NONE\r
+\r
+# Installation directory options.\r
+# These are left unexpanded so users can "make install exec_prefix=/foo"\r
+# and all the variables that are supposed to be based on exec_prefix\r
+# by default will actually change.\r
+# Use braces instead of parens because sh, perl, etc. also accept them.\r
+# (The list follows the same order as the GNU Coding Standards.)\r
+bindir='${exec_prefix}/bin'\r
+sbindir='${exec_prefix}/sbin'\r
+libexecdir='${exec_prefix}/libexec'\r
+datarootdir='${prefix}/share'\r
+datadir='${datarootdir}'\r
+sysconfdir='${prefix}/etc'\r
+sharedstatedir='${prefix}/com'\r
+localstatedir='${prefix}/var'\r
+includedir='${prefix}/include'\r
+oldincludedir='/usr/include'\r
+docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'\r
+infodir='${datarootdir}/info'\r
+htmldir='${docdir}'\r
+dvidir='${docdir}'\r
+pdfdir='${docdir}'\r
+psdir='${docdir}'\r
+libdir='${exec_prefix}/lib'\r
+localedir='${datarootdir}/locale'\r
+mandir='${datarootdir}/man'\r
+\r
+ac_prev=\r
+ac_dashdash=\r
+for ac_option\r
+do\r
+  # If the previous option needs an argument, assign it.\r
+  if test -n "$ac_prev"; then\r
+    eval $ac_prev=\$ac_option\r
+    ac_prev=\r
+    continue\r
+  fi\r
+\r
+  case $ac_option in\r
+  *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;\r
+  *)   ac_optarg=yes ;;\r
+  esac\r
+\r
+  # Accept the important Cygnus configure options, so we can diagnose typos.\r
+\r
+  case $ac_dashdash$ac_option in\r
+  --)\r
+    ac_dashdash=yes ;;\r
+\r
+  -bindir | --bindir | --bindi | --bind | --bin | --bi)\r
+    ac_prev=bindir ;;\r
+  -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)\r
+    bindir=$ac_optarg ;;\r
+\r
+  -build | --build | --buil | --bui | --bu)\r
+    ac_prev=build_alias ;;\r
+  -build=* | --build=* | --buil=* | --bui=* | --bu=*)\r
+    build_alias=$ac_optarg ;;\r
+\r
+  -cache-file | --cache-file | --cache-fil | --cache-fi \\r
+  | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)\r
+    ac_prev=cache_file ;;\r
+  -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \\r
+  | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)\r
+    cache_file=$ac_optarg ;;\r
+\r
+  --config-cache | -C)\r
+    cache_file=config.cache ;;\r
+\r
+  -datadir | --datadir | --datadi | --datad)\r
+    ac_prev=datadir ;;\r
+  -datadir=* | --datadir=* | --datadi=* | --datad=*)\r
+    datadir=$ac_optarg ;;\r
+\r
+  -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \\r
+  | --dataroo | --dataro | --datar)\r
+    ac_prev=datarootdir ;;\r
+  -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \\r
+  | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)\r
+    datarootdir=$ac_optarg ;;\r
+\r
+  -disable-* | --disable-*)\r
+    ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'`\r
+    # Reject names that are not valid shell variable names.\r
+    expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null &&\r
+      { echo "$as_me: error: invalid feature name: $ac_feature" >&2\r
+   { (exit 1); exit 1; }; }\r
+    ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'`\r
+    eval enable_$ac_feature=no ;;\r
+\r
+  -docdir | --docdir | --docdi | --doc | --do)\r
+    ac_prev=docdir ;;\r
+  -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)\r
+    docdir=$ac_optarg ;;\r
+\r
+  -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)\r
+    ac_prev=dvidir ;;\r
+  -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)\r
+    dvidir=$ac_optarg ;;\r
+\r
+  -enable-* | --enable-*)\r
+    ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`\r
+    # Reject names that are not valid shell variable names.\r
+    expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null &&\r
+      { echo "$as_me: error: invalid feature name: $ac_feature" >&2\r
+   { (exit 1); exit 1; }; }\r
+    ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'`\r
+    eval enable_$ac_feature=\$ac_optarg ;;\r
+\r
+  -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \\r
+  | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \\r
+  | --exec | --exe | --ex)\r
+    ac_prev=exec_prefix ;;\r
+  -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \\r
+  | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \\r
+  | --exec=* | --exe=* | --ex=*)\r
+    exec_prefix=$ac_optarg ;;\r
+\r
+  -gas | --gas | --ga | --g)\r
+    # Obsolete; use --with-gas.\r
+    with_gas=yes ;;\r
+\r
+  -help | --help | --hel | --he | -h)\r
+    ac_init_help=long ;;\r
+  -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)\r
+    ac_init_help=recursive ;;\r
+  -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)\r
+    ac_init_help=short ;;\r
+\r
+  -host | --host | --hos | --ho)\r
+    ac_prev=host_alias ;;\r
+  -host=* | --host=* | --hos=* | --ho=*)\r
+    host_alias=$ac_optarg ;;\r
+\r
+  -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)\r
+    ac_prev=htmldir ;;\r
+  -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \\r
+  | --ht=*)\r
+    htmldir=$ac_optarg ;;\r
+\r
+  -includedir | --includedir | --includedi | --included | --include \\r
+  | --includ | --inclu | --incl | --inc)\r
+    ac_prev=includedir ;;\r
+  -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \\r
+  | --includ=* | --inclu=* | --incl=* | --inc=*)\r
+    includedir=$ac_optarg ;;\r
+\r
+  -infodir | --infodir | --infodi | --infod | --info | --inf)\r
+    ac_prev=infodir ;;\r
+  -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)\r
+    infodir=$ac_optarg ;;\r
+\r
+  -libdir | --libdir | --libdi | --libd)\r
+    ac_prev=libdir ;;\r
+  -libdir=* | --libdir=* | --libdi=* | --libd=*)\r
+    libdir=$ac_optarg ;;\r
+\r
+  -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \\r
+  | --libexe | --libex | --libe)\r
+    ac_prev=libexecdir ;;\r
+  -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \\r
+  | --libexe=* | --libex=* | --libe=*)\r
+    libexecdir=$ac_optarg ;;\r
+\r
+  -localedir | --localedir | --localedi | --localed | --locale)\r
+    ac_prev=localedir ;;\r
+  -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)\r
+    localedir=$ac_optarg ;;\r
+\r
+  -localstatedir | --localstatedir | --localstatedi | --localstated \\r
+  | --localstate | --localstat | --localsta | --localst | --locals)\r
+    ac_prev=localstatedir ;;\r
+  -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \\r
+  | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)\r
+    localstatedir=$ac_optarg ;;\r
+\r
+  -mandir | --mandir | --mandi | --mand | --man | --ma | --m)\r
+    ac_prev=mandir ;;\r
+  -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)\r
+    mandir=$ac_optarg ;;\r
+\r
+  -nfp | --nfp | --nf)\r
+    # Obsolete; use --without-fp.\r
+    with_fp=no ;;\r
+\r
+  -no-create | --no-create | --no-creat | --no-crea | --no-cre \\r
+  | --no-cr | --no-c | -n)\r
+    no_create=yes ;;\r
+\r
+  -no-recursion | --no-recursion | --no-recursio | --no-recursi \\r
+  | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)\r
+    no_recursion=yes ;;\r
+\r
+  -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \\r
+  | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \\r
+  | --oldin | --oldi | --old | --ol | --o)\r
+    ac_prev=oldincludedir ;;\r
+  -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \\r
+  | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \\r
+  | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)\r
+    oldincludedir=$ac_optarg ;;\r
+\r
+  -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)\r
+    ac_prev=prefix ;;\r
+  -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)\r
+    prefix=$ac_optarg ;;\r
+\r
+  -program-prefix | --program-prefix | --program-prefi | --program-pref \\r
+  | --program-pre | --program-pr | --program-p)\r
+    ac_prev=program_prefix ;;\r
+  -program-prefix=* | --program-prefix=* | --program-prefi=* \\r
+  | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)\r
+    program_prefix=$ac_optarg ;;\r
+\r
+  -program-suffix | --program-suffix | --program-suffi | --program-suff \\r
+  | --program-suf | --program-su | --program-s)\r
+    ac_prev=program_suffix ;;\r
+  -program-suffix=* | --program-suffix=* | --program-suffi=* \\r
+  | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)\r
+    program_suffix=$ac_optarg ;;\r
+\r
+  -program-transform-name | --program-transform-name \\r
+  | --program-transform-nam | --program-transform-na \\r
+  | --program-transform-n | --program-transform- \\r
+  | --program-transform | --program-transfor \\r
+  | --program-transfo | --program-transf \\r
+  | --program-trans | --program-tran \\r
+  | --progr-tra | --program-tr | --program-t)\r
+    ac_prev=program_transform_name ;;\r
+  -program-transform-name=* | --program-transform-name=* \\r
+  | --program-transform-nam=* | --program-transform-na=* \\r
+  | --program-transform-n=* | --program-transform-=* \\r
+  | --program-transform=* | --program-transfor=* \\r
+  | --program-transfo=* | --program-transf=* \\r
+  | --program-trans=* | --program-tran=* \\r
+  | --progr-tra=* | --program-tr=* | --program-t=*)\r
+    program_transform_name=$ac_optarg ;;\r
+\r
+  -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)\r
+    ac_prev=pdfdir ;;\r
+  -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*)\r
+    pdfdir=$ac_optarg ;;\r
+\r
+  -psdir | --psdir | --psdi | --psd | --ps)\r
+    ac_prev=psdir ;;\r
+  -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*)\r
+    psdir=$ac_optarg ;;\r
+\r
+  -q | -quiet | --quiet | --quie | --qui | --qu | --q \\r
+  | -silent | --silent | --silen | --sile | --sil)\r
+    silent=yes ;;\r
+\r
+  -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)\r
+    ac_prev=sbindir ;;\r
+  -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \\r
+  | --sbi=* | --sb=*)\r
+    sbindir=$ac_optarg ;;\r
+\r
+  -sharedstatedir | --sharedstatedir | --sharedstatedi \\r
+  | --sharedstated | --sharedstate | --sharedstat | --sharedsta \\r
+  | --sharedst | --shareds | --shared | --share | --shar \\r
+  | --sha | --sh)\r
+    ac_prev=sharedstatedir ;;\r
+  -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \\r
+  | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \\r
+  | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \\r
+  | --sha=* | --sh=*)\r
+    sharedstatedir=$ac_optarg ;;\r
+\r
+  -site | --site | --sit)\r
+    ac_prev=site ;;\r
+  -site=* | --site=* | --sit=*)\r
+    site=$ac_optarg ;;\r
+\r
+  -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)\r
+    ac_prev=srcdir ;;\r
+  -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)\r
+    srcdir=$ac_optarg ;;\r
+\r
+  -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \\r
+  | --syscon | --sysco | --sysc | --sys | --sy)\r
+    ac_prev=sysconfdir ;;\r
+  -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \\r
+  | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)\r
+    sysconfdir=$ac_optarg ;;\r
+\r
+  -target | --target | --targe | --targ | --tar | --ta | --t)\r
+    ac_prev=target_alias ;;\r
+  -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)\r
+    target_alias=$ac_optarg ;;\r
+\r
+  -v | -verbose | --verbose | --verbos | --verbo | --verb)\r
+    verbose=yes ;;\r
+\r
+  -version | --version | --versio | --versi | --vers | -V)\r
+    ac_init_version=: ;;\r
+\r
+  -with-* | --with-*)\r
+    ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`\r
+    # Reject names that are not valid shell variable names.\r
+    expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null &&\r
+      { echo "$as_me: error: invalid package name: $ac_package" >&2\r
+   { (exit 1); exit 1; }; }\r
+    ac_package=`echo $ac_package | sed 's/[-.]/_/g'`\r
+    eval with_$ac_package=\$ac_optarg ;;\r
+\r
+  -without-* | --without-*)\r
+    ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'`\r
+    # Reject names that are not valid shell variable names.\r
+    expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null &&\r
+      { echo "$as_me: error: invalid package name: $ac_package" >&2\r
+   { (exit 1); exit 1; }; }\r
+    ac_package=`echo $ac_package | sed 's/[-.]/_/g'`\r
+    eval with_$ac_package=no ;;\r
+\r
+  --x)\r
+    # Obsolete; use --with-x.\r
+    with_x=yes ;;\r
+\r
+  -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \\r
+  | --x-incl | --x-inc | --x-in | --x-i)\r
+    ac_prev=x_includes ;;\r
+  -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \\r
+  | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)\r
+    x_includes=$ac_optarg ;;\r
+\r
+  -x-libraries | --x-libraries | --x-librarie | --x-librari \\r
+  | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)\r
+    ac_prev=x_libraries ;;\r
+  -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \\r
+  | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)\r
+    x_libraries=$ac_optarg ;;\r
+\r
+  -*) { echo "$as_me: error: unrecognized option: $ac_option\r
+Try \`$0 --help' for more information." >&2\r
+   { (exit 1); exit 1; }; }\r
+    ;;\r
+\r
+  *=*)\r
+    ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`\r
+    # Reject names that are not valid shell variable names.\r
+    expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null &&\r
+      { echo "$as_me: error: invalid variable name: $ac_envvar" >&2\r
+   { (exit 1); exit 1; }; }\r
+    eval $ac_envvar=\$ac_optarg\r
+    export $ac_envvar ;;\r
+\r
+  *)\r
+    # FIXME: should be removed in autoconf 3.0.\r
+    echo "$as_me: WARNING: you should use --build, --host, --target" >&2\r
+    expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&\r
+      echo "$as_me: WARNING: invalid host type: $ac_option" >&2\r
+    : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}\r
+    ;;\r
+\r
+  esac\r
+done\r
+\r
+if test -n "$ac_prev"; then\r
+  ac_option=--`echo $ac_prev | sed 's/_/-/g'`\r
+  { echo "$as_me: error: missing argument to $ac_option" >&2\r
+   { (exit 1); exit 1; }; }\r
+fi\r
+\r
+# Be sure to have absolute directory names.\r
+for ac_var in  exec_prefix prefix bindir sbindir libexecdir datarootdir \\r
+               datadir sysconfdir sharedstatedir localstatedir includedir \\r
+               oldincludedir docdir infodir htmldir dvidir pdfdir psdir \\r
+               libdir localedir mandir\r
+do\r
+  eval ac_val=\$$ac_var\r
+  case $ac_val in\r
+    [\\/$]* | ?:[\\/]* )  continue;;\r
+    NONE | '' ) case $ac_var in *prefix ) continue;; esac;;\r
+  esac\r
+  { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2\r
+   { (exit 1); exit 1; }; }\r
+done\r
+\r
+# There might be people who depend on the old broken behavior: `$host'\r
+# used to hold the argument of --host etc.\r
+# FIXME: To remove some day.\r
+build=$build_alias\r
+host=$host_alias\r
+target=$target_alias\r
+\r
+# FIXME: To remove some day.\r
+if test "x$host_alias" != x; then\r
+  if test "x$build_alias" = x; then\r
+    cross_compiling=maybe\r
+    echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host.\r
+    If a cross compiler is detected then cross compile mode will be used." >&2\r
+  elif test "x$build_alias" != "x$host_alias"; then\r
+    cross_compiling=yes\r
+  fi\r
+fi\r
+\r
+ac_tool_prefix=\r
+test -n "$host_alias" && ac_tool_prefix=$host_alias-\r
+\r
+test "$silent" = yes && exec 6>/dev/null\r
+\r
+\r
+ac_pwd=`pwd` && test -n "$ac_pwd" &&\r
+ac_ls_di=`ls -di .` &&\r
+ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||\r
+  { echo "$as_me: error: Working directory cannot be determined" >&2\r
+   { (exit 1); exit 1; }; }\r
+test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||\r
+  { echo "$as_me: error: pwd does not report name of working directory" >&2\r
+   { (exit 1); exit 1; }; }\r
+\r
+\r
+# Find the source files, if location was not specified.\r
+if test -z "$srcdir"; then\r
+  ac_srcdir_defaulted=yes\r
+  # Try the directory containing this script, then the parent directory.\r
+  ac_confdir=`$as_dirname -- "$0" ||\r
+$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \\r
+        X"$0" : 'X\(//\)[^/]' \| \\r
+        X"$0" : 'X\(//\)$' \| \\r
+        X"$0" : 'X\(/\)' \| . 2>/dev/null ||\r
+echo X"$0" |\r
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{\r
+           s//\1/\r
+           q\r
+         }\r
+         /^X\(\/\/\)[^/].*/{\r
+           s//\1/\r
+           q\r
+         }\r
+         /^X\(\/\/\)$/{\r
+           s//\1/\r
+           q\r
+         }\r
+         /^X\(\/\).*/{\r
+           s//\1/\r
+           q\r
+         }\r
+         s/.*/./; q'`\r
+  srcdir=$ac_confdir\r
+  if test ! -r "$srcdir/$ac_unique_file"; then\r
+    srcdir=..\r
+  fi\r
+else\r
+  ac_srcdir_defaulted=no\r
+fi\r
+if test ! -r "$srcdir/$ac_unique_file"; then\r
+  test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."\r
+  { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2\r
+   { (exit 1); exit 1; }; }\r
+fi\r
+ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"\r
+ac_abs_confdir=`(\r
+       cd "$srcdir" && test -r "./$ac_unique_file" || { echo "$as_me: error: $ac_msg" >&2\r
+   { (exit 1); exit 1; }; }\r
+       pwd)`\r
+# When building in place, set srcdir=.\r
+if test "$ac_abs_confdir" = "$ac_pwd"; then\r
+  srcdir=.\r
+fi\r
+# Remove unnecessary trailing slashes from srcdir.\r
+# Double slashes in file names in object file debugging info\r
+# mess up M-x gdb in Emacs.\r
+case $srcdir in\r
+*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;;\r
+esac\r
+for ac_var in $ac_precious_vars; do\r
+  eval ac_env_${ac_var}_set=\${${ac_var}+set}\r
+  eval ac_env_${ac_var}_value=\$${ac_var}\r
+  eval ac_cv_env_${ac_var}_set=\${${ac_var}+set}\r
+  eval ac_cv_env_${ac_var}_value=\$${ac_var}\r
+done\r
+\r
+#\r
+# Report the --help message.\r
+#\r
+if test "$ac_init_help" = "long"; then\r
+  # Omit some internal or obsolete options to make the list less imposing.\r
+  # This message is too long to be a string in the A/UX 3.1 sh.\r
+  cat <<_ACEOF\r
+\`configure' configures xboard 4.3 to adapt to many kinds of systems.\r
+\r
+Usage: $0 [OPTION]... [VAR=VALUE]...\r
+\r
+To assign environment variables (e.g., CC, CFLAGS...), specify them as\r
+VAR=VALUE.  See below for descriptions of some of the useful variables.\r
+\r
+Defaults for the options are specified in brackets.\r
+\r
+Configuration:\r
+  -h, --help              display this help and exit\r
+      --help=short        display options specific to this package\r
+      --help=recursive    display the short help of all the included packages\r
+  -V, --version           display version information and exit\r
+  -q, --quiet, --silent   do not print \`checking...' messages\r
+      --cache-file=FILE   cache test results in FILE [disabled]\r
+  -C, --config-cache      alias for \`--cache-file=config.cache'\r
+  -n, --no-create         do not create output files\r
+      --srcdir=DIR        find the sources in DIR [configure dir or \`..']\r
+\r
+Installation directories:\r
+  --prefix=PREFIX         install architecture-independent files in PREFIX\r
+                         [$ac_default_prefix]\r
+  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX\r
+                         [PREFIX]\r
+\r
+By default, \`make install' will install all the files in\r
+\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc.  You can specify\r
+an installation prefix other than \`$ac_default_prefix' using \`--prefix',\r
+for instance \`--prefix=\$HOME'.\r
+\r
+For better control, use the options below.\r
+\r
+Fine tuning of the installation directories:\r
+  --bindir=DIR           user executables [EPREFIX/bin]\r
+  --sbindir=DIR          system admin executables [EPREFIX/sbin]\r
+  --libexecdir=DIR       program executables [EPREFIX/libexec]\r
+  --sysconfdir=DIR       read-only single-machine data [PREFIX/etc]\r
+  --sharedstatedir=DIR   modifiable architecture-independent data [PREFIX/com]\r
+  --localstatedir=DIR    modifiable single-machine data [PREFIX/var]\r
+  --libdir=DIR           object code libraries [EPREFIX/lib]\r
+  --includedir=DIR       C header files [PREFIX/include]\r
+  --oldincludedir=DIR    C header files for non-gcc [/usr/include]\r
+  --datarootdir=DIR      read-only arch.-independent data root [PREFIX/share]\r
+  --datadir=DIR          read-only architecture-independent data [DATAROOTDIR]\r
+  --infodir=DIR          info documentation [DATAROOTDIR/info]\r
+  --localedir=DIR        locale-dependent data [DATAROOTDIR/locale]\r
+  --mandir=DIR           man documentation [DATAROOTDIR/man]\r
+  --docdir=DIR           documentation root [DATAROOTDIR/doc/xboard]\r
+  --htmldir=DIR          html documentation [DOCDIR]\r
+  --dvidir=DIR           dvi documentation [DOCDIR]\r
+  --pdfdir=DIR           pdf documentation [DOCDIR]\r
+  --psdir=DIR            ps documentation [DOCDIR]\r
+_ACEOF\r
+\r
+  cat <<\_ACEOF\r
+\r
+Program names:\r
+  --program-prefix=PREFIX            prepend PREFIX to installed program names\r
+  --program-suffix=SUFFIX            append SUFFIX to installed program names\r
+  --program-transform-name=PROGRAM   run sed PROGRAM on installed program names\r
+\r
+X features:\r
+  --x-includes=DIR    X include files are in DIR\r
+  --x-libraries=DIR   X library files are in DIR\r
+\r
+System types:\r
+  --build=BUILD     configure for building on BUILD [guessed]\r
+  --host=HOST       cross-compile to build programs to run on HOST [BUILD]\r
+_ACEOF\r
+fi\r
+\r
+if test -n "$ac_init_help"; then\r
+  case $ac_init_help in\r
+     short | recursive ) echo "Configuration of xboard 4.3:";;\r
+   esac\r
+  cat <<\_ACEOF\r
+\r
+Optional Features:\r
+  --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)\r
+  --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]\r
+  --disable-dependency-tracking  speeds up one-time build\r
+  --enable-dependency-tracking   do not reject slow dependency extractors\r
+  --enable-xpm            libXpm will be used if found (default)\r
+  --disable-xpm           libXpm will not be used\r
+  --enable-ptys           force use of pseudo-ttys with child processes\r
+  --disable-ptys          force use of pipes with child processes\r
+  --enable-zippy          support interfacing a chess program to ICS (default)\r
+  --disable-zippy         do not support interfacing a chess program to ICS\r
+  --enable-sigint         sending SIGINT (^C) wakes up GNU Chess (default)\r
+  --disable-sigint        typing a command wakes up GNU Chess\r
+\r
+Optional Packages:\r
+  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]\r
+  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)\r
+  --with-x                use the X Window System\r
+  --with-Xaw3d            use Xaw3d instead of Xaw\r
+\r
+Some influential environment variables:\r
+  CC          C compiler command\r
+  CFLAGS      C compiler flags\r
+  LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a\r
+              nonstandard directory <lib dir>\r
+  LIBS        libraries to pass to the linker, e.g. -l<library>\r
+  CPPFLAGS    C/C++/Objective C preprocessor flags, e.g. -I<include dir> if\r
+              you have headers in a nonstandard directory <include dir>\r
+  CPP         C preprocessor\r
+  XMKMF       Path to xmkmf, Makefile generator for X Window System\r
+\r
+Use these variables to override the choices made by `configure' or to help\r
+it to find libraries and programs with nonstandard names/locations.\r
+\r
+_ACEOF\r
+ac_status=$?\r
+fi\r
+\r
+if test "$ac_init_help" = "recursive"; then\r
+  # If there are subdirs, report their specific --help.\r
+  for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue\r
+    test -d "$ac_dir" || continue\r
+    ac_builddir=.\r
+\r
+case "$ac_dir" in\r
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;\r
+*)\r
+  ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`\r
+  # A ".." for each directory in $ac_dir_suffix.\r
+  ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'`\r
+  case $ac_top_builddir_sub in\r
+  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;\r
+  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;\r
+  esac ;;\r
+esac\r
+ac_abs_top_builddir=$ac_pwd\r
+ac_abs_builddir=$ac_pwd$ac_dir_suffix\r
+# for backward compatibility:\r
+ac_top_builddir=$ac_top_build_prefix\r
+\r
+case $srcdir in\r
+  .)  # We are building in place.\r
+    ac_srcdir=.\r
+    ac_top_srcdir=$ac_top_builddir_sub\r
+    ac_abs_top_srcdir=$ac_pwd ;;\r
+  [\\/]* | ?:[\\/]* )  # Absolute name.\r
+    ac_srcdir=$srcdir$ac_dir_suffix;\r
+    ac_top_srcdir=$srcdir\r
+    ac_abs_top_srcdir=$srcdir ;;\r
+  *) # Relative name.\r
+    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix\r
+    ac_top_srcdir=$ac_top_build_prefix$srcdir\r
+    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;\r
+esac\r
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix\r
+\r
+    cd "$ac_dir" || { ac_status=$?; continue; }\r
+    # Check for guested configure.\r
+    if test -f "$ac_srcdir/configure.gnu"; then\r
+      echo &&\r
+      $SHELL "$ac_srcdir/configure.gnu" --help=recursive\r
+    elif test -f "$ac_srcdir/configure"; then\r
+      echo &&\r
+      $SHELL "$ac_srcdir/configure" --help=recursive\r
+    else\r
+      echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2\r
+    fi || ac_status=$?\r
+    cd "$ac_pwd" || { ac_status=$?; break; }\r
+  done\r
+fi\r
+\r
+test -n "$ac_init_help" && exit $ac_status\r
+if $ac_init_version; then\r
+  cat <<\_ACEOF\r
+xboard configure 4.3\r
+generated by GNU Autoconf 2.61\r
+\r
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,\r
+2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.\r
+This configure script is free software; the Free Software Foundation\r
+gives unlimited permission to copy, distribute and modify it.\r
+_ACEOF\r
+  exit\r
+fi\r
+cat >config.log <<_ACEOF\r
+This file contains any messages produced by compilers while\r
+running configure, to aid debugging if configure makes a mistake.\r
+\r
+It was created by xboard $as_me 4.3, which was\r
+generated by GNU Autoconf 2.61.  Invocation command line was\r
+\r
+  $ $0 $@\r
+\r
+_ACEOF\r
+exec 5>>config.log\r
+{\r
+cat <<_ASUNAME\r
+## --------- ##\r
+## Platform. ##\r
+## --------- ##\r
+\r
+hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`\r
+uname -m = `(uname -m) 2>/dev/null || echo unknown`\r
+uname -r = `(uname -r) 2>/dev/null || echo unknown`\r
+uname -s = `(uname -s) 2>/dev/null || echo unknown`\r
+uname -v = `(uname -v) 2>/dev/null || echo unknown`\r
+\r
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`\r
+/bin/uname -X     = `(/bin/uname -X) 2>/dev/null     || echo unknown`\r
+\r
+/bin/arch              = `(/bin/arch) 2>/dev/null              || echo unknown`\r
+/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null       || echo unknown`\r
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`\r
+/usr/bin/hostinfo      = `(/usr/bin/hostinfo) 2>/dev/null      || echo unknown`\r
+/bin/machine           = `(/bin/machine) 2>/dev/null           || echo unknown`\r
+/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null       || echo unknown`\r
+/bin/universe          = `(/bin/universe) 2>/dev/null          || echo unknown`\r
+\r
+_ASUNAME\r
+\r
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR\r
+for as_dir in $PATH\r
+do\r
+  IFS=$as_save_IFS\r
+  test -z "$as_dir" && as_dir=.\r
+  echo "PATH: $as_dir"\r
+done\r
+IFS=$as_save_IFS\r
+\r
+} >&5\r
+\r
+cat >&5 <<_ACEOF\r
+\r
+\r
+## ----------- ##\r
+## Core tests. ##\r
+## ----------- ##\r
+\r
+_ACEOF\r
+\r
+\r
+# Keep a trace of the command line.\r
+# Strip out --no-create and --no-recursion so they do not pile up.\r
+# Strip out --silent because we don't want to record it for future runs.\r
+# Also quote any args containing shell meta-characters.\r
+# Make two passes to allow for proper duplicate-argument suppression.\r
+ac_configure_args=\r
+ac_configure_args0=\r
+ac_configure_args1=\r
+ac_must_keep_next=false\r
+for ac_pass in 1 2\r
+do\r
+  for ac_arg\r
+  do\r
+    case $ac_arg in\r
+    -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;\r
+    -q | -quiet | --quiet | --quie | --qui | --qu | --q \\r
+    | -silent | --silent | --silen | --sile | --sil)\r
+      continue ;;\r
+    *\'*)\r
+      ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;\r
+    esac\r
+    case $ac_pass in\r
+    1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;;\r
+    2)\r
+      ac_configure_args1="$ac_configure_args1 '$ac_arg'"\r
+      if test $ac_must_keep_next = true; then\r
+       ac_must_keep_next=false # Got value, back to normal.\r
+      else\r
+       case $ac_arg in\r
+         *=* | --config-cache | -C | -disable-* | --disable-* \\r
+         | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \\r
+         | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \\r
+         | -with-* | --with-* | -without-* | --without-* | --x)\r
+           case "$ac_configure_args0 " in\r
+             "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;\r
+           esac\r
+           ;;\r
+         -* ) ac_must_keep_next=true ;;\r
+       esac\r
+      fi\r
+      ac_configure_args="$ac_configure_args '$ac_arg'"\r
+      ;;\r
+    esac\r
+  done\r
+done\r
+$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; }\r
+$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; }\r
+\r
+# When interrupted or exit'd, cleanup temporary files, and complete\r
+# config.log.  We remove comments because anyway the quotes in there\r
+# would cause problems or look ugly.\r
+# WARNING: Use '\'' to represent an apostrophe within the trap.\r
+# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.\r
+trap 'exit_status=$?\r
+  # Save into config.log some information that might help in debugging.\r
+  {\r
+    echo\r
+\r
+    cat <<\_ASBOX\r
+## ---------------- ##\r
+## Cache variables. ##\r
+## ---------------- ##\r
+_ASBOX\r
+    echo\r
+    # The following way of writing the cache mishandles newlines in values,\r
+(\r
+  for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do\r
+    eval ac_val=\$$ac_var\r
+    case $ac_val in #(\r
+    *${as_nl}*)\r
+      case $ac_var in #(\r
+      *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5\r
+echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;;\r
+      esac\r
+      case $ac_var in #(\r
+      _ | IFS | as_nl) ;; #(\r
+      *) $as_unset $ac_var ;;\r
+      esac ;;\r
+    esac\r
+  done\r
+  (set) 2>&1 |\r
+    case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(\r
+    *${as_nl}ac_space=\ *)\r
+      sed -n \\r
+       "s/'\''/'\''\\\\'\'''\''/g;\r
+         s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p"\r
+      ;; #(\r
+    *)\r
+      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"\r
+      ;;\r
+    esac |\r
+    sort\r
+)\r
+    echo\r
+\r
+    cat <<\_ASBOX\r
+## ----------------- ##\r
+## Output variables. ##\r
+## ----------------- ##\r
+_ASBOX\r
+    echo\r
+    for ac_var in $ac_subst_vars\r
+    do\r
+      eval ac_val=\$$ac_var\r
+      case $ac_val in\r
+      *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;\r
+      esac\r
+      echo "$ac_var='\''$ac_val'\''"\r
+    done | sort\r
+    echo\r
+\r
+    if test -n "$ac_subst_files"; then\r
+      cat <<\_ASBOX\r
+## ------------------- ##\r
+## File substitutions. ##\r
+## ------------------- ##\r
+_ASBOX\r
+      echo\r
+      for ac_var in $ac_subst_files\r
+      do\r
+       eval ac_val=\$$ac_var\r
+       case $ac_val in\r
+       *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;\r
+       esac\r
+       echo "$ac_var='\''$ac_val'\''"\r
+      done | sort\r
+      echo\r
+    fi\r
+\r
+    if test -s confdefs.h; then\r
+      cat <<\_ASBOX\r
+## ----------- ##\r
+## confdefs.h. ##\r
+## ----------- ##\r
+_ASBOX\r
+      echo\r
+      cat confdefs.h\r
+      echo\r
+    fi\r
+    test "$ac_signal" != 0 &&\r
+      echo "$as_me: caught signal $ac_signal"\r
+    echo "$as_me: exit $exit_status"\r
+  } >&5\r
+  rm -f core *.core core.conftest.* &&\r
+    rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&\r
+    exit $exit_status\r
+' 0\r
+for ac_signal in 1 2 13 15; do\r
+  trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal\r
+done\r
+ac_signal=0\r
+\r
+# confdefs.h avoids OS command line length limits that DEFS can exceed.\r
+rm -f -r conftest* confdefs.h\r
+\r
+# Predefined preprocessor variables.\r
+\r
+cat >>confdefs.h <<_ACEOF\r
+#define PACKAGE_NAME "$PACKAGE_NAME"\r
+_ACEOF\r
+\r
+\r
+cat >>confdefs.h <<_ACEOF\r
+#define PACKAGE_TARNAME "$PACKAGE_TARNAME"\r
+_ACEOF\r
+\r
+\r
+cat >>confdefs.h <<_ACEOF\r
+#define PACKAGE_VERSION "$PACKAGE_VERSION"\r
+_ACEOF\r
+\r
+\r
+cat >>confdefs.h <<_ACEOF\r
+#define PACKAGE_STRING "$PACKAGE_STRING"\r
+_ACEOF\r
+\r
+\r
+cat >>confdefs.h <<_ACEOF\r
+#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"\r
+_ACEOF\r
+\r
+\r
+# Let the site file select an alternate cache file if it wants to.\r
+# Prefer explicitly selected file to automatically selected ones.\r
+if test -n "$CONFIG_SITE"; then\r
+  set x "$CONFIG_SITE"\r
+elif test "x$prefix" != xNONE; then\r
+  set x "$prefix/share/config.site" "$prefix/etc/config.site"\r
+else\r
+  set x "$ac_default_prefix/share/config.site" \\r
+       "$ac_default_prefix/etc/config.site"\r
+fi\r
+shift\r
+for ac_site_file\r
+do\r
+  if test -r "$ac_site_file"; then\r
+    { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5\r
+echo "$as_me: loading site script $ac_site_file" >&6;}\r
+    sed 's/^/| /' "$ac_site_file" >&5\r
+    . "$ac_site_file"\r
+  fi\r
+done\r
+\r
+if test -r "$cache_file"; then\r
+  # Some versions of bash will fail to source /dev/null (special\r
+  # files actually), so we avoid doing that.\r
+  if test -f "$cache_file"; then\r
+    { echo "$as_me:$LINENO: loading cache $cache_file" >&5\r
+echo "$as_me: loading cache $cache_file" >&6;}\r
+    case $cache_file in\r
+      [\\/]* | ?:[\\/]* ) . "$cache_file";;\r
+      *)                      . "./$cache_file";;\r
+    esac\r
+  fi\r
+else\r
+  { echo "$as_me:$LINENO: creating cache $cache_file" >&5\r
+echo "$as_me: creating cache $cache_file" >&6;}\r
+  >$cache_file\r
+fi\r
+\r
+# Check that the precious variables saved in the cache have kept the same\r
+# value.\r
+ac_cache_corrupted=false\r
+for ac_var in $ac_precious_vars; do\r
+  eval ac_old_set=\$ac_cv_env_${ac_var}_set\r
+  eval ac_new_set=\$ac_env_${ac_var}_set\r
+  eval ac_old_val=\$ac_cv_env_${ac_var}_value\r
+  eval ac_new_val=\$ac_env_${ac_var}_value\r
+  case $ac_old_set,$ac_new_set in\r
+    set,)\r
+      { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5\r
+echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}\r
+      ac_cache_corrupted=: ;;\r
+    ,set)\r
+      { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5\r
+echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}\r
+      ac_cache_corrupted=: ;;\r
+    ,);;\r
+    *)\r
+      if test "x$ac_old_val" != "x$ac_new_val"; then\r
+       { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5\r
+echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}\r
+       { echo "$as_me:$LINENO:   former value:  $ac_old_val" >&5\r
+echo "$as_me:   former value:  $ac_old_val" >&2;}\r
+       { echo "$as_me:$LINENO:   current value: $ac_new_val" >&5\r
+echo "$as_me:   current value: $ac_new_val" >&2;}\r
+       ac_cache_corrupted=:\r
+      fi;;\r
+  esac\r
+  # Pass precious variables to config.status.\r
+  if test "$ac_new_set" = set; then\r
+    case $ac_new_val in\r
+    *\'*) ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;\r
+    *) ac_arg=$ac_var=$ac_new_val ;;\r
+    esac\r
+    case " $ac_configure_args " in\r
+      *" '$ac_arg' "*) ;; # Avoid dups.  Use of quotes ensures accuracy.\r
+      *) ac_configure_args="$ac_configure_args '$ac_arg'" ;;\r
+    esac\r
+  fi\r
+done\r
+if $ac_cache_corrupted; then\r
+  { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5\r
+echo "$as_me: error: changes in the environment can compromise the build" >&2;}\r
+  { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5\r
+echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;}\r
+   { (exit 1); exit 1; }; }\r
+fi\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+ac_ext=c\r
+ac_cpp='$CPP $CPPFLAGS'\r
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'\r
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'\r
+ac_compiler_gnu=$ac_cv_c_compiler_gnu\r
+\r
+\r
+am__api_version='1.10'\r
+\r
+ac_aux_dir=\r
+for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do\r
+  if test -f "$ac_dir/install-sh"; then\r
+    ac_aux_dir=$ac_dir\r
+    ac_install_sh="$ac_aux_dir/install-sh -c"\r
+    break\r
+  elif test -f "$ac_dir/install.sh"; then\r
+    ac_aux_dir=$ac_dir\r
+    ac_install_sh="$ac_aux_dir/install.sh -c"\r
+    break\r
+  elif test -f "$ac_dir/shtool"; then\r
+    ac_aux_dir=$ac_dir\r
+    ac_install_sh="$ac_aux_dir/shtool install -c"\r
+    break\r
+  fi\r
+done\r
+if test -z "$ac_aux_dir"; then\r
+  { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&5\r
+echo "$as_me: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&2;}\r
+   { (exit 1); exit 1; }; }\r
+fi\r
+\r
+# These three variables are undocumented and unsupported,\r
+# and are intended to be withdrawn in a future Autoconf release.\r
+# They can cause serious problems if a builder's source tree is in a directory\r
+# whose full name contains unusual characters.\r
+ac_config_guess="$SHELL $ac_aux_dir/config.guess"  # Please don't use this var.\r
+ac_config_sub="$SHELL $ac_aux_dir/config.sub"  # Please don't use this var.\r
+ac_configure="$SHELL $ac_aux_dir/configure"  # Please don't use this var.\r
+\r
+\r
+# Find a good install program.  We prefer a C program (faster),\r
+# so one script is as good as another.  But avoid the broken or\r
+# incompatible versions:\r
+# SysV /etc/install, /usr/sbin/install\r
+# SunOS /usr/etc/install\r
+# IRIX /sbin/install\r
+# AIX /bin/install\r
+# AmigaOS /C/install, which installs bootblocks on floppy discs\r
+# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag\r
+# AFS /usr/afsws/bin/install, which mishandles nonexistent args\r
+# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"\r
+# OS/2's system install, which has a completely different semantic\r
+# ./install, which can be erroneously created by make from ./install.sh.\r
+{ echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5\r
+echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6; }\r
+if test -z "$INSTALL"; then\r
+if test "${ac_cv_path_install+set}" = set; then\r
+  echo $ECHO_N "(cached) $ECHO_C" >&6\r
+else\r
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR\r
+for as_dir in $PATH\r
+do\r
+  IFS=$as_save_IFS\r
+  test -z "$as_dir" && as_dir=.\r
+  # Account for people who put trailing slashes in PATH elements.\r
+case $as_dir/ in\r
+  ./ | .// | /cC/* | \\r
+  /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \\r
+  ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \\r
+  /usr/ucb/* ) ;;\r
+  *)\r
+    # OSF1 and SCO ODT 3.0 have their own names for install.\r
+    # Don't use installbsd from OSF since it installs stuff as root\r
+    # by default.\r
+    for ac_prog in ginstall scoinst install; do\r
+      for ac_exec_ext in '' $ac_executable_extensions; do\r
+       if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then\r
+         if test $ac_prog = install &&\r
+           grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then\r
+           # AIX install.  It has an incompatible calling convention.\r
+           :\r
+         elif test $ac_prog = install &&\r
+           grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then\r
+           # program-specific install script used by HP pwplus--don't use.\r
+           :\r
+         else\r
+           ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"\r
+           break 3\r
+         fi\r
+       fi\r
+      done\r
+    done\r
+    ;;\r
+esac\r
+done\r
+IFS=$as_save_IFS\r
+\r
+\r
+fi\r
+  if test "${ac_cv_path_install+set}" = set; then\r
+    INSTALL=$ac_cv_path_install\r
+  else\r
+    # As a last resort, use the slow shell script.  Don't cache a\r
+    # value for INSTALL within a source directory, because that will\r
+    # break other packages using the cache if that directory is\r
+    # removed, or if the value is a relative name.\r
+    INSTALL=$ac_install_sh\r
+  fi\r
+fi\r
+{ echo "$as_me:$LINENO: result: $INSTALL" >&5\r
+echo "${ECHO_T}$INSTALL" >&6; }\r
+\r
+# Use test -z because SunOS4 sh mishandles braces in ${var-val}.\r
+# It thinks the first close brace ends the variable substitution.\r
+test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'\r
+\r
+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'\r
+\r
+test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'\r
+\r
+{ echo "$as_me:$LINENO: checking whether build environment is sane" >&5\r
+echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6; }\r
+# Just in case\r
+sleep 1\r
+echo timestamp > conftest.file\r
+# Do `set' in a subshell so we don't clobber the current shell's\r
+# arguments.  Must try -L first in case configure is actually a\r
+# symlink; some systems play weird games with the mod time of symlinks\r
+# (eg FreeBSD returns the mod time of the symlink's containing\r
+# directory).\r
+if (\r
+   set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null`\r
+   if test "$*" = "X"; then\r
+      # -L didn't work.\r
+      set X `ls -t $srcdir/configure conftest.file`\r
+   fi\r
+   rm -f conftest.file\r
+   if test "$*" != "X $srcdir/configure conftest.file" \\r
+      && test "$*" != "X conftest.file $srcdir/configure"; then\r
+\r
+      # If neither matched, then we have a broken ls.  This can happen\r
+      # if, for instance, CONFIG_SHELL is bash and it inherits a\r
+      # broken ls alias from the environment.  This has actually\r
+      # happened.  Such a system could not be considered "sane".\r
+      { { echo "$as_me:$LINENO: error: ls -t appears to fail.  Make sure there is not a broken\r
+alias in your environment" >&5\r
+echo "$as_me: error: ls -t appears to fail.  Make sure there is not a broken\r
+alias in your environment" >&2;}\r
+   { (exit 1); exit 1; }; }\r
+   fi\r
+\r
+   test "$2" = conftest.file\r
+   )\r
+then\r
+   # Ok.\r
+   :\r
+else\r
+   { { echo "$as_me:$LINENO: error: newly created file is older than distributed files!\r
+Check your system clock" >&5\r
+echo "$as_me: error: newly created file is older than distributed files!\r
+Check your system clock" >&2;}\r
+   { (exit 1); exit 1; }; }\r
+fi\r
+{ echo "$as_me:$LINENO: result: yes" >&5\r
+echo "${ECHO_T}yes" >&6; }\r
+test "$program_prefix" != NONE &&\r
+  program_transform_name="s&^&$program_prefix&;$program_transform_name"\r
+# Use a double $ so make ignores it.\r
+test "$program_suffix" != NONE &&\r
+  program_transform_name="s&\$&$program_suffix&;$program_transform_name"\r
+# Double any \ or $.  echo might interpret backslashes.\r
+# By default was `s,x,x', remove it if useless.\r
+cat <<\_ACEOF >conftest.sed\r
+s/[\\$]/&&/g;s/;s,x,x,$//\r
+_ACEOF\r
+program_transform_name=`echo $program_transform_name | sed -f conftest.sed`\r
+rm -f conftest.sed\r
+\r
+# expand $ac_aux_dir to an absolute path\r
+am_aux_dir=`cd $ac_aux_dir && pwd`\r
+\r
+test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing"\r
+# Use eval to expand $SHELL\r
+if eval "$MISSING --run true"; then\r
+  am_missing_run="$MISSING --run "\r
+else\r
+  am_missing_run=\r
+  { echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5\r
+echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;}\r
+fi\r
+\r
+{ echo "$as_me:$LINENO: checking for a thread-safe mkdir -p" >&5\r
+echo $ECHO_N "checking for a thread-safe mkdir -p... $ECHO_C" >&6; }\r
+if test -z "$MKDIR_P"; then\r
+  if test "${ac_cv_path_mkdir+set}" = set; then\r
+  echo $ECHO_N "(cached) $ECHO_C" >&6\r
+else\r
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR\r
+for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin\r
+do\r
+  IFS=$as_save_IFS\r
+  test -z "$as_dir" && as_dir=.\r
+  for ac_prog in mkdir gmkdir; do\r
+        for ac_exec_ext in '' $ac_executable_extensions; do\r
+          { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue\r
+          case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #(\r
+            'mkdir (GNU coreutils) '* | \\r
+            'mkdir (coreutils) '* | \\r
+            'mkdir (fileutils) '4.1*)\r
+              ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext\r
+              break 3;;\r
+          esac\r
+        done\r
+       done\r
+done\r
+IFS=$as_save_IFS\r
+\r
+fi\r
+\r
+  if test "${ac_cv_path_mkdir+set}" = set; then\r
+    MKDIR_P="$ac_cv_path_mkdir -p"\r
+  else\r
+    # As a last resort, use the slow shell script.  Don't cache a\r
+    # value for MKDIR_P within a source directory, because that will\r
+    # break other packages using the cache if that directory is\r
+    # removed, or if the value is a relative name.\r
+    test -d ./--version && rmdir ./--version\r
+    MKDIR_P="$ac_install_sh -d"\r
+  fi\r
+fi\r
+{ echo "$as_me:$LINENO: result: $MKDIR_P" >&5\r
+echo "${ECHO_T}$MKDIR_P" >&6; }\r
+\r
+mkdir_p="$MKDIR_P"\r
+case $mkdir_p in\r
+  [\\/$]* | ?:[\\/]*) ;;\r
+  */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;\r
+esac\r
+\r
+for ac_prog in gawk mawk nawk awk\r
+do\r
+  # Extract the first word of "$ac_prog", so it can be a program name with args.\r
+set dummy $ac_prog; ac_word=$2\r
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5\r
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }\r
+if test "${ac_cv_prog_AWK+set}" = set; then\r
+  echo $ECHO_N "(cached) $ECHO_C" >&6\r
+else\r
+  if test -n "$AWK"; then\r
+  ac_cv_prog_AWK="$AWK" # Let the user override the test.\r
+else\r
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR\r
+for as_dir in $PATH\r
+do\r
+  IFS=$as_save_IFS\r
+  test -z "$as_dir" && as_dir=.\r
+  for ac_exec_ext in '' $ac_executable_extensions; do\r
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then\r
+    ac_cv_prog_AWK="$ac_prog"\r
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5\r
+    break 2\r
+  fi\r
+done\r
+done\r
+IFS=$as_save_IFS\r
+\r
+fi\r
+fi\r
+AWK=$ac_cv_prog_AWK\r
+if test -n "$AWK"; then\r
+  { echo "$as_me:$LINENO: result: $AWK" >&5\r
+echo "${ECHO_T}$AWK" >&6; }\r
+else\r
+  { echo "$as_me:$LINENO: result: no" >&5\r
+echo "${ECHO_T}no" >&6; }\r
+fi\r
+\r
+\r
+  test -n "$AWK" && break\r
+done\r
+\r
+{ echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5\r
+echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6; }\r
+set x ${MAKE-make}; ac_make=`echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`\r
+if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then\r
+  echo $ECHO_N "(cached) $ECHO_C" >&6\r
+else\r
+  cat >conftest.make <<\_ACEOF\r
+SHELL = /bin/sh\r
+all:\r
+       @echo '@@@%%%=$(MAKE)=@@@%%%'\r
+_ACEOF\r
+# GNU make sometimes prints "make[1]: Entering...", which would confuse us.\r
+case `${MAKE-make} -f conftest.make 2>/dev/null` in\r
+  *@@@%%%=?*=@@@%%%*)\r
+    eval ac_cv_prog_make_${ac_make}_set=yes;;\r
+  *)\r
+    eval ac_cv_prog_make_${ac_make}_set=no;;\r
+esac\r
+rm -f conftest.make\r
+fi\r
+if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then\r
+  { echo "$as_me:$LINENO: result: yes" >&5\r
+echo "${ECHO_T}yes" >&6; }\r
+  SET_MAKE=\r
+else\r
+  { echo "$as_me:$LINENO: result: no" >&5\r
+echo "${ECHO_T}no" >&6; }\r
+  SET_MAKE="MAKE=${MAKE-make}"\r
+fi\r
+\r
+rm -rf .tst 2>/dev/null\r
+mkdir .tst 2>/dev/null\r
+if test -d .tst; then\r
+  am__leading_dot=.\r
+else\r
+  am__leading_dot=_\r
+fi\r
+rmdir .tst 2>/dev/null\r
+\r
+if test "`cd $srcdir && pwd`" != "`pwd`"; then\r
+  # Use -I$(srcdir) only when $(srcdir) != ., so that make's output\r
+  # is not polluted with repeated "-I."\r
+  am__isrc=' -I$(srcdir)'\r
+  # test to see if srcdir already configured\r
+  if test -f $srcdir/config.status; then\r
+    { { echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5\r
+echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;}\r
+   { (exit 1); exit 1; }; }\r
+  fi\r
+fi\r
+\r
+# test whether we have cygpath\r
+if test -z "$CYGPATH_W"; then\r
+  if (cygpath --version) >/dev/null 2>/dev/null; then\r
+    CYGPATH_W='cygpath -w'\r
+  else\r
+    CYGPATH_W=echo\r
+  fi\r
+fi\r
+\r
+\r
+# Define the identity of the package.\r
+ PACKAGE='xboard'\r
+ VERSION='4.3'\r
+\r
+\r
+cat >>confdefs.h <<_ACEOF\r
+#define PACKAGE "$PACKAGE"\r
+_ACEOF\r
+\r
+\r
+cat >>confdefs.h <<_ACEOF\r
+#define VERSION "$VERSION"\r
+_ACEOF\r
+\r
+# Some tools Automake needs.\r
+\r
+ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"}\r
+\r
+\r
+AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"}\r
+\r
+\r
+AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"}\r
+\r
+\r
+AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"}\r
+\r
+\r
+MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}\r
+\r
+install_sh=${install_sh-"\$(SHELL) $am_aux_dir/install-sh"}\r
+\r
+# Installed binaries are usually stripped using `strip' when the user\r
+# run `make install-strip'.  However `strip' might not be the right\r
+# tool to use in cross-compilation environments, therefore Automake\r
+# will honor the `STRIP' environment variable to overrule this program.\r
+if test "$cross_compiling" != no; then\r
+  if test -n "$ac_tool_prefix"; then\r
+  # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.\r
+set dummy ${ac_tool_prefix}strip; ac_word=$2\r
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5\r
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }\r
+if test "${ac_cv_prog_STRIP+set}" = set; then\r
+  echo $ECHO_N "(cached) $ECHO_C" >&6\r
+else\r
+  if test -n "$STRIP"; then\r
+  ac_cv_prog_STRIP="$STRIP" # Let the user override the test.\r
+else\r
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR\r
+for as_dir in $PATH\r
+do\r
+  IFS=$as_save_IFS\r
+  test -z "$as_dir" && as_dir=.\r
+  for ac_exec_ext in '' $ac_executable_extensions; do\r
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then\r
+    ac_cv_prog_STRIP="${ac_tool_prefix}strip"\r
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5\r
+    break 2\r
+  fi\r
+done\r
+done\r
+IFS=$as_save_IFS\r
+\r
+fi\r
+fi\r
+STRIP=$ac_cv_prog_STRIP\r
+if test -n "$STRIP"; then\r
+  { echo "$as_me:$LINENO: result: $STRIP" >&5\r
+echo "${ECHO_T}$STRIP" >&6; }\r
+else\r
+  { echo "$as_me:$LINENO: result: no" >&5\r
+echo "${ECHO_T}no" >&6; }\r
+fi\r
+\r
+\r
+fi\r
+if test -z "$ac_cv_prog_STRIP"; then\r
+  ac_ct_STRIP=$STRIP\r
+  # Extract the first word of "strip", so it can be a program name with args.\r
+set dummy strip; ac_word=$2\r
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5\r
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }\r
+if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then\r
+  echo $ECHO_N "(cached) $ECHO_C" >&6\r
+else\r
+  if test -n "$ac_ct_STRIP"; then\r
+  ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.\r
+else\r
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR\r
+for as_dir in $PATH\r
+do\r
+  IFS=$as_save_IFS\r
+  test -z "$as_dir" && as_dir=.\r
+  for ac_exec_ext in '' $ac_executable_extensions; do\r
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then\r
+    ac_cv_prog_ac_ct_STRIP="strip"\r
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5\r
+    break 2\r
+  fi\r
+done\r
+done\r
+IFS=$as_save_IFS\r
+\r
+fi\r
+fi\r
+ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP\r
+if test -n "$ac_ct_STRIP"; then\r
+  { echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5\r
+echo "${ECHO_T}$ac_ct_STRIP" >&6; }\r
+else\r
+  { echo "$as_me:$LINENO: result: no" >&5\r
+echo "${ECHO_T}no" >&6; }\r
+fi\r
+\r
+  if test "x$ac_ct_STRIP" = x; then\r
+    STRIP=":"\r
+  else\r
+    case $cross_compiling:$ac_tool_warned in\r
+yes:)\r
+{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools\r
+whose name does not start with the host triplet.  If you think this\r
+configuration is useful to you, please write to autoconf@gnu.org." >&5\r
+echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools\r
+whose name does not start with the host triplet.  If you think this\r
+configuration is useful to you, please write to autoconf@gnu.org." >&2;}\r
+ac_tool_warned=yes ;;\r
+esac\r
+    STRIP=$ac_ct_STRIP\r
+  fi\r
+else\r
+  STRIP="$ac_cv_prog_STRIP"\r
+fi\r
+\r
+fi\r
+INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"\r
+\r
+# We need awk for the "check" target.  The system "awk" is bad on\r
+# some platforms.\r
+# Always define AMTAR for backward compatibility.\r
+\r
+AMTAR=${AMTAR-"${am_missing_run}tar"}\r
+\r
+am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'\r
+\r
+\r
+\r
+\r
+\r
+ac_ext=c\r
+ac_cpp='$CPP $CPPFLAGS'\r
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'\r
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'\r
+ac_compiler_gnu=$ac_cv_c_compiler_gnu\r
+if test -n "$ac_tool_prefix"; then\r
+  # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.\r
+set dummy ${ac_tool_prefix}gcc; ac_word=$2\r
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5\r
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }\r
+if test "${ac_cv_prog_CC+set}" = set; then\r
+  echo $ECHO_N "(cached) $ECHO_C" >&6\r
+else\r
+  if test -n "$CC"; then\r
+  ac_cv_prog_CC="$CC" # Let the user override the test.\r
+else\r
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR\r
+for as_dir in $PATH\r
+do\r
+  IFS=$as_save_IFS\r
+  test -z "$as_dir" && as_dir=.\r
+  for ac_exec_ext in '' $ac_executable_extensions; do\r
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then\r
+    ac_cv_prog_CC="${ac_tool_prefix}gcc"\r
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5\r
+    break 2\r
+  fi\r
+done\r
+done\r
+IFS=$as_save_IFS\r
+\r
+fi\r
+fi\r
+CC=$ac_cv_prog_CC\r
+if test -n "$CC"; then\r
+  { echo "$as_me:$LINENO: result: $CC" >&5\r
+echo "${ECHO_T}$CC" >&6; }\r
+else\r
+  { echo "$as_me:$LINENO: result: no" >&5\r
+echo "${ECHO_T}no" >&6; }\r
+fi\r
+\r
+\r
+fi\r
+if test -z "$ac_cv_prog_CC"; then\r
+  ac_ct_CC=$CC\r
+  # Extract the first word of "gcc", so it can be a program name with args.\r
+set dummy gcc; ac_word=$2\r
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5\r
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }\r
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then\r
+  echo $ECHO_N "(cached) $ECHO_C" >&6\r
+else\r
+  if test -n "$ac_ct_CC"; then\r
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.\r
+else\r
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR\r
+for as_dir in $PATH\r
+do\r
+  IFS=$as_save_IFS\r
+  test -z "$as_dir" && as_dir=.\r
+  for ac_exec_ext in '' $ac_executable_extensions; do\r
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then\r
+    ac_cv_prog_ac_ct_CC="gcc"\r
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5\r
+    break 2\r
+  fi\r
+done\r
+done\r
+IFS=$as_save_IFS\r
+\r
+fi\r
+fi\r
+ac_ct_CC=$ac_cv_prog_ac_ct_CC\r
+if test -n "$ac_ct_CC"; then\r
+  { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5\r
+echo "${ECHO_T}$ac_ct_CC" >&6; }\r
+else\r
+  { echo "$as_me:$LINENO: result: no" >&5\r
+echo "${ECHO_T}no" >&6; }\r
+fi\r
+\r
+  if test "x$ac_ct_CC" = x; then\r
+    CC=""\r
+  else\r
+    case $cross_compiling:$ac_tool_warned in\r
+yes:)\r
+{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools\r
+whose name does not start with the host triplet.  If you think this\r
+configuration is useful to you, please write to autoconf@gnu.org." >&5\r
+echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools\r
+whose name does not start with the host triplet.  If you think this\r
+configuration is useful to you, please write to autoconf@gnu.org." >&2;}\r
+ac_tool_warned=yes ;;\r
+esac\r
+    CC=$ac_ct_CC\r
+  fi\r
+else\r
+  CC="$ac_cv_prog_CC"\r
+fi\r
+\r
+if test -z "$CC"; then\r
+          if test -n "$ac_tool_prefix"; then\r
+    # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.\r
+set dummy ${ac_tool_prefix}cc; ac_word=$2\r
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5\r
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }\r
+if test "${ac_cv_prog_CC+set}" = set; then\r
+  echo $ECHO_N "(cached) $ECHO_C" >&6\r
+else\r
+  if test -n "$CC"; then\r
+  ac_cv_prog_CC="$CC" # Let the user override the test.\r
+else\r
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR\r
+for as_dir in $PATH\r
+do\r
+  IFS=$as_save_IFS\r
+  test -z "$as_dir" && as_dir=.\r
+  for ac_exec_ext in '' $ac_executable_extensions; do\r
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then\r
+    ac_cv_prog_CC="${ac_tool_prefix}cc"\r
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5\r
+    break 2\r
+  fi\r
+done\r
+done\r
+IFS=$as_save_IFS\r
+\r
+fi\r
+fi\r
+CC=$ac_cv_prog_CC\r
+if test -n "$CC"; then\r
+  { echo "$as_me:$LINENO: result: $CC" >&5\r
+echo "${ECHO_T}$CC" >&6; }\r
+else\r
+  { echo "$as_me:$LINENO: result: no" >&5\r
+echo "${ECHO_T}no" >&6; }\r
+fi\r
+\r
+\r
+  fi\r
+fi\r
+if test -z "$CC"; then\r
+  # Extract the first word of "cc", so it can be a program name with args.\r
+set dummy cc; ac_word=$2\r
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5\r
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }\r
+if test "${ac_cv_prog_CC+set}" = set; then\r
+  echo $ECHO_N "(cached) $ECHO_C" >&6\r
+else\r
+  if test -n "$CC"; then\r
+  ac_cv_prog_CC="$CC" # Let the user override the test.\r
+else\r
+  ac_prog_rejected=no\r
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR\r
+for as_dir in $PATH\r
+do\r
+  IFS=$as_save_IFS\r
+  test -z "$as_dir" && as_dir=.\r
+  for ac_exec_ext in '' $ac_executable_extensions; do\r
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then\r
+    if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then\r
+       ac_prog_rejected=yes\r
+       continue\r
+     fi\r
+    ac_cv_prog_CC="cc"\r
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5\r
+    break 2\r
+  fi\r
+done\r
+done\r
+IFS=$as_save_IFS\r
+\r
+if test $ac_prog_rejected = yes; then\r
+  # We found a bogon in the path, so make sure we never use it.\r
+  set dummy $ac_cv_prog_CC\r
+  shift\r
+  if test $# != 0; then\r
+    # We chose a different compiler from the bogus one.\r
+    # However, it has the same basename, so the bogon will be chosen\r
+    # first if we set CC to just the basename; use the full file name.\r
+    shift\r
+    ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"\r
+  fi\r
+fi\r
+fi\r
+fi\r
+CC=$ac_cv_prog_CC\r
+if test -n "$CC"; then\r
+  { echo "$as_me:$LINENO: result: $CC" >&5\r
+echo "${ECHO_T}$CC" >&6; }\r
+else\r
+  { echo "$as_me:$LINENO: result: no" >&5\r
+echo "${ECHO_T}no" >&6; }\r
+fi\r
+\r
+\r
+fi\r
+if test -z "$CC"; then\r
+  if test -n "$ac_tool_prefix"; then\r
+  for ac_prog in cl.exe\r
+  do\r
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.\r
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2\r
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5\r
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }\r
+if test "${ac_cv_prog_CC+set}" = set; then\r
+  echo $ECHO_N "(cached) $ECHO_C" >&6\r
+else\r
+  if test -n "$CC"; then\r
+  ac_cv_prog_CC="$CC" # Let the user override the test.\r
+else\r
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR\r
+for as_dir in $PATH\r
+do\r
+  IFS=$as_save_IFS\r
+  test -z "$as_dir" && as_dir=.\r
+  for ac_exec_ext in '' $ac_executable_extensions; do\r
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then\r
+    ac_cv_prog_CC="$ac_tool_prefix$ac_prog"\r
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5\r
+    break 2\r
+  fi\r
+done\r
+done\r
+IFS=$as_save_IFS\r
+\r
+fi\r
+fi\r
+CC=$ac_cv_prog_CC\r
+if test -n "$CC"; then\r
+  { echo "$as_me:$LINENO: result: $CC" >&5\r
+echo "${ECHO_T}$CC" >&6; }\r
+else\r
+  { echo "$as_me:$LINENO: result: no" >&5\r
+echo "${ECHO_T}no" >&6; }\r
+fi\r
+\r
+\r
+    test -n "$CC" && break\r
+  done\r
+fi\r
+if test -z "$CC"; then\r
+  ac_ct_CC=$CC\r
+  for ac_prog in cl.exe\r
+do\r
+  # Extract the first word of "$ac_prog", so it can be a program name with args.\r
+set dummy $ac_prog; ac_word=$2\r
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5\r
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }\r
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then\r
+  echo $ECHO_N "(cached) $ECHO_C" >&6\r
+else\r
+  if test -n "$ac_ct_CC"; then\r
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.\r
+else\r
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR\r
+for as_dir in $PATH\r
+do\r
+  IFS=$as_save_IFS\r
+  test -z "$as_dir" && as_dir=.\r
+  for ac_exec_ext in '' $ac_executable_extensions; do\r
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then\r
+    ac_cv_prog_ac_ct_CC="$ac_prog"\r
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5\r
+    break 2\r
+  fi\r
+done\r
+done\r
+IFS=$as_save_IFS\r
+\r
+fi\r
+fi\r
+ac_ct_CC=$ac_cv_prog_ac_ct_CC\r
+if test -n "$ac_ct_CC"; then\r
+  { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5\r
+echo "${ECHO_T}$ac_ct_CC" >&6; }\r
+else\r
+  { echo "$as_me:$LINENO: result: no" >&5\r
+echo "${ECHO_T}no" >&6; }\r
+fi\r
+\r
+\r
+  test -n "$ac_ct_CC" && break\r
+done\r
+\r
+  if test "x$ac_ct_CC" = x; then\r
+    CC=""\r
+  else\r
+    case $cross_compiling:$ac_tool_warned in\r
+yes:)\r
+{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools\r
+whose name does not start with the host triplet.  If you think this\r
+configuration is useful to you, please write to autoconf@gnu.org." >&5\r
+echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools\r
+whose name does not start with the host triplet.  If you think this\r
+configuration is useful to you, please write to autoconf@gnu.org." >&2;}\r
+ac_tool_warned=yes ;;\r
+esac\r
+    CC=$ac_ct_CC\r
+  fi\r
+fi\r
+\r
+fi\r
+\r
+\r
+test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH\r
+See \`config.log' for more details." >&5\r
+echo "$as_me: error: no acceptable C compiler found in \$PATH\r
+See \`config.log' for more details." >&2;}\r
+   { (exit 1); exit 1; }; }\r
+\r
+# Provide some information about the compiler.\r
+echo "$as_me:$LINENO: checking for C compiler version" >&5\r
+ac_compiler=`set X $ac_compile; echo $2`\r
+{ (ac_try="$ac_compiler --version >&5"\r
+case "(($ac_try" in\r
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;\r
+  *) ac_try_echo=$ac_try;;\r
+esac\r
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5\r
+  (eval "$ac_compiler --version >&5") 2>&5\r
+  ac_status=$?\r
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5\r
+  (exit $ac_status); }\r
+{ (ac_try="$ac_compiler -v >&5"\r
+case "(($ac_try" in\r
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;\r
+  *) ac_try_echo=$ac_try;;\r
+esac\r
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5\r
+  (eval "$ac_compiler -v >&5") 2>&5\r
+  ac_status=$?\r
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5\r
+  (exit $ac_status); }\r
+{ (ac_try="$ac_compiler -V >&5"\r
+case "(($ac_try" in\r
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;\r
+  *) ac_try_echo=$ac_try;;\r
+esac\r
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5\r
+  (eval "$ac_compiler -V >&5") 2>&5\r
+  ac_status=$?\r
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5\r
+  (exit $ac_status); }\r
+\r
+cat >conftest.$ac_ext <<_ACEOF\r
+/* confdefs.h.  */\r
+_ACEOF\r
+cat confdefs.h >>conftest.$ac_ext\r
+cat >>conftest.$ac_ext <<_ACEOF\r
+/* end confdefs.h.  */\r
+\r
+int\r
+main ()\r
+{\r
+\r
+  ;\r
+  return 0;\r
+}\r
+_ACEOF\r
+ac_clean_files_save=$ac_clean_files\r
+ac_clean_files="$ac_clean_files a.out a.exe b.out"\r
+# Try to create an executable without -o first, disregard a.out.\r
+# It will help us diagnose broken compilers, and finding out an intuition\r
+# of exeext.\r
+{ echo "$as_me:$LINENO: checking for C compiler default output file name" >&5\r
+echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6; }\r
+ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`\r
+#\r
+# List of possible output files, starting from the most likely.\r
+# The algorithm is not robust to junk in `.', hence go to wildcards (a.*)\r
+# only as a last resort.  b.out is created by i960 compilers.\r
+ac_files='a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out'\r
+#\r
+# The IRIX 6 linker writes into existing files which may not be\r
+# executable, retaining their permissions.  Remove them first so a\r
+# subsequent execution test works.\r
+ac_rmfiles=\r
+for ac_file in $ac_files\r
+do\r
+  case $ac_file in\r
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;;\r
+    * ) ac_rmfiles="$ac_rmfiles $ac_file";;\r
+  esac\r
+done\r
+rm -f $ac_rmfiles\r
+\r
+if { (ac_try="$ac_link_default"\r
+case "(($ac_try" in\r
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;\r
+  *) ac_try_echo=$ac_try;;\r
+esac\r
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5\r
+  (eval "$ac_link_default") 2>&5\r
+  ac_status=$?\r
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5\r
+  (exit $ac_status); }; then\r
+  # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.\r
+# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'\r
+# in a Makefile.  We should not override ac_cv_exeext if it was cached,\r
+# so that the user can short-circuit this test for compilers unknown to\r
+# Autoconf.\r
+for ac_file in $ac_files ''\r
+do\r
+  test -f "$ac_file" || continue\r
+  case $ac_file in\r
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj )\r
+       ;;\r
+    [ab].out )\r
+       # We found the default executable, but exeext='' is most\r
+       # certainly right.\r
+       break;;\r
+    *.* )\r
+        if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;\r
+       then :; else\r
+          ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`\r
+       fi\r
+       # We set ac_cv_exeext here because the later test for it is not\r
+       # safe: cross compilers may not add the suffix if given an `-o'\r
+       # argument, so we may need to know it at that point already.\r
+       # Even if this section looks crufty: it has the advantage of\r
+       # actually working.\r
+       break;;\r
+    * )\r
+       break;;\r
+  esac\r
+done\r
+test "$ac_cv_exeext" = no && ac_cv_exeext=\r
+\r
+else\r
+  ac_file=''\r
+fi\r
+\r
+{ echo "$as_me:$LINENO: result: $ac_file" >&5\r
+echo "${ECHO_T}$ac_file" >&6; }\r
+if test -z "$ac_file"; then\r
+  echo "$as_me: failed program was:" >&5\r
+sed 's/^/| /' conftest.$ac_ext >&5\r
+\r
+{ { echo "$as_me:$LINENO: error: C compiler cannot create executables\r
+See \`config.log' for more details." >&5\r
+echo "$as_me: error: C compiler cannot create executables\r
+See \`config.log' for more details." >&2;}\r
+   { (exit 77); exit 77; }; }\r
+fi\r
+\r
+ac_exeext=$ac_cv_exeext\r
+\r
+# Check that the compiler produces executables we can run.  If not, either\r
+# the compiler is broken, or we cross compile.\r
+{ echo "$as_me:$LINENO: checking whether the C compiler works" >&5\r
+echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6; }\r
+# FIXME: These cross compiler hacks should be removed for Autoconf 3.0\r
+# If not cross compiling, check that we can run a simple program.\r
+if test "$cross_compiling" != yes; then\r
+  if { ac_try='./$ac_file'\r
+  { (case "(($ac_try" in\r
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;\r
+  *) ac_try_echo=$ac_try;;\r
+esac\r
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5\r
+  (eval "$ac_try") 2>&5\r
+  ac_status=$?\r
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5\r
+  (exit $ac_status); }; }; then\r
+    cross_compiling=no\r
+  else\r
+    if test "$cross_compiling" = maybe; then\r
+       cross_compiling=yes\r
+    else\r
+       { { echo "$as_me:$LINENO: error: cannot run C compiled programs.\r
+If you meant to cross compile, use \`--host'.\r
+See \`config.log' for more details." >&5\r
+echo "$as_me: error: cannot run C compiled programs.\r
+If you meant to cross compile, use \`--host'.\r
+See \`config.log' for more details." >&2;}\r
+   { (exit 1); exit 1; }; }\r
+    fi\r
+  fi\r
+fi\r
+{ echo "$as_me:$LINENO: result: yes" >&5\r
+echo "${ECHO_T}yes" >&6; }\r
+\r
+rm -f a.out a.exe conftest$ac_cv_exeext b.out\r
+ac_clean_files=$ac_clean_files_save\r
+# Check that the compiler produces executables we can run.  If not, either\r
+# the compiler is broken, or we cross compile.\r
+{ echo "$as_me:$LINENO: checking whether we are cross compiling" >&5\r
+echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6; }\r
+{ echo "$as_me:$LINENO: result: $cross_compiling" >&5\r
+echo "${ECHO_T}$cross_compiling" >&6; }\r
+\r
+{ echo "$as_me:$LINENO: checking for suffix of executables" >&5\r
+echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6; }\r
+if { (ac_try="$ac_link"\r
+case "(($ac_try" in\r
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;\r
+  *) ac_try_echo=$ac_try;;\r
+esac\r
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5\r
+  (eval "$ac_link") 2>&5\r
+  ac_status=$?\r
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5\r
+  (exit $ac_status); }; then\r
+  # If both `conftest.exe' and `conftest' are `present' (well, observable)\r
+# catch `conftest.exe'.  For instance with Cygwin, `ls conftest' will\r
+# work properly (i.e., refer to `conftest.exe'), while it won't with\r
+# `rm'.\r
+for ac_file in conftest.exe conftest conftest.*; do\r
+  test -f "$ac_file" || continue\r
+  case $ac_file in\r
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;;\r
+    *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`\r
+         break;;\r
+    * ) break;;\r
+  esac\r
+done\r
+else\r
+  { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link\r
+See \`config.log' for more details." >&5\r
+echo "$as_me: error: cannot compute suffix of executables: cannot compile and link\r
+See \`config.log' for more details." >&2;}\r
+   { (exit 1); exit 1; }; }\r
+fi\r
+\r
+rm -f conftest$ac_cv_exeext\r
+{ echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5\r
+echo "${ECHO_T}$ac_cv_exeext" >&6; }\r
+\r
+rm -f conftest.$ac_ext\r
+EXEEXT=$ac_cv_exeext\r
+ac_exeext=$EXEEXT\r
+{ echo "$as_me:$LINENO: checking for suffix of object files" >&5\r
+echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6; }\r
+if test "${ac_cv_objext+set}" = set; then\r
+  echo $ECHO_N "(cached) $ECHO_C" >&6\r
+else\r
+  cat >conftest.$ac_ext <<_ACEOF\r
+/* confdefs.h.  */\r
+_ACEOF\r
+cat confdefs.h >>conftest.$ac_ext\r
+cat >>conftest.$ac_ext <<_ACEOF\r
+/* end confdefs.h.  */\r
+\r
+int\r
+main ()\r
+{\r
+\r
+  ;\r
+  return 0;\r
+}\r
+_ACEOF\r
+rm -f conftest.o conftest.obj\r
+if { (ac_try="$ac_compile"\r
+case "(($ac_try" in\r
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;\r
+  *) ac_try_echo=$ac_try;;\r
+esac\r
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5\r
+  (eval "$ac_compile") 2>&5\r
+  ac_status=$?\r
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5\r
+  (exit $ac_status); }; then\r
+  for ac_file in conftest.o conftest.obj conftest.*; do\r
+  test -f "$ac_file" || continue;\r
+  case $ac_file in\r
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf ) ;;\r
+    *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`\r
+       break;;\r
+  esac\r
+done\r
+else\r
+  echo "$as_me: failed program was:" >&5\r
+sed 's/^/| /' conftest.$ac_ext >&5\r
+\r
+{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile\r
+See \`config.log' for more details." >&5\r
+echo "$as_me: error: cannot compute suffix of object files: cannot compile\r
+See \`config.log' for more details." >&2;}\r
+   { (exit 1); exit 1; }; }\r
+fi\r
+\r
+rm -f conftest.$ac_cv_objext conftest.$ac_ext\r
+fi\r
+{ echo "$as_me:$LINENO: result: $ac_cv_objext" >&5\r
+echo "${ECHO_T}$ac_cv_objext" >&6; }\r
+OBJEXT=$ac_cv_objext\r
+ac_objext=$OBJEXT\r
+{ echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5\r
+echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6; }\r
+if test "${ac_cv_c_compiler_gnu+set}" = set; then\r
+  echo $ECHO_N "(cached) $ECHO_C" >&6\r
+else\r
+  cat >conftest.$ac_ext <<_ACEOF\r
+/* confdefs.h.  */\r
+_ACEOF\r
+cat confdefs.h >>conftest.$ac_ext\r
+cat >>conftest.$ac_ext <<_ACEOF\r
+/* end confdefs.h.  */\r
+\r
+int\r
+main ()\r
+{\r
+#ifndef __GNUC__\r
+       choke me\r
+#endif\r
+\r
+  ;\r
+  return 0;\r
+}\r
+_ACEOF\r
+rm -f conftest.$ac_objext\r
+if { (ac_try="$ac_compile"\r
+case "(($ac_try" in\r
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;\r
+  *) ac_try_echo=$ac_try;;\r
+esac\r
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5\r
+  (eval "$ac_compile") 2>conftest.er1\r
+  ac_status=$?\r
+  grep -v '^ *+' conftest.er1 >conftest.err\r
+  rm -f conftest.er1\r
+  cat conftest.err >&5\r
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5\r
+  (exit $ac_status); } && {\r
+        test -z "$ac_c_werror_flag" ||\r
+        test ! -s conftest.err\r
+       } && test -s conftest.$ac_objext; then\r
+  ac_compiler_gnu=yes\r
+else\r
+  echo "$as_me: failed program was:" >&5\r
+sed 's/^/| /' conftest.$ac_ext >&5\r
+\r
+       ac_compiler_gnu=no\r
+fi\r
+\r
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext\r
+ac_cv_c_compiler_gnu=$ac_compiler_gnu\r
+\r
+fi\r
+{ echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5\r
+echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6; }\r
+GCC=`test $ac_compiler_gnu = yes && echo yes`\r
+ac_test_CFLAGS=${CFLAGS+set}\r
+ac_save_CFLAGS=$CFLAGS\r
+{ echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5\r
+echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6; }\r
+if test "${ac_cv_prog_cc_g+set}" = set; then\r
+  echo $ECHO_N "(cached) $ECHO_C" >&6\r
+else\r
+  ac_save_c_werror_flag=$ac_c_werror_flag\r
+   ac_c_werror_flag=yes\r
+   ac_cv_prog_cc_g=no\r
+   CFLAGS="-g"\r
+   cat >conftest.$ac_ext <<_ACEOF\r
+/* confdefs.h.  */\r
+_ACEOF\r
+cat confdefs.h >>conftest.$ac_ext\r
+cat >>conftest.$ac_ext <<_ACEOF\r
+/* end confdefs.h.  */\r
+\r
+int\r
+main ()\r
+{\r
+\r
+  ;\r
+  return 0;\r
+}\r
+_ACEOF\r
+rm -f conftest.$ac_objext\r
+if { (ac_try="$ac_compile"\r
+case "(($ac_try" in\r
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;\r
+  *) ac_try_echo=$ac_try;;\r
+esac\r
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5\r
+  (eval "$ac_compile") 2>conftest.er1\r
+  ac_status=$?\r
+  grep -v '^ *+' conftest.er1 >conftest.err\r
+  rm -f conftest.er1\r
+  cat conftest.err >&5\r
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5\r
+  (exit $ac_status); } && {\r
+        test -z "$ac_c_werror_flag" ||\r
+        test ! -s conftest.err\r
+       } && test -s conftest.$ac_objext; then\r
+  ac_cv_prog_cc_g=yes\r
+else\r
+  echo "$as_me: failed program was:" >&5\r
+sed 's/^/| /' conftest.$ac_ext >&5\r
+\r
+       CFLAGS=""\r
+      cat >conftest.$ac_ext <<_ACEOF\r
+/* confdefs.h.  */\r
+_ACEOF\r
+cat confdefs.h >>conftest.$ac_ext\r
+cat >>conftest.$ac_ext <<_ACEOF\r
+/* end confdefs.h.  */\r
+\r
+int\r
+main ()\r
+{\r
+\r
+  ;\r
+  return 0;\r
+}\r
+_ACEOF\r
+rm -f conftest.$ac_objext\r
+if { (ac_try="$ac_compile"\r
+case "(($ac_try" in\r
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;\r
+  *) ac_try_echo=$ac_try;;\r
+esac\r
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5\r
+  (eval "$ac_compile") 2>conftest.er1\r
+  ac_status=$?\r
+  grep -v '^ *+' conftest.er1 >conftest.err\r
+  rm -f conftest.er1\r
+  cat conftest.err >&5\r
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5\r
+  (exit $ac_status); } && {\r
+        test -z "$ac_c_werror_flag" ||\r
+        test ! -s conftest.err\r
+       } && test -s conftest.$ac_objext; then\r
+  :\r
+else\r
+  echo "$as_me: failed program was:" >&5\r
+sed 's/^/| /' conftest.$ac_ext >&5\r
+\r
+       ac_c_werror_flag=$ac_save_c_werror_flag\r
+        CFLAGS="-g"\r
+        cat >conftest.$ac_ext <<_ACEOF\r
+/* confdefs.h.  */\r
+_ACEOF\r
+cat confdefs.h >>conftest.$ac_ext\r
+cat >>conftest.$ac_ext <<_ACEOF\r
+/* end confdefs.h.  */\r
+\r
+int\r
+main ()\r
+{\r
+\r
+  ;\r
+  return 0;\r
+}\r
+_ACEOF\r
+rm -f conftest.$ac_objext\r
+if { (ac_try="$ac_compile"\r
+case "(($ac_try" in\r
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;\r
+  *) ac_try_echo=$ac_try;;\r
+esac\r
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5\r
+  (eval "$ac_compile") 2>conftest.er1\r
+  ac_status=$?\r
+  grep -v '^ *+' conftest.er1 >conftest.err\r
+  rm -f conftest.er1\r
+  cat conftest.err >&5\r
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5\r
+  (exit $ac_status); } && {\r
+        test -z "$ac_c_werror_flag" ||\r
+        test ! -s conftest.err\r
+       } && test -s conftest.$ac_objext; then\r
+  ac_cv_prog_cc_g=yes\r
+else\r
+  echo "$as_me: failed program was:" >&5\r
+sed 's/^/| /' conftest.$ac_ext >&5\r
+\r
+\r
+fi\r
+\r
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext\r
+fi\r
+\r
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext\r
+fi\r
+\r
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext\r
+   ac_c_werror_flag=$ac_save_c_werror_flag\r
+fi\r
+{ echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5\r
+echo "${ECHO_T}$ac_cv_prog_cc_g" >&6; }\r
+if test "$ac_test_CFLAGS" = set; then\r
+  CFLAGS=$ac_save_CFLAGS\r
+elif test $ac_cv_prog_cc_g = yes; then\r
+  if test "$GCC" = yes; then\r
+    CFLAGS="-g -O2"\r
+  else\r
+    CFLAGS="-g"\r
+  fi\r
+else\r
+  if test "$GCC" = yes; then\r
+    CFLAGS="-O2"\r
+  else\r
+    CFLAGS=\r
+  fi\r
+fi\r
+{ echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5\r
+echo $ECHO_N "checking for $CC option to accept ISO C89... $ECHO_C" >&6; }\r
+if test "${ac_cv_prog_cc_c89+set}" = set; then\r
+  echo $ECHO_N "(cached) $ECHO_C" >&6\r
+else\r
+  ac_cv_prog_cc_c89=no\r
+ac_save_CC=$CC\r
+cat >conftest.$ac_ext <<_ACEOF\r
+/* confdefs.h.  */\r
+_ACEOF\r
+cat confdefs.h >>conftest.$ac_ext\r
+cat >>conftest.$ac_ext <<_ACEOF\r
+/* end confdefs.h.  */\r
+#include <stdarg.h>\r
+#include <stdio.h>\r
+#include <sys/types.h>\r
+#include <sys/stat.h>\r
+/* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */\r
+struct buf { int x; };\r
+FILE * (*rcsopen) (struct buf *, struct stat *, int);\r
+static char *e (p, i)\r
+     char **p;\r
+     int i;\r
+{\r
+  return p[i];\r
+}\r
+static char *f (char * (*g) (char **, int), char **p, ...)\r
+{\r
+  char *s;\r
+  va_list v;\r
+  va_start (v,p);\r
+  s = g (p, va_arg (v,int));\r
+  va_end (v);\r
+  return s;\r
+}\r
+\r
+/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has\r
+   function prototypes and stuff, but not '\xHH' hex character constants.\r
+   These don't provoke an error unfortunately, instead are silently treated\r
+   as 'x'.  The following induces an error, until -std is added to get\r
+   proper ANSI mode.  Curiously '\x00'!='x' always comes out true, for an\r
+   array size at least.  It's necessary to write '\x00'==0 to get something\r
+   that's true only with -std.  */\r
+int osf4_cc_array ['\x00' == 0 ? 1 : -1];\r
+\r
+/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters\r
+   inside strings and character constants.  */\r
+#define FOO(x) 'x'\r
+int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];\r
+\r
+int test (int i, double x);\r
+struct s1 {int (*f) (int a);};\r
+struct s2 {int (*f) (double a);};\r
+int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);\r
+int argc;\r
+char **argv;\r
+int\r
+main ()\r
+{\r
+return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];\r
+  ;\r
+  return 0;\r
+}\r
+_ACEOF\r
+for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \\r
+       -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"\r
+do\r
+  CC="$ac_save_CC $ac_arg"\r
+  rm -f conftest.$ac_objext\r
+if { (ac_try="$ac_compile"\r
+case "(($ac_try" in\r
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;\r
+  *) ac_try_echo=$ac_try;;\r
+esac\r
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5\r
+  (eval "$ac_compile") 2>conftest.er1\r
+  ac_status=$?\r
+  grep -v '^ *+' conftest.er1 >conftest.err\r
+  rm -f conftest.er1\r
+  cat conftest.err >&5\r
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5\r
+  (exit $ac_status); } && {\r
+        test -z "$ac_c_werror_flag" ||\r
+        test ! -s conftest.err\r
+       } && test -s conftest.$ac_objext; then\r
+  ac_cv_prog_cc_c89=$ac_arg\r
+else\r
+  echo "$as_me: failed program was:" >&5\r
+sed 's/^/| /' conftest.$ac_ext >&5\r
+\r
+\r
+fi\r
+\r
+rm -f core conftest.err conftest.$ac_objext\r
+  test "x$ac_cv_prog_cc_c89" != "xno" && break\r
+done\r
+rm -f conftest.$ac_ext\r
+CC=$ac_save_CC\r
+\r
+fi\r
+# AC_CACHE_VAL\r
+case "x$ac_cv_prog_cc_c89" in\r
+  x)\r
+    { echo "$as_me:$LINENO: result: none needed" >&5\r
+echo "${ECHO_T}none needed" >&6; } ;;\r
+  xno)\r
+    { echo "$as_me:$LINENO: result: unsupported" >&5\r
+echo "${ECHO_T}unsupported" >&6; } ;;\r
+  *)\r
+    CC="$CC $ac_cv_prog_cc_c89"\r
+    { echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5\r
+echo "${ECHO_T}$ac_cv_prog_cc_c89" >&6; } ;;\r
+esac\r
+\r
+\r
+ac_ext=c\r
+ac_cpp='$CPP $CPPFLAGS'\r
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'\r
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'\r
+ac_compiler_gnu=$ac_cv_c_compiler_gnu\r
+DEPDIR="${am__leading_dot}deps"\r
+\r
+ac_config_commands="$ac_config_commands depfiles"\r
+\r
+\r
+am_make=${MAKE-make}\r
+cat > confinc << 'END'\r
+am__doit:\r
+       @echo done\r
+.PHONY: am__doit\r
+END\r
+# If we don't find an include directive, just comment out the code.\r
+{ echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5\r
+echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6; }\r
+am__include="#"\r
+am__quote=\r
+_am_result=none\r
+# First try GNU make style include.\r
+echo "include confinc" > confmf\r
+# We grep out `Entering directory' and `Leaving directory'\r
+# messages which can occur if `w' ends up in MAKEFLAGS.\r
+# In particular we don't look at `^make:' because GNU make might\r
+# be invoked under some other name (usually "gmake"), in which\r
+# case it prints its new name instead of `make'.\r
+if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then\r
+   am__include=include\r
+   am__quote=\r
+   _am_result=GNU\r
+fi\r
+# Now try BSD make style include.\r
+if test "$am__include" = "#"; then\r
+   echo '.include "confinc"' > confmf\r
+   if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then\r
+      am__include=.include\r
+      am__quote="\""\r
+      _am_result=BSD\r
+   fi\r
+fi\r
+\r
+\r
+{ echo "$as_me:$LINENO: result: $_am_result" >&5\r
+echo "${ECHO_T}$_am_result" >&6; }\r
+rm -f confinc confmf\r
+\r
+# Check whether --enable-dependency-tracking was given.\r
+if test "${enable_dependency_tracking+set}" = set; then\r
+  enableval=$enable_dependency_tracking;\r
+fi\r
+\r
+if test "x$enable_dependency_tracking" != xno; then\r
+  am_depcomp="$ac_aux_dir/depcomp"\r
+  AMDEPBACKSLASH='\'\r
+fi\r
+ if test "x$enable_dependency_tracking" != xno; then\r
+  AMDEP_TRUE=\r
+  AMDEP_FALSE='#'\r
+else\r
+  AMDEP_TRUE='#'\r
+  AMDEP_FALSE=\r
+fi\r
+\r
+\r
+\r
+depcc="$CC"   am_compiler_list=\r
+\r
+{ echo "$as_me:$LINENO: checking dependency style of $depcc" >&5\r
+echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6; }\r
+if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then\r
+  echo $ECHO_N "(cached) $ECHO_C" >&6\r
+else\r
+  if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then\r
+  # We make a subdir and do the tests there.  Otherwise we can end up\r
+  # making bogus files that we don't know about and never remove.  For\r
+  # instance it was reported that on HP-UX the gcc test will end up\r
+  # making a dummy file named `D' -- because `-MD' means `put the output\r
+  # in D'.\r
+  mkdir conftest.dir\r
+  # Copy depcomp to subdir because otherwise we won't find it if we're\r
+  # using a relative directory.\r
+  cp "$am_depcomp" conftest.dir\r
+  cd conftest.dir\r
+  # We will build objects and dependencies in a subdirectory because\r
+  # it helps to detect inapplicable dependency modes.  For instance\r
+  # both Tru64's cc and ICC support -MD to output dependencies as a\r
+  # side effect of compilation, but ICC will put the dependencies in\r
+  # the current directory while Tru64 will put them in the object\r
+  # directory.\r
+  mkdir sub\r
+\r
+  am_cv_CC_dependencies_compiler_type=none\r
+  if test "$am_compiler_list" = ""; then\r
+     am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`\r
+  fi\r
+  for depmode in $am_compiler_list; do\r
+    # Setup a source with many dependencies, because some compilers\r
+    # like to wrap large dependency lists on column 80 (with \), and\r
+    # we should not choose a depcomp mode which is confused by this.\r
+    #\r
+    # We need to recreate these files for each test, as the compiler may\r
+    # overwrite some of them when testing with obscure command lines.\r
+    # This happens at least with the AIX C compiler.\r
+    : > sub/conftest.c\r
+    for i in 1 2 3 4 5 6; do\r
+      echo '#include "conftst'$i'.h"' >> sub/conftest.c\r
+      # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with\r
+      # Solaris 8's {/usr,}/bin/sh.\r
+      touch sub/conftst$i.h\r
+    done\r
+    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf\r
+\r
+    case $depmode in\r
+    nosideeffect)\r
+      # after this tag, mechanisms are not by side-effect, so they'll\r
+      # only be used when explicitly requested\r
+      if test "x$enable_dependency_tracking" = xyes; then\r
+       continue\r
+      else\r
+       break\r
+      fi\r
+      ;;\r
+    none) break ;;\r
+    esac\r
+    # We check with `-c' and `-o' for the sake of the "dashmstdout"\r
+    # mode.  It turns out that the SunPro C++ compiler does not properly\r
+    # handle `-M -o', and we need to detect this.\r
+    if depmode=$depmode \\r
+       source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \\r
+       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \\r
+       $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \\r
+         >/dev/null 2>conftest.err &&\r
+       grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&\r
+       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&\r
+       grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 &&\r
+       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then\r
+      # icc doesn't choke on unknown options, it will just issue warnings\r
+      # or remarks (even with -Werror).  So we grep stderr for any message\r
+      # that says an option was ignored or not supported.\r
+      # When given -MP, icc 7.0 and 7.1 complain thusly:\r
+      #   icc: Command line warning: ignoring option '-M'; no argument required\r
+      # The diagnosis changed in icc 8.0:\r
+      #   icc: Command line remark: option '-MP' not supported\r
+      if (grep 'ignoring option' conftest.err ||\r
+          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else\r
+        am_cv_CC_dependencies_compiler_type=$depmode\r
+        break\r
+      fi\r
+    fi\r
+  done\r
+\r
+  cd ..\r
+  rm -rf conftest.dir\r
+else\r
+  am_cv_CC_dependencies_compiler_type=none\r
+fi\r
+\r
+fi\r
+{ echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5\r
+echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6; }\r
+CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type\r
+\r
+ if\r
+  test "x$enable_dependency_tracking" != xno \\r
+  && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then\r
+  am__fastdepCC_TRUE=\r
+  am__fastdepCC_FALSE='#'\r
+else\r
+  am__fastdepCC_TRUE='#'\r
+  am__fastdepCC_FALSE=\r
+fi\r
+\r
+\r
+ac_config_headers="$ac_config_headers config.h"\r
+\r
+ac_config_files="$ac_config_files Makefile"\r
+\r
+cat >confcache <<\_ACEOF\r
+# This file is a shell script that caches the results of configure\r
+# tests run on this system so they can be shared between configure\r
+# scripts and configure runs, see configure's option --config-cache.\r
+# It is not useful on other systems.  If it contains results you don't\r
+# want to keep, you may remove or edit it.\r
+#\r
+# config.status only pays attention to the cache file if you give it\r
+# the --recheck option to rerun configure.\r
+#\r
+# `ac_cv_env_foo' variables (set or unset) will be overridden when\r
+# loading this file, other *unset* `ac_cv_foo' will be assigned the\r
+# following values.\r
+\r
+_ACEOF\r
+\r
+# The following way of writing the cache mishandles newlines in values,\r
+# but we know of no workaround that is simple, portable, and efficient.\r
+# So, we kill variables containing newlines.\r
+# Ultrix sh set writes to stderr and can't be redirected directly,\r
+# and sets the high bit in the cache file unless we assign to the vars.\r
+(\r
+  for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do\r
+    eval ac_val=\$$ac_var\r
+    case $ac_val in #(\r
+    *${as_nl}*)\r
+      case $ac_var in #(\r
+      *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5\r
+echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;;\r
+      esac\r
+      case $ac_var in #(\r
+      _ | IFS | as_nl) ;; #(\r
+      *) $as_unset $ac_var ;;\r
+      esac ;;\r
+    esac\r
+  done\r
+\r
+  (set) 2>&1 |\r
+    case $as_nl`(ac_space=' '; set) 2>&1` in #(\r
+    *${as_nl}ac_space=\ *)\r
+      # `set' does not quote correctly, so add quotes (double-quote\r
+      # substitution turns \\\\ into \\, and sed turns \\ into \).\r
+      sed -n \\r
+       "s/'/'\\\\''/g;\r
+         s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"\r
+      ;; #(\r
+    *)\r
+      # `set' quotes correctly as required by POSIX, so do not add quotes.\r
+      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"\r
+      ;;\r
+    esac |\r
+    sort\r
+) |\r
+  sed '\r
+     /^ac_cv_env_/b end\r
+     t clear\r
+     :clear\r
+     s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/\r
+     t end\r
+     s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/\r
+     :end' >>confcache\r
+if diff "$cache_file" confcache >/dev/null 2>&1; then :; else\r
+  if test -w "$cache_file"; then\r
+    test "x$cache_file" != "x/dev/null" &&\r
+      { echo "$as_me:$LINENO: updating cache $cache_file" >&5\r
+echo "$as_me: updating cache $cache_file" >&6;}\r
+    cat confcache >$cache_file\r
+  else\r
+    { echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5\r
+echo "$as_me: not updating unwritable cache $cache_file" >&6;}\r
+  fi\r
+fi\r
+rm -f confcache\r
+\r
+test "x$prefix" = xNONE && prefix=$ac_default_prefix\r
+# Let make expand exec_prefix.\r
+test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'\r
+\r
+DEFS=-DHAVE_CONFIG_H\r
+\r
+ac_libobjs=\r
+ac_ltlibobjs=\r
+for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue\r
+  # 1. Remove the extension, and $U if already installed.\r
+  ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'\r
+  ac_i=`echo "$ac_i" | sed "$ac_script"`\r
+  # 2. Prepend LIBOBJDIR.  When used with automake>=1.10 LIBOBJDIR\r
+  #    will be set to the directory where LIBOBJS objects are built.\r
+  ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext"\r
+  ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$ac_i"'$U.lo'\r
+done\r
+LIBOBJS=$ac_libobjs\r
+\r
+LTLIBOBJS=$ac_ltlibobjs\r
+\r
+\r
+if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then\r
+  { { echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined.\r
+Usually this means the macro was only invoked conditionally." >&5\r
+echo "$as_me: error: conditional \"AMDEP\" was never defined.\r
+Usually this means the macro was only invoked conditionally." >&2;}\r
+   { (exit 1); exit 1; }; }\r
+fi\r
+if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then\r
+  { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined.\r
+Usually this means the macro was only invoked conditionally." >&5\r
+echo "$as_me: error: conditional \"am__fastdepCC\" was never defined.\r
+Usually this means the macro was only invoked conditionally." >&2;}\r
+   { (exit 1); exit 1; }; }\r
+fi\r
+\r
+: ${CONFIG_STATUS=./config.status}\r
+ac_clean_files_save=$ac_clean_files\r
+ac_clean_files="$ac_clean_files $CONFIG_STATUS"\r
+{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5\r
+echo "$as_me: creating $CONFIG_STATUS" >&6;}\r
+cat >$CONFIG_STATUS <<_ACEOF\r
+#! $SHELL\r
+# Generated by $as_me.\r
+# Run this file to recreate the current configuration.\r
+# Compiler output produced by configure, useful for debugging\r
+# configure, is in config.log if it exists.\r
+\r
+debug=false\r
+ac_cs_recheck=false\r
+ac_cs_silent=false\r
+SHELL=\${CONFIG_SHELL-$SHELL}\r
+_ACEOF\r
+\r
+cat >>$CONFIG_STATUS <<\_ACEOF\r
+## --------------------- ##\r
+## M4sh Initialization.  ##\r
+## --------------------- ##\r
+\r
+# Be more Bourne compatible\r
+DUALCASE=1; export DUALCASE # for MKS sh\r
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then\r
+  emulate sh\r
+  NULLCMD=:\r
+  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which\r
+  # is contrary to our usage.  Disable this feature.\r
+  alias -g '${1+"$@"}'='"$@"'\r
+  setopt NO_GLOB_SUBST\r
+else\r
+  case `(set -o) 2>/dev/null` in\r
+  *posix*) set -o posix ;;\r
+esac\r
+\r
+fi\r
+\r
+\r
+\r
+\r
+# PATH needs CR\r
+# Avoid depending upon Character Ranges.\r
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'\r
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'\r
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS\r
+as_cr_digits='0123456789'\r
+as_cr_alnum=$as_cr_Letters$as_cr_digits\r
+\r
+# The user is always right.\r
+if test "${PATH_SEPARATOR+set}" != set; then\r
+  echo "#! /bin/sh" >conf$$.sh\r
+  echo  "exit 0"   >>conf$$.sh\r
+  chmod +x conf$$.sh\r
+  if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then\r
+    PATH_SEPARATOR=';'\r
+  else\r
+    PATH_SEPARATOR=:\r
+  fi\r
+  rm -f conf$$.sh\r
+fi\r
+\r
+# Support unset when possible.\r
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then\r
+  as_unset=unset\r
+else\r
+  as_unset=false\r
+fi\r
+\r
+\r
+# IFS\r
+# We need space, tab and new line, in precisely that order.  Quoting is\r
+# there to prevent editors from complaining about space-tab.\r
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word\r
+# splitting by setting IFS to empty value.)\r
+as_nl='\r
+'\r
+IFS=" ""       $as_nl"\r
+\r
+# Find who we are.  Look in the path if we contain no directory separator.\r
+case $0 in\r
+  *[\\/]* ) as_myself=$0 ;;\r
+  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR\r
+for as_dir in $PATH\r
+do\r
+  IFS=$as_save_IFS\r
+  test -z "$as_dir" && as_dir=.\r
+  test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break\r
+done\r
+IFS=$as_save_IFS\r
+\r
+     ;;\r
+esac\r
+# We did not find ourselves, most probably we were run as `sh COMMAND'\r
+# in which case we are not to be found in the path.\r
+if test "x$as_myself" = x; then\r
+  as_myself=$0\r
+fi\r
+if test ! -f "$as_myself"; then\r
+  echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2\r
+  { (exit 1); exit 1; }\r
+fi\r
+\r
+# Work around bugs in pre-3.0 UWIN ksh.\r
+for as_var in ENV MAIL MAILPATH\r
+do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var\r
+done\r
+PS1='$ '\r
+PS2='> '\r
+PS4='+ '\r
+\r
+# NLS nuisances.\r
+for as_var in \\r
+  LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \\r
+  LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \\r
+  LC_TELEPHONE LC_TIME\r
+do\r
+  if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then\r
+    eval $as_var=C; export $as_var\r
+  else\r
+    ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var\r
+  fi\r
+done\r
+\r
+# Required to use basename.\r
+if expr a : '\(a\)' >/dev/null 2>&1 &&\r
+   test "X`expr 00001 : '.*\(...\)'`" = X001; then\r
+  as_expr=expr\r
+else\r
+  as_expr=false\r
+fi\r
+\r
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then\r
+  as_basename=basename\r
+else\r
+  as_basename=false\r
+fi\r
+\r
+\r
+# Name of the executable.\r
+as_me=`$as_basename -- "$0" ||\r
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \\r
+        X"$0" : 'X\(//\)$' \| \\r
+        X"$0" : 'X\(/\)' \| . 2>/dev/null ||\r
+echo X/"$0" |\r
+    sed '/^.*\/\([^/][^/]*\)\/*$/{\r
+           s//\1/\r
+           q\r
+         }\r
+         /^X\/\(\/\/\)$/{\r
+           s//\1/\r
+           q\r
+         }\r
+         /^X\/\(\/\).*/{\r
+           s//\1/\r
+           q\r
+         }\r
+         s/.*/./; q'`\r
+\r
+# CDPATH.\r
+$as_unset CDPATH\r
+\r
+\r
+\r
+  as_lineno_1=$LINENO\r
+  as_lineno_2=$LINENO\r
+  test "x$as_lineno_1" != "x$as_lineno_2" &&\r
+  test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || {\r
+\r
+  # Create $as_me.lineno as a copy of $as_myself, but with $LINENO\r
+  # uniformly replaced by the line number.  The first 'sed' inserts a\r
+  # line-number line after each line using $LINENO; the second 'sed'\r
+  # does the real work.  The second script uses 'N' to pair each\r
+  # line-number line with the line containing $LINENO, and appends\r
+  # trailing '-' during substitution so that $LINENO is not a special\r
+  # case at line end.\r
+  # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the\r
+  # scripts with optimization help from Paolo Bonzini.  Blame Lee\r
+  # E. McMahon (1931-1989) for sed's syntax.  :-)\r
+  sed -n '\r
+    p\r
+    /[$]LINENO/=\r
+  ' <$as_myself |\r
+    sed '\r
+      s/[$]LINENO.*/&-/\r
+      t lineno\r
+      b\r
+      :lineno\r
+      N\r
+      :loop\r
+      s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/\r
+      t loop\r
+      s/-\n.*//\r
+    ' >$as_me.lineno &&\r
+  chmod +x "$as_me.lineno" ||\r
+    { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2\r
+   { (exit 1); exit 1; }; }\r
+\r
+  # Don't try to exec as it changes $[0], causing all sort of problems\r
+  # (the dirname of $[0] is not the place where we might find the\r
+  # original and so on.  Autoconf is especially sensitive to this).\r
+  . "./$as_me.lineno"\r
+  # Exit status is that of the last command.\r
+  exit\r
+}\r
+\r
+\r
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then\r
+  as_dirname=dirname\r
+else\r
+  as_dirname=false\r
+fi\r
+\r
+ECHO_C= ECHO_N= ECHO_T=\r
+case `echo -n x` in\r
+-n*)\r
+  case `echo 'x\c'` in\r
+  *c*) ECHO_T='        ';;     # ECHO_T is single tab character.\r
+  *)   ECHO_C='\c';;\r
+  esac;;\r
+*)\r
+  ECHO_N='-n';;\r
+esac\r
+\r
+if expr a : '\(a\)' >/dev/null 2>&1 &&\r
+   test "X`expr 00001 : '.*\(...\)'`" = X001; then\r
+  as_expr=expr\r
+else\r
+  as_expr=false\r
+fi\r
+\r
+rm -f conf$$ conf$$.exe conf$$.file\r
+if test -d conf$$.dir; then\r
+  rm -f conf$$.dir/conf$$.file\r
+else\r
+  rm -f conf$$.dir\r
+  mkdir conf$$.dir\r
+fi\r
+echo >conf$$.file\r
+if ln -s conf$$.file conf$$ 2>/dev/null; then\r
+  as_ln_s='ln -s'\r
+  # ... but there are two gotchas:\r
+  # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.\r
+  # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.\r
+  # In both cases, we have to default to `cp -p'.\r
+  ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||\r
+    as_ln_s='cp -p'\r
+elif ln conf$$.file conf$$ 2>/dev/null; then\r
+  as_ln_s=ln\r
+else\r
+  as_ln_s='cp -p'\r
+fi\r
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file\r
+rmdir conf$$.dir 2>/dev/null\r
+\r
+if mkdir -p . 2>/dev/null; then\r
+  as_mkdir_p=:\r
+else\r
+  test -d ./-p && rmdir ./-p\r
+  as_mkdir_p=false\r
+fi\r
+\r
+if test -x / >/dev/null 2>&1; then\r
+  as_test_x='test -x'\r
+else\r
+  if ls -dL / >/dev/null 2>&1; then\r
+    as_ls_L_option=L\r
+  else\r
+    as_ls_L_option=\r
+  fi\r
+  as_test_x='\r
+    eval sh -c '\''\r
+      if test -d "$1"; then\r
+        test -d "$1/.";\r
+      else\r
+       case $1 in\r
+        -*)set "./$1";;\r
+       esac;\r
+       case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in\r
+       ???[sx]*):;;*)false;;esac;fi\r
+    '\'' sh\r
+  '\r
+fi\r
+as_executable_p=$as_test_x\r
+\r
+# Sed expression to map a string onto a valid CPP name.\r
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"\r
+\r
+# Sed expression to map a string onto a valid variable name.\r
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"\r
+\r
+\r
+exec 6>&1\r
+\r
+# Save the log message, to keep $[0] and so on meaningful, and to\r
+# report actual input values of CONFIG_FILES etc. instead of their\r
+# values after options handling.\r
+ac_log="\r
+This file was extended by xboard $as_me 4.3, which was\r
+generated by GNU Autoconf 2.61.  Invocation command line was\r
+\r
+  CONFIG_FILES    = $CONFIG_FILES\r
+  CONFIG_HEADERS  = $CONFIG_HEADERS\r
+  CONFIG_LINKS    = $CONFIG_LINKS\r
+  CONFIG_COMMANDS = $CONFIG_COMMANDS\r
+  $ $0 $@\r
+\r
+on `(hostname || uname -n) 2>/dev/null | sed 1q`\r
+"\r
+\r
+_ACEOF\r
+\r
+cat >>$CONFIG_STATUS <<_ACEOF\r
+# Files that config.status was made for.\r
+config_files="$ac_config_files"\r
+config_headers="$ac_config_headers"\r
+config_commands="$ac_config_commands"\r
+\r
+_ACEOF\r
+\r
+cat >>$CONFIG_STATUS <<\_ACEOF\r
+ac_cs_usage="\\r
+\`$as_me' instantiates files from templates according to the\r
+current configuration.\r
+\r
+Usage: $0 [OPTIONS] [FILE]...\r
+\r
+  -h, --help       print this help, then exit\r
+  -V, --version    print version number and configuration settings, then exit\r
+  -q, --quiet      do not print progress messages\r
+  -d, --debug      don't remove temporary files\r
+      --recheck    update $as_me by reconfiguring in the same conditions\r
+  --file=FILE[:TEMPLATE]\r
+                  instantiate the configuration file FILE\r
+  --header=FILE[:TEMPLATE]\r
+                  instantiate the configuration header FILE\r
+\r
+Configuration files:\r
+$config_files\r
+\r
+Configuration headers:\r
+$config_headers\r
+\r
+Configuration commands:\r
+$config_commands\r
+\r
+Report bugs to <bug-autoconf@gnu.org>."\r
+\r
+_ACEOF\r
+cat >>$CONFIG_STATUS <<_ACEOF\r
+ac_cs_version="\\\r
+xboard config.status 4.3\r
+configured by $0, generated by GNU Autoconf 2.61,\r
+  with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"\r
+\r
+Copyright (C) 2006 Free Software Foundation, Inc.\r
+This config.status script is free software; the Free Software Foundation\r
+gives unlimited permission to copy, distribute and modify it."\r
+\r
+ac_pwd='$ac_pwd'\r
+srcdir='$srcdir'\r
+INSTALL='$INSTALL'\r
+MKDIR_P='$MKDIR_P'\r
+_ACEOF\r
+\r
+cat >>$CONFIG_STATUS <<\_ACEOF\r
+# If no file are specified by the user, then we need to provide default\r
+# value.  By we need to know if files were specified by the user.\r
+ac_need_defaults=:\r
+while test $# != 0\r
+do\r
+  case $1 in\r
+  --*=*)\r
+    ac_option=`expr "X$1" : 'X\([^=]*\)='`\r
+    ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`\r
+    ac_shift=:\r
+    ;;\r
+  *)\r
+    ac_option=$1\r
+    ac_optarg=$2\r
+    ac_shift=shift\r
+    ;;\r
+  esac\r
+\r
+  case $ac_option in\r
+  # Handling of the options.\r
+  -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)\r
+    ac_cs_recheck=: ;;\r
+  --version | --versio | --versi | --vers | --ver | --ve | --v | -V )\r
+    echo "$ac_cs_version"; exit ;;\r
+  --debug | --debu | --deb | --de | --d | -d )\r
+    debug=: ;;\r
+  --file | --fil | --fi | --f )\r
+    $ac_shift\r
+    CONFIG_FILES="$CONFIG_FILES $ac_optarg"\r
+    ac_need_defaults=false;;\r
+  --header | --heade | --head | --hea )\r
+    $ac_shift\r
+    CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg"\r
+    ac_need_defaults=false;;\r
+  --he | --h)\r
+    # Conflict between --help and --header\r
+    { echo "$as_me: error: ambiguous option: $1\r
+Try \`$0 --help' for more information." >&2\r
+   { (exit 1); exit 1; }; };;\r
+  --help | --hel | -h )\r
+    echo "$ac_cs_usage"; exit ;;\r
+  -q | -quiet | --quiet | --quie | --qui | --qu | --q \\r
+  | -silent | --silent | --silen | --sile | --sil | --si | --s)\r
+    ac_cs_silent=: ;;\r
+\r
+  # This is an error.\r
+  -*) { echo "$as_me: error: unrecognized option: $1\r
+Try \`$0 --help' for more information." >&2\r
+   { (exit 1); exit 1; }; } ;;\r
+\r
+  *) ac_config_targets="$ac_config_targets $1"\r
+     ac_need_defaults=false ;;\r
+\r
+  esac\r
+  shift\r
+done\r
+\r
+ac_configure_extra_args=\r
+\r
+if $ac_cs_silent; then\r
+  exec 6>/dev/null\r
+  ac_configure_extra_args="$ac_configure_extra_args --silent"\r
+fi\r
+\r
+_ACEOF\r
+cat >>$CONFIG_STATUS <<_ACEOF\r
+if \$ac_cs_recheck; then\r
+  echo "running CONFIG_SHELL=$SHELL $SHELL $0 "$ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6\r
+  CONFIG_SHELL=$SHELL\r
+  export CONFIG_SHELL\r
+  exec $SHELL "$0"$ac_configure_args \$ac_configure_extra_args --no-create --no-recursion\r
+fi\r
+\r
+_ACEOF\r
+cat >>$CONFIG_STATUS <<\_ACEOF\r
+exec 5>>config.log\r
+{\r
+  echo\r
+  sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX\r
+## Running $as_me. ##\r
+_ASBOX\r
+  echo "$ac_log"\r
+} >&5\r
+\r
+_ACEOF\r
+cat >>$CONFIG_STATUS <<_ACEOF\r
+#\r
+# INIT-COMMANDS\r
+#\r
+AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"\r
+\r
+_ACEOF\r
+\r
+cat >>$CONFIG_STATUS <<\_ACEOF\r
+\r
+# Handling of arguments.\r
+for ac_config_target in $ac_config_targets\r
+do\r
+  case $ac_config_target in\r
+    "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;\r
+    "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;;\r
+    "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;\r
+\r
+  *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5\r
+echo "$as_me: error: invalid argument: $ac_config_target" >&2;}\r
+   { (exit 1); exit 1; }; };;\r
+  esac\r
+done\r
+\r
+\r
+# If the user did not use the arguments to specify the items to instantiate,\r
+# then the envvar interface is used.  Set only those that are not.\r
+# We use the long form for the default assignment because of an extremely\r
+# bizarre bug on SunOS 4.1.3.\r
+if $ac_need_defaults; then\r
+  test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files\r
+  test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers\r
+  test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands\r
+fi\r
+\r
+# Have a temporary directory for convenience.  Make it in the build tree\r
+# simply because there is no reason against having it here, and in addition,\r
+# creating and moving files from /tmp can sometimes cause problems.\r
+# Hook for its removal unless debugging.\r
+# Note that there is a small window in which the directory will not be cleaned:\r
+# after its creation but before its name has been assigned to `$tmp'.\r
+$debug ||\r
+{\r
+  tmp=\r
+  trap 'exit_status=$?\r
+  { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status\r
+' 0\r
+  trap '{ (exit 1); exit 1; }' 1 2 13 15\r
+}\r
+# Create a (secure) tmp directory for tmp files.\r
+\r
+{\r
+  tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&\r
+  test -n "$tmp" && test -d "$tmp"\r
+}  ||\r
+{\r
+  tmp=./conf$$-$RANDOM\r
+  (umask 077 && mkdir "$tmp")\r
+} ||\r
+{\r
+   echo "$me: cannot create a temporary directory in ." >&2\r
+   { (exit 1); exit 1; }\r
+}\r
+\r
+#\r
+# Set up the sed scripts for CONFIG_FILES section.\r
+#\r
+\r
+# No need to generate the scripts if there are no CONFIG_FILES.\r
+# This happens for instance when ./config.status config.h\r
+if test -n "$CONFIG_FILES"; then\r
+\r
+_ACEOF\r
+\r
+\r
+\r
+ac_delim='%!_!# '\r
+for ac_last_try in false false false false false :; do\r
+  cat >conf$$subs.sed <<_ACEOF\r
+SHELL!$SHELL$ac_delim\r
+PATH_SEPARATOR!$PATH_SEPARATOR$ac_delim\r
+PACKAGE_NAME!$PACKAGE_NAME$ac_delim\r
+PACKAGE_TARNAME!$PACKAGE_TARNAME$ac_delim\r
+PACKAGE_VERSION!$PACKAGE_VERSION$ac_delim\r
+PACKAGE_STRING!$PACKAGE_STRING$ac_delim\r
+PACKAGE_BUGREPORT!$PACKAGE_BUGREPORT$ac_delim\r
+exec_prefix!$exec_prefix$ac_delim\r
+prefix!$prefix$ac_delim\r
+program_transform_name!$program_transform_name$ac_delim\r
+bindir!$bindir$ac_delim\r
+sbindir!$sbindir$ac_delim\r
+libexecdir!$libexecdir$ac_delim\r
+datarootdir!$datarootdir$ac_delim\r
+datadir!$datadir$ac_delim\r
+sysconfdir!$sysconfdir$ac_delim\r
+sharedstatedir!$sharedstatedir$ac_delim\r
+localstatedir!$localstatedir$ac_delim\r
+includedir!$includedir$ac_delim\r
+oldincludedir!$oldincludedir$ac_delim\r
+docdir!$docdir$ac_delim\r
+infodir!$infodir$ac_delim\r
+htmldir!$htmldir$ac_delim\r
+dvidir!$dvidir$ac_delim\r
+pdfdir!$pdfdir$ac_delim\r
+psdir!$psdir$ac_delim\r
+libdir!$libdir$ac_delim\r
+localedir!$localedir$ac_delim\r
+mandir!$mandir$ac_delim\r
+DEFS!$DEFS$ac_delim\r
+ECHO_C!$ECHO_C$ac_delim\r
+ECHO_N!$ECHO_N$ac_delim\r
+ECHO_T!$ECHO_T$ac_delim\r
+LIBS!$LIBS$ac_delim\r
+build_alias!$build_alias$ac_delim\r
+host_alias!$host_alias$ac_delim\r
+target_alias!$target_alias$ac_delim\r
+INSTALL_PROGRAM!$INSTALL_PROGRAM$ac_delim\r
+INSTALL_SCRIPT!$INSTALL_SCRIPT$ac_delim\r
+INSTALL_DATA!$INSTALL_DATA$ac_delim\r
+am__isrc!$am__isrc$ac_delim\r
+CYGPATH_W!$CYGPATH_W$ac_delim\r
+PACKAGE!$PACKAGE$ac_delim\r
+VERSION!$VERSION$ac_delim\r
+ACLOCAL!$ACLOCAL$ac_delim\r
+AUTOCONF!$AUTOCONF$ac_delim\r
+AUTOMAKE!$AUTOMAKE$ac_delim\r
+AUTOHEADER!$AUTOHEADER$ac_delim\r
+MAKEINFO!$MAKEINFO$ac_delim\r
+install_sh!$install_sh$ac_delim\r
+STRIP!$STRIP$ac_delim\r
+INSTALL_STRIP_PROGRAM!$INSTALL_STRIP_PROGRAM$ac_delim\r
+mkdir_p!$mkdir_p$ac_delim\r
+AWK!$AWK$ac_delim\r
+SET_MAKE!$SET_MAKE$ac_delim\r
+am__leading_dot!$am__leading_dot$ac_delim\r
+AMTAR!$AMTAR$ac_delim\r
+am__tar!$am__tar$ac_delim\r
+am__untar!$am__untar$ac_delim\r
+CC!$CC$ac_delim\r
+CFLAGS!$CFLAGS$ac_delim\r
+LDFLAGS!$LDFLAGS$ac_delim\r
+CPPFLAGS!$CPPFLAGS$ac_delim\r
+ac_ct_CC!$ac_ct_CC$ac_delim\r
+EXEEXT!$EXEEXT$ac_delim\r
+OBJEXT!$OBJEXT$ac_delim\r
+DEPDIR!$DEPDIR$ac_delim\r
+am__include!$am__include$ac_delim\r
+am__quote!$am__quote$ac_delim\r
+AMDEP_TRUE!$AMDEP_TRUE$ac_delim\r
+AMDEP_FALSE!$AMDEP_FALSE$ac_delim\r
+AMDEPBACKSLASH!$AMDEPBACKSLASH$ac_delim\r
+CCDEPMODE!$CCDEPMODE$ac_delim\r
+am__fastdepCC_TRUE!$am__fastdepCC_TRUE$ac_delim\r
+am__fastdepCC_FALSE!$am__fastdepCC_FALSE$ac_delim\r
+LIBOBJS!$LIBOBJS$ac_delim\r
+LTLIBOBJS!$LTLIBOBJS$ac_delim\r
+_ACEOF\r
+\r
+  if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 77; then\r
+    break\r
+  elif $ac_last_try; then\r
+    { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5\r
+echo "$as_me: error: could not make $CONFIG_STATUS" >&2;}\r
+   { (exit 1); exit 1; }; }\r
+  else\r
+    ac_delim="$ac_delim!$ac_delim _$ac_delim!! "\r
+  fi\r
+done\r
+\r
+ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed`\r
+if test -n "$ac_eof"; then\r
+  ac_eof=`echo "$ac_eof" | sort -nru | sed 1q`\r
+  ac_eof=`expr $ac_eof + 1`\r
+fi\r
+\r
+cat >>$CONFIG_STATUS <<_ACEOF\r
+cat >"\$tmp/subs-1.sed" <<\CEOF$ac_eof\r
+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b end\r
+_ACEOF\r
+sed '\r
+s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g\r
+s/^/s,@/; s/!/@,|#_!!_#|/\r
+:n\r
+t n\r
+s/'"$ac_delim"'$/,g/; t\r
+s/$/\\/; p\r
+N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n\r
+' >>$CONFIG_STATUS <conf$$subs.sed\r
+rm -f conf$$subs.sed\r
+cat >>$CONFIG_STATUS <<_ACEOF\r
+:end\r
+s/|#_!!_#|//g\r
+CEOF$ac_eof\r
+_ACEOF\r
+\r
+\r
+# VPATH may cause trouble with some makes, so we remove $(srcdir),\r
+# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and\r
+# trailing colons and then remove the whole line if VPATH becomes empty\r
+# (actually we leave an empty line to preserve line numbers).\r
+if test "x$srcdir" = x.; then\r
+  ac_vpsub='/^[         ]*VPATH[        ]*=/{\r
+s/:*\$(srcdir):*/:/\r
+s/:*\${srcdir}:*/:/\r
+s/:*@srcdir@:*/:/\r
+s/^\([^=]*=[    ]*\):*/\1/\r
+s/:*$//\r
+s/^[^=]*=[      ]*$//\r
+}'\r
+fi\r
+\r
+cat >>$CONFIG_STATUS <<\_ACEOF\r
+fi # test -n "$CONFIG_FILES"\r
+\r
+\r
+for ac_tag in  :F $CONFIG_FILES  :H $CONFIG_HEADERS    :C $CONFIG_COMMANDS\r
+do\r
+  case $ac_tag in\r
+  :[FHLC]) ac_mode=$ac_tag; continue;;\r
+  esac\r
+  case $ac_mode$ac_tag in\r
+  :[FHL]*:*);;\r
+  :L* | :C*:*) { { echo "$as_me:$LINENO: error: Invalid tag $ac_tag." >&5\r
+echo "$as_me: error: Invalid tag $ac_tag." >&2;}\r
+   { (exit 1); exit 1; }; };;\r
+  :[FH]-) ac_tag=-:-;;\r
+  :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;\r
+  esac\r
+  ac_save_IFS=$IFS\r
+  IFS=:\r
+  set x $ac_tag\r
+  IFS=$ac_save_IFS\r
+  shift\r
+  ac_file=$1\r
+  shift\r
+\r
+  case $ac_mode in\r
+  :L) ac_source=$1;;\r
+  :[FH])\r
+    ac_file_inputs=\r
+    for ac_f\r
+    do\r
+      case $ac_f in\r
+      -) ac_f="$tmp/stdin";;\r
+      *) # Look for the file first in the build tree, then in the source tree\r
+        # (if the path is not absolute).  The absolute path cannot be DOS-style,\r
+        # because $ac_f cannot contain `:'.\r
+        test -f "$ac_f" ||\r
+          case $ac_f in\r
+          [\\/$]*) false;;\r
+          *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;\r
+          esac ||\r
+          { { echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5\r
+echo "$as_me: error: cannot find input file: $ac_f" >&2;}\r
+   { (exit 1); exit 1; }; };;\r
+      esac\r
+      ac_file_inputs="$ac_file_inputs $ac_f"\r
+    done\r
+\r
+    # Let's still pretend it is `configure' which instantiates (i.e., don't\r
+    # use $as_me), people would be surprised to read:\r
+    #    /* config.h.  Generated by config.status.  */\r
+    configure_input="Generated from "`IFS=:\r
+         echo $* | sed 's|^[^:]*/||;s|:[^:]*/|, |g'`" by configure."\r
+    if test x"$ac_file" != x-; then\r
+      configure_input="$ac_file.  $configure_input"\r
+      { echo "$as_me:$LINENO: creating $ac_file" >&5\r
+echo "$as_me: creating $ac_file" >&6;}\r
+    fi\r
+\r
+    case $ac_tag in\r
+    *:-:* | *:-) cat >"$tmp/stdin";;\r
+    esac\r
+    ;;\r
+  esac\r
+\r
+  ac_dir=`$as_dirname -- "$ac_file" ||\r
+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \\r
+        X"$ac_file" : 'X\(//\)[^/]' \| \\r
+        X"$ac_file" : 'X\(//\)$' \| \\r
+        X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||\r
+echo X"$ac_file" |\r
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{\r
+           s//\1/\r
+           q\r
+         }\r
+         /^X\(\/\/\)[^/].*/{\r
+           s//\1/\r
+           q\r
+         }\r
+         /^X\(\/\/\)$/{\r
+           s//\1/\r
+           q\r
+         }\r
+         /^X\(\/\).*/{\r
+           s//\1/\r
+           q\r
+         }\r
+         s/.*/./; q'`\r
+  { as_dir="$ac_dir"\r
+  case $as_dir in #(\r
+  -*) as_dir=./$as_dir;;\r
+  esac\r
+  test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || {\r
+    as_dirs=\r
+    while :; do\r
+      case $as_dir in #(\r
+      *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #(\r
+      *) as_qdir=$as_dir;;\r
+      esac\r
+      as_dirs="'$as_qdir' $as_dirs"\r
+      as_dir=`$as_dirname -- "$as_dir" ||\r
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \\r
+        X"$as_dir" : 'X\(//\)[^/]' \| \\r
+        X"$as_dir" : 'X\(//\)$' \| \\r
+        X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||\r
+echo X"$as_dir" |\r
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{\r
+           s//\1/\r
+           q\r
+         }\r
+         /^X\(\/\/\)[^/].*/{\r
+           s//\1/\r
+           q\r
+         }\r
+         /^X\(\/\/\)$/{\r
+           s//\1/\r
+           q\r
+         }\r
+         /^X\(\/\).*/{\r
+           s//\1/\r
+           q\r
+         }\r
+         s/.*/./; q'`\r
+      test -d "$as_dir" && break\r
+    done\r
+    test -z "$as_dirs" || eval "mkdir $as_dirs"\r
+  } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5\r
+echo "$as_me: error: cannot create directory $as_dir" >&2;}\r
+   { (exit 1); exit 1; }; }; }\r
+  ac_builddir=.\r
+\r
+case "$ac_dir" in\r
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;\r
+*)\r
+  ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`\r
+  # A ".." for each directory in $ac_dir_suffix.\r
+  ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'`\r
+  case $ac_top_builddir_sub in\r
+  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;\r
+  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;\r
+  esac ;;\r
+esac\r
+ac_abs_top_builddir=$ac_pwd\r
+ac_abs_builddir=$ac_pwd$ac_dir_suffix\r
+# for backward compatibility:\r
+ac_top_builddir=$ac_top_build_prefix\r
+\r
+case $srcdir in\r
+  .)  # We are building in place.\r
+    ac_srcdir=.\r
+    ac_top_srcdir=$ac_top_builddir_sub\r
+    ac_abs_top_srcdir=$ac_pwd ;;\r
+  [\\/]* | ?:[\\/]* )  # Absolute name.\r
+    ac_srcdir=$srcdir$ac_dir_suffix;\r
+    ac_top_srcdir=$srcdir\r
+    ac_abs_top_srcdir=$srcdir ;;\r
+  *) # Relative name.\r
+    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix\r
+    ac_top_srcdir=$ac_top_build_prefix$srcdir\r
+    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;\r
+esac\r
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix\r
+\r
+\r
+  case $ac_mode in\r
+  :F)\r
+  #\r
+  # CONFIG_FILE\r
+  #\r
+\r
+  case $INSTALL in\r
+  [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;\r
+  *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;;\r
+  esac\r
+  ac_MKDIR_P=$MKDIR_P\r
+  case $MKDIR_P in\r
+  [\\/$]* | ?:[\\/]* ) ;;\r
+  */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;;\r
+  esac\r
+_ACEOF\r
+\r
+cat >>$CONFIG_STATUS <<\_ACEOF\r
+# If the template does not know about datarootdir, expand it.\r
+# FIXME: This hack should be removed a few years after 2.60.\r
+ac_datarootdir_hack=; ac_datarootdir_seen=\r
+\r
+case `sed -n '/datarootdir/ {\r
+  p\r
+  q\r
+}\r
+/@datadir@/p\r
+/@docdir@/p\r
+/@infodir@/p\r
+/@localedir@/p\r
+/@mandir@/p\r
+' $ac_file_inputs` in\r
+*datarootdir*) ac_datarootdir_seen=yes;;\r
+*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)\r
+  { echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5\r
+echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}\r
+_ACEOF\r
+cat >>$CONFIG_STATUS <<_ACEOF\r
+  ac_datarootdir_hack='\r
+  s&@datadir@&$datadir&g\r
+  s&@docdir@&$docdir&g\r
+  s&@infodir@&$infodir&g\r
+  s&@localedir@&$localedir&g\r
+  s&@mandir@&$mandir&g\r
+    s&\\\${datarootdir}&$datarootdir&g' ;;\r
+esac\r
+_ACEOF\r
+\r
+# Neutralize VPATH when `$srcdir' = `.'.\r
+# Shell code in configure.ac might set extrasub.\r
+# FIXME: do we really want to maintain this feature?\r
+cat >>$CONFIG_STATUS <<_ACEOF\r
+  sed "$ac_vpsub\r
+$extrasub\r
+_ACEOF\r
+cat >>$CONFIG_STATUS <<\_ACEOF\r
+:t\r
+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b\r
+s&@configure_input@&$configure_input&;t t\r
+s&@top_builddir@&$ac_top_builddir_sub&;t t\r
+s&@srcdir@&$ac_srcdir&;t t\r
+s&@abs_srcdir@&$ac_abs_srcdir&;t t\r
+s&@top_srcdir@&$ac_top_srcdir&;t t\r
+s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t\r
+s&@builddir@&$ac_builddir&;t t\r
+s&@abs_builddir@&$ac_abs_builddir&;t t\r
+s&@abs_top_builddir@&$ac_abs_top_builddir&;t t\r
+s&@INSTALL@&$ac_INSTALL&;t t\r
+s&@MKDIR_P@&$ac_MKDIR_P&;t t\r
+$ac_datarootdir_hack\r
+" $ac_file_inputs | sed -f "$tmp/subs-1.sed" >$tmp/out\r
+\r
+test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&\r
+  { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } &&\r
+  { ac_out=`sed -n '/^[         ]*datarootdir[  ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } &&\r
+  { echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir'\r
+which seems to be undefined.  Please make sure it is defined." >&5\r
+echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'\r
+which seems to be undefined.  Please make sure it is defined." >&2;}\r
+\r
+  rm -f "$tmp/stdin"\r
+  case $ac_file in\r
+  -) cat "$tmp/out"; rm -f "$tmp/out";;\r
+  *) rm -f "$ac_file"; mv "$tmp/out" $ac_file;;\r
+  esac\r
+ ;;\r
+  :H)\r
+  #\r
+  # CONFIG_HEADER\r
+  #\r
+_ACEOF\r
+\r
+# Transform confdefs.h into a sed script `conftest.defines', that\r
+# substitutes the proper values into config.h.in to produce config.h.\r
+rm -f conftest.defines conftest.tail\r
+# First, append a space to every undef/define line, to ease matching.\r
+echo 's/$/ /' >conftest.defines\r
+# Then, protect against being on the right side of a sed subst, or in\r
+# an unquoted here document, in config.status.  If some macros were\r
+# called several times there might be several #defines for the same\r
+# symbol, which is useless.  But do not sort them, since the last\r
+# AC_DEFINE must be honored.\r
+ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]*\r
+# These sed commands are passed to sed as "A NAME B PARAMS C VALUE D", where\r
+# NAME is the cpp macro being defined, VALUE is the value it is being given.\r
+# PARAMS is the parameter list in the macro definition--in most cases, it's\r
+# just an empty string.\r
+ac_dA='s,^\\([  #]*\\)[^        ]*\\([  ]*'\r
+ac_dB='\\)[     (].*,\\1define\\2'\r
+ac_dC=' '\r
+ac_dD=' ,'\r
+\r
+uniq confdefs.h |\r
+  sed -n '\r
+       t rset\r
+       :rset\r
+       s/^[     ]*#[    ]*define[       ][      ]*//\r
+       t ok\r
+       d\r
+       :ok\r
+       s/[\\&,]/\\&/g\r
+       s/^\('"$ac_word_re"'\)\(([^()]*)\)[      ]*\(.*\)/ '"$ac_dA"'\1'"$ac_dB"'\2'"${ac_dC}"'\3'"$ac_dD"'/p\r
+       s/^\('"$ac_word_re"'\)[  ]*\(.*\)/'"$ac_dA"'\1'"$ac_dB$ac_dC"'\2'"$ac_dD"'/p\r
+  ' >>conftest.defines\r
+\r
+# Remove the space that was appended to ease matching.\r
+# Then replace #undef with comments.  This is necessary, for\r
+# example, in the case of _POSIX_SOURCE, which is predefined and required\r
+# on some systems where configure will not decide to define it.\r
+# (The regexp can be short, since the line contains either #define or #undef.)\r
+echo 's/ $//\r
+s,^[    #]*u.*,/* & */,' >>conftest.defines\r
+\r
+# Break up conftest.defines:\r
+ac_max_sed_lines=50\r
+\r
+# First sed command is:         sed -f defines.sed $ac_file_inputs >"$tmp/out1"\r
+# Second one is:        sed -f defines.sed "$tmp/out1" >"$tmp/out2"\r
+# Third one will be:    sed -f defines.sed "$tmp/out2" >"$tmp/out1"\r
+# et cetera.\r
+ac_in='$ac_file_inputs'\r
+ac_out='"$tmp/out1"'\r
+ac_nxt='"$tmp/out2"'\r
+\r
+while :\r
+do\r
+  # Write a here document:\r
+    cat >>$CONFIG_STATUS <<_ACEOF\r
+    # First, check the format of the line:\r
+    cat >"\$tmp/defines.sed" <<\\CEOF\r
+/^[     ]*#[    ]*undef[        ][      ]*$ac_word_re[  ]*\$/b def\r
+/^[     ]*#[    ]*define[       ][      ]*$ac_word_re[(         ]/b def\r
+b\r
+:def\r
+_ACEOF\r
+  sed ${ac_max_sed_lines}q conftest.defines >>$CONFIG_STATUS\r
+  echo 'CEOF\r
+    sed -f "$tmp/defines.sed"' "$ac_in >$ac_out" >>$CONFIG_STATUS\r
+  ac_in=$ac_out; ac_out=$ac_nxt; ac_nxt=$ac_in\r
+  sed 1,${ac_max_sed_lines}d conftest.defines >conftest.tail\r
+  grep . conftest.tail >/dev/null || break\r
+  rm -f conftest.defines\r
+  mv conftest.tail conftest.defines\r
+done\r
+rm -f conftest.defines conftest.tail\r
+\r
+echo "ac_result=$ac_in" >>$CONFIG_STATUS\r
+cat >>$CONFIG_STATUS <<\_ACEOF\r
+  if test x"$ac_file" != x-; then\r
+    echo "/* $configure_input  */" >"$tmp/config.h"\r
+    cat "$ac_result" >>"$tmp/config.h"\r
+    if diff $ac_file "$tmp/config.h" >/dev/null 2>&1; then\r
+      { echo "$as_me:$LINENO: $ac_file is unchanged" >&5\r
+echo "$as_me: $ac_file is unchanged" >&6;}\r
+    else\r
+      rm -f $ac_file\r
+      mv "$tmp/config.h" $ac_file\r
+    fi\r
+  else\r
+    echo "/* $configure_input  */"\r
+    cat "$ac_result"\r
+  fi\r
+  rm -f "$tmp/out12"\r
+# Compute $ac_file's index in $config_headers.\r
+_am_arg=$ac_file\r
+_am_stamp_count=1\r
+for _am_header in $config_headers :; do\r
+  case $_am_header in\r
+    $_am_arg | $_am_arg:* )\r
+      break ;;\r
+    * )\r
+      _am_stamp_count=`expr $_am_stamp_count + 1` ;;\r
+  esac\r
+done\r
+echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" ||\r
+$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \\r
+        X"$_am_arg" : 'X\(//\)[^/]' \| \\r
+        X"$_am_arg" : 'X\(//\)$' \| \\r
+        X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null ||\r
+echo X"$_am_arg" |\r
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{\r
+           s//\1/\r
+           q\r
+         }\r
+         /^X\(\/\/\)[^/].*/{\r
+           s//\1/\r
+           q\r
+         }\r
+         /^X\(\/\/\)$/{\r
+           s//\1/\r
+           q\r
+         }\r
+         /^X\(\/\).*/{\r
+           s//\1/\r
+           q\r
+         }\r
+         s/.*/./; q'`/stamp-h$_am_stamp_count\r
+ ;;\r
+\r
+  :C)  { echo "$as_me:$LINENO: executing $ac_file commands" >&5\r
+echo "$as_me: executing $ac_file commands" >&6;}\r
+ ;;\r
+  esac\r
+\r
+\r
+  case $ac_file$ac_mode in\r
+    "depfiles":C) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do\r
+  # Strip MF so we end up with the name of the file.\r
+  mf=`echo "$mf" | sed -e 's/:.*$//'`\r
+  # Check whether this is an Automake generated Makefile or not.\r
+  # We used to match only the files named `Makefile.in', but\r
+  # some people rename them; so instead we look at the file content.\r
+  # Grep'ing the first line is not enough: some people post-process\r
+  # each Makefile.in and add a new line on top of each file to say so.\r
+  # Grep'ing the whole file is not good either: AIX grep has a line\r
+  # limit of 2048, but all sed's we know have understand at least 4000.\r
+  if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then\r
+    dirpart=`$as_dirname -- "$mf" ||\r
+$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \\r
+        X"$mf" : 'X\(//\)[^/]' \| \\r
+        X"$mf" : 'X\(//\)$' \| \\r
+        X"$mf" : 'X\(/\)' \| . 2>/dev/null ||\r
+echo X"$mf" |\r
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{\r
+           s//\1/\r
+           q\r
+         }\r
+         /^X\(\/\/\)[^/].*/{\r
+           s//\1/\r
+           q\r
+         }\r
+         /^X\(\/\/\)$/{\r
+           s//\1/\r
+           q\r
+         }\r
+         /^X\(\/\).*/{\r
+           s//\1/\r
+           q\r
+         }\r
+         s/.*/./; q'`\r
+  else\r
+    continue\r
+  fi\r
+  # Extract the definition of DEPDIR, am__include, and am__quote\r
+  # from the Makefile without running `make'.\r
+  DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`\r
+  test -z "$DEPDIR" && continue\r
+  am__include=`sed -n 's/^am__include = //p' < "$mf"`\r
+  test -z "am__include" && continue\r
+  am__quote=`sed -n 's/^am__quote = //p' < "$mf"`\r
+  # When using ansi2knr, U may be empty or an underscore; expand it\r
+  U=`sed -n 's/^U = //p' < "$mf"`\r
+  # Find all dependency output files, they are included files with\r
+  # $(DEPDIR) in their names.  We invoke sed twice because it is the\r
+  # simplest approach to changing $(DEPDIR) to its actual value in the\r
+  # expansion.\r
+  for file in `sed -n "\r
+    s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \\r
+       sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do\r
+    # Make sure the directory exists.\r
+    test -f "$dirpart/$file" && continue\r
+    fdir=`$as_dirname -- "$file" ||\r
+$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \\r
+        X"$file" : 'X\(//\)[^/]' \| \\r
+        X"$file" : 'X\(//\)$' \| \\r
+        X"$file" : 'X\(/\)' \| . 2>/dev/null ||\r
+echo X"$file" |\r
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{\r
+           s//\1/\r
+           q\r
+         }\r
+         /^X\(\/\/\)[^/].*/{\r
+           s//\1/\r
+           q\r
+         }\r
+         /^X\(\/\/\)$/{\r
+           s//\1/\r
+           q\r
+         }\r
+         /^X\(\/\).*/{\r
+           s//\1/\r
+           q\r
+         }\r
+         s/.*/./; q'`\r
+    { as_dir=$dirpart/$fdir\r
+  case $as_dir in #(\r
+  -*) as_dir=./$as_dir;;\r
+  esac\r
+  test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || {\r
+    as_dirs=\r
+    while :; do\r
+      case $as_dir in #(\r
+      *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #(\r
+      *) as_qdir=$as_dir;;\r
+      esac\r
+      as_dirs="'$as_qdir' $as_dirs"\r
+      as_dir=`$as_dirname -- "$as_dir" ||\r
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \\r
+        X"$as_dir" : 'X\(//\)[^/]' \| \\r
+        X"$as_dir" : 'X\(//\)$' \| \\r
+        X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||\r
+echo X"$as_dir" |\r
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{\r
+           s//\1/\r
+           q\r
+         }\r
+         /^X\(\/\/\)[^/].*/{\r
+           s//\1/\r
+           q\r
+         }\r
+         /^X\(\/\/\)$/{\r
+           s//\1/\r
+           q\r
+         }\r
+         /^X\(\/\).*/{\r
+           s//\1/\r
+           q\r
+         }\r
+         s/.*/./; q'`\r
+      test -d "$as_dir" && break\r
+    done\r
+    test -z "$as_dirs" || eval "mkdir $as_dirs"\r
+  } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5\r
+echo "$as_me: error: cannot create directory $as_dir" >&2;}\r
+   { (exit 1); exit 1; }; }; }\r
+    # echo "creating $dirpart/$file"\r
+    echo '# dummy' > "$dirpart/$file"\r
+  done\r
+done\r
+ ;;\r
+\r
+  esac\r
+done # for ac_tag\r
+\r
+\r
+{ (exit 0); exit 0; }\r
+_ACEOF\r
+chmod +x $CONFIG_STATUS\r
+ac_clean_files=$ac_clean_files_save\r
+\r
+\r
+# configure is writing to config.log, and then calls config.status.\r
+# config.status does its own redirection, appending to config.log.\r
+# Unfortunately, on DOS this fails, as config.log is still kept open\r
+# by configure, so config.status won't be able to write to it; its\r
+# output is simply discarded.  So we exec the FD to /dev/null,\r
+# effectively closing config.log, so it can be properly (re)opened and\r
+# appended to by config.status.  When coming back to configure, we\r
+# need to make the FD available again.\r
+if test "$no_create" != yes; then\r
+  ac_cs_success=:\r
+  ac_config_status_args=\r
+  test "$silent" = yes &&\r
+    ac_config_status_args="$ac_config_status_args --quiet"\r
+  exec 5>/dev/null\r
+  $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false\r
+  exec 5>>config.log\r
+  # Use ||, not &&, to avoid exiting from the if with $? = 1, which\r
+  # would make configure fail if this is the last instruction.\r
+  $ac_cs_success || { (exit 1); exit 1; }\r
+fi\r
+\r
+PRODUCT=xboard\r
+#VERSION=4.4  # version is already defined\r
+PATCHLEVEL=0c\r
+\r
+\r
+if test -z "$CFLAGS" ; then\r
+  CFLAGS=" "\r
+fi\r
+ac_ext=c\r
+ac_cpp='$CPP $CPPFLAGS'\r
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'\r
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'\r
+ac_compiler_gnu=$ac_cv_c_compiler_gnu\r
+if test -n "$ac_tool_prefix"; then\r
+  # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.\r
+set dummy ${ac_tool_prefix}gcc; ac_word=$2\r
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5\r
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }\r
+if test "${ac_cv_prog_CC+set}" = set; then\r
+  echo $ECHO_N "(cached) $ECHO_C" >&6\r
+else\r
+  if test -n "$CC"; then\r
+  ac_cv_prog_CC="$CC" # Let the user override the test.\r
+else\r
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR\r
+for as_dir in $PATH\r
+do\r
+  IFS=$as_save_IFS\r
+  test -z "$as_dir" && as_dir=.\r
+  for ac_exec_ext in '' $ac_executable_extensions; do\r
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then\r
+    ac_cv_prog_CC="${ac_tool_prefix}gcc"\r
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5\r
+    break 2\r
+  fi\r
+done\r
+done\r
+IFS=$as_save_IFS\r
+\r
+fi\r
+fi\r
+CC=$ac_cv_prog_CC\r
+if test -n "$CC"; then\r
+  { echo "$as_me:$LINENO: result: $CC" >&5\r
+echo "${ECHO_T}$CC" >&6; }\r
+else\r
+  { echo "$as_me:$LINENO: result: no" >&5\r
+echo "${ECHO_T}no" >&6; }\r
+fi\r
+\r
+\r
+fi\r
+if test -z "$ac_cv_prog_CC"; then\r
+  ac_ct_CC=$CC\r
+  # Extract the first word of "gcc", so it can be a program name with args.\r
+set dummy gcc; ac_word=$2\r
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5\r
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }\r
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then\r
+  echo $ECHO_N "(cached) $ECHO_C" >&6\r
+else\r
+  if test -n "$ac_ct_CC"; then\r
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.\r
+else\r
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR\r
+for as_dir in $PATH\r
+do\r
+  IFS=$as_save_IFS\r
+  test -z "$as_dir" && as_dir=.\r
+  for ac_exec_ext in '' $ac_executable_extensions; do\r
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then\r
+    ac_cv_prog_ac_ct_CC="gcc"\r
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5\r
+    break 2\r
+  fi\r
+done\r
+done\r
+IFS=$as_save_IFS\r
+\r
+fi\r
+fi\r
+ac_ct_CC=$ac_cv_prog_ac_ct_CC\r
+if test -n "$ac_ct_CC"; then\r
+  { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5\r
+echo "${ECHO_T}$ac_ct_CC" >&6; }\r
+else\r
+  { echo "$as_me:$LINENO: result: no" >&5\r
+echo "${ECHO_T}no" >&6; }\r
+fi\r
+\r
+  if test "x$ac_ct_CC" = x; then\r
+    CC=""\r
+  else\r
+    case $cross_compiling:$ac_tool_warned in\r
+yes:)\r
+{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools\r
+whose name does not start with the host triplet.  If you think this\r
+configuration is useful to you, please write to autoconf@gnu.org." >&5\r
+echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools\r
+whose name does not start with the host triplet.  If you think this\r
+configuration is useful to you, please write to autoconf@gnu.org." >&2;}\r
+ac_tool_warned=yes ;;\r
+esac\r
+    CC=$ac_ct_CC\r
+  fi\r
+else\r
+  CC="$ac_cv_prog_CC"\r
+fi\r
+\r
+if test -z "$CC"; then\r
+          if test -n "$ac_tool_prefix"; then\r
+    # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.\r
+set dummy ${ac_tool_prefix}cc; ac_word=$2\r
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5\r
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }\r
+if test "${ac_cv_prog_CC+set}" = set; then\r
+  echo $ECHO_N "(cached) $ECHO_C" >&6\r
+else\r
+  if test -n "$CC"; then\r
+  ac_cv_prog_CC="$CC" # Let the user override the test.\r
+else\r
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR\r
+for as_dir in $PATH\r
+do\r
+  IFS=$as_save_IFS\r
+  test -z "$as_dir" && as_dir=.\r
+  for ac_exec_ext in '' $ac_executable_extensions; do\r
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then\r
+    ac_cv_prog_CC="${ac_tool_prefix}cc"\r
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5\r
+    break 2\r
+  fi\r
+done\r
+done\r
+IFS=$as_save_IFS\r
+\r
+fi\r
+fi\r
+CC=$ac_cv_prog_CC\r
+if test -n "$CC"; then\r
+  { echo "$as_me:$LINENO: result: $CC" >&5\r
+echo "${ECHO_T}$CC" >&6; }\r
+else\r
+  { echo "$as_me:$LINENO: result: no" >&5\r
+echo "${ECHO_T}no" >&6; }\r
+fi\r
+\r
+\r
+  fi\r
+fi\r
+if test -z "$CC"; then\r
+  # Extract the first word of "cc", so it can be a program name with args.\r
+set dummy cc; ac_word=$2\r
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5\r
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }\r
+if test "${ac_cv_prog_CC+set}" = set; then\r
+  echo $ECHO_N "(cached) $ECHO_C" >&6\r
+else\r
+  if test -n "$CC"; then\r
+  ac_cv_prog_CC="$CC" # Let the user override the test.\r
+else\r
+  ac_prog_rejected=no\r
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR\r
+for as_dir in $PATH\r
+do\r
+  IFS=$as_save_IFS\r
+  test -z "$as_dir" && as_dir=.\r
+  for ac_exec_ext in '' $ac_executable_extensions; do\r
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then\r
+    if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then\r
+       ac_prog_rejected=yes\r
+       continue\r
+     fi\r
+    ac_cv_prog_CC="cc"\r
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5\r
+    break 2\r
+  fi\r
+done\r
+done\r
+IFS=$as_save_IFS\r
+\r
+if test $ac_prog_rejected = yes; then\r
+  # We found a bogon in the path, so make sure we never use it.\r
+  set dummy $ac_cv_prog_CC\r
+  shift\r
+  if test $# != 0; then\r
+    # We chose a different compiler from the bogus one.\r
+    # However, it has the same basename, so the bogon will be chosen\r
+    # first if we set CC to just the basename; use the full file name.\r
+    shift\r
+    ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"\r
+  fi\r
+fi\r
+fi\r
+fi\r
+CC=$ac_cv_prog_CC\r
+if test -n "$CC"; then\r
+  { echo "$as_me:$LINENO: result: $CC" >&5\r
+echo "${ECHO_T}$CC" >&6; }\r
+else\r
+  { echo "$as_me:$LINENO: result: no" >&5\r
+echo "${ECHO_T}no" >&6; }\r
+fi\r
+\r
+\r
+fi\r
+if test -z "$CC"; then\r
+  if test -n "$ac_tool_prefix"; then\r
+  for ac_prog in cl.exe\r
+  do\r
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.\r
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2\r
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5\r
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }\r
+if test "${ac_cv_prog_CC+set}" = set; then\r
+  echo $ECHO_N "(cached) $ECHO_C" >&6\r
+else\r
+  if test -n "$CC"; then\r
+  ac_cv_prog_CC="$CC" # Let the user override the test.\r
+else\r
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR\r
+for as_dir in $PATH\r
+do\r
+  IFS=$as_save_IFS\r
+  test -z "$as_dir" && as_dir=.\r
+  for ac_exec_ext in '' $ac_executable_extensions; do\r
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then\r
+    ac_cv_prog_CC="$ac_tool_prefix$ac_prog"\r
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5\r
+    break 2\r
+  fi\r
+done\r
+done\r
+IFS=$as_save_IFS\r
+\r
+fi\r
+fi\r
+CC=$ac_cv_prog_CC\r
+if test -n "$CC"; then\r
+  { echo "$as_me:$LINENO: result: $CC" >&5\r
+echo "${ECHO_T}$CC" >&6; }\r
+else\r
+  { echo "$as_me:$LINENO: result: no" >&5\r
+echo "${ECHO_T}no" >&6; }\r
+fi\r
+\r
+\r
+    test -n "$CC" && break\r
+  done\r
+fi\r
+if test -z "$CC"; then\r
+  ac_ct_CC=$CC\r
+  for ac_prog in cl.exe\r
+do\r
+  # Extract the first word of "$ac_prog", so it can be a program name with args.\r
+set dummy $ac_prog; ac_word=$2\r
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5\r
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }\r
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then\r
+  echo $ECHO_N "(cached) $ECHO_C" >&6\r
+else\r
+  if test -n "$ac_ct_CC"; then\r
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.\r
+else\r
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR\r
+for as_dir in $PATH\r
+do\r
+  IFS=$as_save_IFS\r
+  test -z "$as_dir" && as_dir=.\r
+  for ac_exec_ext in '' $ac_executable_extensions; do\r
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then\r
+    ac_cv_prog_ac_ct_CC="$ac_prog"\r
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5\r
+    break 2\r
+  fi\r
+done\r
+done\r
+IFS=$as_save_IFS\r
+\r
+fi\r
+fi\r
+ac_ct_CC=$ac_cv_prog_ac_ct_CC\r
+if test -n "$ac_ct_CC"; then\r
+  { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5\r
+echo "${ECHO_T}$ac_ct_CC" >&6; }\r
+else\r
+  { echo "$as_me:$LINENO: result: no" >&5\r
+echo "${ECHO_T}no" >&6; }\r
+fi\r
+\r
+\r
+  test -n "$ac_ct_CC" && break\r
+done\r
+\r
+  if test "x$ac_ct_CC" = x; then\r
+    CC=""\r
+  else\r
+    case $cross_compiling:$ac_tool_warned in\r
+yes:)\r
+{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools\r
+whose name does not start with the host triplet.  If you think this\r
+configuration is useful to you, please write to autoconf@gnu.org." >&5\r
+echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools\r
+whose name does not start with the host triplet.  If you think this\r
+configuration is useful to you, please write to autoconf@gnu.org." >&2;}\r
+ac_tool_warned=yes ;;\r
+esac\r
+    CC=$ac_ct_CC\r
+  fi\r
+fi\r
+\r
+fi\r
+\r
+\r
+test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH\r
+See \`config.log' for more details." >&5\r
+echo "$as_me: error: no acceptable C compiler found in \$PATH\r
+See \`config.log' for more details." >&2;}\r
+   { (exit 1); exit 1; }; }\r
+\r
+# Provide some information about the compiler.\r
+echo "$as_me:$LINENO: checking for C compiler version" >&5\r
+ac_compiler=`set X $ac_compile; echo $2`\r
+{ (ac_try="$ac_compiler --version >&5"\r
+case "(($ac_try" in\r
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;\r
+  *) ac_try_echo=$ac_try;;\r
+esac\r
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5\r
+  (eval "$ac_compiler --version >&5") 2>&5\r
+  ac_status=$?\r
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5\r
+  (exit $ac_status); }\r
+{ (ac_try="$ac_compiler -v >&5"\r
+case "(($ac_try" in\r
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;\r
+  *) ac_try_echo=$ac_try;;\r
+esac\r
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5\r
+  (eval "$ac_compiler -v >&5") 2>&5\r
+  ac_status=$?\r
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5\r
+  (exit $ac_status); }\r
+{ (ac_try="$ac_compiler -V >&5"\r
+case "(($ac_try" in\r
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;\r
+  *) ac_try_echo=$ac_try;;\r
+esac\r
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5\r
+  (eval "$ac_compiler -V >&5") 2>&5\r
+  ac_status=$?\r
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5\r
+  (exit $ac_status); }\r
+\r
+{ echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5\r
+echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6; }\r
+if test "${ac_cv_c_compiler_gnu+set}" = set; then\r
+  echo $ECHO_N "(cached) $ECHO_C" >&6\r
+else\r
+  cat >conftest.$ac_ext <<_ACEOF\r
+/* confdefs.h.  */\r
+_ACEOF\r
+cat confdefs.h >>conftest.$ac_ext\r
+cat >>conftest.$ac_ext <<_ACEOF\r
+/* end confdefs.h.  */\r
+\r
+int\r
+main ()\r
+{\r
+#ifndef __GNUC__\r
+       choke me\r
+#endif\r
+\r
+  ;\r
+  return 0;\r
+}\r
+_ACEOF\r
+rm -f conftest.$ac_objext\r
+if { (ac_try="$ac_compile"\r
+case "(($ac_try" in\r
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;\r
+  *) ac_try_echo=$ac_try;;\r
+esac\r
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5\r
+  (eval "$ac_compile") 2>conftest.er1\r
+  ac_status=$?\r
+  grep -v '^ *+' conftest.er1 >conftest.err\r
+  rm -f conftest.er1\r
+  cat conftest.err >&5\r
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5\r
+  (exit $ac_status); } && {\r
+        test -z "$ac_c_werror_flag" ||\r
+        test ! -s conftest.err\r
+       } && test -s conftest.$ac_objext; then\r
+  ac_compiler_gnu=yes\r
+else\r
+  echo "$as_me: failed program was:" >&5\r
+sed 's/^/| /' conftest.$ac_ext >&5\r
+\r
+       ac_compiler_gnu=no\r
+fi\r
+\r
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext\r
+ac_cv_c_compiler_gnu=$ac_compiler_gnu\r
+\r
+fi\r
+{ echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5\r
+echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6; }\r
+GCC=`test $ac_compiler_gnu = yes && echo yes`\r
+ac_test_CFLAGS=${CFLAGS+set}\r
+ac_save_CFLAGS=$CFLAGS\r
+{ echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5\r
+echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6; }\r
+if test "${ac_cv_prog_cc_g+set}" = set; then\r
+  echo $ECHO_N "(cached) $ECHO_C" >&6\r
+else\r
+  ac_save_c_werror_flag=$ac_c_werror_flag\r
+   ac_c_werror_flag=yes\r
+   ac_cv_prog_cc_g=no\r
+   CFLAGS="-g"\r
+   cat >conftest.$ac_ext <<_ACEOF\r
+/* confdefs.h.  */\r
+_ACEOF\r
+cat confdefs.h >>conftest.$ac_ext\r
+cat >>conftest.$ac_ext <<_ACEOF\r
+/* end confdefs.h.  */\r
+\r
+int\r
+main ()\r
+{\r
+\r
+  ;\r
+  return 0;\r
+}\r
+_ACEOF\r
+rm -f conftest.$ac_objext\r
+if { (ac_try="$ac_compile"\r
+case "(($ac_try" in\r
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;\r
+  *) ac_try_echo=$ac_try;;\r
+esac\r
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5\r
+  (eval "$ac_compile") 2>conftest.er1\r
+  ac_status=$?\r
+  grep -v '^ *+' conftest.er1 >conftest.err\r
+  rm -f conftest.er1\r
+  cat conftest.err >&5\r
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5\r
+  (exit $ac_status); } && {\r
+        test -z "$ac_c_werror_flag" ||\r
+        test ! -s conftest.err\r
+       } && test -s conftest.$ac_objext; then\r
+  ac_cv_prog_cc_g=yes\r
+else\r
+  echo "$as_me: failed program was:" >&5\r
+sed 's/^/| /' conftest.$ac_ext >&5\r
+\r
+       CFLAGS=""\r
+      cat >conftest.$ac_ext <<_ACEOF\r
+/* confdefs.h.  */\r
+_ACEOF\r
+cat confdefs.h >>conftest.$ac_ext\r
+cat >>conftest.$ac_ext <<_ACEOF\r
+/* end confdefs.h.  */\r
+\r
+int\r
+main ()\r
+{\r
+\r
+  ;\r
+  return 0;\r
+}\r
+_ACEOF\r
+rm -f conftest.$ac_objext\r
+if { (ac_try="$ac_compile"\r
+case "(($ac_try" in\r
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;\r
+  *) ac_try_echo=$ac_try;;\r
+esac\r
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5\r
+  (eval "$ac_compile") 2>conftest.er1\r
+  ac_status=$?\r
+  grep -v '^ *+' conftest.er1 >conftest.err\r
+  rm -f conftest.er1\r
+  cat conftest.err >&5\r
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5\r
+  (exit $ac_status); } && {\r
+        test -z "$ac_c_werror_flag" ||\r
+        test ! -s conftest.err\r
+       } && test -s conftest.$ac_objext; then\r
+  :\r
+else\r
+  echo "$as_me: failed program was:" >&5\r
+sed 's/^/| /' conftest.$ac_ext >&5\r
+\r
+       ac_c_werror_flag=$ac_save_c_werror_flag\r
+        CFLAGS="-g"\r
+        cat >conftest.$ac_ext <<_ACEOF\r
+/* confdefs.h.  */\r
+_ACEOF\r
+cat confdefs.h >>conftest.$ac_ext\r
+cat >>conftest.$ac_ext <<_ACEOF\r
+/* end confdefs.h.  */\r
+\r
+int\r
+main ()\r
+{\r
+\r
+  ;\r
+  return 0;\r
+}\r
+_ACEOF\r
+rm -f conftest.$ac_objext\r
+if { (ac_try="$ac_compile"\r
+case "(($ac_try" in\r
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;\r
+  *) ac_try_echo=$ac_try;;\r
+esac\r
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5\r
+  (eval "$ac_compile") 2>conftest.er1\r
+  ac_status=$?\r
+  grep -v '^ *+' conftest.er1 >conftest.err\r
+  rm -f conftest.er1\r
+  cat conftest.err >&5\r
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5\r
+  (exit $ac_status); } && {\r
+        test -z "$ac_c_werror_flag" ||\r
+        test ! -s conftest.err\r
+       } && test -s conftest.$ac_objext; then\r
+  ac_cv_prog_cc_g=yes\r
+else\r
+  echo "$as_me: failed program was:" >&5\r
+sed 's/^/| /' conftest.$ac_ext >&5\r
+\r
+\r
+fi\r
+\r
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext\r
+fi\r
+\r
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext\r
+fi\r
+\r
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext\r
+   ac_c_werror_flag=$ac_save_c_werror_flag\r
+fi\r
+{ echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5\r
+echo "${ECHO_T}$ac_cv_prog_cc_g" >&6; }\r
+if test "$ac_test_CFLAGS" = set; then\r
+  CFLAGS=$ac_save_CFLAGS\r
+elif test $ac_cv_prog_cc_g = yes; then\r
+  if test "$GCC" = yes; then\r
+    CFLAGS="-g -O2"\r
+  else\r
+    CFLAGS="-g"\r
+  fi\r
+else\r
+  if test "$GCC" = yes; then\r
+    CFLAGS="-O2"\r
+  else\r
+    CFLAGS=\r
+  fi\r
+fi\r
+{ echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5\r
+echo $ECHO_N "checking for $CC option to accept ISO C89... $ECHO_C" >&6; }\r
+if test "${ac_cv_prog_cc_c89+set}" = set; then\r
+  echo $ECHO_N "(cached) $ECHO_C" >&6\r
+else\r
+  ac_cv_prog_cc_c89=no\r
+ac_save_CC=$CC\r
+cat >conftest.$ac_ext <<_ACEOF\r
+/* confdefs.h.  */\r
+_ACEOF\r
+cat confdefs.h >>conftest.$ac_ext\r
+cat >>conftest.$ac_ext <<_ACEOF\r
+/* end confdefs.h.  */\r
+#include <stdarg.h>\r
+#include <stdio.h>\r
+#include <sys/types.h>\r
+#include <sys/stat.h>\r
+/* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */\r
+struct buf { int x; };\r
+FILE * (*rcsopen) (struct buf *, struct stat *, int);\r
+static char *e (p, i)\r
+     char **p;\r
+     int i;\r
+{\r
+  return p[i];\r
+}\r
+static char *f (char * (*g) (char **, int), char **p, ...)\r
+{\r
+  char *s;\r
+  va_list v;\r
+  va_start (v,p);\r
+  s = g (p, va_arg (v,int));\r
+  va_end (v);\r
+  return s;\r
+}\r
+\r
+/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has\r
+   function prototypes and stuff, but not '\xHH' hex character constants.\r
+   These don't provoke an error unfortunately, instead are silently treated\r
+   as 'x'.  The following induces an error, until -std is added to get\r
+   proper ANSI mode.  Curiously '\x00'!='x' always comes out true, for an\r
+   array size at least.  It's necessary to write '\x00'==0 to get something\r
+   that's true only with -std.  */\r
+int osf4_cc_array ['\x00' == 0 ? 1 : -1];\r
+\r
+/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters\r
+   inside strings and character constants.  */\r
+#define FOO(x) 'x'\r
+int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];\r
+\r
+int test (int i, double x);\r
+struct s1 {int (*f) (int a);};\r
+struct s2 {int (*f) (double a);};\r
+int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);\r
+int argc;\r
+char **argv;\r
+int\r
+main ()\r
+{\r
+return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];\r
+  ;\r
+  return 0;\r
+}\r
+_ACEOF\r
+for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \\r
+       -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"\r
+do\r
+  CC="$ac_save_CC $ac_arg"\r
+  rm -f conftest.$ac_objext\r
+if { (ac_try="$ac_compile"\r
+case "(($ac_try" in\r
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;\r
+  *) ac_try_echo=$ac_try;;\r
+esac\r
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5\r
+  (eval "$ac_compile") 2>conftest.er1\r
+  ac_status=$?\r
+  grep -v '^ *+' conftest.er1 >conftest.err\r
+  rm -f conftest.er1\r
+  cat conftest.err >&5\r
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5\r
+  (exit $ac_status); } && {\r
+        test -z "$ac_c_werror_flag" ||\r
+        test ! -s conftest.err\r
+       } && test -s conftest.$ac_objext; then\r
+  ac_cv_prog_cc_c89=$ac_arg\r
+else\r
+  echo "$as_me: failed program was:" >&5\r
+sed 's/^/| /' conftest.$ac_ext >&5\r
+\r
+\r
+fi\r
+\r
+rm -f core conftest.err conftest.$ac_objext\r
+  test "x$ac_cv_prog_cc_c89" != "xno" && break\r
+done\r
+rm -f conftest.$ac_ext\r
+CC=$ac_save_CC\r
+\r
+fi\r
+# AC_CACHE_VAL\r
+case "x$ac_cv_prog_cc_c89" in\r
+  x)\r
+    { echo "$as_me:$LINENO: result: none needed" >&5\r
+echo "${ECHO_T}none needed" >&6; } ;;\r
+  xno)\r
+    { echo "$as_me:$LINENO: result: unsupported" >&5\r
+echo "${ECHO_T}unsupported" >&6; } ;;\r
+  *)\r
+    CC="$CC $ac_cv_prog_cc_c89"\r
+    { echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5\r
+echo "${ECHO_T}$ac_cv_prog_cc_c89" >&6; } ;;\r
+esac\r
+\r
+\r
+ac_ext=c\r
+ac_cpp='$CPP $CPPFLAGS'\r
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'\r
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'\r
+ac_compiler_gnu=$ac_cv_c_compiler_gnu\r
+\r
+depcc="$CC"   am_compiler_list=\r
+\r
+{ echo "$as_me:$LINENO: checking dependency style of $depcc" >&5\r
+echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6; }\r
+if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then\r
+  echo $ECHO_N "(cached) $ECHO_C" >&6\r
+else\r
+  if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then\r
+  # We make a subdir and do the tests there.  Otherwise we can end up\r
+  # making bogus files that we don't know about and never remove.  For\r
+  # instance it was reported that on HP-UX the gcc test will end up\r
+  # making a dummy file named `D' -- because `-MD' means `put the output\r
+  # in D'.\r
+  mkdir conftest.dir\r
+  # Copy depcomp to subdir because otherwise we won't find it if we're\r
+  # using a relative directory.\r
+  cp "$am_depcomp" conftest.dir\r
+  cd conftest.dir\r
+  # We will build objects and dependencies in a subdirectory because\r
+  # it helps to detect inapplicable dependency modes.  For instance\r
+  # both Tru64's cc and ICC support -MD to output dependencies as a\r
+  # side effect of compilation, but ICC will put the dependencies in\r
+  # the current directory while Tru64 will put them in the object\r
+  # directory.\r
+  mkdir sub\r
+\r
+  am_cv_CC_dependencies_compiler_type=none\r
+  if test "$am_compiler_list" = ""; then\r
+     am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`\r
+  fi\r
+  for depmode in $am_compiler_list; do\r
+    # Setup a source with many dependencies, because some compilers\r
+    # like to wrap large dependency lists on column 80 (with \), and\r
+    # we should not choose a depcomp mode which is confused by this.\r
+    #\r
+    # We need to recreate these files for each test, as the compiler may\r
+    # overwrite some of them when testing with obscure command lines.\r
+    # This happens at least with the AIX C compiler.\r
+    : > sub/conftest.c\r
+    for i in 1 2 3 4 5 6; do\r
+      echo '#include "conftst'$i'.h"' >> sub/conftest.c\r
+      # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with\r
+      # Solaris 8's {/usr,}/bin/sh.\r
+      touch sub/conftst$i.h\r
+    done\r
+    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf\r
+\r
+    case $depmode in\r
+    nosideeffect)\r
+      # after this tag, mechanisms are not by side-effect, so they'll\r
+      # only be used when explicitly requested\r
+      if test "x$enable_dependency_tracking" = xyes; then\r
+       continue\r
+      else\r
+       break\r
+      fi\r
+      ;;\r
+    none) break ;;\r
+    esac\r
+    # We check with `-c' and `-o' for the sake of the "dashmstdout"\r
+    # mode.  It turns out that the SunPro C++ compiler does not properly\r
+    # handle `-M -o', and we need to detect this.\r
+    if depmode=$depmode \\r
+       source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \\r
+       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \\r
+       $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \\r
+         >/dev/null 2>conftest.err &&\r
+       grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&\r
+       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&\r
+       grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 &&\r
+       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then\r
+      # icc doesn't choke on unknown options, it will just issue warnings\r
+      # or remarks (even with -Werror).  So we grep stderr for any message\r
+      # that says an option was ignored or not supported.\r
+      # When given -MP, icc 7.0 and 7.1 complain thusly:\r
+      #   icc: Command line warning: ignoring option '-M'; no argument required\r
+      # The diagnosis changed in icc 8.0:\r
+      #   icc: Command line remark: option '-MP' not supported\r
+      if (grep 'ignoring option' conftest.err ||\r
+          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else\r
+        am_cv_CC_dependencies_compiler_type=$depmode\r
+        break\r
+      fi\r
+    fi\r
+  done\r
+\r
+  cd ..\r
+  rm -rf conftest.dir\r
+else\r
+  am_cv_CC_dependencies_compiler_type=none\r
+fi\r
+\r
+fi\r
+{ echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5\r
+echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6; }\r
+CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type\r
+\r
+ if\r
+  test "x$enable_dependency_tracking" != xno \\r
+  && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then\r
+  am__fastdepCC_TRUE=\r
+  am__fastdepCC_FALSE='#'\r
+else\r
+  am__fastdepCC_TRUE='#'\r
+  am__fastdepCC_FALSE=\r
+fi\r
+\r
+\r
+ac_ext=c\r
+ac_cpp='$CPP $CPPFLAGS'\r
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'\r
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'\r
+ac_compiler_gnu=$ac_cv_c_compiler_gnu\r
+{ echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5\r
+echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6; }\r
+# On Suns, sometimes $CPP names a directory.\r
+if test -n "$CPP" && test -d "$CPP"; then\r
+  CPP=\r
+fi\r
+if test -z "$CPP"; then\r
+  if test "${ac_cv_prog_CPP+set}" = set; then\r
+  echo $ECHO_N "(cached) $ECHO_C" >&6\r
+else\r
+      # Double quotes because CPP needs to be expanded\r
+    for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"\r
+    do\r
+      ac_preproc_ok=false\r
+for ac_c_preproc_warn_flag in '' yes\r
+do\r
+  # Use a header file that comes with gcc, so configuring glibc\r
+  # with a fresh cross-compiler works.\r
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since\r
+  # <limits.h> exists even on freestanding compilers.\r
+  # On the NeXT, cc -E runs the code through the compiler's parser,\r
+  # not just through cpp. "Syntax error" is here to catch this case.\r
+  cat >conftest.$ac_ext <<_ACEOF\r
+/* confdefs.h.  */\r
+_ACEOF\r
+cat confdefs.h >>conftest.$ac_ext\r
+cat >>conftest.$ac_ext <<_ACEOF\r
+/* end confdefs.h.  */\r
+#ifdef __STDC__\r
+# include <limits.h>\r
+#else\r
+# include <assert.h>\r
+#endif\r
+                    Syntax error\r
+_ACEOF\r
+if { (ac_try="$ac_cpp conftest.$ac_ext"\r
+case "(($ac_try" in\r
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;\r
+  *) ac_try_echo=$ac_try;;\r
+esac\r
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5\r
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1\r
+  ac_status=$?\r
+  grep -v '^ *+' conftest.er1 >conftest.err\r
+  rm -f conftest.er1\r
+  cat conftest.err >&5\r
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5\r
+  (exit $ac_status); } >/dev/null && {\r
+        test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||\r
+        test ! -s conftest.err\r
+       }; then\r
+  :\r
+else\r
+  echo "$as_me: failed program was:" >&5\r
+sed 's/^/| /' conftest.$ac_ext >&5\r
+\r
+  # Broken: fails on valid input.\r
+continue\r
+fi\r
+\r
+rm -f conftest.err conftest.$ac_ext\r
+\r
+  # OK, works on sane cases.  Now check whether nonexistent headers\r
+  # can be detected and how.\r
+  cat >conftest.$ac_ext <<_ACEOF\r
+/* confdefs.h.  */\r
+_ACEOF\r
+cat confdefs.h >>conftest.$ac_ext\r
+cat >>conftest.$ac_ext <<_ACEOF\r
+/* end confdefs.h.  */\r
+#include <ac_nonexistent.h>\r
+_ACEOF\r
+if { (ac_try="$ac_cpp conftest.$ac_ext"\r
+case "(($ac_try" in\r
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;\r
+  *) ac_try_echo=$ac_try;;\r
+esac\r
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5\r
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1\r
+  ac_status=$?\r
+  grep -v '^ *+' conftest.er1 >conftest.err\r
+  rm -f conftest.er1\r
+  cat conftest.err >&5\r
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5\r
+  (exit $ac_status); } >/dev/null && {\r
+        test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||\r
+        test ! -s conftest.err\r
+       }; then\r
+  # Broken: success on invalid input.\r
+continue\r
+else\r
+  echo "$as_me: failed program was:" >&5\r
+sed 's/^/| /' conftest.$ac_ext >&5\r
+\r
+  # Passes both tests.\r
+ac_preproc_ok=:\r
+break\r
+fi\r
+\r
+rm -f conftest.err conftest.$ac_ext\r
+\r
+done\r
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.\r
+rm -f conftest.err conftest.$ac_ext\r
+if $ac_preproc_ok; then\r
+  break\r
+fi\r
+\r
+    done\r
+    ac_cv_prog_CPP=$CPP\r
+\r
+fi\r
+  CPP=$ac_cv_prog_CPP\r
+else\r
+  ac_cv_prog_CPP=$CPP\r
+fi\r
+{ echo "$as_me:$LINENO: result: $CPP" >&5\r
+echo "${ECHO_T}$CPP" >&6; }\r
+ac_preproc_ok=false\r
+for ac_c_preproc_warn_flag in '' yes\r
+do\r
+  # Use a header file that comes with gcc, so configuring glibc\r
+  # with a fresh cross-compiler works.\r
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since\r
+  # <limits.h> exists even on freestanding compilers.\r
+  # On the NeXT, cc -E runs the code through the compiler's parser,\r
+  # not just through cpp. "Syntax error" is here to catch this case.\r
+  cat >conftest.$ac_ext <<_ACEOF\r
+/* confdefs.h.  */\r
+_ACEOF\r
+cat confdefs.h >>conftest.$ac_ext\r
+cat >>conftest.$ac_ext <<_ACEOF\r
+/* end confdefs.h.  */\r
+#ifdef __STDC__\r
+# include <limits.h>\r
+#else\r
+# include <assert.h>\r
+#endif\r
+                    Syntax error\r
+_ACEOF\r
+if { (ac_try="$ac_cpp conftest.$ac_ext"\r
+case "(($ac_try" in\r
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;\r
+  *) ac_try_echo=$ac_try;;\r
+esac\r
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5\r
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1\r
+  ac_status=$?\r
+  grep -v '^ *+' conftest.er1 >conftest.err\r
+  rm -f conftest.er1\r
+  cat conftest.err >&5\r
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5\r
+  (exit $ac_status); } >/dev/null && {\r
+        test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||\r
+        test ! -s conftest.err\r
+       }; then\r
+  :\r
+else\r
+  echo "$as_me: failed program was:" >&5\r
+sed 's/^/| /' conftest.$ac_ext >&5\r
+\r
+  # Broken: fails on valid input.\r
+continue\r
+fi\r
+\r
+rm -f conftest.err conftest.$ac_ext\r
+\r
+  # OK, works on sane cases.  Now check whether nonexistent headers\r
+  # can be detected and how.\r
+  cat >conftest.$ac_ext <<_ACEOF\r
+/* confdefs.h.  */\r
+_ACEOF\r
+cat confdefs.h >>conftest.$ac_ext\r
+cat >>conftest.$ac_ext <<_ACEOF\r
+/* end confdefs.h.  */\r
+#include <ac_nonexistent.h>\r
+_ACEOF\r
+if { (ac_try="$ac_cpp conftest.$ac_ext"\r
+case "(($ac_try" in\r
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;\r
+  *) ac_try_echo=$ac_try;;\r
+esac\r
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5\r
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1\r
+  ac_status=$?\r
+  grep -v '^ *+' conftest.er1 >conftest.err\r
+  rm -f conftest.er1\r
+  cat conftest.err >&5\r
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5\r
+  (exit $ac_status); } >/dev/null && {\r
+        test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||\r
+        test ! -s conftest.err\r
+       }; then\r
+  # Broken: success on invalid input.\r
+continue\r
+else\r
+  echo "$as_me: failed program was:" >&5\r
+sed 's/^/| /' conftest.$ac_ext >&5\r
+\r
+  # Passes both tests.\r
+ac_preproc_ok=:\r
+break\r
+fi\r
+\r
+rm -f conftest.err conftest.$ac_ext\r
+\r
+done\r
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.\r
+rm -f conftest.err conftest.$ac_ext\r
+if $ac_preproc_ok; then\r
+  :\r
+else\r
+  { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check\r
+See \`config.log' for more details." >&5\r
+echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check\r
+See \`config.log' for more details." >&2;}\r
+   { (exit 1); exit 1; }; }\r
+fi\r
+\r
+ac_ext=c\r
+ac_cpp='$CPP $CPPFLAGS'\r
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'\r
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'\r
+ac_compiler_gnu=$ac_cv_c_compiler_gnu\r
+\r
+\r
+{ echo "$as_me:$LINENO: checking for library containing strerror" >&5\r
+echo $ECHO_N "checking for library containing strerror... $ECHO_C" >&6; }\r
+if test "${ac_cv_search_strerror+set}" = set; then\r
+  echo $ECHO_N "(cached) $ECHO_C" >&6\r
+else\r
+  ac_func_search_save_LIBS=$LIBS\r
+cat >conftest.$ac_ext <<_ACEOF\r
+/* confdefs.h.  */\r
+_ACEOF\r
+cat confdefs.h >>conftest.$ac_ext\r
+cat >>conftest.$ac_ext <<_ACEOF\r
+/* end confdefs.h.  */\r
+\r
+/* Override any GCC internal prototype to avoid an error.\r
+   Use char because int might match the return type of a GCC\r
+   builtin and then its argument prototype would still apply.  */\r
+#ifdef __cplusplus\r
+extern "C"\r
+#endif\r
+char strerror ();\r
+int\r
+main ()\r
+{\r
+return strerror ();\r
+  ;\r
+  return 0;\r
+}\r
+_ACEOF\r
+for ac_lib in '' cposix; do\r
+  if test -z "$ac_lib"; then\r
+    ac_res="none required"\r
+  else\r
+    ac_res=-l$ac_lib\r
+    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"\r
+  fi\r
+  rm -f conftest.$ac_objext conftest$ac_exeext\r
+if { (ac_try="$ac_link"\r
+case "(($ac_try" in\r
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;\r
+  *) ac_try_echo=$ac_try;;\r
+esac\r
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5\r
+  (eval "$ac_link") 2>conftest.er1\r
+  ac_status=$?\r
+  grep -v '^ *+' conftest.er1 >conftest.err\r
+  rm -f conftest.er1\r
+  cat conftest.err >&5\r
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5\r
+  (exit $ac_status); } && {\r
+        test -z "$ac_c_werror_flag" ||\r
+        test ! -s conftest.err\r
+       } && test -s conftest$ac_exeext &&\r
+       $as_test_x conftest$ac_exeext; then\r
+  ac_cv_search_strerror=$ac_res\r
+else\r
+  echo "$as_me: failed program was:" >&5\r
+sed 's/^/| /' conftest.$ac_ext >&5\r
+\r
+\r
+fi\r
+\r
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \\r
+      conftest$ac_exeext\r
+  if test "${ac_cv_search_strerror+set}" = set; then\r
+  break\r
+fi\r
+done\r
+if test "${ac_cv_search_strerror+set}" = set; then\r
+  :\r
+else\r
+  ac_cv_search_strerror=no\r
+fi\r
+rm conftest.$ac_ext\r
+LIBS=$ac_func_search_save_LIBS\r
+fi\r
+{ echo "$as_me:$LINENO: result: $ac_cv_search_strerror" >&5\r
+echo "${ECHO_T}$ac_cv_search_strerror" >&6; }\r
+ac_res=$ac_cv_search_strerror\r
+if test "$ac_res" != no; then\r
+  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"\r
+\r
+fi\r
+\r
+# Find a good install program.  We prefer a C program (faster),\r
+# so one script is as good as another.  But avoid the broken or\r
+# incompatible versions:\r
+# SysV /etc/install, /usr/sbin/install\r
+# SunOS /usr/etc/install\r
+# IRIX /sbin/install\r
+# AIX /bin/install\r
+# AmigaOS /C/install, which installs bootblocks on floppy discs\r
+# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag\r
+# AFS /usr/afsws/bin/install, which mishandles nonexistent args\r
+# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"\r
+# OS/2's system install, which has a completely different semantic\r
+# ./install, which can be erroneously created by make from ./install.sh.\r
+{ echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5\r
+echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6; }\r
+if test -z "$INSTALL"; then\r
+if test "${ac_cv_path_install+set}" = set; then\r
+  echo $ECHO_N "(cached) $ECHO_C" >&6\r
+else\r
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR\r
+for as_dir in $PATH\r
+do\r
+  IFS=$as_save_IFS\r
+  test -z "$as_dir" && as_dir=.\r
+  # Account for people who put trailing slashes in PATH elements.\r
+case $as_dir/ in\r
+  ./ | .// | /cC/* | \\r
+  /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \\r
+  ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \\r
+  /usr/ucb/* ) ;;\r
+  *)\r
+    # OSF1 and SCO ODT 3.0 have their own names for install.\r
+    # Don't use installbsd from OSF since it installs stuff as root\r
+    # by default.\r
+    for ac_prog in ginstall scoinst install; do\r
+      for ac_exec_ext in '' $ac_executable_extensions; do\r
+       if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then\r
+         if test $ac_prog = install &&\r
+           grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then\r
+           # AIX install.  It has an incompatible calling convention.\r
+           :\r
+         elif test $ac_prog = install &&\r
+           grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then\r
+           # program-specific install script used by HP pwplus--don't use.\r
+           :\r
+         else\r
+           ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"\r
+           break 3\r
+         fi\r
+       fi\r
+      done\r
+    done\r
+    ;;\r
+esac\r
+done\r
+IFS=$as_save_IFS\r
+\r
+\r
+fi\r
+  if test "${ac_cv_path_install+set}" = set; then\r
+    INSTALL=$ac_cv_path_install\r
+  else\r
+    # As a last resort, use the slow shell script.  Don't cache a\r
+    # value for INSTALL within a source directory, because that will\r
+    # break other packages using the cache if that directory is\r
+    # removed, or if the value is a relative name.\r
+    INSTALL=$ac_install_sh\r
+  fi\r
+fi\r
+{ echo "$as_me:$LINENO: result: $INSTALL" >&5\r
+echo "${ECHO_T}$INSTALL" >&6; }\r
+\r
+# Use test -z because SunOS4 sh mishandles braces in ${var-val}.\r
+# It thinks the first close brace ends the variable substitution.\r
+test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'\r
+\r
+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'\r
+\r
+test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'\r
+\r
+for ac_prog in lex flex\r
+do\r
+  # Extract the first word of "$ac_prog", so it can be a program name with args.\r
+set dummy $ac_prog; ac_word=$2\r
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5\r
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }\r
+if test "${ac_cv_prog_LEX+set}" = set; then\r
+  echo $ECHO_N "(cached) $ECHO_C" >&6\r
+else\r
+  if test -n "$LEX"; then\r
+  ac_cv_prog_LEX="$LEX" # Let the user override the test.\r
+else\r
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR\r
+for as_dir in $PATH\r
+do\r
+  IFS=$as_save_IFS\r
+  test -z "$as_dir" && as_dir=.\r
+  for ac_exec_ext in '' $ac_executable_extensions; do\r
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then\r
+    ac_cv_prog_LEX="$ac_prog"\r
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5\r
+    break 2\r
+  fi\r
+done\r
+done\r
+IFS=$as_save_IFS\r
+\r
+fi\r
+fi\r
+LEX=$ac_cv_prog_LEX\r
+if test -n "$LEX"; then\r
+  { echo "$as_me:$LINENO: result: $LEX" >&5\r
+echo "${ECHO_T}$LEX" >&6; }\r
+else\r
+  { echo "$as_me:$LINENO: result: no" >&5\r
+echo "${ECHO_T}no" >&6; }\r
+fi\r
+\r
+\r
+  test -n "$LEX" && break\r
+done\r
+test -n "$LEX" || LEX="lex_not_found"\r
+\r
+if test "$LEX" != lex_not_found ; then\r
+  for ac_prog in flex lex\r
+do\r
+  # Extract the first word of "$ac_prog", so it can be a program name with args.\r
+set dummy $ac_prog; ac_word=$2\r
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5\r
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }\r
+if test "${ac_cv_prog_LEX+set}" = set; then\r
+  echo $ECHO_N "(cached) $ECHO_C" >&6\r
+else\r
+  if test -n "$LEX"; then\r
+  ac_cv_prog_LEX="$LEX" # Let the user override the test.\r
+else\r
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR\r
+for as_dir in $PATH\r
+do\r
+  IFS=$as_save_IFS\r
+  test -z "$as_dir" && as_dir=.\r
+  for ac_exec_ext in '' $ac_executable_extensions; do\r
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then\r
+    ac_cv_prog_LEX="$ac_prog"\r
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5\r
+    break 2\r
+  fi\r
+done\r
+done\r
+IFS=$as_save_IFS\r
+\r
+fi\r
+fi\r
+LEX=$ac_cv_prog_LEX\r
+if test -n "$LEX"; then\r
+  { echo "$as_me:$LINENO: result: $LEX" >&5\r
+echo "${ECHO_T}$LEX" >&6; }\r
+else\r
+  { echo "$as_me:$LINENO: result: no" >&5\r
+echo "${ECHO_T}no" >&6; }\r
+fi\r
+\r
+\r
+  test -n "$LEX" && break\r
+done\r
+test -n "$LEX" || LEX=":"\r
+\r
+if test "x$LEX" != "x:"; then\r
+  cat >conftest.l <<_ACEOF\r
+%%\r
+a { ECHO; }\r
+b { REJECT; }\r
+c { yymore (); }\r
+d { yyless (1); }\r
+e { yyless (input () != 0); }\r
+f { unput (yytext[0]); }\r
+. { BEGIN INITIAL; }\r
+%%\r
+#ifdef YYTEXT_POINTER\r
+extern char *yytext;\r
+#endif\r
+int\r
+main (void)\r
+{\r
+  return ! yylex () + ! yywrap ();\r
+}\r
+_ACEOF\r
+{ (ac_try="$LEX conftest.l"\r
+case "(($ac_try" in\r
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;\r
+  *) ac_try_echo=$ac_try;;\r
+esac\r
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5\r
+  (eval "$LEX conftest.l") 2>&5\r
+  ac_status=$?\r
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5\r
+  (exit $ac_status); }\r
+{ echo "$as_me:$LINENO: checking lex output file root" >&5\r
+echo $ECHO_N "checking lex output file root... $ECHO_C" >&6; }\r
+if test "${ac_cv_prog_lex_root+set}" = set; then\r
+  echo $ECHO_N "(cached) $ECHO_C" >&6\r
+else\r
+\r
+if test -f lex.yy.c; then\r
+  ac_cv_prog_lex_root=lex.yy\r
+elif test -f lexyy.c; then\r
+  ac_cv_prog_lex_root=lexyy\r
+else\r
+  { { echo "$as_me:$LINENO: error: cannot find output from $LEX; giving up" >&5\r
+echo "$as_me: error: cannot find output from $LEX; giving up" >&2;}\r
+   { (exit 1); exit 1; }; }\r
+fi\r
+fi\r
+{ echo "$as_me:$LINENO: result: $ac_cv_prog_lex_root" >&5\r
+echo "${ECHO_T}$ac_cv_prog_lex_root" >&6; }\r
+LEX_OUTPUT_ROOT=$ac_cv_prog_lex_root\r
+\r
+if test -z "${LEXLIB+set}"; then\r
+  { echo "$as_me:$LINENO: checking lex library" >&5\r
+echo $ECHO_N "checking lex library... $ECHO_C" >&6; }\r
+if test "${ac_cv_lib_lex+set}" = set; then\r
+  echo $ECHO_N "(cached) $ECHO_C" >&6\r
+else\r
+\r
+    ac_save_LIBS=$LIBS\r
+    ac_cv_lib_lex='none needed'\r
+    for ac_lib in '' -lfl -ll; do\r
+      LIBS="$ac_lib $ac_save_LIBS"\r
+      cat >conftest.$ac_ext <<_ACEOF\r
+`cat $LEX_OUTPUT_ROOT.c`\r
+_ACEOF\r
+rm -f conftest.$ac_objext conftest$ac_exeext\r
+if { (ac_try="$ac_link"\r
+case "(($ac_try" in\r
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;\r
+  *) ac_try_echo=$ac_try;;\r
+esac\r
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5\r
+  (eval "$ac_link") 2>conftest.er1\r
+  ac_status=$?\r
+  grep -v '^ *+' conftest.er1 >conftest.err\r
+  rm -f conftest.er1\r
+  cat conftest.err >&5\r
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5\r
+  (exit $ac_status); } && {\r
+        test -z "$ac_c_werror_flag" ||\r
+        test ! -s conftest.err\r
+       } && test -s conftest$ac_exeext &&\r
+       $as_test_x conftest$ac_exeext; then\r
+  ac_cv_lib_lex=$ac_lib\r
+else\r
+  echo "$as_me: failed program was:" >&5\r
+sed 's/^/| /' conftest.$ac_ext >&5\r
+\r
+\r
+fi\r
+\r
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \\r
+      conftest$ac_exeext conftest.$ac_ext\r
+      test "$ac_cv_lib_lex" != 'none needed' && break\r
+    done\r
+    LIBS=$ac_save_LIBS\r
+\r
+fi\r
+{ echo "$as_me:$LINENO: result: $ac_cv_lib_lex" >&5\r
+echo "${ECHO_T}$ac_cv_lib_lex" >&6; }\r
+  test "$ac_cv_lib_lex" != 'none needed' && LEXLIB=$ac_cv_lib_lex\r
+fi\r
+\r
+\r
+{ echo "$as_me:$LINENO: checking whether yytext is a pointer" >&5\r
+echo $ECHO_N "checking whether yytext is a pointer... $ECHO_C" >&6; }\r
+if test "${ac_cv_prog_lex_yytext_pointer+set}" = set; then\r
+  echo $ECHO_N "(cached) $ECHO_C" >&6\r
+else\r
+  # POSIX says lex can declare yytext either as a pointer or an array; the\r
+# default is implementation-dependent.  Figure out which it is, since\r
+# not all implementations provide the %pointer and %array declarations.\r
+ac_cv_prog_lex_yytext_pointer=no\r
+ac_save_LIBS=$LIBS\r
+LIBS="$LEXLIB $ac_save_LIBS"\r
+cat >conftest.$ac_ext <<_ACEOF\r
+#define YYTEXT_POINTER 1\r
+`cat $LEX_OUTPUT_ROOT.c`\r
+_ACEOF\r
+rm -f conftest.$ac_objext conftest$ac_exeext\r
+if { (ac_try="$ac_link"\r
+case "(($ac_try" in\r
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;\r
+  *) ac_try_echo=$ac_try;;\r
+esac\r
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5\r
+  (eval "$ac_link") 2>conftest.er1\r
+  ac_status=$?\r
+  grep -v '^ *+' conftest.er1 >conftest.err\r
+  rm -f conftest.er1\r
+  cat conftest.err >&5\r
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5\r
+  (exit $ac_status); } && {\r
+        test -z "$ac_c_werror_flag" ||\r
+        test ! -s conftest.err\r
+       } && test -s conftest$ac_exeext &&\r
+       $as_test_x conftest$ac_exeext; then\r
+  ac_cv_prog_lex_yytext_pointer=yes\r
+else\r
+  echo "$as_me: failed program was:" >&5\r
+sed 's/^/| /' conftest.$ac_ext >&5\r
+\r
+\r
+fi\r
+\r
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \\r
+      conftest$ac_exeext conftest.$ac_ext\r
+LIBS=$ac_save_LIBS\r
+\r
+fi\r
+{ echo "$as_me:$LINENO: result: $ac_cv_prog_lex_yytext_pointer" >&5\r
+echo "${ECHO_T}$ac_cv_prog_lex_yytext_pointer" >&6; }\r
+if test $ac_cv_prog_lex_yytext_pointer = yes; then\r
+\r
+cat >>confdefs.h <<\_ACEOF\r
+#define YYTEXT_POINTER 1\r
+_ACEOF\r
+\r
+fi\r
+rm -f conftest.l $LEX_OUTPUT_ROOT.c\r
+\r
+fi\r
+fi\r
+for ac_prog in remsh rsh\r
+do\r
+  # Extract the first word of "$ac_prog", so it can be a program name with args.\r
+set dummy $ac_prog; ac_word=$2\r
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5\r
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }\r
+if test "${ac_cv_prog_RSH+set}" = set; then\r
+  echo $ECHO_N "(cached) $ECHO_C" >&6\r
+else\r
+  if test -n "$RSH"; then\r
+  ac_cv_prog_RSH="$RSH" # Let the user override the test.\r
+else\r
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR\r
+for as_dir in $PATH\r
+do\r
+  IFS=$as_save_IFS\r
+  test -z "$as_dir" && as_dir=.\r
+  for ac_exec_ext in '' $ac_executable_extensions; do\r
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then\r
+    ac_cv_prog_RSH="$ac_prog"\r
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5\r
+    break 2\r
+  fi\r
+done\r
+done\r
+IFS=$as_save_IFS\r
+\r
+fi\r
+fi\r
+RSH=$ac_cv_prog_RSH\r
+if test -n "$RSH"; then\r
+  { echo "$as_me:$LINENO: result: $RSH" >&5\r
+echo "${ECHO_T}$RSH" >&6; }\r
+else\r
+  { echo "$as_me:$LINENO: result: no" >&5\r
+echo "${ECHO_T}no" >&6; }\r
+fi\r
+\r
+\r
+  test -n "$RSH" && break\r
+done\r
+test -n "$RSH" || RSH="rsh"\r
+\r
+for ac_prog in makeinfo\r
+do\r
+  # Extract the first word of "$ac_prog", so it can be a program name with args.\r
+set dummy $ac_prog; ac_word=$2\r
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5\r
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }\r
+if test "${ac_cv_prog_MINFO+set}" = set; then\r
+  echo $ECHO_N "(cached) $ECHO_C" >&6\r
+else\r
+  if test -n "$MINFO"; then\r
+  ac_cv_prog_MINFO="$MINFO" # Let the user override the test.\r
+else\r
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR\r
+for as_dir in $PATH\r
+do\r
+  IFS=$as_save_IFS\r
+  test -z "$as_dir" && as_dir=.\r
+  for ac_exec_ext in '' $ac_executable_extensions; do\r
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then\r
+    ac_cv_prog_MINFO="$ac_prog"\r
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5\r
+    break 2\r
+  fi\r
+done\r
+done\r
+IFS=$as_save_IFS\r
+\r
+fi\r
+fi\r
+MINFO=$ac_cv_prog_MINFO\r
+if test -n "$MINFO"; then\r
+  { echo "$as_me:$LINENO: result: $MINFO" >&5\r
+echo "${ECHO_T}$MINFO" >&6; }\r
+else\r
+  { echo "$as_me:$LINENO: result: no" >&5\r
+echo "${ECHO_T}no" >&6; }\r
+fi\r
+\r
+\r
+  test -n "$MINFO" && break\r
+done\r
+test -n "$MINFO" || MINFO="makeinfo_not_found"\r
+\r
+if test "$MINFO" == makeinfo_not_found ; then\r
+   echo Please install \"makeinfo\"\r
+   exit 1\r
+fi\r
+cat >>confdefs.h <<_ACEOF\r
+#define REMOTE_SHELL "$RSH"\r
+_ACEOF\r
+\r
+# Extract the first word of "nroff", so it can be a program name with args.\r
+set dummy nroff; ac_word=$2\r
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5\r
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }\r
+if test "${ac_cv_prog_NROFF+set}" = set; then\r
+  echo $ECHO_N "(cached) $ECHO_C" >&6\r
+else\r
+  if test -n "$NROFF"; then\r
+  ac_cv_prog_NROFF="$NROFF" # Let the user override the test.\r
+else\r
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR\r
+for as_dir in $PATH\r
+do\r
+  IFS=$as_save_IFS\r
+  test -z "$as_dir" && as_dir=.\r
+  for ac_exec_ext in '' $ac_executable_extensions; do\r
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then\r
+    ac_cv_prog_NROFF="nroff -man"\r
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5\r
+    break 2\r
+  fi\r
+done\r
+done\r
+IFS=$as_save_IFS\r
+\r
+  test -z "$ac_cv_prog_NROFF" && ac_cv_prog_NROFF="cat"\r
+fi\r
+fi\r
+NROFF=$ac_cv_prog_NROFF\r
+if test -n "$NROFF"; then\r
+  { echo "$as_me:$LINENO: result: $NROFF" >&5\r
+echo "${ECHO_T}$NROFF" >&6; }\r
+else\r
+  { echo "$as_me:$LINENO: result: no" >&5\r
+echo "${ECHO_T}no" >&6; }\r
+fi\r
+\r
+\r
+\r
+for ac_prog in awk mawk gawk nawk\r
+do\r
+  # Extract the first word of "$ac_prog", so it can be a program name with args.\r
+set dummy $ac_prog; ac_word=$2\r
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5\r
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }\r
+if test "${ac_cv_path_AWKPATH+set}" = set; then\r
+  echo $ECHO_N "(cached) $ECHO_C" >&6\r
+else\r
+  case $AWKPATH in\r
+  [\\/]* | ?:[\\/]*)\r
+  ac_cv_path_AWKPATH="$AWKPATH" # Let the user override the test with a path.\r
+  ;;\r
+  *)\r
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR\r
+for as_dir in $PATH\r
+do\r
+  IFS=$as_save_IFS\r
+  test -z "$as_dir" && as_dir=.\r
+  for ac_exec_ext in '' $ac_executable_extensions; do\r
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then\r
+    ac_cv_path_AWKPATH="$as_dir/$ac_word$ac_exec_ext"\r
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5\r
+    break 2\r
+  fi\r
+done\r
+done\r
+IFS=$as_save_IFS\r
+\r
+  ;;\r
+esac\r
+fi\r
+AWKPATH=$ac_cv_path_AWKPATH\r
+if test -n "$AWKPATH"; then\r
+  { echo "$as_me:$LINENO: result: $AWKPATH" >&5\r
+echo "${ECHO_T}$AWKPATH" >&6; }\r
+else\r
+  { echo "$as_me:$LINENO: result: no" >&5\r
+echo "${ECHO_T}no" >&6; }\r
+fi\r
+\r
+\r
+  test -n "$AWKPATH" && break\r
+done\r
+\r
+for ac_prog in perl\r
+do\r
+  # Extract the first word of "$ac_prog", so it can be a program name with args.\r
+set dummy $ac_prog; ac_word=$2\r
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5\r
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }\r
+if test "${ac_cv_path_PERLPATH+set}" = set; then\r
+  echo $ECHO_N "(cached) $ECHO_C" >&6\r
+else\r
+  case $PERLPATH in\r
+  [\\/]* | ?:[\\/]*)\r
+  ac_cv_path_PERLPATH="$PERLPATH" # Let the user override the test with a path.\r
+  ;;\r
+  *)\r
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR\r
+for as_dir in $PATH\r
+do\r
+  IFS=$as_save_IFS\r
+  test -z "$as_dir" && as_dir=.\r
+  for ac_exec_ext in '' $ac_executable_extensions; do\r
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then\r
+    ac_cv_path_PERLPATH="$as_dir/$ac_word$ac_exec_ext"\r
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5\r
+    break 2\r
+  fi\r
+done\r
+done\r
+IFS=$as_save_IFS\r
+\r
+  ;;\r
+esac\r
+fi\r
+PERLPATH=$ac_cv_path_PERLPATH\r
+if test -n "$PERLPATH"; then\r
+  { echo "$as_me:$LINENO: result: $PERLPATH" >&5\r
+echo "${ECHO_T}$PERLPATH" >&6; }\r
+else\r
+  { echo "$as_me:$LINENO: result: no" >&5\r
+echo "${ECHO_T}no" >&6; }\r
+fi\r
+\r
+\r
+  test -n "$PERLPATH" && break\r
+done\r
+\r
+\r
+\r
+\r
+\r
+\r
+{ echo "$as_me:$LINENO: checking for grep that handles long lines and -e" >&5\r
+echo $ECHO_N "checking for grep that handles long lines and -e... $ECHO_C" >&6; }\r
+if test "${ac_cv_path_GREP+set}" = set; then\r
+  echo $ECHO_N "(cached) $ECHO_C" >&6\r
+else\r
+  # Extract the first word of "grep ggrep" to use in msg output\r
+if test -z "$GREP"; then\r
+set dummy grep ggrep; ac_prog_name=$2\r
+if test "${ac_cv_path_GREP+set}" = set; then\r
+  echo $ECHO_N "(cached) $ECHO_C" >&6\r
+else\r
+  ac_path_GREP_found=false\r
+# Loop through the user's path and test for each of PROGNAME-LIST\r
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR\r
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin\r
+do\r
+  IFS=$as_save_IFS\r
+  test -z "$as_dir" && as_dir=.\r
+  for ac_prog in grep ggrep; do\r
+  for ac_exec_ext in '' $ac_executable_extensions; do\r
+    ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"\r
+    { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue\r
+    # Check for GNU ac_path_GREP and select it if it is found.\r
+  # Check for GNU $ac_path_GREP\r
+case `"$ac_path_GREP" --version 2>&1` in\r
+*GNU*)\r
+  ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;\r
+*)\r
+  ac_count=0\r
+  echo $ECHO_N "0123456789$ECHO_C" >"conftest.in"\r
+  while :\r
+  do\r
+    cat "conftest.in" "conftest.in" >"conftest.tmp"\r
+    mv "conftest.tmp" "conftest.in"\r
+    cp "conftest.in" "conftest.nl"\r
+    echo 'GREP' >> "conftest.nl"\r
+    "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break\r
+    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break\r
+    ac_count=`expr $ac_count + 1`\r
+    if test $ac_count -gt ${ac_path_GREP_max-0}; then\r
+      # Best one so far, save it but keep looking for a better one\r
+      ac_cv_path_GREP="$ac_path_GREP"\r
+      ac_path_GREP_max=$ac_count\r
+    fi\r
+    # 10*(2^10) chars as input seems more than enough\r
+    test $ac_count -gt 10 && break\r
+  done\r
+  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;\r
+esac\r
+\r
+\r
+    $ac_path_GREP_found && break 3\r
+  done\r
+done\r
+\r
+done\r
+IFS=$as_save_IFS\r
+\r
+\r
+fi\r
+\r
+GREP="$ac_cv_path_GREP"\r
+if test -z "$GREP"; then\r
+  { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5\r
+echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;}\r
+   { (exit 1); exit 1; }; }\r
+fi\r
+\r
+else\r
+  ac_cv_path_GREP=$GREP\r
+fi\r
+\r
+\r
+fi\r
+{ echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5\r
+echo "${ECHO_T}$ac_cv_path_GREP" >&6; }\r
+ GREP="$ac_cv_path_GREP"\r
+\r
+\r
+{ echo "$as_me:$LINENO: checking for egrep" >&5\r
+echo $ECHO_N "checking for egrep... $ECHO_C" >&6; }\r
+if test "${ac_cv_path_EGREP+set}" = set; then\r
+  echo $ECHO_N "(cached) $ECHO_C" >&6\r
+else\r
+  if echo a | $GREP -E '(a|b)' >/dev/null 2>&1\r
+   then ac_cv_path_EGREP="$GREP -E"\r
+   else\r
+     # Extract the first word of "egrep" to use in msg output\r
+if test -z "$EGREP"; then\r
+set dummy egrep; ac_prog_name=$2\r
+if test "${ac_cv_path_EGREP+set}" = set; then\r
+  echo $ECHO_N "(cached) $ECHO_C" >&6\r
+else\r
+  ac_path_EGREP_found=false\r
+# Loop through the user's path and test for each of PROGNAME-LIST\r
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR\r
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin\r
+do\r
+  IFS=$as_save_IFS\r
+  test -z "$as_dir" && as_dir=.\r
+  for ac_prog in egrep; do\r
+  for ac_exec_ext in '' $ac_executable_extensions; do\r
+    ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"\r
+    { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue\r
+    # Check for GNU ac_path_EGREP and select it if it is found.\r
+  # Check for GNU $ac_path_EGREP\r
+case `"$ac_path_EGREP" --version 2>&1` in\r
+*GNU*)\r
+  ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;\r
+*)\r
+  ac_count=0\r
+  echo $ECHO_N "0123456789$ECHO_C" >"conftest.in"\r
+  while :\r
+  do\r
+    cat "conftest.in" "conftest.in" >"conftest.tmp"\r
+    mv "conftest.tmp" "conftest.in"\r
+    cp "conftest.in" "conftest.nl"\r
+    echo 'EGREP' >> "conftest.nl"\r
+    "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break\r
+    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break\r
+    ac_count=`expr $ac_count + 1`\r
+    if test $ac_count -gt ${ac_path_EGREP_max-0}; then\r
+      # Best one so far, save it but keep looking for a better one\r
+      ac_cv_path_EGREP="$ac_path_EGREP"\r
+      ac_path_EGREP_max=$ac_count\r
+    fi\r
+    # 10*(2^10) chars as input seems more than enough\r
+    test $ac_count -gt 10 && break\r
+  done\r
+  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;\r
+esac\r
+\r
+\r
+    $ac_path_EGREP_found && break 3\r
+  done\r
+done\r
+\r
+done\r
+IFS=$as_save_IFS\r
+\r
+\r
+fi\r
+\r
+EGREP="$ac_cv_path_EGREP"\r
+if test -z "$EGREP"; then\r
+  { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5\r
+echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;}\r
+   { (exit 1); exit 1; }; }\r
+fi\r
+\r
+else\r
+  ac_cv_path_EGREP=$EGREP\r
+fi\r
+\r
+\r
+   fi\r
+fi\r
+{ echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5\r
+echo "${ECHO_T}$ac_cv_path_EGREP" >&6; }\r
+ EGREP="$ac_cv_path_EGREP"\r
+\r
+\r
+{ echo "$as_me:$LINENO: checking for ANSI C header files" >&5\r
+echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6; }\r
+if test "${ac_cv_header_stdc+set}" = set; then\r
+  echo $ECHO_N "(cached) $ECHO_C" >&6\r
+else\r
+  cat >conftest.$ac_ext <<_ACEOF\r
+/* confdefs.h.  */\r
+_ACEOF\r
+cat confdefs.h >>conftest.$ac_ext\r
+cat >>conftest.$ac_ext <<_ACEOF\r
+/* end confdefs.h.  */\r
+#include <stdlib.h>\r
+#include <stdarg.h>\r
+#include <string.h>\r
+#include <float.h>\r
+\r
+int\r
+main ()\r
+{\r
+\r
+  ;\r
+  return 0;\r
+}\r
+_ACEOF\r
+rm -f conftest.$ac_objext\r
+if { (ac_try="$ac_compile"\r
+case "(($ac_try" in\r
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;\r
+  *) ac_try_echo=$ac_try;;\r
+esac\r
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5\r
+  (eval "$ac_compile") 2>conftest.er1\r
+  ac_status=$?\r
+  grep -v '^ *+' conftest.er1 >conftest.err\r
+  rm -f conftest.er1\r
+  cat conftest.err >&5\r
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5\r
+  (exit $ac_status); } && {\r
+        test -z "$ac_c_werror_flag" ||\r
+        test ! -s conftest.err\r
+       } && test -s conftest.$ac_objext; then\r
+  ac_cv_header_stdc=yes\r
+else\r
+  echo "$as_me: failed program was:" >&5\r
+sed 's/^/| /' conftest.$ac_ext >&5\r
+\r
+       ac_cv_header_stdc=no\r
+fi\r
+\r
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext\r
+\r
+if test $ac_cv_header_stdc = yes; then\r
+  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.\r
+  cat >conftest.$ac_ext <<_ACEOF\r
+/* confdefs.h.  */\r
+_ACEOF\r
+cat confdefs.h >>conftest.$ac_ext\r
+cat >>conftest.$ac_ext <<_ACEOF\r
+/* end confdefs.h.  */\r
+#include <string.h>\r
+\r
+_ACEOF\r
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |\r
+  $EGREP "memchr" >/dev/null 2>&1; then\r
+  :\r
+else\r
+  ac_cv_header_stdc=no\r
+fi\r
+rm -f conftest*\r
+\r
+fi\r
+\r
+if test $ac_cv_header_stdc = yes; then\r
+  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.\r
+  cat >conftest.$ac_ext <<_ACEOF\r
+/* confdefs.h.  */\r
+_ACEOF\r
+cat confdefs.h >>conftest.$ac_ext\r
+cat >>conftest.$ac_ext <<_ACEOF\r
+/* end confdefs.h.  */\r
+#include <stdlib.h>\r
+\r
+_ACEOF\r
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |\r
+  $EGREP "free" >/dev/null 2>&1; then\r
+  :\r
+else\r
+  ac_cv_header_stdc=no\r
+fi\r
+rm -f conftest*\r
+\r
+fi\r
+\r
+if test $ac_cv_header_stdc = yes; then\r
+  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.\r
+  if test "$cross_compiling" = yes; then\r
+  :\r
+else\r
+  cat >conftest.$ac_ext <<_ACEOF\r
+/* confdefs.h.  */\r
+_ACEOF\r
+cat confdefs.h >>conftest.$ac_ext\r
+cat >>conftest.$ac_ext <<_ACEOF\r
+/* end confdefs.h.  */\r
+#include <ctype.h>\r
+#include <stdlib.h>\r
+#if ((' ' & 0x0FF) == 0x020)\r
+# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')\r
+# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))\r
+#else\r
+# define ISLOWER(c) \\r
+                  (('a' <= (c) && (c) <= 'i') \\r
+                    || ('j' <= (c) && (c) <= 'r') \\r
+                    || ('s' <= (c) && (c) <= 'z'))\r
+# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))\r
+#endif\r
+\r
+#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))\r
+int\r
+main ()\r
+{\r
+  int i;\r
+  for (i = 0; i < 256; i++)\r
+    if (XOR (islower (i), ISLOWER (i))\r
+       || toupper (i) != TOUPPER (i))\r
+      return 2;\r
+  return 0;\r
+}\r
+_ACEOF\r
+rm -f conftest$ac_exeext\r
+if { (ac_try="$ac_link"\r
+case "(($ac_try" in\r
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;\r
+  *) ac_try_echo=$ac_try;;\r
+esac\r
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5\r
+  (eval "$ac_link") 2>&5\r
+  ac_status=$?\r
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5\r
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'\r
+  { (case "(($ac_try" in\r
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;\r
+  *) ac_try_echo=$ac_try;;\r
+esac\r
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5\r
+  (eval "$ac_try") 2>&5\r
+  ac_status=$?\r
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5\r
+  (exit $ac_status); }; }; then\r
+  :\r
+else\r
+  echo "$as_me: program exited with status $ac_status" >&5\r
+echo "$as_me: failed program was:" >&5\r
+sed 's/^/| /' conftest.$ac_ext >&5\r
+\r
+( exit $ac_status )\r
+ac_cv_header_stdc=no\r
+fi\r
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext\r
+fi\r
+\r
+\r
+fi\r
+fi\r
+{ echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5\r
+echo "${ECHO_T}$ac_cv_header_stdc" >&6; }\r
+if test $ac_cv_header_stdc = yes; then\r
+\r
+cat >>confdefs.h <<\_ACEOF\r
+#define STDC_HEADERS 1\r
+_ACEOF\r
+\r
+fi\r
+\r
+{ echo "$as_me:$LINENO: checking whether time.h and sys/time.h may both be included" >&5\r
+echo $ECHO_N "checking whether time.h and sys/time.h may both be included... $ECHO_C" >&6; }\r
+if test "${ac_cv_header_time+set}" = set; then\r
+  echo $ECHO_N "(cached) $ECHO_C" >&6\r
+else\r
+  cat >conftest.$ac_ext <<_ACEOF\r
+/* confdefs.h.  */\r
+_ACEOF\r
+cat confdefs.h >>conftest.$ac_ext\r
+cat >>conftest.$ac_ext <<_ACEOF\r
+/* end confdefs.h.  */\r
+#include <sys/types.h>\r
+#include <sys/time.h>\r
+#include <time.h>\r
+\r
+int\r
+main ()\r
+{\r
+if ((struct tm *) 0)\r
+return 0;\r
+  ;\r
+  return 0;\r
+}\r
+_ACEOF\r
+rm -f conftest.$ac_objext\r
+if { (ac_try="$ac_compile"\r
+case "(($ac_try" in\r
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;\r
+  *) ac_try_echo=$ac_try;;\r
+esac\r
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5\r
+  (eval "$ac_compile") 2>conftest.er1\r
+  ac_status=$?\r
+  grep -v '^ *+' conftest.er1 >conftest.err\r
+  rm -f conftest.er1\r
+  cat conftest.err >&5\r
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5\r
+  (exit $ac_status); } && {\r
+        test -z "$ac_c_werror_flag" ||\r
+        test ! -s conftest.err\r
+       } && test -s conftest.$ac_objext; then\r
+  ac_cv_header_time=yes\r
+else\r
+  echo "$as_me: failed program was:" >&5\r
+sed 's/^/| /' conftest.$ac_ext >&5\r
+\r
+       ac_cv_header_time=no\r
+fi\r
+\r
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext\r
+fi\r
+{ echo "$as_me:$LINENO: result: $ac_cv_header_time" >&5\r
+echo "${ECHO_T}$ac_cv_header_time" >&6; }\r
+if test $ac_cv_header_time = yes; then\r
+\r
+cat >>confdefs.h <<\_ACEOF\r
+#define TIME_WITH_SYS_TIME 1\r
+_ACEOF\r
+\r
+fi\r
+\r
+{ echo "$as_me:$LINENO: checking for sys/wait.h that is POSIX.1 compatible" >&5\r
+echo $ECHO_N "checking for sys/wait.h that is POSIX.1 compatible... $ECHO_C" >&6; }\r
+if test "${ac_cv_header_sys_wait_h+set}" = set; then\r
+  echo $ECHO_N "(cached) $ECHO_C" >&6\r
+else\r
+  cat >conftest.$ac_ext <<_ACEOF\r
+/* confdefs.h.  */\r
+_ACEOF\r
+cat confdefs.h >>conftest.$ac_ext\r
+cat >>conftest.$ac_ext <<_ACEOF\r
+/* end confdefs.h.  */\r
+#include <sys/types.h>\r
+#include <sys/wait.h>\r
+#ifndef WEXITSTATUS\r
+# define WEXITSTATUS(stat_val) ((unsigned int) (stat_val) >> 8)\r
+#endif\r
+#ifndef WIFEXITED\r
+# define WIFEXITED(stat_val) (((stat_val) & 255) == 0)\r
+#endif\r
+\r
+int\r
+main ()\r
+{\r
+  int s;\r
+  wait (&s);\r
+  s = WIFEXITED (s) ? WEXITSTATUS (s) : 1;\r
+  ;\r
+  return 0;\r
+}\r
+_ACEOF\r
+rm -f conftest.$ac_objext\r
+if { (ac_try="$ac_compile"\r
+case "(($ac_try" in\r
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;\r
+  *) ac_try_echo=$ac_try;;\r
+esac\r
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5\r
+  (eval "$ac_compile") 2>conftest.er1\r
+  ac_status=$?\r
+  grep -v '^ *+' conftest.er1 >conftest.err\r
+  rm -f conftest.er1\r
+  cat conftest.err >&5\r
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5\r
+  (exit $ac_status); } && {\r
+        test -z "$ac_c_werror_flag" ||\r
+        test ! -s conftest.err\r
+       } && test -s conftest.$ac_objext; then\r
+  ac_cv_header_sys_wait_h=yes\r
+else\r
+  echo "$as_me: failed program was:" >&5\r
+sed 's/^/| /' conftest.$ac_ext >&5\r
+\r
+       ac_cv_header_sys_wait_h=no\r
+fi\r
+\r
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext\r
+fi\r
+{ echo "$as_me:$LINENO: result: $ac_cv_header_sys_wait_h" >&5\r
+echo "${ECHO_T}$ac_cv_header_sys_wait_h" >&6; }\r
+if test $ac_cv_header_sys_wait_h = yes; then\r
+\r
+cat >>confdefs.h <<\_ACEOF\r
+#define HAVE_SYS_WAIT_H 1\r
+_ACEOF\r
+\r
+fi\r
+\r
+\r
+\r
+\r
+\r
+\r
+ac_header_dirent=no\r
+for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h; do\r
+  as_ac_Header=`echo "ac_cv_header_dirent_$ac_hdr" | $as_tr_sh`\r
+{ echo "$as_me:$LINENO: checking for $ac_hdr that defines DIR" >&5\r
+echo $ECHO_N "checking for $ac_hdr that defines DIR... $ECHO_C" >&6; }\r
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then\r
+  echo $ECHO_N "(cached) $ECHO_C" >&6\r
+else\r
+  cat >conftest.$ac_ext <<_ACEOF\r
+/* confdefs.h.  */\r
+_ACEOF\r
+cat confdefs.h >>conftest.$ac_ext\r
+cat >>conftest.$ac_ext <<_ACEOF\r
+/* end confdefs.h.  */\r
+#include <sys/types.h>\r
+#include <$ac_hdr>\r
+\r
+int\r
+main ()\r
+{\r
+if ((DIR *) 0)\r
+return 0;\r
+  ;\r
+  return 0;\r
+}\r
+_ACEOF\r
+rm -f conftest.$ac_objext\r
+if { (ac_try="$ac_compile"\r
+case "(($ac_try" in\r
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;\r
+  *) ac_try_echo=$ac_try;;\r
+esac\r
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5\r
+  (eval "$ac_compile") 2>conftest.er1\r
+  ac_status=$?\r
+  grep -v '^ *+' conftest.er1 >conftest.err\r
+  rm -f conftest.er1\r
+  cat conftest.err >&5\r
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5\r
+  (exit $ac_status); } && {\r
+        test -z "$ac_c_werror_flag" ||\r
+        test ! -s conftest.err\r
+       } && test -s conftest.$ac_objext; then\r
+  eval "$as_ac_Header=yes"\r
+else\r
+  echo "$as_me: failed program was:" >&5\r
+sed 's/^/| /' conftest.$ac_ext >&5\r
+\r
+       eval "$as_ac_Header=no"\r
+fi\r
+\r
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext\r
+fi\r
+ac_res=`eval echo '${'$as_ac_Header'}'`\r
+              { echo "$as_me:$LINENO: result: $ac_res" >&5\r
+echo "${ECHO_T}$ac_res" >&6; }\r
+if test `eval echo '${'$as_ac_Header'}'` = yes; then\r
+  cat >>confdefs.h <<_ACEOF\r
+#define `echo "HAVE_$ac_hdr" | $as_tr_cpp` 1\r
+_ACEOF\r
+\r
+ac_header_dirent=$ac_hdr; break\r
+fi\r
+\r
+done\r
+# Two versions of opendir et al. are in -ldir and -lx on SCO Xenix.\r
+if test $ac_header_dirent = dirent.h; then\r
+  { echo "$as_me:$LINENO: checking for library containing opendir" >&5\r
+echo $ECHO_N "checking for library containing opendir... $ECHO_C" >&6; }\r
+if test "${ac_cv_search_opendir+set}" = set; then\r
+  echo $ECHO_N "(cached) $ECHO_C" >&6\r
+else\r
+  ac_func_search_save_LIBS=$LIBS\r
+cat >conftest.$ac_ext <<_ACEOF\r
+/* confdefs.h.  */\r
+_ACEOF\r
+cat confdefs.h >>conftest.$ac_ext\r
+cat >>conftest.$ac_ext <<_ACEOF\r
+/* end confdefs.h.  */\r
+\r
+/* Override any GCC internal prototype to avoid an error.\r
+   Use char because int might match the return type of a GCC\r
+   builtin and then its argument prototype would still apply.  */\r
+#ifdef __cplusplus\r
+extern "C"\r
+#endif\r
+char opendir ();\r
+int\r
+main ()\r
+{\r
+return opendir ();\r
+  ;\r
+  return 0;\r
+}\r
+_ACEOF\r
+for ac_lib in '' dir; do\r
+  if test -z "$ac_lib"; then\r
+    ac_res="none required"\r
+  else\r
+    ac_res=-l$ac_lib\r
+    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"\r
+  fi\r
+  rm -f conftest.$ac_objext conftest$ac_exeext\r
+if { (ac_try="$ac_link"\r
+case "(($ac_try" in\r
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;\r
+  *) ac_try_echo=$ac_try;;\r
+esac\r
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5\r
+  (eval "$ac_link") 2>conftest.er1\r
+  ac_status=$?\r
+  grep -v '^ *+' conftest.er1 >conftest.err\r
+  rm -f conftest.er1\r
+  cat conftest.err >&5\r
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5\r
+  (exit $ac_status); } && {\r
+        test -z "$ac_c_werror_flag" ||\r
+        test ! -s conftest.err\r
+       } && test -s conftest$ac_exeext &&\r
+       $as_test_x conftest$ac_exeext; then\r
+  ac_cv_search_opendir=$ac_res\r
+else\r
+  echo "$as_me: failed program was:" >&5\r
+sed 's/^/| /' conftest.$ac_ext >&5\r
+\r
+\r
+fi\r
+\r
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \\r
+      conftest$ac_exeext\r
+  if test "${ac_cv_search_opendir+set}" = set; then\r
+  break\r
+fi\r
+done\r
+if test "${ac_cv_search_opendir+set}" = set; then\r
+  :\r
+else\r
+  ac_cv_search_opendir=no\r
+fi\r
+rm conftest.$ac_ext\r
+LIBS=$ac_func_search_save_LIBS\r
+fi\r
+{ echo "$as_me:$LINENO: result: $ac_cv_search_opendir" >&5\r
+echo "${ECHO_T}$ac_cv_search_opendir" >&6; }\r
+ac_res=$ac_cv_search_opendir\r
+if test "$ac_res" != no; then\r
+  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"\r
+\r
+fi\r
+\r
+else\r
+  { echo "$as_me:$LINENO: checking for library containing opendir" >&5\r
+echo $ECHO_N "checking for library containing opendir... $ECHO_C" >&6; }\r
+if test "${ac_cv_search_opendir+set}" = set; then\r
+  echo $ECHO_N "(cached) $ECHO_C" >&6\r
+else\r
+  ac_func_search_save_LIBS=$LIBS\r
+cat >conftest.$ac_ext <<_ACEOF\r
+/* confdefs.h.  */\r
+_ACEOF\r
+cat confdefs.h >>conftest.$ac_ext\r
+cat >>conftest.$ac_ext <<_ACEOF\r
+/* end confdefs.h.  */\r
+\r
+/* Override any GCC internal prototype to avoid an error.\r
+   Use char because int might match the return type of a GCC\r
+   builtin and then its argument prototype would still apply.  */\r
+#ifdef __cplusplus\r
+extern "C"\r
+#endif\r
+char opendir ();\r
+int\r
+main ()\r
+{\r
+return opendir ();\r
+  ;\r
+  return 0;\r
+}\r
+_ACEOF\r
+for ac_lib in '' x; do\r
+  if test -z "$ac_lib"; then\r
+    ac_res="none required"\r
+  else\r
+    ac_res=-l$ac_lib\r
+    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"\r
+  fi\r
+  rm -f conftest.$ac_objext conftest$ac_exeext\r
+if { (ac_try="$ac_link"\r
+case "(($ac_try" in\r
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;\r
+  *) ac_try_echo=$ac_try;;\r
+esac\r
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5\r
+  (eval "$ac_link") 2>conftest.er1\r
+  ac_status=$?\r
+  grep -v '^ *+' conftest.er1 >conftest.err\r
+  rm -f conftest.er1\r
+  cat conftest.err >&5\r
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5\r
+  (exit $ac_status); } && {\r
+        test -z "$ac_c_werror_flag" ||\r
+        test ! -s conftest.err\r
+       } && test -s conftest$ac_exeext &&\r
+       $as_test_x conftest$ac_exeext; then\r
+  ac_cv_search_opendir=$ac_res\r
+else\r
+  echo "$as_me: failed program was:" >&5\r
+sed 's/^/| /' conftest.$ac_ext >&5\r
+\r
+\r
+fi\r
+\r
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \\r
+      conftest$ac_exeext\r
+  if test "${ac_cv_search_opendir+set}" = set; then\r
+  break\r
+fi\r
+done\r
+if test "${ac_cv_search_opendir+set}" = set; then\r
+  :\r
+else\r
+  ac_cv_search_opendir=no\r
+fi\r
+rm conftest.$ac_ext\r
+LIBS=$ac_func_search_save_LIBS\r
+fi\r
+{ echo "$as_me:$LINENO: result: $ac_cv_search_opendir" >&5\r
+echo "${ECHO_T}$ac_cv_search_opendir" >&6; }\r
+ac_res=$ac_cv_search_opendir\r
+if test "$ac_res" != no; then\r
+  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"\r
+\r
+fi\r
+\r
+fi\r
+\r
+{ echo "$as_me:$LINENO: checking return type of signal handlers" >&5\r
+echo $ECHO_N "checking return type of signal handlers... $ECHO_C" >&6; }\r
+if test "${ac_cv_type_signal+set}" = set; then\r
+  echo $ECHO_N "(cached) $ECHO_C" >&6\r
+else\r
+  cat >conftest.$ac_ext <<_ACEOF\r
+/* confdefs.h.  */\r
+_ACEOF\r
+cat confdefs.h >>conftest.$ac_ext\r
+cat >>conftest.$ac_ext <<_ACEOF\r
+/* end confdefs.h.  */\r
+#include <sys/types.h>\r
+#include <signal.h>\r
+\r
+int\r
+main ()\r
+{\r
+return *(signal (0, 0)) (0) == 1;\r
+  ;\r
+  return 0;\r
+}\r
+_ACEOF\r
+rm -f conftest.$ac_objext\r
+if { (ac_try="$ac_compile"\r
+case "(($ac_try" in\r
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;\r
+  *) ac_try_echo=$ac_try;;\r
+esac\r
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5\r
+  (eval "$ac_compile") 2>conftest.er1\r
+  ac_status=$?\r
+  grep -v '^ *+' conftest.er1 >conftest.err\r
+  rm -f conftest.er1\r
+  cat conftest.err >&5\r
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5\r
+  (exit $ac_status); } && {\r
+        test -z "$ac_c_werror_flag" ||\r
+        test ! -s conftest.err\r
+       } && test -s conftest.$ac_objext; then\r
+  ac_cv_type_signal=int\r
+else\r
+  echo "$as_me: failed program was:" >&5\r
+sed 's/^/| /' conftest.$ac_ext >&5\r
+\r
+       ac_cv_type_signal=void\r
+fi\r
+\r
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext\r
+fi\r
+{ echo "$as_me:$LINENO: result: $ac_cv_type_signal" >&5\r
+echo "${ECHO_T}$ac_cv_type_signal" >&6; }\r
+\r
+cat >>confdefs.h <<_ACEOF\r
+#define RETSIGTYPE $ac_cv_type_signal\r
+_ACEOF\r
+\r
+\r
+# On IRIX 5.3, sys/types and inttypes.h are conflicting.\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \\r
+                 inttypes.h stdint.h unistd.h\r
+do\r
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`\r
+{ echo "$as_me:$LINENO: checking for $ac_header" >&5\r
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }\r
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then\r
+  echo $ECHO_N "(cached) $ECHO_C" >&6\r
+else\r
+  cat >conftest.$ac_ext <<_ACEOF\r
+/* confdefs.h.  */\r
+_ACEOF\r
+cat confdefs.h >>conftest.$ac_ext\r
+cat >>conftest.$ac_ext <<_ACEOF\r
+/* end confdefs.h.  */\r
+$ac_includes_default\r
+\r
+#include <$ac_header>\r
+_ACEOF\r
+rm -f conftest.$ac_objext\r
+if { (ac_try="$ac_compile"\r
+case "(($ac_try" in\r
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;\r
+  *) ac_try_echo=$ac_try;;\r
+esac\r
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5\r
+  (eval "$ac_compile") 2>conftest.er1\r
+  ac_status=$?\r
+  grep -v '^ *+' conftest.er1 >conftest.err\r
+  rm -f conftest.er1\r
+  cat conftest.err >&5\r
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5\r
+  (exit $ac_status); } && {\r
+        test -z "$ac_c_werror_flag" ||\r
+        test ! -s conftest.err\r
+       } && test -s conftest.$ac_objext; then\r
+  eval "$as_ac_Header=yes"\r
+else\r
+  echo "$as_me: failed program was:" >&5\r
+sed 's/^/| /' conftest.$ac_ext >&5\r
+\r
+       eval "$as_ac_Header=no"\r
+fi\r
+\r
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext\r
+fi\r
+ac_res=`eval echo '${'$as_ac_Header'}'`\r
+              { echo "$as_me:$LINENO: result: $ac_res" >&5\r
+echo "${ECHO_T}$ac_res" >&6; }\r
+if test `eval echo '${'$as_ac_Header'}'` = yes; then\r
+  cat >>confdefs.h <<_ACEOF\r
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1\r
+_ACEOF\r
+\r
+fi\r
+\r
+done\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+for ac_header in stropts.h sys/time.h string.h unistd.h sys/systeminfo.h\r
+do\r
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`\r
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then\r
+  { echo "$as_me:$LINENO: checking for $ac_header" >&5\r
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }\r
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then\r
+  echo $ECHO_N "(cached) $ECHO_C" >&6\r
+fi\r
+ac_res=`eval echo '${'$as_ac_Header'}'`\r
+              { echo "$as_me:$LINENO: result: $ac_res" >&5\r
+echo "${ECHO_T}$ac_res" >&6; }\r
+else\r
+  # Is the header compilable?\r
+{ echo "$as_me:$LINENO: checking $ac_header usability" >&5\r
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }\r
+cat >conftest.$ac_ext <<_ACEOF\r
+/* confdefs.h.  */\r
+_ACEOF\r
+cat confdefs.h >>conftest.$ac_ext\r
+cat >>conftest.$ac_ext <<_ACEOF\r
+/* end confdefs.h.  */\r
+$ac_includes_default\r
+#include <$ac_header>\r
+_ACEOF\r
+rm -f conftest.$ac_objext\r
+if { (ac_try="$ac_compile"\r
+case "(($ac_try" in\r
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;\r
+  *) ac_try_echo=$ac_try;;\r
+esac\r
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5\r
+  (eval "$ac_compile") 2>conftest.er1\r
+  ac_status=$?\r
+  grep -v '^ *+' conftest.er1 >conftest.err\r
+  rm -f conftest.er1\r
+  cat conftest.err >&5\r
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5\r
+  (exit $ac_status); } && {\r
+        test -z "$ac_c_werror_flag" ||\r
+        test ! -s conftest.err\r
+       } && test -s conftest.$ac_objext; then\r
+  ac_header_compiler=yes\r
+else\r
+  echo "$as_me: failed program was:" >&5\r
+sed 's/^/| /' conftest.$ac_ext >&5\r
+\r
+       ac_header_compiler=no\r
+fi\r
+\r
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext\r
+{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5\r
+echo "${ECHO_T}$ac_header_compiler" >&6; }\r
+\r
+# Is the header present?\r
+{ echo "$as_me:$LINENO: checking $ac_header presence" >&5\r
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }\r
+cat >conftest.$ac_ext <<_ACEOF\r
+/* confdefs.h.  */\r
+_ACEOF\r
+cat confdefs.h >>conftest.$ac_ext\r
+cat >>conftest.$ac_ext <<_ACEOF\r
+/* end confdefs.h.  */\r
+#include <$ac_header>\r
+_ACEOF\r
+if { (ac_try="$ac_cpp conftest.$ac_ext"\r
+case "(($ac_try" in\r
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;\r
+  *) ac_try_echo=$ac_try;;\r
+esac\r
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5\r
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1\r
+  ac_status=$?\r
+  grep -v '^ *+' conftest.er1 >conftest.err\r
+  rm -f conftest.er1\r
+  cat conftest.err >&5\r
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5\r
+  (exit $ac_status); } >/dev/null && {\r
+        test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||\r
+        test ! -s conftest.err\r
+       }; then\r
+  ac_header_preproc=yes\r
+else\r
+  echo "$as_me: failed program was:" >&5\r
+sed 's/^/| /' conftest.$ac_ext >&5\r
+\r
+  ac_header_preproc=no\r
+fi\r
+\r
+rm -f conftest.err conftest.$ac_ext\r
+{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5\r
+echo "${ECHO_T}$ac_header_preproc" >&6; }\r
+\r
+# So?  What about this header?\r
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in\r
+  yes:no: )\r
+    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5\r
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}\r
+    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5\r
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}\r
+    ac_header_preproc=yes\r
+    ;;\r
+  no:yes:* )\r
+    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5\r
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}\r
+    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5\r
+echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}\r
+    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5\r
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}\r
+    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5\r
+echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}\r
+    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5\r
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}\r
+    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5\r
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}\r
+\r
+    ;;\r
+esac\r
+{ echo "$as_me:$LINENO: checking for $ac_header" >&5\r
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }\r
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then\r
+  echo $ECHO_N "(cached) $ECHO_C" >&6\r
+else\r
+  eval "$as_ac_Header=\$ac_header_preproc"\r
+fi\r
+ac_res=`eval echo '${'$as_ac_Header'}'`\r
+              { echo "$as_me:$LINENO: result: $ac_res" >&5\r
+echo "${ECHO_T}$ac_res" >&6; }\r
+\r
+fi\r
+if test `eval echo '${'$as_ac_Header'}'` = yes; then\r
+  cat >>confdefs.h <<_ACEOF\r
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1\r
+_ACEOF\r
+\r
+fi\r
+\r
+done\r
+\r
+\r
+\r
+for ac_header in fcntl.h sys/fcntl.h\r
+do\r
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`\r
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then\r
+  { echo "$as_me:$LINENO: checking for $ac_header" >&5\r
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }\r
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then\r
+  echo $ECHO_N "(cached) $ECHO_C" >&6\r
+fi\r
+ac_res=`eval echo '${'$as_ac_Header'}'`\r
+              { echo "$as_me:$LINENO: result: $ac_res" >&5\r
+echo "${ECHO_T}$ac_res" >&6; }\r
+else\r
+  # Is the header compilable?\r
+{ echo "$as_me:$LINENO: checking $ac_header usability" >&5\r
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }\r
+cat >conftest.$ac_ext <<_ACEOF\r
+/* confdefs.h.  */\r
+_ACEOF\r
+cat confdefs.h >>conftest.$ac_ext\r
+cat >>conftest.$ac_ext <<_ACEOF\r
+/* end confdefs.h.  */\r
+$ac_includes_default\r
+#include <$ac_header>\r
+_ACEOF\r
+rm -f conftest.$ac_objext\r
+if { (ac_try="$ac_compile"\r
+case "(($ac_try" in\r
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;\r
+  *) ac_try_echo=$ac_try;;\r
+esac\r
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5\r
+  (eval "$ac_compile") 2>conftest.er1\r
+  ac_status=$?\r
+  grep -v '^ *+' conftest.er1 >conftest.err\r
+  rm -f conftest.er1\r
+  cat conftest.err >&5\r
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5\r
+  (exit $ac_status); } && {\r
+        test -z "$ac_c_werror_flag" ||\r
+        test ! -s conftest.err\r
+       } && test -s conftest.$ac_objext; then\r
+  ac_header_compiler=yes\r
+else\r
+  echo "$as_me: failed program was:" >&5\r
+sed 's/^/| /' conftest.$ac_ext >&5\r
+\r
+       ac_header_compiler=no\r
+fi\r
+\r
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext\r
+{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5\r
+echo "${ECHO_T}$ac_header_compiler" >&6; }\r
+\r
+# Is the header present?\r
+{ echo "$as_me:$LINENO: checking $ac_header presence" >&5\r
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }\r
+cat >conftest.$ac_ext <<_ACEOF\r
+/* confdefs.h.  */\r
+_ACEOF\r
+cat confdefs.h >>conftest.$ac_ext\r
+cat >>conftest.$ac_ext <<_ACEOF\r
+/* end confdefs.h.  */\r
+#include <$ac_header>\r
+_ACEOF\r
+if { (ac_try="$ac_cpp conftest.$ac_ext"\r
+case "(($ac_try" in\r
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;\r
+  *) ac_try_echo=$ac_try;;\r
+esac\r
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5\r
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1\r
+  ac_status=$?\r
+  grep -v '^ *+' conftest.er1 >conftest.err\r
+  rm -f conftest.er1\r
+  cat conftest.err >&5\r
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5\r
+  (exit $ac_status); } >/dev/null && {\r
+        test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||\r
+        test ! -s conftest.err\r
+       }; then\r
+  ac_header_preproc=yes\r
+else\r
+  echo "$as_me: failed program was:" >&5\r
+sed 's/^/| /' conftest.$ac_ext >&5\r
+\r
+  ac_header_preproc=no\r
+fi\r
+\r
+rm -f conftest.err conftest.$ac_ext\r
+{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5\r
+echo "${ECHO_T}$ac_header_preproc" >&6; }\r
+\r
+# So?  What about this header?\r
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in\r
+  yes:no: )\r
+    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5\r
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}\r
+    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5\r
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}\r
+    ac_header_preproc=yes\r
+    ;;\r
+  no:yes:* )\r
+    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5\r
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}\r
+    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5\r
+echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}\r
+    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5\r
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}\r
+    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5\r
+echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}\r
+    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5\r
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}\r
+    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5\r
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}\r
+\r
+    ;;\r
+esac\r
+{ echo "$as_me:$LINENO: checking for $ac_header" >&5\r
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }\r
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then\r
+  echo $ECHO_N "(cached) $ECHO_C" >&6\r
+else\r
+  eval "$as_ac_Header=\$ac_header_preproc"\r
+fi\r
+ac_res=`eval echo '${'$as_ac_Header'}'`\r
+              { echo "$as_me:$LINENO: result: $ac_res" >&5\r
+echo "${ECHO_T}$ac_res" >&6; }\r
+\r
+fi\r
+if test `eval echo '${'$as_ac_Header'}'` = yes; then\r
+  cat >>confdefs.h <<_ACEOF\r
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1\r
+_ACEOF\r
+ break\r
+fi\r
+\r
+done\r
+\r
+\r
+\r
+for ac_header in sys/socket.h lan/socket.h\r
+do\r
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`\r
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then\r
+  { echo "$as_me:$LINENO: checking for $ac_header" >&5\r
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }\r
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then\r
+  echo $ECHO_N "(cached) $ECHO_C" >&6\r
+fi\r
+ac_res=`eval echo '${'$as_ac_Header'}'`\r
+              { echo "$as_me:$LINENO: result: $ac_res" >&5\r
+echo "${ECHO_T}$ac_res" >&6; }\r
+else\r
+  # Is the header compilable?\r
+{ echo "$as_me:$LINENO: checking $ac_header usability" >&5\r
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }\r
+cat >conftest.$ac_ext <<_ACEOF\r
+/* confdefs.h.  */\r
+_ACEOF\r
+cat confdefs.h >>conftest.$ac_ext\r
+cat >>conftest.$ac_ext <<_ACEOF\r
+/* end confdefs.h.  */\r
+$ac_includes_default\r
+#include <$ac_header>\r
+_ACEOF\r
+rm -f conftest.$ac_objext\r
+if { (ac_try="$ac_compile"\r
+case "(($ac_try" in\r
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;\r
+  *) ac_try_echo=$ac_try;;\r
+esac\r
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5\r
+  (eval "$ac_compile") 2>conftest.er1\r
+  ac_status=$?\r
+  grep -v '^ *+' conftest.er1 >conftest.err\r
+  rm -f conftest.er1\r
+  cat conftest.err >&5\r
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5\r
+  (exit $ac_status); } && {\r
+        test -z "$ac_c_werror_flag" ||\r
+        test ! -s conftest.err\r
+       } && test -s conftest.$ac_objext; then\r
+  ac_header_compiler=yes\r
+else\r
+  echo "$as_me: failed program was:" >&5\r
+sed 's/^/| /' conftest.$ac_ext >&5\r
+\r
+       ac_header_compiler=no\r
+fi\r
+\r
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext\r
+{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5\r
+echo "${ECHO_T}$ac_header_compiler" >&6; }\r
+\r
+# Is the header present?\r
+{ echo "$as_me:$LINENO: checking $ac_header presence" >&5\r
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }\r
+cat >conftest.$ac_ext <<_ACEOF\r
+/* confdefs.h.  */\r
+_ACEOF\r
+cat confdefs.h >>conftest.$ac_ext\r
+cat >>conftest.$ac_ext <<_ACEOF\r
+/* end confdefs.h.  */\r
+#include <$ac_header>\r
+_ACEOF\r
+if { (ac_try="$ac_cpp conftest.$ac_ext"\r
+case "(($ac_try" in\r
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;\r
+  *) ac_try_echo=$ac_try;;\r
+esac\r
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5\r
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1\r
+  ac_status=$?\r
+  grep -v '^ *+' conftest.er1 >conftest.err\r
+  rm -f conftest.er1\r
+  cat conftest.err >&5\r
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5\r
+  (exit $ac_status); } >/dev/null && {\r
+        test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||\r
+        test ! -s conftest.err\r
+       }; then\r
+  ac_header_preproc=yes\r
+else\r
+  echo "$as_me: failed program was:" >&5\r
+sed 's/^/| /' conftest.$ac_ext >&5\r
+\r
+  ac_header_preproc=no\r
+fi\r
+\r
+rm -f conftest.err conftest.$ac_ext\r
+{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5\r
+echo "${ECHO_T}$ac_header_preproc" >&6; }\r
+\r
+# So?  What about this header?\r
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in\r
+  yes:no: )\r
+    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5\r
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}\r
+    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5\r
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}\r
+    ac_header_preproc=yes\r
+    ;;\r
+  no:yes:* )\r
+    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5\r
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}\r
+    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5\r
+echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}\r
+    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5\r
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}\r
+    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5\r
+echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}\r
+    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5\r
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}\r
+    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5\r
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}\r
+\r
+    ;;\r
+esac\r
+{ echo "$as_me:$LINENO: checking for $ac_header" >&5\r
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }\r
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then\r
+  echo $ECHO_N "(cached) $ECHO_C" >&6\r
+else\r
+  eval "$as_ac_Header=\$ac_header_preproc"\r
+fi\r
+ac_res=`eval echo '${'$as_ac_Header'}'`\r
+              { echo "$as_me:$LINENO: result: $ac_res" >&5\r
+echo "${ECHO_T}$ac_res" >&6; }\r
+\r
+fi\r
+if test `eval echo '${'$as_ac_Header'}'` = yes; then\r
+  cat >>confdefs.h <<_ACEOF\r
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1\r
+_ACEOF\r
+ break\r
+fi\r
+\r
+done\r
+\r
+if test "${ac_cv_header_stddef_h+set}" = set; then\r
+  { echo "$as_me:$LINENO: checking for stddef.h" >&5\r
+echo $ECHO_N "checking for stddef.h... $ECHO_C" >&6; }\r
+if test "${ac_cv_header_stddef_h+set}" = set; then\r
+  echo $ECHO_N "(cached) $ECHO_C" >&6\r
+fi\r
+{ echo "$as_me:$LINENO: result: $ac_cv_header_stddef_h" >&5\r
+echo "${ECHO_T}$ac_cv_header_stddef_h" >&6; }\r
+else\r
+  # Is the header compilable?\r
+{ echo "$as_me:$LINENO: checking stddef.h usability" >&5\r
+echo $ECHO_N "checking stddef.h usability... $ECHO_C" >&6; }\r
+cat >conftest.$ac_ext <<_ACEOF\r
+/* confdefs.h.  */\r
+_ACEOF\r
+cat confdefs.h >>conftest.$ac_ext\r
+cat >>conftest.$ac_ext <<_ACEOF\r
+/* end confdefs.h.  */\r
+$ac_includes_default\r
+#include <stddef.h>\r
+_ACEOF\r
+rm -f conftest.$ac_objext\r
+if { (ac_try="$ac_compile"\r
+case "(($ac_try" in\r
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;\r
+  *) ac_try_echo=$ac_try;;\r
+esac\r
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5\r
+  (eval "$ac_compile") 2>conftest.er1\r
+  ac_status=$?\r
+  grep -v '^ *+' conftest.er1 >conftest.err\r
+  rm -f conftest.er1\r
+  cat conftest.err >&5\r
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5\r
+  (exit $ac_status); } && {\r
+        test -z "$ac_c_werror_flag" ||\r
+        test ! -s conftest.err\r
+       } && test -s conftest.$ac_objext; then\r
+  ac_header_compiler=yes\r
+else\r
+  echo "$as_me: failed program was:" >&5\r
+sed 's/^/| /' conftest.$ac_ext >&5\r
+\r
+       ac_header_compiler=no\r
+fi\r
+\r
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext\r
+{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5\r
+echo "${ECHO_T}$ac_header_compiler" >&6; }\r
+\r
+# Is the header present?\r
+{ echo "$as_me:$LINENO: checking stddef.h presence" >&5\r
+echo $ECHO_N "checking stddef.h presence... $ECHO_C" >&6; }\r
+cat >conftest.$ac_ext <<_ACEOF\r
+/* confdefs.h.  */\r
+_ACEOF\r
+cat confdefs.h >>conftest.$ac_ext\r
+cat >>conftest.$ac_ext <<_ACEOF\r
+/* end confdefs.h.  */\r
+#include <stddef.h>\r
+_ACEOF\r
+if { (ac_try="$ac_cpp conftest.$ac_ext"\r
+case "(($ac_try" in\r
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;\r
+  *) ac_try_echo=$ac_try;;\r
+esac\r
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5\r
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1\r
+  ac_status=$?\r
+  grep -v '^ *+' conftest.er1 >conftest.err\r
+  rm -f conftest.er1\r
+  cat conftest.err >&5\r
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5\r
+  (exit $ac_status); } >/dev/null && {\r
+        test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||\r
+        test ! -s conftest.err\r
+       }; then\r
+  ac_header_preproc=yes\r
+else\r
+  echo "$as_me: failed program was:" >&5\r
+sed 's/^/| /' conftest.$ac_ext >&5\r
+\r
+  ac_header_preproc=no\r
+fi\r
+\r
+rm -f conftest.err conftest.$ac_ext\r
+{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5\r
+echo "${ECHO_T}$ac_header_preproc" >&6; }\r
+\r
+# So?  What about this header?\r
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in\r
+  yes:no: )\r
+    { echo "$as_me:$LINENO: WARNING: stddef.h: accepted by the compiler, rejected by the preprocessor!" >&5\r
+echo "$as_me: WARNING: stddef.h: accepted by the compiler, rejected by the preprocessor!" >&2;}\r
+    { echo "$as_me:$LINENO: WARNING: stddef.h: proceeding with the compiler's result" >&5\r
+echo "$as_me: WARNING: stddef.h: proceeding with the compiler's result" >&2;}\r
+    ac_header_preproc=yes\r
+    ;;\r
+  no:yes:* )\r
+    { echo "$as_me:$LINENO: WARNING: stddef.h: present but cannot be compiled" >&5\r
+echo "$as_me: WARNING: stddef.h: present but cannot be compiled" >&2;}\r
+    { echo "$as_me:$LINENO: WARNING: stddef.h:     check for missing prerequisite headers?" >&5\r
+echo "$as_me: WARNING: stddef.h:     check for missing prerequisite headers?" >&2;}\r
+    { echo "$as_me:$LINENO: WARNING: stddef.h: see the Autoconf documentation" >&5\r
+echo "$as_me: WARNING: stddef.h: see the Autoconf documentation" >&2;}\r
+    { echo "$as_me:$LINENO: WARNING: stddef.h:     section \"Present But Cannot Be Compiled\"" >&5\r
+echo "$as_me: WARNING: stddef.h:     section \"Present But Cannot Be Compiled\"" >&2;}\r
+    { echo "$as_me:$LINENO: WARNING: stddef.h: proceeding with the preprocessor's result" >&5\r
+echo "$as_me: WARNING: stddef.h: proceeding with the preprocessor's result" >&2;}\r
+    { echo "$as_me:$LINENO: WARNING: stddef.h: in the future, the compiler will take precedence" >&5\r
+echo "$as_me: WARNING: stddef.h: in the future, the compiler will take precedence" >&2;}\r
+\r
+    ;;\r
+esac\r
+{ echo "$as_me:$LINENO: checking for stddef.h" >&5\r
+echo $ECHO_N "checking for stddef.h... $ECHO_C" >&6; }\r
+if test "${ac_cv_header_stddef_h+set}" = set; then\r
+  echo $ECHO_N "(cached) $ECHO_C" >&6\r
+else\r
+  ac_cv_header_stddef_h=$ac_header_preproc\r
+fi\r
+{ echo "$as_me:$LINENO: result: $ac_cv_header_stddef_h" >&5\r
+echo "${ECHO_T}$ac_cv_header_stddef_h" >&6; }\r
+\r
+fi\r
+if test $ac_cv_header_stddef_h = yes; then\r
+  :\r
+else\r
+  cat >>confdefs.h <<\_ACEOF\r
+#define X_WCHAR 1\r
+_ACEOF\r
+\r
+fi\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+for ac_func in _getpty grantpt setitimer usleep\r
+do\r
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`\r
+{ echo "$as_me:$LINENO: checking for $ac_func" >&5\r
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }\r
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then\r
+  echo $ECHO_N "(cached) $ECHO_C" >&6\r
+else\r
+  cat >conftest.$ac_ext <<_ACEOF\r
+/* confdefs.h.  */\r
+_ACEOF\r
+cat confdefs.h >>conftest.$ac_ext\r
+cat >>conftest.$ac_ext <<_ACEOF\r
+/* end confdefs.h.  */\r
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.\r
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */\r
+#define $ac_func innocuous_$ac_func\r
+\r
+/* System header to define __stub macros and hopefully few prototypes,\r
+    which can conflict with char $ac_func (); below.\r
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since\r
+    <limits.h> exists even on freestanding compilers.  */\r
+\r
+#ifdef __STDC__\r
+# include <limits.h>\r
+#else\r
+# include <assert.h>\r
+#endif\r
+\r
+#undef $ac_func\r
+\r
+/* Override any GCC internal prototype to avoid an error.\r
+   Use char because int might match the return type of a GCC\r
+   builtin and then its argument prototype would still apply.  */\r
+#ifdef __cplusplus\r
+extern "C"\r
+#endif\r
+char $ac_func ();\r
+/* The GNU C library defines this for functions which it implements\r
+    to always fail with ENOSYS.  Some functions are actually named\r
+    something starting with __ and the normal name is an alias.  */\r
+#if defined __stub_$ac_func || defined __stub___$ac_func\r
+choke me\r
+#endif\r
+\r
+int\r
+main ()\r
+{\r
+return $ac_func ();\r
+  ;\r
+  return 0;\r
+}\r
+_ACEOF\r
+rm -f conftest.$ac_objext conftest$ac_exeext\r
+if { (ac_try="$ac_link"\r
+case "(($ac_try" in\r
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;\r
+  *) ac_try_echo=$ac_try;;\r
+esac\r
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5\r
+  (eval "$ac_link") 2>conftest.er1\r
+  ac_status=$?\r
+  grep -v '^ *+' conftest.er1 >conftest.err\r
+  rm -f conftest.er1\r
+  cat conftest.err >&5\r
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5\r
+  (exit $ac_status); } && {\r
+        test -z "$ac_c_werror_flag" ||\r
+        test ! -s conftest.err\r
+       } && test -s conftest$ac_exeext &&\r
+       $as_test_x conftest$ac_exeext; then\r
+  eval "$as_ac_var=yes"\r
+else\r
+  echo "$as_me: failed program was:" >&5\r
+sed 's/^/| /' conftest.$ac_ext >&5\r
+\r
+       eval "$as_ac_var=no"\r
+fi\r
+\r
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \\r
+      conftest$ac_exeext conftest.$ac_ext\r
+fi\r
+ac_res=`eval echo '${'$as_ac_var'}'`\r
+              { echo "$as_me:$LINENO: result: $ac_res" >&5\r
+echo "${ECHO_T}$ac_res" >&6; }\r
+if test `eval echo '${'$as_ac_var'}'` = yes; then\r
+  cat >>confdefs.h <<_ACEOF\r
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1\r
+_ACEOF\r
+\r
+fi\r
+done\r
+\r
+\r
+\r
+for ac_func in gettimeofday ftime\r
+do\r
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`\r
+{ echo "$as_me:$LINENO: checking for $ac_func" >&5\r
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }\r
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then\r
+  echo $ECHO_N "(cached) $ECHO_C" >&6\r
+else\r
+  cat >conftest.$ac_ext <<_ACEOF\r
+/* confdefs.h.  */\r
+_ACEOF\r
+cat confdefs.h >>conftest.$ac_ext\r
+cat >>conftest.$ac_ext <<_ACEOF\r
+/* end confdefs.h.  */\r
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.\r
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */\r
+#define $ac_func innocuous_$ac_func\r
+\r
+/* System header to define __stub macros and hopefully few prototypes,\r
+    which can conflict with char $ac_func (); below.\r
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since\r
+    <limits.h> exists even on freestanding compilers.  */\r
+\r
+#ifdef __STDC__\r
+# include <limits.h>\r
+#else\r
+# include <assert.h>\r
+#endif\r
+\r
+#undef $ac_func\r
+\r
+/* Override any GCC internal prototype to avoid an error.\r
+   Use char because int might match the return type of a GCC\r
+   builtin and then its argument prototype would still apply.  */\r
+#ifdef __cplusplus\r
+extern "C"\r
+#endif\r
+char $ac_func ();\r
+/* The GNU C library defines this for functions which it implements\r
+    to always fail with ENOSYS.  Some functions are actually named\r
+    something starting with __ and the normal name is an alias.  */\r
+#if defined __stub_$ac_func || defined __stub___$ac_func\r
+choke me\r
+#endif\r
+\r
+int\r
+main ()\r
+{\r
+return $ac_func ();\r
+  ;\r
+  return 0;\r
+}\r
+_ACEOF\r
+rm -f conftest.$ac_objext conftest$ac_exeext\r
+if { (ac_try="$ac_link"\r
+case "(($ac_try" in\r
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;\r
+  *) ac_try_echo=$ac_try;;\r
+esac\r
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5\r
+  (eval "$ac_link") 2>conftest.er1\r
+  ac_status=$?\r
+  grep -v '^ *+' conftest.er1 >conftest.err\r
+  rm -f conftest.er1\r
+  cat conftest.err >&5\r
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5\r
+  (exit $ac_status); } && {\r
+        test -z "$ac_c_werror_flag" ||\r
+        test ! -s conftest.err\r
+       } && test -s conftest$ac_exeext &&\r
+       $as_test_x conftest$ac_exeext; then\r
+  eval "$as_ac_var=yes"\r
+else\r
+  echo "$as_me: failed program was:" >&5\r
+sed 's/^/| /' conftest.$ac_ext >&5\r
+\r
+       eval "$as_ac_var=no"\r
+fi\r
+\r
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \\r
+      conftest$ac_exeext conftest.$ac_ext\r
+fi\r
+ac_res=`eval echo '${'$as_ac_var'}'`\r
+              { echo "$as_me:$LINENO: result: $ac_res" >&5\r
+echo "${ECHO_T}$ac_res" >&6; }\r
+if test `eval echo '${'$as_ac_var'}'` = yes; then\r
+  cat >>confdefs.h <<_ACEOF\r
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1\r
+_ACEOF\r
+ break\r
+fi\r
+done\r
+\r
+\r
+\r
+for ac_func in random rand48\r
+do\r
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`\r
+{ echo "$as_me:$LINENO: checking for $ac_func" >&5\r
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }\r
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then\r
+  echo $ECHO_N "(cached) $ECHO_C" >&6\r
+else\r
+  cat >conftest.$ac_ext <<_ACEOF\r
+/* confdefs.h.  */\r
+_ACEOF\r
+cat confdefs.h >>conftest.$ac_ext\r
+cat >>conftest.$ac_ext <<_ACEOF\r
+/* end confdefs.h.  */\r
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.\r
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */\r
+#define $ac_func innocuous_$ac_func\r
+\r
+/* System header to define __stub macros and hopefully few prototypes,\r
+    which can conflict with char $ac_func (); below.\r
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since\r
+    <limits.h> exists even on freestanding compilers.  */\r
+\r
+#ifdef __STDC__\r
+# include <limits.h>\r
+#else\r
+# include <assert.h>\r
+#endif\r
+\r
+#undef $ac_func\r
+\r
+/* Override any GCC internal prototype to avoid an error.\r
+   Use char because int might match the return type of a GCC\r
+   builtin and then its argument prototype would still apply.  */\r
+#ifdef __cplusplus\r
+extern "C"\r
+#endif\r
+char $ac_func ();\r
+/* The GNU C library defines this for functions which it implements\r
+    to always fail with ENOSYS.  Some functions are actually named\r
+    something starting with __ and the normal name is an alias.  */\r
+#if defined __stub_$ac_func || defined __stub___$ac_func\r
+choke me\r
+#endif\r
+\r
+int\r
+main ()\r
+{\r
+return $ac_func ();\r
+  ;\r
+  return 0;\r
+}\r
+_ACEOF\r
+rm -f conftest.$ac_objext conftest$ac_exeext\r
+if { (ac_try="$ac_link"\r
+case "(($ac_try" in\r
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;\r
+  *) ac_try_echo=$ac_try;;\r
+esac\r
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5\r
+  (eval "$ac_link") 2>conftest.er1\r
+  ac_status=$?\r
+  grep -v '^ *+' conftest.er1 >conftest.err\r
+  rm -f conftest.er1\r
+  cat conftest.err >&5\r
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5\r
+  (exit $ac_status); } && {\r
+        test -z "$ac_c_werror_flag" ||\r
+        test ! -s conftest.err\r
+       } && test -s conftest$ac_exeext &&\r
+       $as_test_x conftest$ac_exeext; then\r
+  eval "$as_ac_var=yes"\r
+else\r
+  echo "$as_me: failed program was:" >&5\r
+sed 's/^/| /' conftest.$ac_ext >&5\r
+\r
+       eval "$as_ac_var=no"\r
+fi\r
+\r
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \\r
+      conftest$ac_exeext conftest.$ac_ext\r
+fi\r
+ac_res=`eval echo '${'$as_ac_var'}'`\r
+              { echo "$as_me:$LINENO: result: $ac_res" >&5\r
+echo "${ECHO_T}$ac_res" >&6; }\r
+if test `eval echo '${'$as_ac_var'}'` = yes; then\r
+  cat >>confdefs.h <<_ACEOF\r
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1\r
+_ACEOF\r
+ break\r
+fi\r
+done\r
+\r
+\r
+\r
+for ac_func in gethostname sysinfo\r
+do\r
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`\r
+{ echo "$as_me:$LINENO: checking for $ac_func" >&5\r
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }\r
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then\r
+  echo $ECHO_N "(cached) $ECHO_C" >&6\r
+else\r
+  cat >conftest.$ac_ext <<_ACEOF\r
+/* confdefs.h.  */\r
+_ACEOF\r
+cat confdefs.h >>conftest.$ac_ext\r
+cat >>conftest.$ac_ext <<_ACEOF\r
+/* end confdefs.h.  */\r
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.\r
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */\r
+#define $ac_func innocuous_$ac_func\r
+\r
+/* System header to define __stub macros and hopefully few prototypes,\r
+    which can conflict with char $ac_func (); below.\r
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since\r
+    <limits.h> exists even on freestanding compilers.  */\r
+\r
+#ifdef __STDC__\r
+# include <limits.h>\r
+#else\r
+# include <assert.h>\r
+#endif\r
+\r
+#undef $ac_func\r
+\r
+/* Override any GCC internal prototype to avoid an error.\r
+   Use char because int might match the return type of a GCC\r
+   builtin and then its argument prototype would still apply.  */\r
+#ifdef __cplusplus\r
+extern "C"\r
+#endif\r
+char $ac_func ();\r
+/* The GNU C library defines this for functions which it implements\r
+    to always fail with ENOSYS.  Some functions are actually named\r
+    something starting with __ and the normal name is an alias.  */\r
+#if defined __stub_$ac_func || defined __stub___$ac_func\r
+choke me\r
+#endif\r
+\r
+int\r
+main ()\r
+{\r
+return $ac_func ();\r
+  ;\r
+  return 0;\r
+}\r
+_ACEOF\r
+rm -f conftest.$ac_objext conftest$ac_exeext\r
+if { (ac_try="$ac_link"\r
+case "(($ac_try" in\r
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;\r
+  *) ac_try_echo=$ac_try;;\r
+esac\r
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5\r
+  (eval "$ac_link") 2>conftest.er1\r
+  ac_status=$?\r
+  grep -v '^ *+' conftest.er1 >conftest.err\r
+  rm -f conftest.er1\r
+  cat conftest.err >&5\r
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5\r
+  (exit $ac_status); } && {\r
+        test -z "$ac_c_werror_flag" ||\r
+        test ! -s conftest.err\r
+       } && test -s conftest$ac_exeext &&\r
+       $as_test_x conftest$ac_exeext; then\r
+  eval "$as_ac_var=yes"\r
+else\r
+  echo "$as_me: failed program was:" >&5\r
+sed 's/^/| /' conftest.$ac_ext >&5\r
+\r
+       eval "$as_ac_var=no"\r
+fi\r
+\r
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \\r
+      conftest$ac_exeext conftest.$ac_ext\r
+fi\r
+ac_res=`eval echo '${'$as_ac_var'}'`\r
+              { echo "$as_me:$LINENO: result: $ac_res" >&5\r
+echo "${ECHO_T}$ac_res" >&6; }\r
+if test `eval echo '${'$as_ac_var'}'` = yes; then\r
+  cat >>confdefs.h <<_ACEOF\r
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1\r
+_ACEOF\r
+ break\r
+fi\r
+done\r
+\r
+{ echo "$as_me:$LINENO: checking for setlocale" >&5\r
+echo $ECHO_N "checking for setlocale... $ECHO_C" >&6; }\r
+if test "${ac_cv_func_setlocale+set}" = set; then\r
+  echo $ECHO_N "(cached) $ECHO_C" >&6\r
+else\r
+  cat >conftest.$ac_ext <<_ACEOF\r
+/* confdefs.h.  */\r
+_ACEOF\r
+cat confdefs.h >>conftest.$ac_ext\r
+cat >>conftest.$ac_ext <<_ACEOF\r
+/* end confdefs.h.  */\r
+/* Define setlocale to an innocuous variant, in case <limits.h> declares setlocale.\r
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */\r
+#define setlocale innocuous_setlocale\r
+\r
+/* System header to define __stub macros and hopefully few prototypes,\r
+    which can conflict with char setlocale (); below.\r
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since\r
+    <limits.h> exists even on freestanding compilers.  */\r
+\r
+#ifdef __STDC__\r
+# include <limits.h>\r
+#else\r
+# include <assert.h>\r
+#endif\r
+\r
+#undef setlocale\r
+\r
+/* Override any GCC internal prototype to avoid an error.\r
+   Use char because int might match the return type of a GCC\r
+   builtin and then its argument prototype would still apply.  */\r
+#ifdef __cplusplus\r
+extern "C"\r
+#endif\r
+char setlocale ();\r
+/* The GNU C library defines this for functions which it implements\r
+    to always fail with ENOSYS.  Some functions are actually named\r
+    something starting with __ and the normal name is an alias.  */\r
+#if defined __stub_setlocale || defined __stub___setlocale\r
+choke me\r
+#endif\r
+\r
+int\r
+main ()\r
+{\r
+return setlocale ();\r
+  ;\r
+  return 0;\r
+}\r
+_ACEOF\r
+rm -f conftest.$ac_objext conftest$ac_exeext\r
+if { (ac_try="$ac_link"\r
+case "(($ac_try" in\r
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;\r
+  *) ac_try_echo=$ac_try;;\r
+esac\r
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5\r
+  (eval "$ac_link") 2>conftest.er1\r
+  ac_status=$?\r
+  grep -v '^ *+' conftest.er1 >conftest.err\r
+  rm -f conftest.er1\r
+  cat conftest.err >&5\r
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5\r
+  (exit $ac_status); } && {\r
+        test -z "$ac_c_werror_flag" ||\r
+        test ! -s conftest.err\r
+       } && test -s conftest$ac_exeext &&\r
+       $as_test_x conftest$ac_exeext; then\r
+  ac_cv_func_setlocale=yes\r
+else\r
+  echo "$as_me: failed program was:" >&5\r
+sed 's/^/| /' conftest.$ac_ext >&5\r
+\r
+       ac_cv_func_setlocale=no\r
+fi\r
+\r
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \\r
+      conftest$ac_exeext conftest.$ac_ext\r
+fi\r
+{ echo "$as_me:$LINENO: result: $ac_cv_func_setlocale" >&5\r
+echo "${ECHO_T}$ac_cv_func_setlocale" >&6; }\r
+if test $ac_cv_func_setlocale = yes; then\r
+  :\r
+else\r
+\r
+{ echo "$as_me:$LINENO: checking for setlocale in -li" >&5\r
+echo $ECHO_N "checking for setlocale in -li... $ECHO_C" >&6; }\r
+if test "${ac_cv_lib_i_setlocale+set}" = set; then\r
+  echo $ECHO_N "(cached) $ECHO_C" >&6\r
+else\r
+  ac_check_lib_save_LIBS=$LIBS\r
+LIBS="-li  $LIBS"\r
+cat >conftest.$ac_ext <<_ACEOF\r
+/* confdefs.h.  */\r
+_ACEOF\r
+cat confdefs.h >>conftest.$ac_ext\r
+cat >>conftest.$ac_ext <<_ACEOF\r
+/* end confdefs.h.  */\r
+\r
+/* Override any GCC internal prototype to avoid an error.\r
+   Use char because int might match the return type of a GCC\r
+   builtin and then its argument prototype would still apply.  */\r
+#ifdef __cplusplus\r
+extern "C"\r
+#endif\r
+char setlocale ();\r
+int\r
+main ()\r
+{\r
+return setlocale ();\r
+  ;\r
+  return 0;\r
+}\r
+_ACEOF\r
+rm -f conftest.$ac_objext conftest$ac_exeext\r
+if { (ac_try="$ac_link"\r
+case "(($ac_try" in\r
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;\r
+  *) ac_try_echo=$ac_try;;\r
+esac\r
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5\r
+  (eval "$ac_link") 2>conftest.er1\r
+  ac_status=$?\r
+  grep -v '^ *+' conftest.er1 >conftest.err\r
+  rm -f conftest.er1\r
+  cat conftest.err >&5\r
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5\r
+  (exit $ac_status); } && {\r
+        test -z "$ac_c_werror_flag" ||\r
+        test ! -s conftest.err\r
+       } && test -s conftest$ac_exeext &&\r
+       $as_test_x conftest$ac_exeext; then\r
+  ac_cv_lib_i_setlocale=yes\r
+else\r
+  echo "$as_me: failed program was:" >&5\r
+sed 's/^/| /' conftest.$ac_ext >&5\r
+\r
+       ac_cv_lib_i_setlocale=no\r
+fi\r
+\r
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \\r
+      conftest$ac_exeext conftest.$ac_ext\r
+LIBS=$ac_check_lib_save_LIBS\r
+fi\r
+{ echo "$as_me:$LINENO: result: $ac_cv_lib_i_setlocale" >&5\r
+echo "${ECHO_T}$ac_cv_lib_i_setlocale" >&6; }\r
+if test $ac_cv_lib_i_setlocale = yes; then\r
+  cat >>confdefs.h <<_ACEOF\r
+#define HAVE_LIBI 1\r
+_ACEOF\r
+\r
+  LIBS="-li $LIBS"\r
+\r
+else\r
+  cat >>confdefs.h <<\_ACEOF\r
+#define X_LOCALE 1\r
+_ACEOF\r
+\r
+fi\r
+\r
+fi\r
+\r
+\r
+\r
+{ echo "$as_me:$LINENO: checking for getpseudotty in -lseq" >&5\r
+echo $ECHO_N "checking for getpseudotty in -lseq... $ECHO_C" >&6; }\r
+if test "${ac_cv_lib_seq_getpseudotty+set}" = set; then\r
+  echo $ECHO_N "(cached) $ECHO_C" >&6\r
+else\r
+  ac_check_lib_save_LIBS=$LIBS\r
+LIBS="-lseq  $LIBS"\r
+cat >conftest.$ac_ext <<_ACEOF\r
+/* confdefs.h.  */\r
+_ACEOF\r
+cat confdefs.h >>conftest.$ac_ext\r
+cat >>conftest.$ac_ext <<_ACEOF\r
+/* end confdefs.h.  */\r
+\r
+/* Override any GCC internal prototype to avoid an error.\r
+   Use char because int might match the return type of a GCC\r
+   builtin and then its argument prototype would still apply.  */\r
+#ifdef __cplusplus\r
+extern "C"\r
+#endif\r
+char getpseudotty ();\r
+int\r
+main ()\r
+{\r
+return getpseudotty ();\r
+  ;\r
+  return 0;\r
+}\r
+_ACEOF\r
+rm -f conftest.$ac_objext conftest$ac_exeext\r
+if { (ac_try="$ac_link"\r
+case "(($ac_try" in\r
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;\r
+  *) ac_try_echo=$ac_try;;\r
+esac\r
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5\r
+  (eval "$ac_link") 2>conftest.er1\r
+  ac_status=$?\r
+  grep -v '^ *+' conftest.er1 >conftest.err\r
+  rm -f conftest.er1\r
+  cat conftest.err >&5\r
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5\r
+  (exit $ac_status); } && {\r
+        test -z "$ac_c_werror_flag" ||\r
+        test ! -s conftest.err\r
+       } && test -s conftest$ac_exeext &&\r
+       $as_test_x conftest$ac_exeext; then\r
+  ac_cv_lib_seq_getpseudotty=yes\r
+else\r
+  echo "$as_me: failed program was:" >&5\r
+sed 's/^/| /' conftest.$ac_ext >&5\r
+\r
+       ac_cv_lib_seq_getpseudotty=no\r
+fi\r
+\r
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \\r
+      conftest$ac_exeext conftest.$ac_ext\r
+LIBS=$ac_check_lib_save_LIBS\r
+fi\r
+{ echo "$as_me:$LINENO: result: $ac_cv_lib_seq_getpseudotty" >&5\r
+echo "${ECHO_T}$ac_cv_lib_seq_getpseudotty" >&6; }\r
+if test $ac_cv_lib_seq_getpseudotty = yes; then\r
+  cat >>confdefs.h <<_ACEOF\r
+#define HAVE_LIBSEQ 1\r
+_ACEOF\r
+\r
+  LIBS="-lseq $LIBS"\r
+\r
+fi\r
+\r
+\r
+{ echo "$as_me:$LINENO: checking for X" >&5\r
+echo $ECHO_N "checking for X... $ECHO_C" >&6; }\r
+\r
+\r
+# Check whether --with-x was given.\r
+if test "${with_x+set}" = set; then\r
+  withval=$with_x;\r
+fi\r
+\r
+# $have_x is `yes', `no', `disabled', or empty when we do not yet know.\r
+if test "x$with_x" = xno; then\r
+  # The user explicitly disabled X.\r
+  have_x=disabled\r
+else\r
+  case $x_includes,$x_libraries in #(\r
+    *\'*) { { echo "$as_me:$LINENO: error: Cannot use X directory names containing '" >&5\r
+echo "$as_me: error: Cannot use X directory names containing '" >&2;}\r
+   { (exit 1); exit 1; }; };; #(\r
+    *,NONE | NONE,*) if test "${ac_cv_have_x+set}" = set; then\r
+  echo $ECHO_N "(cached) $ECHO_C" >&6\r
+else\r
+  # One or both of the vars are not set, and there is no cached value.\r
+ac_x_includes=no ac_x_libraries=no\r
+rm -f -r conftest.dir\r
+if mkdir conftest.dir; then\r
+  cd conftest.dir\r
+  cat >Imakefile <<'_ACEOF'\r
+incroot:\r
+       @echo incroot='${INCROOT}'\r
+usrlibdir:\r
+       @echo usrlibdir='${USRLIBDIR}'\r
+libdir:\r
+       @echo libdir='${LIBDIR}'\r
+_ACEOF\r
+  if (export CC; ${XMKMF-xmkmf}) >/dev/null 2>/dev/null && test -f Makefile; then\r
+    # GNU make sometimes prints "make[1]: Entering...", which would confuse us.\r
+    for ac_var in incroot usrlibdir libdir; do\r
+      eval "ac_im_$ac_var=\`\${MAKE-make} $ac_var 2>/dev/null | sed -n 's/^$ac_var=//p'\`"\r
+    done\r
+    # Open Windows xmkmf reportedly sets LIBDIR instead of USRLIBDIR.\r
+    for ac_extension in a so sl; do\r
+      if test ! -f "$ac_im_usrlibdir/libX11.$ac_extension" &&\r
+        test -f "$ac_im_libdir/libX11.$ac_extension"; then\r
+       ac_im_usrlibdir=$ac_im_libdir; break\r
+      fi\r
+    done\r
+    # Screen out bogus values from the imake configuration.  They are\r
+    # bogus both because they are the default anyway, and because\r
+    # using them would break gcc on systems where it needs fixed includes.\r
+    case $ac_im_incroot in\r
+       /usr/include) ac_x_includes= ;;\r
+       *) test -f "$ac_im_incroot/X11/Xos.h" && ac_x_includes=$ac_im_incroot;;\r
+    esac\r
+    case $ac_im_usrlibdir in\r
+       /usr/lib | /lib) ;;\r
+       *) test -d "$ac_im_usrlibdir" && ac_x_libraries=$ac_im_usrlibdir ;;\r
+    esac\r
+  fi\r
+  cd ..\r
+  rm -f -r conftest.dir\r
+fi\r
+\r
+# Standard set of common directories for X headers.\r
+# Check X11 before X11Rn because it is often a symlink to the current release.\r
+ac_x_header_dirs='\r
+/usr/X11/include\r
+/usr/X11R6/include\r
+/usr/X11R5/include\r
+/usr/X11R4/include\r
+\r
+/usr/include/X11\r
+/usr/include/X11R6\r
+/usr/include/X11R5\r
+/usr/include/X11R4\r
+\r
+/usr/local/X11/include\r
+/usr/local/X11R6/include\r
+/usr/local/X11R5/include\r
+/usr/local/X11R4/include\r
+\r
+/usr/local/include/X11\r
+/usr/local/include/X11R6\r
+/usr/local/include/X11R5\r
+/usr/local/include/X11R4\r
+\r
+/usr/X386/include\r
+/usr/x386/include\r
+/usr/XFree86/include/X11\r
+\r
+/usr/include\r
+/usr/local/include\r
+/usr/unsupported/include\r
+/usr/athena/include\r
+/usr/local/x11r5/include\r
+/usr/lpp/Xamples/include\r
+\r
+/usr/openwin/include\r
+/usr/openwin/share/include'\r
+\r
+if test "$ac_x_includes" = no; then\r
+  # Guess where to find include files, by looking for Xlib.h.\r
+  # First, try using that file with no special directory specified.\r
+  cat >conftest.$ac_ext <<_ACEOF\r
+/* confdefs.h.  */\r
+_ACEOF\r
+cat confdefs.h >>conftest.$ac_ext\r
+cat >>conftest.$ac_ext <<_ACEOF\r
+/* end confdefs.h.  */\r
+#include <X11/Xlib.h>\r
+_ACEOF\r
+if { (ac_try="$ac_cpp conftest.$ac_ext"\r
+case "(($ac_try" in\r
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;\r
+  *) ac_try_echo=$ac_try;;\r
+esac\r
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5\r
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1\r
+  ac_status=$?\r
+  grep -v '^ *+' conftest.er1 >conftest.err\r
+  rm -f conftest.er1\r
+  cat conftest.err >&5\r
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5\r
+  (exit $ac_status); } >/dev/null && {\r
+        test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||\r
+        test ! -s conftest.err\r
+       }; then\r
+  # We can compile using X headers with no special include directory.\r
+ac_x_includes=\r
+else\r
+  echo "$as_me: failed program was:" >&5\r
+sed 's/^/| /' conftest.$ac_ext >&5\r
+\r
+  for ac_dir in $ac_x_header_dirs; do\r
+  if test -r "$ac_dir/X11/Xlib.h"; then\r
+    ac_x_includes=$ac_dir\r
+    break\r
+  fi\r
+done\r
+fi\r
+\r
+rm -f conftest.err conftest.$ac_ext\r
+fi # $ac_x_includes = no\r
+\r
+if test "$ac_x_libraries" = no; then\r
+  # Check for the libraries.\r
+  # See if we find them without any special options.\r
+  # Don't add to $LIBS permanently.\r
+  ac_save_LIBS=$LIBS\r
+  LIBS="-lX11 $LIBS"\r
+  cat >conftest.$ac_ext <<_ACEOF\r
+/* confdefs.h.  */\r
+_ACEOF\r
+cat confdefs.h >>conftest.$ac_ext\r
+cat >>conftest.$ac_ext <<_ACEOF\r
+/* end confdefs.h.  */\r
+#include <X11/Xlib.h>\r
+int\r
+main ()\r
+{\r
+XrmInitialize ()\r
+  ;\r
+  return 0;\r
+}\r
+_ACEOF\r
+rm -f conftest.$ac_objext conftest$ac_exeext\r
+if { (ac_try="$ac_link"\r
+case "(($ac_try" in\r
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;\r
+  *) ac_try_echo=$ac_try;;\r
+esac\r
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5\r
+  (eval "$ac_link") 2>conftest.er1\r
+  ac_status=$?\r
+  grep -v '^ *+' conftest.er1 >conftest.err\r
+  rm -f conftest.er1\r
+  cat conftest.err >&5\r
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5\r
+  (exit $ac_status); } && {\r
+        test -z "$ac_c_werror_flag" ||\r
+        test ! -s conftest.err\r
+       } && test -s conftest$ac_exeext &&\r
+       $as_test_x conftest$ac_exeext; then\r
+  LIBS=$ac_save_LIBS\r
+# We can link X programs with no special library path.\r
+ac_x_libraries=\r
+else\r
+  echo "$as_me: failed program was:" >&5\r
+sed 's/^/| /' conftest.$ac_ext >&5\r
+\r
+       LIBS=$ac_save_LIBS\r
+for ac_dir in `echo "$ac_x_includes $ac_x_header_dirs" | sed s/include/lib/g`\r
+do\r
+  # Don't even attempt the hair of trying to link an X program!\r
+  for ac_extension in a so sl; do\r
+    if test -r "$ac_dir/libX11.$ac_extension"; then\r
+      ac_x_libraries=$ac_dir\r
+      break 2\r
+    fi\r
+  done\r
+done\r
+fi\r
+\r
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \\r
+      conftest$ac_exeext conftest.$ac_ext\r
+fi # $ac_x_libraries = no\r
+\r
+case $ac_x_includes,$ac_x_libraries in #(\r
+  no,* | *,no | *\'*)\r
+    # Didn't find X, or a directory has "'" in its name.\r
+    ac_cv_have_x="have_x=no";; #(\r
+  *)\r
+    # Record where we found X for the cache.\r
+    ac_cv_have_x="have_x=yes\\r
+       ac_x_includes='$ac_x_includes'\\r
+       ac_x_libraries='$ac_x_libraries'"\r
+esac\r
+fi\r
+;; #(\r
+    *) have_x=yes;;\r
+  esac\r
+  eval "$ac_cv_have_x"\r
+fi # $with_x != no\r
+\r
+if test "$have_x" != yes; then\r
+  { echo "$as_me:$LINENO: result: $have_x" >&5\r
+echo "${ECHO_T}$have_x" >&6; }\r
+  no_x=yes\r
+else\r
+  # If each of the values was on the command line, it overrides each guess.\r
+  test "x$x_includes" = xNONE && x_includes=$ac_x_includes\r
+  test "x$x_libraries" = xNONE && x_libraries=$ac_x_libraries\r
+  # Update the cache value to reflect the command line values.\r
+  ac_cv_have_x="have_x=yes\\r
+       ac_x_includes='$x_includes'\\r
+       ac_x_libraries='$x_libraries'"\r
+  { echo "$as_me:$LINENO: result: libraries $x_libraries, headers $x_includes" >&5\r
+echo "${ECHO_T}libraries $x_libraries, headers $x_includes" >&6; }\r
+fi\r
+\r
+if test "$no_x" = yes; then\r
+  # Not all programs may use this symbol, but it does not hurt to define it.\r
+\r
+cat >>confdefs.h <<\_ACEOF\r
+#define X_DISPLAY_MISSING 1\r
+_ACEOF\r
+\r
+  X_CFLAGS= X_PRE_LIBS= X_LIBS= X_EXTRA_LIBS=\r
+else\r
+  if test -n "$x_includes"; then\r
+    X_CFLAGS="$X_CFLAGS -I$x_includes"\r
+  fi\r
+\r
+  # It would also be nice to do this for all -L options, not just this one.\r
+  if test -n "$x_libraries"; then\r
+    X_LIBS="$X_LIBS -L$x_libraries"\r
+    # For Solaris; some versions of Sun CC require a space after -R and\r
+    # others require no space.  Words are not sufficient . . . .\r
+    { echo "$as_me:$LINENO: checking whether -R must be followed by a space" >&5\r
+echo $ECHO_N "checking whether -R must be followed by a space... $ECHO_C" >&6; }\r
+    ac_xsave_LIBS=$LIBS; LIBS="$LIBS -R$x_libraries"\r
+    ac_xsave_c_werror_flag=$ac_c_werror_flag\r
+    ac_c_werror_flag=yes\r
+    cat >conftest.$ac_ext <<_ACEOF\r
+/* confdefs.h.  */\r
+_ACEOF\r
+cat confdefs.h >>conftest.$ac_ext\r
+cat >>conftest.$ac_ext <<_ACEOF\r
+/* end confdefs.h.  */\r
+\r
+int\r
+main ()\r
+{\r
+\r
+  ;\r
+  return 0;\r
+}\r
+_ACEOF\r
+rm -f conftest.$ac_objext conftest$ac_exeext\r
+if { (ac_try="$ac_link"\r
+case "(($ac_try" in\r
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;\r
+  *) ac_try_echo=$ac_try;;\r
+esac\r
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5\r
+  (eval "$ac_link") 2>conftest.er1\r
+  ac_status=$?\r
+  grep -v '^ *+' conftest.er1 >conftest.err\r
+  rm -f conftest.er1\r
+  cat conftest.err >&5\r
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5\r
+  (exit $ac_status); } && {\r
+        test -z "$ac_c_werror_flag" ||\r
+        test ! -s conftest.err\r
+       } && test -s conftest$ac_exeext &&\r
+       $as_test_x conftest$ac_exeext; then\r
+  { echo "$as_me:$LINENO: result: no" >&5\r
+echo "${ECHO_T}no" >&6; }\r
+       X_LIBS="$X_LIBS -R$x_libraries"\r
+else\r
+  echo "$as_me: failed program was:" >&5\r
+sed 's/^/| /' conftest.$ac_ext >&5\r
+\r
+       LIBS="$ac_xsave_LIBS -R $x_libraries"\r
+       cat >conftest.$ac_ext <<_ACEOF\r
+/* confdefs.h.  */\r
+_ACEOF\r
+cat confdefs.h >>conftest.$ac_ext\r
+cat >>conftest.$ac_ext <<_ACEOF\r
+/* end confdefs.h.  */\r
+\r
+int\r
+main ()\r
+{\r
+\r
+  ;\r
+  return 0;\r
+}\r
+_ACEOF\r
+rm -f conftest.$ac_objext conftest$ac_exeext\r
+if { (ac_try="$ac_link"\r
+case "(($ac_try" in\r
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;\r
+  *) ac_try_echo=$ac_try;;\r
+esac\r
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5\r
+  (eval "$ac_link") 2>conftest.er1\r
+  ac_status=$?\r
+  grep -v '^ *+' conftest.er1 >conftest.err\r
+  rm -f conftest.er1\r
+  cat conftest.err >&5\r
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5\r
+  (exit $ac_status); } && {\r
+        test -z "$ac_c_werror_flag" ||\r
+        test ! -s conftest.err\r
+       } && test -s conftest$ac_exeext &&\r
+       $as_test_x conftest$ac_exeext; then\r
+  { echo "$as_me:$LINENO: result: yes" >&5\r
+echo "${ECHO_T}yes" >&6; }\r
+         X_LIBS="$X_LIBS -R $x_libraries"\r
+else\r
+  echo "$as_me: failed program was:" >&5\r
+sed 's/^/| /' conftest.$ac_ext >&5\r
+\r
+       { echo "$as_me:$LINENO: result: neither works" >&5\r
+echo "${ECHO_T}neither works" >&6; }\r
+fi\r
+\r
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \\r
+      conftest$ac_exeext conftest.$ac_ext\r
+fi\r
+\r
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \\r
+      conftest$ac_exeext conftest.$ac_ext\r
+    ac_c_werror_flag=$ac_xsave_c_werror_flag\r
+    LIBS=$ac_xsave_LIBS\r
+  fi\r
+\r
+  # Check for system-dependent libraries X programs must link with.\r
+  # Do this before checking for the system-independent R6 libraries\r
+  # (-lICE), since we may need -lsocket or whatever for X linking.\r
+\r
+  if test "$ISC" = yes; then\r
+    X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl_s -linet"\r
+  else\r
+    # Martyn Johnson says this is needed for Ultrix, if the X\r
+    # libraries were built with DECnet support.  And Karl Berry says\r
+    # the Alpha needs dnet_stub (dnet does not exist).\r
+    ac_xsave_LIBS="$LIBS"; LIBS="$LIBS $X_LIBS -lX11"\r
+    cat >conftest.$ac_ext <<_ACEOF\r
+/* confdefs.h.  */\r
+_ACEOF\r
+cat confdefs.h >>conftest.$ac_ext\r
+cat >>conftest.$ac_ext <<_ACEOF\r
+/* end confdefs.h.  */\r
+\r
+/* Override any GCC internal prototype to avoid an error.\r
+   Use char because int might match the return type of a GCC\r
+   builtin and then its argument prototype would still apply.  */\r
+#ifdef __cplusplus\r
+extern "C"\r
+#endif\r
+char XOpenDisplay ();\r
+int\r
+main ()\r
+{\r
+return XOpenDisplay ();\r
+  ;\r
+  return 0;\r
+}\r
+_ACEOF\r
+rm -f conftest.$ac_objext conftest$ac_exeext\r
+if { (ac_try="$ac_link"\r
+case "(($ac_try" in\r
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;\r
+  *) ac_try_echo=$ac_try;;\r
+esac\r
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5\r
+  (eval "$ac_link") 2>conftest.er1\r
+  ac_status=$?\r
+  grep -v '^ *+' conftest.er1 >conftest.err\r
+  rm -f conftest.er1\r
+  cat conftest.err >&5\r
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5\r
+  (exit $ac_status); } && {\r
+        test -z "$ac_c_werror_flag" ||\r
+        test ! -s conftest.err\r
+       } && test -s conftest$ac_exeext &&\r
+       $as_test_x conftest$ac_exeext; then\r
+  :\r
+else\r
+  echo "$as_me: failed program was:" >&5\r
+sed 's/^/| /' conftest.$ac_ext >&5\r
+\r
+       { echo "$as_me:$LINENO: checking for dnet_ntoa in -ldnet" >&5\r
+echo $ECHO_N "checking for dnet_ntoa in -ldnet... $ECHO_C" >&6; }\r
+if test "${ac_cv_lib_dnet_dnet_ntoa+set}" = set; then\r
+  echo $ECHO_N "(cached) $ECHO_C" >&6\r
+else\r
+  ac_check_lib_save_LIBS=$LIBS\r
+LIBS="-ldnet  $LIBS"\r
+cat >conftest.$ac_ext <<_ACEOF\r
+/* confdefs.h.  */\r
+_ACEOF\r
+cat confdefs.h >>conftest.$ac_ext\r
+cat >>conftest.$ac_ext <<_ACEOF\r
+/* end confdefs.h.  */\r
+\r
+/* Override any GCC internal prototype to avoid an error.\r
+   Use char because int might match the return type of a GCC\r
+   builtin and then its argument prototype would still apply.  */\r
+#ifdef __cplusplus\r
+extern "C"\r
+#endif\r
+char dnet_ntoa ();\r
+int\r
+main ()\r
+{\r
+return dnet_ntoa ();\r
+  ;\r
+  return 0;\r
+}\r
+_ACEOF\r
+rm -f conftest.$ac_objext conftest$ac_exeext\r
+if { (ac_try="$ac_link"\r
+case "(($ac_try" in\r
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;\r
+  *) ac_try_echo=$ac_try;;\r
+esac\r
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5\r
+  (eval "$ac_link") 2>conftest.er1\r
+  ac_status=$?\r
+  grep -v '^ *+' conftest.er1 >conftest.err\r
+  rm -f conftest.er1\r
+  cat conftest.err >&5\r
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5\r
+  (exit $ac_status); } && {\r
+        test -z "$ac_c_werror_flag" ||\r
+        test ! -s conftest.err\r
+       } && test -s conftest$ac_exeext &&\r
+       $as_test_x conftest$ac_exeext; then\r
+  ac_cv_lib_dnet_dnet_ntoa=yes\r
+else\r
+  echo "$as_me: failed program was:" >&5\r
+sed 's/^/| /' conftest.$ac_ext >&5\r
+\r
+       ac_cv_lib_dnet_dnet_ntoa=no\r
+fi\r
+\r
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \\r
+      conftest$ac_exeext conftest.$ac_ext\r
+LIBS=$ac_check_lib_save_LIBS\r
+fi\r
+{ echo "$as_me:$LINENO: result: $ac_cv_lib_dnet_dnet_ntoa" >&5\r
+echo "${ECHO_T}$ac_cv_lib_dnet_dnet_ntoa" >&6; }\r
+if test $ac_cv_lib_dnet_dnet_ntoa = yes; then\r
+  X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet"\r
+fi\r
+\r
+    if test $ac_cv_lib_dnet_dnet_ntoa = no; then\r
+      { echo "$as_me:$LINENO: checking for dnet_ntoa in -ldnet_stub" >&5\r
+echo $ECHO_N "checking for dnet_ntoa in -ldnet_stub... $ECHO_C" >&6; }\r
+if test "${ac_cv_lib_dnet_stub_dnet_ntoa+set}" = set; then\r
+  echo $ECHO_N "(cached) $ECHO_C" >&6\r
+else\r
+  ac_check_lib_save_LIBS=$LIBS\r
+LIBS="-ldnet_stub  $LIBS"\r
+cat >conftest.$ac_ext <<_ACEOF\r
+/* confdefs.h.  */\r
+_ACEOF\r
+cat confdefs.h >>conftest.$ac_ext\r
+cat >>conftest.$ac_ext <<_ACEOF\r
+/* end confdefs.h.  */\r
+\r
+/* Override any GCC internal prototype to avoid an error.\r
+   Use char because int might match the return type of a GCC\r
+   builtin and then its argument prototype would still apply.  */\r
+#ifdef __cplusplus\r
+extern "C"\r
+#endif\r
+char dnet_ntoa ();\r
+int\r
+main ()\r
+{\r
+return dnet_ntoa ();\r
+  ;\r
+  return 0;\r
+}\r
+_ACEOF\r
+rm -f conftest.$ac_objext conftest$ac_exeext\r
+if { (ac_try="$ac_link"\r
+case "(($ac_try" in\r
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;\r
+  *) ac_try_echo=$ac_try;;\r
+esac\r
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5\r
+  (eval "$ac_link") 2>conftest.er1\r
+  ac_status=$?\r
+  grep -v '^ *+' conftest.er1 >conftest.err\r
+  rm -f conftest.er1\r
+  cat conftest.err >&5\r
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5\r
+  (exit $ac_status); } && {\r
+        test -z "$ac_c_werror_flag" ||\r
+        test ! -s conftest.err\r
+       } && test -s conftest$ac_exeext &&\r
+       $as_test_x conftest$ac_exeext; then\r
+  ac_cv_lib_dnet_stub_dnet_ntoa=yes\r
+else\r
+  echo "$as_me: failed program was:" >&5\r
+sed 's/^/| /' conftest.$ac_ext >&5\r
+\r
+       ac_cv_lib_dnet_stub_dnet_ntoa=no\r
+fi\r
+\r
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \\r
+      conftest$ac_exeext conftest.$ac_ext\r
+LIBS=$ac_check_lib_save_LIBS\r
+fi\r
+{ echo "$as_me:$LINENO: result: $ac_cv_lib_dnet_stub_dnet_ntoa" >&5\r
+echo "${ECHO_T}$ac_cv_lib_dnet_stub_dnet_ntoa" >&6; }\r
+if test $ac_cv_lib_dnet_stub_dnet_ntoa = yes; then\r
+  X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet_stub"\r
+fi\r
+\r
+    fi\r
+fi\r
+\r
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \\r
+      conftest$ac_exeext conftest.$ac_ext\r
+    LIBS="$ac_xsave_LIBS"\r
+\r
+    # msh@cis.ufl.edu says -lnsl (and -lsocket) are needed for his 386/AT,\r
+    # to get the SysV transport functions.\r
+    # Chad R. Larson says the Pyramis MIS-ES running DC/OSx (SVR4)\r
+    # needs -lnsl.\r
+    # The nsl library prevents programs from opening the X display\r
+    # on Irix 5.2, according to T.E. Dickey.\r
+    # The functions gethostbyname, getservbyname, and inet_addr are\r
+    # in -lbsd on LynxOS 3.0.1/i386, according to Lars Hecking.\r
+    { echo "$as_me:$LINENO: checking for gethostbyname" >&5\r
+echo $ECHO_N "checking for gethostbyname... $ECHO_C" >&6; }\r
+if test "${ac_cv_func_gethostbyname+set}" = set; then\r
+  echo $ECHO_N "(cached) $ECHO_C" >&6\r
+else\r
+  cat >conftest.$ac_ext <<_ACEOF\r
+/* confdefs.h.  */\r
+_ACEOF\r
+cat confdefs.h >>conftest.$ac_ext\r
+cat >>conftest.$ac_ext <<_ACEOF\r
+/* end confdefs.h.  */\r
+/* Define gethostbyname to an innocuous variant, in case <limits.h> declares gethostbyname.\r
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */\r
+#define gethostbyname innocuous_gethostbyname\r
+\r
+/* System header to define __stub macros and hopefully few prototypes,\r
+    which can conflict with char gethostbyname (); below.\r
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since\r
+    <limits.h> exists even on freestanding compilers.  */\r
+\r
+#ifdef __STDC__\r
+# include <limits.h>\r
+#else\r
+# include <assert.h>\r
+#endif\r
+\r
+#undef gethostbyname\r
+\r
+/* Override any GCC internal prototype to avoid an error.\r
+   Use char because int might match the return type of a GCC\r
+   builtin and then its argument prototype would still apply.  */\r
+#ifdef __cplusplus\r
+extern "C"\r
+#endif\r
+char gethostbyname ();\r
+/* The GNU C library defines this for functions which it implements\r
+    to always fail with ENOSYS.  Some functions are actually named\r
+    something starting with __ and the normal name is an alias.  */\r
+#if defined __stub_gethostbyname || defined __stub___gethostbyname\r
+choke me\r
+#endif\r
+\r
+int\r
+main ()\r
+{\r
+return gethostbyname ();\r
+  ;\r
+  return 0;\r
+}\r
+_ACEOF\r
+rm -f conftest.$ac_objext conftest$ac_exeext\r
+if { (ac_try="$ac_link"\r
+case "(($ac_try" in\r
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;\r
+  *) ac_try_echo=$ac_try;;\r
+esac\r
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5\r
+  (eval "$ac_link") 2>conftest.er1\r
+  ac_status=$?\r
+  grep -v '^ *+' conftest.er1 >conftest.err\r
+  rm -f conftest.er1\r
+  cat conftest.err >&5\r
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5\r
+  (exit $ac_status); } && {\r
+        test -z "$ac_c_werror_flag" ||\r
+        test ! -s conftest.err\r
+       } && test -s conftest$ac_exeext &&\r
+       $as_test_x conftest$ac_exeext; then\r
+  ac_cv_func_gethostbyname=yes\r
+else\r
+  echo "$as_me: failed program was:" >&5\r
+sed 's/^/| /' conftest.$ac_ext >&5\r
+\r
+       ac_cv_func_gethostbyname=no\r
+fi\r
+\r
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \\r
+      conftest$ac_exeext conftest.$ac_ext\r
+fi\r
+{ echo "$as_me:$LINENO: result: $ac_cv_func_gethostbyname" >&5\r
+echo "${ECHO_T}$ac_cv_func_gethostbyname" >&6; }\r
+\r
+    if test $ac_cv_func_gethostbyname = no; then\r
+      { echo "$as_me:$LINENO: checking for gethostbyname in -lnsl" >&5\r
+echo $ECHO_N "checking for gethostbyname in -lnsl... $ECHO_C" >&6; }\r
+if test "${ac_cv_lib_nsl_gethostbyname+set}" = set; then\r
+  echo $ECHO_N "(cached) $ECHO_C" >&6\r
+else\r
+  ac_check_lib_save_LIBS=$LIBS\r
+LIBS="-lnsl  $LIBS"\r
+cat >conftest.$ac_ext <<_ACEOF\r
+/* confdefs.h.  */\r
+_ACEOF\r
+cat confdefs.h >>conftest.$ac_ext\r
+cat >>conftest.$ac_ext <<_ACEOF\r
+/* end confdefs.h.  */\r
+\r
+/* Override any GCC internal prototype to avoid an error.\r
+   Use char because int might match the return type of a GCC\r
+   builtin and then its argument prototype would still apply.  */\r
+#ifdef __cplusplus\r
+extern "C"\r
+#endif\r
+char gethostbyname ();\r
+int\r
+main ()\r
+{\r
+return gethostbyname ();\r
+  ;\r
+  return 0;\r
+}\r
+_ACEOF\r
+rm -f conftest.$ac_objext conftest$ac_exeext\r
+if { (ac_try="$ac_link"\r
+case "(($ac_try" in\r
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;\r
+  *) ac_try_echo=$ac_try;;\r
+esac\r
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5\r
+  (eval "$ac_link") 2>conftest.er1\r
+  ac_status=$?\r
+  grep -v '^ *+' conftest.er1 >conftest.err\r
+  rm -f conftest.er1\r
+  cat conftest.err >&5\r
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5\r
+  (exit $ac_status); } && {\r
+        test -z "$ac_c_werror_flag" ||\r
+        test ! -s conftest.err\r
+       } && test -s conftest$ac_exeext &&\r
+       $as_test_x conftest$ac_exeext; then\r
+  ac_cv_lib_nsl_gethostbyname=yes\r
+else\r
+  echo "$as_me: failed program was:" >&5\r
+sed 's/^/| /' conftest.$ac_ext >&5\r
+\r
+       ac_cv_lib_nsl_gethostbyname=no\r
+fi\r
+\r
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \\r
+      conftest$ac_exeext conftest.$ac_ext\r
+LIBS=$ac_check_lib_save_LIBS\r
+fi\r
+{ echo "$as_me:$LINENO: result: $ac_cv_lib_nsl_gethostbyname" >&5\r
+echo "${ECHO_T}$ac_cv_lib_nsl_gethostbyname" >&6; }\r
+if test $ac_cv_lib_nsl_gethostbyname = yes; then\r
+  X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl"\r
+fi\r
+\r
+      if test $ac_cv_lib_nsl_gethostbyname = no; then\r
+       { echo "$as_me:$LINENO: checking for gethostbyname in -lbsd" >&5\r
+echo $ECHO_N "checking for gethostbyname in -lbsd... $ECHO_C" >&6; }\r
+if test "${ac_cv_lib_bsd_gethostbyname+set}" = set; then\r
+  echo $ECHO_N "(cached) $ECHO_C" >&6\r
+else\r
+  ac_check_lib_save_LIBS=$LIBS\r
+LIBS="-lbsd  $LIBS"\r
+cat >conftest.$ac_ext <<_ACEOF\r
+/* confdefs.h.  */\r
+_ACEOF\r
+cat confdefs.h >>conftest.$ac_ext\r
+cat >>conftest.$ac_ext <<_ACEOF\r
+/* end confdefs.h.  */\r
+\r
+/* Override any GCC internal prototype to avoid an error.\r
+   Use char because int might match the return type of a GCC\r
+   builtin and then its argument prototype would still apply.  */\r
+#ifdef __cplusplus\r
+extern "C"\r
+#endif\r
+char gethostbyname ();\r
+int\r
+main ()\r
+{\r
+return gethostbyname ();\r
+  ;\r
+  return 0;\r
+}\r
+_ACEOF\r
+rm -f conftest.$ac_objext conftest$ac_exeext\r
+if { (ac_try="$ac_link"\r
+case "(($ac_try" in\r
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;\r
+  *) ac_try_echo=$ac_try;;\r
+esac\r
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5\r
+  (eval "$ac_link") 2>conftest.er1\r
+  ac_status=$?\r
+  grep -v '^ *+' conftest.er1 >conftest.err\r
+  rm -f conftest.er1\r
+  cat conftest.err >&5\r
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5\r
+  (exit $ac_status); } && {\r
+        test -z "$ac_c_werror_flag" ||\r
+        test ! -s conftest.err\r
+       } && test -s conftest$ac_exeext &&\r
+       $as_test_x conftest$ac_exeext; then\r
+  ac_cv_lib_bsd_gethostbyname=yes\r
+else\r
+  echo "$as_me: failed program was:" >&5\r
+sed 's/^/| /' conftest.$ac_ext >&5\r
+\r
+       ac_cv_lib_bsd_gethostbyname=no\r
+fi\r
+\r
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \\r
+      conftest$ac_exeext conftest.$ac_ext\r
+LIBS=$ac_check_lib_save_LIBS\r
+fi\r
+{ echo "$as_me:$LINENO: result: $ac_cv_lib_bsd_gethostbyname" >&5\r
+echo "${ECHO_T}$ac_cv_lib_bsd_gethostbyname" >&6; }\r
+if test $ac_cv_lib_bsd_gethostbyname = yes; then\r
+  X_EXTRA_LIBS="$X_EXTRA_LIBS -lbsd"\r
+fi\r
+\r
+      fi\r
+    fi\r
+\r
+    # lieder@skyler.mavd.honeywell.com says without -lsocket,\r
+    # socket/setsockopt and other routines are undefined under SCO ODT\r
+    # 2.0.  But -lsocket is broken on IRIX 5.2 (and is not necessary\r
+    # on later versions), says Simon Leinen: it contains gethostby*\r
+    # variants that don't use the name server (or something).  -lsocket\r
+    # must be given before -lnsl if both are needed.  We assume that\r
+    # if connect needs -lnsl, so does gethostbyname.\r
+    { echo "$as_me:$LINENO: checking for connect" >&5\r
+echo $ECHO_N "checking for connect... $ECHO_C" >&6; }\r
+if test "${ac_cv_func_connect+set}" = set; then\r
+  echo $ECHO_N "(cached) $ECHO_C" >&6\r
+else\r
+  cat >conftest.$ac_ext <<_ACEOF\r
+/* confdefs.h.  */\r
+_ACEOF\r
+cat confdefs.h >>conftest.$ac_ext\r
+cat >>conftest.$ac_ext <<_ACEOF\r
+/* end confdefs.h.  */\r
+/* Define connect to an innocuous variant, in case <limits.h> declares connect.\r
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */\r
+#define connect innocuous_connect\r
+\r
+/* System header to define __stub macros and hopefully few prototypes,\r
+    which can conflict with char connect (); below.\r
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since\r
+    <limits.h> exists even on freestanding compilers.  */\r
+\r
+#ifdef __STDC__\r
+# include <limits.h>\r
+#else\r
+# include <assert.h>\r
+#endif\r
+\r
+#undef connect\r
+\r
+/* Override any GCC internal prototype to avoid an error.\r
+   Use char because int might match the return type of a GCC\r
+   builtin and then its argument prototype would still apply.  */\r
+#ifdef __cplusplus\r
+extern "C"\r
+#endif\r
+char connect ();\r
+/* The GNU C library defines this for functions which it implements\r
+    to always fail with ENOSYS.  Some functions are actually named\r
+    something starting with __ and the normal name is an alias.  */\r
+#if defined __stub_connect || defined __stub___connect\r
+choke me\r
+#endif\r
+\r
+int\r
+main ()\r
+{\r
+return connect ();\r
+  ;\r
+  return 0;\r
+}\r
+_ACEOF\r
+rm -f conftest.$ac_objext conftest$ac_exeext\r
+if { (ac_try="$ac_link"\r
+case "(($ac_try" in\r
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;\r
+  *) ac_try_echo=$ac_try;;\r
+esac\r
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5\r
+  (eval "$ac_link") 2>conftest.er1\r
+  ac_status=$?\r
+  grep -v '^ *+' conftest.er1 >conftest.err\r
+  rm -f conftest.er1\r
+  cat conftest.err >&5\r
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5\r
+  (exit $ac_status); } && {\r
+        test -z "$ac_c_werror_flag" ||\r
+        test ! -s conftest.err\r
+       } && test -s conftest$ac_exeext &&\r
+       $as_test_x conftest$ac_exeext; then\r
+  ac_cv_func_connect=yes\r
+else\r
+  echo "$as_me: failed program was:" >&5\r
+sed 's/^/| /' conftest.$ac_ext >&5\r
+\r
+       ac_cv_func_connect=no\r
+fi\r
+\r
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \\r
+      conftest$ac_exeext conftest.$ac_ext\r
+fi\r
+{ echo "$as_me:$LINENO: result: $ac_cv_func_connect" >&5\r
+echo "${ECHO_T}$ac_cv_func_connect" >&6; }\r
+\r
+    if test $ac_cv_func_connect = no; then\r
+      { echo "$as_me:$LINENO: checking for connect in -lsocket" >&5\r
+echo $ECHO_N "checking for connect in -lsocket... $ECHO_C" >&6; }\r
+if test "${ac_cv_lib_socket_connect+set}" = set; then\r
+  echo $ECHO_N "(cached) $ECHO_C" >&6\r
+else\r
+  ac_check_lib_save_LIBS=$LIBS\r
+LIBS="-lsocket $X_EXTRA_LIBS $LIBS"\r
+cat >conftest.$ac_ext <<_ACEOF\r
+/* confdefs.h.  */\r
+_ACEOF\r
+cat confdefs.h >>conftest.$ac_ext\r
+cat >>conftest.$ac_ext <<_ACEOF\r
+/* end confdefs.h.  */\r
+\r
+/* Override any GCC internal prototype to avoid an error.\r
+   Use char because int might match the return type of a GCC\r
+   builtin and then its argument prototype would still apply.  */\r
+#ifdef __cplusplus\r
+extern "C"\r
+#endif\r
+char connect ();\r
+int\r
+main ()\r
+{\r
+return connect ();\r
+  ;\r
+  return 0;\r
+}\r
+_ACEOF\r
+rm -f conftest.$ac_objext conftest$ac_exeext\r
+if { (ac_try="$ac_link"\r
+case "(($ac_try" in\r
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;\r
+  *) ac_try_echo=$ac_try;;\r
+esac\r
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5\r
+  (eval "$ac_link") 2>conftest.er1\r
+  ac_status=$?\r
+  grep -v '^ *+' conftest.er1 >conftest.err\r
+  rm -f conftest.er1\r
+  cat conftest.err >&5\r
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5\r
+  (exit $ac_status); } && {\r
+        test -z "$ac_c_werror_flag" ||\r
+        test ! -s conftest.err\r
+       } && test -s conftest$ac_exeext &&\r
+       $as_test_x conftest$ac_exeext; then\r
+  ac_cv_lib_socket_connect=yes\r
+else\r
+  echo "$as_me: failed program was:" >&5\r
+sed 's/^/| /' conftest.$ac_ext >&5\r
+\r
+       ac_cv_lib_socket_connect=no\r
+fi\r
+\r
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \\r
+      conftest$ac_exeext conftest.$ac_ext\r
+LIBS=$ac_check_lib_save_LIBS\r
+fi\r
+{ echo "$as_me:$LINENO: result: $ac_cv_lib_socket_connect" >&5\r
+echo "${ECHO_T}$ac_cv_lib_socket_connect" >&6; }\r
+if test $ac_cv_lib_socket_connect = yes; then\r
+  X_EXTRA_LIBS="-lsocket $X_EXTRA_LIBS"\r
+fi\r
+\r
+    fi\r
+\r
+    # Guillermo Gomez says -lposix is necessary on A/UX.\r
+    { echo "$as_me:$LINENO: checking for remove" >&5\r
+echo $ECHO_N "checking for remove... $ECHO_C" >&6; }\r
+if test "${ac_cv_func_remove+set}" = set; then\r
+  echo $ECHO_N "(cached) $ECHO_C" >&6\r
+else\r
+  cat >conftest.$ac_ext <<_ACEOF\r
+/* confdefs.h.  */\r
+_ACEOF\r
+cat confdefs.h >>conftest.$ac_ext\r
+cat >>conftest.$ac_ext <<_ACEOF\r
+/* end confdefs.h.  */\r
+/* Define remove to an innocuous variant, in case <limits.h> declares remove.\r
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */\r
+#define remove innocuous_remove\r
+\r
+/* System header to define __stub macros and hopefully few prototypes,\r
+    which can conflict with char remove (); below.\r
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since\r
+    <limits.h> exists even on freestanding compilers.  */\r
+\r
+#ifdef __STDC__\r
+# include <limits.h>\r
+#else\r
+# include <assert.h>\r
+#endif\r
+\r
+#undef remove\r
+\r
+/* Override any GCC internal prototype to avoid an error.\r
+   Use char because int might match the return type of a GCC\r
+   builtin and then its argument prototype would still apply.  */\r
+#ifdef __cplusplus\r
+extern "C"\r
+#endif\r
+char remove ();\r
+/* The GNU C library defines this for functions which it implements\r
+    to always fail with ENOSYS.  Some functions are actually named\r
+    something starting with __ and the normal name is an alias.  */\r
+#if defined __stub_remove || defined __stub___remove\r
+choke me\r
+#endif\r
+\r
+int\r
+main ()\r
+{\r
+return remove ();\r
+  ;\r
+  return 0;\r
+}\r
+_ACEOF\r
+rm -f conftest.$ac_objext conftest$ac_exeext\r
+if { (ac_try="$ac_link"\r
+case "(($ac_try" in\r
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;\r
+  *) ac_try_echo=$ac_try;;\r
+esac\r
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5\r
+  (eval "$ac_link") 2>conftest.er1\r
+  ac_status=$?\r
+  grep -v '^ *+' conftest.er1 >conftest.err\r
+  rm -f conftest.er1\r
+  cat conftest.err >&5\r
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5\r
+  (exit $ac_status); } && {\r
+        test -z "$ac_c_werror_flag" ||\r
+        test ! -s conftest.err\r
+       } && test -s conftest$ac_exeext &&\r
+       $as_test_x conftest$ac_exeext; then\r
+  ac_cv_func_remove=yes\r
+else\r
+  echo "$as_me: failed program was:" >&5\r
+sed 's/^/| /' conftest.$ac_ext >&5\r
+\r
+       ac_cv_func_remove=no\r
+fi\r
+\r
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \\r
+      conftest$ac_exeext conftest.$ac_ext\r
+fi\r
+{ echo "$as_me:$LINENO: result: $ac_cv_func_remove" >&5\r
+echo "${ECHO_T}$ac_cv_func_remove" >&6; }\r
+\r
+    if test $ac_cv_func_remove = no; then\r
+      { echo "$as_me:$LINENO: checking for remove in -lposix" >&5\r
+echo $ECHO_N "checking for remove in -lposix... $ECHO_C" >&6; }\r
+if test "${ac_cv_lib_posix_remove+set}" = set; then\r
+  echo $ECHO_N "(cached) $ECHO_C" >&6\r
+else\r
+  ac_check_lib_save_LIBS=$LIBS\r
+LIBS="-lposix  $LIBS"\r
+cat >conftest.$ac_ext <<_ACEOF\r
+/* confdefs.h.  */\r
+_ACEOF\r
+cat confdefs.h >>conftest.$ac_ext\r
+cat >>conftest.$ac_ext <<_ACEOF\r
+/* end confdefs.h.  */\r
+\r
+/* Override any GCC internal prototype to avoid an error.\r
+   Use char because int might match the return type of a GCC\r
+   builtin and then its argument prototype would still apply.  */\r
+#ifdef __cplusplus\r
+extern "C"\r
+#endif\r
+char remove ();\r
+int\r
+main ()\r
+{\r
+return remove ();\r
+  ;\r
+  return 0;\r
+}\r
+_ACEOF\r
+rm -f conftest.$ac_objext conftest$ac_exeext\r
+if { (ac_try="$ac_link"\r
+case "(($ac_try" in\r
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;\r
+  *) ac_try_echo=$ac_try;;\r
+esac\r
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5\r
+  (eval "$ac_link") 2>conftest.er1\r
+  ac_status=$?\r
+  grep -v '^ *+' conftest.er1 >conftest.err\r
+  rm -f conftest.er1\r
+  cat conftest.err >&5\r
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5\r
+  (exit $ac_status); } && {\r
+        test -z "$ac_c_werror_flag" ||\r
+        test ! -s conftest.err\r
+       } && test -s conftest$ac_exeext &&\r
+       $as_test_x conftest$ac_exeext; then\r
+  ac_cv_lib_posix_remove=yes\r
+else\r
+  echo "$as_me: failed program was:" >&5\r
+sed 's/^/| /' conftest.$ac_ext >&5\r
+\r
+       ac_cv_lib_posix_remove=no\r
+fi\r
+\r
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \\r
+      conftest$ac_exeext conftest.$ac_ext\r
+LIBS=$ac_check_lib_save_LIBS\r
+fi\r
+{ echo "$as_me:$LINENO: result: $ac_cv_lib_posix_remove" >&5\r
+echo "${ECHO_T}$ac_cv_lib_posix_remove" >&6; }\r
+if test $ac_cv_lib_posix_remove = yes; then\r
+  X_EXTRA_LIBS="$X_EXTRA_LIBS -lposix"\r
+fi\r
+\r
+    fi\r
+\r
+    # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay.\r
+    { echo "$as_me:$LINENO: checking for shmat" >&5\r
+echo $ECHO_N "checking for shmat... $ECHO_C" >&6; }\r
+if test "${ac_cv_func_shmat+set}" = set; then\r
+  echo $ECHO_N "(cached) $ECHO_C" >&6\r
+else\r
+  cat >conftest.$ac_ext <<_ACEOF\r
+/* confdefs.h.  */\r
+_ACEOF\r
+cat confdefs.h >>conftest.$ac_ext\r
+cat >>conftest.$ac_ext <<_ACEOF\r
+/* end confdefs.h.  */\r
+/* Define shmat to an innocuous variant, in case <limits.h> declares shmat.\r
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */\r
+#define shmat innocuous_shmat\r
+\r
+/* System header to define __stub macros and hopefully few prototypes,\r
+    which can conflict with char shmat (); below.\r
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since\r
+    <limits.h> exists even on freestanding compilers.  */\r
+\r
+#ifdef __STDC__\r
+# include <limits.h>\r
+#else\r
+# include <assert.h>\r
+#endif\r
+\r
+#undef shmat\r
+\r
+/* Override any GCC internal prototype to avoid an error.\r
+   Use char because int might match the return type of a GCC\r
+   builtin and then its argument prototype would still apply.  */\r
+#ifdef __cplusplus\r
+extern "C"\r
+#endif\r
+char shmat ();\r
+/* The GNU C library defines this for functions which it implements\r
+    to always fail with ENOSYS.  Some functions are actually named\r
+    something starting with __ and the normal name is an alias.  */\r
+#if defined __stub_shmat || defined __stub___shmat\r
+choke me\r
+#endif\r
+\r
+int\r
+main ()\r
+{\r
+return shmat ();\r
+  ;\r
+  return 0;\r
+}\r
+_ACEOF\r
+rm -f conftest.$ac_objext conftest$ac_exeext\r
+if { (ac_try="$ac_link"\r
+case "(($ac_try" in\r
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;\r
+  *) ac_try_echo=$ac_try;;\r
+esac\r
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5\r
+  (eval "$ac_link") 2>conftest.er1\r
+  ac_status=$?\r
+  grep -v '^ *+' conftest.er1 >conftest.err\r
+  rm -f conftest.er1\r
+  cat conftest.err >&5\r
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5\r
+  (exit $ac_status); } && {\r
+        test -z "$ac_c_werror_flag" ||\r
+        test ! -s conftest.err\r
+       } && test -s conftest$ac_exeext &&\r
+       $as_test_x conftest$ac_exeext; then\r
+  ac_cv_func_shmat=yes\r
+else\r
+  echo "$as_me: failed program was:" >&5\r
+sed 's/^/| /' conftest.$ac_ext >&5\r
+\r
+       ac_cv_func_shmat=no\r
+fi\r
+\r
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \\r
+      conftest$ac_exeext conftest.$ac_ext\r
+fi\r
+{ echo "$as_me:$LINENO: result: $ac_cv_func_shmat" >&5\r
+echo "${ECHO_T}$ac_cv_func_shmat" >&6; }\r
+\r
+    if test $ac_cv_func_shmat = no; then\r
+      { echo "$as_me:$LINENO: checking for shmat in -lipc" >&5\r
+echo $ECHO_N "checking for shmat in -lipc... $ECHO_C" >&6; }\r
+if test "${ac_cv_lib_ipc_shmat+set}" = set; then\r
+  echo $ECHO_N "(cached) $ECHO_C" >&6\r
+else\r
+  ac_check_lib_save_LIBS=$LIBS\r
+LIBS="-lipc  $LIBS"\r
+cat >conftest.$ac_ext <<_ACEOF\r
+/* confdefs.h.  */\r
+_ACEOF\r
+cat confdefs.h >>conftest.$ac_ext\r
+cat >>conftest.$ac_ext <<_ACEOF\r
+/* end confdefs.h.  */\r
+\r
+/* Override any GCC internal prototype to avoid an error.\r
+   Use char because int might match the return type of a GCC\r
+   builtin and then its argument prototype would still apply.  */\r
+#ifdef __cplusplus\r
+extern "C"\r
+#endif\r
+char shmat ();\r
+int\r
+main ()\r
+{\r
+return shmat ();\r
+  ;\r
+  return 0;\r
+}\r
+_ACEOF\r
+rm -f conftest.$ac_objext conftest$ac_exeext\r
+if { (ac_try="$ac_link"\r
+case "(($ac_try" in\r
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;\r
+  *) ac_try_echo=$ac_try;;\r
+esac\r
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5\r
+  (eval "$ac_link") 2>conftest.er1\r
+  ac_status=$?\r
+  grep -v '^ *+' conftest.er1 >conftest.err\r
+  rm -f conftest.er1\r
+  cat conftest.err >&5\r
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5\r
+  (exit $ac_status); } && {\r
+        test -z "$ac_c_werror_flag" ||\r
+        test ! -s conftest.err\r
+       } && test -s conftest$ac_exeext &&\r
+       $as_test_x conftest$ac_exeext; then\r
+  ac_cv_lib_ipc_shmat=yes\r
+else\r
+  echo "$as_me: failed program was:" >&5\r
+sed 's/^/| /' conftest.$ac_ext >&5\r
+\r
+       ac_cv_lib_ipc_shmat=no\r
+fi\r
+\r
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \\r
+      conftest$ac_exeext conftest.$ac_ext\r
+LIBS=$ac_check_lib_save_LIBS\r
+fi\r
+{ echo "$as_me:$LINENO: result: $ac_cv_lib_ipc_shmat" >&5\r
+echo "${ECHO_T}$ac_cv_lib_ipc_shmat" >&6; }\r
+if test $ac_cv_lib_ipc_shmat = yes; then\r
+  X_EXTRA_LIBS="$X_EXTRA_LIBS -lipc"\r
+fi\r
+\r
+    fi\r
+  fi\r
+\r
+  # Check for libraries that X11R6 Xt/Xaw programs need.\r
+  ac_save_LDFLAGS=$LDFLAGS\r
+  test -n "$x_libraries" && LDFLAGS="$LDFLAGS -L$x_libraries"\r
+  # SM needs ICE to (dynamically) link under SunOS 4.x (so we have to\r
+  # check for ICE first), but we must link in the order -lSM -lICE or\r
+  # we get undefined symbols.  So assume we have SM if we have ICE.\r
+  # These have to be linked with before -lX11, unlike the other\r
+  # libraries we check for below, so use a different variable.\r
+  # John Interrante, Karl Berry\r
+  { echo "$as_me:$LINENO: checking for IceConnectionNumber in -lICE" >&5\r
+echo $ECHO_N "checking for IceConnectionNumber in -lICE... $ECHO_C" >&6; }\r
+if test "${ac_cv_lib_ICE_IceConnectionNumber+set}" = set; then\r
+  echo $ECHO_N "(cached) $ECHO_C" >&6\r
+else\r
+  ac_check_lib_save_LIBS=$LIBS\r
+LIBS="-lICE $X_EXTRA_LIBS $LIBS"\r
+cat >conftest.$ac_ext <<_ACEOF\r
+/* confdefs.h.  */\r
+_ACEOF\r
+cat confdefs.h >>conftest.$ac_ext\r
+cat >>conftest.$ac_ext <<_ACEOF\r
+/* end confdefs.h.  */\r
+\r
+/* Override any GCC internal prototype to avoid an error.\r
+   Use char because int might match the return type of a GCC\r
+   builtin and then its argument prototype would still apply.  */\r
+#ifdef __cplusplus\r
+extern "C"\r
+#endif\r
+char IceConnectionNumber ();\r
+int\r
+main ()\r
+{\r
+return IceConnectionNumber ();\r
+  ;\r
+  return 0;\r
+}\r
+_ACEOF\r
+rm -f conftest.$ac_objext conftest$ac_exeext\r
+if { (ac_try="$ac_link"\r
+case "(($ac_try" in\r
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;\r
+  *) ac_try_echo=$ac_try;;\r
+esac\r
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5\r
+  (eval "$ac_link") 2>conftest.er1\r
+  ac_status=$?\r
+  grep -v '^ *+' conftest.er1 >conftest.err\r
+  rm -f conftest.er1\r
+  cat conftest.err >&5\r
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5\r
+  (exit $ac_status); } && {\r
+        test -z "$ac_c_werror_flag" ||\r
+        test ! -s conftest.err\r
+       } && test -s conftest$ac_exeext &&\r
+       $as_test_x conftest$ac_exeext; then\r
+  ac_cv_lib_ICE_IceConnectionNumber=yes\r
+else\r
+  echo "$as_me: failed program was:" >&5\r
+sed 's/^/| /' conftest.$ac_ext >&5\r
+\r
+       ac_cv_lib_ICE_IceConnectionNumber=no\r
+fi\r
+\r
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \\r
+      conftest$ac_exeext conftest.$ac_ext\r
+LIBS=$ac_check_lib_save_LIBS\r
+fi\r
+{ echo "$as_me:$LINENO: result: $ac_cv_lib_ICE_IceConnectionNumber" >&5\r
+echo "${ECHO_T}$ac_cv_lib_ICE_IceConnectionNumber" >&6; }\r
+if test $ac_cv_lib_ICE_IceConnectionNumber = yes; then\r
+  X_PRE_LIBS="$X_PRE_LIBS -lSM -lICE"\r
+fi\r
+\r
+  LDFLAGS=$ac_save_LDFLAGS\r
+\r
+fi\r
+\r
+if test -n "$no_x" ; then\r
+  echo $PRODUCT requires the X Window System header files and libraries!\r
+  echo They were not found on your system.  See FAQ topic C.2.\r
+  echo configure failed\r
+  exit 1\r
+fi\r
+\r
+if test "${ac_cv_header_X11_Intrinsic_h+set}" = set; then\r
+  { echo "$as_me:$LINENO: checking for X11/Intrinsic.h" >&5\r
+echo $ECHO_N "checking for X11/Intrinsic.h... $ECHO_C" >&6; }\r
+if test "${ac_cv_header_X11_Intrinsic_h+set}" = set; then\r
+  echo $ECHO_N "(cached) $ECHO_C" >&6\r
+fi\r
+{ echo "$as_me:$LINENO: result: $ac_cv_header_X11_Intrinsic_h" >&5\r
+echo "${ECHO_T}$ac_cv_header_X11_Intrinsic_h" >&6; }\r
+else\r
+  # Is the header compilable?\r
+{ echo "$as_me:$LINENO: checking X11/Intrinsic.h usability" >&5\r
+echo $ECHO_N "checking X11/Intrinsic.h usability... $ECHO_C" >&6; }\r
+cat >conftest.$ac_ext <<_ACEOF\r
+/* confdefs.h.  */\r
+_ACEOF\r
+cat confdefs.h >>conftest.$ac_ext\r
+cat >>conftest.$ac_ext <<_ACEOF\r
+/* end confdefs.h.  */\r
+$ac_includes_default\r
+#include <X11/Intrinsic.h>\r
+_ACEOF\r
+rm -f conftest.$ac_objext\r
+if { (ac_try="$ac_compile"\r
+case "(($ac_try" in\r
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;\r
+  *) ac_try_echo=$ac_try;;\r
+esac\r
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5\r
+  (eval "$ac_compile") 2>conftest.er1\r
+  ac_status=$?\r
+  grep -v '^ *+' conftest.er1 >conftest.err\r
+  rm -f conftest.er1\r
+  cat conftest.err >&5\r
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5\r
+  (exit $ac_status); } && {\r
+        test -z "$ac_c_werror_flag" ||\r
+        test ! -s conftest.err\r
+       } && test -s conftest.$ac_objext; then\r
+  ac_header_compiler=yes\r
+else\r
+  echo "$as_me: failed program was:" >&5\r
+sed 's/^/| /' conftest.$ac_ext >&5\r
+\r
+       ac_header_compiler=no\r
+fi\r
+\r
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext\r
+{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5\r
+echo "${ECHO_T}$ac_header_compiler" >&6; }\r
+\r
+# Is the header present?\r
+{ echo "$as_me:$LINENO: checking X11/Intrinsic.h presence" >&5\r
+echo $ECHO_N "checking X11/Intrinsic.h presence... $ECHO_C" >&6; }\r
+cat >conftest.$ac_ext <<_ACEOF\r
+/* confdefs.h.  */\r
+_ACEOF\r
+cat confdefs.h >>conftest.$ac_ext\r
+cat >>conftest.$ac_ext <<_ACEOF\r
+/* end confdefs.h.  */\r
+#include <X11/Intrinsic.h>\r
+_ACEOF\r
+if { (ac_try="$ac_cpp conftest.$ac_ext"\r
+case "(($ac_try" in\r
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;\r
+  *) ac_try_echo=$ac_try;;\r
+esac\r
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5\r
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1\r
+  ac_status=$?\r
+  grep -v '^ *+' conftest.er1 >conftest.err\r
+  rm -f conftest.er1\r
+  cat conftest.err >&5\r
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5\r
+  (exit $ac_status); } >/dev/null && {\r
+        test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||\r
+        test ! -s conftest.err\r
+       }; then\r
+  ac_header_preproc=yes\r
+else\r
+  echo "$as_me: failed program was:" >&5\r
+sed 's/^/| /' conftest.$ac_ext >&5\r
+\r
+  ac_header_preproc=no\r
+fi\r
+\r
+rm -f conftest.err conftest.$ac_ext\r
+{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5\r
+echo "${ECHO_T}$ac_header_preproc" >&6; }\r
+\r
+# So?  What about this header?\r
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in\r
+  yes:no: )\r
+    { echo "$as_me:$LINENO: WARNING: X11/Intrinsic.h: accepted by the compiler, rejected by the preprocessor!" >&5\r
+echo "$as_me: WARNING: X11/Intrinsic.h: accepted by the compiler, rejected by the preprocessor!" >&2;}\r
+    { echo "$as_me:$LINENO: WARNING: X11/Intrinsic.h: proceeding with the compiler's result" >&5\r
+echo "$as_me: WARNING: X11/Intrinsic.h: proceeding with the compiler's result" >&2;}\r
+    ac_header_preproc=yes\r
+    ;;\r
+  no:yes:* )\r
+    { echo "$as_me:$LINENO: WARNING: X11/Intrinsic.h: present but cannot be compiled" >&5\r
+echo "$as_me: WARNING: X11/Intrinsic.h: present but cannot be compiled" >&2;}\r
+    { echo "$as_me:$LINENO: WARNING: X11/Intrinsic.h:     check for missing prerequisite headers?" >&5\r
+echo "$as_me: WARNING: X11/Intrinsic.h:     check for missing prerequisite headers?" >&2;}\r
+    { echo "$as_me:$LINENO: WARNING: X11/Intrinsic.h: see the Autoconf documentation" >&5\r
+echo "$as_me: WARNING: X11/Intrinsic.h: see the Autoconf documentation" >&2;}\r
+    { echo "$as_me:$LINENO: WARNING: X11/Intrinsic.h:     section \"Present But Cannot Be Compiled\"" >&5\r
+echo "$as_me: WARNING: X11/Intrinsic.h:     section \"Present But Cannot Be Compiled\"" >&2;}\r
+    { echo "$as_me:$LINENO: WARNING: X11/Intrinsic.h: proceeding with the preprocessor's result" >&5\r
+echo "$as_me: WARNING: X11/Intrinsic.h: proceeding with the preprocessor's result" >&2;}\r
+    { echo "$as_me:$LINENO: WARNING: X11/Intrinsic.h: in the future, the compiler will take precedence" >&5\r
+echo "$as_me: WARNING: X11/Intrinsic.h: in the future, the compiler will take precedence" >&2;}\r
+\r
+    ;;\r
+esac\r
+{ echo "$as_me:$LINENO: checking for X11/Intrinsic.h" >&5\r
+echo $ECHO_N "checking for X11/Intrinsic.h... $ECHO_C" >&6; }\r
+if test "${ac_cv_header_X11_Intrinsic_h+set}" = set; then\r
+  echo $ECHO_N "(cached) $ECHO_C" >&6\r
+else\r
+  ac_cv_header_X11_Intrinsic_h=$ac_header_preproc\r
+fi\r
+{ echo "$as_me:$LINENO: result: $ac_cv_header_X11_Intrinsic_h" >&5\r
+echo "${ECHO_T}$ac_cv_header_X11_Intrinsic_h" >&6; }\r
+\r
+fi\r
+if test $ac_cv_header_X11_Intrinsic_h = yes; then\r
+  xt="yes"\r
+else\r
+  xt="no"\r
+fi\r
+\r
+\r
+\r
+if test "$xt" == "no" ; then\r
+   echo Xt headers not found\r
+   exit 1\r
+fi\r
+\r
+\r
+# Check whether --with-Xaw3d was given.\r
+if test "${with_Xaw3d+set}" = set; then\r
+  withval=$with_Xaw3d; with_xaw3d="yes"\r
+else\r
+  with_xaw3d="no"\r
+fi\r
+\r
+\r
+\r
+xaw_headers="no"\r
+if test "$with_xaw3d" == "yes" ; then\r
+   XAW_LIBS="-lXaw3d"\r
+   { echo "$as_me:$LINENO: checking for XawTextReplace in -lXaw3d" >&5\r
+echo $ECHO_N "checking for XawTextReplace in -lXaw3d... $ECHO_C" >&6; }\r
+if test "${ac_cv_lib_Xaw3d_XawTextReplace+set}" = set; then\r
+  echo $ECHO_N "(cached) $ECHO_C" >&6\r
+else\r
+  ac_check_lib_save_LIBS=$LIBS\r
+LIBS="-lXaw3d  $LIBS"\r
+cat >conftest.$ac_ext <<_ACEOF\r
+/* confdefs.h.  */\r
+_ACEOF\r
+cat confdefs.h >>conftest.$ac_ext\r
+cat >>conftest.$ac_ext <<_ACEOF\r
+/* end confdefs.h.  */\r
+\r
+/* Override any GCC internal prototype to avoid an error.\r
+   Use char because int might match the return type of a GCC\r
+   builtin and then its argument prototype would still apply.  */\r
+#ifdef __cplusplus\r
+extern "C"\r
+#endif\r
+char XawTextReplace ();\r
+int\r
+main ()\r
+{\r
+return XawTextReplace ();\r
+  ;\r
+  return 0;\r
+}\r
+_ACEOF\r
+rm -f conftest.$ac_objext conftest$ac_exeext\r
+if { (ac_try="$ac_link"\r
+case "(($ac_try" in\r
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;\r
+  *) ac_try_echo=$ac_try;;\r
+esac\r
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5\r
+  (eval "$ac_link") 2>conftest.er1\r
+  ac_status=$?\r
+  grep -v '^ *+' conftest.er1 >conftest.err\r
+  rm -f conftest.er1\r
+  cat conftest.err >&5\r
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5\r
+  (exit $ac_status); } && {\r
+        test -z "$ac_c_werror_flag" ||\r
+        test ! -s conftest.err\r
+       } && test -s conftest$ac_exeext &&\r
+       $as_test_x conftest$ac_exeext; then\r
+  ac_cv_lib_Xaw3d_XawTextReplace=yes\r
+else\r
+  echo "$as_me: failed program was:" >&5\r
+sed 's/^/| /' conftest.$ac_ext >&5\r
+\r
+       ac_cv_lib_Xaw3d_XawTextReplace=no\r
+fi\r
+\r
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \\r
+      conftest$ac_exeext conftest.$ac_ext\r
+LIBS=$ac_check_lib_save_LIBS\r
+fi\r
+{ echo "$as_me:$LINENO: result: $ac_cv_lib_Xaw3d_XawTextReplace" >&5\r
+echo "${ECHO_T}$ac_cv_lib_Xaw3d_XawTextReplace" >&6; }\r
+if test $ac_cv_lib_Xaw3d_XawTextReplace = yes; then\r
+  xaw3d_lib="yes"\r
+else\r
+  xaw3d_lib="no"\r
+fi\r
+\r
+   if test "$xaw3d_lib" == "no" ; then\r
+      echo Xaw3d libraries not found\r
+      exit 1\r
+   else\r
+      if test "${ac_cv_header_X11_Xaw3d_Dialog_h+set}" = set; then\r
+  { echo "$as_me:$LINENO: checking for X11/Xaw3d/Dialog.h" >&5\r
+echo $ECHO_N "checking for X11/Xaw3d/Dialog.h... $ECHO_C" >&6; }\r
+if test "${ac_cv_header_X11_Xaw3d_Dialog_h+set}" = set; then\r
+  echo $ECHO_N "(cached) $ECHO_C" >&6\r
+fi\r
+{ echo "$as_me:$LINENO: result: $ac_cv_header_X11_Xaw3d_Dialog_h" >&5\r
+echo "${ECHO_T}$ac_cv_header_X11_Xaw3d_Dialog_h" >&6; }\r
+else\r
+  # Is the header compilable?\r
+{ echo "$as_me:$LINENO: checking X11/Xaw3d/Dialog.h usability" >&5\r
+echo $ECHO_N "checking X11/Xaw3d/Dialog.h usability... $ECHO_C" >&6; }\r
+cat >conftest.$ac_ext <<_ACEOF\r
+/* confdefs.h.  */\r
+_ACEOF\r
+cat confdefs.h >>conftest.$ac_ext\r
+cat >>conftest.$ac_ext <<_ACEOF\r
+/* end confdefs.h.  */\r
+$ac_includes_default\r
+#include <X11/Xaw3d/Dialog.h>\r
+_ACEOF\r
+rm -f conftest.$ac_objext\r
+if { (ac_try="$ac_compile"\r
+case "(($ac_try" in\r
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;\r
+  *) ac_try_echo=$ac_try;;\r
+esac\r
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5\r
+  (eval "$ac_compile") 2>conftest.er1\r
+  ac_status=$?\r
+  grep -v '^ *+' conftest.er1 >conftest.err\r
+  rm -f conftest.er1\r
+  cat conftest.err >&5\r
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5\r
+  (exit $ac_status); } && {\r
+        test -z "$ac_c_werror_flag" ||\r
+        test ! -s conftest.err\r
+       } && test -s conftest.$ac_objext; then\r
+  ac_header_compiler=yes\r
+else\r
+  echo "$as_me: failed program was:" >&5\r
+sed 's/^/| /' conftest.$ac_ext >&5\r
+\r
+       ac_header_compiler=no\r
+fi\r
+\r
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext\r
+{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5\r
+echo "${ECHO_T}$ac_header_compiler" >&6; }\r
+\r
+# Is the header present?\r
+{ echo "$as_me:$LINENO: checking X11/Xaw3d/Dialog.h presence" >&5\r
+echo $ECHO_N "checking X11/Xaw3d/Dialog.h presence... $ECHO_C" >&6; }\r
+cat >conftest.$ac_ext <<_ACEOF\r
+/* confdefs.h.  */\r
+_ACEOF\r
+cat confdefs.h >>conftest.$ac_ext\r
+cat >>conftest.$ac_ext <<_ACEOF\r
+/* end confdefs.h.  */\r
+#include <X11/Xaw3d/Dialog.h>\r
+_ACEOF\r
+if { (ac_try="$ac_cpp conftest.$ac_ext"\r
+case "(($ac_try" in\r
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;\r
+  *) ac_try_echo=$ac_try;;\r
+esac\r
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5\r
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1\r
+  ac_status=$?\r
+  grep -v '^ *+' conftest.er1 >conftest.err\r
+  rm -f conftest.er1\r
+  cat conftest.err >&5\r
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5\r
+  (exit $ac_status); } >/dev/null && {\r
+        test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||\r
+        test ! -s conftest.err\r
+       }; then\r
+  ac_header_preproc=yes\r
+else\r
+  echo "$as_me: failed program was:" >&5\r
+sed 's/^/| /' conftest.$ac_ext >&5\r
+\r
+  ac_header_preproc=no\r
+fi\r
+\r
+rm -f conftest.err conftest.$ac_ext\r
+{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5\r
+echo "${ECHO_T}$ac_header_preproc" >&6; }\r
+\r
+# So?  What about this header?\r
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in\r
+  yes:no: )\r
+    { echo "$as_me:$LINENO: WARNING: X11/Xaw3d/Dialog.h: accepted by the compiler, rejected by the preprocessor!" >&5\r
+echo "$as_me: WARNING: X11/Xaw3d/Dialog.h: accepted by the compiler, rejected by the preprocessor!" >&2;}\r
+    { echo "$as_me:$LINENO: WARNING: X11/Xaw3d/Dialog.h: proceeding with the compiler's result" >&5\r
+echo "$as_me: WARNING: X11/Xaw3d/Dialog.h: proceeding with the compiler's result" >&2;}\r
+    ac_header_preproc=yes\r
+    ;;\r
+  no:yes:* )\r
+    { echo "$as_me:$LINENO: WARNING: X11/Xaw3d/Dialog.h: present but cannot be compiled" >&5\r
+echo "$as_me: WARNING: X11/Xaw3d/Dialog.h: present but cannot be compiled" >&2;}\r
+    { echo "$as_me:$LINENO: WARNING: X11/Xaw3d/Dialog.h:     check for missing prerequisite headers?" >&5\r
+echo "$as_me: WARNING: X11/Xaw3d/Dialog.h:     check for missing prerequisite headers?" >&2;}\r
+    { echo "$as_me:$LINENO: WARNING: X11/Xaw3d/Dialog.h: see the Autoconf documentation" >&5\r
+echo "$as_me: WARNING: X11/Xaw3d/Dialog.h: see the Autoconf documentation" >&2;}\r
+    { echo "$as_me:$LINENO: WARNING: X11/Xaw3d/Dialog.h:     section \"Present But Cannot Be Compiled\"" >&5\r
+echo "$as_me: WARNING: X11/Xaw3d/Dialog.h:     section \"Present But Cannot Be Compiled\"" >&2;}\r
+    { echo "$as_me:$LINENO: WARNING: X11/Xaw3d/Dialog.h: proceeding with the preprocessor's result" >&5\r
+echo "$as_me: WARNING: X11/Xaw3d/Dialog.h: proceeding with the preprocessor's result" >&2;}\r
+    { echo "$as_me:$LINENO: WARNING: X11/Xaw3d/Dialog.h: in the future, the compiler will take precedence" >&5\r
+echo "$as_me: WARNING: X11/Xaw3d/Dialog.h: in the future, the compiler will take precedence" >&2;}\r
+\r
+    ;;\r
+esac\r
+{ echo "$as_me:$LINENO: checking for X11/Xaw3d/Dialog.h" >&5\r
+echo $ECHO_N "checking for X11/Xaw3d/Dialog.h... $ECHO_C" >&6; }\r
+if test "${ac_cv_header_X11_Xaw3d_Dialog_h+set}" = set; then\r
+  echo $ECHO_N "(cached) $ECHO_C" >&6\r
+else\r
+  ac_cv_header_X11_Xaw3d_Dialog_h=$ac_header_preproc\r
+fi\r
+{ echo "$as_me:$LINENO: result: $ac_cv_header_X11_Xaw3d_Dialog_h" >&5\r
+echo "${ECHO_T}$ac_cv_header_X11_Xaw3d_Dialog_h" >&6; }\r
+\r
+fi\r
+if test $ac_cv_header_X11_Xaw3d_Dialog_h = yes; then\r
+  xaw3d_headers="yes"\r
+else\r
+  xaw3d_headers="no"\r
+fi\r
+\r
+\r
+      if test "$xaw3d_headers" == "yes" ; then\r
+        cat >>confdefs.h <<\_ACEOF\r
+#define USE_XAW3D 1\r
+_ACEOF\r
+\r
+        xaw_headers="yes"\r
+      else\r
+       if test "${ac_cv_header_X11_Xaw_Dialog_h+set}" = set; then\r
+  { echo "$as_me:$LINENO: checking for X11/Xaw/Dialog.h" >&5\r
+echo $ECHO_N "checking for X11/Xaw/Dialog.h... $ECHO_C" >&6; }\r
+if test "${ac_cv_header_X11_Xaw_Dialog_h+set}" = set; then\r
+  echo $ECHO_N "(cached) $ECHO_C" >&6\r
+fi\r
+{ echo "$as_me:$LINENO: result: $ac_cv_header_X11_Xaw_Dialog_h" >&5\r
+echo "${ECHO_T}$ac_cv_header_X11_Xaw_Dialog_h" >&6; }\r
+else\r
+  # Is the header compilable?\r
+{ echo "$as_me:$LINENO: checking X11/Xaw/Dialog.h usability" >&5\r
+echo $ECHO_N "checking X11/Xaw/Dialog.h usability... $ECHO_C" >&6; }\r
+cat >conftest.$ac_ext <<_ACEOF\r
+/* confdefs.h.  */\r
+_ACEOF\r
+cat confdefs.h >>conftest.$ac_ext\r
+cat >>conftest.$ac_ext <<_ACEOF\r
+/* end confdefs.h.  */\r
+$ac_includes_default\r
+#include <X11/Xaw/Dialog.h>\r
+_ACEOF\r
+rm -f conftest.$ac_objext\r
+if { (ac_try="$ac_compile"\r
+case "(($ac_try" in\r
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;\r
+  *) ac_try_echo=$ac_try;;\r
+esac\r
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5\r
+  (eval "$ac_compile") 2>conftest.er1\r
+  ac_status=$?\r
+  grep -v '^ *+' conftest.er1 >conftest.err\r
+  rm -f conftest.er1\r
+  cat conftest.err >&5\r
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5\r
+  (exit $ac_status); } && {\r
+        test -z "$ac_c_werror_flag" ||\r
+        test ! -s conftest.err\r
+       } && test -s conftest.$ac_objext; then\r
+  ac_header_compiler=yes\r
+else\r
+  echo "$as_me: failed program was:" >&5\r
+sed 's/^/| /' conftest.$ac_ext >&5\r
+\r
+       ac_header_compiler=no\r
+fi\r
+\r
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext\r
+{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5\r
+echo "${ECHO_T}$ac_header_compiler" >&6; }\r
+\r
+# Is the header present?\r
+{ echo "$as_me:$LINENO: checking X11/Xaw/Dialog.h presence" >&5\r
+echo $ECHO_N "checking X11/Xaw/Dialog.h presence... $ECHO_C" >&6; }\r
+cat >conftest.$ac_ext <<_ACEOF\r
+/* confdefs.h.  */\r
+_ACEOF\r
+cat confdefs.h >>conftest.$ac_ext\r
+cat >>conftest.$ac_ext <<_ACEOF\r
+/* end confdefs.h.  */\r
+#include <X11/Xaw/Dialog.h>\r
+_ACEOF\r
+if { (ac_try="$ac_cpp conftest.$ac_ext"\r
+case "(($ac_try" in\r
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;\r
+  *) ac_try_echo=$ac_try;;\r
+esac\r
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5\r
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1\r
+  ac_status=$?\r
+  grep -v '^ *+' conftest.er1 >conftest.err\r
+  rm -f conftest.er1\r
+  cat conftest.err >&5\r
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5\r
+  (exit $ac_status); } >/dev/null && {\r
+        test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||\r
+        test ! -s conftest.err\r
+       }; then\r
+  ac_header_preproc=yes\r
+else\r
+  echo "$as_me: failed program was:" >&5\r
+sed 's/^/| /' conftest.$ac_ext >&5\r
+\r
+  ac_header_preproc=no\r
+fi\r
+\r
+rm -f conftest.err conftest.$ac_ext\r
+{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5\r
+echo "${ECHO_T}$ac_header_preproc" >&6; }\r
+\r
+# So?  What about this header?\r
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in\r
+  yes:no: )\r
+    { echo "$as_me:$LINENO: WARNING: X11/Xaw/Dialog.h: accepted by the compiler, rejected by the preprocessor!" >&5\r
+echo "$as_me: WARNING: X11/Xaw/Dialog.h: accepted by the compiler, rejected by the preprocessor!" >&2;}\r
+    { echo "$as_me:$LINENO: WARNING: X11/Xaw/Dialog.h: proceeding with the compiler's result" >&5\r
+echo "$as_me: WARNING: X11/Xaw/Dialog.h: proceeding with the compiler's result" >&2;}\r
+    ac_header_preproc=yes\r
+    ;;\r
+  no:yes:* )\r
+    { echo "$as_me:$LINENO: WARNING: X11/Xaw/Dialog.h: present but cannot be compiled" >&5\r
+echo "$as_me: WARNING: X11/Xaw/Dialog.h: present but cannot be compiled" >&2;}\r
+    { echo "$as_me:$LINENO: WARNING: X11/Xaw/Dialog.h:     check for missing prerequisite headers?" >&5\r
+echo "$as_me: WARNING: X11/Xaw/Dialog.h:     check for missing prerequisite headers?" >&2;}\r
+    { echo "$as_me:$LINENO: WARNING: X11/Xaw/Dialog.h: see the Autoconf documentation" >&5\r
+echo "$as_me: WARNING: X11/Xaw/Dialog.h: see the Autoconf documentation" >&2;}\r
+    { echo "$as_me:$LINENO: WARNING: X11/Xaw/Dialog.h:     section \"Present But Cannot Be Compiled\"" >&5\r
+echo "$as_me: WARNING: X11/Xaw/Dialog.h:     section \"Present But Cannot Be Compiled\"" >&2;}\r
+    { echo "$as_me:$LINENO: WARNING: X11/Xaw/Dialog.h: proceeding with the preprocessor's result" >&5\r
+echo "$as_me: WARNING: X11/Xaw/Dialog.h: proceeding with the preprocessor's result" >&2;}\r
+    { echo "$as_me:$LINENO: WARNING: X11/Xaw/Dialog.h: in the future, the compiler will take precedence" >&5\r
+echo "$as_me: WARNING: X11/Xaw/Dialog.h: in the future, the compiler will take precedence" >&2;}\r
+\r
+    ;;\r
+esac\r
+{ echo "$as_me:$LINENO: checking for X11/Xaw/Dialog.h" >&5\r
+echo $ECHO_N "checking for X11/Xaw/Dialog.h... $ECHO_C" >&6; }\r
+if test "${ac_cv_header_X11_Xaw_Dialog_h+set}" = set; then\r
+  echo $ECHO_N "(cached) $ECHO_C" >&6\r
+else\r
+  ac_cv_header_X11_Xaw_Dialog_h=$ac_header_preproc\r
+fi\r
+{ echo "$as_me:$LINENO: result: $ac_cv_header_X11_Xaw_Dialog_h" >&5\r
+echo "${ECHO_T}$ac_cv_header_X11_Xaw_Dialog_h" >&6; }\r
+\r
+fi\r
+if test $ac_cv_header_X11_Xaw_Dialog_h = yes; then\r
+  xaw_headers="yes"\r
+fi\r
+\r
+\r
+      fi\r
+   fi\r
+else\r
+   XAW_LIBS="-lXaw"\r
+   if test "${ac_cv_header_X11_Xaw_Dialog_h+set}" = set; then\r
+  { echo "$as_me:$LINENO: checking for X11/Xaw/Dialog.h" >&5\r
+echo $ECHO_N "checking for X11/Xaw/Dialog.h... $ECHO_C" >&6; }\r
+if test "${ac_cv_header_X11_Xaw_Dialog_h+set}" = set; then\r
+  echo $ECHO_N "(cached) $ECHO_C" >&6\r
+fi\r
+{ echo "$as_me:$LINENO: result: $ac_cv_header_X11_Xaw_Dialog_h" >&5\r
+echo "${ECHO_T}$ac_cv_header_X11_Xaw_Dialog_h" >&6; }\r
+else\r
+  # Is the header compilable?\r
+{ echo "$as_me:$LINENO: checking X11/Xaw/Dialog.h usability" >&5\r
+echo $ECHO_N "checking X11/Xaw/Dialog.h usability... $ECHO_C" >&6; }\r
+cat >conftest.$ac_ext <<_ACEOF\r
+/* confdefs.h.  */\r
+_ACEOF\r
+cat confdefs.h >>conftest.$ac_ext\r
+cat >>conftest.$ac_ext <<_ACEOF\r
+/* end confdefs.h.  */\r
+$ac_includes_default\r
+#include <X11/Xaw/Dialog.h>\r
+_ACEOF\r
+rm -f conftest.$ac_objext\r
+if { (ac_try="$ac_compile"\r
+case "(($ac_try" in\r
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;\r
+  *) ac_try_echo=$ac_try;;\r
+esac\r
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5\r
+  (eval "$ac_compile") 2>conftest.er1\r
+  ac_status=$?\r
+  grep -v '^ *+' conftest.er1 >conftest.err\r
+  rm -f conftest.er1\r
+  cat conftest.err >&5\r
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5\r
+  (exit $ac_status); } && {\r
+        test -z "$ac_c_werror_flag" ||\r
+        test ! -s conftest.err\r
+       } && test -s conftest.$ac_objext; then\r
+  ac_header_compiler=yes\r
+else\r
+  echo "$as_me: failed program was:" >&5\r
+sed 's/^/| /' conftest.$ac_ext >&5\r
+\r
+       ac_header_compiler=no\r
+fi\r
+\r
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext\r
+{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5\r
+echo "${ECHO_T}$ac_header_compiler" >&6; }\r
+\r
+# Is the header present?\r
+{ echo "$as_me:$LINENO: checking X11/Xaw/Dialog.h presence" >&5\r
+echo $ECHO_N "checking X11/Xaw/Dialog.h presence... $ECHO_C" >&6; }\r
+cat >conftest.$ac_ext <<_ACEOF\r
+/* confdefs.h.  */\r
+_ACEOF\r
+cat confdefs.h >>conftest.$ac_ext\r
+cat >>conftest.$ac_ext <<_ACEOF\r
+/* end confdefs.h.  */\r
+#include <X11/Xaw/Dialog.h>\r
+_ACEOF\r
+if { (ac_try="$ac_cpp conftest.$ac_ext"\r
+case "(($ac_try" in\r
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;\r
+  *) ac_try_echo=$ac_try;;\r
+esac\r
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5\r
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1\r
+  ac_status=$?\r
+  grep -v '^ *+' conftest.er1 >conftest.err\r
+  rm -f conftest.er1\r
+  cat conftest.err >&5\r
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5\r
+  (exit $ac_status); } >/dev/null && {\r
+        test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||\r
+        test ! -s conftest.err\r
+       }; then\r
+  ac_header_preproc=yes\r
+else\r
+  echo "$as_me: failed program was:" >&5\r
+sed 's/^/| /' conftest.$ac_ext >&5\r
+\r
+  ac_header_preproc=no\r
+fi\r
+\r
+rm -f conftest.err conftest.$ac_ext\r
+{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5\r
+echo "${ECHO_T}$ac_header_preproc" >&6; }\r
+\r
+# So?  What about this header?\r
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in\r
+  yes:no: )\r
+    { echo "$as_me:$LINENO: WARNING: X11/Xaw/Dialog.h: accepted by the compiler, rejected by the preprocessor!" >&5\r
+echo "$as_me: WARNING: X11/Xaw/Dialog.h: accepted by the compiler, rejected by the preprocessor!" >&2;}\r
+    { echo "$as_me:$LINENO: WARNING: X11/Xaw/Dialog.h: proceeding with the compiler's result" >&5\r
+echo "$as_me: WARNING: X11/Xaw/Dialog.h: proceeding with the compiler's result" >&2;}\r
+    ac_header_preproc=yes\r
+    ;;\r
+  no:yes:* )\r
+    { echo "$as_me:$LINENO: WARNING: X11/Xaw/Dialog.h: present but cannot be compiled" >&5\r
+echo "$as_me: WARNING: X11/Xaw/Dialog.h: present but cannot be compiled" >&2;}\r
+    { echo "$as_me:$LINENO: WARNING: X11/Xaw/Dialog.h:     check for missing prerequisite headers?" >&5\r
+echo "$as_me: WARNING: X11/Xaw/Dialog.h:     check for missing prerequisite headers?" >&2;}\r
+    { echo "$as_me:$LINENO: WARNING: X11/Xaw/Dialog.h: see the Autoconf documentation" >&5\r
+echo "$as_me: WARNING: X11/Xaw/Dialog.h: see the Autoconf documentation" >&2;}\r
+    { echo "$as_me:$LINENO: WARNING: X11/Xaw/Dialog.h:     section \"Present But Cannot Be Compiled\"" >&5\r
+echo "$as_me: WARNING: X11/Xaw/Dialog.h:     section \"Present But Cannot Be Compiled\"" >&2;}\r
+    { echo "$as_me:$LINENO: WARNING: X11/Xaw/Dialog.h: proceeding with the preprocessor's result" >&5\r
+echo "$as_me: WARNING: X11/Xaw/Dialog.h: proceeding with the preprocessor's result" >&2;}\r
+    { echo "$as_me:$LINENO: WARNING: X11/Xaw/Dialog.h: in the future, the compiler will take precedence" >&5\r
+echo "$as_me: WARNING: X11/Xaw/Dialog.h: in the future, the compiler will take precedence" >&2;}\r
+\r
+    ;;\r
+esac\r
+{ echo "$as_me:$LINENO: checking for X11/Xaw/Dialog.h" >&5\r
+echo $ECHO_N "checking for X11/Xaw/Dialog.h... $ECHO_C" >&6; }\r
+if test "${ac_cv_header_X11_Xaw_Dialog_h+set}" = set; then\r
+  echo $ECHO_N "(cached) $ECHO_C" >&6\r
+else\r
+  ac_cv_header_X11_Xaw_Dialog_h=$ac_header_preproc\r
+fi\r
+{ echo "$as_me:$LINENO: result: $ac_cv_header_X11_Xaw_Dialog_h" >&5\r
+echo "${ECHO_T}$ac_cv_header_X11_Xaw_Dialog_h" >&6; }\r
+\r
+fi\r
+if test $ac_cv_header_X11_Xaw_Dialog_h = yes; then\r
+  xaw_headers="yes"\r
+fi\r
+\r
+\r
+fi\r
+\r
+\r
+\r
+\r
+\r
+if test "$xaw_headers" == "no" ; then\r
+   echo Xaw headers not found\r
+   exit 1\r
+\r
+fi\r
+\r
+\r
+\r
+\r
+# Make sure we can run config.sub.\r
+$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||\r
+  { { echo "$as_me:$LINENO: error: cannot run $SHELL $ac_aux_dir/config.sub" >&5\r
+echo "$as_me: error: cannot run $SHELL $ac_aux_dir/config.sub" >&2;}\r
+   { (exit 1); exit 1; }; }\r
+\r
+{ echo "$as_me:$LINENO: checking build system type" >&5\r
+echo $ECHO_N "checking build system type... $ECHO_C" >&6; }\r
+if test "${ac_cv_build+set}" = set; then\r
+  echo $ECHO_N "(cached) $ECHO_C" >&6\r
+else\r
+  ac_build_alias=$build_alias\r
+test "x$ac_build_alias" = x &&\r
+  ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`\r
+test "x$ac_build_alias" = x &&\r
+  { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5\r
+echo "$as_me: error: cannot guess build type; you must specify one" >&2;}\r
+   { (exit 1); exit 1; }; }\r
+ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||\r
+  { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&5\r
+echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&2;}\r
+   { (exit 1); exit 1; }; }\r
+\r
+fi\r
+{ echo "$as_me:$LINENO: result: $ac_cv_build" >&5\r
+echo "${ECHO_T}$ac_cv_build" >&6; }\r
+case $ac_cv_build in\r
+*-*-*) ;;\r
+*) { { echo "$as_me:$LINENO: error: invalid value of canonical build" >&5\r
+echo "$as_me: error: invalid value of canonical build" >&2;}\r
+   { (exit 1); exit 1; }; };;\r
+esac\r
+build=$ac_cv_build\r
+ac_save_IFS=$IFS; IFS='-'\r
+set x $ac_cv_build\r
+shift\r
+build_cpu=$1\r
+build_vendor=$2\r
+shift; shift\r
+# Remember, the first character of IFS is used to create $*,\r
+# except with old shells:\r
+build_os=$*\r
+IFS=$ac_save_IFS\r
+case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac\r
+\r
+\r
+{ echo "$as_me:$LINENO: checking host system type" >&5\r
+echo $ECHO_N "checking host system type... $ECHO_C" >&6; }\r
+if test "${ac_cv_host+set}" = set; then\r
+  echo $ECHO_N "(cached) $ECHO_C" >&6\r
+else\r
+  if test "x$host_alias" = x; then\r
+  ac_cv_host=$ac_cv_build\r
+else\r
+  ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||\r
+    { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&5\r
+echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&2;}\r
+   { (exit 1); exit 1; }; }\r
+fi\r
+\r
+fi\r
+{ echo "$as_me:$LINENO: result: $ac_cv_host" >&5\r
+echo "${ECHO_T}$ac_cv_host" >&6; }\r
+case $ac_cv_host in\r
+*-*-*) ;;\r
+*) { { echo "$as_me:$LINENO: error: invalid value of canonical host" >&5\r
+echo "$as_me: error: invalid value of canonical host" >&2;}\r
+   { (exit 1); exit 1; }; };;\r
+esac\r
+host=$ac_cv_host\r
+ac_save_IFS=$IFS; IFS='-'\r
+set x $ac_cv_host\r
+shift\r
+host_cpu=$1\r
+host_vendor=$2\r
+shift; shift\r
+# Remember, the first character of IFS is used to create $*,\r
+# except with old shells:\r
+host_os=$*\r
+IFS=$ac_save_IFS\r
+case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac\r
+\r
+\r
+\r
+\r
+\r
+USE_PTYS=0\r
+case "$host" in\r
+  *-*-hpux* )\r
+    cat >>confdefs.h <<\_ACEOF\r
+#define PTY_TTY_NAME_SPRINTF sprintf (pty_name, "/dev/pty/tty%c%x", c, i);\r
+_ACEOF\r
+\r
+    cat >>confdefs.h <<\_ACEOF\r
+#define PTY_NAME_SPRINTF sprintf (pty_name, "/dev/ptym/pty%c%x", c, i);\r
+_ACEOF\r
+\r
+    if test "$GCC" = yes; then\r
+      CONF_CFLAGS="-fwritable-strings"\r
+    else\r
+\r
+\r
+      CONF_CFLAGS="-Aa -D_HPUX_SOURCE"\r
+    fi\r
+\r
+\r
+    if test -d /opt/hppd/include/X11; then\r
+      X_CFLAGS="$X_CFLAGS -I/opt/hppd/include"\r
+      X_LIBS="$X_LIBS -L/opt/hppd/lib"\r
+    elif test -d /usr/contrib/X11R5/include; then\r
+      X_CFLAGS="$X_CFLAGS -I/usr/contrib/X11R5/include"\r
+      X_LIBS="$X_LIBS -L/usr/contrib/X11R5/lib"\r
+    elif test -d /usr/contrib/mitX11R5/include; then\r
+      X_CFLAGS="$X_CFLAGS -I/usr/contrib/mitX11R5/include"\r
+      X_LIBS="$X_LIBS -L/usr/contrib/mitX11R5/lib"\r
+    elif test -d /MIT/X11R5/include; then\r
+      X_CFLAGS="$X_CFLAGS -I/MIT/X11R5/include"\r
+      X_LIBS="$X_LIBS -L/MIT/X11R5/lib"\r
+    elif test -d /usr/local/include/X11R5; then\r
+      X_CFLAGS="$X_CFLAGS -I/usr/local/include/X11R5"\r
+      X_LIBS="$X_LIBS -L/usr/local/lib/X11R5"\r
+    fi\r
+    if test -d /usr/include/X11R5; then\r
+      X_CFLAGS="$X_CFLAGS -I/usr/include/X11R5"\r
+      X_LIBS="$X_LIBS -L/usr/lib/X11R5 -L/usr/lib/X11R4"\r
+    elif test -d /usr/include/X11R4; then\r
+      X_CFLAGS="$X_CFLAGS -I/usr/include/X11R4"\r
+      X_LIBS="$X_LIBS -L/usr/lib/X11R4"\r
+    fi\r
+  ;;\r
+\r
+  romp-ibm-aix* )\r
+    cat >>confdefs.h <<\_ACEOF\r
+#define IBMRTAIX 1\r
+_ACEOF\r
+\r
+  ;;\r
+\r
+  i386-ibm-aix )\r
+    if test "$GCC" = yes; then\r
+      CONF_CFLAGS="-fwritable-strings"\r
+    fi\r
+  ;;\r
+\r
+  *-*-aix3* | *-*-bosx* )\r
+    cat >>confdefs.h <<\_ACEOF\r
+#define PTY_ITERATION for (c = 0; !c; c++)\r
+_ACEOF\r
+\r
+    cat >>confdefs.h <<\_ACEOF\r
+#define PTY_NAME_SPRINTF strcpy (pty_name, "/dev/ptc");\r
+_ACEOF\r
+\r
+    cat >>confdefs.h <<\_ACEOF\r
+#define PTY_TTY_NAME_SPRINTF strcpy (pty_name, ttyname (fd));\r
+_ACEOF\r
+\r
+  ;;\r
+\r
+  *-*-cxux* )\r
+    cat >>confdefs.h <<\_ACEOF\r
+#define FIRST_PTY_LETTER 'A'\r
+_ACEOF\r
+\r
+    cat >>confdefs.h <<\_ACEOF\r
+#define LAST_PTY_LETTER 'P'\r
+_ACEOF\r
+\r
+  ;;\r
+\r
+  *-*-uniplus* )\r
+    cat >>confdefs.h <<\_ACEOF\r
+#define UNIPLUS 1\r
+_ACEOF\r
+\r
+  ;;\r
+\r
+  *-*-rtu* )\r
+    cat >>confdefs.h <<\_ACEOF\r
+#define FIRST_PTY_LETTER 'z'\r
+_ACEOF\r
+\r
+    cat >>confdefs.h <<\_ACEOF\r
+#define PTY_TTY_NAME_SPRINTF sprintf (pty_name, "/dev/ttyp%x", i);\r
+_ACEOF\r
+\r
+    cat >>confdefs.h <<\_ACEOF\r
+#define PTY_NAME_SPRINTF sprintf (pty_name, "/dev/pty%x", i);\r
+_ACEOF\r
+\r
+    cat >>confdefs.h <<\_ACEOF\r
+#define RTU 1\r
+_ACEOF\r
+\r
+  ;;\r
+\r
+  *-*-iris* | *-*-irix3* )\r
+    cat >>confdefs.h <<\_ACEOF\r
+#define PTY_ITERATION for (c = 0; !c; c++)\r
+_ACEOF\r
+\r
+    cat >>confdefs.h <<\_ACEOF\r
+#define PTY_NAME_SPRINTF strcpy (pty_name, "/dev/ptc");\r
+_ACEOF\r
+\r
+    cat >>confdefs.h <<\_ACEOF\r
+#define PTY_TTY_NAME_SPRINTF sprintf (pty_name, "/dev/ttyq%d", minor(stb.st_rdev));\r
+_ACEOF\r
+\r
+  ;;\r
+\r
+  *-*-irix* )\r
+  ;;\r
+\r
+  *-*-sunos4* | *-*-solaris1* )\r
+\r
+\r
+    if test "$GCC" = yes; then\r
+      PRE_XMULIB="-static"\r
+      POST_XMULIB="-dynamic"\r
+    else\r
+      PRE_XMULIB="-Bstatic"\r
+      POST_XMULIB="-Bdynamic"\r
+    fi\r
+  ;;\r
+\r
+  *-*-sunos5* | *-*-solaris2* )\r
+\r
+\r
+    X_LIBS="$X_LIBS -lelf"\r
+  ;;\r
+\r
+  *-*-sco* )\r
+    cat >>confdefs.h <<\_ACEOF\r
+#define PTY_ITERATION for (i = 0; ; i++)\r
+_ACEOF\r
+\r
+    cat >>confdefs.h <<\_ACEOF\r
+#define PTY_NAME_SPRINTF sprintf (pty_name, "/dev/ptyp%d", i);\r
+_ACEOF\r
+\r
+    cat >>confdefs.h <<\_ACEOF\r
+#define PTY_TTY_NAME_SPRINTF sprintf (pty_name, "/dev/ttyp%d", i);\r
+_ACEOF\r
+\r
+  ;;\r
+\r
+  *-*-dynix* | *-*-ptx* )\r
+  ;;\r
+\r
+  *-*-esix* )\r
+  ;;\r
+\r
+  *-*-usg5-4* | *-*-sysvr4* )\r
+  ;;\r
+\r
+  *-*-usg* | *-*-sysv* | *-*-aix* )\r
+  ;;\r
+\r
+  vax-*-ultrix )\r
+    if test "$GCC" = yes; then\r
+      CONF_CFLAGS="-fwritable-strings"\r
+    fi\r
+  ;;\r
+esac\r
+\r
+# Check whether --enable-xpm was given.\r
+if test "${enable_xpm+set}" = set; then\r
+  enableval=$enable_xpm; enable_xpm="$enableval"\r
+else\r
+  enable_xpm="yes"\r
+fi\r
+\r
+\r
+if test "$enable_xpm" = "yes"; then\r
+  save_cflags="$CFLAGS"\r
+  CFLAGS="$CFLAGS $X_CFLAGS"\r
+  CPPFLAGS="$CPPFLAGS $X_CFLAGS"\r
+\r
+for ac_header in X11/xpm.h\r
+do\r
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`\r
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then\r
+  { echo "$as_me:$LINENO: checking for $ac_header" >&5\r
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }\r
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then\r
+  echo $ECHO_N "(cached) $ECHO_C" >&6\r
+fi\r
+ac_res=`eval echo '${'$as_ac_Header'}'`\r
+              { echo "$as_me:$LINENO: result: $ac_res" >&5\r
+echo "${ECHO_T}$ac_res" >&6; }\r
+else\r
+  # Is the header compilable?\r
+{ echo "$as_me:$LINENO: checking $ac_header usability" >&5\r
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }\r
+cat >conftest.$ac_ext <<_ACEOF\r
+/* confdefs.h.  */\r
+_ACEOF\r
+cat confdefs.h >>conftest.$ac_ext\r
+cat >>conftest.$ac_ext <<_ACEOF\r
+/* end confdefs.h.  */\r
+$ac_includes_default\r
+#include <$ac_header>\r
+_ACEOF\r
+rm -f conftest.$ac_objext\r
+if { (ac_try="$ac_compile"\r
+case "(($ac_try" in\r
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;\r
+  *) ac_try_echo=$ac_try;;\r
+esac\r
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5\r
+  (eval "$ac_compile") 2>conftest.er1\r
+  ac_status=$?\r
+  grep -v '^ *+' conftest.er1 >conftest.err\r
+  rm -f conftest.er1\r
+  cat conftest.err >&5\r
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5\r
+  (exit $ac_status); } && {\r
+        test -z "$ac_c_werror_flag" ||\r
+        test ! -s conftest.err\r
+       } && test -s conftest.$ac_objext; then\r
+  ac_header_compiler=yes\r
+else\r
+  echo "$as_me: failed program was:" >&5\r
+sed 's/^/| /' conftest.$ac_ext >&5\r
+\r
+       ac_header_compiler=no\r
+fi\r
+\r
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext\r
+{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5\r
+echo "${ECHO_T}$ac_header_compiler" >&6; }\r
+\r
+# Is the header present?\r
+{ echo "$as_me:$LINENO: checking $ac_header presence" >&5\r
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }\r
+cat >conftest.$ac_ext <<_ACEOF\r
+/* confdefs.h.  */\r
+_ACEOF\r
+cat confdefs.h >>conftest.$ac_ext\r
+cat >>conftest.$ac_ext <<_ACEOF\r
+/* end confdefs.h.  */\r
+#include <$ac_header>\r
+_ACEOF\r
+if { (ac_try="$ac_cpp conftest.$ac_ext"\r
+case "(($ac_try" in\r
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;\r
+  *) ac_try_echo=$ac_try;;\r
+esac\r
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5\r
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1\r
+  ac_status=$?\r
+  grep -v '^ *+' conftest.er1 >conftest.err\r
+  rm -f conftest.er1\r
+  cat conftest.err >&5\r
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5\r
+  (exit $ac_status); } >/dev/null && {\r
+        test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||\r
+        test ! -s conftest.err\r
+       }; then\r
+  ac_header_preproc=yes\r
+else\r
+  echo "$as_me: failed program was:" >&5\r
+sed 's/^/| /' conftest.$ac_ext >&5\r
+\r
+  ac_header_preproc=no\r
+fi\r
+\r
+rm -f conftest.err conftest.$ac_ext\r
+{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5\r
+echo "${ECHO_T}$ac_header_preproc" >&6; }\r
+\r
+# So?  What about this header?\r
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in\r
+  yes:no: )\r
+    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5\r
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}\r
+    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5\r
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}\r
+    ac_header_preproc=yes\r
+    ;;\r
+  no:yes:* )\r
+    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5\r
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}\r
+    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5\r
+echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}\r
+    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5\r
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}\r
+    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5\r
+echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}\r
+    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5\r
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}\r
+    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5\r
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}\r
+\r
+    ;;\r
+esac\r
+{ echo "$as_me:$LINENO: checking for $ac_header" >&5\r
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }\r
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then\r
+  echo $ECHO_N "(cached) $ECHO_C" >&6\r
+else\r
+  eval "$as_ac_Header=\$ac_header_preproc"\r
+fi\r
+ac_res=`eval echo '${'$as_ac_Header'}'`\r
+              { echo "$as_me:$LINENO: result: $ac_res" >&5\r
+echo "${ECHO_T}$ac_res" >&6; }\r
+\r
+fi\r
+if test `eval echo '${'$as_ac_Header'}'` = yes; then\r
+  cat >>confdefs.h <<_ACEOF\r
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1\r
+_ACEOF\r
+\r
+fi\r
+\r
+done\r
+\r
+  CFLAGS="$save_cflags"\r
+  if test "$ac_cv_header_X11_xpm_h" = "yes"; then\r
+    save_ldflags="$LDFLAGS"\r
+    LDFLAGS="$LDFLAGS $X_LIBS"\r
+    { echo "$as_me:$LINENO: checking for XpmReadFileToPixmap in -lXpm" >&5\r
+echo $ECHO_N "checking for XpmReadFileToPixmap in -lXpm... $ECHO_C" >&6; }\r
+if test "${ac_cv_lib_Xpm_XpmReadFileToPixmap+set}" = set; then\r
+  echo $ECHO_N "(cached) $ECHO_C" >&6\r
+else\r
+  ac_check_lib_save_LIBS=$LIBS\r
+LIBS="-lXpm $X_PRE_LIBS -lX11 $X_EXTRA_LIBS $LIBS"\r
+cat >conftest.$ac_ext <<_ACEOF\r
+/* confdefs.h.  */\r
+_ACEOF\r
+cat confdefs.h >>conftest.$ac_ext\r
+cat >>conftest.$ac_ext <<_ACEOF\r
+/* end confdefs.h.  */\r
+\r
+/* Override any GCC internal prototype to avoid an error.\r
+   Use char because int might match the return type of a GCC\r
+   builtin and then its argument prototype would still apply.  */\r
+#ifdef __cplusplus\r
+extern "C"\r
+#endif\r
+char XpmReadFileToPixmap ();\r
+int\r
+main ()\r
+{\r
+return XpmReadFileToPixmap ();\r
+  ;\r
+  return 0;\r
+}\r
+_ACEOF\r
+rm -f conftest.$ac_objext conftest$ac_exeext\r
+if { (ac_try="$ac_link"\r
+case "(($ac_try" in\r
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;\r
+  *) ac_try_echo=$ac_try;;\r
+esac\r
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5\r
+  (eval "$ac_link") 2>conftest.er1\r
+  ac_status=$?\r
+  grep -v '^ *+' conftest.er1 >conftest.err\r
+  rm -f conftest.er1\r
+  cat conftest.err >&5\r
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5\r
+  (exit $ac_status); } && {\r
+        test -z "$ac_c_werror_flag" ||\r
+        test ! -s conftest.err\r
+       } && test -s conftest$ac_exeext &&\r
+       $as_test_x conftest$ac_exeext; then\r
+  ac_cv_lib_Xpm_XpmReadFileToPixmap=yes\r
+else\r
+  echo "$as_me: failed program was:" >&5\r
+sed 's/^/| /' conftest.$ac_ext >&5\r
+\r
+       ac_cv_lib_Xpm_XpmReadFileToPixmap=no\r
+fi\r
+\r
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \\r
+      conftest$ac_exeext conftest.$ac_ext\r
+LIBS=$ac_check_lib_save_LIBS\r
+fi\r
+{ echo "$as_me:$LINENO: result: $ac_cv_lib_Xpm_XpmReadFileToPixmap" >&5\r
+echo "${ECHO_T}$ac_cv_lib_Xpm_XpmReadFileToPixmap" >&6; }\r
+if test $ac_cv_lib_Xpm_XpmReadFileToPixmap = yes; then\r
+  X_PRE_LIBS="-lXpm $X_PRE_LIBS"; cat >>confdefs.h <<\_ACEOF\r
+#define HAVE_LIBXPM 1\r
+_ACEOF\r
+\r
+fi\r
+\r
+    LDFLAGS="$save_ldflags"\r
+  fi\r
+fi\r
+\r
+\r
+\r
+\r
+\r
+\r
+{ echo "$as_me:$LINENO: checking whether ptys or pipes should be used" >&5\r
+echo $ECHO_N "checking whether ptys or pipes should be used... $ECHO_C" >&6; }\r
+# Check whether --enable-ptys was given.\r
+if test "${enable_ptys+set}" = set; then\r
+  enableval=$enable_ptys; if test "$enableval" = yes; then\r
+  USE_PTYS=1\r
+  { echo "$as_me:$LINENO: result: ptys (user override)" >&5\r
+echo "${ECHO_T}ptys (user override)" >&6; }\r
+fi\r
+if test "$enableval" = no; then\r
+  USE_PTYS=0\r
+  { echo "$as_me:$LINENO: result: pipes (user override)" >&5\r
+echo "${ECHO_T}pipes (user override)" >&6; }\r
+fi\r
+else\r
+  if test "$USE_PTYS" = 1; then\r
+  { echo "$as_me:$LINENO: result: ptys" >&5\r
+echo "${ECHO_T}ptys" >&6; }\r
+else\r
+  { echo "$as_me:$LINENO: result: pipes" >&5\r
+echo "${ECHO_T}pipes" >&6; }\r
+fi\r
+fi\r
+\r
+cat >>confdefs.h <<_ACEOF\r
+#define USE_PTYS $USE_PTYS\r
+_ACEOF\r
+\r
+\r
+# Check whether --enable-zippy was given.\r
+if test "${enable_zippy+set}" = set; then\r
+  enableval=$enable_zippy; enable_zippy="$enableval"\r
+else\r
+  enable_zippy="yes"\r
+fi\r
+\r
+if test "$enable_zippy" = yes; then\r
+  cat >>confdefs.h <<\_ACEOF\r
+#define ZIPPY 1\r
+_ACEOF\r
+\r
+  ZIPPY_O=zippy.o\r
+  ZIPPY_H=zippy.h\r
+fi\r
+\r
+\r
+\r
+# Check whether --enable-sigint was given.\r
+if test "${enable_sigint+set}" = set; then\r
+  enableval=$enable_sigint; if test "$enableval" = yes; then\r
+  cat >>confdefs.h <<\_ACEOF\r
+#define ATTENTION 1\r
+_ACEOF\r
+\r
+fi\r
+else\r
+  cat >>confdefs.h <<\_ACEOF\r
+#define ATTENTION 1\r
+_ACEOF\r
+\r
+fi\r
+\r
+\r
+cat >>confdefs.h <<_ACEOF\r
+#define PRODUCT "$PRODUCT"\r
+_ACEOF\r
+\r
+cat >>confdefs.h <<_ACEOF\r
+#define VERSION "$VERSION"\r
+_ACEOF\r
+\r
+cat >>confdefs.h <<_ACEOF\r
+#define PATCHLEVEL "$PATCHLEVEL"\r
+_ACEOF\r
+\r
+\r
+\r
+\r
+\r
+ac_config_files="$ac_config_files cmail xboard.texinfo"\r
+\r
+ac_config_commands="$ac_config_commands default"\r
+\r
+cat >confcache <<\_ACEOF\r
+# This file is a shell script that caches the results of configure\r
+# tests run on this system so they can be shared between configure\r
+# scripts and configure runs, see configure's option --config-cache.\r
+# It is not useful on other systems.  If it contains results you don't\r
+# want to keep, you may remove or edit it.\r
+#\r
+# config.status only pays attention to the cache file if you give it\r
+# the --recheck option to rerun configure.\r
+#\r
+# `ac_cv_env_foo' variables (set or unset) will be overridden when\r
+# loading this file, other *unset* `ac_cv_foo' will be assigned the\r
+# following values.\r
+\r
+_ACEOF\r
+\r
+# The following way of writing the cache mishandles newlines in values,\r
+# but we know of no workaround that is simple, portable, and efficient.\r
+# So, we kill variables containing newlines.\r
+# Ultrix sh set writes to stderr and can't be redirected directly,\r
+# and sets the high bit in the cache file unless we assign to the vars.\r
+(\r
+  for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do\r
+    eval ac_val=\$$ac_var\r
+    case $ac_val in #(\r
+    *${as_nl}*)\r
+      case $ac_var in #(\r
+      *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5\r
+echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;;\r
+      esac\r
+      case $ac_var in #(\r
+      _ | IFS | as_nl) ;; #(\r
+      *) $as_unset $ac_var ;;\r
+      esac ;;\r
+    esac\r
+  done\r
+\r
+  (set) 2>&1 |\r
+    case $as_nl`(ac_space=' '; set) 2>&1` in #(\r
+    *${as_nl}ac_space=\ *)\r
+      # `set' does not quote correctly, so add quotes (double-quote\r
+      # substitution turns \\\\ into \\, and sed turns \\ into \).\r
+      sed -n \\r
+       "s/'/'\\\\''/g;\r
+         s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"\r
+      ;; #(\r
+    *)\r
+      # `set' quotes correctly as required by POSIX, so do not add quotes.\r
+      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"\r
+      ;;\r
+    esac |\r
+    sort\r
+) |\r
+  sed '\r
+     /^ac_cv_env_/b end\r
+     t clear\r
+     :clear\r
+     s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/\r
+     t end\r
+     s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/\r
+     :end' >>confcache\r
+if diff "$cache_file" confcache >/dev/null 2>&1; then :; else\r
+  if test -w "$cache_file"; then\r
+    test "x$cache_file" != "x/dev/null" &&\r
+      { echo "$as_me:$LINENO: updating cache $cache_file" >&5\r
+echo "$as_me: updating cache $cache_file" >&6;}\r
+    cat confcache >$cache_file\r
+  else\r
+    { echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5\r
+echo "$as_me: not updating unwritable cache $cache_file" >&6;}\r
+  fi\r
+fi\r
+rm -f confcache\r
+\r
+test "x$prefix" = xNONE && prefix=$ac_default_prefix\r
+# Let make expand exec_prefix.\r
+test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'\r
+\r
+DEFS=-DHAVE_CONFIG_H\r
+\r
+ac_libobjs=\r
+ac_ltlibobjs=\r
+for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue\r
+  # 1. Remove the extension, and $U if already installed.\r
+  ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'\r
+  ac_i=`echo "$ac_i" | sed "$ac_script"`\r
+  # 2. Prepend LIBOBJDIR.  When used with automake>=1.10 LIBOBJDIR\r
+  #    will be set to the directory where LIBOBJS objects are built.\r
+  ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext"\r
+  ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$ac_i"'$U.lo'\r
+done\r
+LIBOBJS=$ac_libobjs\r
+\r
+LTLIBOBJS=$ac_ltlibobjs\r
+\r
+\r
+if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then\r
+  { { echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined.\r
+Usually this means the macro was only invoked conditionally." >&5\r
+echo "$as_me: error: conditional \"AMDEP\" was never defined.\r
+Usually this means the macro was only invoked conditionally." >&2;}\r
+   { (exit 1); exit 1; }; }\r
+fi\r
+if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then\r
+  { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined.\r
+Usually this means the macro was only invoked conditionally." >&5\r
+echo "$as_me: error: conditional \"am__fastdepCC\" was never defined.\r
+Usually this means the macro was only invoked conditionally." >&2;}\r
+   { (exit 1); exit 1; }; }\r
+fi\r
+if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then\r
+  { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined.\r
+Usually this means the macro was only invoked conditionally." >&5\r
+echo "$as_me: error: conditional \"am__fastdepCC\" was never defined.\r
+Usually this means the macro was only invoked conditionally." >&2;}\r
+   { (exit 1); exit 1; }; }\r
+fi\r
+\r
+: ${CONFIG_STATUS=./config.status}\r
+ac_clean_files_save=$ac_clean_files\r
+ac_clean_files="$ac_clean_files $CONFIG_STATUS"\r
+{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5\r
+echo "$as_me: creating $CONFIG_STATUS" >&6;}\r
+cat >$CONFIG_STATUS <<_ACEOF\r
+#! $SHELL\r
+# Generated by $as_me.\r
+# Run this file to recreate the current configuration.\r
+# Compiler output produced by configure, useful for debugging\r
+# configure, is in config.log if it exists.\r
+\r
+debug=false\r
+ac_cs_recheck=false\r
+ac_cs_silent=false\r
+SHELL=\${CONFIG_SHELL-$SHELL}\r
+_ACEOF\r
+\r
+cat >>$CONFIG_STATUS <<\_ACEOF\r
+## --------------------- ##\r
+## M4sh Initialization.  ##\r
+## --------------------- ##\r
+\r
+# Be more Bourne compatible\r
+DUALCASE=1; export DUALCASE # for MKS sh\r
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then\r
+  emulate sh\r
+  NULLCMD=:\r
+  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which\r
+  # is contrary to our usage.  Disable this feature.\r
+  alias -g '${1+"$@"}'='"$@"'\r
+  setopt NO_GLOB_SUBST\r
+else\r
+  case `(set -o) 2>/dev/null` in\r
+  *posix*) set -o posix ;;\r
+esac\r
+\r
+fi\r
+\r
+\r
+\r
+\r
+# PATH needs CR\r
+# Avoid depending upon Character Ranges.\r
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'\r
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'\r
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS\r
+as_cr_digits='0123456789'\r
+as_cr_alnum=$as_cr_Letters$as_cr_digits\r
+\r
+# The user is always right.\r
+if test "${PATH_SEPARATOR+set}" != set; then\r
+  echo "#! /bin/sh" >conf$$.sh\r
+  echo  "exit 0"   >>conf$$.sh\r
+  chmod +x conf$$.sh\r
+  if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then\r
+    PATH_SEPARATOR=';'\r
+  else\r
+    PATH_SEPARATOR=:\r
+  fi\r
+  rm -f conf$$.sh\r
+fi\r
+\r
+# Support unset when possible.\r
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then\r
+  as_unset=unset\r
+else\r
+  as_unset=false\r
+fi\r
+\r
+\r
+# IFS\r
+# We need space, tab and new line, in precisely that order.  Quoting is\r
+# there to prevent editors from complaining about space-tab.\r
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word\r
+# splitting by setting IFS to empty value.)\r
+as_nl='\r
+'\r
+IFS=" ""       $as_nl"\r
+\r
+# Find who we are.  Look in the path if we contain no directory separator.\r
+case $0 in\r
+  *[\\/]* ) as_myself=$0 ;;\r
+  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR\r
+for as_dir in $PATH\r
+do\r
+  IFS=$as_save_IFS\r
+  test -z "$as_dir" && as_dir=.\r
+  test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break\r
+done\r
+IFS=$as_save_IFS\r
+\r
+     ;;\r
+esac\r
+# We did not find ourselves, most probably we were run as `sh COMMAND'\r
+# in which case we are not to be found in the path.\r
+if test "x$as_myself" = x; then\r
+  as_myself=$0\r
+fi\r
+if test ! -f "$as_myself"; then\r
+  echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2\r
+  { (exit 1); exit 1; }\r
+fi\r
+\r
+# Work around bugs in pre-3.0 UWIN ksh.\r
+for as_var in ENV MAIL MAILPATH\r
+do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var\r
+done\r
+PS1='$ '\r
+PS2='> '\r
+PS4='+ '\r
+\r
+# NLS nuisances.\r
+for as_var in \\r
+  LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \\r
+  LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \\r
+  LC_TELEPHONE LC_TIME\r
+do\r
+  if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then\r
+    eval $as_var=C; export $as_var\r
+  else\r
+    ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var\r
+  fi\r
+done\r
+\r
+# Required to use basename.\r
+if expr a : '\(a\)' >/dev/null 2>&1 &&\r
+   test "X`expr 00001 : '.*\(...\)'`" = X001; then\r
+  as_expr=expr\r
+else\r
+  as_expr=false\r
+fi\r
+\r
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then\r
+  as_basename=basename\r
+else\r
+  as_basename=false\r
+fi\r
+\r
+\r
+# Name of the executable.\r
+as_me=`$as_basename -- "$0" ||\r
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \\r
+        X"$0" : 'X\(//\)$' \| \\r
+        X"$0" : 'X\(/\)' \| . 2>/dev/null ||\r
+echo X/"$0" |\r
+    sed '/^.*\/\([^/][^/]*\)\/*$/{\r
+           s//\1/\r
+           q\r
+         }\r
+         /^X\/\(\/\/\)$/{\r
+           s//\1/\r
+           q\r
+         }\r
+         /^X\/\(\/\).*/{\r
+           s//\1/\r
+           q\r
+         }\r
+         s/.*/./; q'`\r
+\r
+# CDPATH.\r
+$as_unset CDPATH\r
+\r
+\r
+\r
+  as_lineno_1=$LINENO\r
+  as_lineno_2=$LINENO\r
+  test "x$as_lineno_1" != "x$as_lineno_2" &&\r
+  test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || {\r
+\r
+  # Create $as_me.lineno as a copy of $as_myself, but with $LINENO\r
+  # uniformly replaced by the line number.  The first 'sed' inserts a\r
+  # line-number line after each line using $LINENO; the second 'sed'\r
+  # does the real work.  The second script uses 'N' to pair each\r
+  # line-number line with the line containing $LINENO, and appends\r
+  # trailing '-' during substitution so that $LINENO is not a special\r
+  # case at line end.\r
+  # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the\r
+  # scripts with optimization help from Paolo Bonzini.  Blame Lee\r
+  # E. McMahon (1931-1989) for sed's syntax.  :-)\r
+  sed -n '\r
+    p\r
+    /[$]LINENO/=\r
+  ' <$as_myself |\r
+    sed '\r
+      s/[$]LINENO.*/&-/\r
+      t lineno\r
+      b\r
+      :lineno\r
+      N\r
+      :loop\r
+      s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/\r
+      t loop\r
+      s/-\n.*//\r
+    ' >$as_me.lineno &&\r
+  chmod +x "$as_me.lineno" ||\r
+    { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2\r
+   { (exit 1); exit 1; }; }\r
+\r
+  # Don't try to exec as it changes $[0], causing all sort of problems\r
+  # (the dirname of $[0] is not the place where we might find the\r
+  # original and so on.  Autoconf is especially sensitive to this).\r
+  . "./$as_me.lineno"\r
+  # Exit status is that of the last command.\r
+  exit\r
+}\r
+\r
+\r
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then\r
+  as_dirname=dirname\r
+else\r
+  as_dirname=false\r
+fi\r
+\r
+ECHO_C= ECHO_N= ECHO_T=\r
+case `echo -n x` in\r
+-n*)\r
+  case `echo 'x\c'` in\r
+  *c*) ECHO_T='        ';;     # ECHO_T is single tab character.\r
+  *)   ECHO_C='\c';;\r
+  esac;;\r
+*)\r
+  ECHO_N='-n';;\r
+esac\r
+\r
+if expr a : '\(a\)' >/dev/null 2>&1 &&\r
+   test "X`expr 00001 : '.*\(...\)'`" = X001; then\r
+  as_expr=expr\r
+else\r
+  as_expr=false\r
+fi\r
+\r
+rm -f conf$$ conf$$.exe conf$$.file\r
+if test -d conf$$.dir; then\r
+  rm -f conf$$.dir/conf$$.file\r
+else\r
+  rm -f conf$$.dir\r
+  mkdir conf$$.dir\r
+fi\r
+echo >conf$$.file\r
+if ln -s conf$$.file conf$$ 2>/dev/null; then\r
+  as_ln_s='ln -s'\r
+  # ... but there are two gotchas:\r
+  # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.\r
+  # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.\r
+  # In both cases, we have to default to `cp -p'.\r
+  ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||\r
+    as_ln_s='cp -p'\r
+elif ln conf$$.file conf$$ 2>/dev/null; then\r
+  as_ln_s=ln\r
+else\r
+  as_ln_s='cp -p'\r
+fi\r
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file\r
+rmdir conf$$.dir 2>/dev/null\r
+\r
+if mkdir -p . 2>/dev/null; then\r
+  as_mkdir_p=:\r
+else\r
+  test -d ./-p && rmdir ./-p\r
+  as_mkdir_p=false\r
+fi\r
+\r
+if test -x / >/dev/null 2>&1; then\r
+  as_test_x='test -x'\r
+else\r
+  if ls -dL / >/dev/null 2>&1; then\r
+    as_ls_L_option=L\r
+  else\r
+    as_ls_L_option=\r
+  fi\r
+  as_test_x='\r
+    eval sh -c '\''\r
+      if test -d "$1"; then\r
+        test -d "$1/.";\r
+      else\r
+       case $1 in\r
+        -*)set "./$1";;\r
+       esac;\r
+       case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in\r
+       ???[sx]*):;;*)false;;esac;fi\r
+    '\'' sh\r
+  '\r
+fi\r
+as_executable_p=$as_test_x\r
+\r
+# Sed expression to map a string onto a valid CPP name.\r
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"\r
+\r
+# Sed expression to map a string onto a valid variable name.\r
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"\r
+\r
+\r
+exec 6>&1\r
+\r
+# Save the log message, to keep $[0] and so on meaningful, and to\r
+# report actual input values of CONFIG_FILES etc. instead of their\r
+# values after options handling.\r
+ac_log="\r
+This file was extended by xboard $as_me 4.3, which was\r
+generated by GNU Autoconf 2.61.  Invocation command line was\r
+\r
+  CONFIG_FILES    = $CONFIG_FILES\r
+  CONFIG_HEADERS  = $CONFIG_HEADERS\r
+  CONFIG_LINKS    = $CONFIG_LINKS\r
+  CONFIG_COMMANDS = $CONFIG_COMMANDS\r
+  $ $0 $@\r
+\r
+on `(hostname || uname -n) 2>/dev/null | sed 1q`\r
+"\r
+\r
+_ACEOF\r
+\r
+cat >>$CONFIG_STATUS <<_ACEOF\r
+# Files that config.status was made for.\r
+config_files="$ac_config_files"\r
+config_headers="$ac_config_headers"\r
+config_commands="$ac_config_commands"\r
+\r
+_ACEOF\r
+\r
+cat >>$CONFIG_STATUS <<\_ACEOF\r
+ac_cs_usage="\\r
+\`$as_me' instantiates files from templates according to the\r
+current configuration.\r
+\r
+Usage: $0 [OPTIONS] [FILE]...\r
+\r
+  -h, --help       print this help, then exit\r
+  -V, --version    print version number and configuration settings, then exit\r
+  -q, --quiet      do not print progress messages\r
+  -d, --debug      don't remove temporary files\r
+      --recheck    update $as_me by reconfiguring in the same conditions\r
+  --file=FILE[:TEMPLATE]\r
+                  instantiate the configuration file FILE\r
+  --header=FILE[:TEMPLATE]\r
+                  instantiate the configuration header FILE\r
+\r
+Configuration files:\r
+$config_files\r
+\r
+Configuration headers:\r
+$config_headers\r
+\r
+Configuration commands:\r
+$config_commands\r
+\r
+Report bugs to <bug-autoconf@gnu.org>."\r
+\r
+_ACEOF\r
+cat >>$CONFIG_STATUS <<_ACEOF\r
+ac_cs_version="\\\r
+xboard config.status 4.3\r
+configured by $0, generated by GNU Autoconf 2.61,\r
+  with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"\r
+\r
+Copyright (C) 2006 Free Software Foundation, Inc.\r
+This config.status script is free software; the Free Software Foundation\r
+gives unlimited permission to copy, distribute and modify it."\r
+\r
+ac_pwd='$ac_pwd'\r
+srcdir='$srcdir'\r
+INSTALL='$INSTALL'\r
+MKDIR_P='$MKDIR_P'\r
+_ACEOF\r
+\r
+cat >>$CONFIG_STATUS <<\_ACEOF\r
+# If no file are specified by the user, then we need to provide default\r
+# value.  By we need to know if files were specified by the user.\r
+ac_need_defaults=:\r
+while test $# != 0\r
+do\r
+  case $1 in\r
+  --*=*)\r
+    ac_option=`expr "X$1" : 'X\([^=]*\)='`\r
+    ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`\r
+    ac_shift=:\r
+    ;;\r
+  *)\r
+    ac_option=$1\r
+    ac_optarg=$2\r
+    ac_shift=shift\r
+    ;;\r
+  esac\r
+\r
+  case $ac_option in\r
+  # Handling of the options.\r
+  -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)\r
+    ac_cs_recheck=: ;;\r
+  --version | --versio | --versi | --vers | --ver | --ve | --v | -V )\r
+    echo "$ac_cs_version"; exit ;;\r
+  --debug | --debu | --deb | --de | --d | -d )\r
+    debug=: ;;\r
+  --file | --fil | --fi | --f )\r
+    $ac_shift\r
+    CONFIG_FILES="$CONFIG_FILES $ac_optarg"\r
+    ac_need_defaults=false;;\r
+  --header | --heade | --head | --hea )\r
+    $ac_shift\r
+    CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg"\r
+    ac_need_defaults=false;;\r
+  --he | --h)\r
+    # Conflict between --help and --header\r
+    { echo "$as_me: error: ambiguous option: $1\r
+Try \`$0 --help' for more information." >&2\r
+   { (exit 1); exit 1; }; };;\r
+  --help | --hel | -h )\r
+    echo "$ac_cs_usage"; exit ;;\r
+  -q | -quiet | --quiet | --quie | --qui | --qu | --q \\r
+  | -silent | --silent | --silen | --sile | --sil | --si | --s)\r
+    ac_cs_silent=: ;;\r
+\r
+  # This is an error.\r
+  -*) { echo "$as_me: error: unrecognized option: $1\r
+Try \`$0 --help' for more information." >&2\r
+   { (exit 1); exit 1; }; } ;;\r
+\r
+  *) ac_config_targets="$ac_config_targets $1"\r
+     ac_need_defaults=false ;;\r
+\r
+  esac\r
+  shift\r
+done\r
+\r
+ac_configure_extra_args=\r
+\r
+if $ac_cs_silent; then\r
+  exec 6>/dev/null\r
+  ac_configure_extra_args="$ac_configure_extra_args --silent"\r
+fi\r
+\r
+_ACEOF\r
+cat >>$CONFIG_STATUS <<_ACEOF\r
+if \$ac_cs_recheck; then\r
+  echo "running CONFIG_SHELL=$SHELL $SHELL $0 "$ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6\r
+  CONFIG_SHELL=$SHELL\r
+  export CONFIG_SHELL\r
+  exec $SHELL "$0"$ac_configure_args \$ac_configure_extra_args --no-create --no-recursion\r
+fi\r
+\r
+_ACEOF\r
+cat >>$CONFIG_STATUS <<\_ACEOF\r
+exec 5>>config.log\r
+{\r
+  echo\r
+  sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX\r
+## Running $as_me. ##\r
+_ASBOX\r
+  echo "$ac_log"\r
+} >&5\r
+\r
+_ACEOF\r
+cat >>$CONFIG_STATUS <<_ACEOF\r
+#\r
+# INIT-COMMANDS\r
+#\r
+AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"\r
+\r
+_ACEOF\r
+\r
+cat >>$CONFIG_STATUS <<\_ACEOF\r
+\r
+# Handling of arguments.\r
+for ac_config_target in $ac_config_targets\r
+do\r
+  case $ac_config_target in\r
+    "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;\r
+    "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;;\r
+    "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;\r
+    "cmail") CONFIG_FILES="$CONFIG_FILES cmail" ;;\r
+    "xboard.texinfo") CONFIG_FILES="$CONFIG_FILES xboard.texinfo" ;;\r
+    "default") CONFIG_COMMANDS="$CONFIG_COMMANDS default" ;;\r
+\r
+  *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5\r
+echo "$as_me: error: invalid argument: $ac_config_target" >&2;}\r
+   { (exit 1); exit 1; }; };;\r
+  esac\r
+done\r
+\r
+\r
+# If the user did not use the arguments to specify the items to instantiate,\r
+# then the envvar interface is used.  Set only those that are not.\r
+# We use the long form for the default assignment because of an extremely\r
+# bizarre bug on SunOS 4.1.3.\r
+if $ac_need_defaults; then\r
+  test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files\r
+  test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers\r
+  test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands\r
+fi\r
+\r
+# Have a temporary directory for convenience.  Make it in the build tree\r
+# simply because there is no reason against having it here, and in addition,\r
+# creating and moving files from /tmp can sometimes cause problems.\r
+# Hook for its removal unless debugging.\r
+# Note that there is a small window in which the directory will not be cleaned:\r
+# after its creation but before its name has been assigned to `$tmp'.\r
+$debug ||\r
+{\r
+  tmp=\r
+  trap 'exit_status=$?\r
+  { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status\r
+' 0\r
+  trap '{ (exit 1); exit 1; }' 1 2 13 15\r
+}\r
+# Create a (secure) tmp directory for tmp files.\r
+\r
+{\r
+  tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&\r
+  test -n "$tmp" && test -d "$tmp"\r
+}  ||\r
+{\r
+  tmp=./conf$$-$RANDOM\r
+  (umask 077 && mkdir "$tmp")\r
+} ||\r
+{\r
+   echo "$me: cannot create a temporary directory in ." >&2\r
+   { (exit 1); exit 1; }\r
+}\r
+\r
+#\r
+# Set up the sed scripts for CONFIG_FILES section.\r
+#\r
+\r
+# No need to generate the scripts if there are no CONFIG_FILES.\r
+# This happens for instance when ./config.status config.h\r
+if test -n "$CONFIG_FILES"; then\r
+\r
+_ACEOF\r
+\r
+\r
+\r
+ac_delim='%!_!# '\r
+for ac_last_try in false false false false false :; do\r
+  cat >conf$$subs.sed <<_ACEOF\r
+SHELL!$SHELL$ac_delim\r
+PATH_SEPARATOR!$PATH_SEPARATOR$ac_delim\r
+PACKAGE_NAME!$PACKAGE_NAME$ac_delim\r
+PACKAGE_TARNAME!$PACKAGE_TARNAME$ac_delim\r
+PACKAGE_VERSION!$PACKAGE_VERSION$ac_delim\r
+PACKAGE_STRING!$PACKAGE_STRING$ac_delim\r
+PACKAGE_BUGREPORT!$PACKAGE_BUGREPORT$ac_delim\r
+exec_prefix!$exec_prefix$ac_delim\r
+prefix!$prefix$ac_delim\r
+program_transform_name!$program_transform_name$ac_delim\r
+bindir!$bindir$ac_delim\r
+sbindir!$sbindir$ac_delim\r
+libexecdir!$libexecdir$ac_delim\r
+datarootdir!$datarootdir$ac_delim\r
+datadir!$datadir$ac_delim\r
+sysconfdir!$sysconfdir$ac_delim\r
+sharedstatedir!$sharedstatedir$ac_delim\r
+localstatedir!$localstatedir$ac_delim\r
+includedir!$includedir$ac_delim\r
+oldincludedir!$oldincludedir$ac_delim\r
+docdir!$docdir$ac_delim\r
+infodir!$infodir$ac_delim\r
+htmldir!$htmldir$ac_delim\r
+dvidir!$dvidir$ac_delim\r
+pdfdir!$pdfdir$ac_delim\r
+psdir!$psdir$ac_delim\r
+libdir!$libdir$ac_delim\r
+localedir!$localedir$ac_delim\r
+mandir!$mandir$ac_delim\r
+DEFS!$DEFS$ac_delim\r
+ECHO_C!$ECHO_C$ac_delim\r
+ECHO_N!$ECHO_N$ac_delim\r
+ECHO_T!$ECHO_T$ac_delim\r
+LIBS!$LIBS$ac_delim\r
+build_alias!$build_alias$ac_delim\r
+host_alias!$host_alias$ac_delim\r
+target_alias!$target_alias$ac_delim\r
+INSTALL_PROGRAM!$INSTALL_PROGRAM$ac_delim\r
+INSTALL_SCRIPT!$INSTALL_SCRIPT$ac_delim\r
+INSTALL_DATA!$INSTALL_DATA$ac_delim\r
+am__isrc!$am__isrc$ac_delim\r
+CYGPATH_W!$CYGPATH_W$ac_delim\r
+PACKAGE!$PACKAGE$ac_delim\r
+VERSION!$VERSION$ac_delim\r
+ACLOCAL!$ACLOCAL$ac_delim\r
+AUTOCONF!$AUTOCONF$ac_delim\r
+AUTOMAKE!$AUTOMAKE$ac_delim\r
+AUTOHEADER!$AUTOHEADER$ac_delim\r
+MAKEINFO!$MAKEINFO$ac_delim\r
+install_sh!$install_sh$ac_delim\r
+STRIP!$STRIP$ac_delim\r
+INSTALL_STRIP_PROGRAM!$INSTALL_STRIP_PROGRAM$ac_delim\r
+mkdir_p!$mkdir_p$ac_delim\r
+AWK!$AWK$ac_delim\r
+SET_MAKE!$SET_MAKE$ac_delim\r
+am__leading_dot!$am__leading_dot$ac_delim\r
+AMTAR!$AMTAR$ac_delim\r
+am__tar!$am__tar$ac_delim\r
+am__untar!$am__untar$ac_delim\r
+CC!$CC$ac_delim\r
+CFLAGS!$CFLAGS$ac_delim\r
+LDFLAGS!$LDFLAGS$ac_delim\r
+CPPFLAGS!$CPPFLAGS$ac_delim\r
+ac_ct_CC!$ac_ct_CC$ac_delim\r
+EXEEXT!$EXEEXT$ac_delim\r
+OBJEXT!$OBJEXT$ac_delim\r
+DEPDIR!$DEPDIR$ac_delim\r
+am__include!$am__include$ac_delim\r
+am__quote!$am__quote$ac_delim\r
+AMDEP_TRUE!$AMDEP_TRUE$ac_delim\r
+AMDEP_FALSE!$AMDEP_FALSE$ac_delim\r
+AMDEPBACKSLASH!$AMDEPBACKSLASH$ac_delim\r
+CCDEPMODE!$CCDEPMODE$ac_delim\r
+am__fastdepCC_TRUE!$am__fastdepCC_TRUE$ac_delim\r
+am__fastdepCC_FALSE!$am__fastdepCC_FALSE$ac_delim\r
+LIBOBJS!$LIBOBJS$ac_delim\r
+LTLIBOBJS!$LTLIBOBJS$ac_delim\r
+CPP!$CPP$ac_delim\r
+LEX!$LEX$ac_delim\r
+LEX_OUTPUT_ROOT!$LEX_OUTPUT_ROOT$ac_delim\r
+LEXLIB!$LEXLIB$ac_delim\r
+RSH!$RSH$ac_delim\r
+MINFO!$MINFO$ac_delim\r
+NROFF!$NROFF$ac_delim\r
+NROFFFLAGS!$NROFFFLAGS$ac_delim\r
+AWKPATH!$AWKPATH$ac_delim\r
+PERLPATH!$PERLPATH$ac_delim\r
+GREP!$GREP$ac_delim\r
+EGREP!$EGREP$ac_delim\r
+XMKMF!$XMKMF$ac_delim\r
+X_CFLAGS!$X_CFLAGS$ac_delim\r
+X_PRE_LIBS!$X_PRE_LIBS$ac_delim\r
+X_LIBS!$X_LIBS$ac_delim\r
+X_EXTRA_LIBS!$X_EXTRA_LIBS$ac_delim\r
+XAW_LIBS!$XAW_LIBS$ac_delim\r
+build!$build$ac_delim\r
+build_cpu!$build_cpu$ac_delim\r
+_ACEOF\r
+\r
+  if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 97; then\r
+    break\r
+  elif $ac_last_try; then\r
+    { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5\r
+echo "$as_me: error: could not make $CONFIG_STATUS" >&2;}\r
+   { (exit 1); exit 1; }; }\r
+  else\r
+    ac_delim="$ac_delim!$ac_delim _$ac_delim!! "\r
+  fi\r
+done\r
+\r
+ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed`\r
+if test -n "$ac_eof"; then\r
+  ac_eof=`echo "$ac_eof" | sort -nru | sed 1q`\r
+  ac_eof=`expr $ac_eof + 1`\r
+fi\r
+\r
+cat >>$CONFIG_STATUS <<_ACEOF\r
+cat >"\$tmp/subs-1.sed" <<\CEOF$ac_eof\r
+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b\r
+_ACEOF\r
+sed '\r
+s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g\r
+s/^/s,@/; s/!/@,|#_!!_#|/\r
+:n\r
+t n\r
+s/'"$ac_delim"'$/,g/; t\r
+s/$/\\/; p\r
+N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n\r
+' >>$CONFIG_STATUS <conf$$subs.sed\r
+rm -f conf$$subs.sed\r
+cat >>$CONFIG_STATUS <<_ACEOF\r
+CEOF$ac_eof\r
+_ACEOF\r
+\r
+\r
+ac_delim='%!_!# '\r
+for ac_last_try in false false false false false :; do\r
+  cat >conf$$subs.sed <<_ACEOF\r
+build_vendor!$build_vendor$ac_delim\r
+build_os!$build_os$ac_delim\r
+host!$host$ac_delim\r
+host_cpu!$host_cpu$ac_delim\r
+host_vendor!$host_vendor$ac_delim\r
+host_os!$host_os$ac_delim\r
+PRE_XMULIB!$PRE_XMULIB$ac_delim\r
+POST_XMULIB!$POST_XMULIB$ac_delim\r
+CONF_CFLAGS!$CONF_CFLAGS$ac_delim\r
+CONF_LDFLAGS!$CONF_LDFLAGS$ac_delim\r
+ZIPPY_O!$ZIPPY_O$ac_delim\r
+ZIPPY_H!$ZIPPY_H$ac_delim\r
+PRODUCT!$PRODUCT$ac_delim\r
+PATCHLEVEL!$PATCHLEVEL$ac_delim\r
+_ACEOF\r
+\r
+  if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 14; then\r
+    break\r
+  elif $ac_last_try; then\r
+    { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5\r
+echo "$as_me: error: could not make $CONFIG_STATUS" >&2;}\r
+   { (exit 1); exit 1; }; }\r
+  else\r
+    ac_delim="$ac_delim!$ac_delim _$ac_delim!! "\r
+  fi\r
+done\r
+\r
+ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed`\r
+if test -n "$ac_eof"; then\r
+  ac_eof=`echo "$ac_eof" | sort -nru | sed 1q`\r
+  ac_eof=`expr $ac_eof + 1`\r
+fi\r
+\r
+cat >>$CONFIG_STATUS <<_ACEOF\r
+cat >"\$tmp/subs-2.sed" <<\CEOF$ac_eof\r
+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b end\r
+_ACEOF\r
+sed '\r
+s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g\r
+s/^/s,@/; s/!/@,|#_!!_#|/\r
+:n\r
+t n\r
+s/'"$ac_delim"'$/,g/; t\r
+s/$/\\/; p\r
+N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n\r
+' >>$CONFIG_STATUS <conf$$subs.sed\r
+rm -f conf$$subs.sed\r
+cat >>$CONFIG_STATUS <<_ACEOF\r
+:end\r
+s/|#_!!_#|//g\r
+CEOF$ac_eof\r
+_ACEOF\r
+\r
+\r
+# VPATH may cause trouble with some makes, so we remove $(srcdir),\r
+# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and\r
+# trailing colons and then remove the whole line if VPATH becomes empty\r
+# (actually we leave an empty line to preserve line numbers).\r
+if test "x$srcdir" = x.; then\r
+  ac_vpsub='/^[         ]*VPATH[        ]*=/{\r
+s/:*\$(srcdir):*/:/\r
+s/:*\${srcdir}:*/:/\r
+s/:*@srcdir@:*/:/\r
+s/^\([^=]*=[    ]*\):*/\1/\r
+s/:*$//\r
+s/^[^=]*=[      ]*$//\r
+}'\r
+fi\r
+\r
+cat >>$CONFIG_STATUS <<\_ACEOF\r
+fi # test -n "$CONFIG_FILES"\r
+\r
+\r
+for ac_tag in  :F $CONFIG_FILES  :H $CONFIG_HEADERS    :C $CONFIG_COMMANDS\r
+do\r
+  case $ac_tag in\r
+  :[FHLC]) ac_mode=$ac_tag; continue;;\r
+  esac\r
+  case $ac_mode$ac_tag in\r
+  :[FHL]*:*);;\r
+  :L* | :C*:*) { { echo "$as_me:$LINENO: error: Invalid tag $ac_tag." >&5\r
+echo "$as_me: error: Invalid tag $ac_tag." >&2;}\r
+   { (exit 1); exit 1; }; };;\r
+  :[FH]-) ac_tag=-:-;;\r
+  :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;\r
+  esac\r
+  ac_save_IFS=$IFS\r
+  IFS=:\r
+  set x $ac_tag\r
+  IFS=$ac_save_IFS\r
+  shift\r
+  ac_file=$1\r
+  shift\r
+\r
+  case $ac_mode in\r
+  :L) ac_source=$1;;\r
+  :[FH])\r
+    ac_file_inputs=\r
+    for ac_f\r
+    do\r
+      case $ac_f in\r
+      -) ac_f="$tmp/stdin";;\r
+      *) # Look for the file first in the build tree, then in the source tree\r
+        # (if the path is not absolute).  The absolute path cannot be DOS-style,\r
+        # because $ac_f cannot contain `:'.\r
+        test -f "$ac_f" ||\r
+          case $ac_f in\r
+          [\\/$]*) false;;\r
+          *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;\r
+          esac ||\r
+          { { echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5\r
+echo "$as_me: error: cannot find input file: $ac_f" >&2;}\r
+   { (exit 1); exit 1; }; };;\r
+      esac\r
+      ac_file_inputs="$ac_file_inputs $ac_f"\r
+    done\r
+\r
+    # Let's still pretend it is `configure' which instantiates (i.e., don't\r
+    # use $as_me), people would be surprised to read:\r
+    #    /* config.h.  Generated by config.status.  */\r
+    configure_input="Generated from "`IFS=:\r
+         echo $* | sed 's|^[^:]*/||;s|:[^:]*/|, |g'`" by configure."\r
+    if test x"$ac_file" != x-; then\r
+      configure_input="$ac_file.  $configure_input"\r
+      { echo "$as_me:$LINENO: creating $ac_file" >&5\r
+echo "$as_me: creating $ac_file" >&6;}\r
+    fi\r
+\r
+    case $ac_tag in\r
+    *:-:* | *:-) cat >"$tmp/stdin";;\r
+    esac\r
+    ;;\r
+  esac\r
+\r
+  ac_dir=`$as_dirname -- "$ac_file" ||\r
+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \\r
+        X"$ac_file" : 'X\(//\)[^/]' \| \\r
+        X"$ac_file" : 'X\(//\)$' \| \\r
+        X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||\r
+echo X"$ac_file" |\r
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{\r
+           s//\1/\r
+           q\r
+         }\r
+         /^X\(\/\/\)[^/].*/{\r
+           s//\1/\r
+           q\r
+         }\r
+         /^X\(\/\/\)$/{\r
+           s//\1/\r
+           q\r
+         }\r
+         /^X\(\/\).*/{\r
+           s//\1/\r
+           q\r
+         }\r
+         s/.*/./; q'`\r
+  { as_dir="$ac_dir"\r
+  case $as_dir in #(\r
+  -*) as_dir=./$as_dir;;\r
+  esac\r
+  test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || {\r
+    as_dirs=\r
+    while :; do\r
+      case $as_dir in #(\r
+      *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #(\r
+      *) as_qdir=$as_dir;;\r
+      esac\r
+      as_dirs="'$as_qdir' $as_dirs"\r
+      as_dir=`$as_dirname -- "$as_dir" ||\r
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \\r
+        X"$as_dir" : 'X\(//\)[^/]' \| \\r
+        X"$as_dir" : 'X\(//\)$' \| \\r
+        X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||\r
+echo X"$as_dir" |\r
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{\r
+           s//\1/\r
+           q\r
+         }\r
+         /^X\(\/\/\)[^/].*/{\r
+           s//\1/\r
+           q\r
+         }\r
+         /^X\(\/\/\)$/{\r
+           s//\1/\r
+           q\r
+         }\r
+         /^X\(\/\).*/{\r
+           s//\1/\r
+           q\r
+         }\r
+         s/.*/./; q'`\r
+      test -d "$as_dir" && break\r
+    done\r
+    test -z "$as_dirs" || eval "mkdir $as_dirs"\r
+  } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5\r
+echo "$as_me: error: cannot create directory $as_dir" >&2;}\r
+   { (exit 1); exit 1; }; }; }\r
+  ac_builddir=.\r
+\r
+case "$ac_dir" in\r
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;\r
+*)\r
+  ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`\r
+  # A ".." for each directory in $ac_dir_suffix.\r
+  ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'`\r
+  case $ac_top_builddir_sub in\r
+  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;\r
+  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;\r
+  esac ;;\r
+esac\r
+ac_abs_top_builddir=$ac_pwd\r
+ac_abs_builddir=$ac_pwd$ac_dir_suffix\r
+# for backward compatibility:\r
+ac_top_builddir=$ac_top_build_prefix\r
+\r
+case $srcdir in\r
+  .)  # We are building in place.\r
+    ac_srcdir=.\r
+    ac_top_srcdir=$ac_top_builddir_sub\r
+    ac_abs_top_srcdir=$ac_pwd ;;\r
+  [\\/]* | ?:[\\/]* )  # Absolute name.\r
+    ac_srcdir=$srcdir$ac_dir_suffix;\r
+    ac_top_srcdir=$srcdir\r
+    ac_abs_top_srcdir=$srcdir ;;\r
+  *) # Relative name.\r
+    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix\r
+    ac_top_srcdir=$ac_top_build_prefix$srcdir\r
+    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;\r
+esac\r
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix\r
+\r
+\r
+  case $ac_mode in\r
+  :F)\r
+  #\r
+  # CONFIG_FILE\r
+  #\r
+\r
+  case $INSTALL in\r
+  [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;\r
+  *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;;\r
+  esac\r
+  ac_MKDIR_P=$MKDIR_P\r
+  case $MKDIR_P in\r
+  [\\/$]* | ?:[\\/]* ) ;;\r
+  */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;;\r
+  esac\r
+_ACEOF\r
+\r
+cat >>$CONFIG_STATUS <<\_ACEOF\r
+# If the template does not know about datarootdir, expand it.\r
+# FIXME: This hack should be removed a few years after 2.60.\r
+ac_datarootdir_hack=; ac_datarootdir_seen=\r
+\r
+case `sed -n '/datarootdir/ {\r
+  p\r
+  q\r
+}\r
+/@datadir@/p\r
+/@docdir@/p\r
+/@infodir@/p\r
+/@localedir@/p\r
+/@mandir@/p\r
+' $ac_file_inputs` in\r
+*datarootdir*) ac_datarootdir_seen=yes;;\r
+*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)\r
+  { echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5\r
+echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}\r
+_ACEOF\r
+cat >>$CONFIG_STATUS <<_ACEOF\r
+  ac_datarootdir_hack='\r
+  s&@datadir@&$datadir&g\r
+  s&@docdir@&$docdir&g\r
+  s&@infodir@&$infodir&g\r
+  s&@localedir@&$localedir&g\r
+  s&@mandir@&$mandir&g\r
+    s&\\\${datarootdir}&$datarootdir&g' ;;\r
+esac\r
+_ACEOF\r
+\r
+# Neutralize VPATH when `$srcdir' = `.'.\r
+# Shell code in configure.ac might set extrasub.\r
+# FIXME: do we really want to maintain this feature?\r
+cat >>$CONFIG_STATUS <<_ACEOF\r
+  sed "$ac_vpsub\r
+$extrasub\r
+_ACEOF\r
+cat >>$CONFIG_STATUS <<\_ACEOF\r
+:t\r
+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b\r
+s&@configure_input@&$configure_input&;t t\r
+s&@top_builddir@&$ac_top_builddir_sub&;t t\r
+s&@srcdir@&$ac_srcdir&;t t\r
+s&@abs_srcdir@&$ac_abs_srcdir&;t t\r
+s&@top_srcdir@&$ac_top_srcdir&;t t\r
+s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t\r
+s&@builddir@&$ac_builddir&;t t\r
+s&@abs_builddir@&$ac_abs_builddir&;t t\r
+s&@abs_top_builddir@&$ac_abs_top_builddir&;t t\r
+s&@INSTALL@&$ac_INSTALL&;t t\r
+s&@MKDIR_P@&$ac_MKDIR_P&;t t\r
+$ac_datarootdir_hack\r
+" $ac_file_inputs | sed -f "$tmp/subs-1.sed" | sed -f "$tmp/subs-2.sed" >$tmp/out\r
+\r
+test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&\r
+  { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } &&\r
+  { ac_out=`sed -n '/^[         ]*datarootdir[  ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } &&\r
+  { echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir'\r
+which seems to be undefined.  Please make sure it is defined." >&5\r
+echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'\r
+which seems to be undefined.  Please make sure it is defined." >&2;}\r
+\r
+  rm -f "$tmp/stdin"\r
+  case $ac_file in\r
+  -) cat "$tmp/out"; rm -f "$tmp/out";;\r
+  *) rm -f "$ac_file"; mv "$tmp/out" $ac_file;;\r
+  esac\r
+ ;;\r
+  :H)\r
+  #\r
+  # CONFIG_HEADER\r
+  #\r
+_ACEOF\r
+\r
+# Transform confdefs.h into a sed script `conftest.defines', that\r
+# substitutes the proper values into config.h.in to produce config.h.\r
+rm -f conftest.defines conftest.tail\r
+# First, append a space to every undef/define line, to ease matching.\r
+echo 's/$/ /' >conftest.defines\r
+# Then, protect against being on the right side of a sed subst, or in\r
+# an unquoted here document, in config.status.  If some macros were\r
+# called several times there might be several #defines for the same\r
+# symbol, which is useless.  But do not sort them, since the last\r
+# AC_DEFINE must be honored.\r
+ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]*\r
+# These sed commands are passed to sed as "A NAME B PARAMS C VALUE D", where\r
+# NAME is the cpp macro being defined, VALUE is the value it is being given.\r
+# PARAMS is the parameter list in the macro definition--in most cases, it's\r
+# just an empty string.\r
+ac_dA='s,^\\([  #]*\\)[^        ]*\\([  ]*'\r
+ac_dB='\\)[     (].*,\\1define\\2'\r
+ac_dC=' '\r
+ac_dD=' ,'\r
+\r
+uniq confdefs.h |\r
+  sed -n '\r
+       t rset\r
+       :rset\r
+       s/^[     ]*#[    ]*define[       ][      ]*//\r
+       t ok\r
+       d\r
+       :ok\r
+       s/[\\&,]/\\&/g\r
+       s/^\('"$ac_word_re"'\)\(([^()]*)\)[      ]*\(.*\)/ '"$ac_dA"'\1'"$ac_dB"'\2'"${ac_dC}"'\3'"$ac_dD"'/p\r
+       s/^\('"$ac_word_re"'\)[  ]*\(.*\)/'"$ac_dA"'\1'"$ac_dB$ac_dC"'\2'"$ac_dD"'/p\r
+  ' >>conftest.defines\r
+\r
+# Remove the space that was appended to ease matching.\r
+# Then replace #undef with comments.  This is necessary, for\r
+# example, in the case of _POSIX_SOURCE, which is predefined and required\r
+# on some systems where configure will not decide to define it.\r
+# (The regexp can be short, since the line contains either #define or #undef.)\r
+echo 's/ $//\r
+s,^[    #]*u.*,/* & */,' >>conftest.defines\r
+\r
+# Break up conftest.defines:\r
+ac_max_sed_lines=50\r
+\r
+# First sed command is:         sed -f defines.sed $ac_file_inputs >"$tmp/out1"\r
+# Second one is:        sed -f defines.sed "$tmp/out1" >"$tmp/out2"\r
+# Third one will be:    sed -f defines.sed "$tmp/out2" >"$tmp/out1"\r
+# et cetera.\r
+ac_in='$ac_file_inputs'\r
+ac_out='"$tmp/out1"'\r
+ac_nxt='"$tmp/out2"'\r
+\r
+while :\r
+do\r
+  # Write a here document:\r
+    cat >>$CONFIG_STATUS <<_ACEOF\r
+    # First, check the format of the line:\r
+    cat >"\$tmp/defines.sed" <<\\CEOF\r
+/^[     ]*#[    ]*undef[        ][      ]*$ac_word_re[  ]*\$/b def\r
+/^[     ]*#[    ]*define[       ][      ]*$ac_word_re[(         ]/b def\r
+b\r
+:def\r
+_ACEOF\r
+  sed ${ac_max_sed_lines}q conftest.defines >>$CONFIG_STATUS\r
+  echo 'CEOF\r
+    sed -f "$tmp/defines.sed"' "$ac_in >$ac_out" >>$CONFIG_STATUS\r
+  ac_in=$ac_out; ac_out=$ac_nxt; ac_nxt=$ac_in\r
+  sed 1,${ac_max_sed_lines}d conftest.defines >conftest.tail\r
+  grep . conftest.tail >/dev/null || break\r
+  rm -f conftest.defines\r
+  mv conftest.tail conftest.defines\r
+done\r
+rm -f conftest.defines conftest.tail\r
+\r
+echo "ac_result=$ac_in" >>$CONFIG_STATUS\r
+cat >>$CONFIG_STATUS <<\_ACEOF\r
+  if test x"$ac_file" != x-; then\r
+    echo "/* $configure_input  */" >"$tmp/config.h"\r
+    cat "$ac_result" >>"$tmp/config.h"\r
+    if diff $ac_file "$tmp/config.h" >/dev/null 2>&1; then\r
+      { echo "$as_me:$LINENO: $ac_file is unchanged" >&5\r
+echo "$as_me: $ac_file is unchanged" >&6;}\r
+    else\r
+      rm -f $ac_file\r
+      mv "$tmp/config.h" $ac_file\r
+    fi\r
+  else\r
+    echo "/* $configure_input  */"\r
+    cat "$ac_result"\r
+  fi\r
+  rm -f "$tmp/out12"\r
+# Compute $ac_file's index in $config_headers.\r
+_am_arg=$ac_file\r
+_am_stamp_count=1\r
+for _am_header in $config_headers :; do\r
+  case $_am_header in\r
+    $_am_arg | $_am_arg:* )\r
+      break ;;\r
+    * )\r
+      _am_stamp_count=`expr $_am_stamp_count + 1` ;;\r
+  esac\r
+done\r
+echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" ||\r
+$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \\r
+        X"$_am_arg" : 'X\(//\)[^/]' \| \\r
+        X"$_am_arg" : 'X\(//\)$' \| \\r
+        X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null ||\r
+echo X"$_am_arg" |\r
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{\r
+           s//\1/\r
+           q\r
+         }\r
+         /^X\(\/\/\)[^/].*/{\r
+           s//\1/\r
+           q\r
+         }\r
+         /^X\(\/\/\)$/{\r
+           s//\1/\r
+           q\r
+         }\r
+         /^X\(\/\).*/{\r
+           s//\1/\r
+           q\r
+         }\r
+         s/.*/./; q'`/stamp-h$_am_stamp_count\r
+ ;;\r
+\r
+  :C)  { echo "$as_me:$LINENO: executing $ac_file commands" >&5\r
+echo "$as_me: executing $ac_file commands" >&6;}\r
+ ;;\r
+  esac\r
+\r
+\r
+  case $ac_file$ac_mode in\r
+    "depfiles":C) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do\r
+  # Strip MF so we end up with the name of the file.\r
+  mf=`echo "$mf" | sed -e 's/:.*$//'`\r
+  # Check whether this is an Automake generated Makefile or not.\r
+  # We used to match only the files named `Makefile.in', but\r
+  # some people rename them; so instead we look at the file content.\r
+  # Grep'ing the first line is not enough: some people post-process\r
+  # each Makefile.in and add a new line on top of each file to say so.\r
+  # Grep'ing the whole file is not good either: AIX grep has a line\r
+  # limit of 2048, but all sed's we know have understand at least 4000.\r
+  if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then\r
+    dirpart=`$as_dirname -- "$mf" ||\r
+$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \\r
+        X"$mf" : 'X\(//\)[^/]' \| \\r
+        X"$mf" : 'X\(//\)$' \| \\r
+        X"$mf" : 'X\(/\)' \| . 2>/dev/null ||\r
+echo X"$mf" |\r
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{\r
+           s//\1/\r
+           q\r
+         }\r
+         /^X\(\/\/\)[^/].*/{\r
+           s//\1/\r
+           q\r
+         }\r
+         /^X\(\/\/\)$/{\r
+           s//\1/\r
+           q\r
+         }\r
+         /^X\(\/\).*/{\r
+           s//\1/\r
+           q\r
+         }\r
+         s/.*/./; q'`\r
+  else\r
+    continue\r
+  fi\r
+  # Extract the definition of DEPDIR, am__include, and am__quote\r
+  # from the Makefile without running `make'.\r
+  DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`\r
+  test -z "$DEPDIR" && continue\r
+  am__include=`sed -n 's/^am__include = //p' < "$mf"`\r
+  test -z "am__include" && continue\r
+  am__quote=`sed -n 's/^am__quote = //p' < "$mf"`\r
+  # When using ansi2knr, U may be empty or an underscore; expand it\r
+  U=`sed -n 's/^U = //p' < "$mf"`\r
+  # Find all dependency output files, they are included files with\r
+  # $(DEPDIR) in their names.  We invoke sed twice because it is the\r
+  # simplest approach to changing $(DEPDIR) to its actual value in the\r
+  # expansion.\r
+  for file in `sed -n "\r
+    s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \\r
+       sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do\r
+    # Make sure the directory exists.\r
+    test -f "$dirpart/$file" && continue\r
+    fdir=`$as_dirname -- "$file" ||\r
+$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \\r
+        X"$file" : 'X\(//\)[^/]' \| \\r
+        X"$file" : 'X\(//\)$' \| \\r
+        X"$file" : 'X\(/\)' \| . 2>/dev/null ||\r
+echo X"$file" |\r
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{\r
+           s//\1/\r
+           q\r
+         }\r
+         /^X\(\/\/\)[^/].*/{\r
+           s//\1/\r
+           q\r
+         }\r
+         /^X\(\/\/\)$/{\r
+           s//\1/\r
+           q\r
+         }\r
+         /^X\(\/\).*/{\r
+           s//\1/\r
+           q\r
+         }\r
+         s/.*/./; q'`\r
+    { as_dir=$dirpart/$fdir\r
+  case $as_dir in #(\r
+  -*) as_dir=./$as_dir;;\r
+  esac\r
+  test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || {\r
+    as_dirs=\r
+    while :; do\r
+      case $as_dir in #(\r
+      *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #(\r
+      *) as_qdir=$as_dir;;\r
+      esac\r
+      as_dirs="'$as_qdir' $as_dirs"\r
+      as_dir=`$as_dirname -- "$as_dir" ||\r
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \\r
+        X"$as_dir" : 'X\(//\)[^/]' \| \\r
+        X"$as_dir" : 'X\(//\)$' \| \\r
+        X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||\r
+echo X"$as_dir" |\r
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{\r
+           s//\1/\r
+           q\r
+         }\r
+         /^X\(\/\/\)[^/].*/{\r
+           s//\1/\r
+           q\r
+         }\r
+         /^X\(\/\/\)$/{\r
+           s//\1/\r
+           q\r
+         }\r
+         /^X\(\/\).*/{\r
+           s//\1/\r
+           q\r
+         }\r
+         s/.*/./; q'`\r
+      test -d "$as_dir" && break\r
+    done\r
+    test -z "$as_dirs" || eval "mkdir $as_dirs"\r
+  } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5\r
+echo "$as_me: error: cannot create directory $as_dir" >&2;}\r
+   { (exit 1); exit 1; }; }; }\r
+    # echo "creating $dirpart/$file"\r
+    echo '# dummy' > "$dirpart/$file"\r
+  done\r
+done\r
+ ;;\r
+    "default":C) test -z "$CONFIG_HEADERS" || date > stamp-h\r
+chmod 755 cmail\r
+ ;;\r
+\r
+  esac\r
+done # for ac_tag\r
+\r
+\r
+{ (exit 0); exit 0; }\r
+_ACEOF\r
+chmod +x $CONFIG_STATUS\r
+ac_clean_files=$ac_clean_files_save\r
+\r
+\r
+# configure is writing to config.log, and then calls config.status.\r
+# config.status does its own redirection, appending to config.log.\r
+# Unfortunately, on DOS this fails, as config.log is still kept open\r
+# by configure, so config.status won't be able to write to it; its\r
+# output is simply discarded.  So we exec the FD to /dev/null,\r
+# effectively closing config.log, so it can be properly (re)opened and\r
+# appended to by config.status.  When coming back to configure, we\r
+# need to make the FD available again.\r
+if test "$no_create" != yes; then\r
+  ac_cs_success=:\r
+  ac_config_status_args=\r
+  test "$silent" = yes &&\r
+    ac_config_status_args="$ac_config_status_args --quiet"\r
+  exec 5>/dev/null\r
+  $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false\r
+  exec 5>>config.log\r
+  # Use ||, not &&, to avoid exiting from the if with $? = 1, which\r
+  # would make configure fail if this is the last instruction.\r
+  $ac_cs_success || { (exit 1); exit 1; }\r
+fi\r
+\r
index da09924..ef55295 100644 (file)
-dnl| configure.in
-dnl|
-dnl| You can process this file with autoconf to produce a configure script.
-dnl| However, normally the supplied configure script will work fine.
-dnl|
-dnl| If you do need to change the configure script, instead of editing
-dnl| it directly, try to edit configure.in (in a way that will keep
-dnl| it portable to sites and systems other than your own), and run autoconf 
-dnl| to regenerate configure.  Then submit your changes to be folded into
-dnl| the standard version of xboard.
-
-AC_INIT([xboard],[4.3])
-AM_INIT_AUTOMAKE
-AC_PROG_CC
-AC_CONFIG_HEADERS([config.h])
-AC_CONFIG_FILES([
-Makefile
-])
-AC_OUTPUT
-PRODUCT=xboard
-#VERSION=4.3  # version is already defined
-PATCHLEVEL=15
-
-
-if test -z "$CFLAGS" ; then
-dnl| Prevent the next macro from setting CFLAGS to -g
-  CFLAGS=" "
-fi
-AC_PROG_CC
-AC_PROG_CPP
-AC_ISC_POSIX
-AC_PROG_INSTALL
-AC_CHECK_PROGS(LEX, lex flex, lex_not_found)
-if test "$LEX" != lex_not_found ; then
-  AC_DECL_YYTEXT
-fi
-AC_CHECK_PROGS(RSH, remsh rsh, rsh)
-AC_CHECK_PROGS(MINFO, makeinfo, makeinfo_not_found)
-if test "$MINFO" == makeinfo_not_found ; then
-   echo Please install \"makeinfo\"
-   exit 1
-fi
-AC_DEFINE_UNQUOTED(REMOTE_SHELL, "$RSH")
-AC_CHECK_PROG(NROFF, nroff, [nroff -man], cat)
-AC_SUBST(NROFFFLAGS)
-AC_PATH_PROGS(AWKPATH, awk mawk gawk nawk)
-AC_PATH_PROGS(PERLPATH, perl)
-
-
-
-
-AC_HEADER_STDC
-AC_HEADER_TIME
-AC_HEADER_SYS_WAIT
-AC_HEADER_DIRENT
-AC_TYPE_SIGNAL
-AC_CHECK_HEADERS(stropts.h sys/time.h string.h unistd.h sys/systeminfo.h)
-AC_CHECK_HEADERS(fcntl.h sys/fcntl.h, break)
-AC_CHECK_HEADERS(sys/socket.h lan/socket.h, break)
-AC_CHECK_HEADER(stddef.h, [], AC_DEFINE(X_WCHAR, 1))
-
-AC_CHECK_FUNCS(_getpty grantpt setitimer usleep)
-AC_CHECK_FUNCS(gettimeofday ftime, break)
-AC_CHECK_FUNCS(random rand48, break)
-AC_CHECK_FUNCS(gethostname sysinfo, break)
-AC_CHECK_FUNC(setlocale, [],
-  AC_CHECK_LIB(i, setlocale, [], AC_DEFINE(X_LOCALE, 1)))
-
-AC_CHECK_LIB(seq, getpseudotty)
-
-AC_PATH_XTRA
-if test -n "$no_x" ; then
-  echo $PRODUCT requires the X Window System header files and libraries!
-  echo They were not found on your system.  See FAQ topic C.2.
-  echo configure failed
-  exit 1
-fi
-
-AC_CHECK_HEADER(X11/Intrinsic.h,xt="yes",xt="no")
-
-if test "$xt" == "no" ; then
-   echo Xt headers not found
-   exit 1
-fi
-
-AC_ARG_WITH(Xaw3d, [  --with-Xaw3d            use Xaw3d instead of Xaw],
-  with_xaw3d="yes", with_xaw3d="no")
-
-
-xaw_headers="no"
-if test "$with_xaw3d" == "yes" ; then
-   XAW_LIBS="-lXaw3d"
-   AC_CHECK_LIB([Xaw3d], [XawTextReplace], xaw3d_lib="yes", xaw3d_lib="no")
-   if test "$xaw3d_lib" == "no" ; then
-      echo Xaw3d libraries not found
-      exit 1
-   else
-      AC_CHECK_HEADER(X11/Xaw3d/Dialog.h,xaw3d_headers="yes",xaw3d_headers="no")       
-      if test "$xaw3d_headers" == "yes" ; then
-        AC_DEFINE(USE_XAW3D)
-        xaw_headers="yes"
-      else
-       AC_CHECK_HEADER(X11/Xaw/Dialog.h,xaw_headers="yes")     
-      fi
-   fi
-else
-   XAW_LIBS="-lXaw"
-   AC_CHECK_HEADER(X11/Xaw/Dialog.h,xaw_headers="yes")
-fi
-
-AC_SUBST(XAW_LIBS)
-
-
-
-if test "$xaw_headers" == "no" ; then
-   echo Xaw headers not found 
-   exit 1
-
-fi
-
-
-
-
-AC_CANONICAL_HOST
-
-dnl| The following info is mostly gathered from GNU Emacs 19.24.  Basically,
-dnl| we are trying to find out whether this is a System-V derivative in
-dnl| which pipes don't work with select() and if so, whether there is anything
-dnl| strange about the way to open a pty.  Some of the work was done above
-dnl| by looking for _getpty, grantpt, and getpseudotty.  A few other strange
-dnl| properties of particular systems are also handled here.
-
-dnl| 4/6/97 I'm not sure there really are any systems where pipes
-dnl| don't work with select(), and ptys cause problems on many
-dnl| systems, so I'm changing the default to disable ptys in all
-dnl| cases.  I will change it back if I get bug reports that are fixed
-dnl| by doing a "configure --enable-ptys"
-
-USE_PTYS=0
-case "$host" in
-  *-*-hpux* )
-    AC_DEFINE(PTY_TTY_NAME_SPRINTF,
-       [sprintf (pty_name, "/dev/pty/tty%c%x", c, i);])
-    AC_DEFINE(PTY_NAME_SPRINTF,
-       [sprintf (pty_name, "/dev/ptym/pty%c%x", c, i);])
-dnl| USE_PTYS=1
-    if test "$GCC" = yes; then
-      CONF_CFLAGS="-fwritable-strings"
-    else
-
-dnl| Note: You might be able to build xboard even if your compiler does not
-dnl| support ANSI C (-Aa).  xboard itself does not require ANSI C.  I don't
-dnl| know whether the X header files on HP-UX require it.
-
-      CONF_CFLAGS="-Aa -D_HPUX_SOURCE"
-    fi
-
-dnl| HP doesn't supply a full set of X header files and libraries.  People
-dnl| often have some things installed in one place and some in another. 
-dnl| AC_PATH_XTRA will find only one place, so we try to add all the
-dnl| likely ones that might be missing here.  It might be better to
-dnl| change AC_PATH_XTRA to try to extract this information from imake,
-dnl| since folks who install the missing bits often configure their
-dnl| imake to find them, but I don't want to delve into autoconf and
-dnl| hack on its internals.
-
-    if test -d /opt/hppd/include/X11; then
-      X_CFLAGS="$X_CFLAGS -I/opt/hppd/include"
-      X_LIBS="$X_LIBS -L/opt/hppd/lib"
-    elif test -d /usr/contrib/X11R5/include; then
-      X_CFLAGS="$X_CFLAGS -I/usr/contrib/X11R5/include"
-      X_LIBS="$X_LIBS -L/usr/contrib/X11R5/lib"
-    elif test -d /usr/contrib/mitX11R5/include; then
-      X_CFLAGS="$X_CFLAGS -I/usr/contrib/mitX11R5/include"
-      X_LIBS="$X_LIBS -L/usr/contrib/mitX11R5/lib"
-    elif test -d /MIT/X11R5/include; then
-      X_CFLAGS="$X_CFLAGS -I/MIT/X11R5/include"
-      X_LIBS="$X_LIBS -L/MIT/X11R5/lib"
-    elif test -d /usr/local/include/X11R5; then
-      X_CFLAGS="$X_CFLAGS -I/usr/local/include/X11R5"
-      X_LIBS="$X_LIBS -L/usr/local/lib/X11R5"
-    fi
-    if test -d /usr/include/X11R5; then
-      X_CFLAGS="$X_CFLAGS -I/usr/include/X11R5"
-      X_LIBS="$X_LIBS -L/usr/lib/X11R5 -L/usr/lib/X11R4"
-    elif test -d /usr/include/X11R4; then
-      X_CFLAGS="$X_CFLAGS -I/usr/include/X11R4"
-      X_LIBS="$X_LIBS -L/usr/lib/X11R4"
-    fi
-  ;;
-
-  romp-ibm-aix* )
-    AC_DEFINE(IBMRTAIX, 1)
-dnl| USE_PTYS=1
-  ;;
-
-  i386-ibm-aix )
-dnl| USE_PTYS=1
-    if test "$GCC" = yes; then
-      CONF_CFLAGS="-fwritable-strings"
-    fi
-  ;;
-
-  *-*-aix3* | *-*-bosx* )
-    AC_DEFINE(PTY_ITERATION, [for (c = 0; !c; c++)])
-    AC_DEFINE(PTY_NAME_SPRINTF, [strcpy (pty_name, "/dev/ptc");])
-    AC_DEFINE(PTY_TTY_NAME_SPRINTF, [strcpy (pty_name, ttyname (fd));])
-dnl| USE_PTYS=1
-  ;;
-
-  *-*-cxux* )
-    AC_DEFINE(FIRST_PTY_LETTER, 'A')
-    AC_DEFINE(LAST_PTY_LETTER, 'P')
-dnl| USE_PTYS=1
-  ;;
-
-  *-*-uniplus* )
-    AC_DEFINE(UNIPLUS, 1)
-dnl| USE_PTYS=1
-  ;;
-
-  *-*-rtu* )
-    AC_DEFINE(FIRST_PTY_LETTER, 'z')
-    AC_DEFINE(PTY_TTY_NAME_SPRINTF,
-        [sprintf (pty_name, "/dev/ttyp%x", i);])
-    AC_DEFINE(PTY_NAME_SPRINTF,
-       [sprintf (pty_name, "/dev/pty%x", i);])
-    AC_DEFINE(RTU, 1)
-dnl| USE_PTYS=1
-  ;;
-
-  *-*-iris* | *-*-irix3* )
-    AC_DEFINE(PTY_ITERATION, [for (c = 0; !c; c++)])
-    AC_DEFINE(PTY_NAME_SPRINTF, [strcpy (pty_name, "/dev/ptc");])
-    AC_DEFINE(PTY_TTY_NAME_SPRINTF,
-       [sprintf (pty_name, "/dev/ttyq%d", minor(stb.st_rdev));])
-dnl| USE_PTYS=1
-  ;;
-
-  *-*-irix* )
-dnl| USE_PTYS=1
-  ;;
-
-  *-*-sunos4* | *-*-solaris1* )
-
-dnl| Work around a bug in the SunOS 4.x linker.  Not needed if you have patches
-dnl|  100512-02 and 100573-03 from Sun.  The X FAQ says that the following is
-dnl|  "overkill," but doesn't explain what should be done instead.
-
-    if test "$GCC" = yes; then
-      PRE_XMULIB="-static"
-      POST_XMULIB="-dynamic"
-    else
-      PRE_XMULIB="-Bstatic"
-      POST_XMULIB="-Bdynamic"
-    fi
-  ;;
-
-  *-*-sunos5* | *-*-solaris2* )
-dnl| USE_PTYS=1
-
-dnl| I'm not sure -lelf is needed, but it was in the old Imakefile.
-dnl| The other libraries should all be found by Ac_PATH_XTRA or other
-dnl| code above.
-
-    X_LIBS="$X_LIBS -lelf"
-  ;;
-
-  *-*-sco* )
-    AC_DEFINE(PTY_ITERATION, [for (i = 0; ; i++)])
-    AC_DEFINE(PTY_NAME_SPRINTF, [sprintf (pty_name, "/dev/ptyp%d", i);])
-    AC_DEFINE(PTY_TTY_NAME_SPRINTF, [sprintf (pty_name, "/dev/ttyp%d", i);])
-dnl| USE_PTYS=1
-  ;;
-       
-  *-*-dynix* | *-*-ptx* )
-dnl| USE_PTYS=1
-  ;;
-
-  *-*-esix* )
-dnl| USE_PTYS=1
-  ;;
-
-  *-*-usg5-4* | *-*-sysvr4* )
-dnl| USE_PTYS=1
-  ;;
-
-  *-*-usg* | *-*-sysv* | *-*-aix* )
-dnl| USE_PTYS=1
-  ;;
-
-  vax-*-ultrix )
-    if test "$GCC" = yes; then
-      CONF_CFLAGS="-fwritable-strings"
-    fi
-  ;;
-esac
-
-AC_ARG_ENABLE(xpm,
-[  --enable-xpm            libXpm will be used if found (default)
-  --disable-xpm           libXpm will not be used],
-[enable_xpm="$enableval"], [enable_xpm="yes"])
-
-if test "$enable_xpm" = "yes"; then
-  save_cflags="$CFLAGS"
-  CFLAGS="$CFLAGS $X_CFLAGS"
-  CPPFLAGS="$CPPFLAGS $X_CFLAGS"
-  AC_CHECK_HEADERS(X11/xpm.h)
-  CFLAGS="$save_cflags"
-  if test "$ac_cv_header_X11_xpm_h" = "yes"; then
-    save_ldflags="$LDFLAGS"
-    LDFLAGS="$LDFLAGS $X_LIBS"
-    AC_CHECK_LIB(Xpm, XpmReadFileToPixmap,
-                 [X_PRE_LIBS="-lXpm $X_PRE_LIBS"; AC_DEFINE(HAVE_LIBXPM)], [],
-                 [$X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
-    LDFLAGS="$save_ldflags"
-  fi
-fi
-
-AC_SUBST(PRE_XMULIB)
-AC_SUBST(POST_XMULIB)
-AC_SUBST(CONF_CFLAGS)
-AC_SUBST(CONF_LDFLAGS)
-
-AC_MSG_CHECKING(whether ptys or pipes should be used)
-AC_ARG_ENABLE(ptys, 
-[  --enable-ptys           force use of pseudo-ttys with child processes
-  --disable-ptys          force use of pipes with child processes],
-[if test "$enableval" = yes; then
-  USE_PTYS=1
-  AC_MSG_RESULT([ptys (user override)])
-fi
-if test "$enableval" = no; then
-  USE_PTYS=0
-  AC_MSG_RESULT([pipes (user override)])
-fi],
-[if test "$USE_PTYS" = 1; then
-  AC_MSG_RESULT(ptys)
-else
-  AC_MSG_RESULT(pipes)
-fi])
-AC_DEFINE_UNQUOTED(USE_PTYS, $USE_PTYS)
-
-AC_ARG_ENABLE(zippy, 
-[  --enable-zippy          support interfacing a chess program to ICS (default)
-  --disable-zippy         do not support interfacing a chess program to ICS],
-[enable_zippy="$enableval"], [enable_zippy="yes"])
-if test "$enable_zippy" = yes; then
-  AC_DEFINE(ZIPPY, 1)
-  ZIPPY_O=zippy.o
-  ZIPPY_H=zippy.h
-fi
-AC_SUBST(ZIPPY_O)  
-AC_SUBST(ZIPPY_H)  
-
-AC_ARG_ENABLE(sigint, 
-[  --enable-sigint         sending SIGINT (^C) wakes up GNU Chess (default)
-  --disable-sigint        typing a command wakes up GNU Chess],
-[if test "$enableval" = yes; then
-  AC_DEFINE(ATTENTION, 1)
-fi],
-[AC_DEFINE(ATTENTION, 1)])
-
-AC_DEFINE_UNQUOTED(PRODUCT, "$PRODUCT")
-AC_DEFINE_UNQUOTED(VERSION, "$VERSION")
-AC_DEFINE_UNQUOTED(PATCHLEVEL, "$PATCHLEVEL")
-AC_SUBST(PRODUCT)
-AC_SUBST(VERSION)
-AC_SUBST(PATCHLEVEL)
-
-AC_OUTPUT(cmail xboard.texinfo,
-[test -z "$CONFIG_HEADERS" || date > stamp-h
-chmod 755 cmail
-])
+dnl| configure.in\r
+dnl|\r
+dnl| You can process this file with autoconf to produce a configure script.\r
+dnl| However, normally the supplied configure script will work fine.\r
+dnl|\r
+dnl| If you do need to change the configure script, instead of editing\r
+dnl| it directly, try to edit configure.in (in a way that will keep\r
+dnl| it portable to sites and systems other than your own), and run autoconf \r
+dnl| to regenerate configure.  Then submit your changes to be folded into\r
+dnl| the standard version of xboard.\r
+\r
+AC_INIT([xboard],[4.3])\r
+AM_INIT_AUTOMAKE\r
+AC_PROG_CC\r
+AC_CONFIG_HEADERS([config.h])\r
+AC_CONFIG_FILES([\r
+Makefile\r
+])\r
+AC_OUTPUT\r
+PRODUCT=xboard\r
+#VERSION=4.4  # version is already defined\r
+PATCHLEVEL=0e\r
+\r
+\r
+if test -z "$CFLAGS" ; then\r
+dnl| Prevent the next macro from setting CFLAGS to -g\r
+  CFLAGS=" "\r
+fi\r
+AC_PROG_CC\r
+AC_PROG_CPP\r
+AC_ISC_POSIX\r
+AC_PROG_INSTALL\r
+AC_CHECK_PROGS(LEX, lex flex, lex_not_found)\r
+if test "$LEX" != lex_not_found ; then\r
+  AC_DECL_YYTEXT\r
+fi\r
+AC_CHECK_PROGS(RSH, remsh rsh, rsh)\r
+AC_CHECK_PROGS(MINFO, makeinfo, makeinfo_not_found)\r
+if test "$MINFO" == makeinfo_not_found ; then\r
+   echo Please install \"makeinfo\"\r
+   exit 1\r
+fi\r
+AC_DEFINE_UNQUOTED(REMOTE_SHELL, "$RSH")\r
+AC_CHECK_PROG(NROFF, nroff, [nroff -man], cat)\r
+AC_SUBST(NROFFFLAGS)\r
+AC_PATH_PROGS(AWKPATH, awk mawk gawk nawk)\r
+AC_PATH_PROGS(PERLPATH, perl)\r
+\r
+\r
+\r
+\r
+AC_HEADER_STDC\r
+AC_HEADER_TIME\r
+AC_HEADER_SYS_WAIT\r
+AC_HEADER_DIRENT\r
+AC_TYPE_SIGNAL\r
+AC_CHECK_HEADERS(stropts.h sys/time.h string.h unistd.h sys/systeminfo.h)\r
+AC_CHECK_HEADERS(fcntl.h sys/fcntl.h, break)\r
+AC_CHECK_HEADERS(sys/socket.h lan/socket.h, break)\r
+AC_CHECK_HEADER(stddef.h, [], AC_DEFINE(X_WCHAR, 1))\r
+\r
+AC_CHECK_FUNCS(_getpty grantpt setitimer usleep)\r
+AC_CHECK_FUNCS(gettimeofday ftime, break)\r
+AC_CHECK_FUNCS(random rand48, break)\r
+AC_CHECK_FUNCS(gethostname sysinfo, break)\r
+AC_CHECK_FUNC(setlocale, [],\r
+  AC_CHECK_LIB(i, setlocale, [], AC_DEFINE(X_LOCALE, 1)))\r
+\r
+AC_CHECK_LIB(seq, getpseudotty)\r
+\r
+AC_PATH_XTRA\r
+if test -n "$no_x" ; then\r
+  echo $PRODUCT requires the X Window System header files and libraries!\r
+  echo They were not found on your system.  See FAQ topic C.2.\r
+  echo configure failed\r
+  exit 1\r
+fi\r
+\r
+AC_CHECK_HEADER(X11/Intrinsic.h,xt="yes",xt="no")\r
+\r
+if test "$xt" == "no" ; then\r
+   echo Xt headers not found\r
+   exit 1\r
+fi\r
+\r
+AC_ARG_WITH(Xaw3d, [  --with-Xaw3d            use Xaw3d instead of Xaw],\r
+  with_xaw3d="yes", with_xaw3d="no")\r
+\r
+\r
+xaw_headers="no"\r
+if test "$with_xaw3d" == "yes" ; then\r
+   XAW_LIBS="-lXaw3d"\r
+   AC_CHECK_LIB([Xaw3d], [XawTextReplace], xaw3d_lib="yes", xaw3d_lib="no")\r
+   if test "$xaw3d_lib" == "no" ; then\r
+      echo Xaw3d libraries not found\r
+      exit 1\r
+   else\r
+      AC_CHECK_HEADER(X11/Xaw3d/Dialog.h,xaw3d_headers="yes",xaw3d_headers="no")       \r
+      if test "$xaw3d_headers" == "yes" ; then\r
+        AC_DEFINE(USE_XAW3D)\r
+        xaw_headers="yes"\r
+      else\r
+       AC_CHECK_HEADER(X11/Xaw/Dialog.h,xaw_headers="yes")     \r
+      fi\r
+   fi\r
+else\r
+   XAW_LIBS="-lXaw"\r
+   AC_CHECK_HEADER(X11/Xaw/Dialog.h,xaw_headers="yes")\r
+fi\r
+\r
+AC_SUBST(XAW_LIBS)\r
+\r
+\r
+\r
+if test "$xaw_headers" == "no" ; then\r
+   echo Xaw headers not found \r
+   exit 1\r
+\r
+fi\r
+\r
+\r
+\r
+\r
+AC_CANONICAL_HOST\r
+\r
+dnl| The following info is mostly gathered from GNU Emacs 19.24.  Basically,\r
+dnl| we are trying to find out whether this is a System-V derivative in\r
+dnl| which pipes don't work with select() and if so, whether there is anything\r
+dnl| strange about the way to open a pty.  Some of the work was done above\r
+dnl| by looking for _getpty, grantpt, and getpseudotty.  A few other strange\r
+dnl| properties of particular systems are also handled here.\r
+\r
+dnl| 4/6/97 I'm not sure there really are any systems where pipes\r
+dnl| don't work with select(), and ptys cause problems on many\r
+dnl| systems, so I'm changing the default to disable ptys in all\r
+dnl| cases.  I will change it back if I get bug reports that are fixed\r
+dnl| by doing a "configure --enable-ptys"\r
+\r
+USE_PTYS=0\r
+case "$host" in\r
+  *-*-hpux* )\r
+    AC_DEFINE(PTY_TTY_NAME_SPRINTF,\r
+       [sprintf (pty_name, "/dev/pty/tty%c%x", c, i);])\r
+    AC_DEFINE(PTY_NAME_SPRINTF,\r
+       [sprintf (pty_name, "/dev/ptym/pty%c%x", c, i);])\r
+dnl| USE_PTYS=1\r
+    if test "$GCC" = yes; then\r
+      CONF_CFLAGS="-fwritable-strings"\r
+    else\r
+\r
+dnl| Note: You might be able to build xboard even if your compiler does not\r
+dnl| support ANSI C (-Aa).  xboard itself does not require ANSI C.  I don't\r
+dnl| know whether the X header files on HP-UX require it.\r
+\r
+      CONF_CFLAGS="-Aa -D_HPUX_SOURCE"\r
+    fi\r
+\r
+dnl| HP doesn't supply a full set of X header files and libraries.  People\r
+dnl| often have some things installed in one place and some in another. \r
+dnl| AC_PATH_XTRA will find only one place, so we try to add all the\r
+dnl| likely ones that might be missing here.  It might be better to\r
+dnl| change AC_PATH_XTRA to try to extract this information from imake,\r
+dnl| since folks who install the missing bits often configure their\r
+dnl| imake to find them, but I don't want to delve into autoconf and\r
+dnl| hack on its internals.\r
+\r
+    if test -d /opt/hppd/include/X11; then\r
+      X_CFLAGS="$X_CFLAGS -I/opt/hppd/include"\r
+      X_LIBS="$X_LIBS -L/opt/hppd/lib"\r
+    elif test -d /usr/contrib/X11R5/include; then\r
+      X_CFLAGS="$X_CFLAGS -I/usr/contrib/X11R5/include"\r
+      X_LIBS="$X_LIBS -L/usr/contrib/X11R5/lib"\r
+    elif test -d /usr/contrib/mitX11R5/include; then\r
+      X_CFLAGS="$X_CFLAGS -I/usr/contrib/mitX11R5/include"\r
+      X_LIBS="$X_LIBS -L/usr/contrib/mitX11R5/lib"\r
+    elif test -d /MIT/X11R5/include; then\r
+      X_CFLAGS="$X_CFLAGS -I/MIT/X11R5/include"\r
+      X_LIBS="$X_LIBS -L/MIT/X11R5/lib"\r
+    elif test -d /usr/local/include/X11R5; then\r
+      X_CFLAGS="$X_CFLAGS -I/usr/local/include/X11R5"\r
+      X_LIBS="$X_LIBS -L/usr/local/lib/X11R5"\r
+    fi\r
+    if test -d /usr/include/X11R5; then\r
+      X_CFLAGS="$X_CFLAGS -I/usr/include/X11R5"\r
+      X_LIBS="$X_LIBS -L/usr/lib/X11R5 -L/usr/lib/X11R4"\r
+    elif test -d /usr/include/X11R4; then\r
+      X_CFLAGS="$X_CFLAGS -I/usr/include/X11R4"\r
+      X_LIBS="$X_LIBS -L/usr/lib/X11R4"\r
+    fi\r
+  ;;\r
+\r
+  romp-ibm-aix* )\r
+    AC_DEFINE(IBMRTAIX, 1)\r
+dnl| USE_PTYS=1\r
+  ;;\r
+\r
+  i386-ibm-aix )\r
+dnl| USE_PTYS=1\r
+    if test "$GCC" = yes; then\r
+      CONF_CFLAGS="-fwritable-strings"\r
+    fi\r
+  ;;\r
+\r
+  *-*-aix3* | *-*-bosx* )\r
+    AC_DEFINE(PTY_ITERATION, [for (c = 0; !c; c++)])\r
+    AC_DEFINE(PTY_NAME_SPRINTF, [strcpy (pty_name, "/dev/ptc");])\r
+    AC_DEFINE(PTY_TTY_NAME_SPRINTF, [strcpy (pty_name, ttyname (fd));])\r
+dnl| USE_PTYS=1\r
+  ;;\r
+\r
+  *-*-cxux* )\r
+    AC_DEFINE(FIRST_PTY_LETTER, 'A')\r
+    AC_DEFINE(LAST_PTY_LETTER, 'P')\r
+dnl| USE_PTYS=1\r
+  ;;\r
+\r
+  *-*-uniplus* )\r
+    AC_DEFINE(UNIPLUS, 1)\r
+dnl| USE_PTYS=1\r
+  ;;\r
+\r
+  *-*-rtu* )\r
+    AC_DEFINE(FIRST_PTY_LETTER, 'z')\r
+    AC_DEFINE(PTY_TTY_NAME_SPRINTF,\r
+        [sprintf (pty_name, "/dev/ttyp%x", i);])\r
+    AC_DEFINE(PTY_NAME_SPRINTF,\r
+       [sprintf (pty_name, "/dev/pty%x", i);])\r
+    AC_DEFINE(RTU, 1)\r
+dnl| USE_PTYS=1\r
+  ;;\r
+\r
+  *-*-iris* | *-*-irix3* )\r
+    AC_DEFINE(PTY_ITERATION, [for (c = 0; !c; c++)])\r
+    AC_DEFINE(PTY_NAME_SPRINTF, [strcpy (pty_name, "/dev/ptc");])\r
+    AC_DEFINE(PTY_TTY_NAME_SPRINTF,\r
+       [sprintf (pty_name, "/dev/ttyq%d", minor(stb.st_rdev));])\r
+dnl| USE_PTYS=1\r
+  ;;\r
+\r
+  *-*-irix* )\r
+dnl| USE_PTYS=1\r
+  ;;\r
+\r
+  *-*-sunos4* | *-*-solaris1* )\r
+\r
+dnl| Work around a bug in the SunOS 4.x linker.  Not needed if you have patches\r
+dnl|  100512-02 and 100573-03 from Sun.  The X FAQ says that the following is\r
+dnl|  "overkill," but doesn't explain what should be done instead.\r
+\r
+    if test "$GCC" = yes; then\r
+      PRE_XMULIB="-static"\r
+      POST_XMULIB="-dynamic"\r
+    else\r
+      PRE_XMULIB="-Bstatic"\r
+      POST_XMULIB="-Bdynamic"\r
+    fi\r
+  ;;\r
+\r
+  *-*-sunos5* | *-*-solaris2* )\r
+dnl| USE_PTYS=1\r
+\r
+dnl| I'm not sure -lelf is needed, but it was in the old Imakefile.\r
+dnl| The other libraries should all be found by Ac_PATH_XTRA or other\r
+dnl| code above.\r
+\r
+    X_LIBS="$X_LIBS -lelf"\r
+  ;;\r
+\r
+  *-*-sco* )\r
+    AC_DEFINE(PTY_ITERATION, [for (i = 0; ; i++)])\r
+    AC_DEFINE(PTY_NAME_SPRINTF, [sprintf (pty_name, "/dev/ptyp%d", i);])\r
+    AC_DEFINE(PTY_TTY_NAME_SPRINTF, [sprintf (pty_name, "/dev/ttyp%d", i);])\r
+dnl| USE_PTYS=1\r
+  ;;\r
+       \r
+  *-*-dynix* | *-*-ptx* )\r
+dnl| USE_PTYS=1\r
+  ;;\r
+\r
+  *-*-esix* )\r
+dnl| USE_PTYS=1\r
+  ;;\r
+\r
+  *-*-usg5-4* | *-*-sysvr4* )\r
+dnl| USE_PTYS=1\r
+  ;;\r
+\r
+  *-*-usg* | *-*-sysv* | *-*-aix* )\r
+dnl| USE_PTYS=1\r
+  ;;\r
+\r
+  vax-*-ultrix )\r
+    if test "$GCC" = yes; then\r
+      CONF_CFLAGS="-fwritable-strings"\r
+    fi\r
+  ;;\r
+esac\r
+\r
+AC_ARG_ENABLE(xpm,\r
+[  --enable-xpm            libXpm will be used if found (default)\r
+  --disable-xpm           libXpm will not be used],\r
+[enable_xpm="$enableval"], [enable_xpm="yes"])\r
+\r
+if test "$enable_xpm" = "yes"; then\r
+  save_cflags="$CFLAGS"\r
+  CFLAGS="$CFLAGS $X_CFLAGS"\r
+  CPPFLAGS="$CPPFLAGS $X_CFLAGS"\r
+  AC_CHECK_HEADERS(X11/xpm.h)\r
+  CFLAGS="$save_cflags"\r
+  if test "$ac_cv_header_X11_xpm_h" = "yes"; then\r
+    save_ldflags="$LDFLAGS"\r
+    LDFLAGS="$LDFLAGS $X_LIBS"\r
+    AC_CHECK_LIB(Xpm, XpmReadFileToPixmap,\r
+                 [X_PRE_LIBS="-lXpm $X_PRE_LIBS"; AC_DEFINE(HAVE_LIBXPM)], [],\r
+                 [$X_PRE_LIBS -lX11 $X_EXTRA_LIBS])\r
+    LDFLAGS="$save_ldflags"\r
+  fi\r
+fi\r
+\r
+AC_SUBST(PRE_XMULIB)\r
+AC_SUBST(POST_XMULIB)\r
+AC_SUBST(CONF_CFLAGS)\r
+AC_SUBST(CONF_LDFLAGS)\r
+\r
+AC_MSG_CHECKING(whether ptys or pipes should be used)\r
+AC_ARG_ENABLE(ptys, \r
+[  --enable-ptys           force use of pseudo-ttys with child processes\r
+  --disable-ptys          force use of pipes with child processes],\r
+[if test "$enableval" = yes; then\r
+  USE_PTYS=1\r
+  AC_MSG_RESULT([ptys (user override)])\r
+fi\r
+if test "$enableval" = no; then\r
+  USE_PTYS=0\r
+  AC_MSG_RESULT([pipes (user override)])\r
+fi],\r
+[if test "$USE_PTYS" = 1; then\r
+  AC_MSG_RESULT(ptys)\r
+else\r
+  AC_MSG_RESULT(pipes)\r
+fi])\r
+AC_DEFINE_UNQUOTED(USE_PTYS, $USE_PTYS)\r
+\r
+AC_ARG_ENABLE(zippy, \r
+[  --enable-zippy          support interfacing a chess program to ICS (default)\r
+  --disable-zippy         do not support interfacing a chess program to ICS],\r
+[enable_zippy="$enableval"], [enable_zippy="yes"])\r
+if test "$enable_zippy" = yes; then\r
+  AC_DEFINE(ZIPPY, 1)\r
+  ZIPPY_O=zippy.o\r
+  ZIPPY_H=zippy.h\r
+fi\r
+AC_SUBST(ZIPPY_O)  \r
+AC_SUBST(ZIPPY_H)  \r
+\r
+AC_ARG_ENABLE(sigint, \r
+[  --enable-sigint         sending SIGINT (^C) wakes up GNU Chess (default)\r
+  --disable-sigint        typing a command wakes up GNU Chess],\r
+[if test "$enableval" = yes; then\r
+  AC_DEFINE(ATTENTION, 1)\r
+fi],\r
+[AC_DEFINE(ATTENTION, 1)])\r
+\r
+AC_DEFINE_UNQUOTED(PRODUCT, "$PRODUCT")\r
+AC_DEFINE_UNQUOTED(VERSION, "$VERSION")\r
+AC_DEFINE_UNQUOTED(PATCHLEVEL, "$PATCHLEVEL")\r
+AC_SUBST(PRODUCT)\r
+AC_SUBST(VERSION)\r
+AC_SUBST(PATCHLEVEL)\r
+\r
+AC_OUTPUT(cmail xboard.texinfo,\r
+[test -z "$CONFIG_HEADERS" || date > stamp-h\r
+chmod 755 cmail\r
+])\r
index 13e1719..bad8e89 100644 (file)
@@ -71,17 +71,16 @@ statements, let me know.
 \r
 <p>\r
 I'd like to hear from everyone who is trying to interface their own\r
-chess engine to xboard/WinBoard.  Please email me,\r
-tim<a name="nospam">@</a>tim-mann.org.  Also, please join\r
-the mailing list for authors of xboard/WinBoard compatible chess\r
-engines.  The list is now hosted by Yahoo Groups; you can join at <a\r
-href="http://www.egroups.com/group/chess-engines"\r
->http://www.egroups.com/group/chess-engines</a>, or you can read the\r
+chess engine to xboard/WinBoard. Please join the mailing list for \r
+authors of xboard/WinBoard compatible chess engines and post a message \r
+about what you're doing. The list is now hosted by Yahoo Groups; you \r
+can join at <a href="http://groups.yahoo.com/group/chess-engines" \r
+>http://groups.yahoo.com/group/chess-engines</a>, or you can read the\r
 list there without joining.  The list is filtered to prevent spam.\r
 </p>\r
 <p>\r
 <font color=green>\r
-Note that the WinBoard 4.3.xx line is developed independently of the\r
+Note that the WinBoard 4.3.xx line was developed independently of the\r
 original GNU project, by H.G.Muller.\r
 If you have questions about WinBoard 4.3.xx, or want to report bugs in it,\r
 report them in the appropriate section of the \r
@@ -618,7 +617,20 @@ below.
 <dt><strong>sd DEPTH</strong>\r
 <dd>The engine should limit its thinking to DEPTH ply.\r
 <font color=green>The commands "level" or "st" and "sd" can be used together in an orthogonal way.\r
-If both are issued, the engine should observe both limitations.</font>\r
+If both are issued, the engine should observe both limitations:</font>\r
+In the protocol, the "sd" command isn't a time control.  It doesn't\r
+say that your engine has unlimited time but must search to exactly the\r
+given depth.  It says that you should pay attention to the time\r
+control as normal, but cut off the search at the specified depth even\r
+if you have time to search deeper.  If you don't have time to search\r
+to the specified depth, given your normal time management algorithm,\r
+then you will want to stop sooner than the given depth.\r
+<p>\r
+The "new" command should set the search depth back to unlimited.  This\r
+is already stated in the spec.  The "level" command should not affect\r
+the search depth.  As it happens, xboard/WinBoard currently always\r
+sends sd (if needed) right after level, but that isn't part of the\r
+spec.\r
 <p>\r
 \r
 <dt><font color=green><strong>nps NODE_RATE</strong></font>\r
@@ -821,9 +833,16 @@ The setboard command is the new way to set up positions, beginning
 in protocol version 2.  It is not used unless it has been selected\r
 with the feature command.  Here FEN is a position in Forsythe-Edwards\r
 Notation, as defined in the PGN standard.</font>\r
-<font color=green>In FRC or CRC, WinBoard will use Shredder-FEN or X-FEN standard,\r
-i.e. it can use the rook-file indicator letter to represent a castling right (like HAha)\r
-whenever it wants, but if it uses KQkq, this will always refer to the outermost rook on the given side</font>\r
+<font color=green>Note that this PGN standard referred to here\r
+only applies to normal Chess;\r
+Obviously in variants that cannot be described by a FEN for normal Chess,\r
+e.g. because the board is not 8x8, other pieces then PNBRQK participate, \r
+there are holdings that need to be specified, etc., \r
+xboard will use a FEN format that is standard or suitable for that varant.\r
+In particular, in FRC or CRC, WinBoard will use Shredder-FEN or X-FEN standard,\r
+i.e. it can use the rook-file indicator letter to represent a castling right \r
+(like HAha) whenever it wants, but if it uses KQkq, this will always refer \r
+to the outermost rook on the given side.</font>\r
 <font color=red>\r
 \r
 <p><i>Illegal positions:</i> Note that either setboard or edit can\r
@@ -1056,6 +1075,26 @@ This command will only be sent to engines that have told the GUI they support EG
 through the egt feature.\r
 It will be sent at the start of each game, before the "new" command.\r
 </font>\r
+<p>\r
+\r
+<dt><font color=blue><strong>option NAME [VALUE]</strong></font>\r
+<dd><font color=blue>\r
+This command changes the setting of the option NAME defined by the engine \r
+(through an earlier feature command)\r
+to the given VALUE.\r
+XBoard will in general have no idea what the option means,\r
+and will send the command only when a user changes the value of this option through a menu,\r
+or at startup of the engine \r
+(before the first 'cores' command or, if that is not sent, the first 'new' command)\r
+in reaction to command-line options.\r
+The NAME echoes back to the engine the string that was identified as an option NAME\r
+in the feature command defining the option.\r
+The VALUE is of the type (numeric or text or absent) that was implied by the option type\r
+specified in this feature command,\r
+i.e. with 'spin' and 'check' options VALUE will be a decimal integer (in the latter case 0 or 1),\r
+with 'combo' and 'string' options VALUE will be a text string,\r
+and with 'button' and 'save' options no VALUE will be sent at all.\r
+</font>\r
 </dl>\r
 \r
 <h3>Bughouse commands:</h3>\r
@@ -1409,6 +1448,34 @@ If you do not set this feature, xboard will assume the engine does not support e
 and will not send any "egtpath" commands to inform the engine about their whereabouts.\r
 </font>\r
 \r
+<dt><font color=blue>\r
+<strong>option</strong> (string, see text below)\r
+</font>\r
+<dd><font color=blue>\r
+This feature is used by the engine to define an option command to appear in a GUI menu,\r
+so that the user can change the corresponding setting of the engine through the GUI.\r
+The string describes the option by defining a name, type, current value and (sometimes) the acceptable value range.\r
+There are six different options types, each requiring a slighly different syntax of the defining string:\r
+<br>\r
+feature option="NAME -button"\r
+<br>\r
+feature option="NAME -save"\r
+<br>\r
+feature option="NAME -check VALUE"\r
+<br>\r
+feature option="NAME -string VALUE"\r
+<br>\r
+feature option="NAME -spin VALUE MIN MAX"\r
+<br>\r
+feature option="NAME -combo CHOICE1 /// CHOICE2 ..."\r
+<br>\r
+NAME is an arbitrary alphanumeric string which can contain spaces; \r
+the oter words in capitals would be replaced by the current (default) setting of the option,\r
+the minimum or maximum value of numeric (-spin) options, \r
+or arbitrary text labels (for -combo option).\r
+In the latter cae, the current value will be preceded by an asterisk.\r
+</font>\r
+\r
 <dt><font color=red>\r
 <strong>done</strong> (integer, no default)\r
 </font>\r
diff --git a/gettext.h b/gettext.h
new file mode 100755 (executable)
index 0000000..8b262f4
--- /dev/null
+++ b/gettext.h
@@ -0,0 +1,69 @@
+/* Convenience header for conditional use of GNU <libintl.h>.
+   Copyright (C) 1995-1998, 2000-2002 Free Software Foundation, Inc.
+
+   This program is free software; you can redistribute it and/or modify it
+   under the terms of the GNU Library General Public License as published
+   by the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with this program; if not, write to the Free Software
+   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+   USA.  */
+
+#ifndef _LIBGETTEXT_H
+#define _LIBGETTEXT_H 1
+
+/* NLS can be disabled through the configure --disable-nls option.  */
+#if ENABLE_NLS
+
+/* Get declarations of GNU message catalog functions.  */
+# include <libintl.h>
+
+#else
+
+/* Solaris /usr/include/locale.h includes /usr/include/libintl.h, which
+   chokes if dcgettext is defined as a macro.  So include it now, to make
+   later inclusions of <locale.h> a NOP.  We don't include <libintl.h>
+   as well because people using "gettext.h" will not include <libintl.h>,
+   and also including <libintl.h> would fail on SunOS 4, whereas <locale.h>
+   is OK.  */
+#if defined(__sun)
+# include <locale.h>
+#endif
+
+/* Disabled NLS.
+   The casts to 'const char *' serve the purpose of producing warnings
+   for invalid uses of the value returned from these functions.
+   On pre-ANSI systems without 'const', the config.h file is supposed to
+   contain "#define const".  */
+# define gettext(Msgid) ((const char *) (Msgid))
+# define dgettext(Domainname, Msgid) ((const char *) (Msgid))
+# define dcgettext(Domainname, Msgid, Category) ((const char *) (Msgid))
+# define ngettext(Msgid1, Msgid2, N) \
+    ((N) == 1 ? (const char *) (Msgid1) : (const char *) (Msgid2))
+# define dngettext(Domainname, Msgid1, Msgid2, N) \
+    ((N) == 1 ? (const char *) (Msgid1) : (const char *) (Msgid2))
+# define dcngettext(Domainname, Msgid1, Msgid2, N, Category) \
+    ((N) == 1 ? (const char *) (Msgid1) : (const char *) (Msgid2))
+# define textdomain(Domainname) ((const char *) (Domainname))
+# define bindtextdomain(Domainname, Dirname) ((const char *) (Dirname))
+# define bind_textdomain_codeset(Domainname, Codeset) ((const char *) (Codeset))
+
+#endif
+
+/* A pseudo function call that serves as a marker for the automated
+   extraction of messages, but does not call gettext().  The run-time
+   translation is done at a different place in the code.
+   The argument, String, should be a literal string.  Concatenated strings
+   and other string expressions won't work.
+   The macro's expansion is not parenthesized, so that it is suitable as
+   initializer for static 'char[]' or 'const char[]' variables.  */
+#define gettext_noop(String) String
+
+#endif /* _LIBGETTEXT_H */
diff --git a/installer/WinBoard-4.2.7/COPYING b/installer/WinBoard-4.2.7/COPYING
new file mode 100644 (file)
index 0000000..a3f6b12
--- /dev/null
@@ -0,0 +1,340 @@
+                   GNU GENERAL PUBLIC LICENSE
+                      Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+                          59 Temple Place - Suite 330, Boston, MA
+                          02111-1307, USA.
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                           Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+\f
+                   GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+\f
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+\f
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+\f
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+                           NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+                    END OF TERMS AND CONDITIONS
+\f
+       Appendix: How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) 19yy  <name of author>
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) 19yy name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Library General
+Public License instead of this License.
diff --git a/installer/WinBoard-4.2.7/COPYRIGHT b/installer/WinBoard-4.2.7/COPYRIGHT
new file mode 100644 (file)
index 0000000..accde17
--- /dev/null
@@ -0,0 +1,51 @@
+XBoard -- a graphical chessboard for X
+
+Original authors:  Dan Sears and Chris Sears
+Enhancements (Version 2.0 and later):  Tim Mann
+
+Copyright 1991 by Digital Equipment Corporation, Maynard, Massachusetts.
+Enhancements Copyright 1992-98 Free Software Foundation, Inc.
+
+XBoard's alternative piece bitmaps (bitmaps.xchess) are derived from the
+bitmaps in the XChess program, which was written and is copyrighted by
+Wayne Christopher.
+
+The following terms apply to Digital Equipment Corporation's copyright
+interest in XBoard:
+------------------------------------------------------------------------
+All Rights Reserved
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+provided that the above copyright notice appear in all copies and that
+both that copyright notice and this permission notice appear in
+supporting documentation, and that the name of Digital not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
+ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+SOFTWARE.
+------------------------------------------------------------------------
+
+The following terms apply to the enhanced version of XBoard distributed
+by the Free Software Foundation:
+------------------------------------------------------------------------
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+------------------------------------------------------------------------
diff --git a/installer/WinBoard-4.2.7/ChangeLog b/installer/WinBoard-4.2.7/ChangeLog
new file mode 100644 (file)
index 0000000..313e8f1
--- /dev/null
@@ -0,0 +1,3331 @@
+ChangeLog for XBoard/WinBoard
+
+* 11/26/2003: In WinBoard, setting the -debug flag now logs ICS output
+to WinBoard.debug too.  (This isn't needed in xboard because ICS
+output already goes to stdout, so it's easy to capture along with the
+debug output on stderr.)  This was issue #280 in the ToDo file.
+
+* 11/23/2003: Cleaned up some minor problems in cygwin.mak.  Thanks to
+Hans Werner Strube for the problem report.
+
+* 11/23/2003: Updated the default list of chess servers in
+winboard/defaults.h.  Deleted two that appear to be dead and added a
+new one that is active.
+
+* 11/19/2003: Swapped icon_white.bm and icon_black.bm in XBoard.
+Hopefully this will get them the right way around by default on more X
+window managers.  I wish I understood this better.
+
+* 11/18/2003: Implemented a simple 32-bit random number generator for
+WinBoard, replacing the Windows rand(), which ranges only up to
+0x7fff.  Formerly on Windows, only zippy.lines sayings that started in
+the first 32767 bytes of the file could ever be used.  This was issue
+#505 from the ToDo file.
+
+* 11/16/2003: The xboard man page and info files are now built from a
+common set of texinfo source files, and the xboard man page now covers
+cmail as well.  Formerly, ever since the texinfo file was first
+contributed to the project, it was separate from the man page and the
+two files had to be updated in parallel, making for a maintenance
+nightmare.  To make combining the files possible, I took the Perl
+script "texi2man" from the GNU Units project and added support for a
+larger subset of the texinfo markup language.  I then carefully
+compared the old man page and old texinfo file to make sure the latest
+and clearest words survived into the new combined texinfo file.  It
+would be great to merge in WinBoard's help file too, but that's a
+larger project.  It would have to be heavily conditionalized to
+deal with differences in features between XBoard and WinBoard.
+
+* 11/15/2003: Cleaned up and applied a small patch from Daniel
+Mehrmann, to stop overly long PVs in thinking output from causing a
+buffer overflow crash in backend.c.
+       
+* 11/5/2003: When a chess engine sends a "telluser" command (including
+the cases where "tellall" or "tellopponent" acts like telluser), the
+information now goes into a nonmodel popup that is automatically
+dismissed when the user clicks anywhere on the board.  This fix is
+more significant on WinBoard, where formerly you got a fully modal
+dialog that had to be dismissed by clicking on OK before anything else
+could happen.  The bug was issue #406 in the ToDo file.
+
+* 11/1/2003: Removed email addresses from this file to reduce spam
+load, as it gets linked to from the Web.
+
+* 11/1/2003: Updated READ_ME and winboard/READ_ME.txt.
+
+* Modified xboard and winboard makefiles to be able to build the
+project in the new combined directory structure.
+
+* Applied a small security fix to pxboard, from Martin Maeok.
+
+* Fixed a bug in the game list dialog.  The change in 4.2.6 to opening
+games in text mode (meant to avoid getting extra \r's into comments)
+caused a new bug in determining seek offsets when parsing a game file
+to form the game list.  Also, the change was incomplete; on some code
+paths games were still being opened in binary mode.  Thanks to Lenik
+Terenin for reporting the offset bug.  I've now gone back to always
+using binary mode when reading game files, and I've fixed the comment
+bug by adding code to remove \r's from parsed comments explicitly.  I
+still use text mode for writing game files so that games written by
+WinBoard will have Windows-style line endings.
+
+* Fix for minor bug in WinBoard installer.  If you chose a non-default
+destination directory, the default directory was still used for a
+couple of unimportant things, namely setting the App Paths registry
+keys (unused by WinBoard) and trying to copy the existing WinBoard.ini
+file to WinBoard.old.  I inherited this bug from the InstallShield 5
+sample template.  Thanks to "l.d." for noticing the incorrect keys.
+
+* Patch from Chris Priest: when two engines are being run through rsh,
+avoid reusing the same stderr port for both.  I'm not sure why this
+should be needed, but it's harmless, at least.
+
+* Bugfix: The kludge to deal with old engines that give an error
+message because they don't know the "st" command was too sloppy; it
+could hit on an "st" substring anywhere in an error message.  GNU
+Chess 4 is the only engine I know of where the kludge was needed, so I
+changed the kludge to match a longer, more GNU-specific string.
+
+* Changed the WinBoard self-extracting installer to choose a unique
+temporary subdirectory name within the Windows temp directory instead
+of always putting wb-setup directly in temp.  Besides being better
+practice, this avoids the need to deltree wb-setup first, which
+occasionally alarms someone who thinks that deltree is only used by
+trojans to delete all your files.  (Yes, I'm serious.)
+
+* Fixed a bug where FICS-style "wild/0" strings were not parsed as the
+proper wild type.  The "/" was not being skipped.
+
+* Fixed a WinBoard bug where temporary files created by game
+copy/paste were being created in the root directory of the current
+drive instead of the TMP directory and were not always deleted on exit.
+
+* Fixed a small bug in winboard.c's ErrorDialog() function.  Thanks to
+"Ron" (no last name given).  The bug might have caused a problem when
+pressing OK or Cancel in an error dialog when more than one error
+dialog was being displayed, but I'm not really sure.
+
+* Removed a hack that worked around a bug in very old versions of
+Crafty, where it would sometimes reply "illegal move" to a "."
+command.  The hack kept us from recognizing real illegal move messages
+in analyze mode from engines that don't respond to the "." command.
+Thanks to Fabien Letouzey for the report.
+
+* Fixed a bug in the xboard version of GetDelayedEvent.  It would
+return the most recently scheduled event even if it had already fired.
+This caused at least one visible error: in -ics -xreuse mode, starting
+the engine again and seeing another "feature done=1" would re-run the
+initialization code in InitBackEnd3, including the code that opens the
+connection to ICS.  The WinBoard version didn't have this bug.  Thanks
+to Bob Hyatt for the bug report.
+
+* The promotion popup for ICC wild 26 (giveaway) now includes King.
+Thanks to Fredrik Josefsson for the bug report.
+
+* The first game in a file (or being pasted from the clipboard) can
+now start with a bare move -- no PGN tags, no move number "1", etc.
+Suggested by Shane Harrelson.  One could imagine taking this farther
+and accepting something like "e4 e5 1/2-1/2 d4 d5" as two games, but
+I haven't done that.
+
+* Bug fix: xboard didn't really accept a paste of multiple games,
+contrary to what I wrote when adding the feature to WinBoard in
+4.2.4.  Now it works in both.
+
+* Fixed generic start/end of game messages to work on chess.net, where
+they put ratings in parens after the player names.
+
+* Updated config.sub and config.guess to newer versions from
+automake-1.4p5-2.  This makes configure work with MacOS X + X11.
+
+* Bugfix: when examining a game fragment on FICS where black plays
+first, don't show two "(0:00.000)" times on the initial "none" move.
+
+* If TestLegality is on and one of the engines makes an illegal move
+in TwoMachines mode, it forfeits immediately.  Formerly the game would
+get stuck at that point and the engine that made the illegal move
+would eventually lose on time.
+
+xboard/WinBoard 4.2.6 -- Fri Feb  1 22:26:31 PST 2002
+Tim Mann
+
+Another small bugfix release.
+
+* Put in a small change from Alexander Mai to allow xboard to build in
+an OS/2 EMX environment.
+
+* Fix WinBoard-only bug where editing a PGN file with comments would
+insert more \r characters before the \n after every Load/Save cycle.
+For some unknown reason we were reading the files in "rb" mode but
+writing them in "a" mode, so we kept the \r characters on reading and
+added an extra one on writing.  Fix: change the "rb" to "r".  Thanks
+to Joel (last name not given) for the bug report.
+
+* Put the arguments to rsh/remsh in the right order for better
+portability.  Thanks to Michael Kalisz.
+
+* FreezeUI is now implemented in WinBoard; it was previously only
+implemented in xboard.  This function prevents the user from entering
+moves or other commands while we are waiting for an engine to
+initialize itself.  Implementing it fixes a bug where the user could
+start a game (etc.) during feature negotiation.  One of the symptoms
+of this bug was that we could send "new" one or move moves *after* the
+first game started!
+
+* Fixed some handle leaks (WinBoard only), including a nasty one that
+leaked one handle per command sent to ICS.  Thanks to several folks
+who helped characterize the bug and tried to look for leaks.
+
+* We now install and look for the info file in ${prefix}/share/info
+instead of ${prefix}/info.  The latter is still the default in
+autoconf, but the former is currently used in Red Hat Linux and
+probably elsewhere.
+
+xboard/WinBoard 4.2.5 -- Sat Dec 15 11:42:51 PST 2001
+Tim Mann
+
+* Changed the bundled GNU Chess 5.02 in the WinBoard package to
+include a much smaller book and to use much less hash table space by
+default (8 MB transposition table, 0.5 MB pawn evaluation table).  The
+large book included with 4.2.4 made the WinBoard download too big for
+some people, and the default hash tables were larger than the
+available physical memory on some people's computers. I built the
+small book by running Crafty's "small.zip" book line collection
+through a Perl script that makes it look enough like real PGN games
+that the GNU Chess book builder will accept it.  The script and some
+minor patches to GNU Chess 5 are available in the WinBoard source
+distribution and at http://www.tim-mann.org/gnuchess.html.
+
+* Fixed a bug in the code that deals with engines that complain that
+"time" and "otim" are illegal moves.  This was a new bug in 4.2.4.
+
+* Revamped the implementation of ToStart in analysis mode.  Formerly
+there was some ill-conceived code that would try to get back to the
+start of the game by doing a "new" command (and all the followup
+commands that requires) while remaining in analysis mode.  This is
+problematic for engine authors to support, though it works with
+Crafty.  This code was trying to solve the problem of ToStart being
+slow because the engine would try to start an analysis after every
+"undo" command all the way back to the start.  But ToEnd already had a
+much better solution to this problem, and now ToStart does the same
+thing: we exit from analysis mode and enter force mode instead,
+make/unmake moves to get to the end/start of the game, and then
+reenter analysis mode.
+
+* Formerly, Zippy could try to start playing a game before the engine
+was initialized; that is, during the initial timeout for protover 1
+engines, or before "feature done=1" for protover 2 engines.  We now
+wait until the engine is initialized before connecting to ICS, which
+fixes this in the common case.  If you turn off engine reuse for
+multiple games (that is, if you give the -xreuse option), there could
+still be problems; see item 503 in the ToDo file.  Thanks to Dieter
+Buerssner for the bug report.
+
+* Bugfix: All WinBoard versions since the merge with WinBoard Plus
+(but not xboard) have had a bug in changing the PeriodicUpdates,
+PonderNextMove, and ShowThinking options from the menu.  The bug
+mostly just caused changing these options during a game to not take
+effect until after the next reset.  For TwoMachines games, though,
+changing PonderNextMove just before the game would take effect
+immediately for the second engine but not until the next game for the
+first engine.  Thanks to Koundinya Veluri for the bug report.
+
+* Bugfix: In 4.2.4, we sometimes got confused when trying to leave and
+reenter analyze mode.  One symptom was that Analyze File did not work.
+Thanks to Igor Syry for the bug report.
+
+xboard/WinBoard 4.2.4 -- Sun Dec  9 14:56:30 PST 2001
+Tim Mann
+       
+* WinBoard now includes GNU Chess 5.02 in place of GNU Chess 5.00.
+
+* WinBoard's PasteGameFromClipboard will now handle a paste with
+multiple games in it, popping up the game list dialog.  xboard
+already did this.  Suggested by Robert Gerstman.
+
+* We now use the "clearboard" command on ICC where appropriate.
+
+* Bugfix: don't generate a bogus "variant normal" command to an engine
+for the loadable ICC wild types that we internally flag as
+VariantLoadable.  Also clarified the message that Zippy sends when
+declining such wild games -- it can't deal with the possibility of
+loading an arbitrary position into the game.  Thanks to Dieter
+Buerssner for reporting the problem.  It would be nice to be able to
+actually play these wild types some day; presumably there would have
+to be an option to either send "loadgame" with a specified position,
+or to deal with an opponent sending it.
+
+* If we get a holdings message from ICS when we thought we were
+playing normal chess, we now try asking for a move list so that we can
+find out from the header what's really happening.  Formerly we guessed
+bughouse in this case.  Response to a comment from Gian-Carlo
+Pascutto.
+
+* Fixed two longstanding bugs in the clock code.  These affected only
+play between a user and a local engine, or between two local engines,
+not ICS play.  (1) The last fractional second used by a player before
+moving and virtually pushing his clock was being charged to his
+opponent instead of to him.  (2) The time and otim commands were being
+sent to an engine before the (buggy) fractional second update was
+done.  The second bug was pretty harmless in itself, but the first one
+was serious.  Many thanks to Peter Rosendahl for carefully diagnosing
+and reporting these bugs!
+
+* Changed WinBoard timestamp key.  Nothing is changed other than the
+key and a recompilation.  ICC may phase out the old key soon; if they
+do, you'll need to use the timestamp.exe from WinBoard 4.2.4 or later
+to connect to chessclub.com.
+
+* Fixed an xboard-only bug where most dialogs would not take keyboard
+input unless the mouse was actually over the dialog, even if the
+dialog window had focus.  Thanks to Jason Varsoke for the bug report.
+
+* Bugfix; Remember to send time and otim commands to engine before
+sending playother.  Thanks to Bob Hyatt for the bug report.  Also
+fixed a bug where time and otim were sometimes sent even with feature
+time=0.
+
+* Added small patches from Wilkin Ng that are meant to fix a crash in
+CopyGameToClipboard and a "can't unlock clipboard memory" error in
+PasteTextFromClipboard, under Windows 2000.
+
+* Changed cygwin.mak to not use -mno-cygwin.  In other words, it now
+uses cygwin1.dll instead of the mingw libraries.  This works around
+bugs in fileno() and stat() that I encountered in mingw.  (fileno
+seems to always return 0.  stat fails because the library routine uses
+a different definition of struct stat than the header files provide.)
+Thanks to Robert Gerstman for reporting the symptoms these bugs caused
+when WinBoard was compiled with Cygwin.
+
+* Added -showButtonBar option.  This lets you delete the << < P > >>
+buttons and thus widen the message widget a bit.
+
+* Added code to address a very obscure bug.  If an engine dies and
+needs to be restarted while in one of the analyze modes, it was not
+getting put back into analyze mode.  This bug should not really ever
+have gotten tickled unless reuse was turned off and the engine sends
+game end commands (such as 1-0) when a game ends by rule while in
+analyze mode.  The next version of the protocol spec will say that
+engines should not do that, but version 2 and earlier didn't address
+the issue.
+
+* We now use the FICS "iset ms 1" feature to get times in ms instead
+of seconds.  Thanks to DAV for email telling me about this feature.
+
+* Changed clock display to show tenths of seconds for 9.9 seconds and
+less, instead of 0.9 seconds and less as before.
+
+* It has been discovered that Zippy can play simuls on ICC (but not on
+FICS).  If you arrange for Zippy to send the ICC command "simulize" in
+the -zippyGameStart string, it will accept additional games while
+playing.  Zippy will use the same engine for every game, so whenever
+it switches opponents, the engine's state will be reset with the "new"
+command.  This will of course weaken its play, so don't enable simuls
+if you want your engine to have the highest possible rating.  Zippy
+was never designed to work with simuls; it just works by accident, and
+it hasn't been tested much.  So please report any bugs you notice, but
+don't expect them to be fixed rapidly.  Thanks to Paul McGuire for
+noticing that this works.
+       
+* Bugfix: Suppress the direct command to engine popup if there is no
+engine.  In WinBoard this case used to cause a crash.  Thanks to
+"Dargon" for the bug report.
+
+* Bugfix: formerly we did part of the engine initialization for the
+very first game too soon, before feature negotiation.  One result of
+this is that engines would never get the "ics" command for the first
+game.
+
+* Lengthened timeout to detect protocol version 1 chess engines to 10
+seconds.  This should reduce problems with protocol version 2 engines
+that are slow to initialize missing the timeout and not getting a
+chance to send their feature commands before the first game starts.
+
+* Klaus Friedel says that adding a short sleep to WinBoard after
+starting a new chess engine solves a problem that occurs under Windows
+2000, in which engines sometimes don't see the initial command(s) from
+WinBoard and hang.  I don't understand how that can happen, but the
+sleep is harmless, so I've put it in.  Others have also reported what
+may be the same problem, so hopefully this will fix it for them too.
+
+* Bugfix: editing the Result field in EditTags will no longer cause a
+later crash.  Thanks to DAV for a clear bug report that let me
+reproduce the problem.
+
+* ICC wild 28 is now recognized as shatranj, but it is not supported.
+You might be able to play it by turning off Test Legality.
+
+* Formerly we would always turn off "feature time" if the engine
+printed an error message with the string "time" or "otim" in it; now
+we do that only if the message comes before the engine makes its first
+move.  This change is useful because some engines spew a lot of bogus
+error messages about commands they don't fully parse, so something
+like "result 0-1 {White lost on time}" could generate such a message.
+Engines shouldn't do that, but if they do, mysteriously turning off
+"feature time" is not a good way to react.
+
+* Fixed an infrequently occurring Zippy bug: formerly, resuming from
+adjournment by position (that is, with GetMoveList turned off) or
+starting/resuming a wild game (nonstandard starting position) would
+try to set up the position without putting the engine into force mode
+first.  That was probably tolerated by most engines, but if the
+position was black-to-play and the engine hadn't set feature
+setboard=1, then the fake "a2a3" move (which we use as a kludge to get
+black to be on move before sending the edit command) would appear to
+be a real move, and the engine might reply to it!  This bug could also
+be seen when trying to use Zippy to play a simul -- something that
+Zippy was never designed to support, but which seems to mostly work
+anyway.  Thanks to Paul McGuire for sending a WinBoard.debug file that
+showed the bug occurring.  Some other cases of resuming adjournments
+or starting games from nonstandard positions may have been broken too;
+I think I've straightened out the problems.
+
+* Agreeing to a draw in the human vs. local engine case formerly did
+not work if the human offered first; now it does.  A human's
+unsolicited offer is considered valid until he makes another move.
+Thanks to Bruce Moreland for the bug report.
+
+* Bugfix: We used to look for just "fr" in Event tags or strings from
+ICSes to recognize Fischer Random games.  This caused a lot of false
+matches.  Now we look for "wild/fr" instead, which is what FICS uses.
+
+* Bugfix: Clicking on a move in the MoveList window only updated the
+displayed position; if a chess engine was active, its state was not
+updated.  Thanks to Alejandro Dubrovsky for the bug report.
+       
+* Bugfix: The "resign" command from engine to xboard formerly did not
+work in ICS (Zippy) mode.
+
+* Bugfix: Formerly we would register a garbage premove if the user
+clicked on a piece, then clicked on an edge or outside the board.  Now
+such an errant click is ignored.
+
+* Bugfix: GameEnds would send "exit" to an engine in analyze mode even
+if we did not actually want to leave analyze mode.
+
+* Bugfix: "feature pause" was being rejected.  We don't currently use
+it, but that is no reason to reject it.  Thanks to Gian-Carlo Pascutto
+for the bug report.
+
+* Bugfix: when "partner" needed to be sent both to ICS and the engine,
+Zippy was erroneously sending the ICS prefix character to the engine
+too.  Thanks to Gian-Carlo Pascutto for the bug report.
+
+* Zippy now declines challenges when the engine is not yet ready to
+play again, instead of ignoring them.  This is needed so that the
+server will let the opponent repeat the challenge.  It might be better
+to remember such challenges and accept them when the engine is ready,
+but that would be a bit more complicated to implement.
+
+* Bugfix: Zippy's emotes didn't work on FICS because there, "i" is a
+built-in alias for "it", not a real command.  So sending "$i foo" gave
+an error message instead of doing "it foo".  We now leave out the
+alias-suppressing prefix for emotes.
+
+xboard/WinBoard 4.2.3 -- Mon Feb 19 19:55:05 PST 2001
+Tim Mann
+
+* Bugfix: The error message "Variant X not supported by gnuchessx"
+formerly could pop up even in -ncp mode.
+
+* Fixed an xboard bug in premove highlighting.  If you had
+HighlightLastMove turned on, premoves got highlighted in
+highlightSquareColor (yellow) instead of premoveHighlightColor (red).
+
+* Modified premove again.  Now we are back to displaying the move
+locally immediately after sending it to the server, as in versions
+prior to 4.2.1.  This is good because it lets you register your next
+premove sooner.  As a better fix to the problem that the change in
+4.2.1 had been trying to address, we now suppress animating the
+opponent's move if you have a premove reply pending.  However, it's
+probably still a good idea for you to turn off AnimateMoves entirely
+if you are trying to play extremely fast games.
+       
+* Removed an erroneous patch that left zombie chess engines around
+when both sigterm and reuse were turned off.  (Bug was in xboard only,
+not winboard.)
+
+* Bugfix: loading a game with autostepping did not work for games with
+PGN result "*" (unfinished).  This bug was introduced in 4.1.0, caused
+by some outdated code that was supposed to leave you in EditGame mode
+after loading an unfinished game.  I fixed this, and also changed it
+to leave you in EditGame mode after loading *any* game, but without
+changing the tags to say it's an edited game.  It's not really clear
+whether that is the best thing is to do here -- ideally, perhaps, the
+tags should change to say "edited game" if you actually make any
+changes, but that is harder to make work.
+
+xboard/WinBoard 4.2.2 -- Tue Feb  6 20:00:00 PST 2001
+Tim Mann
+
+* Fixed a problem introduced in 4.2.1.  In -zippyPlay mode, 4.2.1
+started sending the initString immediately after the old game ended,
+but then when the next game started, it would still send "force" and
+another initString.  Another problem was that the first initString put
+the engine out of sync with the displayed board position, though that
+might not usually have been noticeable.  This is now changed to do a
+full Reset at the end of the previous game, and avoid doing a Reset at
+the start of a new game if we are still in BeginningOfGame mode.
+
+* Fixed some limitations in -zippyPlay mode.  The engine was not being
+fed the moves or history of games that were displayed but not being
+played, so it would get confused if you tried to do something like
+examine a game, then enter EditGame mode from somewhere in the middle
+of the game.
+
+* Made a small change so that cygwin can compile xboard for Windows
+(an X server is required to run it).  Thanks to Volker Zell.  Most
+people would probably prefer to run WinBoard on Windows, however; note
+that cygwin could already compile WinBoard.
+
+* Added some missing documentation to engine-intf.html: It is okay to
+send "feature done=0" even before you receive the xboard and protover
+commands, if this is needed to give your engine enough time to
+initialize.  See engine-intf.html for more discussion.
+
+* Bugfix: "feature done=0" did not work for the second engine; now it does.
+
+xboard/WinBoard 4.2.1 -- Sat Feb  3 19:52:26 PST 2001
+Tim Mann
+
+* Bugfix: in Zippy mode with feature san=1, the elapsed time was being
+sent to the engine after the SAN move; for example, "e4 (0:01)" was
+sent instead of just "e4".
+
+* It seems that scroll wheel mice with incompletely installed software
+(under Windows 95, at least) can send repeated middle button up events
+when the wheel is turned.  Moved QuickPaste from middle button up to
+middle button down to avoid problems with this.
+
+* A premove is now sent *before* the opponent's move that it replies
+to is animated.  The premove itself is no longer displayed (or
+animated) when sent; instead, it is displayed when the chess server
+echoes it back as a board update.
+
+* Bug fix: in -xreuse mode, xboard was only sending command line
+arguments to the engine the first time it was started.  (WinBoard
+didn't have this bug.)
+
+* In -zippyPlay mode, we now initialize the chess engine for a new
+game immediately after the old game ends.  (In -xreuse mode, this
+means starting a new engine process; in the default -reuse mode, it
+just means sending "new".)  If the engine supports ping, we don't
+accept challenges until the "new" has finished.  This should help
+avoid losing time (re)initializing the engine after the game starts.
+
+* We now handle the new FICS field in style 12 that says whether the
+clocks are ticking.
+
+* whiteFlag and blackFlag are now reset whenever an ICS board image
+arrives, giving autoflag a fresh chance to work.
+
+* Suppressed "geometry error" debug messages unless -debug flag is given.
+
+* Bugfix: avoid core dump on Solaris with -debug flag, caused by
+passing NULL to a %s format in GameEnds.
+
+* Added -firstProtocolVersion and -secondProtocolVersion.  This will
+allow use of extremely broken engines that hang or die when given the
+"protover 2" command.  It should be rarely if ever needed.
+
+* Zippy now strips highlights from player names in the Creating
+message; previously the ratings would not be extracted from this
+message properly if you had set the highlight variable.
+
+* Bug fix: Zippy with -zp but not -zt used to be fooled by false
+partner tells inside channel tells; e.g.: 
+Garf(24): Garf (your partner) tells you: sit
+
+* Bug fix: when an engine reported its name with the new "feature
+myname=" command, we had been putting just that name into the window
+title even when in TwoMachines mode.
+
+* By default, WinBoard no longer uses the new feature introduced in
+4.2.0beta of keeping the ICS menu, ICS server list, and lists of chess
+engine command lines in separate files; instead, the lists are back in
+the winboard.ini file.  This gets rid of some problems where the
+separate files could not be opened because the working directory was
+not set to WinBoard's installation directory.
+
+* WinBoard command lines and ini files now have another optional
+syntax for quoting an option value.  All characters within { } curly
+braces are interpreted literally except for '}' itself.  SaveSettings
+now uses this syntax for string values that contain a backslash or
+newline and do not contain a '}'.  This should address the problem
+that the separate .ini files had been meant to fix; engine command
+line lists can now be written without \-escapes.
+       
+* Fixed three bugs in relaying moves between engines in TwoMachines
+mode: an engine would be sent SAN if the *other* engine had set
+feature san=1, a relayed SAN move did not end with a newline, and
+feature usermove was not implemented for relayed moves.
+
+* Fixed several bugs in exiting: File/Exit would sometimes hang;
+timestamp/timeseal would not get killed off; an engine crash would
+cause error messages to be printed recursively until stack overflow.
+
+* Fixed a bug in the code to detect which ICS is in use and adapt to
+it; the chess.net case was broken.
+
+* Removed the leading alias-suppression character when sending a move
+to ICS, because it seemed to break accuclock on chess.net.
+
+* Fixed a bug where a FICS prompt like "10:01_fics%" would be matched
+as finger note number 10, causing a problem detecting when the user is
+logged in.
+
+* Added tellicsnoalias command to protocol.
+
+* Changed st command in protocol back to old behavior.
+
+* Added done=0 feature to protocol, to lengthen initial timeout.
+
+* Added missing -colorSeek command line option to xboard.  (Was
+present in WinBoard.)
+
+* Bug fix: setting feature reuse=0 was not working.
+
+xboard/WinBoard 4.2.0beta -- Sat Dec 16 16:34:56 PST 2000
+Tim Mann
+
+* Setting -searchTime no longer turns off -clockMode.  Note that when
+-searchTime is set, some engines may search for the lesser of
+searchTime and the amount of time their normal clock management would
+dictate, while others will disable their normal clock management and
+always search for exactly searchTime.
+
+* Fixed WinBoard bug where on Windows 2000 (and maybe Windows 98) the
+ICS Interaction window would scroll back to the top whenever it filled
+to capacity and WinBoard trimmed some text off the top.
+
+* Changed xboard dragging so that the center of the dragged piece is
+forced to be over the mouse cursor.  (WinBoard dragging already worked
+that way.)  This should avoid confusing cases when you start a drag
+with the mouse near the edge of a square -- formerly most or all of
+the piece could be over one square but the mouse cursor over another.
+Suggested by DAV.
+
+* Added move list window for xboard.  Code contributed by Manuel
+Hoelss and re-hacked a bit by me.  Performance of this window is poor,
+because the implementation regenerates the entire window contents
+whenever anything changes.  It's hard to avoid this when using the
+Athena List widget, though we could be a little smarter and notice
+when the current move number has changed but the move list has not.
+There are also several drawing problems caused by bugs in the Athena
+Form and List widgets.  The window should not really allow a
+horizontal scroll bar, but the bugs are much worse if I turn it off.
+In both Xaw and Xaw3d, the List widget tries to resize itself when
+XawListChange is called, even if you tell it not to; and what's worse,
+if the widget cannot resize itself to be large enough to avoid
+clipping any of the list item, it does not change the list!  Arrgh.
+On top of that, the Xaw Form widget is very buggy in XFree86 4.0.1
+(X11R6.4.3).
+
+* The OK button in the WinBoard startup dialog is now simply disabled
+if none of the radio buttons is selected, instead of bringing up an
+error dialog.  Suggested by Ted Milbaugh.
+       
+* Used ping to address the worst of the race conditions in the
+protocol.  Now if an engine supports ping, we ping it after sending
+the "new" command and after trying to place it in force mode at the
+end of a game.  When a ping has been sent and the corresponding pong
+has not yet come back, we (1) ignore or undo any moves the engine
+sends, (2) ignore game end messages (such as "offer draw", etc.) from
+the engine, (3) ignore thinking output from the engine, (4) delay
+starting the next game if in -matchGames mode, (5) in -zippyPlay mode,
+respond to challenges with a polite message to try again soon instead
+of accepting them.  There are a few more things that should be done
+(and item 5 might not be quite what we want), but it's hard to fit
+them all into the existing code.
+       
+* Patched the version of GNU Chess 5.00 included with WinBoard to
+support protover, feature, setboard, and ping, and to fix some minor
+bugs.  See gnu500+.patch.
+
+* Changed the GNU Chess 4 kludges for missing "st" and "sd" commands
+to be invoked only if the engine gives an error message for "st" or
+"sd", and to always use protocol commands instead of engine
+command-line options.  See "Idioms" in engine-intf.html.
+
+* Added new protocol command "protover 2" to tell the engine what
+version of the protocol is in use.  Version 2 is still compatible with
+old engines; see engine-intf.html.
+
+* Add new protocol command "feature ..."  The engine can send this in
+response to the protover command command, to say what extended
+protocol features it would like to enable, etc.  xboard responds
+"accepted F" or "rejected F" for each feature F that is set.  See
+engine-intf.html.
+
+* Added new protocol command "setboard <fen>".  This is an alternative
+to "edit", used only if the engine says "feature setboard=1".
+
+* Added new protocol command "ping <msg>".  The engine is supposed to
+respond "pong <msg>".  This gives us a tool to fix some race
+conditions in the protocol, but it is not used to the fullest yet.
+
+* Added new protocol command "tellopponent".  This will do a "say" if
+you're on a chess server in Zippy mode, or pop up an information
+dialog otherwise.
+
+* Added new protocol command "tellall".  This will do a "kibitz" if
+you're on a chess server in Zippy mode, or pop up an information
+dialog otherwise.
+
+* Added new protocol command "tellothers".  This will do a "whisper" if
+you're on a chess server in Zippy mode, or do nothing otherwise.
+
+* Changed the WinBoard /icsNames, /icsMenu, /firstChessProgramNames,
+and /secondChessProgramNames options to accept a filename preceded by
+"@", meaning to find the value in the file.  Changed the defaults to
+use this feature, with filenames icsnames.ini, icsmenu.ini, fcp.ini,
+and scp.ini.  This should make it easier for users to edit the values,
+since one less level of quoting is needed, and each value is in its
+own file, not mixed into winboard.ini.  Those who upgrade from an
+older winboard version and already have a winboard.ini file will not
+automatically have these values moved to a file; that has to be done
+by hand if desired.
+
+* We now strip .exe from engine names for "name" command, tags, etc.
+
+* Allowed WinBoard input widget to hold more than one line.  You can get
+a newline into the widget with copy/paste or with Ctrl+Enter.
+
+* Fixed an xboard bug where the [P] button would appear in the
+opposite highlight state from what it should be after being pressed.
+
+* We now use the "/" or "$" alias suppression feature on the chess
+servers, to avoid problems if the user inadvertently aliases a
+needed command to something else.
+
+* Changed the method used to deiconize xboard in AutoRaise and cmail.
+This may fix bugs under some window managers where after
+deiconization, the board window was mapped but nothing was drawn
+inside.
+
+* Preliminary, partial support for playing several chess variants
+against a local engine or editing variant games.  The -variant option
+must be given on the command line or WinBoard startup dialog; there is
+no menu.  The current variant is not displayed (except in the
+Tags/EditTags window).  Many variants will not work quite right even
+if the engine supports them; see item 326 in the ToDo file for
+details.
+
+* Added a workaround to detect the variant type when examining a
+scratch wild game on an ICS.
+
+* Fixed two cases where "variant" command should be sent to the engine
+when necessary but was not: loading a game from a file and restarting
+a dead engine.  Thanks to Gian-Carlo Pascutto.
+
+* Added missing support for FICS games that start from a bsetup position
+with Black moving first.
+
+* Fixed a bug in loading a file from the game list window while in
+Analysis or AnalyzeFile mode.  This now leaves us in AnalyzeFile
+mode, analyzing the new file.
+
+* Fixed a bug in loading games with a comment before the first move.
+
+* Fixed a bug in handling LoadGame (or -lgf) with -td 0.
+
+* Added a command line option to select an initial minor mode from the
+Mode menu.  This should satisfy requests from a couple of users with
+special applications.
+
+* Fixed a problem where some things in WinBoard's General Options
+dialog box were grayed out at the wrong time.
+
+* We look for a few messages from the chess engine pipe that are
+intended to catch problems starting an engine via rsh, such as "No
+such file".  Moved code so that these strings won't match until other
+protocol messages have been looked for, and documented the messages in
+engine-intf.html.
+
+* Fixed the WinBoard bug that sometimes made the console input box
+white-on-white even when not in password-entry mode.
+
+* Small changes to WinBoard to be compilable with the latest Cygwin
+net release (as of 10-16-2000).  Thanks to Mark Schoenberg.
+
+* Recompiled GNU Chess 5.0 for WinBoard with the latest Cygwin net
+release (as of 10-16-2000).  Also rebuilt the book just to be sure,
+since I had one bug report about it.  It came out identical and seems
+to work fine.
+
+* Added messages for some common InstallShield errors instead of just
+printing InstallShield's stupid error code numbers.
+
+* Added -firstComputerString and -secondComputerString, allowing you
+to suppress or change the command that is sent to a chess engine when
+its opponent is another computer.
+
+* Added "configure --with-Xaw3d" to allow use of Xaw3d widgets instead
+of Xaw widgets in xboard.  Thanks to Johnny C. Lam of the NetBSD
+project.  I've left Xaw as the default because Xaw3d is too ugly.
+       
+* The version of the Xaw Form widget released in XFree86 4.0.1
+(X11R6.4.3) has a bug that causes xboard to display the button bar
+on top of the message widget.  I've reported the bug and have
+installed a kludge workaround into xboard.
+
+xboard/WinBoard 4.1.0 -- Sun Sep 17 17:30:14 PDT 2000
+Tim Mann
+
+* Merged Winboard Plus 4.0.8 from Mark Williams into xboard
+  source pool.  Status of Winboard Plus features in xboard:
+
+  - White pieces now have borders, but the implementation is
+    completely different from WinBoard's; see below.
+
+  - Options menu not changed, probably won't be.
+
+  - Copy&paste support working, using Mark's changes to backend.c, Ben
+    Nye's changes to xboard.c for FEN positions, and some code of my
+    own in xboard.c for PGN games.
+
+  - Premove hooked up and working.  No pre-first-move, though.
+
+  - ICS Alarm hooked up and working.
+
+  - Auto-flip working.
+
+  - PGN Training mode hooked up and working.
+
+  - Improved menu item enable/disable working.
+
+  - Improved >> button working.
+
+  - Auto activate board working.  I changed this to be optional; you
+    might not always want it, especially in Zippy mode.
+
+  - Blindfold working.
+
+  - Documentation updated.
+
+* Fixed more colorization bugs.  Commands like "message foo tells you:
+xxx" and "tell 33 tells you: xxx" will no longer generate bogus
+colorization.
+
+* Added low-tech sound support to xboard, by invoking an external
+program on a filename for each sound to be played.
+       
+* ICC wild 27 is now recognized as VariantAtomic, and it sets the
+"ignore check" flag, but is not otherwise supported.
+
+* Converted the piece bitmaps from .bm to .xpm for use with xboard's
+xpm support.  (An .xim version was not created.)  Wrote a shell script
+using ImageMagick to do the conversion and to bucket fill from
+coordinate 0,0 with the background color.  Used xpaint by hand to
+clean up a few pieces where background color "leaked" into the inside
+or didn't flow all the way around the outside, then a sed script to
+fix up color names and bitmap names in the xpaint output.  If any more
+sizes are added later, they should be straightforward to convert with
+reference to the existing scripts.  With this conversion, not only do
+the white pieces now have dark borders, but (unlike with WinBoard) the
+light details on the black pieces are opaque.
+
+* If the XPM library is found when building xboard, the new xpm pieces
+are compiled in as the default.  External bitmap (or xpm) pieces can
+still be used by giving the -bitmapDirectory (or -xpmDirectory)
+option.  If the XPM library is not found, the old bitmap pieces are
+the default.  In this case external bitmap (or xim) pieces can be used
+by giving the -bitmapDirectory (or -xpmDirectory) option.  There is no
+way to compile in xim pieces.
+
+Winboard Plus 4.0.8 -- Sat Aug 5 15:51 PDT 2000 
+Mark Williams
+
+* Bugfix release.
+
+* Main menu now visible in Win NT.  Thanks to Microsoft for creating a 
+compiler which auto-mutilates the WinBoard.rc file so that the menu is
+displayed under Win 98 but not Win NT.  I fixed the problem by hand editing the
+.rc file.  Sigh.
+
+* "Reset game" now works properly when invoked from Analysis mode when two
+engines are present. Correction of bug introduced in Winboard Plus. Thanks to
+Mogens Larsen for reporting the bug.
+
+* Pasting a FEN position with Black to move now works in all modes.
+Thanks to Mogens Larsen for reporting the bug.
+
+* Added gnuchess.dat to the distribution and a couple of text files that were
+missing in 4.0.7.
+
+*** Merged in the following changes from Tim Mann:
+
+* Bugfix: Highlights would sometimes not be taken down, at least in
+xboard.  The problem is that SetHighlight works in chess coordinates,
+not view coordinates, so if flipView has been toggled since the
+highlight was put up, it gets taken down from the wrong square.  Fixed
+by being careful to call ClearHighlights before toggling flipView, not
+after.  Ugh.
+
+* Bugfix: HighlightLastMove would sometimes highlight square a1 after
+a FICS "tomove black" command.
+
+* Bugfix: a move list with initial position that has black to play was
+not being handled correctly.
+
+* Removed "decline abort" and "decline adjourn" commands from Zippy.
+The syntax is changing on FICS, and Zippy really doesn't have to
+explicitly decline the requests anyway; it's sufficient to not accept
+them.
+
+* ICC wild 26 is now recognized as VariantSuicide (the FICS name; ICC
+calls it "giveaway").
+
+* Bugfix: PGN games with black to move in the initial position weren't
+being legality checked correctly.  I think this was introduced in
+4.0.6 when I fixed a different PGN bug.  Thanks to Mark Williams for
+spotting the bug and suggesting a fix.
+       
+* Bugfix: the initial "name(" of a kibitz wasn't being colorized.
+
+Winboard Plus 4.0.7 -- Thu May 12 17:57 PDT 2000 
+Mark Williams
+
+* New white pieces with black borders.
+
+* Major overhaul to Options menu. New dialogs for setting General Options,
+  Board Options, ICS Options, Sounds, Fonts, Colors.
+
+* Clipboard support for PGN game scores and FEN positions.
+
+* Optional ICS Premove with user-specified first moves for White and Black.
+
+* New sound events: ICS Win, ICS Loss, ICS Draw, ICS Unfinished, ICS Alarm.
+
+* New auto-flip option when playing against a chess program.
+
+* Added PGN Training mode.
+
+* Certain menu options now disabled while program is thinking.
+
+* ">>" button now always goes to the end of the game.
+
+* In ICS mode, the board is automatically activated at the start of a
+new game.
+
+4.0.7 -- Sun Mar  5 17:17:49 PST 2000  Tim Mann
+
+* Fixed a nasty bug in parsing ICS game histories that was introduced
+in 4.0.6.
+       
+4.0.6 -- Fri Mar  3 16:20:11 PST 2000  Tim Mann
+
+* Fixed bugs in Zippy's code for responding to messages sent with the
+ICS "message" command.
+       
+* Fixed bugs where xboard could still create dialogs partially off the
+top of the screen.  Fixed unwanted interactions between initial sizes
+and positions of various unrelated xboard dialogs.  Deleted
+borderXoffset and borderYoffset resources.
+
+* Fixed restoring the xterm name on exit to work in more cases.
+       
+* Small fix to the WinBoard self-extracting installer: when it starts
+up, it now always deletes any old wb-setup directory left over from a
+previous installation.  Formerly this worked only on Windows 95/98, so
+on NT the self-extractor would sometimes stop and ask the user whether
+it was OK to overwrite the old wb-setup files.
+
+* Modified WinBoard to be compilable with the free Cygwin tools
+available from http://sourceware.cygnus.com/cygwin/.  Based on work by
+Mark Schoenberg.  (His mods were enough to get WinBoard through the
+compiler, but a few things were broken along the way, so I reworked them.)
+       
+* Merged changes from Don Fong to make WinBoard compilable with
+Borland C++ 4.5.  I do not have Borland C++ and am unable to test with
+it, but I did make sure the changes don't stop it working with MSVC++
+5.0 and Cygwin.
+
+* Forbade entering TwoMachines mode from MachineWhite or MachineBlack
+mode when machine is on move.  This used to confuse the engine and
+cause problems, because when we try to get the engine to stop, it
+might make a move first, and it might not do that immediately.
+       
+* Variant classification now deals with new ICC wild 25, classifying
+it as "3check".  Also, we are now conservative about new wild numbers
+we don't know about, classifying them as "unknown" instead of
+"normal".
+
+* Replaced bad GNU Chess 5.00 book in WinBoard distribution with a
+correct one.  1.e4 now no longer takes GNU Chess 5.00 out of book!
+Thanks to Pete Galati.
+
+* Made move parser accept and ignore nonstandard ep suffix on PGN moves,
+e.g., "exf6ep" or "exf6e.p."
+
+* Fixed bugs in parsing PGN files starting with no move number, or
+with a move number other than "1." (including "1...").  Thanks to
+Michael Soulier and Stefan Zipproth for example PGN files
+demonstrating the bugs.
+       
+* Changed InitComboStringsFromString to not modify the input string;
+this caused an exception when WinBoard was compiled with MSVC++ 6.
+Thanks to Bert Tuyt for the report.
+
+* In WinBoard, dragging a piece off the edge of the board without
+releasing the mouse button no longer instantly aborts the move.  You
+still must release the mouse button inside a square to complete a
+move, but you can now drag off the edge and come back inside.
+       
+* WinBoard bugfix: If you went into EditGame or EditPosition mode
+while observing or playing an ICS game, and a new move came in
+(snapping you back to ICSClient mode) while you were dragging a piece
+around, the drag state would not be reset, causing the piece you were
+dragging to remain on the board wherever you dropped it.  Thanks to
+David Brinegar for the bug report.
+
+* WinBoard bugfix: If you moved or resized the board while your
+opponent was moving, and you had AnimateMoving on, his move would not
+be displayed until after your next move.  Thanks to DAV for reporting
+the bug repeatedly until I finally understood it.
+
+* Added a Zippy "farewell" feature; see zippy.README.
+       
+* Fixed a bug (xboard only) in processing -zippyReplayTimeout on the
+command line.  Thanks to Steve Beer for the report and patch.
+
+* Send "computer" command to both sides in TwoMachines matches.
+       
+* Fixed a Y2K bug in Evan's cmail code!  Thanks to Brian Mays for the
+report and patch.
+       
+* Bugfix: Initialize variant field of GameInfo struct in gameinfo.c.
+This could cause crashes in LoadGame.  Thanks to Andrzej Nagorko.
+       
+* Fixed several pattern matching problems: Finger notes and formula
+vars no longer get replied to by zippyTalk or colorized.  Channel
+tells by players with many titles are now colorized fully, and
+zippyTalk handles channel tells by such players correctly.  The shout
+"--> foo(99): bar" no longer gets colorized as a channel tell.  Code
+is cleaned up a bit, and autocomment capture now uses the same
+criteria as colorization.
+
+* xboard fix: Enter key now closes error popups as in WinBoard.
+Especially nice for the "Exiting: Connection closed by ICS" popup.
+
+4.0.5 -- Tue Dec  7 10:30:40 PST 1999  Tim Mann
+
+* Added missing documentation of SIGTERM usage into engine-intf.html.
+
+* Bugfix: New -zippyReplayTimeout option was misspelled in WinBoard as
+-zippyReplyTimeout.  Thanks to Francesco Di Tolla.
+       
+* xboard -ics now restores the xterm's original title upon exit, at
+least if $WINDOWID is set.
+
+* Bugfix: -matchGames mode wasn't terminating properly.  Final score
+popup would come up twice and engines would not be killed off.  Thanks
+to Frank Quisinsky for the bug report.  Bug was introduced in 4.0.4.
+
+* Bugfix: "tell 50 foo shouts: bar" no longer gets colored as a shout;
+similarly for "...s-shouts:" and "...c-shouts:".  Thanks to David Lee
+for the bug report.
+
+4.0.4 -- Fri Dec  3 17:51:27 PST 1999  Tim Mann
+
+* Bug fix: formerly if you invoked SaveGame from EditPosition mode
+with black to play, the position was not saved properly.  As a quick
+fix, SaveGame now takes you out of EditPosition mode before saving.
+
+* Changed -matchGames to keep track of the score (won-lost-drawn) and
+display it in the banner.  The final score is displayed in a modal
+popup before the program exits.
+
+* Changed "Connection closed by ICS" to display in a model popup
+before the program exits.
+
+* Added -popupExitMessage option, default on.  Setting this to false
+suppresses the modal popups that you sometimes get just before
+xboard/winboard exits -- both the two new ones listed above and the
+existing Fatal Error popup.  This is useful when running Zippy
+unattended from a shell script (or .bat file) that loops and starts a
+new copy after a time delay when there is an error.
+
+* In xboard, added missing support for WM_DELETE_WINDOW to all
+windows.  This makes xboard a better citizen, and is much needed with
+the newer X window managers that put an [X] button on every window and
+bind it to "kill application" if the applicationd does not support
+"delete window".  We can't allow xboard to be thoughtlessly killed,
+since that leaves the chess engine running in the background.
+
+* We now avoid positioning tops of xboard dialog boxes offscreen.
+
+* zippy.lines can now use the caret ('^') character as an inter-saying
+separator. You no longer need to dig up a text editor that can put NUL
+('\000') characters in text files.
+
+* Bugfix: In traditional chess clock mode, White now gets time added
+to its clock as soon as it makes time control.  Previously both White
+and Black got their time added only when Black made time control,
+which would cause some engines to make their 41st move as White too
+quickly, thinking they were low on time.
+
+* The zippyAcceptOnly feature no longer sends a decline command or
+a tell.  Thus you can use it to put Zippy into a manual accept mode.
+
+* Bugfix: "tell 50 foo tells you: bar" no longer gets colored as a
+personal tell; similarly for "...whispers:" and "...kibitzes:".
+
+* WinBoard no longer blanks the message line when you start a new
+move, unless there was an error message there from the previous move.
+
+* WinBoard now never puts the white piece drop menu on the middle
+mouse button.  Both colors are always on the right button.  Windows
+users often don't think to look for a middle button menu, or don't
+really have a working middle button despite what Windows says.
+
+* Guest login handles on ICC are now parsed again; an ICC wording
+change had broken this feature.
+       
+* Autodetect when the engine does not support the "draw" command and
+don't relay the command to it in that case.  Needed because sending an
+unsupported command to GNU Chess makes it move immediately, so people
+could make Zippy move without thinking by continually offering a draw.
+Thanks to Frank Walker for the problem report.
+
+* Small changes based on code from Robert Jurjevic: The WinBoard
+analysis window can be minimized (though not to the taskbar).  The
+WinBoard ICS Interaction window will autoscroll if you drag the mouse
+above or below the window while selecting, and password entry mode
+leaves the entry line as the background color instead of using 75%
+gray.  Seeks are now colorized with a new color of their own.
+
+* Added -zippyMaxGames feature.
+       
+* -zippyNoplayCrafty command line option was missing in xboard; fixed.
+Thanks to John Perry.
+
+* Fixed bug in detecting when Zippy loses his bughouse partner.
+Thanks to Ben Dean-Kawamura.
+
+* allobs fix in 4.0.3 didn't work; corrected it.
+
+* WinBoard will now update the board immediately if a move is made
+while the window is being moved or resized.
+       
+4.0.3 -- Sun Aug 15 18:44:39 PDT 1999  Tim Mann
+
+* Bugfix: moved winboard wizard functions that send a command directly
+to the chess engine from Ctrl+Alt+1 and Ctrl+Alt+2 to Alt+1 and Alt+2.
+Ctrl+Alt is equivalent to the European AltGr key, so the old assignments
+conflicted with typing an @-sign on some keyboards.
+       
+* Bugfix: prevent "If this message stays up, your chess program does
+not support analysis" from appearing if AnalysisMode is selected when
+already in Analysis or AnalyzeFile mode.  Also, deleting analysis window
+in WinBoard now switches you to EditGame mode, to avoid the anomaly of
+being in an analysis mode with no analysis window present.
+       
+* Change all Zippy environment variables to work as command line
+options.  For now they still work as environment variables too, but
+the environment variables are deprecated.
+
+* Use unsigned long to hold node counts from engines.
+
+* Print error instead of crashing on attempts to use xpm or xim pieces
+in monochrome mode.  Thanks to Jim Torrance for the bug report.
+
+* Tightened pattern recognition for ICS messages sent to Zippy; should
+no longer match ICC allobs output.  Fixed recognition of when Zippy is
+sent a message; small change to FICS output had broken it.
+       
+* Zippy now exits if the engine dies unexpectedly.
+
+* Added Zippy "spoofedby" feature; see zippy.README.
+       
+* Narrowed the margins on some older WinBoard dialogs to make their
+style uniform with the newer ones.
+
+* Bugfix: Changing Ponder Next Move from the Options menu did not take
+effect until the next game.  This bug was in WinBoard only.  Thanks to
+Stefan Zipproth for the bug report.
+
+* Got rid of "Internal error: bad move type" message when the engine
+makes a move that we can parse but think is illegal.  Now the move is
+just passed on (which also may be the wrong thing to do).
+
+4.0.2 -- Thu Feb 25 19:55:32 PST 1999  Tim Mann
+
+* Added one more built-in sound choice to WinBoard: move.wav from Pete
+Galati.
+       
+* Added new larger piece sizes: big, huge, giant, colossal, titanic.
+       
+* Modified the xboard font searcher to be able to use scalable fonts.
+The new -fontSizeTolerance flag controls how closely a nonscalable
+font must match to be used in preference to a scalable font.
+       
+* Zippy environment variables ZIPPYABORT and ZIPPYADJOURN now control
+whether Zippy will accept abort and adjourn requests.
+
+* We now determine the variant type being played on ICS, send it as a
+command "variant VARTYPE" to the chess engine (if in Zippy mode), and
+put it in the PGN tags.  See engine-intf.txt for variant names.  See
+ZIPPYVARIANTS in zippy.README to control what variants Zippy will
+accept.  Note that this now applies to bughouse, too.
+
+* Zippy now won't do -zippyTalk in a channel unless his handle is
+mentioned there.
+
+* Zippy now ignores bughouse holdings if not actually playing, instead
+of stupidly trying to abort the game.  Let me know if other strange
+things happen when Zippy is observing a game.
+
+* Set ICS Interaction title bar to "user@server".  User name is
+determined by parsing message during the login sequence.  Zippy now
+uses this method to get its name too, so ZIPPYNAME is eliminated.
+Problem: with xboard, the title bar gets set to "xterm" upon exit,
+since we didn't know what it was to start with.
+
+* Fixed xboard-only bug in -colorChannel1 command line option.  Thanks
+to Fredrik Sandstrom for the bug report and fix.
+
+* Check for overflow of MAX_MOVES.  Still not sure this is checked for
+everywhere it needs to be.
+
+* Added .epd to suffixes recognized by WinBoard as position files.
+This is a bit of a kludge, as the .fen reading code was not written
+with .epd files in mind, but reading them with it is said to work.
+
+* Added ZIPPYGAMESTART feature, suggested by Jason Hoblit.  See
+zippy.README.
+
+* Restored the feature of soaking up the moves from a user-typed "moves",
+"oldmoves", or "smoves" ICS command when xboard/WinBoard is idle, but
+changed it so that the move list is also echoed to the screen.  Some folks
+still liked the old feature since it is faster than examine mode, and
+printing the moves to the screen should eliminate the confusion it caused
+for other people.
+
+* Bugfix: in WinBoard, starting a click-click move and then clicking on
+a black line would cause the source square to be forgotten without taking
+the highlight down.  Now the errant click is ignored.
+
+* Corrected shortcut key labels for LoadNext/PrevPosition in WinBoard's
+File menu.  Thanks to Andreas Stabel for the bug report.
+
+* Bugfix: if you had a completely full ICS context menu in WinBoard
+(90 items), the last one would do nothing if selected.
+
+* The "computer" engine command added in 4.0.1 was not working; I had
+left out part of the code patch.  Oops.
+
+4.0.1 -- Fri Feb 12 21:24:15 PST 1999  Tim Mann
+
+This is a minor bugfix release.  The first item listed below is the
+only interesting new feature.
+
+* You can now type in moves from the keyboard in WinBoard.  Either
+select TypeInMove from Step menu, or (if you are not in ICS mode),
+just start typing.  In ICS mode you can type moves into the ICS
+interaction window anyway, so I've retained the feature that typing
+switches you there.  Not implemented in xboard.
+
+* Removed the "noise 1000" command that used to be sent to the chess
+engine when entering analysis modes.
+
+* Deleted the feature where we soak up the output of a user-typed ICS
+"moves" or "oldmoves" command.  This ancient feature is not really
+useful anymore, now that "examine" exists, and it caused a lot of
+complaints.
+
+* Increased maximum size of ICS text menu to 90 entries and added
+overflow checking.
+
+* The command sent to ICS by Zippy at the end of each game can now be
+customized with the ZIPPYGAMEEND environment variable.
+
+* We treat xboard.info as a pseudo-source since most people don't have
+the tools to rebuild it.  But "make install" erroneously had a
+dependency on it, even though "make all" did not.  Fixed.
+
+* Miscellaneous minor updates and clarifications to engine-intf.txt.
+In particular, documented the st and sd commands (support for command
+line options -searchTime and -searchDepth), warts and all.
+
+* Added a small code patch from Bob Hyatt to detect when Zippy's ICS
+opponent is a computer and send the command "computer" to the engine.
+Added this command to engine-intf.txt.  Thanks, Bob.
+
+* Bugfix: configure was looking for usleep(), but config.h.in didn't
+have an entry for it, so HAVE_USLEEP was never defined.  Also, in the
+non-HAVE_USLEEP case, there was a possible race condition between the
+signal handler and the pause() call.  Thanks to Ben Dean-Kawamura for
+the bug reports.
+
+* Bugfix: a "1..." preceding Black's first move (usually present if
+there is a comment on White's first move) would cause the parser
+to think a new game started there and report "End of game" on the
+current game.  Thanks to Dell Garner for the bug report.
+
+* Changed the abbreviation for -searchDepth from -sd to -depth to fix
+a clash with -secondDirectory.
+
+* Changed -searchDepth to be orthogonal to the various timing options.
+Previously it would search for an unlimited time to the given depth;
+now the engine is allowed to choose its search time in the normal way,
+but is told to cut off the search early if it reaches the given depth.
+
+* Bugfix: SaveSettings in WinBoard was saving both the long form
+option highlightSquareColor and its abbreviation (hsc).
+
+* Fixed a redisplay bug in DisplayBothClocks that could cause White's
+clock to be highlighted in EditPosition mode when Black's should have been.
+
+* Fixed Zippy's feature of passing on draw offers from the ICS opponent.
+The colorization code was eating the offer before Zippy saw it, so I disabled
+colorization of offers while in -zp or -zt mode.  (Other types of
+colorization are already disabled in Zippy mode for similar reasons.)
+
+* Added some more commands to the default ICS context menu in WinBoard,
+and put "(name)" on the ones that insert a playername (or game number).
+
+* Added missing documentation to WinBoard help file: PonderNextMove, the
+-ponder/-xponder argument, and the up/down arrow history feature in the
+ICS Interaction window.
+
+* Fixed        ZIPPYNOPLAYCRAFTY feature to fire only if the opponent is Crafty,
+not if some other Crafty is observing the game and kibitzes.
+
+* Fixed bugs in generating "partner" commands when Zippy is playing
+bughouse.
+
+4.0.0 -- Sat Jun 20 16:59:47 PDT 1998  Tim Mann
+
+* Fixed WinBoard resizing so that the edges you do not drag remain in
+place, even when the final size is different from what you dragged to.
+(This doesn't work on NT 3.51 or earlier, if anyone cares.)
+
+* Fixed problems with resizing WinBoard on Windows NT: you no longer get
+whitespace around the board, a clipped board, or a lot of flashing during
+the drag.
+
+* Added customization for highlight-square color.
+
+* Bugfix: backend.c wrote to stderr in a few obscure places, which doesn't
+work in WinBoard.
+
+* Added Index Number field back to LoadGame/LoadPosition dialog boxes in
+WinBoard.  This required some extra code to work with both the
+Explorer-style dialog boxes and the old-style NT 3.51 dialog boxes.  Ugh.
+
+* WinBoard startup dialog now understands -zp mode.  The first chess
+engine selector is enabled and the value is used.
+
+* Bugfix: ResetGame would send "exit" to engine twice if it was in an
+analysis mode.
+
+* Bugfix: The response "Illegal move: bk" to the "bk" command, indicating
+that it is not implemented, would confuse xboard.
+
+* Bugfix: Ignore empty hints ("Hint:\n") instead of printing a message
+saying that some bogus string (often "Hint:") is illegal.
+
+* Bugfix: LoadNextGame/LoadPreviousGame/ReloadSameGame were broken.
+
+3.6.12 -- Sat Jun 13 14:57:10 PDT 1998  Tim Mann
+
+Beta test release of xboard and WinBoard.
+
+* Spruced up xboard man page a bit.
+
+* Added Highlight Last Move to xboard too.
+
+* The revamped xboard mouse click code had several more bugs than the
+previous version, so I revamped it again.  All fixed now, I hope.
+
+* xboard bugfix: crash in CreatePieceMenu.
+
+* Oops.  winboard-3_6_11beta.exe installed 3.6.10beta, not the new version.
+
+3.6.11 -- Fri Jun 12 20:00:48 PDT 1998  Tim Mann
+
+Beta test release of xboard and WinBoard.
+
+* Major reorganization to engine-intf.txt.  Some new features added,
+many existing features clarified and hints for engine programmers added.
+Support for new features added to program.
+
+* Changed defaults for -scp (etc.) back to being independent of -fcp, as
+in 3.6.2. That is, the default is no longer to copy the value from -fcp if
+-scp is not specified.  This will sometimes make command lines longer but
+will remove some confusing situations.
+
+* Split -reuseChessPrograms into two options: -reuseFirst and
+-reuseSecond.  Fixed obscure bugs when reuse is off.
+
+* Detect ICC and change some command usage slightly there: only ICC has
+set-quietly; only FICS has iset and bsetup clear.  With this feature, we
+can now safely use bsetup clear when appropriate instead of deleting each
+piece one by one.
+
+* Added indent to lines that are wrapped by WinBoard ICS Interaction
+window.  This seems to tickle a Microsoft bug in the RichEdit control:
+occasionally the start of the next line after the wrapped line is indented
+too.  I think the wrapped indent feature is useful enough that it's worth
+having in spite of the bug.
+
+* WinBoard bugfix: bounding box for the board was computed incorrectly by
+mouse code.  It would think you moved off the bottom of the board before
+you really did, so it was hard to drag pieces along the bottom rank on
+smaller board sizes.
+
+* Fixed obscure parser.l bug: ambiguity between capture using : instead of
+x and email header line.  Also removed or simplified a lot of complex
+patterns for English (as opposed to PGN) end-of-game indications while I
+was in there.
+
+* Added PonderNextMove option.
+
+* xboard EditPosition piece menus now let you set the side to play by
+selecting the "White" or "Black" label at the top of the menu, like
+WinBoard.  (Both xboard and WinBoard still let you set the side to play by
+clicking on the clock.)
+
+* Merged documentation of Crafty and GNU Chess thinking output in
+engine-intf.txt.  Corrected code in backend.c to match documentation; it
+used to require the PV to start in column 27 (!).
+
+* Fixed bug that caused crashes in "-reuseChessProgram false" mode.
+
+* Draw by agreement in Two Machines mode now works as it is supposed to.
+Other minor bugs in handling game end messages from machines are also
+fixed, and engine-intf.txt is revised in this area.
+
+* Revamped xboard code for handling mouse clicks on the board.  In
+particular, it had a bug if a click-click promotion move was made.
+
+* Fixed and reinstated optimization for << in analysis modes: send
+initString and re-send the board if needed.  Sending repeated undos
+is bad because Crafty prints some analysis after every one.
+
+* Don't go into a spin loop while pausing between xboard animation frames.
+This caused problems, especially when compiling with -O2 on HP-UX.
+
+* WinBoard Options/Colors/RevertToDefaults now also turns off Monochrome
+if it was on, and similarly for Options/ICSInteractionColors/RevertToDefaults.
+This seemed to confuse people before.
+
+* Bugfix: ICS Interaction context menu items with neither of the two
+optional flags set did not work.
+
+* Bugfix: PGN move numbers are optional, but we were insisting on "1"
+right after the tags.
+
+* Bugfix: only the first game of an -mg match was loading -lpf or -lgf.
+
+* Other minor fixes and code cleanup.
+
+3.6.10 -- Mon Jun  1 01:32:31 PDT 1998  Tim Mann
+
+* Added ZIPPYNOPLAYCRAFTY feature; see zippy.README.
+
+* Added timestamps for chess engine interaction to -debug output.
+
+* Now allow 10 seconds (was 5) between games in match mode for engines to
+respond to "force" command that ended previous game.
+
+* When a game is picked from the game list and the names of White and
+Black are known, display them in the window banner instead of the filename
+and game number.
+
+* Changed default for -scp and -sd to be the values of -fcp and -fd.
+
+* Added boxes for both engines to WinBoard startup dialog.  Changed to
+dropdown boxes whose content can be set from winboard.ini, similar to
+the box for ICS name.
+
+* Accept "offer draw" (or "*offer*draw*") from engine to offer a draw.
+
+* Accept "move mmmm" from engine as well as silly "1. ... mmmm" syntax.
+
+* Added support for bughouse engines (Zippy mode only).
+
+* Move bombproofing for engines sending illegal or out of turn moves.
+
+* Always send "xboard\n" to engine as first command.  Eliminates need
+to run crafty as "crafty xboard".
+
+* Rewrote xboard code for input from engines to fix longstanding bugs.
+Previously an engine that sent one line in two separate writes with 
+some time lapse in between (or perhaps that sent several lines in one
+write) could make xboard hang.  WinBoard did not have this bug.
+
+* Fixed minor bugs in dealing with illegal moves.
+
+* Added "iset startpos 1" for FICS.
+
+* Removed special support to put "GNU Chess" or "Crafty" in the window
+banner instead of the engine's base filename.  This gives a more level
+playing field for other engines.  Also fixed bugs in the code that finds the
+engine's base filename.
+
+* Bugfix: Abort or Resign at the very start of a game in chess engine mode
+would fail to send "force" to the engine.
+
+* Fixed some minor bugs in new "result" messages, and changed format to
+include a trailing PGN comment giving the reason the game ended.
+
+* Changed syntax of /font options in WinBoard; old syntax was assuming
+that a font name can't contain a digit, which is wrong.  Old font names in
+WinBoard.ini files are still accepted.
+
+* Serious further work on getting WinBoard to read/write files in the
+"right" directories and documenting exactly what it does.
+
+* Added LoadPreviousPosition, LoadNextPosition, ReloadSamePosition.
+
+* Misc. tiny fixes and cleanup.
+
+3.6.9 -- Sun May 24 20:53:08 PDT 1998  Tim Mann
+
+xboard and WinBoard beta release.
+
+* Tightened up illegal move handling.  Illegal or meaningless moves from a
+file or chess engine should no longer get translated into a1a1 and blindly
+applied.  Explicit moves to the same square (like a1a1) no longer make the
+piece on that square capture itself and vanish.
+
+* Added AlwaysOnTop feature to winboard.
+
+* Fixed bug in winboard "@" command line indirection operator.
+
+* Removed buggy "optimization" code for ToStart in analysis modes.
+
+* Fixed typo bug in zippy.c that would often cause winboard to crash
+right after starting a game in -zp mode.
+
+3.6.8 -- Sat May 23 22:23:19 PDT 1998  Tim Mann
+
+xboard and WinBoard beta release.
+
+* Added -firstDirectory and -secondDirectory so that chess engines can
+be started in a different directory from xboard/WinBoard itself.
+
+* Added -matchGames to allow more than one game in -matchMode.  The games
+are played with colors alternating between the two chess engines.  Had to
+add a time delay at the end of each game to catch up with game ending
+messages from both chess engines -- yuck.
+
+* Changed TwoMachines mode to have firstChessProgram play White by
+default.  Added -firstPlaysBlack to restore old behavior.
+
+* Major rework of code in backend.c for dealing with first and second
+chess engines.  Generalized the code and created a struct type with one
+instance for each engine.  Several small bugs fixed along the way. 
+
+* Fixed bugs in Abort in local chess engine mode.
+
+* Tightened pattern matching to recognize moves from machine.  Should cure
+bogus "Illegal move" errors while Crafty is pondering with Show Thinking
+on, among other things.
+
+* WinBoard keeps focus in board window after popping up a comment due to
+Forward/Backward/ToStart/ToEnd commands.
+
+* Finally got rid of warnings on compiling moves.c under Windows.
+
+* Fixed so WinBoard will compile on machines where WM_MOUSELEAVE is not
+defined.
+
+* Removed various bits of unused code.
+
+* Parse (and ignore) NAGs in PGN files.
+
+* Updated engine-intf.txt.
+
+* Send "result R" to the chess program at the end of each game, where
+R is the PGN result 1-0, 0-1, 1/2-1/2, or *.
+
+* Bugfix: suppress animation when loading a game with timeDelay=0.
+
+* Bug fix: pondering output from Crafty that contained "..." could be
+mistaken for a move, causing bogus error messages and general chaos.
+
+* xboard "make clean" bug fix: moved things created by configure to be
+removed only by "make distclean".
+
+* Fixed a remaining case where move was being animated before being
+relayed to opponent.
+
+* Backend was reversing time/otim commands to the chess program (new bug),
+and was often not sending them on the first move of a game or the first
+move after a mode change (old bug).  Fixing the latter required a kludge
+to work with both GNU Chess and Crafty, because Crafty swaps white and
+black clock times when it swaps sides, while GNU Chess does not.  The
+kludge is that we always make sure the chess engine thinks its opponent is
+on move before we set the clock.  This will sometimes result in sequences
+like "white\ntime xxx\notim yyy\nblack\ngo", or the same with white and
+black interchanged.
+
+* Removed last trace of old -whiteString and -blackString arguments.
+
+* Fixed so that you can type "bd" into the Direct Command dialog when
+debugging gnuchess, without having xboard parse the clock display
+(starting with "White") as "White wins" and end the game.
+
+* Changed moves.c to make a distinction between IllegalMove (where we
+could tell what move was intended, but it violates the chess rules) and
+MeaninglessMove (where we could not tell).  This is a step towards getting
+rid of cases where we translate meaningless moves into "a1a1", but some
+work is probably needed to track them all down.
+
+* Fixed bug in WinBoard monoMode dragging.
+
+* Changed WinBoard to new style file dialogs.  In the process, disabled
+the feature that let you enter the index number of a game or position within
+the file in the dialog.  This is no loss in LoadGame, as you can pick your
+game from the game list dialog that follows, but it does remove some
+functionality from LoadPosition.
+
+3.6.7 -- Mon May 18 21:25:00 PDT 1998  Tim Mann
+
+xboard and WinBoard beta test release.  I've been unable to reproduce some
+reported drawing bugs, so they may still not be fixed.
+
+* Changed PopUpErrors option to PopupMoveErrors, which is more useful, and
+changed default to off.  Errors other than move errors should always be in
+popups; they are often too big for the message area and too important to
+put where they can be easily missed.  But it seems good to get rid of the
+popups for move errors by default.
+
+* xboard analysis window no longer forces itself to top whenever there is
+new output.  Also, now uses built-in Xaw word wrapping instead of trying
+to do its own; works better.
+
+* Bugfix: Reset did not take Crafty out of analyze mode.
+
+* A chess engine no longer has to claim to be Crafty to be able to use
+AnalysisMode and AnalyzeFile; it just has to implement the analyze
+command as Crafty does.  Put in heuristics to generate more informative
+error messages if the engine does not support analyze, and checked that
+they work at least with GNU Chess.
+
+* Added click-click moving, HighlightLastMove, and HighlightDragging to
+WinBoard.  The highlight features are unlikely to go into xboard unless
+the xboard drawing code is cleaned up to do *all* drawing on the board
+from DrawPosition, as WinBoard does.  This is low priority for me.
+
+* Eliminated bogus "Error gathering move list: no header" popup.  You
+could get this by observing two fast games at once without turning off
+GetMoveList.
+
+* Disable WinBoard Sounds menu entirely in -ncp mode, since not even
+MoveSound is used in that mode.
+
+* WinBoard bugfix: Several problems were caused if the user changed 
+WinBoard's current directory in a Load, Save, or Browse dialog.  In
+particular, WinBoard.ini would get saved in the wrong directory, and
+sound .wav file names would not get saved with a full pathname.  I think
+all such problems are now fixed.
+
+* WinBoard bugfix: iconizing the board after an aborted mouse resize would
+(partially) resize it to Tiny.
+
+* WinBoard bugfix: board was not being drawn in color on 256-color
+displays.  This bug was introduced in 3.6.6.
+
+3.6.6 -- Tue May 12 17:43:43 PDT 1998  Tim Mann
+
+xboard and WinBoard beta release.  Note: not all reported bugs are fixed.
+
+* Move animation in WinBoard, programmed by Henrik Gram.  Great stuff!
+
+* Animate backward moves too.
+
+* xboard bugfix: -font (and friends) can now specify a font alias (such
+as "fixed"), not just a full X Consortium name pattern.  Previously this
+would give a resource conversion error message.
+
+* Some coding style cleanup in xboard.c.
+
+* Earlier error check for moving wrong color piece in EditGame mode.
+
+* Completed fix to pattern matching; see 3.6.5.
+
+* Fixed some software rot bugs in Zippy.
+
+* Split AnimateDragging as separate option from AnimateMoves.
+
+* Added FlashMoves to options menu and -flash/-xflash to command line
+options (xboard only).
+
+* Some preliminary work on visible bughouse holding support.  Most of the
+code is not present in this release because I have not gotten it working
+properly yet; my first approach went down a blind alley and I had to
+remove most of the partially working code in preparation for a rewrite.
+
+3.6.5 -- Fri May  8 14:22:09 PDT 1998  Tim Mann
+
+Not generally released.
+
+* Pack bughouse holdings display in banner more tightly when board is one
+of the smaller sizes (when smallLayout or tinyLayout is true, that is).
+An interim measure, but should help.
+
+* Completed fix to make move list parsing recognize the end condition and
+final comment.
+
+* Fixed pattern matching for chatter (tells, etc.) to be more reliable.
+This should reduce the incidence of colors starting in the wrong place and
+of incorrectly matching things that look like other patterns inside
+chatter, such as "shout <12>".  (These errors were already rare.)
+
+* WinBoard now lets you customize the list of ICS's in the startup dialog.
+For now, at least, requires editing WinBoard.ini with a text editor.
+
+* Bug fix: WinBoard window sizing and position setting save/restore did
+not work right when the taskbar was at the top (or left side) of the
+screen and not in autohide mode.
+
+* Merged xboard click/click mode and drag mode, and deleted
+ClickClickMoving option on menu.  Now if you click on a piece, it
+highlights and a further click on another square will move it.  (A second
+click on the same square takes down the highlight.)  Or if you press down
+on a piece and start to drag, you can drag it to a new square.
+
+* When making click/click style moves, if your second click is on a piece
+of the same color, instead of saying "Illegal move", we now cancel the first
+starting square, replace it with the second, and wait for another click to
+finish the move.
+
+* Separate -secondInitString.  Default: same as -initString.  Suggested by
+Remi Coulom.
+
+* Patch from Frank McIngvale to make animation work with XIMs.  Yay!
+
+* Changed move animation to happen after move is passed on to ICS or the
+chess engine, where applicable.  Fixed problems with updating moveList
+that this uncovered.
+
+* Changed game list to show PGN result token for each game.
+
+* The usual minor bug fixes.
+
+3.6.4 -- Thu Apr 30 23:14:43 PDT 1998  Tim Mann
+
+xboard and WinBoard beta test release.
+
+* xboard documentation updated, both man page and info file.  An attempt
+to generate both from the same source with LinuxDocSGML was abandoned, at
+least for now.  WinBoard doc updated too.
+
+* Merged updates to animation code from Hugh.  Fixed a couple of remaining
+bugs, mostly to do with handling Pause mode correctly.
+
+* Added SaveSettingsOnExit to WinBoard.
+
+* WinBoard now saves the last screen position of the Comment, Edit Tags,
+Game List, and Analysis windows (in addition to the board and ICS
+Interaction windows) in WinBoard.ini.
+
+* WinBoard now provides a way to customize the right-button context menu
+in the output area of the ICS Interaction window.  For now, requires
+editing WinBoard.ini with a text editor.  
+
+* Various minor fixes to ICS message recognition, most affecting only Zippy.
+
+* Colorize the notification when someone sends you a message while you are
+logged in, not the output of the "messages" command.
+
+* Fixed colorization to turn off at the right place more reliably.
+
+* Added a new color and WinBoard sound for "requests": abort, adjourn,
+draw, pause, and takeback.  The same color and sound are used for all of
+these.
+
+* Added GUI to change sounds in WinBoard.
+
+* Suppressed WinBoard error popup when a sound can't be played.  They were
+popping up when two separate WinBoards tried to play a sound at the same
+time (such as during a bughouse match).
+
+* Fixed WinBoard crash when a sound file didn't exist.
+
+* WinBoard ports of timestamp and timeseal now produce decent error
+messages if they fail to connect, and WinBoard captures the messages and
+puts them into a popup.  Previously WinBoard would exit with no message on
+such errors.
+
+* WinBoard resizing with mouse improved; now accurately picks the largest
+size that fits in the new area.
+
+* Added option to turn off error message popups.
+
+* Added sizes slim, dinky, and teeny.
+
+* Fixed some minor problems with error message wording.
+
+3.6.3 -- Mon Feb 23 19:08:57 PST 1998  Tim Mann
+
+xboard beta test release only.  Man page is updated for the changes, but info
+file is not.
+
+* Bug fix: LoadGame could not load a PGN game whose first move was
+castling (which is possible from setup positions).
+
+* Bug fix: we were ignoring illegal move messages from chess engines in
+modes where the engine is refereeing but not participating (EditGame,
+LoadGame, AnalyzeFile).  The problem was in a workaround for a Crafty bug,
+where Crafty generates a bogus illegal move message if a "." (used by
+the PeriodicUpdates feature) is sent in analysis mode when the current
+analysis reveals a forced mate.  Installed a different workaround (that
+works in most but not all cases) and reported the Crafty bug.  Bob Hyatt
+replied with a fix, so the Crafty bug should be gone in Crafty 14.12 or so.
+
+* WinBoard only: enabled resizing board with the mouse.  It snaps to the
+nearest (but not too much larger) predefined size.
+
+* The xboard default font is now sized according to piece size, just as
+clockFont and coordFont have always been.
+
+* Added more sizes: bulky, moderate, average, middling, mediocre, petite.
+       
+* xboard only: Added Animate Moves and Click-Click Moving to Options menu.  
+
+* xboard only: Added code to animate piece movement, from Hugh Fisher.
+
+* New feature: autoflag is implemented in MachineWhite, MachineBlack, and
+TwoMachines modes.  If it is on and either a chess program or the user
+oversteps his time, xboard will automatically call the flag and end the
+game.  This feature was requested by someone who runs matches between
+programs and wants to penalize GNU Chess for its habit of running slightly
+over at the end of a time control.  I personally think it's pointless.
+
+* Fixed a bug in Zippy's pattern matching; he can now reply to ICC
+messages again.
+
+* Generate prettier notation for illegal moves.  If a move is illegal only
+because it leaves the player in check, generate notation as if that were
+not illegal.  For instance, if two knights are a knight's move away from
+f3, one on g1 and one on e5 that is pinned, the notation would be Nf3 to
+move the g1 knight, Nef3 to move the e5 knight.  (Suggested by Philippe
+Schnoebelen.)  In addition, if a move is illegal because the type of piece
+moved cannot go that way, would be jumping over another piece, etc., we
+give fully disambiguated coordinate notation; for example, Ng1g3, Ke1xe8,
+d2xd8=Q, etc.  An alternative would be to still write Ng3 if there is only
+one knight on the board, or Ngg3 if the other knight is not on the g file,
+but life is too short to code up all this stuff, and perhaps the way I did
+it is better as it emphasizes that this move was really made despite being
+illegal.  I wonder if the new PGN standard revision will speak to notation
+of illegal moves?
+
+* Fixed gross bug from 3.6.2: if a chess program said "checkmate" and
+White was left on move, the PGN outcome was "1-0 {Black mates}" instead
+of "0-1 {Black mates}"!  The bug occurred only for that specific string.
+
+3.6.2 -- Wed Jul 23 16:47:29 PDT 1997  Tim Mann
+
+* There was a bug in backing up from the end of a game against a chess
+engine, introduced when -reuse mode was added.  Fixed.
+
+* Recognize "{" as terminating an ICS move list.  Previously we needed to
+see a prompt (containing %), but occasionally ICC can send more stuff
+right after a move list with no prompt in between.
+
+* In WinBoard, -mm now implies -cp, so you don't get the startup dialog.
+
+* WinBoard startup dialog no longer sets -scp.  People used to get
+confused because they would give the -fcp and -scp arguments, but omit
+-cp.  This would bring up the startup dialog, which would set both -fcp
+and -scp to the value in the engine name box.  Now you can change -scp
+only with the command-line argument.  That will confuse some people too,
+but hopefully fewer.  I think overall it's better than putting spaces for
+both -fcp and -scp in the dialog, which would puzzle newbies.
+
+* Bug fix: Analyze File mode now works in WinBoard.
+
+* Bug fix: WinBoard window no longer cuts off part of the bottom row if
+the menu bar wraps to a second line.
+
+* Accept game end messages of the form "PGN-result {comment}" from the
+chess engine, where PGN-result is 0-1, 1-0, or 1/2-1/2.  Accept "resign"
+or "computer resigns" from the chess engine as a synonym for "0-1 {White
+resigns}" or "1-0 {Black resigns}". Accept any message from the chess
+engine containing "game is a draw" as a synonym for "1/2-1/2 {Draw}".
+Accept "White resigns" or "Black resigns".
+
+* Enable "Action / Draw" menu item in chess engine mode.  It sends the
+command "draw" to the engine.  Accept any message from the chess engine
+containing "offers a draw" as a draw offer.  WARNING: Draw offers from the
+user and the engine (or from two engines) are not yet matched up by xboard
+in chess engine mode.  Two engines could get into a loop offering each
+other draws.
+
+* Bug fix: Game end messages from the chess engine are always ignored in
+Zippy mode.  Previously they could sometimes be processed, which was
+sometimes making Zippy hang at the start of a new game that followed
+quickly after an old one.
+
+* Zippy can now respond to titled players in channels.  Zippy will avoid
+talking to himself in a channel if he knows his own name.
+
+* Bug fix: in colorization arguments, the bold setting was being ignored
+if the background color was defaulted.  (xboard only.)
+
+* Extended ParseFEN to accept Crafty 12.2's interpretation of FEN.
+If fewer than 8 squares are given in a row, or fewer than 8 rows are
+given, the uncovered squares are empty.  Also, there can be a / after the
+8th row.
+
+3.6.1 -- Sat May 17 01:02:33 PDT 1997  Tim Mann
+
+* Bug fix: Hitting escape while entering a password on WinBoard no longer
+sets the font color back to black (which made further typing visible).
+
+* Bug fix: On Windows NT 4.0, WinBoard /ics /icshelper=timestamp would
+often hang if you tried to exit with the Exit menu item, the [X] button,
+etc.  The same fix may also have corrected the problem where running a
+chess program with /xreuse would sometimes crash Windows 95 (but not NT)
+when the chess program was killed and quickly restarted.
+
+* Bug fix: Periodic Updates would not work if turned on after having been
+off.  Also, the default was needlessly "off" in WinBoard.
+
+* Zippy bug fix: Continuing an adjourned game was totally broken.  The
+wrong moves, or no moves at all, were being fed to the chess program.
+
+* WinBoard change: Giving -ics without -icshost now pops up the startup
+dialog with "Use an Internet Chess Server" pre-selected, so that you get a
+menu of chess servers instead of going directly to ICC.
+
+* Bug fix: WinBoard's SaveSettings was saving -icshost, -icsport, and
+-icshelper in winboard.ini.  This causes a problem if you use a different
+icshost later that needs the default values for icsport (5000) and
+icshelper ("", meaning none).
+
+* Disabled complaints about unexpected "[Ii]llegal move" messages from
+the chess program; we still get them at times.
+
+* Greatly simplified the code for Move Now and SIGINT (ATTENTION).  Fixes
+the bug where Move Now did not work with GNU Chess in WinBoard, and
+several more obscure bugs as well.  Reintroduces a minor bug: GNU Chess might
+not think on your time after a Move Now command.  Trying to fix this
+causes too many other problems.  Documented change in engine-intf.txt.
+
+* Cleaned up code for obtaining ratings from ICS.  It was kludgey and may
+have had bugs on systems with no "Creating:" message.  It should fail
+gracefully there, just not finding the ratings.
+
+3.6.0 -- Thu May  8 19:55:58 PDT 1997  Tim Mann
+
+* WinBoard now has right-button context menus in the ICS Interaction
+window.  Some of the items do immediate commands on the player name you
+have selected or pointed to.  (Suggested by Paolo Casaschi.)  Also, the
+middle button or shift+right does a immediate Copy and Paste.
+
+* Fixed a bug in Zippy's wild rejection.  The bug was causing Zippy to
+reject all forms of wild.  Now it rejects only 1, 9, 16, 17, and 24, as
+was intended.  These variants have different rules, while the other
+variants defined so far only have different starting positions.
+(Actually, wild 2, 3, and 4 never allow castling, but may sometimes by
+chance have king and rook start on squares where castling appears legal.
+This could cause a problem later.)
+
+* Zippy now resumes adjourned games by feeding the chess program 
+the move list instead of the position.  Setting -getMoveList to False 
+restores the old behavior.  Feeding in the move list is better because 
+it enables the chess program to correctly handle en passant legality, 
+castling legality, draw by repetition, and draw by the 50 move rule. 
+
+* Added a WinBoard startup dialog for people who run WinBoard.exe without
+using the Start menu or reading the help file.  Instead of being dumped
+directly into GNU Chess mode, you now get a menu of choices.  You now have
+to give the new WinBoard -cp option to go directly into chess engine mode.
+I did not add this feature to xboard.
+
+* Handling of "illegal move" from Crafty is now back on.  (It was turned
+off in 3.4.6; see below.)  Crafty 12.0 doesn't seem to send bogus ones
+anymore.  I did have to suppress sending time and otim in analyze mode to
+make this work, but there is no harm in that.
+
+* Zippy now sends "gameend" to ICS at the end of each game.  You can alias
+this to "seek" or whatever you like.
+
+* Added Crafty support for Move Now, using the "?" command.  We test
+whether this command exists by trying it once at the start of the first
+game, before it really makes sense.  If we don't get a message like
+"Illegal move ... ?", we assume it's OK.  (We're careful about this
+because sending a "?" to GNU Chess on Move Now keeps it from pondering the
+next move as it should.)
+
+* Added support for a tellusererror command from the chess engine.  See
+engine-intf.txt.
+
+* Attempted to make engine-intf.txt complete.
+
+* Minor fixes/cleanup to GameEnds code, to be sure we always interrupt
+when needed, and always undo an extra move generated by stopping the chess
+program while it is thinking.
+
+3.5.7 -- Sat May 03 22:37:44 PDT 1997  Tim Mann
+
+Beta release of both xboard and WinBoard.
+
+* Updated xboard documentation.  I really wish the man page was built from
+the info file instead of being separate!  It's a pain to update them both.
+
+* Updated documentation of the interface between XBoard/WinBoard and chess
+programs, and renamed it to engine-intf.txt.
+
+* Added support for tellics, telluser, and askuser commands from the chess
+engine.  See engine-intf.txt.
+
+* Various bug fixes.  On WinBoard, 256 color displays are finally handled
+right; no more color flashing when you switch windows unless the colors
+really need to be updated.  Also, I think the problem of the console font
+failing to change or changing back by itself is finally fixed.
+
+3.5.6 -- Tue Apr 29 03:08:00 PDT 1997
+
+Beta release, WinBoard only.  ChangeLog was out of date in release,
+updated here.
+
+* Added ICC timestamp and FICS timeseal to WinBoard distribution.  These
+are my own ports to Win32, based on and used by permission of the owners
+of the proprietary source code (Daniel Sleator for timestamp, Henrik Gram
+for timeseal).  The owners permit these programs to be distributed only in
+binary form (to help prevent cheating), so to avoid running afoul of the
+GPL, I have kept them as separate programs, not linked into the WinBoard
+address space.  Updated Start menu icons to use them.
+
+* Miscellaneous smaller changes.
+
+3.5.5 -- Fri Apr 25 03:06:00 PDT 1997
+
+Beta release, WinBoard only.  ChangeLog was out of date in release;
+updated here.
+
+* Added simple sound support to WinBoard.
+
+* Updated WinBoard documentation.
+
+* Internal implementation of the telnet protocol is now more complete.
+You can now hop through a VMS host on the way to ICS.  For example, do
+"xboard -ics -icshost vms.host.edu -icsport 23", then log in.  Do not use
+the -telnet flag; that says to use an *external* telnet program.  To avoid
+double echoes, you need to force character mode in VMS telnet after
+connecting from VMS to ICS.  Do "^]^Mset mode char^M^M".
+
+* Display opponent names in the title bar for MachineWhite, MachineBlack,
+and TwoMachines modes.
+
+* WinBoard now has an installer, built with InstallShield.  The installer
+works with a binary-only distribution.  Sources are still freely
+available, but now separately.
+
+* Added SaveSettings to WinBoard, which saves current option settings to
+winboard.ini.  Made sure all options can be saved and loaded, including
+fonts and com port settings.
+
+* If the game ends while you are dragging a piece, we now don't let you
+finish the move.  Formerly the move was accepted and your opponent's clock
+would start running again.
+
+3.5.4 -- Fri Apr 18 01:15:24 PDT 1997  Tim Mann
+
+Beta test release of WinBoard and xboard.  The documentation remains
+out of date.
+
+* Many fixes and improvements to new WinBoard user interface code.
+
+* In Zippy mode, avoid sending another copy of the same move to the chess
+program if ICS sends us another copy of the board image.  Hard to believe
+it took me until now to diagnose and fix this problem!
+
+3.5.3 -- Sat Apr 12 19:49:33 PDT 1997  Tim Mann
+
+Beta test release of WinBoard and xboard.
+
+* Fixed fatal bug in WinBoard input handling.
+
+* Made code to stop chess program for reuse a bit smarter.  Removed kludge
+of "white" in initString; it didn't work well, and is unneeded
+with Crafty 11.21 and later.
+
+3.5.2 -- Sat Apr 12 15:40:01 PDT 1997  Tim Mann
+
+Beta test release of WinBoard.
+
+* Ignore check and permit promotion to King during suicide games; no need
+to turn off TestLegality.
+
+* Renamed CheckLegality to TestLegality to avoid confusion with the chess
+term "check".
+
+* Added Rematch to Action menu.
+
+* WinBoard now has a custom ICS interaction window with scrollback, a
+separate line for input, and colorization.  Accelerators that conflict
+with normal editing keys were changed (by requiring Alt+) so they can work
+in both the console and the main window.
+
+* WinBoard error popups are now non-modal and disappear when you make a
+new move, as in xboard.
+
+* Configure now defaults to --disable-ptys on all systems.  If anyone has
+an ancient SysV system where pipes don't work with select, they can still
+do "configure --enable-ptys" explicitly.  I would appreciate getting a bug
+report if this happens to anyone, with complete output from configure and
+"uname -a".
+
+* "make install" now makes the installation directories too.
+
+* Fixed a bug that would cause an "Illegal move" message for Black from
+GNU Chess to be incorrectly considered bogus.
+
+* Handle name changes during an ICS game (FICS bname and wname commands).
+
+* You can force both chess programs to be killed at the end of each game
+by turning off the reuseChessPrograms option.  There are still some
+problems with reusing Crafty even in version 11.20.
+
+* Now the second chess program stays around by default too, if it ever
+gets started.
+
+3.5.1 -- Sat Apr  5 16:47:48 PST 1997  Tim Mann
+
+Beta test release.
+
+* Don't kill off and restart the chess program for each game; keep the
+same one running, using the "new" command to start a new game.  This
+change works around the problem in Windows 95 that makes WinBoard crash it
+at times, and is generally desirable to make new games start faster.  The
+second chess program (for TwoMachines) is still killed at the end of the
+game, and unfortunately this can still crash Windows 95.  Temporarily
+added "white" to the initString to make this work with Crafty 11.20, which
+has a minor bug in "new".  Older versions of Crafty have worse bugs in
+"new"; they should not be used with this version of xboard.
+
+* Support for FICS suicide chess: Parse illegal moves (that leave King in
+check) in game history.  If CheckLegality is off, allow promotion to King
+and illegal moves in game files.  We still generate e2e4 style notation
+for illegal moves.
+
+* Handle FICS "has timeseal; checking" message.
+
+* Changed the coords from white back to black; this was a bug.
+
+* Fixed problems compiling with K&R compilers.
+
+* Fixed an old bug in RegisterMove that was crashing cmail on some systems
+(notably linux).
+
+3.5.0 -- Thu Jan  2 16:59:49 PST 1997  Tim Mann
+
+Thanks to Frank McIngvale for much of the work on versions 3.4.4 and above!
+
+* Fix Crafty resumed game time bug (frankm)
+
+* Word wrap text in Analysis window (frankm)
+
+* More debug info for XPM loading (frankm)
+
+* Replaced config.sub, config.guess, etc., with up-to-date versions from
+autoconf 2.12.  Hopefully this will fix problems on Pentium Pro machines.
+
+* Removed some Makefile gunk that was causing looping for one person.
+
+3.4.7 -- Thu Dec 19 14:22:41 PST 1996  Tim Mann
+
+All changes from Frank:
+
+* Retrieve ratings from ICC (and FICS, etc., when they add the Creating:
+message), save them in the PGN tags, and pass them to Crafty in Zippy mode.
+
+* Add settable time delay between characters in ICS login script.
+
+* Colorize messages like personal tells.  Fix false recognition of channel
+tells.
+
+* Pass "tells" from Crafty through to ICS (in Zippy mode).
+
+* Implement ~/ filename convention from C shell for game and position file
+names.
+
+* ZIPPYACCEPTONLY feature for testing.
+
+3.4, patchlevel 6 -- Sat Nov 23 16:58:50 PST 1996  Tim Mann
+
+* Put recognition of "illegal move" messages from Crafty for
+illegal castling, etc., inside an #if that is currently turned off,
+because of a bug in Crafty that generates bogus "illegal move" messages
+after some moves that are actually legal and accepted by Crafty.
+
+* Added -checkLegality option; previously this could not be turned off.
+
+* Fixed an old bug in finding default board size parameters.
+
+* Differentiated among channel tell, kibitz/whisper, and personal tell/say.
+
+* Fixed a bug in detecting Xpm in the configure script.
+
+3.4, patchlevel 5 -- Mon Nov 18 16:22:53 PST 1996  Tim Mann
+
+* Added zic2xpm to the kit; it had been omitted by mistake.
+
+* Added some default colors for -colorize
+
+3.4, patchlevel 4 -- Sat Nov 16 18:10:17 PST 1996  Tim Mann
+
+This is meant to be a beta release in preparation for version 3.5.
+
+* Added InfoXBoard and ManXBoard to the Help menu.
+
+* Made Frank's ICS input box optional, defaulting to off.
+
+* Merged in Frank McIngvale's XbKit.  Many new features, including
+-clickClick mode, the Analysis modes, piece flashing, ZIICS import,
+ICS text colorization, and the ICS input box.  Many thanks to Frank for
+supplying and documenting this code.
+
+3.4, patchlevel 3 -- Mon Nov 11 18:23:14 PST 1996  Tim Mann
+
+Small set of changes made while Frank McIngvale was working on XbKit in
+parallel.  Unreleased in this form.
+
+* Updated zippy.README.
+
+* Removed useless X event handler and removed strange code for copying
+form translation table to board that worked around the bug it caused.
+This makes changing bindings in .Xdefaults more straightforward.
+
+* Now pressing the Control key steps back one move, and releasing it steps
+forward again.
+
+* Moved quit from "q" to "Q" for greater safety.
+
+* Use "unobserve" instead of "observe" to stop observing; needed on FICS.
+
+* Support for interface variable.
+
+* Strip titles from people who are talking to us, so (for example) Zippy
+won't try things like "tell Darooha(*) hello".  Needed on FICS.
+
+3.4, patchlevel 2 -- Tue Jul  9 19:06:42 PDT 1996  Tim Mann
+
+This patchlevel is not planned to be an announced release.  It's in
+preparation for integrating Frank McIngvale's XbKit.  It mostly contains
+minor fixes I've accumulated since 3.4.pl1.
+
+* WinBoard /telnet option now fires up an external program, as
+with xboard, instead of trying to use a feature of NT 3.1 that does not
+exist in later versions of NT or in Windows 95.  ChangeLog for 3.4.pl1
+said this had been implemented there, but it really wasn't.
+
+* Indicating player to move by the icon color now works under Windows 95.
+
+* WinBoard now kills the chess program when you exit using the system menu
+or the [X] button.  Thanks to Michael Lowe.
+
+* Minor changes to Zippy, including: Now understands wild challenges on
+FICS; these used to crash it.  Removed limit on how fast a game will be
+accepted.  Use "set formula ..." on the chess server to limit this if you
+are using GNU Chess.  Now sends correct opponent name to Crafty.
+
+* Added some missing default values to documentation.  Thanks to Stuart
+Cracraft.
+
+* Bugfix: Trying to print "No fonts match pattern" error message would
+crash.  This can happen to Linux users who don't install Helvetica, for
+example. 
+
+* Bugfix: Defaulting feature in -size n,n,n,n,n,n would put us in an
+infinite loop.
+
+* Added more directories to search for Athena widgets on HPUX.
+
+* New cmail (3.12) from Evan Welsh; includes small fix from Kayvan Sylvan.
+
+* Recognize "illegal move" messages from Crafty for illegal castling, etc.
+
+* Bugfix: "name" command added to zippy.c for Crafty was producing error
+message if GNU Chess was in use.
+
+* In bughouse mode, suppress holding messages from console window; show
+holdings only in banner.
+
+* Minor fixes/cleanup to Makefile.in and configure.in.
+
+3.4, patchlevel 1 -- Mon Dec 11 13:43:12 PST 1995  Tim Mann
+
+* This patchlevel updates WinBoard to match xboard, and includes a few
+fixes and minor improvements.  "-size tiny" and "-size n,n,n,n,n,n"
+are still not implemented for WinBoard.
+
+* Installed support for Crafty based on code from Bob Hyatt.
+Currently the only documentation for this is in the FAQ, and a few
+things don't work with Crafty 8.23.  Please do not report these
+problems as bugs in either xboard or Crafty.  Bob and I know about
+them.  The worst ones (if not all of them) should be fixed in Crafty
+8.24.
+
+* Changed the kludge command we send when gnuchess wants to print
+something that doesn't end with a newline, from "help" to "bogus".
+This works because the error message gnuchess prints ends with a
+newline.  It also improves compatibility with Crafty, which doesn't
+need the kludge, but for which sending "help" causes a problem.
+
+* Don't draw grid at all if lineGap is 0; previously we drew the grid
+with X "0-width" lines (usually 1 pixel wide) and then overwrote it.
+
+* Makefile: Removed xboard.info from "all" target so we won't try to
+rebuild it, because this fails on hosts that don't have makeinfo
+installed.  Other minor fixes to "clean" targets, etc.
+
+* Fixes and cleanup to Auto Comment code that handles continuation
+lines and highlighting.
+
+* Auto Observe now tries to observe the game from the point of view of
+the player who was on your gnotify list.  Requested by rng.
+Limitations: We can't tell which player it was unless you have ICS
+highlighting turned on.  Also, currently "observe foo" works as
+required (observing from foo's point of view) only on ICC, but FICS
+will probably implement this soon.
+
+* "-size tiny" now makes the default font smaller automatically.  This
+was implemented by introducing an extra Form widget in the hierarchy
+for all xboard windows, named either normalLayout, smallLayout, or
+tinyLayout.  So you can have resource specifications that apply only
+to certain layouts; in particular, XBoard*tinyLayout*font.
+
+* Bug fix: EditGame or EditPosition while playing or examining still was
+not really being permitted.
+
+* WinBoard bug fix: On the EditPosition menu, King did not work.
+
+* Added text catalog of WinSock error messages to WinBoard, because
+Microsoft still has not put them in the system message catalog.
+
+* Removed support for older ICS game-ending messages that do not have
+a PGN result token (*, 0-1, 1-0, or 1/2-1/2) after the closing '}'.
+The code for older messages was sometimes firing on the newer
+messages, due to parsing ambiguity.  If the current code sees an old
+message, it will understand that the game is over, but will always
+display * as a result token instead of trying to guess the result by
+interpreting the text message.
+
+3.4, patchlevel 0 -- Tue Nov 21 01:02:50 PST 1995  Tim Mann
+
+* This patchlevel was released for xboard only.
+
+* Updated the info file.  It should now be as up-to-date as the man page,
+with good English except in the parts that pertain only to AmyBoard.
+
+* Added "-size tiny", requested by Bob Hyatt.  Also cleaned up bitmap
+support and added "-size n,n,n,n,n,n" to allow arbitrary-sized bitmaps,
+if the actual bitmaps are supplied by the user.
+
+* Updated bughouse support.
+
+3.3, patchlevel 4 -- Sat Nov 18 02:27:21 PST 1995  Tim Mann
+
+* Unreleased beta that works with preliminary FICS bughouse code.  Will
+need changes before release to track FICS message changes.
+
+* Removed use of .EX macro from man page.  It is not supported by some
+nroff -man macro packages, notably the one on Slackware Linux.  Switched
+to boldface for references to xboard and other commands within the man
+page, as this seems to be the modern way.
+
+* Bug fix: If ICS rejected a move, it was correctly undone on the board,
+but the message widget still displayed the bad move.  Reported by DAV.
+
+* Normally, xboard in ICS mode fetches the move list whenever the board
+display switches to a new game.  Doing this is now an option
+(getMoveList) that can be turned off, which is useful if you are watching
+multiple blitz games.  Requested by rng.
+
+* Move list fetching code is now smarter: it ignores a move list if it is
+not for the right game.
+
+* Added support for bughouse as implemented on FICS.  Holdings are shown
+in the window title in place of the strength numbers.  A menu on mouse
+buttons 2 and 3 (same on both) lets you drop pieces.  There is no checking
+as to whether you actually hold the piece you are trying to drop; we rely
+on ICS to check that.  Notation of the form P@f7 is generated and parsed.
+The mate detector does not understand that non-contact mate is not really
+mate in bughouse, but this does no real harm.  It results in a "#"
+suffix being displayed on the move notation, but xboard does not assume the
+game is over.
+
+* Bug fix: Promotion to a knight was not working with ICC!  Thanks to
+Wendigo for the report.
+
+* Bug fix: Special pty code for host types *-*-aix3* and *-*-irix3*
+(supplied from configure.in) had a bug that would cause childio.c to
+fail to compile, due to a "continue" that was not within a loop.
+
+* Bug fix: In pgntags.c, memory was being freed while still in use.  One
+symptom this caused was that on some machines, cmail would fail with a
+message that it could not find the BlackNA tag.  The error was in some
+submitted code that I included in version 3.2.pl3 without reading
+carefully enough.  Anders Forberg noticed the symptoms, and Evan Welsh
+(who had nothing to do with causing the bug) found the bug and submitted a
+fix; thanks to them both.
+
+* Removed restriction against using EditGame while playing, observing,
+or examining on ICS.  You still get a warning popup.
+
+3.3, patchlevel 3 -- Sat Sep 16 11:44:05 PDT 1995  Tim Mann
+
+* Bug fix: Going directly from MachineWhite to TwoMachines mode would kill
+off the second chess program after Black's first move.
+
+* Added -timeIncrement feature.  Thanks to Joel Rivat.
+
+* Deleted code that tries to keep you from observing more than one game,
+or observing while playing or examining.  There is actually no problem in
+doing this, except that every time an update comes in from a different
+game than is currently being displayed, xboard fetches the history of the
+new game, which may be time-consuming if you are on a slow link.
+
+* Fixed configure so as not to crash when neither lex nor flex is found.
+lex or flex is needed only if the user wants to rebuild parser.c.  Thanks
+to Phil Humpherys for reporting the crash.
+
+* Bug fix: config.h.in used #define instead of #undef for some macros used
+in the pty code in childio.c.  This causes the code to fail to compile on
+some architectures, because the symbols are supposed to be undefined, not
+defined to empty, when they are not set in configure.  Bug originated in
+3.3.pl0 when config.h was introduced.  Thanks to Phil Humpherys for report.
+
+* Bug fix: ShowThinking would not show anything when current position had
+no move to display in the move window.  E.g., if position was created by
+LoadPosition or EditPosition.
+
+3.3, patchlevel 2 -- Mon Aug 28 11:11:11 PDT 1995  Tim Mann
+
+* Zippy code was omitted from xboard-3.3.pl1 by mistake; now included.
+
+* For WinBoard, added hint to help file that you may need to turn off
+LocalLineEditing while typing dialing commands to your modem.
+
+3.3, patchlevel 1 -- Sat Aug 19 15:13:30 PDT 1995  Tim Mann
+
+* Zippy distribution is no longer separate from regular xboard distribution.
+
+* Deal properly with Show Thinking output from GNU Chess when it is
+thinking on its opponent's time.  In TwoMachines mode this output is
+suppressed to avoid interfering with the output from the machine that is
+on move; in other modes it is displayed (including the move that GNU Chess
+is predicting the user will make next).  GNU Chess produces this output
+only if it is built without -DQUIETBACKGROUND defined; this symbol is
+defined by default in patchlevels before pl75, but undefined by default in
+pl75.
+
+* Bug fix: Handling of initial board position in move list for wild games
+was broken, so wild games could not be observed and adjourned wild games
+could not be continued.  Thanks to "Maximum Entropy" for the bug report.
+
+* Added feature: algebraic notation now shows "+" indicator for check
+and "#" for checkmate, as called for in PGN standard.  Thanks to Kevin
+Maher for the suggestion.
+
+3.3, patchlevel 0 -- Thu Jul 27 22:21:07 PDT 1995  Tim Mann
+
+* Changed configuration to use a config.h file instead of passing zillions
+of -D options on the cc command line.
+
+* Merged a small fix and some updates to the texinfo file from Jochen
+Wiedmann.  The texinfo file still needs work.
+
+3.2, patchlevel 5 -- Tue Jul 18 20:29:39 PDT 1995  Tim Mann
+
+* Beta test release of xboard only.
+
+* Updated WinBoard code to include new xboard features.
+
+* Added texinfo file from Jochen Wiedmann to the release, but not as the
+primary documentation.  It needs updating, and the English needs work.
+I did make a few improvements, mostly to change incorrect uses of @var to
+either @samp or @code as appropriate.
+
+* Merged in code changes to 3.2.pl4beta from Jochen Wiedmann.
+
+* Fixed EditComment; did not pop up window in previous beta.
+
+* Added AutoComment feature.
+
+* Added GameListDestroy to disable the outdated game list popup in cases
+where we load a new game file without building a new popup.
+
+* Added yyskipmoves feature to parser.l to speed up building of gamelist.
+
+* gamelist.c wouldn't compile with a non-ANSI compiler.  Fixed.
+
+* Change to yy_text handling in patchlevel 3 still had problems.  Can't
+use AC_DECL_YYTEXT in configure.in, because that defines YYTEXT_POINTER
+according to whether the lexer on the current host makes yytext a pointer.
+But most people will be using a parser.c that was generated on another
+host and shipped with the package.
+
+3.2, patchlevel 4 -- Sun Jun 25 19:13:43 PDT 1995  Tim Mann
+
+* Beta test release of xboard only.  
+
+* Added FIREWALLS section to man page.
+
+* Changed -icsport to be a string.  Now with the -telnet option,
+specifying -icsport "" suppresses the second argument to telnet.
+
+* Added EditTags feature.  Removed AboutGame from menu, because EditTags
+subsumes it.  EditTags suggested by Jochen Wiedmann and first implemented by
+him in AmyBoard.  xboard implementation is my own.
+
+* Fixed some missing or incorrect prototypes.
+
+3.2, patchlevel 3 -- Sat Jun  3 18:57:38 1995  Tim Mann 
+
+* Beta test release of xboard only.  
+
+* New version of cmail from Evan Welsh, to fix compatibility problems with
+perl 5.0.
+
+* Added game list feature on Load Game, based on code from Jochen
+Wiedmann.  Integrated it with cmail.
+
+* Several bug fixes from Jochen Wiedmann, including one to my yy_text
+workaround for the difference in the type of yytext between lex and flex.
+
+* Handle clock pause on FICS.
+
+* Suppress clocks in untimed FICS games (time control 0 0).
+
+* Rebuilt configure script with autoconf 2.3.  This fixes a bug in
+configuring for X11R6, where -lSM -lICE would not be added when needed.
+
+* Fixed inconsistent type declarations on IntSigHandler and
+CmailSigHandler.  Bug report from Josh Daynard.
+
+* backend.c wouldn't compile with a non-ANSI compiler.  Fixed.
+
+3.2, patchlevel 2 -- Tue Feb  7 14:50:30 1995  Tim Mann 
+
+* Minor release of both xboard and WinBoard.
+
+* Added recognition of some FICS messages.  On the other hand FICS is also
+changing some of its messages to match what xboard already recognizes.
+
+* Temporarily went back to using "promote" command on ICS instead of
+"a7a8=Q", because FICS doesn't implement the latter yet.
+
+* We now avoid using overlapped I/O on pipes in WinBoard, to make Windows
+95 beta 2 happy.  This lets WinBoard work with GNU Chess on Windows 95!
+
+* Installed patches from Jochen Wiedmann to coordinate with Amiga XBoard.
+
+* Installed patch to cmail bug in LoadGame from Evan Welsh.
+
+* Bugfix: checkmate and stalemate moves entered with EditGame in ICS mode
+were not being handled correctly.  Bug was in GameEnds().
+
+* Implemented EchoOn and EchoOff for xboard, using system("stty echo\n").
+Now passwords won't be echoed when you connect directly to ICS.  Also,
+telnet negotiation characters aren't displayed (when possible).
+
+* Implemented more of the telnet protocol.  Now connecting to a telnet
+server with "-icsport 23" should work even without giving the -telnet
+option.  The telnet is in "old line-by-line mode".
+
+3.2, patchlevel 1 -- Sat Dec 10 13:50:46 1994  Tim Mann 
+
+* This patchlevel released for WinBoard only.
+
+* winboard.c: Fixed ConsoleInputThread().  Needed to change CRLF to LF,
+not to CR.  This was stopping normal /ics mode from working.  Thanks to
+Asher Kobin for the bug report.
+
+* winboard.c: Fixed Raw(), EchoOn(), EchoOff().  Now they take effect
+immediately, not on the next console read after the one in progress.
+
+* winboard.c: Attempted to make WinBoard work with gnuchessx running
+directly on Windows (not remotely via rsh).  It now works on NT, but only
+if gnuchess is told not to think on its opponent's time ("easy\n" removed
+from initString).  The problem seems to be that GenerateConsoleCtrlEvent
+is not doing anything.  On Windows 95 beta 2, we get error messages on
+both reading and writing to gnuchessx; I didn't investigate why.
+
+3.2, patchlevel 0 -- Wed Dec  7 13:23:36 1994  Tim Mann 
+
+* Thanks to all the beta testers who gave me feedback: Josef Nelissen,
+Steve Booth, Evan Welsh, Dima Dakhnovsky, Chris Petroff, Peter Jansen,
+Derek Terveer, Michel van der List, Richard Lloyd, Shelly Mistry, and Mike
+Lee.  Sorry if I forgot anyone.  Thanks to Virendra Kumar Mehta for
+information about DYNIX/ptx.
+
+* Don't exit on keyboard EOF unless we get two in a row.
+
+* WinBoard only: added -localLineEdit switch to allow turning off local
+line editing if you really want to.  It is still a bad idea to let the
+echoing be done remotely, however; see below.
+
+* Fixed some configure problems on HP-UX.  [Steve Booth]
+
+* Fixed (I hope) configure problem on SunOS 5.3/Solaris 2.3.  [Josef Nelissen]
+
+* cmail bugfix from Evan Welsh (cmail 3.4).
+
+3.1, patchlevel 9 -- Fri Dec  2 23:54:56 1994  Tim Mann 
+
+* Beta distribution only
+
+* Always do local echo/edit of user typing in ICS mode.  Doing the echo
+downstream may seem nicer in some modes, and it can be hard to turn that
+echo off, but the echoed characters can be interleaved with ICS output
+and make it impossible to parse correctly.  For xboard this involved only
+a change to recommendations in the man page, as Raw() isn't implemented.
+For WinBoard, removing Raw() made a real difference.  Added code in 
+WinBoard to change /r/n back into /r on keyboard input, as we get the 
+former when Raw() is not called.
+
+* Do not issue ICS "refresh" command after we start to observe a game
+unless we get to the next prompt without seeing a board image.  Newest
+version of ICS doesn't require this refresh, but old versions around still
+do.
+
+* cmail bugfix and small code cleanup in LoadGame, from Evan Welsh.
+
+* Added keyboard accelerators N/P for LoadNextGame/LoadPreviousGame.  Evan
+Welsh request.
+
+* Using "-" on the command line as a filename for loading (saving) games
+or positions specifies the standard input (standard output).  Alain Picard
+suggestion.
+
+* On WinBoard only, a command line option without a leading '-' or '/' is
+now taken as the value of -lgf.
+
+* Changed to not use stdin, stdout, stderr as initializers in backend.c;
+needed for GNU libc compatibility.  You also must build parser.c with flex
+(not lex) if you are using GNU libc, to avoid having the same problem
+there.
+
+* Changed WinBoard to avoid using "overlapped" input on the console.  It
+now seems to fully work on Windows 95 beta 2.
+
+* Improved comment popups on WinBoard.  Now newlines are handled properly,
+and the plain Comment popup window doesn't disappear and reappear when we
+step to a new move with a new comment.
+
+* Fixed bugs in detecting the absence of the time and otim commands.
+
+* Added built-in implementation of rcmd protocol to WinBoard.  Windows NT
+does not implement passing signals through rsh, and Windows 95 does not
+have rsh at all.
+
+* Added -remoteUser option.
+
+3.1, patchlevel 8 -- Mon Nov 28 15:26:07 1994  Tim Mann 
+
+* Beta distribution only
+
+* Rearranged ChangeLog file into reverse chronological order to be closer
+to GNU standards.
+
+* Integrated new cmail code from Evan Welsh (including cmail RCS rev 3.2).
+Includes a bug fix to TruncateGame.
+
+* Updated ICS address to be chess.lm.com.
+
+* Bug fixes to handling the aftermath of FatalError.  Thanks to Chris
+Petroff for the bug report.
+
+* Test for remsh before rsh, other fixes for HP-UX.  Thanks to Richard
+Lloyd.  I wasn't able to do all the things he suggested, so there may
+still be some rough edges in building on HP-UX.  See the FAQ file for hints.
+
+* Bug fix; added missing check for HAVE_SYS_SYSTEMINFO.  Thanks to Josef
+Nelissen for testing on Solaris 2.x.
+
+* Updated WinBoard to match xboard.  (WinBoard still has a few option
+dialogs that don't exist in xboard.)
+
+* Changed Hint output to a popup.
+
+* ShowThinking output and move output no longer overwrite each other.
+ShowThinking output won't appear if the displayed position is not current. 
+ShowThinking output in TwoMachines mode made clearer and documented.
+
+* Implemented --enable-ptys and --disable-ptys arguments to configure.
+
+* Fixed Book and Hint code to work over a pty with echo enabled and tabs
+expanded to spaces.  Thanks to Dima Dahknovsky for the bug report.
+
+* Moved Attention calls from all over xboard to one place, inside
+SendToProgram.
+
+* Added bulletproofing to ShowThinkingEvent.
+
+* Added code to handle "refresh N" boards that come in from ICS properly,
+assuming ICS is changed to mark them with a new relation code (-3).
+
+3.1, patchlevel 7 -- Sun Nov 13 22:16:01 PST 1994 -- Tim Mann
+
+* Beta distribution only
+
+* Changed ShowThinking to just show the current best line in the
+DisplayMessage area, instead of dumping everything to stdout.
+
+* Installed new cmail (RCS rev 3.1) and cmail.man (RCS rev 1.10), and
+changes to cmail code in backend.c, from Evan Welsh.
+
+* Miscellaneous minor fixes.
+
+3.1, patchlevel 6 -- Fri Nov  4 12:53:53 PST 1994 -- Tim Mann
+
+* This patchlevel was not actually released to anyone.
+
+* Updated the pty code to be based on GNU Emacs 19.24, and moved it to a
+separate file.  It was hard to split out just the pty configuration from
+all the stuff emacs does with its custom configure script and .h files,
+but I did my best.
+
+* Converted from imake to GNU autoconf.  This was a serious upheaval.  
+
+* Put in code to help trap "error gathering move list" problem reported by
+Michel van der List if it recurs.  I couldn't reproduce it.
+
+3.1, patchlevel 5 -- Mon Oct 31 21:12:00 PST 1994 -- Tim Mann
+
+* Beta distribution only.
+
+* We now test for checkmate or stalemate in EditGame mode after every user
+move, and in LoadGame mode whenever we hit the end of a game without
+seeing a PGN end marker.  cmail needs an update to deal with this
+correctly; Evan promises one.
+
+* Bugfixes in new move generator.  Thanks to Mike Lee for reporting one of
+the bugs.
+
+* Imakefile was omitted from patchlevel 4.
+
+3.1, patchlevel 4 -- Mon Sep 19 18:19:46 PDT 1994 -- Tim Mann
+
+* Beta distribution only.
+
+* The move generator includes a mate tester.  Initially this is used only
+by cmail, and even that usage needs further work.
+
+* Wrote a true move generator and used it to replace all the move
+disambiguation and legality checking code in parser.l.  The move generator
+is capable of dealing correctly with en passant and castling availability,
+but the rest of the program still does not keep track of this information.
+
+* Bug fix: xboard did not handle "foo has made you an examiner of game 23"
+message.  Thus you could not use examine features until the next board
+came in, showing your new relation to the game.  Thanks to POOKIEWOOKIE on ICS
+for the bug report.
+
+* Added AutoObserve feature.  Thanks to Chris Petroff for the idea.
+
+* Added Book feature to use new gnuchess "bk" command.  Mike McGann request.
+
+* Redid code to handle missing "time" command in gnuchess, because latest
+gnuchess no longer sends a response to this command.  
+
+* Eliminated need for -DFLEX.  Thanks to Michael Shields (Vladimir?) for
+the idea.
+
+* Added missing code to implement MoveNow in TwoMachines mode.
+
+* Added ShowThinking feature.  Thanks to Richard Lloyd for the idea.
+
+* Applied patches from Evan Welsh; some fixes and improvements to the
+cmail code.
+
+* Fixed bug in moving from EndOfGame mode to MachineWhite or MachineBlack,
+introduced in previous patchlevel.  Also fixed related bug in ending a
+game in ICS mode; was entering EndOfGame mode instead of IcsIdle.
+
+* Added patch to implement internetChessServerLogonScript flag, from Kevin
+O'Connor.  Thanks!
+
+3.1, patchlevel 3 -- Wed Sep  7 13:22:07 PDT 1994 -- Tim Mann
+
+* Beta distribution only.
+
+* Merged in new cmail code from Evan Welsh.  He added the ability to have
+more than one game per message, needed for official IECG matches.  I added
+the ability to resign or offer/accept/decline a draw in a cmail game.
+
+* Bugfix: invalid -tc option caused segmentation fault; DisplayFatalError
+was called too early in initialization.  Georges Honore reported this bug.
+
+* Decided to keep EndOfGame mode as an element of the user interface---it
+means that a gnuchess game or loaded game has ended, and the user must
+explicitly select EditGame to edit it, rather than just being able to
+enter more moves freely.  But internally there is no longer an invariant
+tying this mode to whether the chess program is running.
+
+* Zippy bugfix: Was saving only the final position in the -sgf file when
+the game ended by something other than resignation or flag.  Also fixed
+the longstanding bug that Zippy would think the final board of such a game
+was a new game and restart the chess program.
+
+* Now does a better job of faking castling availability in FEN.  We still
+don't really keep track of it, but now at least we don't say that castling
+is still available when the king or rook is not on its home square.
+
+* Bugfix: Initial board of game history for wild games was going through
+too much processing, causing us to forget the game length, which is now
+needed by ParseGameHistory.  This was causing problems with resuming
+adjourned wild games.
+
+* Updated ICS host to ics.onenet.net.
+
+* Zippy now accepts challenges where the opponent specified his color.
+
+* Added ZIPPYPASSWORD2 to let operator give commands directly to gnuchess.
+
+* Bitmap directory can include alternative icons now, too.
+
+* Handle "Game * (*) has no examiners" message from ICS.
+
+* Revamped window title and icon name selection.
+
+3.1, patchlevel 2 -- Sun Jun 12 17:16:28 PDT 1994 -- Tim Mann
+
+* "Beta" distribution for Zippy users only.
+
+* Bugfix: common.h was assuming that X11 type Boolean is char, which is
+not always true.  This might have caused all sorts of obscure bugs!
+
+* Installed new bitmaps from Elmar Bartel as the default.  Many thanks!
+The old bitmaps can be used by changing the "bitmaps" symbolic link before
+compiling xboard, or by using the -bitmapDirectory option at runtime.
+
+* Loading a game that ends with the PGN unfinished symbol ("*") now always
+leaves you in EditGame mode.
+
+* Added documentation of -icscomm to man page.  Thanks to Maarten Remkes
+for the linux script.
+
+* ^C now kills gnuchess as well as xboard.  Thanks to Dima Dakhnovsky for
+reminding me how to do this.
+
+* Bitmap icon color now indicates player to move.  Stuart Cracraft
+suggestion.
+
+* Changed piece bitmap flags to have just one flag, which points to a
+directory full of bitmaps, instead of a flag for each bitmap.  Also
+changed bitmap naming convention.
+
+* "Connection closed by ICS" is no longer a FatalError popup.  This was
+too annoying in the normal case where the user typed "quit".
+
+* Changed default font to 14 pixels instead of 10 points.  This seems to
+make it close to the size I want it to be on more displays.
+
+* Major mode (GNU Chess, etc.) appears in title bar.  Stuart Cracraft
+request.
+
+* Bug fix: EditGameEvent, MachineBlackEvent, MachineWhiteEvent, and
+TwoMachinesEvent were calling PauseEvent to get out of pause mode, which
+now has undesired side effects, such as advancing the display to the
+forwardMostMove.  It works fine to just set pausing = FALSE instead.
+
+* IcsExamining mode now lets you access ICS edit position commands using
+the same popup menus as xboard's EditPosition mode.  Thanks to DAV on ICS
+for inspiring the idea.
+
+* Corrected test for gcc on HP in Imakefile; thanks to Richard Lloyd.
+
+3.1, patchlevel 1 -- Wed Jun  1 16:25:11 PDT 1994 -- Tim Mann
+
+* Added parser.c.lex and parser.c.flex to the distribution.
+
+* Added HP gcc options to Imakefile, from Mats Nylen.
+
+* EndOfGame mode no longer highlights EditGame mode indicator, because the
+modes really do differ.  I would like to get rid of EndOfGame mode in the
+future, at least as far as users can see.
+
+* Larger %a in parser.l, needed for RS/6000 users.
+
+* Minor improvements to Mail Move error messages.
+
+* When -debug flag is given to xboard, -v is passed to cmail.
+
+* Old Save Style uses "1. ..." instead of "1..." when black moves after a
+comment; more like xboard 3.0's actual style.
+
+* New version of cmail from Evan Welsh.  Looks for UCB Mail in a more
+portable way and has some minor bug fixes.
+
+* Bug fix: Saving a FEN position while in EditPosition mode with black to
+play was showing white to play in the saved position.
+
+3.1, patchlevel 0 -- Fri May 20 16:36:15 PDT 1994 -- Tim Mann
+
+* This is the first general release since 3.0, patchlevel 9.  Releases
+since then have been limited-distribution or beta releases.
+
+* Thanks to my version 3.1 beta testers: Dmitry Dakhnovsky, Ed Hanway,
+Richard Lloyd, Mike McGann, Shelly Mistry, Josef Nelissen, Chris Petroff,
+Jack Robertson, Michel van der List, Ky Macpherson, Derek Terveer, and
+Evan Welsh.  Sorry if I've forgotten anyone who gave me feedback.
+
+* Updated man page.
+
+* Minor cleanup on menu sensitivity code.
+
+* Integrated another even better version of cmail from Evan Welsh,
+including some code he supplied in xboard itself.
+
+* A few more fixes to cmail support.
+
+* Automatically update clocks after an ICS "moretime" command.
+
+* Handle ICS automatic examine mode (set examine 1) after a game.
+
+3.0, patchlevel 14 -- Tue May 17 13:41:44 PDT 1994 -- Tim Mann
+
+* Beta test release only.
+
+* Don't suppress prompt on first board of game being examined; otherwise
+it looks like nothing happened at all (i.e., like you're lagged).
+
+* Added StopExamining and StopObserving (Chris Petroff suggestion).
+
+* Made Reset do a refresh on ICS.  John Chanak's original ICS code for
+xboard tried to do this; I finally decided it was a good idea after all.
+
+* Fixed bugs in handling updates that come in while you are pausing in
+examine mode.  This is pretty tricky to do right.
+
+* Made un-Pausing immediately pop you to the current position.  This is
+always necessary in examine mode, since the game may have changed under
+you; your remembered moves might no longer be right.  So I made it do the
+same in all modes.
+
+* Took Detach Examine mode back out...used Pause mode for this instead!
+
+* Put in a trap for the GNU Chess bug of printing an Illegal Move message
+when its own hint move is illegal.
+
+* Attempted to fix a Zippy bug; bogus "exited unexpectedly" messages after
+it checkmates its opponent.  This involved adding an argument to GameEnds
+to say who says it ended (ICS, GNU, etc.)  and taking different actions in
+different cases.  Unfortunately, this just restored an older Zippy bug, where
+Zippy restarts gnuchess when it gets the board with the final position,
+because GameEnds still puts xboard in EndOfGame mode.  Sigh.
+
+* We now capture elapsed time on last move when getting game history.
+(Josef Nelissen bug report)
+
+* Rewrote code to redisplay last file title so it really works.
+
+* Fixed bug in oldSaveStyle.
+
+* Larger %a and %o were needed for lex.
+
+3.0, patchlevel 13 -- Mon May 16 16:26:22 PDT 1994 -- Tim Mann
+
+* Beta test release only.
+
+* FatalError popups stay on the screen now.  If the error is really fatal,
+all functions are disabled, and the program exits when you press OK.
+
+* Redisplay last file title when using Load (Next/Previous/Same) Game.
+
+* Zippy understands new match challenge message format on ICS.
+
+* Added Revert command.
+
+* When examining a game on ICS, < > buttons do ICS backward/forward
+commands, unless you set the Detach Examine option.  Thanks to Dima
+Dakhnovsky for the idea.
+
+* Fixed various minor problems in cmail mode.
+
+* cmail generates the tags now.  New version of cmail from Evan Welsh.
+
+* cmail mode won't let you do MailMove unless the currently displayed
+position is exactly one move past the end of the game you loaded.
+
+* Fixed building of man pages in Imakefile
+
+* Updates to INSTALL file
+
+3.0, patchlevel 12 -- Sat May  7 21:10:03 PDT 1994 -- Tim Mann 
+
+* Beta test release only.
+
+* Brought man page up to date.
+
+* Added Shift+R to resign from keyboard.
+
+* Some items on Action menu available in GNU Chess mode now.
+
+* Revamped Action menu.
+
+* Reordered functions in backend.c as a small step toward reorganizing
+this whole mess.
+
+* Generate TimeControl PGN tag.
+
+* Get type of ICS game (e.g., rated blitz) and save in PGN tags.
+
+* Bug fix: Clocks were not redisplayed when entering EditGame mode.
+
+* Bug fix: Clocks were not being redisplayed after loading a game file
+with -td 0, so they could show the wrong color active.
+
+* Bug fix: Chess programs would be killed and match mode would exit
+prematurely when loading a PGN game fragment ending with "*".
+
+* ICS command "sposition" no longer confuses xboard.
+
+* Integrated new version of cmail (with support code in xboard) from Evan
+Welsh.
+
+* Added TruncateGame, MoveNow, RetractMove, and QuietPlay.
+
+* Bug fix: switching between MachineWhite and MachineBlack was not calling
+Attention().  Reported by Dino Dini.
+
+* More improvements to INSTALL and Imakefile.
+
+* Pack moves into 79 character lines in PGN output.  We don't generate
+check indications, and we always break the line before the result,
+so this is not quite PGN export format.
+
+* Use FEN tag in PGN.
+
+* Improved finding and counting of game starts in save files.
+
+* Negative position or game numbers in -lpi/-lgi mean to seek to that byte
+offset.  Hook for possible future features, not in man page.
+
+* Detect and handle absence of either "time" or "otim" commands in
+gnuchess.
+
+* Don't use "promote" command to ICS anymore.
+
+* Handle switching sides and taking back moves on FICS.
+
+* Handle flip state flag in style 12 board.
+
+* Handle examine mode on ICS.
+
+* Improved error popups for various kinds of illegal moves.
+
+* Suppress unasked-for hints from gnuchess (which it generates in post
+mode).
+
+* Load/save position functions use FEN.  Old style also supported.
+
+* Added detailed error messages if loading a bitmap file fails.
+
+* Small board has 2-pixel lines between squares instead of 3-pixel.
+
+* Added OldSaveStyle and AboutGame.
+
+* Renamed ForceMoves to EditGame.
+
+3.0, patchlevel 11 -- Tue Sep 21 15:25:36 PDT 1993 -- Tim Mann 
+
+* The following changes were present in xboard 3.0, patchlevel 11, but the
+first group did not make it into WinBoard 3.0 until later.  xboard
+3.0.pl11 was a limited-distribution release only, mostly to Zippy users.
+
+* Man page minor fixes.
+
+* Added a missing file close.
+
+* Removed automatic error popdown on Reset, which was destroying some
+error messages before they could be read.
+
+* Fixed char vs. unsigned char warnings on bitmaps.
+
+* Use ICS board style 12.  Some improvements to ICS parsing.
+
+* Comment window is now labelled with the move the comment is on, and
+comments don't pop down when you step to the next move.
+
+* Save files now in PGN format.
+
+* Support for loading PGN files.  PGN tags pop up when a PGN game file
+is loaded.
+
+* More info in INSTALL and Imakefile about building for Suns (and
+other systems).
+
+* WinBoard 3.0 patchlevel 11 split off from an early version of xboard
+3.0 patchlevel 11, so it does not have all the features of that
+patchlevel.  The following changes made it into both xboard and
+WinBoard:
+
+* Made Comment dialog non-modal in WinBoard.
+
+* EndOfGame mode is now more transparent.  It looks like ForceMoves
+mode except that there is no chess program running.
+
+* Small bug fixes in clock management.  Most noticeably, pausing when
+it is gnuchess's move now works as documented (again).
+
+* Add minimal support for -icscomm option.  Not documented yet because
+I haven't sorted out the issues with setting the tty modes on the comm
+port device, or with locking it properly.  But it's usable by wizards.
+
+* Don't restart the chess program upon Backward event from EndOfGame mode.
+
+* Suppress extra prompt after ICS sends us a board.
+
+3.0, patchlevel 10 -- Sat Sep 11 18:44:03 PDT 1993 -- Tim Mann 
+
+* Beta test release only.
+
+* Zippy now plays chess.  zippy.c and zippy.h are still not included
+in the standard distribution, but are available on request.
+
+* Switched to using style 12 on ICS.
+
+* Updated man page, and documented use of XBoard*form.translations to
+add more shortcut keys.
+
+* Added shortcut keys "d" to claim/offer/accept a draw, and "t" to
+call flag.  Suggested by venu on ICS.
+
+* More explicit instructions in INSTALL file.
+
+3.0, patchlevel 9 -- Tue Sep  7 14:02:00 PDT 1993 -- Tim Mann
+
+* General release, minor update to 3.0.pl8.
+
+* Loosened checking on whether it's okay to start a move, to satisfy
+ICS ultra-blitz players.  Now we don't check whether it's your turn
+until you let go of the piece.
+
+* Parser now recognizes "+-+" as meaning the game ended in a draw.
+
+* Got rid of S_NONE symbol, which seems to conflict with some symbol
+Sun defines.
+
+* Tweaked the man page.  Clarified that there is currently no way for
+two people running copies of xboard to play each other without going
+through the Internet Chess Server.
+
+* Fixed a bug in color name conversion.  Asking for two different
+colors whose names were the same in the first four characters would
+get you two copies of the first one.  Thanks to Volker Zink for the
+bug report.
+
+* Improved confusing Usage() message.
+
+* Added a bunch of Sun information to the Imakefile and INSTALL file.
+Thanks to Ed Hanway, Arik Klingensmith, and others who responded.
+
+* Test for defined(WIN32) instead of !defined(unix).
+
+* Avoid using (void *) type with non-ANSI C compilers.  Thanks to
+James Altucher for the bug report.
+
+3.0, patchlevel 8 -- Thu Sep  2 12:23:01 PDT 1993 -- Tim Mann
+
+* Note: Patchlevel 8 was the first non-beta release of xboard 3.0
+
+* Added cmail to distribution.  Contributed (and still maintained) by
+Evan Welsh.
+
+* Bug fix: -queen option wasn't initializing menu check.  Reported by
+Pat Surry.
+
+3.0, patchlevel 7 -- Thu Aug 26 13:23:24 PDT 1993 -- Tim Mann
+
+* Sent WinBoard 3.0.pl7 to Torre on ICS
+
+* Added parser.h to hold the interface to parser.l
+
+* Upgraded COPYING file and copyright notices to GNU GPL version 2.
+
+3.0, patchlevel 6 -- Tue Aug 24 15:16:13 PDT 1993 -- Tim Mann
+
+* We no longer display intermediate positions or intermediate comments
+while loading a game file with -timeDelay 0 or loading an opening to
+start up a -matchMode game.
+
+* Loading an empty game from an xboard save file now gives a status
+message "No moves in game" instead of an error popup saying "Game not
+found in file."
+
+* Added comment.awk to distribution.
+
+3.0, patchlevel 5 -- Tue Aug 17 16:45:54 PDT 1993 -- Tim Mann
+
+* Bug fix:  xboard would crash if it couldn't get all its colors; now
+it switches to monoMode instead.  Also, xboard was trying to convert
+color resources even when using a b/w display.  Reported by Larry
+Rogers.
+
+* Bug fix: Declared fields of TimeMark as signed so that we get signed
+instead of unsigned arithmetic.  SubtractTimeMarks was breaking on
+Alpha AXP (which has 64-bit longs) with old declarations.  Reported by
+Michel van der List.
+
+* Bug fixes:  Keyboard accelerators now work after EditComment window is
+popped down.  Iconize keyboard accelerator now works even if xboard
+was started with -iconic flag and later deiconized.
+
+* Bug fix:  The routine that tests whether a move is illegal because it
+would leave you in check was not handling e.p. captures properly.
+Reported by Patrick Surry.
+
+* Bug (?) fix:  Was adding time to clocks at time control even when
+loading a game file.  Actually it's not entirely clear how time
+controls should be dealt with when some moves are loaded from a file
+or clicked in with ForceMoves.  For now ForceMoves mode does add the
+time (because it can be used to change moves during a live game), but
+LoadGame mode does not.
+
+* Updated usage message.
+
+* Previous attempted fix to matchMode had broken TwoMachines mode and
+generally needed more work.  Also simplified command line interface to
+matchMode.
+
+3.0, patchlevel 4 -- Thu Aug  5 14:17:18 PDT 1993 -- Tim Mann
+
+* Thanks again to the beta testers listed for 3.0 patchlevel 3, and also
+Desnogues, Steve Cariglia, Niklas Engsner, Mark Silver, and Roger Rowe.
+
+* Reorganized man page, splitting OPTIONS into subsections.
+
+* matchMode was very broken; fixed.
+
+* Changed convention for turning off command line options from --opt
+to -xopt, to be less inconsistent with GNU standards.  Also changed
+the long command line options to take True/False arguments like
+resources; seems to make more sense this way.
+
+* Added AlwaysQueen option -- suppresses promotion dialog and always
+promotes to a queen if you move a pawn to the last rank.  Has no
+effect on gnuchess (or your ICS opponents!) -- they can still
+underpromote.
+
+* Subtracted an extra fudge term when determining how wide message and
+title widgets should be.  This fixes a problem some beta testers had.
+Wish I knew why it's needed.
+
+* Bugfix in parser; symptom was that you couldn't do LoadGame after
+observing a game on ICS.
+
+* Bugfix in Forward; didn't work after game ended while Pause was turned on.
+
+* Removed bogus execute bits on .h files.
+
+* Use REMOTE_SHELL and TELNET_PROGRAM definitions.
+
+* MachineWhite and MachineBlack now work from TwoMachines mode.
+
+* Popping down an error message with the [ok] button was not turning off
+the errorUp flag, so the next move would cause xboard to try to pop it
+down again, resulting in a wild memory reference and sometimes a crash.
+
+3.0, patchlevel 3 -- Tue Aug  3 17:40:27 1993  -- Tim Mann
+
+* Thanks to my beta testers: Patrick Surry, Takuya Kojima, Robert J. Luoma,
+Chris L.  Petroff, Richard K. Lloyd, Michel van der List, Craig Metz,
+Antoon Frehe, Simon Clift, Shelly, Eric Peterson, Christopher Mitchell,
+Martin Koch, Ed Hanway, Steve Booth, Udo, Ken Hobday, and Joseph Duhamel.
+
+* Improved error messages for trying to move the wrong color pieces or
+to move when it's not your turn.
+
+* Special code for monoMode on 1-bit displays now understands displays
+where 1=white and 0=black.
+
+* Declare getenv() if <stdlib.h> not included; avoids a compiler warning.
+
+* Documented borderXoffset and borderYoffset.
+
+* Added -titleInWindow option for use with X window managers that
+don't let us set the title in the window banner.
+
+* Fixed error message printing in WinBoard; system error messages no
+longer appear as numeric codes.
+
+* The error message popup is now non-modal; you don't have to press the
+[ok] button before you can do something else.  In addition, the popup is
+positioned so that it doesn't cover up the board (too much), and making a
+move or otherwise clicking on the board pops it down.  (Not implemented in
+WinBoard.)
+
+* You can now call your opponent's flag in ICS mode by clicking on his
+clock. 
+
+* Fixed minor bugs in -flipView option and documented exactly how xboard
+decides which way to flip the view.
+
+3.0, patchlevel 2 -- Fri Jul 30 22:20:23 PDT 1993 -- Tim Mann
+
+* Added Autosave to Options menu.  Would be better to have Save
+Options dialog as in WinBoard, but this was quick to do and gives the
+most-needed functionality.
+
+* Changed "Reload Game" on menu to "Reload Same Game".
+
+3.0, patchlevel 1 -- Thu Jul  8 21:22:59 PDT 1993 -- Tim Mann
+
+* Sent a copy of patchlevel 1 to Patrick Surry to beta-test.
+
+* Added -cmail option that sets appData.cmailMode.  Currently a no-op.
+In the future this may set special modes for use by the cmail script
+for playing chess by email.
+
+* Added LoadNextGame, LoadPreviousGame, and ReloadGame to File menu.
+ReloadGame suggested by Patrick Surry.
+
+* Added -flipView command-line option.  Suggested by Patrick Surry.
+
+* Fixed bugs in parser.l:  (1) Pattern for "# xboard game file ..."
+needed to match to end of line.  (2) Start of a new file was not matching
+the ^ start-of-line character.  The fix for this is a kludge.
+
+* Made game counting code in LoadGame more robust, and made LoadGame
+able to detect the end of a saved partial game (by noticing the start
+of the next game) in game files created by XBoard itself.  We don't
+try to find the start of the next game that way in other kinds of game
+files, because the only way I can think of to do that is to look for
+another move #1, and that technique gets too many false hits.
+
+* Fixed recently introduced bug in LoadGame when game starts with a
+position diagram.
+
+3.0, patchlevel 0 -- Fri Jun 25 14:17:17 PDT 1993 -- Tim Mann
+
+* Changes in this patchlevel were too numerous to list.  Larger ones are
+listed below.
+
+* Added a popup dialog to enter and edit comments.  Inspired by some
+code from Patrick Surry.  Changed the normal read-only comment popup
+to the same style.
+
+* Added ICS init script feature from Karl Schwamb.
+
+* Added some ESIX fixes and OMIT_SOCKETS ifdef option, from Kayvan Sylvan.
+
+* Revamped code to allow use of flex instead of lex on parser.l.
+Using flex requires adding -DFLEX to defines in Imakefile.
+
+* Source code is split into front end (xboard.c), which knows about X
+and Unix, and back end (backend.c), which knows about chess, gnuchess,
+and the ICS.  There is also a front end for Windows NT.
+
+* Boolean command line options now use "-foo" to turn on and "--foo"
+to turn off instead of "-foo true" and "-foo false".  [Later -xfoo;
+see above.] 
+
+* Added menu commands to control autoflag, bell, and coords options.
+
+* User interface has a new look: (1) Menu bar instead of array of
+buttons.  A few very commonly used features have small buttons in
+addition to being on the menus. (2) Large font for clock.  (3) Pop-up
+dialogs for errors.
+
diff --git a/installer/WinBoard-4.2.7/Crafty-WinBoard/Crafty.rc b/installer/WinBoard-4.2.7/Crafty-WinBoard/Crafty.rc
new file mode 100644 (file)
index 0000000..4289d6d
--- /dev/null
@@ -0,0 +1,10 @@
+log off
+hash=48M
+hashp=8M
+learn=7
+ponder on
+swindle on
+resign 0
+book random 1
+book width 5
+exit
diff --git a/installer/WinBoard-4.2.7/Crafty-WinBoard/book.bin b/installer/WinBoard-4.2.7/Crafty-WinBoard/book.bin
new file mode 100644 (file)
index 0000000..4576599
Binary files /dev/null and b/installer/WinBoard-4.2.7/Crafty-WinBoard/book.bin differ
diff --git a/installer/WinBoard-4.2.7/Crafty-WinBoard/books.bin b/installer/WinBoard-4.2.7/Crafty-WinBoard/books.bin
new file mode 100644 (file)
index 0000000..f45cdf5
Binary files /dev/null and b/installer/WinBoard-4.2.7/Crafty-WinBoard/books.bin differ
diff --git a/installer/WinBoard-4.2.7/Crafty-WinBoard/crafty.doc.txt b/installer/WinBoard-4.2.7/Crafty-WinBoard/crafty.doc.txt
new file mode 100644 (file)
index 0000000..dda0725
--- /dev/null
@@ -0,0 +1,2112 @@
+
+
+
+
+
+
+
+         Crafty Command Documentation (version 18)
+      -----------------------------------------------
+Crafty  is nothing more than a long-time hobby of mine, dat-
+ing back to Blitz and later Cray Blitz.  People ask me how I
+keep doing this, and that is the one question that generally
+leaves me at a loss for words.
+
+Perhaps the most common question I'm asked is "is this  ver-
+sion  of Crafty some dumbed-down version of what you play on
+ICC or what you use at a computer chess event?"  The  answer
+is a resounding *NO*.  The current version is *exactly* what
+is running on ICC under this version number.   Note  that  a
+new  version  can, on occasion, introduce weaknesses or out-
+right bugs that were not present  in  previous  "gold"  ver-
+sions.   As  a result, you should be careful to back up your
+"favorite" before trying the latest and  greatest.   If  you
+aren't  satisfied with the new version, you can then go back
+to what you believe is a better version.
+
+If you are looking for the strongest playing computer  chess
+program  available,  you should likely look to Fritz, Rebel,
+Tiger, and the other commercial  entries.   There  you  will
+find  strong  opponents  with  polished interfaces that have
+been tested in a systematic and careful  way.   If  you  are
+looking  for  a program that plays good chess, has a reason-
+able set of features for you to use, is available in  source
+form,  and  one  where the author welcomes feedback, code or
+suggestions, then you are at the  right  place.   I  welcome
+comments  and  suggestions, and also feedback from ideas you
+try yourself that seem to work.
+
+Crafty is a state-of-the-art  computer  chess  program,  and
+uses  all  of  the  search algorithms you have probably read
+about, negascout search, killer/history move  ordering,  SEE
+(Static  Exchange  Evaluation)  quiescence move ordering and
+pruning, hash (transposition/refutation) tables as  well  as
+evaluation caches, selective extensions, recursive null-move
+search, and a host of other features that have been used and
+are  still  being  used in most computer chess programs.  If
+it's not in Crafty, either it is on the "to do" list, or  it
+has been tried, found wanting, and discarded.
+
+Chess Knowledge is growing, and suggestions (or even better,
+real code) are welcome.  This is  the  best  place  to  con-
+tribute  your  ideas,  because knowledge can be used to sup-
+plant search and make it play  better.   The  evaluation  is
+probably  the easiest place to start studying Crafty because
+of the comments and simplicity of using bitmaps, *once*  you
+get "into" them.
+
+My  purpose  for doing this is an exercise in computer chess
+efficiency.  I can't begin to count the number of  people  I
+know  that  started  from  scratch to write a chess program.
+
+
+
+
+
+
+
+
+
+
+
+
+
+Even larger is the group that started from scratch, and gave
+up  before  finishing, because of the basic size of the pro-
+ject.
+
+Crafty offers everyone a very clean starting point,  if  you
+are  fascinated by the bitmap chess board implementation (as
+I  am).   The  search  and  quiescence  code  is  reasonably
+straightforward, as is the evaluation,
+
+It  offers a great starting point, so that if you are inter-
+ested in trying a new search extension, you can  be  testing
+tomorrow,  rather  than  next year, because you start with a
+fully functional chess engine that is not a  "toy"  applica-
+tion,  but is a functional and "dangerous" chess player.  It
+offers a rapid start, although you can certainly replace  it
+piece  by  piece  until  it is "yours" if you want.  It also
+offers a fairly complete set of commands  and  an  interface
+for  a GUI as well as support for chess server play, so that
+testing and debugging your new ideas is greatly  simplified.
+
+If you'd like more information, please check out the read.me
+document  and  the  crafty.FAQ  that  are  distributed  with
+Crafty.  These contain recent news and specific instructions
+for commonly asked  questions,  like  "where  can  I  obtain
+tablebase files and how do I use them?"
+                    How to play a game.
+                    -------------------
+When  you execute Crafty, you will immediately be greeted by
+the prompt string "white(1): " and Crafty will wait for com-
+mands.  This prompt means it is white on move, and we are at
+move #1 for white.  You can first use any  of  the  commands
+from the alphabetic command listing below to tailor the game
+to your liking (time control, hash table size, book  random-
+ness,  etc.)  and then you have two choices.  If you want to
+play white, just enter your move, and Crafty  will  take  it
+from  there  and  make a move in response.  You will then be
+prompted by "white(2):" and it is your move again.   If  you
+would prefer to play black, just enter either "move" or "go"
+at the prompt and crafty will move for that side rather than
+accepting  a  move  from  you.   After it makes its move for
+white, you will then see the prompt "black(1): "  indicating
+it is now time for blacks first move.  You can enter a move,
+or you can once again enter "move" or "go" and  Crafty  will
+again  move  for  the current side, change sides, and prompt
+you for what to do next.
+
+If you find yourself continually using a set of commands  to
+configure crafty to play as you want, you can put these com-
+mands in a startup file called .craftyrc (Unix) or crafty.rc
+(DOS/Windows).   The  format  for this file is just like you
+would type the commands at the keyboard, with  the  require-
+ment that the last line of the file must be "exit" on a line
+by itself.  Using this, each time you start Crafty, it  will
+
+
+
+
+
+
+
+
+
+
+
+
+
+first  execute the commands from this file before it prompts
+you for input.
+
+While Crafty is running, you can control what  it  displays,
+but  here's a couple of samples to explain what it is saying
+and why:
+
+           depth   time   score    variation (1)
+            book moves {d4, c3, Nc3, d3, b3, c4, g3, b4, Be2, Bb5}
+            book   0.0s     70%    d4
+
+White(3): d4
+            time used:   0.01
+
+This is the normal output for those cases where Crafty is in
+book.   The book moves line gives the set of book moves that
+made the first selection cut (see the book selection  expla-
+nation  given  later), followed by the move actually played,
+in this case d4.
+
+If Crafty is out of book, then  the  output  looks  somewhat
+different as given below:
+
+   depth   time   score    variation (1)
+     4->   0.81    2.09    6. dxe4 Bxe4 7. Rad8 Qf2 8. Qb5
+     5      1.37    2.41    6. dxe4 Bxe4 7. Ne5 Qf4 8. Bxe4+
+Qxe4 9. f5
+     5->   1.88    2.41    6. dxe4 Bxe4 7. Ne5 Qf4 8.  Bxe4+
+Qxe4 9. f5
+     6     7.38      --    6. dxe4
+     6     11.90     1.97    6. dxe4 Bxe4 7. Rab8 Qf2 8. Qc7
+Nc5 9. Qe5
+     6    12.92      ++    6. Ne5
+     6    13.71    2.23    6. Ne5 Qg2 7. Ng6 h5 8. Nh4 Qg4
+     6->  15.59    2.23    6. Ne5 Qg2 7. Ng6 h5 8. Nh4 Qg4
+   time: 15.60  cpu:99%  mat:1  n:246565  nps:15927
+   ext-> checks:4706 recaps:1336 pawns:0 1rep:301
+   nodes  full:45951  quiescence:200614  evals:104657
+   endgame tablebase-> probes done: 0  successful: 0
+
+Let's take this stuff one line at a time.  Lines  that  have
+something like 4-> in the depth column are printed when that
+iteration (depth) is  completely  finished.   The  time  and
+score  columns  should  be obvious as to their meaning as is
+the PV, the sequence of moves that led to this  score.   One
+note  about  the  "score"  column.  As of version 18, Crafty
+displays the score with + values good for  white,  -  values
+good  for  black,  no matter which side it is playing in the
+game.  All output now follows this convention, from playing,
+to  analysis  mode,  to  annotating  your games, to whisper-
+ing/kibitzing on the chess servers, and so forth.   This  is
+unlike  other  engines,  but  once you get used to it, it is
+much less confusing when you remember that  negative  scores
+
+
+
+
+
+
+
+
+
+
+
+
+
+are good for black and bad for white, and vice-versa.
+
+the  line that has -- in the score column means that when we
+started depth 6, dxe4 turned out to be worse than we thought
+(notice  score  dropped  from 2.411 last search to 1.972 for
+this move this search.)  To resolve this, Crafty lowers  the
+lower  search bound (alpha) and re-searches the move to find
+the score.  The line with ++ means that this move  (Ne5)  is
+better than the best move so far, so Crafty raises the upper
+search bound (beta) and re-searches this move  to  find  the
+new score.
+
+the  first line of statistics gives the total time taken for
+this search, the cpu percentage which should stay at 98-100%
+unless your machine is heavily loaded or unless Crafty is in
+an endgame that is  having  lots  of  contact  with  endgame
+databases.  If this drops below 98%, it means that Crafty is
+not getting full CPU usage and will be playing  weaker  than
+normal.   The mat:1 is simply the true material score, since
+Crafty's positional scores are often larger than a pawn.
+
+               Alphabetic Listing of Commands
+               ------------------------------
+
+1.  alarm on|off  This command is used to  control  Crafty's
+"beep"  after  it  makes a move.  Turning this off will make
+Crafty "quiet" when it plays, but also makes it easy to miss
+a  move  if  you  are  using crafty to play in a tournament.
+This is primarily designed to make Crafty  tolerable  during
+late night matches.
+
+2.  analyze  This command puts crafty into analyze mode.  In
+this mode, Crafty starts computing for whichever side is  on
+move,  and  it  continues computing and showing its analysis
+until a move is entered.  This move is made, Crafty  changes
+sides,  and  starts thinking and printing analysis all over,
+but for the other side now.
+
+This command is useful to play through a game,  because  you
+get  instant  feedback  when you try a move.  If you want to
+try a different move from the one you just entered, use  the
+"back"  command  to  back  up one move, or use "back <n>" to
+back up <n> moves.  Note that one move is a single move  for
+the  last  player, not a move for both sides.  To unmake the
+most recent 2 moves (one for black, one for white) use "back
+2".
+
+3.    annotate|annotateh  <filename>  <colors|name>  <moves>
+<margin> <time> This command is used to annotate (make  com-
+ments in) a game that has already been played.
+
+The annotate command produces a file with the .can extension
+added to the original name.  This  file  will  contain  pure
+
+
+
+
+
+
+
+
+
+
+
+
+
+ascii  information  from  the  annotation pass.  "annotateh"
+produces an HTML file instead (with  the  .html  extension).
+This  includes  the  normal  output,  plus  a nice bitmapped
+graphical board display for every position where crafty  had
+'something to say'.
+
+<filename>  is  the name of the file that has the game moves
+stored  in  it.   This  should  be  a  PGN-compatible  file,
+although  Crafty  can  read nearly any file with chess moves
+and convert it to pgn using the "read" and  "savegame"  com-
+mands to perform the conversion.
+
+<colors|name>  indicates  which  side  Crafty will annotate.
+The valid choices are w, b, and wb/bw for white only,  black
+only,  and  both, respectively.  Crafty will search and pro-
+duce results for the indicated color only, making moves  for
+the other side silently as they are read in.
+
+Alternatively,  you can specify the player's name (useful if
+you want to annotate several of your own games in one  large
+pgn file, for example, and you alternated colors so that you
+can't pick the right one easily).  Crafty will  then  figure
+out  which side to annotate for in each game.  Note that the
+name is case-sensitive, but that you only have  to  enter  a
+string  that is unique in the name field.  IE if one name is
+"Anatoly Karpov" and the other is "unknown" then  specifying
+Karpov  as  the  name  would  be  sufficient.   If  the same
+'string' appears in both names, Crafty will complain.
+
+<moves> indicates the moves that should  be  annotated.   If
+this  is  a  single  integer, annotation starts at this move
+number (for the color given above) and proceeds for the rest
+of  the  game.   If  a range is given, as (20-33), then only
+moves 20-33 inclusive are annotated.  To annotate  the  com-
+plete game, you can use 1-999.
+
+<margin> gives a score "window" that controls whether Crafty
+will produce comments (see below).  The larger  this  number
+this  number,  the fewer annotations Crafty will produce.  A
+negative number will result in an annotation for every  move
+selected.
+
+<time> indicates the time limit for each search.  Since each
+move selected requires two searches, you can take the number
+of  moves,  double  this  number  and  multiply by <time> to
+determine how long the annotation process will  take.   This
+time is in seconds.
+
+How it works.  Suppose you use the command "annotate game1 w
+1-999 1.000 30" This asks Crafty to read the  file  "game1",
+and  annotate the white moves for the entire game.  The mar-
+gin is 1 pawn and the search time limit is 30 seconds.   The
+output  for the annotate command is found in <filename>.can,
+
+
+
+
+
+
+
+
+
+
+
+
+
+in this case this is game1.can.
+
+Crafty first searches the move actually played in  the  game
+to  determine  the  score  for it.  Crafty then searches the
+same position, but tries all legal moves.  If the score  for
+the best move found in this search is greater than the score
+for the move actually played plus the margin, then a comment
+is  added  to  the  output  file.  This output file is quite
+short, with all the game moves (plus any  PGN  tags  in  the
+original,  for  identification purposes) plus the brief com-
+ments.  An annotation looks like this:
+
+{real_value (depth:best_value PV moves)}
+
+real_value is the score for the move actually played.  depth
+is  the  depth Crafty searched to produce the best_value and
+PV for what it thinks is the best sequence of moves for both
+sides.   If you set <margin> to 1.000, you are asking Crafty
+to only annotate moves that either lost a pawn or  more,  or
+moves  that  failed to win a pawn or more.  If you set <mar-
+gin> to .300, you are asking for annotations  for  any  move
+that  makes  the  score  drop  about 1/3 of a pawn below the
+value for the best move Crafty found.
+
+If you have other moves you would like to see analyzed  dur-
+ing  this  annotate process, at the point where the move can
+be played, insert it into the PGN file as an  analysis  com-
+ment,  surrounded  by () or {} characters.  Crafty will pro-
+duce analysis for this move as well.  If more than one  move
+appears  inside  a  single set of delimiters, only the first
+will be analyzed.  To force Crafty to analyze more than  one
+move,  enter them like this:  (move1) (move2) as though they
+were two separate comments.
+
+4.  ANSI on|off  This command is used to control whether  or
+not  Crafty attempts to display its move in reverse video or
+not.  For PC's, Linux, and most Unix boxes, this works fine.
+Should you find yourself playing crafty via a dumb terminal,
+this might hose the terminal and interfere with your ability
+to  see  or  input  moves.   If  moves  are not displayed in
+reverse video, it's probably wise to turn this off to  avoid
+hanging the terminal you are using.
+
+5.   black|white   This  command  simply toggles the side on
+move.  if it is white to move, and you enter white,  nothing
+happens.   If  it is white to move and you enter black, then
+it becomes blacks turn to move  immediately  from  the  same
+position.  Used only infrequently.
+
+6.  book (see the book explanation near the end of this doc-
+ument for a full explanation of this command  and  its  many
+options.)   Note  that  there are special commands available
+(*only*   on   the    command    line,    *not*    in    the
+
+
+
+
+
+
+
+
+
+
+
+
+
+crafty.rc/.craftyrc  files)  to  direct  crafty  to specific
+directories for the book files (bookpath=/a/b/c), the table-
+base   files   (tbpath=/i/j/k)   and  the  log  files  (log-
+path=/x/y/z).  Note that these commands can *only*  be  used
+on  the  command  line, because they must be executed before
+the  engine   is   initialized.    Putting   them   in   the
+crafty.rc/.craftyrc file will produce error messages without
+affecting how the files are opened.
+
+If you need to specify multiple  directories  (tbpath  only)
+you  may  do  so  by using "tbpath=path1:path2:path3:etc" or
+else       use       the       more        Unix-        like
+"tbpath=(path1:path2:path3:etc)"  instead.   The  paths  are
+separated by ":" (colon) characters and everything is  case-
+sensitive  as  usual.   For dos/windows users, the separator
+can be a semi-color (;) or a comma(,)  to  avoid  the  drive
+designation ambiguity.
+
+7.   cache=N   This  command is used to alter the cache size
+used for endgame database probes.  N can be a  simple  inte-
+ger,  representing  the  number of bytes to use or it can be
+specified as nK or nM representing n * 1024  bytes  or  n  *
+1024  *  1024  bytes.   This  should  be in multiples of the
+database "chunk" size, which might vary.  Using the nM  form
+guarantees that you will have a reasonable number.
+
+8.    clock  <ctime>  <otime>   This  command  is  primarily
+intended for use when Crafty is  playing  in  a  tournament,
+such  as the WMCCC or WCCC events.  If the operator is some-
+what slow in entering moves, or forgets to  stop  the  clock
+after making a move for Crafty, the chess clock for the game
+will drift from the values that Crafty maintains internally.
+<ctime>  is the time (in minutes or hh:mm format) crafty has
+left until the next time control, and <otime> is  the  oppo-
+nent's  remaining  clock  time.  This command can be used at
+any time, but will only affect the  time  per  move  *after*
+crafty makes the current move and starts to think about what
+the opponent might do next.
+
+9.  computer  This command usually  comes  from  xboard/win-
+board,  but  can  be  used  at any time to tell Crafty it is
+playing a computer.  This will prevent some things from hap-
+pening, such as a draw score that varies, as well as adjust-
+ing the book selection code to be more selective in what  it
+plays.
+
+10.   display   this  command  is  used  to display the game
+board.  This board is displayed using the ICS style #1  type
+of  ASCII  display,  with  white always at the bottom of the
+screen, black at the top.  Very  unusable  to  play  a  game
+with,  but  good  to verify a position after it has been set
+up.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+This  command  is  also  used   to   display   the   various
+piece/square  tables,  by  typing  "display  <piece>"  where
+<piece> is replaced by pawn, knight, bishop, rook, queen  or
+king.   The board is oriented in the same way as the display
+board with a one-to-one correspondence between the  squares.
+Perhaps  useful  for  curiosity,  but not for anything else.
+These values can not be modified by the user.
+
+The final version of this command is used  to  control  what
+kind of output you will see when crafty runs.  Currently the
+following options are available.
+
+       display time:  this  will  make  Crafty  display  the
+     amount of time each side takes after making a move.
+
+       display  changes:   this will make Crafty display the
+     PV each time it changes during  the  search,  including
+     when a move fails high or becomes a new best move.
+
+     display  variation:   this will make Crafty display the
+     PV at the end of each iteration, but it will only  show
+     the  best  PV  for the entire iteration, not all of the
+     changes.
+
+     display stats:  this enables  basic  search  statistics
+     output including time, nodes and so forth.
+
+     display  extstats:   this enables extended search stats
+     including  the  hashing  statistics,  search  extension
+     statistics and so forth.
+
+     display movenum: causes all PV output to have move num-
+     bers embedded in them to make the PV possibly easier to
+     read.   This  causes the PV to look like this:  12. ...
+     Nxe4 13. Bxe4 h6 rather than simply Nxe4 Bxe4 h6.  This
+     is very helpful when playing on a server and whispering
+     or kibitzing analysis.  It will  also  be  useful  when
+     crafty  is  run  from  within a database program as the
+     move numbers will sync up with the actual game.
+
+     display moves:  will display each root move  as  it  is
+     searched,  along  with  updating the search time at the
+     bottom of the screen, so you can see what move is  cur-
+     rently being analyzed.
+
+     display general:  will display general information mes-
+     sages whenever Crafty wants to tell you  something  (ie
+     "clearing  hash tables" or other such things like "Mate
+     in n moves."
+
+If you put a "no" in front of any  of  these  options,  that
+will disable that particular type of output.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+11.   draw  offers Crafty a draw.  It generally will look at
+the value returned by the last search, and compare  it  with
+the  value returned by an internal function DrawScore().  If
+the search value is not above this result, then Crafty  will
+accept the draw.  If the search value is above the theoreti-
+cal value for a draw, Crafty will decline  the  draw.   Note
+that  crafty  will  offer  draws based on internal analysis.
+When it offers a draw, you can respond with "draw"  although
+the game does not really end until you exit Crafty.
+
+12.  drawscore N sets the draw score (or contempt factor) to
+N.  If you want crafty to avoid draws, set  this  number  to
+something  that  is negative.  IE -50 says that a repetition
+(draw) is the same as being 1/2 pawn down.   Setting  it  to
++100  will  make it try very hard to draw because that looks
+like it is winning a pawn when it does so.  Note  that  this
+is dangerous (either way) as a -50 in a king and pawn ending
+is very likely dead lost...  and a repetition is better.
+
+13.  echo <text>  This command is  normally  used  inside  a
+command file that you are going to use to "feed" crafty some
+positions for analysis or whatever.  Since crafty depends on
+the  operating  system  to  echo commands as they are typed,
+commands read in from a file are  "invisible."   This  gives
+you  the ability to insert commands into such a file so that
+crafty displays a message on the screen to give you an  idea
+of where it is in processing the file.
+
+14.   edit   This command has been "cloned" from GnuChess to
+provide an interface with Xboard.  After entering the "edit"
+command,   you   are   in   "edit.white"   mode,  where  any
+piece/square combination you enter will  add  the  indicated
+white  piece on the given square.  Piece/squares are entered
+as "qa3", or "bc4" for example.  This puts a white queen  on
+a3  and  a  white  bishop  on c4.  Once all white pieces are
+entered, typing a "c" changes  to  "edit.black"  mode  where
+piece/square  combinations now place black pieces.  Typing a
+"." character exits edit mode.   To  clear  the  board  ini-
+tially, you use the "#" character.
+
+Here's  a  sample  to set up the original starting position,
+after white has played 1. e4, but no other moves  have  been
+played.
+
+  edit
+  #
+  ra1 nb1 bc1 qd1 ke1 bf1 ng1 rh1
+  pa2 pb2 pc2 pd2 pe4 pf2 pg2 ph2
+  c
+  ra8 nb8 bc8 qd8 ke8 bf8 ng8 rh8
+  pa7 pb7 pc7 pd7 pe7 pf7 pg7 ph7
+  .
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Note  that  input  is  free  form,  so  piece/squares can be
+entered one per line or all on one line.  Ditto for  the  #,
+c, and . special characters.  Note also that there is no way
+to enter castling status here.  It is far better to use  the
+"setboard"  command  which uses a FEN-like syntax and allows
+you to set both castling and enpassant status.
+
+15.  egtb   This  command  enables  the  endgame  databases.
+Crafty  will  use  the  "tbpath"  directory (if provided) to
+locate and register all of  the  databases  you  have  down-
+loaded.  It will report the largest class it found, as in "5
+piece tablebase files found" if you downloaded at least  one
+5-piece  file.  If you use this command to enable databases,
+you should also consider using the "cache" command to  spec-
+ify the egtb cache size.
+
+16.   end|quit  These commands are used to terminate crafty.
+Note that you can resume a  game  later  without  having  to
+replay  the  moves,  by starting Crafty using the "crafty c"
+command.  It will immediately read in the moves for the last
+game,  although  you  will have to set the time controls and
+clock time remaining yourself.
+
+17.  evaluation option <value>  This command is used to mod-
+ify the evaluation scores.
+
+The  option "asymmetry" is used to make crafty evaluate king
+safety differently for each side.  "evaluation asymmetry 25"
+will  increase the king safety scores for the opponent only,
+meaning it will pay less attention to its  own  king  safety
+than  to  that of its opponent.  This will make it play more
+aggressively.  "evaluation asymmetry -25"  will  reduce  the
+king  safety  scores  for for the opponent by 25%, making it
+care more about its own king safety than that of  its  oppo-
+nent.  This will make it play more defensively.
+
+The  "bscale"  option  will  adjust  the  scores for blocked
+pawns.  The default value is 100.  Increasing this will tend
+to  make  Crafty  dislike blocked pawn positions more, which
+will lead to more  open  positions.   Note  that  this  only
+affects  moves  _after_  the opening book has been followed,
+which means that the position might be  blocked  before  the
+evaluation term has a chance to affect the game.
+
+The "kscale" option will adjust all king safety scores based
+on the 'value' entered.  For example, "evaluation kscale 50"
+will  reduce  all  king safety scores to 50% of their normal
+value.  "evaluation  kscale  133"  will  increase  all  king
+safety scores to 133% of their normal values.
+
+The  option  "tropism" is used to scale king tropism scores.
+This will attract pieces toward kings.  A value of 100 means
+no  change.   other values are treated as a percentage (like
+
+
+
+
+
+
+
+
+
+
+
+
+
+scale) to increase (>  100)  or  decrease  (<100)  the  king
+tropism scores.
+
+When you use this command, you will see something like this:
+
+modified king-safety values:
+white:   0   4  16  26  39  45  58  77  87  90  93  96 100 103 106 109
+       112 116 119 122 125 128 128 128 128 128 128 128 128 128 128 128
+
+black:   0   5  20  32  48  56  72  96 108 112 116 120 124 128 132 136
+       140 144 148 152 156 160 160 160 160 160 160 160 160 160 160 160
+
+Those values represent the  king-safety  evaluation  as  the
+king  gets  more  and more exposed.  This is always based on
+the fast that "crafty" will be the side  on  move  when  the
+search  starts.  In the above, it was white's move when this
+was typed, meaning that it appears that crafty will be play-
+ing  black.   Notice  that  white's  king safety numbers are
+scaled by 20% to make it slightly more  cautious  about  its
+own king.  If you type "go" in this position, the scores get
+reversed as Crafty's scores are always left alone (with  the
+asymmetry  option) and the opponent's scores are scaled down
+as indicated.
+
+You will see similar numbers (but not black and white  sets)
+that  represent the actual scores produced for king tropism.
+Note that pieces interact to choose which  element  of  this
+vector is used, but in general, the more pieces are close to
+the king, the larger the element from this array.
+
+The "pscale" option is used to scale normal  pawn  structure
+scoring  in  the same way as the other scaling options.  100
+is the default.  Values less than 100 reduce this term, val-
+ues over 100 inflate it.
+
+The "ppscale" option is used to scale some passed pawn scor-
+ing in the same way as the other scaling  options.   100  is
+the  default.  Values less than 100 reduce this term, values
+over 100 inflate it.  This  mainly  effects  outside  passed
+pawns/protected  passed pawns.  The normal pawn scoring com-
+putes the value of a passed pawn.  This term is then used to
+scale  those  terms  that modify this value further, such as
+two connected passed pawns on the 6th, or a passed pawn with
+the king supporting it in an endgame.
+
+18.  extensions type value
+
+This  command is used to control the extension depth for the
+various extensions done in Crafty's search.  The  extensions
+are  set  as  decimel numbers that represent plies (or frac-
+tions of plies) to extend for each particular reason.   Most
+default  to  1.0  and  .75, but any value can be used.  Note
+that value > 1.0 are _very_ dangerous as they can cause  the
+
+
+
+
+
+
+
+
+
+
+
+
+
+search  to  become non-terminating (crafty will stop when it
+runs out of time for the move, but it might not be  able  to
+get anything useful from such a search).
+
+These  extensions  are presently limited to a maximum of one
+ply of extensions at any point in the tree.   IE  no  matter
+what you set these values to, they can not exceed one ply at
+present.
+
+incheck  This is the amount to extend when the side on  move
+makes  a  move that leaves the opponent in check.  Note that
+Crafty extends on the ply where the check is played, not  on
+the next ply where the opposite side is in check.
+
+onerep   This  is  the one-reply-to-check extensions, and is
+done at the point where one side is in check and has exactly
+one legal move to escape from the check.
+
+pushpp   This  is the extension used for certain passed pawn
+pushes in the endgame.
+
+recapture  This is the recapture extension, and  is  applied
+when  the current move recaptures an equal-valued piece that
+made a capture at the previous ply.  IE BxN, PxB.  Note that
+this  can  only  be applied once for every two plies so that
+BxN, BxB, NxB, NxN won't look like three recaptures.
+
+mate  This is the mate threat extensions and is applied when
+a  null  move  search returns -MATED, which means that doing
+nothing gets the side on move mated.  The opponent must have
+some sort of serious mate threat in such a position.
+
+19.   flag  on|off   This command is used to force crafty to
+end a game where the opponent runs out  of  time  with  win-
+board/xboard (on) or to ignore this (off) if desired.
+
+20.   force  [move]  This command is used to force Crafty to
+play a move that is different from the one chosen and played
+by  the  tree search.  If [move] is given, and it is a legal
+move, Crafty will retract its last move and make  this  move
+instead.   It  does  not  change  the side on move, but does
+change the position of course.   If  [move]  is  not  given,
+Crafty will prompt you for a move to make.
+
+21.   help  This command displays multiple pages of one-line
+help, one command per line.  If a  line  ends  with  [help],
+then  you  can  use help followed by the specific command to
+get detailed help.
+
+22.  history  This command displays the history in a  verti-
+cal  column  with  one  move for white and one per black per
+line.  There are other ways  to  display  the  current  game
+moves  and  also  to  save  them in files that are explained
+
+
+
+
+
+
+
+
+
+
+
+
+
+later.
+
+23.  hash=x and hashp=x  These commands are used  to  adjust
+the  size  of  the hash tables in Crafty.  hash modifies the
+size of the transposition/refutation table, while hashp mod-
+ifies the size of the pawn structure/king safety hash table.
+The sizes may be entered as one of the following  two  types
+of  values: nnnK where nnn is an integer indicating how many
+Kbytes Crafty should use for this hash table; nnnM where nnn
+is  an integer indicating how many Mbytes Crafty should use.
+
+The transposition/Refutation table is the most  critical  of
+the two, because it directly affects search efficiency, par-
+ticularly in the endgame.  For this reason  this  should  be
+maximized.   The  most effective size for this hash table is
+3/4 of your available memory.  If you don't know how to fig-
+ure  this  out,  but know that you have 16 megs for example,
+they you can say hash=16M and crafty will round that down to
+12M,  which is 3/4 of a power of two size.  If you study the
+sizes that are possible, you will find  3M,  6M,  12M,  24M,
+48M,  and  so forth.  Anything up to, but not including, the
+next size will be rounded  down  to  the  next  lower  size.
+hashp  should  be  set to approximately 1/2 of what is left.
+For example, the P6 Crafty runs on when playing on ICC often
+uses  hash=48M and hashp=8M.  The only thing to watch for is
+that if you make this too large, particularly under windows,
+performance  will  suffer  badly because of paging I/O over-
+head.  When Crafty is searching in a normal (non-book,  non-
+endgame  database)  position, the disk light should *not* be
+on, indicating lots of I/O.
+
+There is no danger in making this table too large,  although
+you  have to watch out because if Crafty barely fits in mem-
+ory, doing something else on the machine can cause Crafty to
+be  swapped  out  completely  or partially, depending on the
+operating system you are using.  If you are going to use the
+machine  for  anything  else  while Crafty is running, it is
+better to "pretend" that the machine only  has  1/2  of  the
+memory  it actually does when computing the size of the hash
+tables you want to use.
+
+24.  import <filename> [clear]   This  command  is  used  to
+import any sort of learning data that Crafty supports, which
+currently includes book learning data and position  learning
+data.   This  command  reads  the appropriate <filename> and
+imports that learned data, just as though Crafty had learned
+it  by playing the games.  The [clear] option, if specified,
+caused all old learned results  to  be  cleared  before  the
+import  operation,  otherwise  the  imported  data is simply
+added to what is already present.
+
+25.  input <filename>  This command is used to redirect  the
+console  input  I/O  stream  from  the  keyboard  to a file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+Crafty will then read commands from this file,  rather  than
+from the keyboard, and execute them just as though they were
+typed in.  Such a command file *must* be  terminated  by  an
+"exit"  command (no quotes) as the last command in the file.
+This reverts the input stream  back  to  the  keyboard,  and
+prompts you for another command or move.
+
+This  command  might  be used to configure crafty for a spe-
+cific time control, by putting the appropriate time  control
+commands  in  the file, or to customize the hash table sizes
+as needed.
+
+26.  info  This command is used to display information about
+Crafty  and  the current game.  Such things as the time con-
+trol, the time left on the clocks and other  information  is
+shown.
+
+27.   learn  n  controls  the learning facilities in crafty.
+Currently this is a 3-bit boolean switch,  bit 1 (001)  con-
+trols book learning, bit 2 (010) controls position learning,
+and bit 3 (100) controls result learning.  learn=0  disables
+all  learning,  learn=1  enables book learning only, learn=2
+enables position learning only, and learn=4  enables  result
+learning.   Add the values together to turn on more than one
+type of learning (default=7 to enable everything).
+
+28.  level <m> <t> <inc>  This command  was  taken  directly
+from  GnuChess  so  that the Xboard/WinBoard interface would
+interface with Crafty.  There are other better ways  to  set
+the  time, but this one is well-known.  The three parameters
+are <m> (number of moves in the game)  <t> initial  time  on
+the clock.  After <m> moves are made, this amount of time is
+added to the clock again.  <inc> is the Fischer-Clock incre-
+ment  that is added back to each clock after a move is made.
+It may be zero for a non-increment game.
+
+Examples:
+
+level 0 5 0            (ICS 5 0 game)
+level 0 5 3            (ICS 5 3 game)
+level 0 15 30          (ICS 15 30 game)
+
+29.  list GM|IM|C|AK|S  +name [+name ...] -name [-name  ...]
+This command is used to maintain the internal "lists" Crafty
+uses to auto-tune itself when playing  on  a  chess  server.
+There  are  three lists, GM, IM and C.  If Crafty's opponent
+is in any of these lists, Crafty adjusts  internal  controls
+that  affect  how/when  it  resigns or offers draws, and how
+randomly it will choose moves from the  opening  book.   For
+example, Crafty resigns much sooner against a GM, because it
+assumes he knows how to win a rook-up ending, regardless  of
+how  much  time  is  left.   By the same token, when playing
+against computers, Crafty will always assume that a draw  is
+
+
+
+
+
+
+
+
+
+
+
+
+
+0.000, so that it doesn't wreck its position trying to avoid
+repeating a position.
+
+The AK list will automatically  kibitz  scores/PV's  if  the
+opponent  is  in this list.  The S list will turn on special
+scoring for opponents in this list.  The only current member
+is "mercilous".
+
+The  syntax  +name1  +name2 simply adds these players to the
+specified list.  To remove a name, use -name1  -name2.   You
+can  use  one  command per name to remove or add, or you can
+use one command to add and remove multiple names.  Note that
+all names must be entered in lowercase characters, using any
+uppercase characters will break the matching algorithm.
+
+30.  log off|on|<n>  This command is used  to  disable  log-
+ging.  The default is log on, which causes crafty to produce
+a new log.nnn file for each game played.  If you are running
+Crafty  on  a  server, you might use log off, which disables
+creating these files as well as the game.nnn files  used  to
+restart  a  game  after you exit crafty and come back later.
+If you use the form "log n" crafty will simply  display  the
+last  n  lines  of the log on the screen.  If you use "log n
+file" crafty will copy the last n lines of the log to "file"
+which could be your hard drive, or a floppy.
+
+Note  that  if  you  run with log off, you will be unable to
+find out what Crafty was thinking about since  there  is  no
+other  record  of  the game.  You will always see a game.001
+because as crafty plays a game, this contains all  the  real
+moves  played so far so that you can back up if needed.  you
+will also see a log.001 file, but it will be empty.
+
+31.  ls <filename> will list all the files  that  match  the
+filename  wildcard  (the  wildcards depend on the system you
+are using, but generally *, ? will work fine.  you can  also
+supply  path information in the filename if you want to list
+the contents of a different directory.  Just  use  the  same
+syntax  you would if you were using "ls" under unix or "dir"
+under windows.
+
+32.  mode tournament|normal  This command is primarily  used
+to  put Crafty into "tournament" mode, which is intended for
+use when Crafty is playing in  computer  chess  events.   It
+accomplishes two things:  (1) makes all draws return a score
+of 0.000, and (2) makes crafty issue a  message  after  each
+move  showing  the internal chess clock time, and requesting
+that that operator check and  adjust  as  needed  using  the
+"clock"  command.   This  primarily makes Crafty comply with
+computer chess rules that say the operator can't do anything
+not specifically requested by the program.
+
+33.   name  <name>   This  command  is  an ICS-play specific
+
+
+
+
+
+
+
+
+
+
+
+
+
+command.  Xboard/WinBoard uses this to inform Crafty of  the
+opponent's  name.   Crafty uses the name, and looks it up in
+its GM/IM/C lists, and if found, adjusts itself accordingly.
+This is not used by the PGN code and this will not cause the
+players <name> to show up in the PGN tag section.
+
+34.  new  This command wipes everything  out  and  starts  a
+brand  new  game.  It closes the old log-file and game-file,
+and opens the next sequential numbered file.  It also resets
+the  game to the beginning and prepares to start a brand new
+game.  This was added for Xboard,  but  it  turns  out  that
+Xboard  does not use this, rather it starts Crafty fresh for
+each new game by first terminating the old copy then  start-
+ing  a  new one.  Not nearly as efficient as using "new" but
+likely safer it a program can't be sure of resetting  every-
+thing back to the initial state.
+
+35.   noise  <n>   This  command  sets  the "noise" level in
+Crafty.  Basically, until  <n>  nodes  have  been  searched,
+crafty will be silent and not display analysis.
+
+This  is  useful  in two ways.  First, in end-games, 20+ ply
+searches are not uncommon, and the search analysis  for  the
+first  few  plies arrives so quickly that it is distracting.
+Second, when observing games (new  interface  only)  on  ICS
+servers,  this  can  be used to avoid having Crafty generate
+too many analysis kibitzes.  A value of  100000  will  basi-
+cally  shut  off any output for the first second or so (on a
+P6/200).  Similarly, 1000000 will eliminate any  output  for
+about  the  first  10  seconds.  When watching and kibitzing
+games like the World Championship games on ICC, I  generally
+use  5000000,  which is almost one minute of silence so that
+the first PV it kibitzes is a pretty deep search.
+
+noise 0 will cause *all* analysis to be displayed, which  on
+a  fast machine causes no problems.  On a slower machine, or
+over a slow phone connection, this might cause a big  commu-
+nication  backlog.   The  default is roughly one second on a
+P6/200 (100000) but can be modified by this command.
+
+36.  operator <n>  Another command  intended  for  use  when
+Crafty  is  playing  in  a  tournament, operated by a human.
+This tells crafty to "hide" <n> minutes of time and not  use
+them.   This  time is basically allocated to the operator to
+make up for the time it takes to type in moves  and/or  cor-
+rect mistakes.  At the WMCCC events, the normal value we use
+is 5.  Playing on a server, this is not needed, as it is not
+needed if you are playing Crafty yourself.
+
+37.   perf   This  command  is  primarily used in optimizing
+Crafty, or to test the speed of the move generator and Make-
+Move()/UnMakeMove() on different platforms.  It produces two
+results, the moves it can generate per second, and the moves
+
+
+
+
+
+
+
+
+
+
+
+
+
+is  can  generate and make/unmake per second.  While this is
+not  a  perfect  performance  indicator,  it  does  give  an
+"approximation"  for how fast Crafty might run.  In general,
+the higher the numbers, the better the  program  will  play,
+although  machines are certainly different.  It's not uncom-
+mon to find a machine that searches slower than another, but
+has a higher "perf" value.
+
+38.   perft  <depth>  This command is generally used to con-
+firm that the move generator and bitmap operators are  work-
+ing  properly.   It  simply  takes the current position, and
+generates/makes/unmakes moves and counts  them.   Many  pro-
+grams  use this from a "standard" position to make sure that
+their move generator does not miss generating odd moves like
+enpassant/promotions   and   also   to   confirm   that  the
+make/unmake code correctly updates the  board  so  that  the
+totals  remain  constant  across different machines and pro-
+grams, since there is no  alpha/beta  or  evaluation  things
+done.   if  <depth>  is  greater than 5 or 6, it will take a
+*long* time, since this is basically a minimax tree  traver-
+sal  that  will visit *every* node within the <depth> search
+horizon.
+
+39.  pgn <tag> <value>  This command  is  used  to  set  the
+usual  PGN  tags  to meaningful values.  The recognized tags
+are Event, Site, Round, Date, White, WhiteElo, Black, Black-
+Elo,  and  Result,  and  the tags *are* case sensitive.  The
+<value> can be any valid input and blanks and special  char-
+acters are allowed.  Note that the date is clearly specified
+in the PGN standard and must be yyyy.mm.dd with no variance.
+Valid  results are 1-0 (white won), 0-1 (black won), 1/2-1/2
+(drawn) and * (unknown).  Some examples:
+
+pgn Event 14th World MicroComputer Chess Championship
+pgn Date  1996.10.8
+pgn Site  Jakarta, Indonesia
+pgn Round 1
+pgn White Crafty
+pgn WhiteElo 2400
+pgn Black assassin
+pgn BlackElo 2400
+pgn Result 1-0
+
+Setting these values will result in a proper PGN  file  when
+using the savegame command.  Note that if you use the "read"
+command to input a PGN game, these values will be  extracted
+from that game if they are given.
+
+40.  ponder off|on|<move>  This command serves two purposes.
+First, it can be used to disable (off) or enable (on) think-
+ing  on the opponent's time (or pondering as it is called in
+many programs including Crafty.)  Turning it off will weaken
+Crafty  since it will not use any machine time while waiting
+
+
+
+
+
+
+
+
+
+
+
+
+
+on the opponent to move.  It is sometimes  useful,  however,
+when   playing  Crafty  against  another  computer  and  the
+machines are not equal.  If crafty is on a  faster  machine,
+and  you  attempt  to adjust for this by giving the opponent
+more time than Crafty, it doesn't work  quite  as  expected,
+because  while the opponent is thinking, so is Crafty, which
+lets it use the extra opponent time in  an  unexpected  way.
+In  such  a  case,  it's best to stop pondering in both pro-
+grams.
+
+If <move> is given, it directs Crafty to use that <move>  to
+ponder,  rather than the one from the previous search.  Most
+commonly this is used to set the right move to ponder  after
+Crafty has been stopped and then restarted, assuming that it
+is the opponent's turn to move when  this  happens.   Other-
+wise,  it is probably better to not try to influence things,
+although if you are watching and suddenly wonder "what would
+Crafty  do  if the opponent plays move 'X'?", you can answer
+this by simply typing "ponder X" and then watching the anal-
+ysis.  You should reset the correct ponder move after you do
+this of course.
+
+41.  reset <n>  This command lets you back up in the current
+game  to  any  move  of your choice.  reset <n> backs up the
+game to move <n> with the same side on move.  If you want to
+first  change the side to move, use the white/black command,
+then use the reset command to back up  to  the  right  move.
+Note that you can also go forward as well, just so there are
+moves in the current game history.
+
+42.  resign <n>  This command  sets  the  resign  threshold.
+When  running  on  ICC I typically use "resign 9" which will
+make crafty resign roughly five moves after the score  drops
+below  -9.000.   For IM's I change this to 6, and for GM's I
+often use 3, so that it will resign quicker and not  drag  a
+lost game out unnecessarily.
+
+43.   read/reada [<filename>]  This command will read input,
+and extract the chess moves and make  them  to  set  up  the
+position  at the end of the game.  It first resets the chess
+board to the initial position (read command only)  and  then
+extracts  the  PGN  tags  (if present) from the front of the
+input.  The rest of the input  is  parsed  for  chess  moves
+(comments  and  similar things are culled automatically) and
+the moves are made and added to the game history.  Once this
+is done, you can back up, go forward, or play from any point
+in the game.  If you specify a <filename> everything is read
+from  the  file,  otherwise it is read from the console key-
+board.
+
+The reada command reads moves, but appends them to the  cur-
+rent  game  history/  position  rather than resetting to the
+initial chess position.  This lets you read in a game,  then
+
+
+
+
+
+
+
+
+
+
+
+
+
+use reada to manually add some more moves to see the result-
+ing position.
+
+44.  savegame <filename>  This command is used to  save  the
+current  game  in  a  PGN-compliant  file  with the PGN tags
+included.  Note that the default TAG  values  might  not  be
+what  you  want  if you do not either use the pgn command to
+set them or else input  a  valid  PGN  file  with  the  tags
+already filled in.
+
+Be  aware  that  this command doesn't check the filename for
+legality since anything goes in UNIX.   In  DOS,  you  might
+produce  a bad filename with either too many characters, too
+many periods, or whatever, so be careful with the  name  you
+choose.   Note also that this file will be overwritten if it
+already exists, so be sure to choose a name that is not  the
+name  of a file that has something you consider important in
+it.
+
+45.  savepos <filename>  This command writes a  single  line
+into  <filename> in FEN-like notation.  This lets you save a
+position, and then come back later to  re-examine  it.   You
+would use the "in <filename>" command to input this file and
+set the position up.
+
+46.  search <move>  This command allows you to  specify  one
+particular move for the side on move, and then when you tell
+Crafty to search this position, this is the only  move  that
+will  be  searched.  This is used internally by the annotate
+command, but can be used to investigate one  specific  move.
+If the move is not the best move, a normal search won't show
+you why it is bad, but this will.  It is also  quite  a  bit
+faster  since  the  other  moves  in  the  position  are not
+searched at all.
+
+47.  settc <moves> <ctime> <otime>  This command is  primar-
+ily  used  in tournaments, and is an error-recovery command.
+If the machine crashes and corrupts the game  history  file,
+frequently the operator will have to simply set the position
+using the setboard command, and then use the  settc  command
+to  restore the time control values.  <moves> is moves until
+the next time control (from Crafty's perspective, be careful
+and  don't  look  at the opponent's moves to time control by
+accident.)  <ctime>  is  minutes  left  on  Crafty's  clock,
+<otime> is minutes left on the opponent's clock.
+
+48.   setboard  <FEN  input>   This command is used to set a
+chess position up for analysis and is the preferred  way  to
+do  this, rather than using the gnu EDIT interface.  It uses
+a classic Forsythe-like notation to encode the position  and
+also  has  provisions for castling status and enpassant cap-
+ture status.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+the standard piece codes p,n,b,r,q,k are used to denote  the
+type  of  piece  on  a  square, upper/lower case are used to
+indicate the color of  the  piece  (uppercase=white  pieces,
+lowercase=black pieces).
+
+the pieces are entered from the classic chess diagram's ori-
+entation of a8  being  the  upper-left-hand  corner  of  the
+board,  and  this  square  is entered first, followed by the
+remainder of the 8th rank left to right.  To indicate  empty
+squares,  use  a number between 1 and 8 to indicate how many
+adjacent squares are empty.  use a / to terminate each  rank
+after  all  of  the  pieces for that rank have been entered.
+Note that you do not have to account for all 8 squares on  a
+given rank, although many test suites do this for clarity.
+
+the following input will setup the board position that given
+below:
+
+      k2r/ppp////Q/5PPP/7K/ B
+
+this assumes that k represents a white king  and  -q  repre-
+sents a black queen.
+
+                      -k  *  * -r  *  *  *  *
+                      -p -p -p  *  *  *  *  *
+                       *  *  *  *  *  *  *  *
+                       *  *  *  *  *  *  *  *
+                       *  *  *  *  *  *  *  *
+                       q  *  *  *  *  *  *  *
+                       *  *  *  *  *  p  p  p
+                       *  *  *  *  *  *  *  k
+                                                                           *
+the field after the final "/" should be either  b  or  w  to
+indicate  which  side is "on move."  after this side-to-move
+field any of the following characters can appear to indicate
+the   following:   KQ:  white  can  castle  king-side/queen-
+side/both;  kq: same for black;  a1-h8: indicates the square
+occupied by a pawn that can be captured enpassant.
+
+49.   score   This command simply gives the positional score
+for the current position.  This score is  from  whites  per-
+spective,  so a + score is good for white, a - score is good
+for black.  Crafty also breaks the  score  down  into  major
+categories  (from  Evaluate())  to indicate things like pawn
+structure, piece evaluation, passed pawns, development,  and
+so forth.  Note that some of Crafty's evaluation is asymmet-
+ric, so that if you simply change sides with the white/black
+command  and then enter "score" again, you may get a differ-
+ent value.  This is *not* a bug.  :)
+
+50.  sd <n>  This command lets you specify a specific search
+depth  limit  that  Crafty  can  not  exceed.  It still pays
+attention to the clock, however, so often you will  use  the
+
+
+
+
+
+
+
+
+
+
+
+
+
+st  <n>  command  (below)  in  conjunction  with this if the
+search is going to take an extended amount of time.  <n>  is
+the  depth  (in  plies  or  1/2  moves) that the search must
+reach.  Note that if Crafty is pondering,  it  still  honors
+this  limit  and  will stop a ponder search after this depth
+has been completed as well.  This is *not* the way  to  make
+Crafty play weaker, although this will be covered in a later
+section of this document.
+
+51.  show <category>  This command forces Crafty to  display
+additional information about certain actions it takes.  Cur-
+rently the only <category> is "book" which will make  crafty
+display information about all the book moves it found in the
+database.  More is given about this information in the  BOOK
+section later in this file.
+
+52.   smpmt=n   This  command  is  used to set the number of
+threads to use on a machine with more  than  one  processor.
+For  optimal performance, "n" should be set to the number of
+processors you have, although using fewer  will  reduce  the
+load on your machine.  For this command to work, Crafty must
+have been compiled with SMP defined.  When compiled with SMP
+enabled,  mt=0 effectively disables the SMP code completely.
+
+This command also has two that are closely related.   smpmin
+and smpmax.  Both accept single numerical arguments.  smpmin
+is used to control the minimum tree depth required at a node
+for  it  to be eligible for parallel searching.  IE smpmin 2
+says don't split unless at least two more plies are left  to
+search  below  this  node.   smpmax sets the maximum for the
+same idea, is smpmax 10 says don't split  if  more  than  10
+plies are remaining below this node.
+
+53.   sn <n>  This command is similar to the sd command, but
+instead of setting a specific search depth, it sets a number
+of  nodes to search.  Once the search has searched this num-
+ber of nodes (+ maybe one more second of searching to  check
+the time) the search will exit.
+
+54.  st <n>  This command lets you specify a specific search
+time limit for Crafty.  Again, this is not the preferred way
+to  set  a time per move, because this limit is absolute and
+Crafty will never go over this limit, even if it  sees  that
+it  is  losing  or  getting mated.  Setting the time control
+with the usual "time" or "level" command is  *much*  better.
+<time>  is given in seconds, although it may also be entered
+as mm:ss if preferred.
+
+55.  swindle on|off  This command  gives  you  control  over
+"swindle  mode."   When  on, and playing a game, Crafty will
+try to win drawn endings (according to the tablebases) if it
+has winning chances (like KR vs KB, for example).  This will
+put up very stiff "resistance" to accepting the draw,  while
+
+
+
+
+
+
+
+
+
+
+
+
+
+with  this  mode off, it may be very easy to draw a position
+once the tablebases say "drawn."  This mode is automatically
+turned  "off" during analysis or when annotating a game, and
+is only used when actually playing a game against  an  oppo-
+nent.  If there are no tablebases then this has no effect on
+the game at all.
+
+56.  tags  This command will simply display the current  PGN
+tags (you can edit them with the various PGN commands).
+
+57.   test  <filename>  [n] This command will run a suite of
+positions (the file must be in "Crafty" format as  explained
+below)  and  produce  a  summary  of  how many it got right,
+wrong, etc.  It uses the time per  move  you  set  with  the
+(typically)  st  <n> command.  The optional parameter [n] is
+the "early exit" counter.  If Crafty finds,  and  holds  the
+solution  move  for  n  iterations,  it  will  terminate the
+search.  I use this to make a win at chess  run  take  <  15
+minutes,  even  though  the  time  per  position is set to 1
+minute, by setting n to 2.  After  two  correct  iterations,
+Crafty  goes on to the next problem.  For absolutely correct
+results, this is not advisable as it could obviously  change
+its  mind later on, but for performance analysis, this saves
+a lot of time.
+
+The test suite contains the following  lines:   (this  is  a
+sample from my test suite for Win At Chess.)
+
+title wac299
+setboard 1n2rr2/1pk3pp/pNn2p2/2N1p3/8/6P1/PP2PPKP/2RR4 w
+solution Nca4
+
+title wac300
+setboard b2b1r1k/3R1ppp/4qP2/4p1PQ/4P3/5B2/4N1K1/8 w
+solution g6
+
+end
+
+The  title  command  simply displays this message in the log
+file so you can look at the  output  and  figure  out  which
+position it goes with.  This is optional, but useful.
+
+The  setboard command sets the position as explained before.
+
+The solution command gives the set of solution moves (one or
+more  moves  that  are  separated by blanks) and/or a set of
+"anti-solution" moves (moves that  must  not  be  played  to
+count  the  position as correct.)  "anti-solution" moves are
+simply followed by a "?" character, for example:
+
+solution Bxa7?
+
+The solution command supplies a set of key moves,  and  then
+
+
+
+
+
+
+
+
+
+
+
+
+
+starts  the search.  If, after the search terminates, one of
+the key solution moves was chosen (or none of the anti-solu-
+tion  moves were chosen) the position is counted as correct.
+
+The final line should be "end" although end-of-file  or  EOF
+will also be detected in this case.
+
+57.    time   CPU|elapsed|<values>   This  command  controls
+whether the program uses CPU time  or  wall-clock  time  for
+timing.   for tournament play, it is safer to use wall-clock
+timing, for testing it may be more  consistent  to  use  CPU
+timing  if the machine is used for other things concurrently
+with the tests being run.
+
+time is also used to set the basic search  timing  controls.
+the general form of the command is as follows:
+
+      time nmoves/ntime/[nmoves/ntime]/[increment]
+
+nmoves/ntime  represents  a  traditional  first time control
+when nmoves is an integer representing the number  of  moves
+and  ntime  is  the total time allowed for these moves.  the
+[optional] nmoves/ntime is a traditional secondary time con-
+trol.   increment  is a feature related to ICS play and emu-
+lates the Fischer clock where <increment> is  added  to  the
+time left after each move is made.
+
+as  an  alternative,  nmoves  can be "sd" which represents a
+sudden death time control  of  the  remainder  of  the  game
+played in ntime.  the optional secondary time control can be
+a sudden-death time control, as in the following example:
+
+        time 60/30/sd/30
+
+this sets 60 moves in 30 minutes, then game in 30 additional
+minutes.  an increment can be added if desired.
+
+One final example is the following:
+
+        time sd/15
+
+which is a simple game/15 setting.  This command can also be
+used to perform the same function as  the  "level"  command.
+For  example, to set up a classic ICS 2 12 game, the follow-
+ing would would work:
+
+        time sd/2/12
+
+59.  trace <n>  This command is used to make crafty  display
+the  tree  as it searches a position.  Due to the incredible
+speed at which this program can  search,  however,  this  is
+less than useful since it can swamp any known display driver
+and make things scroll impossibly fast.
+
+
+
+
+
+
+
+
+
+
+
+
+
+Also note that this command  usually  is  disabled,  because
+Crafty  is  generally  compiled  with the -DFAST flag, which
+removes the trace output code from the search to make things
+slightly  faster.   You  will have to recompile, without the
+-DFAST, if you want to use this.  It's utility  is  limited,
+except for debugging, anyway.
+
+60.  usage <n> is simply a way to modify Crafty's time usage
+to fit your tastes.  You can "suggest" a time limit with any
+of the options discussed previously, but if you use anything
+other than the "st" command, Crafty will do its best to  use
+time  as  you  suggest, but it also anticipates that it will
+save some time by pondering, etc.,  and  will  therefore  be
+more aggressive at trying to use time.  if <n> is a positive
+integer, it is taken as a percentage and crafty will compute
+the  time  limit  it  thinks  is appropriate for the current
+clock settings, then increase this limit by this  percentage
+(50  would  make it take 1.5 times longer than normal.)  -50
+would make it take 1/2 the time it would normally take.
+
+Crafty adjusts the usage  internally  based  on  time  left,
+opponent's  time left, how quickly or slowly the opponent is
+moving, etc.  Further modifying things with this is  danger-
+ous, but possible.
+
+61.   whisper/kibitz <n>  These commands are used to control
+what Crafty will whisper or kibitz on a chess  server.   The
+options  are  (1)  only  whispers or kibitzes mate announce-
+ments; (2) adds time, score, depth to the  previous  option,
+but  no  PV  or moves.  (3) adds the PV.  (4) adds book move
+information to the output.  The remaining two options gener-
+ate  a  lot  of output and should be used with caution.  (5)
+displays the PV after each iteration completes.  I use  this
+when using my custom interface to let Crafty observe/comment
+on games in progress on ICC.  Noise can be used  to  prevent
+shallow  searches from generating output and keeping "noise"
+down on the games being watched.  (6) basically  will  whis-
+per/kibitz  nearly  everything you see on the console from a
+search, each PV when it changes, fail highs and  fail  lows,
+etc.   A  significant  amount of output that should be care-
+fully weighed before turning it "loose."
+
+62.  xboard  This command turns on Xboard/WinBoard  compati-
+bility mode, and makes Crafty behave somewhat like GnuChess.
+This is designed to be used *only* when Crafty is  interfac-
+ing  with  Xboard/WinBoard.  Crafty will not work with these
+two GUIs without this option, and  really  won't  work  very
+well with this option if it is not connected to one of them.
+
+63.  There are other commands that are not documented.  They
+are  part  of  the  xboard protocol and really should not be
+used by the normal user.  You can find all the  commands  in
+option.c should you be interested.
+
+
+
+
+
+
+
+
+
+
+
+
+
+                Opening Book Setup and Usage
+                ----------------------------
+
+Crafty   uses   two   pre-compiled   opening  books,  called
+"book.bin" and "books.bin".
+
+The file book.bin is usually build from a  large  text  file
+containing  PGN  games,  often  taken from collections of GM
+games.  Building book.bin is a simple exercise and  requires
+nothing  other than the raw input file you are going to use.
+Generally this will be either medium.zip or the set of  four
+files  large[1-4].zip,  all  of  which are stored on the ftp
+machine ftp.cis.uab.edu/pub/hyatt/.
+
+To create the file book.bin, you need a PGN game  collection
+that is a *real* PGN-compliant file.  Supposing this file is
+called "large.pgn" you would use the following command:
+
+book create large.pgn <m> [n] [wpct]
+
+The only thing you have to supply is <m>, a number  indicat-
+ing  how  many  moves from each game are to be stored in the
+book.bin database.  I typically use  60,  which  stores  the
+first  60  moves  from  each  game.   Increasing this number
+slightly increases the probability that Crafty will stay  in
+book  longer,  but it also increases the probability that it
+will follow a game too far, so that it begins to reach posi-
+tions  where  the move actually played might not be the best
+move, letting it fall into a bad hole.  Increasing this also
+increases the size of the database as well.
+
+You  can  decrease the size of the book, and also reduce the
+number of ugly moves by  specifying  <n>,  which  says  that
+unless  a  move  is  played in at least N games, the move is
+discarded.  This will substantially decrease the size of the
+book.bin  file,  and  also  eliminate single game moves that
+often have significant errors or blunders.
+
+You can increase the quality of  book  lines  by  specifying
+<wpct> which is the "winning percentage".  This is specified
+as a percentage of lost games, and is used to discard  moves
+that  led  to mostly losses.  A safe value is 50, which says
+that if a particular opening move didn't win at least 50% as
+many  games  as it lost, the move is culled.  A value of 100
+would mean that moves  are  culled  if  they  produced  more
+losses than wins, and is really a strict criterion.
+
+After creating book.bin, you need to create books.bin.  This
+is a small version of book.bin, which is  intended  to  give
+you  more  control over the moves/openings Crafty will play.
+This is usually built from the file  start.pgn  on  the  ftp
+machine,  but  you  can  modify this file to suit your taste
+easily.  To build books.bin, you use the following command:
+
+
+
+
+
+
+
+
+
+
+
+
+
+books create start.pgn 60
+
+Again, 60 is what I use, but none of my start.pgn  lines  go
+anywhere  near that many moves.  The main point here is that
+in start.pgn, you can append a "!" to any move you want, and
+when  it  is  Crafty's  turn to move for that color, it will
+play from the set of moves with "!" if there are any, ignor-
+ing the rest of the book moves.  If you only want it to play
+1. e4 as white, you would just enter the short game:
+
+[Crafty only plays 1. e4] 1. e4!
+
+and you are finished!.  You can enter as many as  you  want.
+If  on  the other hand there is a move you don't want Crafty
+to play, then follow that move with a "?" and it will  never
+play  it.  Moves in books.bin that are not flagged with ! or
+? don't have any influence on Crafty's choice at all.
+
+Here's how the files are used.  When searching  a  position,
+Crafty  first enumerates the set of moves it can find in the
+opening database.  It then does the same for  the  books.bin
+database,  and performs a "merge" operation to combine the ?
+and ! flags...  The purpose of the books.bin file is to give
+you  a  small  database that you can easily modify, rebuild,
+and repeat this process over and over.   Since  it  takes  a
+fraction  of a second to completely rebuild this file, it is
+very easy to modify this to control what Crafty  will  play,
+without having to rebuild the large database.
+
+One  important characteristic of the PGN input is the Result
+tag must be specified in most of the lines,  because  Crafty
+counts  wins,  losses  and draws for each book move and uses
+these counts with some of the book selection  options  given
+below.
+
+How the flags are used.
+
+The  ! and ? flags should only appear in the small books.bin
+file, although there is no reason why they can not appear in
+the  large  file  as  well.  For this discussion, it doesn't
+matter since Crafty takes the  moves  from  both  files  and
+"merges" the flags/etc into one entry for each move.
+
+Quite simply, if any book legal book move has a ! flag, then
+Crafty will only play moves from the set of moves which  all
+have  the ! flag.  If a move has a ? flag, then that move is
+immediately removed from the set of possible book moves.  If
+the only legal book move has a ? flag, it will not be played
+as a book move and Crafty will simply pretend that it  found
+no book moves and will execute a normal tree search.  Pretty
+simple.
+
+How to control the frequency of opening move selection.
+
+
+
+
+
+
+
+
+
+
+
+
+
+A new feature in version 15.15  and  beyond  allows  you  to
+append a PGN comment to any move in a text file used to cre-
+ate books.bin, of the form {play nn%}.  This will force  the
+move  it  follows  to be played that percentage of the time,
+regardless of the normal book-ordering values based on  fre-
+quency and so forth.
+
+Note  that  {play  0%}  will  not  prevent a move from being
+played at all, as this will look just like a  move  with  no
+percent specified.  To avoid playing a move, use the ? flag.
+
+How does Crafty choose book moves?
+
+Crafty's book  selection  algorithm  depends  on  two  user-
+defined values that can be set at any time during a game:
+
+book random <n>
+
+book width <w>
+
+The  selection  algorithm  first finds the set of legal book
+moves as above.  This set will either be  all  !  moves,  or
+will  have  no ! moves in it.  This set is then sorted based
+on the setting of book random.  Here's the options:
+
+book random 0.  This is a special case for  book  selection.
+Crafty simply takes the set of book moves, and searches only
+these moves using a normal alpha/beta  search,  but  with  a
+shorter  than usual time limit.  It then plays the move that
+produces the best search value.  This has one serious disad-
+vantage  in  that there is no randomness to this at all.  It
+will always play the same move in the same position,  unless
+the  evaluation is modified, or the time per move is differ-
+ent enough to let the search find a different move from  the
+book move set.
+
+book  random  1.   This  enables  a random form of book move
+selection, but you have a lot of control over how moves  are
+randomly  chosen.  The moves are ordered, based on 4 parame-
+ters:  frequency of play, win/lose ratio, static  evaluation
+and  learned  results.  Normally these are factored into the
+value used to sort the moves, based on default settings that
+you  can  modify  by  using  the  command  "bookw  option N"
+"option" should be "freq", "ratio", "eval" and  "learn".   N
+should be a number between 0 and 1.
+
+Crafty finds the min and max values for each of the 4 param-
+eters, and then maps this into the  range  0-1000  for  each
+parameter.   Each parameter is multiplied by the correspond-
+ing "weight" you have assigned, and this is used as a  value
+to  sort  the  moves  from low to high.  Note that the first
+sort value is always the "play percent" to move them to  the
+top  of  the  list.   For  moves  with  equal "play percent"
+
+
+
+
+
+
+
+
+
+
+
+
+
+values, the normal sort-value is used  as  the  second-level
+sort  variable  (if  no moves have a play-percent, then this
+second-level variable is the only one used, of course.)
+
+Once Crafty has sorted the moves as  given  above,  it  next
+excludes  any  book moves which have 0 wins.  This culls the
+odd lines where a player chose a bad line and lost  quickly.
+With  zero  wins,  it  will never be chosen, although Crafty
+will happily follow it from the other side.  :)  This is not
+anywhere  near  perfect,  however,  because an opening could
+have 1 win and 19 losses and that still would  stay  in  the
+list.
+
+If  a  move  has a learned value of > 100, this move is ele-
+vated in priority to that of a ! move, since it  appears  to
+win material instantly.  If a value is < -100, it is given a
+? since it appears to be a lemon.
+
+After this, the setting for "book width <w>" is used to keep
+the first <w> moves in the list, after the above culling has
+been completed.  The smaller you make <w> the  less  random-
+ness  you get, but the chance of Crafty popping out a really
+bizarre book move gets smaller as well.
+
+After sorting, the final step is to fold  in  any  mandatory
+"play percent" values.  What this step does is that it finds
+all the moves in the  "playable  move  set"  just  computed,
+which  have no percent-to-play value set.  It sums the sort-
+values for these moves, then adjusts the sort-values for the
+other moves so that their percentages will be honored.
+
+Once this has been done, crafty simply uses the "sort value"
+for each move to compute a total for  all  moves.   It  then
+generates  a  random  number  between  1 and this limit, and
+chooses the move that this probability distribution matches.
+This will certainly evolve over time as new ideas are devel-
+oped.
+
+For my play on ICC, I use book random 1, and  book  width  5
+normally,  although  for  titled  players this is reduced to
+book width 3.  For computers, I reduce this further to 2, to
+try  to  play  reasonable  openings and cull the gambits and
+things that don't work out.
+
+How does book learning work and  how  can  I  share  learned
+results?
+
+1.  *all* of crafty's "learned knowledge" is in the book.bin
+file.  It keeps the learned value and learned count right in
+the  book  file  for  speed.   You can't modify it, although
+"show book" will make crafty  display  all  the  book  stuff
+before it makes a move.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+2.   the  book.lrn file has two purposes:  (a) to serve as a
+log for your prying eyes, so you can see what it's  learned,
+against  whom, and what the score was that got its attention
+in the first place.  The values on  the  end  of  each  book
+line, inside the {} characters are as follows:
+    {value,  depth, rating_difference} value is the value of
+the "key" search that comes from the first 10 moves  out  of
+book.  it's in centipawns, and + is good - is bad.  depth is
+the depth the search reached at  this  "key"  position,  the
+deeper  the  search,  the more the value is "trusted."  rat-
+ing_difference is crafty's rating - opponent's rating a neg-
+ative  value means pay more attention to the score since the
+opponent is better than crafty, a positive  value  means  to
+take  the  score  with a grain of salt, because the opponent
+was weaker than Crafty.
+
+You can delete this file at any time, and it has  no  effect
+on  learning.   As  I mentioned, the learning takes place in
+book.bin... this is mainly for you to peek  at  if  you  are
+interested.   However,  this  is the "portable learning data
+file" also, and can be given to others to import into  their
+crafty,  where  it  will  affect  the opening book just like
+their crafty had  played  the  openings  and  got  the  same
+scores.  There are two ways to use such "lrn" files:
+
+1.   "import <filename>" will read <filename> and import the
+knowledge therein into your book.bin.  Since I use the  same
+learning  code  as is used when playing games, this informa-
+tion also gets appended to *your* book.lrn file as well,  so
+that your book.lrn always reflects *everything* your program
+has learned, so long as you don't ever remove this file.  It
+would  be a mistake to use this command on your own book.lrn
+file, because the things  would  get  counted  twice,  which
+might or might not be a good thing.
+
+2.   "import  <filename>  clear"  will  read  <filename) and
+import the  knowledge  as  above,  but  first  clears  *all*
+learned  results from book.bin.  you will want to do this if
+you import my book.lrn, *and*, you have  contributed  to  my
+book.lrn data by sending me yours.  I'll take care of elimi-
+nating duplicates if you screw up in what you send  me,  but
+once  you  send me something, you run the risk of getting it
+"back again" later.  This is going to  be  a  problem  until
+everyone  gets  used  to  sharing  something  that is rather
+"vapid" like this "learned info" is...
+
+Other than that, we are now "open for business"...  when the
+urge strikes you, email me your .lrn file, I'll keep a large
+master here and update it on occasion.   Probably  the  best
+thing  to  do  is  to  send  me  your  .lrn  and at the same
+*instant* delete yours.  This will capture anything  learned
+*after*  you  send  me the file, but you'll get it all right
+back with the next version of book.lrn  that  I  distribute.
+
+
+
+
+
+
+
+
+
+
+
+
+
+after getting this new book.lrn back, here's what you should
+do:
+
+1.  rename your old book.lrn to something else.   I'll  call
+it "book.lrn.old" here.
+
+2.   copy my blearn.dat to your machine, but *do not* put it
+in the directory  with  your  book.bin  and  books.bin  file
+because  it  will get confusing very quickly if you do.  put
+it somewhere else,  because  you  are  going  to  remove  it
+quickly anyway.  I'll call it new.lrn for this example.
+
+3.  import new.lrn clear
+    import book.lrn.old
+
+and you are ready to rumble again.  The first command clears
+the learned values, sucks in my new learn file  and  updates
+everything.   the second command re-learns everything you've
+learned since you sent me the  last  book.lrn  file.   After
+doing  this your book.lrn will have my .lrn stuff, plus your
+old.lrn stuff, just waiting to be sent to me again...
+
+If this is confusing, I can probably add an  automatic  com-
+mand to do all of this by renaming book.lrn, etc.  Hopefully
+this is not too error-prone for the time being anyway...
+
+What is this new Position Learning I've heard about?
+
+Crafty now has a "permanent" hash table that  is  kept  from
+game  to  game.   A position gets into this "hash file" when
+Crafty executes a search and the search  value  is  signifi-
+cantly lower than the last search value.
+
+When this happens, Crafty stores the current information for
+this position in the permanent hash file, which can hold  up
+to  65536  positions.   Once  it fills up, the positions are
+replaced on a FIFO basic always keeping the most recent  64K
+entries.
+
+Each  time crafty starts a search, the positions/scores from
+this file are stuffed into the normal  transposition  table,
+and  used during the search just like any other table entry.
+Here's how it helps:  In a game that was played, the follow-
+ing moves and scores were found by crafty (playing white):
+
+1.   Ng5  (+.277)   h6  2.  Nh7 (+.321)  Kg8 3.  Qh5 (+.133)
+Qg7 4.  Ng5 (-2.122) hxg5
+
+So, the knight got trapped at h7, and at move 4 crafty  dis-
+covered  that  this  is gross and "learns" this result/posi-
+tion.
+
+We play the exact same game again:  except that  two  things
+
+
+
+
+
+
+
+
+
+
+
+
+
+can  happen here.  It might be that Ng7 is the *only* square
+the knight can move to here, which means this whole thing is
+forced.  the first search would find:
+
+1.  Ng5 (-2.122) if the search can reach 8 plies deep, which
+happens even in 5 second games.  It's learned  that  Ng5  is
+bad.   It  stores *this* position in the permanent hash file
+also, and the next time you try this same trap, it will dis-
+cover  4-5 moves earlier that if the knight gets to g5 it is
+in trouble.  Each game will diverge from the first game  3-4
+moves earlier.  Simple and effective.
+
+2.   Ng5 might not be forced, and if not, it knows Ng5 loses
+a piece for a pawn, so it will promptly play something else,
+which is exactly what is desired.
+
+This  is  implemented  with two (count 'em, two) files.  One
+file "position.bin" is a binary file that contains the  hash
+table  entries, and it right at one megabyte in size, *max*.
+(16 bytes per hash entry X 65536 entries = exactly one  meg,
+but  I  have 8 extra bytes for the FIFO queue implementation
+and to see how many entries are currently in the file if  it
+is not full.
+
+The  second file is "position.lrn" and is, you guessed it, a
+file that can be shared with others, just like book.lrn.  It
+contains all information needed to reconstruct the position,
+the score, the depth, etc.  and also included the  pgn  tags
+for who was what color and when the game was played...
+
+This data can be imported with the new "import" command (the
+old book learn <filename> is no longer  around)  which  will
+import  either  book.lrn type data or position.lrn type data
+and can tell them apart without your having to do  anything.
+The  <clear>  option  is still there, should you want to use
+it, and simply removes  the  position.lrn  and  position.bin
+files before starting the import process for position learn-
+ing.
+
+This can be turned off, if you like,  by  checking  out  the
+"learn"  command,  which  gives  you the ability to turn off
+book learning (as it presently  works),  position  learning,
+and  the next book learning stage which will add to the book
+in addition to learning which book lines are good and bad.
+
+What is this new "result" learning?
+
+Result learning works just like normal book learning, except
+that  if  Crafty is checkmated or resigns, it will step back
+through the book line to find the last point  where  it  had
+more than one move to choose from.  It will flag the move it
+chose as "never play again".
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+This handles the case where the  first  ten  non-book  moves
+produce  reasonable  scores,  but  the  position is one that
+Crafty simply can't handle very well.  If it  loses  such  a
+game,  it  will  still  vary  the  next time this opening is
+played, as otherwise it would possibly repeat the same open-
+ing, and would certainly repeat the remainder of the game.
+
+All  three learning modes are turned on by default, although
+any of them can be disabled  with  the  appropriate  command
+option to "learn".
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/installer/WinBoard-4.2.7/Crafty-WinBoard/wcrafty.exe b/installer/WinBoard-4.2.7/Crafty-WinBoard/wcrafty.exe
new file mode 100644 (file)
index 0000000..28d40fd
Binary files /dev/null and b/installer/WinBoard-4.2.7/Crafty-WinBoard/wcrafty.exe differ
diff --git a/installer/WinBoard-4.2.7/FAQ.html b/installer/WinBoard-4.2.7/FAQ.html
new file mode 100644 (file)
index 0000000..224748c
--- /dev/null
@@ -0,0 +1,1701 @@
+<HTML><HEAD><TITLE>
+XBoard and WinBoard: Frequently Asked Questions</TITLE></HEAD>
+<BODY>
+<H1>XBoard and WinBoard: Frequently Asked Questions</H1>
+
+This document answers some frequently asked questions about the
+graphical chess interfaces XBoard and WinBoard.
+A hyperlinked version of this FAQ is available on
+the Web through the page
+<A HREF=
+"http://www.tim-mann.org/chess.html"
+>http://www.tim-mann.org/chess.html</A>.
+
+<i>This FAQ is in need of revision.  Please contact us if you'd like
+to help update it.</i>
+
+<HR>
+<H2>Outline</H2>
+
+<UL>
+<LI><A HREF="#[A0]">[A] Introduction and hot topics</A></LI>
+<LI><A HREF="#[B0]">[B] XBoard and WinBoard</A></LI>
+<LI><A HREF="#[C0]">[C] XBoard and WinBoard, bugs and problems</A></LI>
+<LI><A HREF="#[D0]">[D] Crafty and other topics</A></LI>
+</UL>
+
+<HR>
+<H2>Detailed contents</H2>
+
+<UL>
+<LI><A NAME="[A0]" HREF="#[A]">[A] Introduction and hot topics</A></LI> 
+<UL>
+<LI><a href="#[A.1]">[A.1] What are XBoard and WinBoard?</a></li>
+<LI><A HREF="#[A.2]">[A.2] Where can I get chess information and chess
+  software?</A></LI> 
+<LI><A HREF="#[A.3]">[A.3] What are the current version numbers for
+  XBoard and WinBoard?</A></LI> 
+<LI><A HREF="#[A.4]">[A.4] Who is working on this project?</A></LI>
+<LI><A HREF="#[A.5]">[A.5] How do I report bugs, offer help, etc.?</A></LI>
+<LI><a href="#[A.6]">[A.6] What are the future plans for XBoard and
+  WinBoard?</A></LI>
+</UL>
+
+<LI><A NAME="[B0]" HREF="#[B]">[B] XBoard and WinBoard</A></LI>
+<UL>
+<LI><A HREF="#[B.1]">[B.1] What is XBoard?</A></LI>
+<LI><A HREF="#[B.2]">[B.2] Is there an XBoard for Microsoft Windows?  What is
+  WinBoard?  How do I install WinBoard?</A></LI>
+<LI><A HREF="#[B.3]">[B.3] Is there an XBoard for the Amiga?  What is
+  AmyBoard?</A></LI>
+<LI><A HREF="#[B.4]">[B.4] Is there an XBoard for the Macintosh?</A></LI>
+<LI><A HREF="#[B.5]">[B.5] Does XBoard run on VMS?</A></LI>
+<LI><A HREF="#[B.6]">[B.6] What is cmail?</A></LI>
+<LI><A HREF="#[B.7]">[B.7] How do I build XBoard?  Do I have to have
+  gcc?</A></LI>
+<LI><A HREF="#[B.8]">[B.8] Can I use XBoard or WinBoard to play a game
+  of chess with another human?</A></LI>
+<LI><A HREF="#[B.9]">[B.9] Will WinBoard run on Windows 3.1?  
+  How about Windows CE (also known as Pocket PC)?</A></LI>
+<LI><A HREF="#[B.10]">[B.10] How do I use XBoard or WinBoard as an external
+  viewer for PGN files with my Web browser?</A></LI>
+<LI><A HREF="#[B.11]">[B.11] How do I use WinBoard as an external viewer for
+  PGN files with the MS Windows File Manager or Explorer?</A></LI>
+<LI><A HREF="#[B.12]">[B.12] How do I use ICC timestamp or FICS timeseal
+  with XBoard?</A></LI>
+<LI><A HREF="#[B.13]">[B.13] How do I use ICC timestamp or FICS timeseal
+  with WinBoard?</A></LI>
+<LI><A HREF="#[B.14]">[B.14] How do I play bughouse with XBoard or WinBoard?
+</A></LI>
+<li><a href="#[B.16]">[B.16]
+  What is Zippy?  How can I interface a chess program to the Internet 
+  Chess Servers?</a></li> 
+<li><a href="#[B.17]">[B.17]
+  How can I interface my own chess program to XBoard or WinBoard?</a></li>
+<li><a href="#[B.18]">[B.18]
+  How can I recompile WinBoard from source?</a></li>
+<li><a href="#[B.19]">[B.19]
+  How can I use XBoard or WinBoard to talk
+  to an Internet Chess Server through a firewall or proxy?</a></li>
+<li><a href="#[B.20]">[B.20] 
+  How can I use XBoard or WinBoard on chess.net with accuclock?</a></li>
+<li><a href="#[B.21]">[B.21]
+  Can I get Zippy to do one or more ICS commands automatically at the 
+  start or end of each game?</a></li>
+<li><a href="#[B.22]">[B.22]
+  How do I print from WinBoard?</a></li>
+<li><a href="#[B.23]">[B.23]
+  Can I get Zippy to automatically reconnect to ICS when its connection 
+  breaks?</a></li>
+<li><a href="#[B.24]">[B.24]
+  The chess engines are too strong and always beat me.  How can I adjust
+  the difficulty level to make them weaker?</a></li>
+<li><a href="#[B.25]">[B.25]
+  May I use the piece bitmaps from XBoard/WinBoard in my own program?</a></li>
+
+</UL>
+
+<LI><A NAME="[C0]" HREF="#[C]">[C] XBoard and WinBoard, bugs and 
+  problems</A></LI>
+<UL>
+<LI><A HREF="#[C.1]">[C.1] I can't build XBoard because the
+  X11/Xaw/... include files are not found.</A></LI>
+<LI><A HREF="#[C.2]">[C.2] Configuring or building XBoard fails due to
+  missing header files, missing libraries, or undefined symbols.</a></li>
+<LI><A HREF="#[C.3]">[C.3] I have problems using WinBoard on ICS with a modem.
+  I'm not running SLIP or PPP, but just dialing in to an ordinary login account
+("shell account").</A></LI>
+<LI><A HREF="#[C.4]">[C.4] 
+  I have problems using WinBoard on ICS with Windows 95 and SLIP
+  or PPP.  When trying to start up, it gets the error "Address family
+  not supported by protocol family" (or some equally strange message).
+</A></LI> 
+<LI><A HREF="#[C.5]">[C.5] When I try to run WinBoard, I get the message
+  "Failed to start chess program gnuchess on localhost: NO LANGFILE (file
+  gnuchess.lan not found)".</A></LI>
+<LI><A HREF="#[C.6]">[C.6] I want to use XBoard or WinBoard as an Internet
+  Chess Server interface, but the ICS Client option is grayed out on the
+  menu.</A></LI> 
+<LI><A HREF="#[C.7]">[C.7] How do I give command-line options to
+  a Windows program like WinBoard?</A></LI>
+<LI><A HREF="#[C.9]">[C.9]
+  When I exit from WinBoard after using it to play against a chess
+  program on my machine, the chess program keeps running in the background.
+</A></LI>
+<li><a href="#[C.12]">[C.12]
+  Why do my ICS 
+  opponents often get extra time after they make their moves?
+  Why do I sometimes lose time off my clock after I make my move?
+</a></li>
+<li><a href="#[C.13]">[C.13]
+  I can't run WinBoard unless I delete the WinBoard.ini file each time!
+</a></li>
+<li><a href="#[C.15]">[C.15]
+  I get errors compiling XBoard's parser.c.
+</a></li>
+<li><a href="#[C.16]">[C.16]
+  I get an error building WinBoard from source because "flex" is not found.
+</a></li>
+<li><a href="#[C.17]">[C.17]
+  XBoard hangs shortly after connecting to an ICS when used with dxterm,
+  cmdtool, dtterm, kterm, konsole, or other substitutes for xterm.
+</a></li>
+<li><a href="#[C.18]">[C.18]
+  The WinBoard pieces show up in the wrong colors, appear distorted,
+  or are not visible at all.
+</a></li>
+<LI><A HREF="#[C.19]">[C.19] XBoard or WinBoard tells me
+"Error: first chess program (...) exited unexpectedly".</A></LI> 
+<li><a href="#[C.20]">[C.20]
+  XBoard tells me "Warning: Cannot allocate colormap entry", or
+  "too few colors available; trying monochrome mode", or
+  "XPM pieces cannot be used in monochrome mode".
+</a></li>
+<li><a href="#[C.21]">[C.21]
+  When I log in to freechess.org, the Enter key doesn't work, and I 
+  have to use Ctrl+J instead.  But when I use WinBoard, Ctrl+J doesn't
+  work either, so I'm stuck.
+</a></li>
+<li><a href="#[C.22]">[C.22]
+  XBoard says, "Failed to start first chess program gnuchessx
+  on localhost: gnuchessx: No such file or directory."  
+</a></li>
+</UL>
+
+<LI><A NAME="[D0]" HREF="#[D]">[D] Crafty and other topics</A></LI>
+<UL>
+<LI><A HREF="#[D.1]">[D.1] What is XChess?</A></LI>
+<LI><A HREF="#[D.2]">[D.2] What is Winsock Chess?</A></LI>
+<LI><A HREF="#[D.3]">[D.3] What is Crafty?</A></LI>
+<LI><A HREF="#[D.4]">[D.4] How do I use Crafty with XBoard?</A></LI>
+<LI><A HREF="#[D.5]">[D.5] How do I use Crafty with WinBoard?</A></LI>
+<LI><A HREF="#[D.6]">[D.6] How do I use GNU Chess 5 with XBoard?</A></LI>
+</UL>
+</UL>
+
+<HR>
+<H2><A NAME="[A]">[A] Introduction and hot topics</A></H2>
+<HR>
+<H3><A NAME="[A.1]">[A.1] What are XBoard and WinBoard?</A></H3>
+
+XBoard and WinBoard are graphical user interfaces for chess.  
+XBoard runs with the X Window System on Unix systems (including
+GNU/Linux); see topic
+<A HREF="#[B.1]">[B.1]</A>.
+WinBoard runs on true 32-bit Microsoft Windows operating
+systems, such as Windows 95, 98, NT,
+2000, ME, XP, and should continue to work
+on future 32-bit Windows systems.  It does
+not work on Windows CE (also known as Pocket PC), nor does it work on
+16-bit Windows systems such as Windows 3.1.  See topic
+<A HREF="#[B.2]">[B.2]</A>.
+
+<HR>
+<H3><A NAME="[A.2]">[A.2] Where can I get chess information and chess 
+software?</A></H3>
+
+As a shortcut to most things mentioned in this FAQ, try Tim Mann's
+Chess Web page, <A HREF= "http://www.tim-mann.org/chess.html"
+>http://www.tim-mann.org/chess.html</A>.  This page page is a good
+place to get the latest released versions of XBoard and WinBoard and
+the most up-to-date version of this FAQ.  Also see our Savannah
+project pages at <a href="https://savannah.gnu.org/projects/xboard/"
+>https://savannah.gnu.org/projects/xboard/</a>.
+
+<p>If you have other questions about XBoard/WinBoard that aren't answered
+in this FAQ, you can try Aaron Tay's WinBoard and Chess Engines FAQ, at
+<a href="http://www.aarontay.per.sg/Winboard/"
+>http://www.aarontay.per.sg/Winboard/</a>.
+
+<P>For general news and information about chess, try the newsgroup hierarchy
+rec.games.chess.*, especially the groups rec.games.chess.misc and
+rec.games.chess.computer.  Both of the latter groups have very informative
+FAQs maintained by Steve Pribut; look for them on the newsgroups or at
+<A HREF=
+"http://www.clark.net/pub/pribut/chess.html"
+>http://www.clark.net/pub/pribut/chess.html</A>.
+
+<P>Like other GNU software, you can get XBoard, and
+WinBoard by anonymous FTP from 
+<A HREF=
+"ftp://ftp.gnu.org/pub/gnu/"
+>ftp://ftp.gnu.org/pub/gnu/</A>
+and its many mirror sites.  Look in the subdirectories xboard, and winboard.
+The .tar.gz suffix on the files there indicates they were packed with tar
+and compressed with gzip.  The .exe or .zip suffixes indicate files that
+were packed and compressed with zip.
+
+<P>For other chess software, try the Internet Chess Library.  Use anonymous FTP
+to connect to ftp.freechess.org, or go to the Web page
+<A HREF=
+"http://www.freechess.org/"
+>http://www.freechess.org/</A>.
+You can get chess software, game
+collections, the FAQ file for rec.games.chess, and other chess-related
+material there, in the directory pub/chess.  The FTP server can
+automatically decompress files for you as you download them, useful if you
+don't have gzip.
+
+<P>Here is a sample anonymous ftp session.  Some of the ftp server's responses
+are abbreviated, but all the commands you must type are included.
+
+<p><PRE>
+    % ftp ftp.gnu.org
+    Connected to ftp.gnu.org
+    Name: anonymous
+    Password: your-email-address@your-site
+    ftp&gt; binary
+    200 Type set to I.
+    ftp&gt; cd /pub/gnu/xboard
+    ftp&gt; dir
+    -rw-r--r-- 1 14910 wheel  1057625 May 20 00:25 xboard-4.2.7.tar.gz
+    ftp&gt; get xboard-4.2.7.tar.gz
+    150 BINARY connection for xboard-4.2.7.tar.gz (1057625 bytes).
+    226 Transfer complete.
+    ftp&gt; quit
+</PRE>
+
+<HR>
+<H3><A NAME="[A.3]">[A.3] What are the current version numbers for 
+XBoard and WinBoard?</A></H3>
+
+At this writing, the current version numbers are:
+
+<UL>
+<LI>XBoard 4.2.7</LI>
+<LI>WinBoard 4.2.7</LI>
+</UL>
+
+<HR>
+<H3><A NAME="[A.4]">[A.4] Who is working on this project?</A></H3>
+
+Please see our Savannah project pages at <a
+href="https://savannah.gnu.org/projects/xboard/"
+>https://savannah.gnu.org/projects/xboard/</a> for a list of active
+developers.  Many others occasionally contribute suggestions and
+snippets of code, for which we are grateful.
+
+<HR>
+<H3><A NAME="[A.5]">[A.5] How do I report bugs, offer help, etc.?</A></H3>
+
+<P>Bug reports, suggestions, and offers to help on XBoard
+or WinBoard should be sent to
+bug-xboard<a name="nospam">@</a>gnu.org. <i>(Note: as of 4 Nov 2003,
+this mailing list is temporarily broken.  You can send mail to
+bug-xboard<a name="nospam">@</a>tim-mann.org instead until it is fixed.)</i>
+
+<p>Beginner questions and discussion about the program may get faster
+answers on the WinBoard Forum at <a
+href="http://f11.parsimony.net/forum16635/"
+>http://f11.parsimony.net/forum16635/</a>.  
+
+<p>If you are developing a
+chess engine that works with XBoard or WinBoard (or an alternative
+GUI that works with such engines), see the Chess Engines mailing
+list, hosted at
+<a href="http://groups.yahoo.com/group/chess-engines"
+>http://groups.yahoo.com/group/chess-engines</a>.
+
+<P>Any time you want to report a possible bug in XBoard or WinBoard,
+we need to know exactly what you did, and exactly what error (or
+other) messages you got.
+
+<P>If you are using Unix, run the "script" program, run XBoard with
+the -debug flag (if you get as far as running it), do whatever is
+necessary to reproduce the problem, type "exit" to the shell, and mail
+us the resulting typescript file.  We also need to know what
+hardware/operating system combination you are using.  The command
+"uname -a" will usually tell you this; include its output in your
+typescript.
+
+<P>If you are using MS Windows, run WinBoard with the -debug flag, and
+send us a copy of the WinBoard.debug file.  If you aren't sure how to
+add command-line flags to WinBoard, you can hit Ctrl+Alt+F12 to create
+a WinBoard.debug file after WinBoard starts, but that is not as good,
+because a few messages that would have been printed at the start are
+lost.
+
+<p>Either way, please send us the exact text of the commands you typed
+and the output you got, not just your recollection of approximately
+what they were.  The messages may seem meaningless to you, but they
+are very meaningful to us and essential for diagnosing problems.
+
+<hr>
+<h3><a name="[A.6]">[A.6] What are the future plans for XBoard and
+  WinBoard?</a></h3>
+
+<p>Our plans are always in flux.  As with most free software projects,
+the next release will happen when it happens -- or it may never
+happen.  This has always been the policy for XBoard/WinBoard.
+Releases have never been promised in specific time frames.
+
+<p>Starting in November 2003, several new developers have joined the
+project, and work is now hosted at <a
+href="https://savannah.gnu.org/projects/xboard/"
+>https://savannah.gnu.org/projects/xboard/</a>.  Lots of work is just
+getting underway, but nothing is far along yet.
+
+<p>Here is a partial list of items that have a nonzero probability of
+happening in finite time.
+
+<ul>
+<li>Small bug fixes.  Occasionally someone sends us a fix, or reports
+a small bug very clearly so that we're able to fix it in a few minutes
+work.<p>
+
+<li>Protocol version 3.  The members of the chess engine authors'
+mailing list discussed a set of proposed features for the next version
+of the XBoard/WinBoard chess engine communication protocol.
+Unfortunately, this project has gotten only as far as that discussion
+took it; no revisions of the protocol spec or coding have been done
+yet.  A few simple features are very clearly needed, though, and will
+probably appear in time.<p>
+
+<li>Contributed features.  Several people have mailed me code to add
+various features.  Most of this code is available on the
+XBoard/WinBoard extensions page at <a
+href="http://www.tim-mann.org/extensions.html"
+>http://www.tim-mann.org/extensions.html</a>, but it is not in any
+official releases yet.  We are in the process of getting folks to
+formally assign the copyrights on their contributions to the Free
+Software Foundation so that we can include it in official releases in
+the future.<p>
+
+<li>Internationalization.  Several people have expressed interest in
+internationalizing XBoard/WinBoard, and so hopefully this project will
+go forward.  Once the internationalization support is in, we will need
+more translators.  Watch for news on the xboard-devel mailing list on
+our Savannah pages.
+
+</ul>
+
+<HR>
+<H2><A NAME="[B]">[B] XBoard and WinBoard</A></H2>
+<HR>
+<H3><A NAME="[B.1]">[B.1] What is XBoard?</A></H3>
+
+XBoard is a graphical user interface for chess.  It displays a
+chessboard on the screen, accepts moves made with the mouse, and loads
+and saves games in Portable Game Notation (PGN).  XBoard is free software.
+It serves as a front-end for many different chess services, including:
+
+<p><strong>Chess engines</strong> that will run on your machine and
+play a game against you or help you analyze, such as GNU Chess and
+Crafty (topic <A HREF="#[D.3]">[D.3]</A> below).
+
+<p><strong>Chess servers</strong> on the Internet, where you can
+connect to play chess with people from all over the world, watch other
+users play, or just hang out and chat.
+
+<p><strong>Correspondence chess</strong> played by electronic
+mail. The cmail program (topic <A HREF="#[B.6]">[B.6]</A> below)
+automates the tasks of parsing email from your opponent, playing his
+moves out on your board, and mailing your reply move after you've
+chosen it.
+
+<p><strong>The Web</strong> and your own saved games. You can use
+XBoard as a helper application to view PGN games in your
+Web browser, or to load and save your own PGN files.
+
+<P>XBoard runs under Unix or Unix-compatible systems.  It requires the
+X Window System, version X11R4 or later.  There are also ports of
+XBoard to 32-bit Microsoft Windows and to
+the Amiga.  See topics <A HREF="#[B.2]">[B.2]</A> and <A
+HREF="#[B.3]">[B.3]</A> respectively.
+
+<HR>
+<H3><A NAME="[B.2]">[B.2] Is there an XBoard for Microsoft Windows?  What is WinBoard?  How do I install WinBoard?</A></H3>
+
+WinBoard is a port of XBoard to 32-bit Microsoft Windows systems, such
+as Windows 95, 98, NT, 2000, ME, and XP.  It uses the same back end
+chess code as XBoard, but the front end graphics code is a complete
+rewrite.  WinBoard is free software.
+
+<P>The WinBoard distribution includes a port of GNU Chess to Win32.
+The GNU Chess port is distributed in executable form, with instructions for
+rebuilding it from the standard GNU Chess sources (available separately).  You
+should have at least 16 to 24 MB of memory to run GNU Chess with WinBoard.
+
+<P>The WinBoard distribution also includes the ICC timestamp and FICS
+timeseal programs (topic <A HREF="#[B.12]">[B.12]</A>).
+
+<P>cmail (topic <A HREF="#[B.6]">[B.6]</A>) has not been ported to
+Windows.  All the other XBoard functions are included in WinBoard.
+The International Email Chess Group web site at <a
+href="http://www.iecg.org/" >http://www.iecg.org/</a> recommends
+ECTool (<a href="http://www.ectool.nu/" >http://www.ectool.nu/</a>)
+for playing correspondence chess under Windows.
+
+<p>You install WinBoard as follows. Download the WinBoard package to
+your PC (see topic <A HREF="#[A.2]">[A.2]</A>).  It will be a file
+with a name like winboard-4_0_0.exe.  Double-click on this file
+in the Explorer or File Manager to run it. Follow the on-screen
+prompts.
+
+<HR>
+<H3><A NAME="[B.3]">[B.3] Is there an XBoard for the Amiga?  What is AmyBoard?</A></H3>
+
+AmyBoard is a port of XBoard to the Amiga, by Jochen Wiedmann.
+The distribution includes a port of GNU Chess.
+AmyBoard is free software.
+
+<p>The current version of AmyBoard is 330.5 (based on XBoard 3.3.0).
+No one is currently maintaining it.
+
+<P>System requirements:
+
+<UL>
+<LI>An Amiga (obviously :-), running OS 2.04 or later, 2Mb RAM or more.</LI>
+<LI>MUI 2.0 or later.</LI>
+<LI>Workbench or another screen with no less than 640x400 pixels (adjustable
+  with the MUI-Prefs); this restriction is just because we don't have
+  bitmaps with less than 40x40 pixels per square. If someone contributes
+  bitmaps with 20x20 or 20x25, they will work with any Hires mode.</LI>
+</UL>
+<P>
+If you would like to use an ICS, you need an Internet connection via either
+
+<UL>
+<LI>a telnet-like program, or</LI>
+<LI>a terminal program reading from stdin and writing to stdout.</LI>
+</UL>
+<P>
+AmyBoard is available in the Internet Chess Library (topic <A HREF="#[A.2]">[A.2]</A>).
+
+<HR>
+<H3><A NAME="[B.4]">[B.4] Is there an XBoard for the Macintosh?</A></H3>
+
+Because MacOS X has a Unix base, XBoard will compile and run on it.
+You do need an X11 (X Window System) server and client libraries.
+These do not come with Mac OS, but both free and commercial versions
+are available.  Once you install the X11 package, XBoard is reported
+to compile and run without changes.  I am not a Mac user and have not
+tried this myself, so I cannot answer questions about it.
+
+Version 4.2.6 and earlier of XBoard come with an old copy of the
+config.sub utility that does not recognize Mac OS X, so to build
+XBoard, you'll have to tell the configure program what OS you are
+running.  Follow the instructions in topic <A HREF="#[B.7]">[B.7]</A>
+of this FAQ, but add the argument <tt>--host=powerpc-apple-bsd</tt> to
+the end of the "configure" command line.
+
+There is no version of XBoard or WinBoard that runs with the native
+(non-X11) Mac graphical interface, and none that runs on MacOS 9 or
+earlier.
+
+
+<HR>
+<H3><A NAME="[B.5]">[B.5] Does XBoard run on VMS?</A></H3>
+
+No.  This port would probably be a lot easier than the Win32 and Amiga
+ports were, because VMS has the X Window system (under the name
+DECwindows) and is now POSIX compliant.  However, I don't know enough
+about VMS to do the port myself, and I don't have time.  If you do,
+give it a try!  Send mail to me, 
+tim<a name="nospam2">@</a>tim-mann.org (Tim Mann), if you're
+working on this.
+
+<HR>
+<H3><A NAME="[B.6]">[B.6] What is cmail?</A></H3>
+
+cmail is a program that helps you play and keep track of electronic mail
+correspondence chess games using XBoard.  It is distributed with XBoard and
+has its own manual page.  cmail is free software.  It was written by
+Even Welsh.  cmail has not been ported to Windows; sorry.
+
+<HR>
+<H3><A NAME="[B.7]">[B.7] How do I build XBoard?  Do I need gcc?</A></H3>
+
+The first step to building XBoard is to get the distribution file.  See topic
+<A HREF="#[A.2]">[A.2]</A> for places you can ftp the software from.
+
+<P>Next, decide what directory tree you are going to install XBoard
+in.  The default is /usr/local, but you probably don't have write
+access to that directory unless you are a system administrator.  If
+you do, type the following to install it there:
+
+<p><PRE>
+    gzip -cd xboard-*.tar.gz | tar -xvf -
+    cd xboard-*/
+    ./configure
+    make
+    su
+    make install
+</PRE>
+
+If you want to install xboard in your personal home directory ($HOME/bin),
+type this:
+
+<p><PRE>
+    gzip -cd xboard-*.tar.gz | tar -xvf -
+    cd xboard-*/
+    ./configure --prefix=$HOME
+    make
+    make install
+</PRE>
+
+<P>If the first step above fails because you don't have gzip, see
+topic <A HREF="#[A.2]">[A.2]</A>, and ask a local Unix expert if you
+need more help.  If you have any problems with the last two steps,
+read the READ_ME and INSTALL files in the xboard-*/ directory.  You
+will also find this FAQ there.
+
+<P>You don't need to have gcc to build XBoard.  Almost any Unix C
+compiler should do.
+
+<HR>
+<H3><A NAME="[B.8]">[B.8] Can I use XBoard or WinBoard to play a game
+  of chess with another human?</A></H3>
+
+The only way for two humans on different machines to play chess in
+real time using XBoard/WinBoard is to use an Internet Chess Server
+as an intermediary.  That is, each player runs his own copy of XBoard
+or WinBoard, both of them log into an ICS, and they play a game there.
+Two copies of XBoard/WinBoard cannot communicate with each other
+directly.
+
+<P>Instructions on how to get started with Internet chess are included
+with the XBoard and WinBoard distributions.  The network addresses
+included in the distribution may not always be current.  The oldest
+and largest ICS is the Internet Chess Club at chessclub.com, which now
+has a fee for registered use, but still allows free unregistered use.
+There are also many newer sites with no fees, using the Free Internet
+Chess Server implementation (FICS).  The most active FICS site is
+freechess.org.  On these and most other chess servers,
+the port number to use is 5000.
+
+<P>If you don't have network connectivity to any ICS site, you
+can run your own server using a version of the FICS code, but this
+is not easy.  See <a href="http://www.tim-mann.org/ics.html#ownics"
+>http://www.tim-mann.org/ics.html#ownics</a> for advice and pointers.
+
+<P>The cmail program included with XBoard lets you play email postal games with
+another human; see topic <A HREF="#[B.6]">[B.6]</A>.
+
+<P>Two humans can play chess on the same machine using one copy of
+XBoard/WinBoard in
+Edit Game mode, but the clocks don't run in this mode, so it's of limited
+usefulness.
+
+<P>See also topic <A HREF="#[D.2]">[D.2]</A>, Winsock Chess.
+
+<HR>
+<H3><A NAME="[B.9]">[B.9] Will WinBoard run on Windows 3.1?
+  How about Windows CE (also known as Pocket PC)?
+</A></H3>
+
+WinBoard does not run on Windows 3.1, Windows for Workgroups 3.11, etc.,
+not even with the Win32s compatibility package.  The main problem is
+that Win32s does not have threads or real concurrent processes.  A
+port of WinBoard to Windows 3.1 is possible in theory, but it would be
+difficult and messy, and no one is going to do it.
+
+<p>WinBoard does not run on Windows CE (also
+known as Pocket PC).  I don't know what would be required to port it.
+
+<P>WinBoard does run well on full 32-bit versions of Windows, such as
+Windows 95, 98, NT, 2000, ME, and XP, and should continue to work
+on future 32-bit Windows systems.
+
+<HR>
+<H3><A NAME="[B.10]">[B.10] How do I use XBoard or WinBoard as an external viewer for PGN files
+  with my Web browser?</A></H3>
+
+1) On Unix systems:
+<P>
+- Add the following line to the file .mime.types in your home directory.
+(Create the file if it doesn't exist already.)
+<PRE>
+    application/x-chess-pgn    pgn
+</PRE>
+<P>
+- Add the following line to the file .mailcap in your home directory.
+(Create the file if it doesn't exist already.)
+<PRE>
+    application/x-chess-pgn; xboard -ncp -lgf %s
+</PRE>
+<P>
+- Exit from your Web browser and restart it.
+
+<P>2) On MS Windows systems:
+
+<P>The exact procedure depends on which Web browser you are using.
+The current version of WinBoard automatically configures itself as
+your PGN viewer for local files, Netscape 4.x and later, and Internet
+Explorer.  This automatic setup probably works for all other current Web
+browsers, too.
+
+<HR>
+<H3><A NAME="[B.11]">[B.11] How do I use WinBoard as an external viewer
+  for PGN files with the MS Windows File Manager or Explorer?</A></H3>
+
+WinBoard sets this up automatically when you install it, except on old
+versions of Windows NT (prior to 4.0).  On Windows NT 3.51 or earlier,
+go to the File Manager, click on the File menu, select Associate,
+enter "pgn" as the extension, and use the Browse button to find your
+copy of WinBoard and set up the association.
+
+<HR>
+<H3><A NAME="[B.12]">[B.12] How do I use ICC timestamp or FICS timeseal
+with XBoard?</A></H3>
+
+First, get the appropriate version of timestamp or timeseal for your
+machine from ftp.chessclub.com or ftp.freechess.org.
+Second, be sure that you can connect using XBoard <I>without</I>
+timestamp/timeseal.  Third, be sure that you can connect using
+timestamp/timeseal without XBoard.  See the help files on ICC and FICS
+or ask people online if you have problems.
+
+<P>If you are in a completely ordinary situation, where your machine
+is directly on the Internet and you can connect to ICC or FICS 
+without timestamp/timeseal using
+just the command "xboard -ics" or "xboard -ics -icshost freechess.org",
+change that command to one of the following:
+
+<p><PRE>
+    xboard -ics -icshost 204.178.125.65 -icshelper timestamp
+
+    xboard -ics -icshost 164.58.253.13 -icshelper timeseal
+</PRE>
+
+<p>If you have a firewall between your machine and the ICS, see topic
+<A HREF="#[B.19]">[B.19]</A>.
+
+<P>If you normally have to use the "/icscomm" command line option on
+xboard to log into a second machine, and then telnet to ICC or FICS
+from there, you are going to have to run the Unix version of timestamp
+or timeseal on the second machine.  (If the second machine is not
+running Unix, you are out of luck.)  Get the appropriate version of
+timestamp or timeseal onto the shell machine via FTP; see the help
+files on ICC and FICS for instructions.  Then simply run it when you
+would normally run telnet.  In this configuration you are not
+protected against lag between your PC and the shell machine, or for
+lag caused by heavy load on the shell machine itself from other users.
+
+<P>For further information on timestamp and timeseal, see the help
+files on ICC and FICS.
+
+<HR>
+<H3><A NAME="[B.13]">[B.13] How do I use ICC timestamp or FICS timeseal
+with WinBoard?</A></H3>
+
+<P>If you select an ICS from either the WinBoard Startup dialog or the
+Windows Start submenu that WinBoard installs, WinBoard automatically
+runs timestamp or timeseal if the ICS you chose is known to support it.
+
+<P>If you are constructing a WinBoard command line by hand, add the
+option "/icshelper timestamp" or "/icshelper timeseal" to the WinBoard
+command line to use timestamp or timeseal.  Both timestamp.exe and
+timeseal.exe are included in the WinBoard distribution.  They both
+function identically to the Unix versions, as documented in "help
+timestamp" on ICC and "help timeseal" on FICS.
+
+<p>If you have a firewall between your machine and the ICS, see topic
+<A HREF="#[B.19]">[B.19]</A>.
+
+<P>If you normally have to use the "/icscomm" command line option on
+WinBoard to log into a shell account, and then telnet to ICC or FICS
+from there, you are going to have to run the Unix version of timestamp
+or timeseal on the shell machine.  (If the shell account is not on a
+Unix machine, you are out of luck.)  Get the appropriate version of
+timestamp or timeseal onto the shell machine via FTP; see the help
+files on ICC and FICS for instructions.  Then simply run it when you
+would normally run telnet.  In this configuration you are not protected
+against lag between your PC and the shell machine, or for lag caused by
+heavy load on the shell machine itself from other users.
+
+<P>For further information on timestamp and timeseal, see the help
+files on ICC and FICS.
+
+<HR>
+<H3><A NAME="[B.14]">[B.14] How do I play bughouse with XBoard or WinBoard?
+</A></H3>
+
+XBoard and WinBoard have simple but effective bughouse support.
+Offboard piece holdings are shown in the board window's banner, and
+you drop offboard pieces using the right mouse button.  Press it over
+the destination square to pop up a menu of pieces.
+
+<P>XBoard and WinBoard can display only one board at a time, but you
+can observe your partner's game by running a second copy of the
+program and logging in as a guest.  (Unfortunately, this is not
+possible if you are using the /icscomm option.)  To observe your
+partner's games automatically, use the "follow" or "pfollow" ICS
+command; see the ICS online help for details.
+
+<HR>
+<h3><a name="[B.16]">[B.16] What is Zippy?  How can I interface a 
+chess program to the Internet Chess Servers?</a></h3>
+
+Zippy is an interface that lets a compatible chess engine (such as GNU
+Chess or Crafty) act as a computer
+player on an Internet Chess Server.  Zippy is included in both the
+XBoard and WinBoard distributions.  It is implemented as a small
+amount of additional code within XBoard or WinBoard.  
+For documentation, see the file
+zippy.README, included in both distributions or available
+from my chess Web page,
+<A HREF=
+"http://www.tim-mann.org/chess.html"
+>http://www.tim-mann/chess.html</A>.
+The version of zippy.README on my Web page is often more up-to-date
+than those in the XBoard/WinBoard distributions.
+You'll also find a "biography" of Zippy and pointers to the original
+Zippy the Pinhead comic strips on my Web page.
+Please read zippy.README carefully before you ask me any questions about Zippy.
+
+<p>Using a computer to choose your moves on a chess server is
+considered cheating unless your account is on the computer (C) list.
+Read "help computer" on your favorite server for details on their
+policy.  Most of the servers have plenty of computers running now, so they
+will not be excited about having you run a new one unless you have
+written your own chess engine.  They don't really need yet another 
+Crafty or GNU Chess clone.
+
+<HR>
+<h3><a name="[B.17]">[B.17] How can I interface my own chess program
+to XBoard or WinBoard?</a></h3>
+
+This is a non-trivial task.  XBoard and WinBoard were not designed
+with a clean interface for talking to chess programs; they were
+written to work with an existing version of GNU Chess that expects to
+be talking to a person.  Your program has to emulate GNU Chess's
+rather idiosyncratic command structure to work with XBoard and
+WinBoard.  We are gradually cleaning up, improving, and documenting
+the interface as newer versions of XBoard and WinBoard come out,
+however.
+
+<p>For documentation, see the file engine-intf.html, included in both
+distributions or available from my chess Web page, <A HREF=
+"http://www.tim-mann.org/chess.html"
+>http://www.tim-mann.org/chess.html</A>.
+The version of engine-intf.html on my Web page is often more up-to-date
+than those in the XBoard/WinBoard distributions.
+
+<HR>
+<h3><a name="[B.18]">[B.18] How can I recompile WinBoard from source?</a></h3>
+
+The source code for WinBoard is available from the author's Web page,
+<A HREF=
+"http://www.tim-mann.org/chess.html"
+>http://www.tim-mann.org/chess.html</A>.
+
+<p>WinBoard is currently developed using Microsoft Visual C++ 5.0.
+You can build the program from the MSVC++ GUI by opening the project
+file (winboard.dsp) and telling MSVC++ to build the project.  You can
+also build it from the the command line by using the nmake program
+supplied with MSVC++.
+
+<p>To build WinBoard with the free Cygwin tools, available from <a
+href= "http://www.cygwin.com/" >http://www.cygwin.com/</a>), use the
+command "make -f cygwin.mak".  WinBoard 4.2.5 was successfully
+compiled with the net release of Cygwin as downloaded on 20-March-2001
+(cygwin1.dll 1.1.8, gcc 2.95.2-6, binutils 20001221-1, flex 2.5.4-1),
+but exhibits a command-line parsing bug; see item 511 in the ToDo file
+that comes with WinBoard.  WinBoard 4.1.0 does not compile with
+Cygwin.  WinBoard 4.0.7 is known to compile with Cygwin BL20.1.
+
+<p>To build WinBoard with Borland C++ 4.5, use "borland.mak", supplied
+with the WinBoard sources, as the Makefile.  Support for Borland C++
+was contributed by Don Fong and has not been tested by the author of WinBoard.
+
+<p>WinBoard is a Win32 application, so you definitely need a compiler
+and tool set that supports Win32.  In particular, older versions of
+DJGPP can build only 32-bit MSDOS programs; that is, programs that use
+a DOS extender to get a 32-bit address space and do not make any
+Windows calls.  The latest versions of DJGPP are said to be able to 
+build Win32 programs when used with the proper extension package(s),
+but this is not known to work with WinBoard.  Use Cygwin instead.
+
+<p>See also topic <A HREF="#[C.16]">[C.16]</A>.
+
+<HR>
+<H3><A NAME="[B.19]">[B.19] 
+How can I use XBoard or WinBoard to talk
+to an Internet Chess Server through a firewall or proxy?
+</A></H3>
+
+<p>There is no single answer to this question, because there are many
+different kinds of firewalls in use.  They work in various different
+ways and have various different security policies.  This answer can
+only provide hints.
+
+<p>Note that you can't access Internet Chess Servers through a Web proxy,
+because they are not a Web service.  You talk to them through a raw
+TCP connection, not an HTTP connection.  If you can only access the
+Web through a proxy, there may be a firewall that stops you from
+making direct TCP connections, but there may also be a way through it.
+Read on for hints, and contact your local system administrator if you
+need more information about your local configuration.
+
+<p>A helpful user mailed me the following explanation of how to use
+WinBoard with WinGate:
+<blockquote>
+"I have managed to setup WinBoard though my WinGate proxy.  I have the
+Office version.  What I needed to do was to setup the TCP/IP
+connection to add the User/Host name and my provider service name for
+the DNS, but I had to leave the HOST IP address blank.  I have not
+played with all the variations, so it may be just that I have the DNS
+lookup enabled."
+</blockquote>
+I hope this helps, though I don't find it very clear.  I don't have
+a copy of WinGate myself and can't help if you have questions about it.
+
+<p>If you are using some other non-SOCKS firewall, read the FIREWALLS section
+in your XBoard or WinBoard documentation (man page, info document, or
+Help file).  If you can telnet to a chess server in some way, then you
+can almost certainly connect to it with xboard/WinBoard, though in
+some cases you may not be able to run timestamp or timeseal.  The
+timestamp and timeseal protocols require a clean, 8-bit wide TCP
+connection from your machine to the ICS, which some firewalls do not
+provide.
+
+<p>If you have a SOCKS firewall and are using <strong>XBoard</strong>,
+you should be able to SOCKSify xboard and use it.  See <a
+href="http://www.socks.nec.com/">http://www.socks.nec.com/</a> for
+information about SOCKS and socksification.  However, if you do this,
+you can't use timestamp or timeseal; what you really need is a
+socksified version of timestamp or timeseal.  This is hard because the
+source code for timestamp and timeseal is proprietary; the folks
+running the chess servers don't give it out because that would make it
+too easy to cheat.  On some versions of Unix, you may be able to
+socksify a program that you don't have the source code to by running
+it with an appropriate dynamic library; see <a
+href="http://www.socks.nec.com/">http://www.socks.nec.com/</a>.  For
+others, you might be able to get a pre-built socksified version from
+the chess server administrators.  For timeseal versions, see <a
+href="ftp://ftp.freechess.org/pub/chess/timeseal/"
+>ftp://ftp.freechess.org/pub/chess/timeseal/</a>.  For timestamp
+versions, the directory would be <a
+href="ftp://ftp.chessclub.com/pub/icc/timestamp/"
+>ftp://ftp.chessclub.com/pub/icc/timestamp/</a>, but at this writing
+there don't seem to be any socksified timestamps there.  Once you have
+a socksified timestamp or timeseal, simply run it with a normal,
+non-socksified xboard in place of the standard timestamp or timeseal.
+
+<p>If you have a SOCKS firewall and you are using
+<strong>WinBoard</strong>, we now know how to make this configuration
+work, complete with timestamp or timeseal!
+
+<p>Start by getting SocksCap32.  This software is freely available
+from <a href="http://www.socks.nec.com/">http://www.socks.nec.com/</a>.
+Install it on your machine, read the documentation, and learn to use
+it.  You may find it useful with many other programs besides WinBoard.
+
+<p>Next, <strong>don't</strong> socksify WinBoard.  Socksifying
+WinBoard itself doesn't let you use it with timestamp or timeseal.
+For some reason I don't understand -- something strange that
+SocksCap32 does -- the socksified WinBoard runs but does nothing, and
+timestamp/timeseal runs all by itself in its own window.
+
+<p>Instead, use the following workaround.  Follow the instructions
+exactly; don't try to skip steps or simplify things.
+
+<p>First, make SocksCap32 application profiles for timestamp and
+timeseal.  Use the following command lines in the SocksCap32
+profiles. Name the first profile "timestamp" and the second
+"timeseal".
+
+<p><pre>
+    "c:\program files\winboard\timestamp.exe" chessclub.com 5000 -p 5000
+    "c:\program files\winboard\timeseal.exe" freechess.org 5000 -p 5000
+</pre>
+
+<p>Second, run timestamp or timeseal by itself, socksified, using its
+profile.  This will open an unneeded, black window that will not
+respond to typing.  Minimize it to the task bar and ignore it. It will
+go away when you exit from WinBoard.
+  
+<p>Next, run WinBoard using the following command line.  Make a shortcut
+or type this command into an MS-DOS Prompt box.  Don't run WinBoard
+itself socksified, just run it directly.
+
+<p><pre>
+    "c:\program files\winboard.exe" /ics /icshost=localhost /icsport=5000
+</pre>
+
+<p>After you get this working, you can try getting the timestamp window to
+auto-minimize by starting it from a shortcut instead of from the
+SocksCap32 control window. As it says in the SocksCap32 help file, put
+the following in the Target field of a shortcut's Properties page:
+
+<p><pre>
+    "c:\program files\sockscap32\sc32.exe" timestamp
+</pre>
+
+Then select "Run: Minimized" on the same page.  Do the same for timeseal.
+
+<p>Another method that can work is to use a .bat file to start both
+timestamp and WinBoard.  It would look something like this:
+
+<p><pre>
+    REM --
+    REM -- icc.bat
+    REM -- Start timestamp under SocksCap32 and use WinBoard to connect to it.
+    REM -- The string "timestamp" refers to a SocksCap32 profile for timestamp.
+    REM --  Do not change it to the filename of the timestamp program!
+    REM --
+    start /minimized "c:\program files\sockscap32\sc32.exe" timestamp
+    cd "c:\program files\winboard"
+    winboard /ics /icshost=localhost /icsport=5000
+</pre>
+
+<p>This workaround has a problem if you want to run two copies of
+WinBoard at once, talking to the same chess server twice (for
+bughouse) or to two different chess servers. If you need to do that,
+you will need to run a separate copy of timestamp with <i>a different
+port number</i> for each connection.  You'll need to make a second set of
+profile entries with a different value after the -p flag (say, 5001)
+and you'll need to change the WinBoard command line /icsport=5000 for
+the second WinBoard to match.
+
+<HR>
+<H3><A NAME="[B.20]">[B.20] 
+How can I use XBoard or WinBoard on chess.net with accuclock?
+</A></H3>
+
+<p>I believe chess.net provides a Win32 command-line version of
+accuclock that will work with WinBoard.  Please see the documentation
+on the chess.net server itself; don't ask the author of WinBoard.
+
+<p>I don't know whether chess.net provides versions of accuclock for
+Unix at this time.  Ask them.
+
+<hr>
+<h3><a name="[B.21]">[B.21]
+  Can I get Zippy to do one or more ICS commands automatically at the 
+  start or end of each game?</a></h3>
+
+<p>By default, Zippy automatically sends the command "gameend" to ICS
+at the end of each game.  You can alias this command (using the ICS
+"alias" feature) to anything you want.  On ICC, you can use the
+"multi" feature to alias gameend to several commands, but other
+servers don't have that feature.  Zippy doesn't send anything at the
+start of the game by default.
+
+<p>You can get Zippy to send one or more commands of your choosing, at
+the start and/or end of each game, by using the -zippyGameStart and
+-zippyGameEnd command line options, newly added in version 4.0.3.
+Both xboard and WinBoard have (somewhat obscure) ways of getting
+newlines into this option to send several commands.  Here is an
+example of one way to do it for each.
+
+<p><pre>
+    xboard -ics -zp -xrm '*zippyGameStart: say hi\nsay prepare to die\n'
+
+    WinBoard /ics /zp /zippyGameEnd='say thanks\nseek 5 0\nseek 2 12\n'
+</pre>
+
+<hr>
+<h3><a name="[B.22]">[B.22]
+  How do I print from WinBoard?
+</a></h3>
+
+WinBoard does not have built-in printing functionality.
+If you want to print a picture of the board, press Alt+PrintScrn, run the
+standard Windows application Paintbrush, select Paste, and print from there.
+If you want to print a list of moves, save your game as a PGN file,
+then open the PGN file with Notepad or any other plain text editor and
+print it from there.
+
+<hr>
+<h3><a name="[B.23]">[B.23]
+  Can I get Zippy to automatically reconnect to ICS when its connection 
+  breaks?</a></h3>
+
+<p>There isn't a perfect solution to this problem yet, but a pretty
+good one is to write a shell script (for xboard) or .bat script (for
+WinBoard) that automatically restarts the program whenever it exits.
+Use the -xexit flag so that you don't get a popup dialog that must be
+dismissed with the OK button before the program will exit.  The gap in
+this solution is that your connection to ICS can sometimes get into a
+state where the program does not notice that the connection is broken
+until the next time it tries to send a command.  Perhaps some future
+version of xboard/WinBoard will have an option to send a harmless
+command every five minutes or so.
+
+<p>Anyway, here is a sample Windows .bat file that restarts WinBoard each
+time it exits.  Thanks to Jason Williamson.  It assumes that you have put
+your computer account's name and password in a file named logon.ini.
+
+<pre>
+REM --
+REM -- wbrecon.bat
+REM -- Start WinBoard in Zippy mode, and restart it each time it exits.
+REM -- Add or change parameters as needed for your application.
+REM --
+:loop
+start /w winboard /zp /ics /icslogon logon.ini /xexit /xautoraise
+REM -- The next line is to have a short delay setup for 139 seconds.
+REM -- Leave it out if it doesn't work on the version of Windows you use.
+TYPE NUL | CHOICE.COM /N /CY /TY,99 &gt;NUL
+goto loop
+</pre>
+
+<p>Here is a Unix shell script to do the same thing for xboard.
+It's a bit more elaborate.  It is based on the script I use for the
+original Zippy.  It logs all ICS output to a file named zippy.out,
+and it lets you type commands to Zippy by running "cat &gt; zippy.fifo".
+
+<pre>
+#! /bin/sh
+host="204.178.125.65 -icsport 5000 -telnet -telnetProgram timestamp"
+#host="164.58.253.13 -icsport 5000 -telnet -telnetProgram timeseal"
+out=zippy.out
+fifo=zippy.fifo
+ZIPPYPASSWORD='something'
+export ZIPPYPASSWORD
+ZIPPYPASSWORD2='orother'
+export ZIPPYPASSWORD2
+ZIPPYLINES=`pwd`/all.lines
+export ZIPPYLINES
+ZIPPYGAMEEND='say Yow, that was FUN!
+gameend'
+export ZIPPYGAMEEND
+zippylogon=`pwd`/logon.ini
+DISPLAY=`hostname`:0.0
+export DISPLAY
+mv -f $out ${out}.old
+rm -f $fifo
+mkfifo $fifo
+pid=$$
+( while [ true ] ; do cat -u $fifo ; done ) | \
+      ( while [ true ] ; do
+          xboard -iconic -ics -icshost $host \
+                 -zt -zp -xbell -xanimate \
+                 -xautosave -xquiet -fcp "gnuchessx -h" \
+                 -icslogon $zippylogon -xexit -autoflag -xautoraise $*
+          sleep 600
+        done ) &gt; $out 2&gt;&amp;1 &amp;
+</pre>
+
+<hr>
+<h3><a name="[B.24]">[B.24]
+  The chess engines are too strong and always beat me.  How can I adjust
+  the difficulty level to make them weaker?</a></h3>
+
+<p>The simplest way to get that effect is to make sure the
+XBoard/WinBoard Auto Flag option is off, set a very fast time control
+so that the chess engine can't think for long, but take as much time
+over your own moves as you want. Also feel free to use Retract Move if
+you make a blunder.  
+
+<p>Many chess coaches will let you switch sides after
+they get a stronger position so that you can get experience playing
+positions where you are winning.  You can try this with XBoard/WinBoard
+by using the Machine White or Machine Black menu command to make the
+machine take over your position.
+
+<p>The -depth command-line option to XBoard/WinBoard can also be used to
+weaken the engine (see the man page or Help file).  It's a bit of a
+nuisance to set command line options in Windows, but see topic <A
+HREF="#[C.7]">[C.7]</A> for instructions.
+
+<p>Other ways of weakening engines are engine-specific.  Many of them
+let you adjust various parameters, and if you choose bad settings, the
+engine will play more poorly.  Consult whatever documentation came with
+the engine you are using.
+
+<hr>
+<h3><a name="[B.25]">[B.25]
+  May I use the piece bitmaps from XBoard/WinBoard in my own program?</a></h3>
+
+<p>The piece bitmaps used in XBoard and WinBoard were designed by
+Elmar Bartel.  He released them under the <a
+href="http://www.gnu.org/copyleft/gpl.html">GNU General Public
+License</a>.  This means that if your program is also free software
+distributed under the GPL, you can use them freely.  If your program
+is distributed under some other license, including commercial,
+shareware, or non-GPL freeware, then you cannot use the bitmaps unless
+you obtain special permission from Elmar.  See the file README.bitmaps
+that comes with the XBoard and WinBoard source code for more
+information and an email address you can write to.
+
+<HR><H2><A NAME="[C]">[C] XBoard and WinBoard, bugs and problems</A></H2>
+
+<HR><H3><A NAME="[C.1]">[C.1] I can't build XBoard
+because the X11/Xaw/...  include files are not found.</A></H3>
+
+These are the header files for the Athena Widgets library, which XBoard uses
+heavily.  Some versions of Unix don't supply these files, but they are part of
+the standard X distribution, freely available from MIT.  
+
+<P>For general information on getting missing X sources, see the FAQ on
+comp.windows.x.  Note that you may be missing only the header files, or you
+may be missing the libraries themselves too.
+
+<P>HP-UX users are missing only the header files.  You can get them by
+anonymous FTP as follows.  (But first check with your system
+administrator to see if someone else at your site has already done
+this.)  Get the archive file /hpux9/X11R5/Core/Xaw-5.00.tar.gz (Xaw
+header files) via anonymous FTP from the site hpux.csc.liv.ac.uk
+(138.253.42.172), or one of the other official sites---Germany:
+hpux.ask.uni-karlsruhe.de (129.13.200.57), US: hpux.cae.wisc.edu
+(144.92.4.15), France: hpux.cict.fr (192.70.79.53) or Netherlands:
+hpux.ced.tudelft.nl (130.161.140.100). Unpack the archive using gzip
+and follow the instructions in its README and/or HPUX.Install files.
+Thanks to Richard Lloyd for this information.
+
+<P>If you have the Xaw header files installed in a different place
+than the other X11 headers, you may need to configure XBoard with an
+extra flag to help it find them.  For example, if yours are in
+/foo/bar/X11/Xaw, try this:
+
+<p><PRE>
+    rm config.cache
+    (setenv CFLAGS -I/foo/bar ; configure)
+</PRE>
+<P>
+Also see topic <A HREF="#[C.2]">[C.2]</A>.
+
+<HR>
+<H3><A NAME="[C.2]">[C.2] Configuring or building XBoard fails due to
+missing header files, missing libraries, or undefined symbols.
+</A></H3>
+
+Perhaps you have the X server and client programs installed on your
+machine, but not the X header files and link-time libraries.  If so,
+you can run existing X programs, but you cannot compile a new X
+program from source code.  In this case the XBoard configure script
+will fail and will tell you to look at this question in the FAQ.  Many
+GNU/Linux distributions put the headers and libraries in a separate
+package, which you might not have installed.  If you are using RedHat,
+install the XFree86-devel package.  If you are using some other
+kind of Unix, ask your system administrator where to find the X header
+files and link-time libraries.  If this is not your problem, read on.
+
+<p>The configure script for XBoard looks for X libraries and header
+files in some common places.  Sometimes it fails: If yours are
+installed in an odd place, it may not find them at all.  If you have
+more than one version of X installed on your system, it may find the
+"wrong" one, or occasionally it may find libraries from one version
+and incompatible header files from another.  You can work around these
+problems by telling the configure script where the files are.  For
+example:
+
+<p><PRE>
+    configure --x-includes=/odd/place/include \
+              --x-libraries=/odd/place/lib
+</PRE>
+
+<P>The directory named in the argument to --x-includes must have a
+subdirectory "X11" that contains the actual .h files.  That is, if
+your X.h file has full pathname /odd/place/X11R6/include/X11/X.h, then
+you must give the argument --x-includes=/odd/place/X11R6/include.
+
+<P>Some linkers have bugs that cause bogus error messages when you try
+to link X programs.  The configure script includes a workaround for a
+bug of this kind that exists in some SunOS 4.x.x installations.  See
+the FAQ on comp.windows.x for more information about problems of this
+kind.
+
+<P>If all else fails, check whether anyone else at your site has been able to
+compile any X programs on your system.  Your X installation might be buggy.
+If so, the system administrator at your site might know how to fix or work
+around the problem.
+
+<P>Also see topic <A HREF="#[C.1]">[C.1]</A>.
+
+<HR><H3><A NAME="[C.3]">[C.3] I have problems using WinBoard on ICS
+with a modem.  I'm not running SLIP or PPP, but just dialing in to an
+ordinary login account ("shell account").</A></H3>
+
+Here are solutions to some common problems in this area.
+
+<P>Some people want to connect to ICS through HyperTerminal or some other
+terminal program first, then run WinBoard.  This is not how it works.
+WinBoard wants to talk directly with your modem, acting as a terminal program
+itself.  Start out with the modem "on hook" (not making a call).
+
+<P>Run WinBoard with a command line like this (adding more options if desired):
+
+<p><PRE>
+    WinBoard /ics /icscom com1
+</PRE>
+
+Use com2, com3, or com4 in place of com1 if your modem is connected to one of
+those ports.
+
+<P>After you start WinBoard, you may need to change some of the options in the
+Communications dialog (on the Options menu).  The dialog has the usual options
+for talking to modems: bits per second, bits per byte, parity, number of stop
+bits.  You will probably want to use Save Settings Now when you're done.
+
+<P>Next, type dialing commands to your modem in the text window that WinBoard
+creates.  You may need to turn off Local Line Editing on the Options menu
+while you are typing commands to your modem.  Turn it back on when you're
+done.  See the WinBoard Help file for instructions if you see your typing
+echoed an extra time after you hit Enter.
+
+<HR>
+<H3><A NAME="[C.4]">[C.4]
+I have problems using WinBoard on ICS with Windows 95 and SLIP
+or PPP.  When trying to start up, it gets the error "Address family
+not supported by protocol family" (or some equally strange message).
+</A></H3>
+
+WinBoard is a 32-bit application, but some Winsock (TCP/IP) implementations
+support only 16-bit applications.  You get a strange looking error message
+if you try to use a 32-bit application because
+there is no standard Winsock error code number
+for "32-bit application not supported."
+
+<P>Microsoft TCP/IP works with both 16-bit and
+32-bit applications, supports SLIP, PPP, Ethernet, etc., and is included
+with Windows 95 and later Windows systems.
+If possible, I recommend that you uninstall
+whatever Winsock you are using and install Microsoft TCP/IP instead.
+For more information, see
+<A HREF=
+"http://walden.mo.net/~rymabry/95winfaq.html"
+>http://walden.mo.net/~rymabry/95winfaq.html (the Win95-L FAQ)</A>.
+
+<P>Trumpet Winsock 2.1 (and earlier) supports only 16-bit
+applications, and hence does not work with WinBoard.  But there is a
+beta-test release available that does support 32-bit applications.  
+I have not tried it with WinBoard, but it 
+should work.  See Trumpet's Web page
+<A HREF=
+"http://www.trumpet.com.au/wsk/winsock.htm"
+>http://www.trumpet.com.au/wsk/winsock.htm</A>
+for more information.
+
+<P>The 16-bit versions of America On-Line's software do not support
+32-bit Winsock applications.  Get the 32-bit version.  At one time the
+32-bit version was called "AOL for Windows 95," but I imagine that has
+changed.  Hopefully the current versions are all 32-bit.
+
+<P>A few versions of Winsock may have bugs that prevent
+Windows timestamp/timeseal from working with them.  I'm not sure if
+such bugs exist in any versions that actually have 32-bit support,
+so this point might be moot.  Again, Microsoft TCP/IP is known to work.
+
+<HR><H3><A NAME="[C.5]">[C.5] When I try to run WinBoard, I get the
+message "Failed to start chess program gnuchess on localhost: NO
+LANGFILE (file gnuchess.lan not found)".</A></H3>
+
+<p>This message means that WinBoard is trying to run GNU Chess, but
+GNU Chess cannot find a file that it needs, named gnuchess.lan.
+If you see it, you've probably customized WinBoard's /fcp, /fd, /scp,
+and/or /sd options and made a mistake in the process.  Review what
+you did, and see the WinBoard help file.
+
+<HR>
+<H3><A NAME="[C.6]">[C.6] I want to use XBoard or WinBoard as an Internet
+Chess Server interface, but the ICS Client option is grayed out on the
+menu.</A></H3> 
+
+XBoard and WinBoard have three major modes that can't be changed from the
+menus: local chess engine mode,
+ICS mode, and standalone mode.
+
+<p>With XBoard, you have to set the mode using command-line options.
+Local chess engine mode is the default, -ics selects ICS mode, and
+-ncp ("no chess program") selects standalone mode.
+
+<p>With WinBoard, if you don't set the mode using command-line
+options, you get a dialog box asking which mode you want.  To bypass
+the dialog box, use -cp ("chess program") for local chess engine mode,
+or -ics or -ncp as with XBoard.  Also see topic <A HREF="#[C.7]">[C.7]</A>.
+
+<HR>
+<H3><A NAME="[C.7]">[C.7] How do I give command-line options to
+a Windows program like WinBoard?</A></H3>
+
+<P>There are many ways; pick your favorite:
+
+<P><UL>
+<LI>Type the command line into an MS-DOS Prompt box.  Example:
+"WinBoard -ics".
+
+<LI>Make a Windows shortcut for WinBoard.  You can do this by
+right-dragging WinBoard.exe to the desktop and selecting "Create
+Shortcut(s) Here" from the menu that appears.  Right-click on the
+shortcut, select Properties, and click the Shortcut tab.  The
+command-line text box is labelled "Target" instead of "Command line"
+just to confuse you.  Edit the text in this box, adding the command
+line options to the end.</LI>
+
+<LI>Choose Run from the Start menu, or File / Run from the Program
+Manager or File Manager, and type the command line into the dialog you
+get.  You may have to give WinBoard's full drivespec and filename if
+it is not in a directory on your search path.</LI>
+
+<LI>Make a Program Manager icon for WinBoard.  You can do this by
+dragging WinBoard.exe from the File Manager into the Program Manager,
+or by using File / New in the Program Manager.  Select the icon and
+choose File / Properties.  Edit the Command Line text box to add the
+command-line options to the end.</LI>
+</UL>
+
+<HR>
+<H3><A NAME="[C.9]">[C.9]
+When I exit from WinBoard after using it to play against a chess
+program on my machine, the chess program keeps running in the background.
+</A></H3>
+
+<p>Be sure you have the current versions of WinBoard and the chess
+engine you are using.  WinBoard 3.4.1 and earlier had a bug that
+caused this problem to occur with all chess engines.  A buggy chess
+engine that does not respond to the "quit" command will also cause
+this.
+
+<p>If you still see this problem, you can stop the rogue chess engine
+by pressing Ctrl+Alt+Del, selecting the chess engine process from the
+menu, and pressing the End Task button.
+
+<hr>
+<h3><a name="[C.12]">[C.12]
+Why do my ICS 
+opponents often get extra time after they make their moves?
+Why do I sometimes lose time off my clock after I make my move?
+</a></h3>
+
+If you are playing with the ICS incremental clock, both you and your
+opponent get a set amount of extra time after each move.
+
+<p>If your or your opponent has netlag, your opponent might appear to
+get extra time, especially if your opponent is using timestamp or
+timeseal.  The ICS charges each player who is using timestamp or
+timeseal only for the time between when the player received his
+opponent's move and the time he sent his own move.  Thus delays in
+network transmission do not count against either player.  But WinBoard
+counts down the display of your opponent's clock on your screen under
+the assumption that there is no netlag.  When his move comes in, if
+there was netlag, the ICS may not have really charged him for that
+much time, and WinBoard corrects the clock to what the ICS says it
+should read.
+
+<p>If you are not using timestamp or timeseal, you may appear to lose
+time off your clock at some point after you make your move.  In this
+case, the ICS charges you for the time between when it sent you your
+opponent's move and the time it received your move.  Thus delays in
+network transmission count against you.  WinBoard stops counting down
+the display of your clock on your screen (and starts your opponent's)
+when you make your move.  When the ICS echoes your move back to you, it
+may have charged you for more time than that, and WinBoard corrects
+the clocks to what the ICS says they should read.
+
+<p>See "help lag" and "help timestamp" or "help timeseal" on your ICS for
+more detailed information.
+
+<hr>
+<h3><a name="[C.13]">[C.13]
+I can't run WinBoard unless I delete the WinBoard.ini file each time!
+</a></h3>
+
+<p>Most people don't have this problem, but two or three people using
+Windows NT 4.0 with Service Pack 3 or 4 have reported it.  I have no
+idea what causes this problem.  Contrary to what was reported in a
+previous version of this FAQ, reinstalling the service pack after
+installing WinBoard does not seem to solve the problem.
+
+<hr>
+<h3><a name="[C.15]">[C.15]
+I get errors compiling XBoard's parser.c.
+</a></h3>
+
+<p>The file parser.c is automatically generated from parser.l.  The
+copy included with XBoard 4.0.2 was generated by lex on Tru64 Unix and
+has problems compiling and linking on current GNU/Linux versions.  The
+copy included with XBoard 4.0.3 was generated by flex on a GNU/Linux
+machine, but it too won't necessarily work on other versions of Unix.
+If you have this problem, you can fix it by deleting parser.c and
+letting the Makefile re-create it from parser.l.  This will work if
+you have either lex or flex on your system.  Flex is available in all
+GNU/Linux distributions and can be obtained at no charge from the Free
+Software Foundation, www.fsf.org.
+
+<hr>
+<h3><a name="[C.16]">[C.16]
+I get an error building WinBoard from source because "flex" is not found.
+</a></h3>
+
+<p>The file parser.c is automatically generated from parser.l.  The
+Makefile included with the WinBoard source kit has a rule for
+generating parser.c using the program "flex", which will fail if you
+don't have flex.  However, the source kit also includes a ready-made
+copy of parser.c, so you don't really need flex unless you have made
+changes to parser.l.  Check that you still have a copy of parser.c; if
+you don't, unpack the WinBoard source zip file again to get one.
+Either set the last-modified time of parser.c to be later than that of
+parser.l, delete parser.l, or comment out the Makefile rule for
+building parser.c from parser.l, and then try building WinBoard again.
+
+<p>If you do want to change parser.l and rebuild parser.c, you can get
+flex as part of the free Cygwin kit from 
+<a href="http://sourceware.cygnus.com/cygwin/"
+>http://sourceware.cygnus.com/cygwin/</a>.  You can
+probably also get flex for Windows by itself from various other places
+around the Internet.  It is free software distributed by the Free
+Software Foundation, www.fsf.org.
+
+<hr>
+<h3><a name="[C.17]">[C.17]
+  XBoard hangs shortly after connecting to an ICS when used with dxterm,
+ cmdtool, dtterm, kterm, konsole, or other substitutes for xterm.
+</a></h3>
+
+<p>After connecting to a chess server, XBoard 4.0.2 and later sends an
+escape sequence to its terminal that is meant to display your handle
+and the ICS host name (for example, "user@chessclub.com") in the
+terminal's banner and icon.  It seems that several of the alternative
+X terminal programs have a bug that makes them hang when sent this
+escape sequence.
+
+<p>You can work
+around the problem by using xterm, nxterm, rxvt, aterm, xiterm, or
+gnome-terminal, all of which seem to work fine.  In fact, current
+versions of kterm and konsole seem to work fine too, so if you are
+having problems with one of them, be sure you are not running an
+outdated version.  
+
+<p>Alternatively, you can disable this feature by commenting out the
+body of DisplayIcsInteractionTitle in xboard.c and recompling xboard.
+
+<hr>
+<h3><a name="[C.18]">[C.18]
+  The WinBoard pieces show up in the wrong colors, appear distorted,
+  or are not visible at all.
+</a></h3>
+
+<p>This can happen if you have a bug in your Windows display driver.
+Check with the manufacturer of your display card, the manufacturer of
+your computer, or Microsoft to see if there is an updated driver
+available.  You can usually download updated drivers from the Web.
+
+<p>If you can't find an updated driver, you can try running Windows
+using a different number of colors and/or disabling some of the
+hardware acceleration features on your display card.  To change the
+number of colors, go to Windows Start / Settings / Control Panel /
+Display / Settings / Color Palette.  To disable hardware acceleration
+features, go to Windows Start / Settings / Control Panel / Display /
+Settings / Advanced Properties / Performance / Hardware Acceleration.
+
+<p>It's also possible that Windows has the right driver for your
+hardware already but you are not using it.  It may help to reinstall
+your driver.  Go to Windows Start / Settings / Control Panel / System
+and delete your display card (maybe even your monitor too), then
+reboot.  Windows should automatically re-detect your card and monitor
+and re-install the drivers; if it doesn't, run Start / Settings /
+Control Panel / Add New Hardware to force it to.
+
+<p>If all else fails, try Monochrome mode.  On WinBoard's menus, go
+to Options / Color and check Monochrome.  WinBoard will display in black
+and white.
+
+<HR>
+<H3><A NAME="[C.19]">[C.19] XBoard or WinBoard tells me "Error: first chess
+  program (...) exited unexpectedly".</A></H3>
+
+<p>This message means that your chess engine crashed, probably due to
+a bug in the engine, or because you have it configured incorrectly.
+You can try running XBoard or WinBoard again with the "-debug" flag on
+the command line.  This will print out all the messages received from
+the chess engine.  (With WinBoard, the messages go into a file called
+WinBoard.debug; with XBoard, they go to the xterm that you started
+XBoard from.)
+
+<P>If you are using GNU Chess and you see this problem as soon as it
+starts up, most likely GNU Chess is exiting with an error message.  If
+you see the message "NO LANGFILE", it means that you did not install
+GNU Chess correctly, and it is unable to find the file gnuchess.lang.
+Make sure that you defined LIBDIR in the gnuchess Makefile, and that
+gnuchess.lang is in that directory.  If gnuchess.lang is not there,
+you probably didn't type "make install" in the gnuchess src directory;
+you must do this to install gnuchess.lang (and the gnuchess book).  If
+you defined LIBDIR to something that is not an absolute pathname (that
+is, to something that does not start with a "/"), GNU Chess will work
+only if you run it from the GNU Chess "src" directory where you built
+it.
+
+<hr><h3><a name="[C.20]">[C.20]
+  XBoard tells me "Warning: Cannot allocate colormap entry", or
+  "too few colors available; trying monochrome mode", or
+  "XPM pieces cannot be used in monochrome mode".
+</a></h3>
+
+<p>You are running your X server with 8-bit color depth, and you are running
+some program that has used up all 256 of your colors.  Netscape tends
+to do this, or maybe you have a background image that uses up all of
+your colors.
+
+<p>If you have a modern machine, you probably have enough display
+memory to run your X server with 16-, 24-, or 32-bit color depth.  If
+you're using "startx" to start the X server, try giving the command as
+"<tt>startx -- -bpp 24</tt>" (or 16, or 32).  On newer X servers you
+may have to use -depth instead of -bpp.  Further details on
+configuring your X server are beyond the scope of this FAQ.
+
+<p>If you must run in 8-bit mode, try the following:
+Avoid background images that use up all your colors.  If you
+run Netscape, try starting it up with the <tt>-install</tt> command-line
+option; this gives Netscape its own private colormap that X will
+switch to when Netscape has the keyboard focus.  
+
+<P>If all else fails, another possibility is to run xboard in
+monochrome (black and white) mode by giving it the <tt>-mono</tt>
+command-line option.  XBoard will try this by itself in some cases.
+Monochrome mode works only with bitmap pieces, not pixmap pieces, so
+trying to use it may give you the error "XPM pieces cannot be used in
+monochrome mode".  To get around this, either use the -bitmapDirectory
+command line option to point XBoard to the directory containing the
+bitmap pieces included with the XBoard source code, or rebuild XBoard
+with pixmap support disabled, using "./configure --disable-xpm ; make
+clean ; make".
+
+<hr><h3><a name="[C.21]">[C.21]
+  When I log in to freechess.org, the Enter key doesn't work, and I 
+  have to use Ctrl+J instead.  But when I use WinBoard, Ctrl+J doesn't
+  work either, so I'm stuck.
+</a></h3>
+
+<p>This is a pretty rare problem.  It should only arise if you have to
+reach freechess.org by telnetting (or connecting with WinBoard
+/icsport=23) from a Windows PC to a Unix box, and then telnetting from
+there to freechess.org.  The Enter key should always work when
+connecting directly from your PC to freechess.org.
+
+<p>The best way to get around the problem is to run timeseal on the
+intermediate Unix box instead of telnet.  Get the appropriate version
+of timeseal for your box from ftp.freechess.org and follow the
+directions in the help files on FICS.
+
+<p>If you can't run timeseal for some reason, there are some things
+you can do to make telnet stay in line mode instead of going to
+character mode.  Then the Enter key will work.  First, try "telnet
+freechess.org 5000" instead of "telnet freechess.org."
+If that still doesn't work, then when the Enter key stops working,
+type the following.  Here <tt>&lt;</tt> and <tt>&gt;</tt> surround the
+names of keys.
+
+<p><pre>
+    &lt;Ctrl+S&gt;&lt;Ctrl+]&gt;mode line&lt;Enter&gt;
+</pre>
+
+<hr><h3><a name="[C.22]">[C.22]
+  XBoard says, "Failed to start first chess program gnuchessx
+  on localhost: gnuchessx: No such file or directory."
+</a></h3>
+
+<p>XBoard is looking for GNU Chess 4.0.  If you didn't want to use
+XBoard with GNU Chess, please see topic <A HREF="#[C.6]">[C.6]</A>.
+If you did want to use GNU Chess 4.0, be sure you have it installed and
+that it is on your $PATH.  If you wanted to use GNU Chess 5 instead,
+see topic <A HREF="#[D.6]">[D.6]</A>.
+
+<HR>
+<H2><A NAME="[D]">[D] Crafty and other topics</A></H2>
+<HR>
+<H3><A NAME="[D.1]">[D.1] What is XChess?</A></H3>
+
+XChess is an older chessboard program that is no longer supported.  XChess was
+written for X version 10, and you may or may not be able to build and run it
+on an X11 system.
+
+<P>XChess has only one significant feature that is not present in XBoard: Two
+humans can play chess using XChess on different machines, without using the
+Internet Chess Server as an intermediary.  This feature is of interest only if
+you don't have network connectivity to the Internet Chess Server.
+
+<P>Note: There actually have been several different programs called "XChess" in
+circulation at various times.  The above describes one that was associated
+with GNU Chess.
+
+<HR>
+<H3><A NAME="[D.2]">[D.2] What is Winsock Chess?</A></H3>
+
+Winsock Chess is a program that lets two people play chess across a
+network.  It runs only under Microsoft Windows.  Some of the code in
+Winsock Chess is derived from GNU Chess, but it is not maintained by
+the GNU Chess team.  You can get a copy from the Internet Chess
+Library; see topic <A HREF="#[A.2]">[A.2]</A>.  For more information,
+contact its author, Donald Munro, ccahdm@beluga.upe.ac.za.
+
+<HR>
+<H3><A NAME="[D.3]">[D.3] What is Crafty?</A></H3>
+
+Crafty is a freely-available chess program written by Bob Hyatt.  
+Bob is the main author of the well-known chess program Cray
+Blitz.  Crafty is a very strong program, its code is available, commented
+and fairly readable, and its author is actively working on improvements.
+
+<p>You can download Crafty from <a
+href="ftp://ftp.cis.uab.edu/pub/hyatt/"
+>ftp://ftp.cis.uab.edu/pub/hyatt/</a>.  Start by getting the <a
+href="ftp://ftp.cis.uab.edu/pub/hyatt/read.me" >read.me</a> file and
+reading it.  Among other things, this file contains instructions on
+how to install Crafty as a command-line application on your machine.
+
+<p>There is a Crafty mailing list.
+To subscribe, send email to majordomo@cis.uab.edu, with 
+"subscribe crafty-list" in the body.
+
+<HR>
+<H3><A NAME="[D.4]">[D.4] How do I use Crafty with XBoard?</A></H3>
+
+<p>First, you need to get Crafty and install it as a command-line
+application on your machine.  See topic <A HREF="#[D.3]">[D.3]</A>.
+
+<p>To use Crafty with XBoard, give the -fcp
+parameter like this:
+
+<p><PRE>
+    xboard -fcp "./crafty" -fd <I>crafty_directory</I>
+</PRE>
+
+Here <I>crafty_directory</I> is the directory where you installed Crafty.
+You can add more xboard options at the end of the command line.
+
+<p>Crafty 15.14 or later is required to work properly with XBoard
+4.0.0 or later.  We generally recommend using the latest versions of
+both XBoard and Crafty.
+
+<HR>
+<H3><A NAME="[D.5]">[D.5] How do I use Crafty with WinBoard?</A></H3>
+
+<p>First, you need to get Crafty and install it as a command-line
+application on your machine.  See topic <A HREF="#[D.3]">[D.3]</A>.
+It is best to use the latest version of Crafty with the latest version
+of WinBoard to make sure all features are compatible and function
+correctly.  You can install Crafty in any directory you like.
+
+<p>You also need to get WinBoard and install it in the normal way
+using its built-in installer.  You can do that either before or after
+you install Crafty.
+
+<p>After both Crafty and WinBoard are installed separately, follow the
+directions in the WinBoard Help file (included with WinBoard) for
+connecting new chess engines to WinBoard.
+
+<p>If you want to have Crafty act as an automated computer player on a
+chess server, see topic <A HREF="#[B.16]">[B.16]</A>.  Before you try
+to get that working, be sure you can play against Crafty locally,
+first without WinBoard, then with it.  Also be sure you can use
+WinBoard to play on the chess server yourself, without having Crafty
+connected to it.  You have to crawl before you can walk!
+
+<HR>
+<H3><A NAME="[D.6]">[D.6] How do I use GNU Chess 5 with XBoard?</A></H3>
+
+<p>By default, XBoard still tries to use GNU Chess 4 by running the
+command "gnuchessx".  That's why if you don't have GNU Chess 4, you
+get the error message "Failed to start first chess program gnuchessx
+on localhost: gnuchessx: No such file or directory."
+
+<p>If you have GNU Chess 5, the command should be "gnuchess xboard"
+instead.  To make XBoard use this command, give the -fcp parameter
+like this:
+
+<p><PRE>
+    xboard -fd <I>gnuchess_directory</I> -fcp "./gnuchess xboard" 
+</PRE>
+
+Here <I>gnuchess_directory</I> is the directory where you installed
+GNU Chess 5 and its book.  You can add more xboard options at the
+end of the command line.
+
+<p><HR>
+$Id$<br>
+** End of XBoard/WinBoard FAQ **
+</BODY></HTML>
diff --git a/installer/WinBoard-4.2.7/GNUChes5.exe b/installer/WinBoard-4.2.7/GNUChes5.exe
new file mode 100644 (file)
index 0000000..a67d202
Binary files /dev/null and b/installer/WinBoard-4.2.7/GNUChes5.exe differ
diff --git a/installer/WinBoard-4.2.7/GNUChess.exe b/installer/WinBoard-4.2.7/GNUChess.exe
new file mode 100644 (file)
index 0000000..dde2dfc
Binary files /dev/null and b/installer/WinBoard-4.2.7/GNUChess.exe differ
diff --git a/installer/WinBoard-4.2.7/Knight.ico b/installer/WinBoard-4.2.7/Knight.ico
new file mode 100644 (file)
index 0000000..5ea5bb5
Binary files /dev/null and b/installer/WinBoard-4.2.7/Knight.ico differ
diff --git a/installer/WinBoard-4.2.7/NEWS b/installer/WinBoard-4.2.7/NEWS
new file mode 100644 (file)
index 0000000..96e812c
--- /dev/null
@@ -0,0 +1,40 @@
+** Announcing the release of XBoard and WinBoard, version 4.2.7 **
+
+XBoard is a graphical chessboard for the X Window System that can
+serve as a user interface for GNU Chess, Crafty, and other chess
+engines, for the Internet Chess Servers, and for electronic mail
+correspondence chess.  XBoard can also be used by itself.  It can read
+and write game files in PGN (portable game notation).
+
+WinBoard is a similar program for 32-bit Microsoft Windows.  It
+includes all the major features of XBoard except email correspondence
+chess.
+
+A new release of both XBoard and WinBoard is now available.  Version
+4.2.7 corrects about two dozen bugs in the 4.2.6 release.  See the
+ChangeLog for a list.  In addition, WinBoard 4.2.7 comes bundled with
+GNU Chess 5.07 instead of the old 5.02+ version.  The XBoard and
+WinBoard source code trees have been merged, so the xboard download
+now contains the complete source for both.
+
+The various larger contributions that people have submitted since the
+4.2.6 release are not yet included in 4.2.7.  The source code for
+these contributions is now available, however (see
+http://www.tim-mann.org/extensions.html), and we plan to include most
+of them in a future release once the contributors complete necessary
+copyright assignment paperwork.
+
+You can get both XBoard and WinBoard from either our new Savannah
+project pages or their existing pages on Tim Mann's web site:
+
+- https://savannah.gnu.org/projects/xboard/
+- http://www.tim-mann.org/chess.html
+
+Most of the known bugs and deficiencies in previous versions have
+*not* been addressed in this release.  It is not necessary to report
+your favorite bug again if you have reported it before, unless the
+ChangeLog erroneously says it has been fixed.  Most known bugs,
+deficiencies, and suggestions received are now listed in the ToDo
+file.  If you find a bug not listed there, please report it in the bug
+tracker at https://savannah.gnu.org/projects/xboard/ or by email to 
+bug-xboard [AT] tim-mann.org.
diff --git a/installer/WinBoard-4.2.7/READ_ME.txt b/installer/WinBoard-4.2.7/READ_ME.txt
new file mode 100644 (file)
index 0000000..846b6e8
--- /dev/null
@@ -0,0 +1,53 @@
+WinBoard is a graphical chessboard for 32-bit Microsoft
+Windows systems.  It can serve as a user interface for
+GNU Chess or for internet chess servers, or it can be
+used to play out games manually or from game files.
+For full details, see the Help file (WinBoard.hlp).
+For answers for frequently asked questions, see the FAQ
+file (FAQ.html).
+
+WinBoard is free software.  You can redistribute it
+and/or modify it under the GPL, as described in the
+files COPYRIGHT and COPYING.  If your distribution does
+not include the source code, you can get it from the
+project's Web site:
+
+ http://savannah.gnu.org/projects/xboard/
+
+GNU CHESS
+
+Two versions of GNU Chess are included in the WinBoard
+distribution.  GNU Chess is free software released
+under the GPL.
+
+Source code for GNU Chess 5 is available from:
+
+ http://savannah.gnu.org/projects/chess/
+
+Source code for GNU Chess 4 is available from:
+
+ http://tim-mann.org/gnuchess.html
+
+BUGS AND IMPROVEMENTS
+
+Report bugs in WinBoard or XBoard by email to
+<bug-xboard@gnu.org>.  Report bugs in GNU Chess to
+<bug-gnu-chess@gnu.org>.  Give full details, including
+the program's version number and the exact text of any
+error messages.  If you improve WinBoard or XBoard,
+please send a message about your changes to
+<bug-xboard@gnu.org>.  Remember that these programs
+are released under the GPL, so source code is freely
+available, but if you distribute modified versions, you
+must distribute the source code modifications under the
+GPL as well.
+
+HISTORY
+
+WinBoard is a port of the Unix program XBoard to Win32,
+the 32-bit Microsoft Windows API.  The graphical front
+end (WinBoard.c, etc.) is all new, but the back end
+that understands chess rules, chess notation, GNU
+Chess, the ICS, etc., is shared with XBoard.  See
+WinBoard.hlp for a list of contributors to WinBoard and
+XBoard.
diff --git a/installer/WinBoard-4.2.7/RJF60.pgn b/installer/WinBoard-4.2.7/RJF60.pgn
new file mode 100644 (file)
index 0000000..f63cf33
--- /dev/null
@@ -0,0 +1,935 @@
+[Event "New Jersey State Open Championship"]
+[Site "East Orange, NJ USA"]
+[Date "1957.09.02"]
+[Round "7"]
+[White "Robert J. Fischer"]
+[Black "J. Sherwin"]
+[Result "1-0"]
+
+1. e4 c5 2. Nf3 e6 3. d3 Nc6 4. g3 Nf6 5. Bg2 Be7 6. O-O O-O 7. Nbd2 Rb8 8. Re1
+d6 9. c3 b6 10. d4 Qc7 11. e5 Nd5 12. exd6 Bxd6 13. Ne4 c4 14. Nxd6 Qxd6 15.
+Ng5 Nce7 16. Qc2 Ng6 17. h4 Nf6 18. Nxh7 Nxh7 19. h5 Nh4 20. Bf4 Qd8 21. gxh4
+Rb7 22. h6 Qxh4 23. hxg7 Kxg7 24. Re4 Qh5 25. Re3 f5 26. Rh3 Qe8 27. Be5+ Nf6
+28. Qd2 Kf7 29. Qg5 Qe7 30. Bxf6 Qxf6 31. Rh7+ Ke8 32. Qxf6 Rxh7 33. Bc6+ 1-0
+
+[Event "Portoroz Interzonal"]
+[Site "Portoroz, Yugoslavia"]
+[Date "1958.08.16"]
+[Round "8"]
+[White "Robert J. Fischer"]
+[Black "Bent Larsen"]
+[Result "1-0"]
+
+1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 g6 6. Be3 Bg7 7. f3 O-O 8. Qd2
+Nc6 9. Bc4 Nxd4 10. Bxd4 Be6 11. Bb3 Qa5 12. O-O-O b5 13. Kb1 b4 14. Nd5 Bxd5
+15. Bxd5 Rac8 16. Bb3 Rc7 17. h4 Qb5 18. h5 Rfc8 19. hxg6 hxg6 20. g4 a5 21. g5
+Nh5 22. Rxh5 gxh5 23. g6 e5 24. gxf7+ Kf8 25. Be3 d5 26. exd5 Rxf7 27. d6 Rf6
+28. Bg5 Qb7 29. Bxf6 Bxf6 30. d7 Rd8 31. Qd6+ 1-0
+
+[Event "Portoroz Interzonal"]
+[Site "Portoroz, Yugoslavia"]
+[Date "1958.08.27"]
+[Round "13"]
+[White "Tigran V. Petrosian"]
+[Black "Robert J. Fischer"]
+[Result "1/2-1/2"]
+
+1. c4 Nf6 2. Nc3 g6 3. g3 Bg7 4. Bg2 O-O 5. Nf3 d6 6. O-O Nc6 7. d3 Nh5 8. d4
+e5 9. d5 Ne7 10. e4 f5 11. exf5 gxf5 12. Nxe5 Nxg3 13. hxg3 Bxe5 14. f4 Bg7 15.
+Be3 Bd7 16. Bd4 Ng6 17. Re1 Rf7 18. Bf3 Qf8 19. Kf2 Re8 20. Rxe8 Qxe8 21. Bxg7
+Rxg7 22. Qd4 b6 23. Rh1 a5 24. Nd1 Qf8 25. Ne3 Rf7 26. b3 Qg7 27. Qxg7+ Kxg7
+28. a3 Rf8 29. Be2 Ne7 30. Bd3 h6 31. Rh5 Be8 32. Rh2 Bd7 33. Rh1 Rh8 34. Nc2
+Kf6 35. Nd4 Kg7 36. Be2 Ng8 37. b4 Nf6 38. Bd3 axb4 39. axb4 Kg6 40. Ra1 Ng4+
+41. Ke2 Re8+ 42. Kd2 Nf6 43. Ra6 Rb8 44. Ra7 Rc8 45. c5 bxc5 46. bxc5 dxc5 47.
+Nf3 Kf7 48. Ne5+ Ke7 49. Nxd7 Nxd7 50. Bxf5 Rf8 51. g4 Kd6 52. Bxd7 Kxd7 53.
+Ke3 Re8+ 54. Kf3 Kd6 55. Ra6+ Kxd5 56. Rxh6 c4 57. Rh1 c3 58. g5 c5 59. Rd1+
+Kc4 60. g6 c2 61. Rc1 Kd3 62. f5 Rg8 63. Kf4 Kd2 64. Rxc2+ Kxc2 65. Kg5 c4 66.
+f6 c3 67. f7 1/2-1/2
+
+[Event "Mar del Plata"]
+[Site "Mar del Plata, Argentina"]
+[Date "1959.03.30"]
+[Round "7"]
+[White "Robert J. Fischer"]
+[Black "G. Shocron"]
+[Result "1-0"]
+
+1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O Be7 6. Re1 b5 7. Bb3 d6 8. c3
+O-O 9. h3 Na5 10. Bc2 c5 11. d4 Qc7 12. Nbd2 Bd7 13. Nf1 Rfe8 14. Ne3 g6 15.
+dxe5 dxe5 16. Nh2 Rad8 17. Qf3 Be6 18. Nhg4 Nxg4 19. hxg4 Qc6 20. g5 Nc4 21.
+Ng4 Bxg4 22. Qxg4 Nb6 23. g3 c4 24. Kg2 Nd7 25. Rh1 Nf8 26. b4 Qe6 27. Qe2 a5
+28. bxa5 Qa6 29. Be3 Qxa5 30. a4 Ra8 31. axb5 Qxb5 32. Rhb1 Qc6 33. Rb6 Qc7 34.
+Rba6 Rxa6 35. Rxa6 Rc8 36. Qg4 Ne6 37. Ba4 Rb8 38. Rc6 Qd8 39. Rxe6 Qc8 40. Bd7
+1-0
+
+[Event "Mar del Plata"]
+[Site "Mar del Plata, Argentina"]
+[Date "1959.04.03"]
+[Round "10"]
+[White "Herman Pilnik"]
+[Black "Robert J. Fischer"]
+[Result "0-1"]
+
+1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 a6 6. Be2 e5 7. Nb3 Be7 8. O-O
+O-O 9. Be3 Be6 10. f3 Qc7 11. Qe1 Nbd7 12. Rd1 b5 13. Rd2 Nb6 14. Qf2 Rab8 15.
+Bxb6 Rxb6 16. Nd5 Nxd5 17. exd5 Bd7 18. f4 Bf6 19. c3 Rbb8 20. fxe5 Bxe5 21.
+Nd4 g6 22. a3 a5 23. Kh1 b4 24. cxb4 axb4 25. Rc2 Qb6 26. Nc6 bxa3 27. Qxb6
+Rxb6 28. bxa3 Ra8 29. Nxe5 dxe5 30. Rc3 Rb2 31. Rc7 Bf5 32. g4 Be4+ 33. Bf3 Bd3
+34. d6 Rd8 35. Re1 Rxd6 36. Rxe5 Rf6 37. Re3 Rxf3 38. Rxf3 Be4 39. Rxf7 Rf2 40.
+Rf8+ Kg7 0-1
+
+[Event "Mar del Plata"]
+[Site "Mar del Plata, Argentina"]
+[Date "1959.04.05"]
+[Round "12"]
+[White "Robert J. Fischer"]
+[Black "Hector Rossetto"]
+[Result "1-0"]
+
+1. e4 c5 2. Nf3 e6 3. d4 cxd4 4. Nxd4 a6 5. c4 Qc7 6. Nc3 Nf6 7. Bd3 Nc6 8. Be3
+Nxd4 9. Bxd4 Bc5 10. Bc2 d6 11. O-O Bd7 12. Na4 Bxd4 13. Qxd4 Rd8 14. Rfd1 O-O
+15. Rac1 Qa5 16. Qb6 Qxb6 17. Nxb6 Bc6 18. f3 Nd7 19. Nd5 Bxd5 20. exd5 e5 21.
+b4 g6 22. Ba4 b6 23. Rd3 f5 24. Ra3 Nb8 25. c5 bxc5 26. bxc5 dxc5 27. Rxc5 Kg7
+28. Rb3 Rf7 29. d6 Nd7 30. Rc7 Nf8 31. Rbb7 Rxc7 32. dxc7 Rc8 33. Bb3 a5 34. a4
+h6 35. h3 g5 36. g4 fxg4 37. hxg4 1-0
+
+[Event "Zurich"]
+[Site "Zurich, Switzerland"]
+[Date "1959.05.19"]
+[Round "1"]
+[White "Edgar Walther"]
+[Black "Robert J. Fischer"]
+[Result "1/2-1/2"]
+
+1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 a6 6. Bg5 e6 7. f4 Be7 8. Qf3
+Nbd7 9. O-O-O Qc7 10. Bd3 b5 11. Bxf6 Nxf6 12. Rhe1 Bb7 13. Kb1 Rc8 14. g4 Nd7
+15. g5 Nb6 16. f5 e5 17. f6 gxf6 18. gxf6 Bf8 19. Nd5 Nxd5 20. exd5 Kd8 21.
+Nc6+ Bxc6 22. dxc6 Qxc6 23. Be4 Qb6 24. Qh5 Kc7 25. Bf5 Rd8 26. Qxf7+ Kb8 27.
+Qe6 Qc7 28. Re3 Bh6 29. Rc3 Qb7 30. f7 Bg7 31. Rcd3 Bf8 32. Qxe5 dxe5 33. Rxd8+
+Ka7 34. R1d7 h5 35. Rxb7+ Kxb7 36. c3 Kc7 37. Ra8 Kd6 38. Rxa6+ Ke7 39. Re6+
+Kxf7 40. Rxe5 b4 41. cxb4 Bxb4 42. h3 Kf6 43. Rb5 Bd6 44. Be4 Re8 45. Rf5+ Kg7
+46. Bf3 Re1+ 47. Kc2 Rf1 48. Rd5 Rf2+ 49. Rd2 Rxd2+ 50. Kxd2 h4 51. Kd3 Kf6 52.
+Kc4 Ke7 53. Kb5 Kd7 54. a4 Kc7 55. b4 Kb8 56. a5 Ka7 57. Kc4 Bg3 58. b5 Bf2 59.
+Be2 Be3 60. Kb3 Bd2 61. b6+ Kb7 62. Ka4 Kc6 63. Bb5+ Kc5 1/2-1/2
+
+[Event "Zurich"]
+[Site "Zurich, Switzerland"]
+[Date "1959.05.??"]
+[Round "3"]
+[White "Fridrik Olafsson"]
+[Black "Robert J. Fischer"]
+[Result "0-1"]
+
+1. c4 Nf6 2. Nc3 g6 3. d4 Bg7 4. e4 d6 5. Be2 O-O 6. Nf3 e5 7. d5 Nbd7 8. Bg5
+h6 9. Bh4 a6 10. Nd2 Qe8 11. g4 Nh7 12. Qc2 Ng5 13. h3 Nc5 14. O-O-O Bd7 15. f3
+Na4 16. Nxa4 Bxa4 17. b3 Bd7 18. Bf2 c5 19. h4 Nh7 20. Be3 b5 21. Nb1 f5 22.
+gxf5 gxf5 23. exf5 Bxf5 24. Qd2 e4 25. Rdg1 exf3 26. Bxh6 Ra7 27. Bxg7 Rxg7 28.
+Rxg7+ Kxg7 29. Bd3 bxc4 30. Rg1+ Kh8 31. Qc3+ Qe5 32. Qxe5+ dxe5 33. Bxf5 Rxf5
+34. bxc4 Nf6 35. Nd2 f2 36. Rh1 e4 37. Kd1 e3 38. Nf1 Re5 39. Ke2 Nh5 40. Kf3
+e2 0-1
+
+[Event "Zurich"]
+[Site "Zurich, Switzerland"]
+[Date "1959.05.??"]
+[Round "8"]
+[White "Robert J. Fischer"]
+[Black "Wolfgang Unzicker"]
+[Result "1-0"]
+
+1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O Be7 6. Re1 b5 7. Bb3 d6 8. c3
+O-O 9. h3 Na5 10. Bc2 c5 11. d4 Qc7 12. Nbd2 Bd7 13. Nf1 Rfe8 14. Ne3 g6 15.
+dxe5 dxe5 16. Nh2 Rad8 17. Qf3 Be6 18. Nhg4 Nxg4 19. hxg4 Qc6 20. g5 Nc4 21.
+Ng4 Bxg4 22. Qxg4 f6 23. gxf6 Bxf6 24. a4 Nb6 25. axb5 axb5 26. Be3 Ra8 27.
+Red1 Kh8 28. b3 Bg7 29. Qh4 Bf6 30. Bg5 Bxg5 31. Qxg5 Rxa1 32. Rxa1 Nd7 33. Bd1
+Nf6 34. Ra7 Qd6 35. Be2 Re7 36. Rxe7 Qxe7 37. Bxb5 Kg7 38. Be2 Qc7 39. Qe3 Qa5
+40. g3 Qa3 41. Kg2 Qa5 42. Qd3 Qb6 43. Qc4 Qc6 44. Bd3 Qb6 45. b4 cxb4 46. cxb4
+Ng4 47. Qc5 Qxc5 48. bxc5 Kf7 49. f4 Ke7 50. Kf3 Nf6 51. Bb5 Ke6 52. Bc4+ Ke7
+53. c6 Ne8 54. fxe5 h6 55. Ke3 Nc7 56. Kd4 h5 57. Ke3 g5 58. Be2 h4 59. gxh4
+gxh4 60. Bc4 Ne8 61. Kf4 Kd8 62. Kg4 Kc7 63. Bf7 Ng7 64. Kxh4 Kxc6 65. Kg5 1-0
+
+[Event "Zurich"]
+[Site "Zurich, Switzerland"]
+[Date "1959.06.??"]
+[Round "12"]
+[White "Robert J. Fischer"]
+[Black "Paul Keres"]
+[Result "1-0"]
+
+1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O Be7 6. Re1 b5 7. Bb3 O-O 8. c3
+d6 9. h3 Na5 10. Bc2 c5 11. d4 Qc7 12. Nbd2 cxd4 13. cxd4 Bb7 14. Nf1 Rac8 15.
+Bd3 Nc6 16. Ne3 Rfe8 17. Nf5 Bf8 18. Bg5 Nd7 19. Rc1 Qb8 20. Bb1 Nxd4 21. N3xd4
+Rxc1 22. Bxc1 exd4 23. Nh6+ gxh6 24. Qg4+ Kh8 25. Qxd7 Bd5 26. Qf5 Re5 27. Qf3
+f5 28. Bf4 Re8 29. Qh5 Bxe4 30. f3 Bc6 31. Rc1 Bd7 32. Bxh6 Re6 33. Bxf8 Qxf8
+34. Qh4 Qf6 35. Qxf6+ Rxf6 36. Kf2 Kg7 37. Rc7 Rf7 38. Ke2 f4 39. Ra7 Kf6 40.
+Rxa6 Re7+ 41. Kf2 Be6 42. Rxd6 Ke5 43. Rc6 Bd5 44. Rh6 Rc7 45. Rh5+ Kd6 46.
+Rh6+ Ke5 47. Rh5+ Kd6 48. Rf5 Rc1 49. Bd3 Rd1 50. Ke2 Rg1 51. Kf2 Rd1 52. Ke2
+Rg1 53. Rg5 Bxa2 54. Bxb5 Rb1 55. Kd3 h6 56. Rh5 Rxb2 57. Kxd4 Rxg2 58. Rxh6+
+Ke7 59. Ke4 Rg5 60. Ba6 Bf7 61. Bc8 Rg6 62. Rh7 Kf8 63. Bg4 Rg7 64. Rh6 Rg6 65.
+Rxg6 Bxg6+ 66. Kxf4 Kg7 67. Kg5 Bd3 68. f4 Be4 69. h4 Bd3 70. h5 Be4 71. h6+
+Kh8 72. Bf5 Bd5 73. Bg6 Be6 74. Kf6 Bc4 75. Kg5 Be6 76. Bh5 Kh7 77. Bg4 Bc4 78.
+f5 Bf7 79. Bh5 Bc4 80. Bg6+ Kg8 81. f6 1-0
+
+[Event "Yugoslavia Candidates Tournament"]
+[Site "Yugoslavia"]
+[Date "1959.09.07"]
+[Round "1"]
+[White "Paul Keres"]
+[Black "Robert J. Fischer"]
+[Result "0-1"]
+
+1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 a6 6. Bg5 e6 7. f4 Be7 8. Qf3
+Qc7 9. O-O-O Nbd7 10. Be2 b5 11. Bxf6 Nxf6 12. e5 Bb7 13. exf6 Bxf3 14. Bxf3
+Bxf6 15. Bxa8 d5 16. Bxd5 Bxd4 17. Rxd4 exd5 18. Nxd5 Qc5 19. Re1+ Kf8 20. c3
+h5 21. f5 Rh6 22. f6 gxf6 23. Nf4 h4 24. Rd8+ Kg7 25. Ree8 Qg1+ 26. Kd2 Qf2+
+27. Ne2 Rg6 28. g3 f5 29. Rg8+ Kf6 30. Rxg6+ fxg6 31. gxh4 Qxh2 32. Rd4 Qh1 33.
+Kc2 Ke5 34. a4 Qf1 35. Nc1 Qf2+ 36. Kb3 bxa4+ 37. Ka3 Qc2 38. Nd3+ Kf6 39. Nc5
+Qc1 40. Rxa4 Qe3 41. Nxa6 f4 42. Rd4 Kf5 43. Nb4 Qe7 44. Kb3 Qxh4 45. Nd3 g5
+46. c4 Qg3 47. c5 f3 48. Kc4 f2 49. Nxf2 Qxf2 50. c6 Qxb2 51. Kc5 Qc3+ 52. Kd5
+g4 53. Rc4 Qe5# 0-1
+
+[Event "Yugoslavia Candidates Tournament"]
+[Site "Yugoslavia"]
+[Date "1959.09.11"]
+[Round "4"]
+[White "Robert J. Fischer"]
+[Black "Svetozar Gligoric"]
+[Result "1-0"]
+
+1. e4 c5 2. Nf3 Nc6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 d6 6. Bc4 Bd7 7. Bb3 g6 8. f3
+Na5 9. Bg5 Bg7 10. Qd2 h6 11. Be3 Rc8 12. O-O-O Nc4 13. Qe2 Nxe3 14. Qxe3 O-O
+15. g4 Qa5 16. h4 e6 17. Nde2 Rc6 18. g5 hxg5 19. hxg5 Nh5 20. f4 Rfc8 21. Kb1
+Qb6 22. Qf3 Rc5 23. Qd3 Bxc3 24. Nxc3 Nxf4 25. Qf3 Nh5 26. Rxh5 gxh5 27. Qxh5
+Be8 28. Qh6 Rxc3 29. bxc3 Rxc3 30. g6 fxg6 31. Rh1 Qd4 32. Qh7+ 1-0
+
+[Event "Yugoslavia Candidates Tournament"]
+[Site "Yugoslavia"]
+[Date "1959.09.22"]
+[Round "10"]
+[White "Robert J. Fischer"]
+[Black "Pal Benko"]
+[Result "1-0"]
+
+1. e4 c5 2. Nf3 Nc6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 d6 6. Bc4 Qb6 7. Nde2 e6 8.
+O-O Be7 9. Bb3 O-O 10. Kh1 Na5 11. Bg5 Qc5 12. f4 b5 13. Ng3 b4 14. e5 dxe5 15.
+Bxf6 gxf6 16. Nce4 Qd4 17. Qh5 Nxb3 18. Qh6 exf4 19. Nh5 f5 20. Rad1 Qe5 21.
+Nef6+ Bxf6 22. Nxf6+ Qxf6 23. Qxf6 Nc5 24. Qg5+ Kh8 25. Qe7 Ba6 26. Qxc5 Bxf1
+27. Rxf1 1-0
+
+[Event "Yugoslavia Candidates Tournament"]
+[Site "Yugoslavia"]
+[Date "1959.10.04"]
+[Round "16"]
+[White "Robert J. Fischer"]
+[Black "Tigran V. Petrosian"]
+[Result "1/2-1/2"]
+
+1. e4 c6 2. Nc3 d5 3. Nf3 Bg4 4. h3 Bxf3 5. Qxf3 Nf6 6. d3 e6 7. g3 Bb4 8. Bd2
+d4 9. Nb1 Bxd2+ 10. Nxd2 e5 11. Bg2 c5 12. O-O Nc6 13. Qe2 Qe7 14. f4 O-O-O 15.
+a3 Ne8 16. b4 cxb4 17. Nc4 f6 18. fxe5 fxe5 19. axb4 Nc7 20. Na5 Nb5 21. Nxc6
+bxc6 22. Rf2 g6 23. h4 Kb7 24. h5 Qxb4 25. Rf7+ Kb6 26. Qf2 a5 27. c4 Nc3 28.
+Rf1 a4 29. Qf6 Qc5 30. Rxh7 Rdf8 31. Qxg6 Rxf1+ 32. Bxf1 Rxh7 33. Qxh7 a3 34.
+h6 a2 35. Qg8 a1=Q 36. h7 Qd6 37. h8=Q Qa7 38. g4 Kc5 39. Qf8 Qae7 40. Qa8 Kb4
+41. Qh2 Kb3 42. Qa1 Qa3 43. Qxa3+ Kxa3 44. Qh6 Qf7 45. Kg2 Kb3 46. Qd2 Qh7 47.
+Kg3 Qxe4 48. Qf2 Qh1 1/2-1/2
+
+[Event "Yugoslavia Candidates Tournament"]
+[Site "Yugoslavia"]
+[Date "1959.10.22"]
+[Round "25"]
+[White "Svetozar Gligoric"]
+[Black "Robert J. Fischer"]
+[Result "1/2-1/2"]
+
+1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 a6 6. Bg5 e6 7. f4 Be7 8. Qf3
+Qc7 9. O-O-O Nbd7 10. g4 b5 11. Bxf6 gxf6 12. f5 Ne5 13. Qh3 O-O 14. Nce2 Kh8
+15. Nf4 Rg8 16. Rg1 d5 17. fxe6 dxe4 18. Nd5 Qc5 19. Nxe7 Qxe7 20. Nf5 Qxe6 21.
+Qh6 Bd7 22. Rd6 Nxg4 23. Rxg4 Qxf5 24. Rxg8+ Rxg8 25. Rxf6 Qd5 26. Rd6 Qf5 27.
+Rf6 Qg5+ 28. Qxg5 Rxg5 29. Rxf7 Bg4 30. Kd2 Bf3 31. Ke3 Rg1 32. Bh3 Re1+ 33.
+Kf4 Bd1 34. Ke5 e3 35. Bf5 Rg1 36. Rxh7+ Kg8 37. Rc7 Bg4 38. Bxg4 Rxg4 39. Rc3
+e2 40. Re3 Rg2 41. Kd4 e1=Q 42. Rxe1 Rxc2 43. Rb1 Kf7 44. a3 Ke6 45. b3 Rxh2
+46. Kc5 Kd7 47. Kb6 Ra2 48. Kxa6 Rxa3+ 49. Kb7 Kd6 50. Kb6 Kd7 51. b4 Rh3 52.
+Rc1 Rh8 53. Kxb5 Rb8+ 54. Ka4 Ra8+ 55. Kb3 Rc8 56. Rxc8 Kxc8 57. Kc4 Kb8
+1/2-1/2
+
+[Event "Yugoslavia Candidates Tournament"]
+[Site "Yugoslavia"]
+[Date "1959.10.26"]
+[Round "27"]
+[White "Robert J. Fischer"]
+[Black "Mikhail N. Tal"]
+[Result "0-1"]
+
+1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 a6 6. Bc4 e6 7. Bb3 b5 8. f4
+b4 9. Na4 Nxe4 10. O-O g6 11. f5 gxf5 12. Nxf5 Rg8 13. Bd5 Ra7 14. Bxe4 exf5
+15. Bxf5 Re7 16. Bxc8 Qxc8 17. Bf4 Qc6 18. Qf3 Qxa4 19. Bxd6 Qc6 20. Bxb8 Qb6+
+21. Kh1 Qxb8 22. Qc6+ Rd7 23. Rae1+ Be7 24. Rxf7 Kxf7 25. Qe6+ Kf8 26. Qxd7 Qd6
+27. Qb7 Rg6 28. c3 a5 29. Qc8+ Kg7 30. Qc4 Bd8 31. cxb4 axb4 32. g3 Qc6+ 33.
+Re4 Qxc4 34. Rxc4 Rb6 35. Kg2 Kf6 36. Kf3 Ke5 37. Ke3 Bg5+ 38. Ke2 Kd5 39. Kd3
+Bf6 40. Rc2 Be5 41. Re2 Rf6 42. Rc2 Rf3+ 43. Ke2 Rf7 44. Kd3 Bd4 45. a3 b3 46.
+Rc8 Bxb2 47. Rd8+ Kc6 48. Rb8 Rf3+ 49. Kc4 Rc3+ 50. Kb4 Ba1 51. a4 b2 0-1
+
+[Event "Yugoslavia Candidates Tournament"]
+[Site "Yugoslavia"]
+[Date "1959.10.29"]
+[Round "28"]
+[White "Vasily V. Smyslov"]
+[Black "Robert J. Fischer"]
+[Result "0-1"]
+
+1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 a6 6. Bg5 e6 7. f4 Be7 8. Qf3
+Qc7 9. O-O-O Nbd7 10. g4 b5 11. Bxf6 Nxf6 12. g5 Nd7 13. Bh3 b4 14. Nce2 Bb7
+15. Kb1 Nc5 16. Ng3 d5 17. f5 dxe4 18. Qg4 exf5 19. Ndxf5 g6 20. Nxe7 Qxe7 21.
+Qf4 O-O 22. Rd6 Rad8 23. Rf6 Rd5 24. Bg4 Nd7 25. Rf1 e3 26. b3 Rd2 27. Bxd7
+Rxd7 28. Re1 Re8 29. h4 Qc5 30. Qc4 Qxc4 31. bxc4 Rd4 32. c5 Rxh4 33. c6 Bc8
+34. Rd6 Rc4 35. Kb2 Kg7 36. Kb3 Rg4 37. Ne2 Re6 38. Red1 Rg2 39. Nf4 Rxd6 40.
+Rxd6 Rd2 41. Rd3 Rf2 42. Rd4 e2 43. Nd3 Bf5 44. c7 Rf3 45. c8=Q Bxc8 46. Re4
+Bf5 47. Rxe2 Bxd3 48. cxd3 Rxd3+ 49. Kxb4 Rd5 50. Rg2 h6 51. gxh6+ Kxh6 52. a4
+g5 53. Rc2 Rd6 54. Kc5 Re6 0-1
+
+[Event "Mar del Plata"]
+[Site "Mar del Plata, Argentina"]
+[Date "1960.03.30"]
+[Round "2"]
+[White "Boris V. Spassky"]
+[Black "Robert J. Fischer"]
+[Result "1-0"]
+
+1. e4 e5 2. f4 exf4 3. Nf3 g5 4. h4 g4 5. Ne5 Nf6 6. d4 d6 7. Nd3 Nxe4 8. Bxf4
+Bg7 9. Nc3 Nxc3 10. bxc3 c5 11. Be2 cxd4 12. O-O Nc6 13. Bxg4 O-O 14. Bxc8 Rxc8
+15. Qg4 f5 16. Qg3 dxc3 17. Rae1 Kh8 18. Kh1 Rg8 19. Bxd6 Bf8 20. Be5+ Nxe5 21.
+Qxe5+ Rg7 22. Rxf5 Qxh4+ 23. Kg1 Qg4 24. Rf2 Be7 25. Re4 Qg5 26. Qd4 Rf8 27.
+Re5 Rd8 28. Qe4 Qh4 29. Rf4 1-0
+
+[Event "Reykjavik"]
+[Site "Reykjavik, Iceland"]
+[Date "1960.10.06"]
+[Round "2"]
+[White "Arinbjorn Gudmundsson"]
+[Black "Robert J. Fischer"]
+[Result "0-1"]
+
+1. d4 Nf6 2. Nf3 d5 3. e3 g6 4. c4 Bg7 5. Nc3 O-O 6. Qb3 e6 7. Be2 Nc6 8. Qc2
+dxc4 9. Bxc4 e5 10. dxe5 Ng4 11. O-O Ncxe5 12. Nxe5 Nxe5 13. Be2 c6 14. f4 Ng4
+15. h3 Bf5 16. e4 Qd4+ 17. Kh1 Nf2+ 18. Rxf2 Qxf2 19. exf5 Bxc3 20. bxc3 Rae8
+21. Bd3 Re1+ 22. Kh2 Qg1+ 23. Kg3 Rfe8 24. Rb1 gxf5 25. Bd2 Rxb1 26. Qxb1 Qxb1
+27. Bxb1 Re2 0-1
+
+[Event "14th Olympiad (Preliminary)"]
+[Site "Leipzig, Germany"]
+[Date "1960.10.24"]
+[Round "8"]
+[White "Rene Letelier"]
+[Black "Robert J. Fischer"]
+[Result "0-1"]
+
+1. d4 Nf6 2. c4 g6 3. Nc3 Bg7 4. e4 O-O 5. e5 Ne8 6. f4 d6 7. Be3 c5 8. dxc5
+Nc6 9. cxd6 exd6 10. Ne4 Bf5 11. Ng3 Be6 12. Nf3 Qc7 13. Qb1 dxe5 14. f5 e4 15.
+fxe6 exf3 16. gxf3 f5 17. f4 Nf6 18. Be2 Rfe8 19. Kf2 Rxe6 20. Re1 Rae8 21. Bf3
+Rxe3 22. Rxe3 Rxe3 23. Kxe3 Qxf4+ 0-1
+
+[Event "Exhibition Game"]
+[Site "Berlin, Germany"]
+[Date "1960.10.??"]
+[Round "nil"]
+[White "Robert J. Fischer"]
+[Black "Klaus Darga"]
+[Result "1-0"]
+
+1. e4 e6 2. d4 d5 3. Nc3 Bb4 4. e5 c5 5. a3 Bxc3+ 6. bxc3 Ne7 7. a4 Qc7 8. Nf3
+b6 9. Bb5+ Bd7 10. Bd3 Nbc6 11. O-O c4 12. Be2 f6 13. Ba3 fxe5 14. dxe5 Nxe5
+15. Re1 N7c6 16. Nxe5 Nxe5 17. f4 Nc6 18. Bg4 O-O-O 19. Bxe6 Bxe6 20. Rxe6 Rd7
+21. f5 Nd8 22. Re3 Qf4 23. Rf3 Qe4 24. a5 Nc6 25. axb6 axb6 26. Qb1 Kc7 27. Bc1
+Qe1+ 28. Rf1 Qxc3 29. Bf4+ Kb7 30. Qb5 1-0
+
+[Event "14th Olympiad (Final)"]
+[Site "Leipzig, Germany"]
+[Date "1960.11.01"]
+[Round "5"]
+[White "Robert J. Fischer"]
+[Black "Mikhail N. Tal"]
+[Result "1/2-1/2"]
+
+1. e4 e6 2. d4 d5 3. Nc3 Bb4 4. e5 c5 5. a3 Ba5 6. b4 cxd4 7. Qg4 Ne7 8. bxa5
+dxc3 9. Qxg7 Rg8 10. Qxh7 Nbc6 11. Nf3 Qc7 12. Bb5 Bd7 13. O-O O-O-O 14. Bg5
+Nxe5 15. Nxe5 Bxb5 16. Nxf7 Bxf1 17. Nxd8 Rxg5 18. Nxe6 Rxg2+ 19. Kh1 Qe5 20.
+Rxf1 Qxe6 21. Kxg2 Qg4+ 1/2-1/2
+
+[Event "14th Olympiad (Final)"]
+[Site "Leipzig, Germany"]
+[Date "1960.11.02"]
+[Round "6"]
+[White "Laszlo Szabo"]
+[Black "Robert J. Fischer"]
+[Result "0-1"]
+
+1. d4 Nf6 2. c4 g6 3. Nc3 Bg7 4. e4 O-O 5. Bg5 d6 6. Qd2 c5 7. d5 e6 8. Bd3
+exd5 9. Nxd5 Be6 10. Ne2 Bxd5 11. exd5 Nbd7 12. O-O Ne5 13. f4 Nxd3 14. Qxd3 h6
+15. Bh4 Re8 16. Rae1 Qb6 17. Bxf6 Bxf6 18. f5 g5 19. b3 Qa5 20. Rc1 Qxa2 21.
+Rc2 Re3 22. Qxe3 Qxc2 23. Kh1 a5 24. h4 a4 0-1
+
+[Event "14th Olympiad (Final)"]
+[Site "Leipzig, Germany"]
+[Date "1960.11.03"]
+[Round "7"]
+[White "Robert J. Fischer"]
+[Black "Max Euwe"]
+[Result "1-0"]
+
+1. e4 c6 2. d4 d5 3. exd5 cxd5 4. c4 Nf6 5. Nc3 Nc6 6. Nf3 Bg4 7. cxd5 Nxd5 8.
+Qb3 Bxf3 9. gxf3 e6 10. Qxb7 Nxd4 11. Bb5+ Nxb5 12. Qc6+ Ke7 13. Qxb5 Nxc3 14.
+bxc3 Qd7 15. Rb1 Rd8 16. Be3 Qxb5 17. Rxb5 Rd7 18. Ke2 f6 19. Rd1 Rxd1 20. Kxd1
+Kd7 21. Rb8 Kc6 22. Bxa7 g5 23. a4 Bg7 24. Rb6+ Kd5 25. Rb7 Bf8 26. Rb8 Bg7 27.
+Rb5+ Kc6 28. Rb6+ Kd5 29. a5 f5 30. Bb8 Rc8 31. a6 Rxc3 32. Rb5+ Kc4 33. Rb7
+Bd4 34. Rc7+ Kd3 35. Rxc3+ Kxc3 36. Be5 1-0
+
+[Event "US Championship"]
+[Site "New York City, NY USA"]
+[Date "1960.12.19"]
+[Round "2"]
+[White "William Lombardy"]
+[Black "Robert J. Fischer"]
+[Result "0-1"]
+
+1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. f3 Nc6 6. c4 e6 7. Nc3 Be7 8. Be3
+O-O 9. Nc2 d5 10. cxd5 exd5 11. Nxd5 Nxd5 12. Qxd5 Qc7 13. Qb5 Bd7 14. Rc1 Nb4
+15. Nxb4 Qxc1+ 16. Bxc1 Bxb5 17. Nd5 Bh4+ 18. g3 Bxf1 19. Kxf1 Bd8 20. Bd2 Rc8
+21. Bc3 f5 22. e5 Rc5 23. Nb4 Ba5 24. a3 Bxb4 25. axb4 Rd5 26. Ke2 Kf7 27. h4
+Ke6 28. Ke3 Rc8 29. Rg1 Rc4 30. Re1 Rxc3+ 31. bxc3 Rxe5+ 32. Kd2 Rxe1 33. Kxe1
+Kd5 34. Kd2 Kc4 35. h5 b6 36. Kc2 g5 37. h6 f4 38. g4 a5 39. bxa5 bxa5 40. Kb2
+a4 41. Ka3 Kxc3 42. Kxa4 Kd4 43. Kb4 Ke3 0-1
+
+[Event "Match"]
+[Site "Los Angeles, CA USA"]
+[Date "1961.07.27"]
+[Round "5"]
+[White "Samuel Reshevsky"]
+[Black "Robert J. Fischer"]
+[Result "0-1"]
+
+1. d4 Nf6 2. c4 e6 3. Nc3 d5 4. cxd5 Nxd5 5. Nf3 c5 6. e3 Nc6 7. Bd3 Be7 8. O-O
+O-O 9. a3 cxd4 10. exd4 Nf6 11. Bc2 b6 12. Qd3 Bb7 13. Bg5 g6 14. Rfe1 Re8 15.
+h4 Rc8 16. Rac1 Nd5 17. Ne4 f5 18. Nc3 Bxg5 19. Nxg5 Nf4 20. Qe3 Qxd4 21. Nb5
+Qxe3 22. fxe3 Nxg2 23. Kxg2 Nd4+ 24. Be4 Bxe4+ 25. Nxe4 Nxb5 26. Nf6+ Kf7 27.
+Nxe8 Rxe8 28. a4 Nd6 29. Rc7+ Kf6 30. Rec1 h6 31. Rxa7 Ne4 32. Ra6 Rd8 33. Rc2
+Rd3 34. Rxb6 Rxe3 35. a5 f4 36. Rf2 Nxf2 37. Kxf2 Re5 38. b4 Re3 39. a6 Ra3 40.
+Rc6 g5 41. hxg5+ hxg5 42. b5 g4 43. Rc8 Kf5 44. b6 g3+ 45. Ke1 Ra1+ 46. Ke2 g2
+47. Rf8+ Ke4 48. Rxf4+ Kxf4 49. b7 g1=Q 50. b8=Q+ Kf5 51. Qf8+ Ke4 52. Qa8+ Kd4
+53. Qd8+ Kc4 54. Qd3+ Kc5 55. Qc3+ Kd6 56. Qd2+ Ke5 57. Qb2+ Kf5 0-1
+
+[Event "Match"]
+[Site "New York City, NY USA"]
+[Date "1961.07.??"]
+[Round "2"]
+[White "Robert J. Fischer"]
+[Black "Samuel Reshevsky"]
+[Result "1-0"]
+
+1. e4 c5 2. Nf3 Nc6 3. d4 cxd4 4. Nxd4 g6 5. Nc3 Bg7 6. Be3 Nf6 7. Be2 O-O 8.
+f4 d6 9. Nb3 Be6 10. g4 d5 11. f5 Bc8 12. exd5 Nb4 13. Bf3 gxf5 14. a3 fxg4 15.
+Bg2 Na6 16. Qd3 e6 17. O-O-O Nxd5 18. h3 g3 19. Rhg1 Qd6 20. Bxd5 exd5 21. Nxd5
+Kh8 22. Bf4 Qg6 23. Qd2 Bxh3 24. Rxg3 Bg4 25. Rh1 Rfe8 26. Ne3 Qe4 27. Qh2 Be6
+28. Rxg7 Kxg7 29. Qh6+ Kg8 30. Rg1+ Qg6 31. Rxg6+ fxg6 32. Nd4 Rad8 33. Be5 Rd7
+34. Nxe6 Rxe6 35. Ng4 Rf7 36. Qg5 Rf1+ 37. Kd2 h5 38. Qd8+ 1-0
+
+[Event "Match"]
+[Site "Los Angeles, CA USA"]
+[Date "1961.08.10"]
+[Round "11"]
+[White "Samuel Reshevsky"]
+[Black "Robert J. Fischer"]
+[Result "1/2-1/2"]
+
+1. c4 Nf6 2. d4 g6 3. Nc3 Bg7 4. e4 O-O 5. Be2 d6 6. Nf3 e5 7. O-O Nc6 8. d5
+Ne7 9. Ne1 Nd7 10. Nd3 f5 11. exf5 Nxf5 12. f3 Nd4 13. Ne4 b6 14. Bg5 Qe8 15.
+Bd2 a5 16. Re1 Nxe2+ 17. Qxe2 h6 18. b3 g5 19. a3 Qg6 20. b4 Nf6 21. bxa5 g4
+22. Ndf2 gxf3 23. Qxf3 Nh5 24. Qe3 bxa5 25. Rac1 Bf5 26. c5 Nf4 27. Qg3 Bxe4
+28. Rxe4 Qxe4 29. Nxe4 Ne2+ 30. Kh1 Nxg3+ 31. hxg3 Ra6 32. cxd6 cxd6 33. a4 Rf7
+34. g4 Bf8 35. Kh2 Kh7 36. Rc8 Rb6 37. Ra8 Rb3 38. Bxa5 Rf4 39. Bc7 Rxe4 40.
+Rxf8 Rd3 41. Rf6 Rxg4 42. Rxd6 Rg7 43. Rc6 Rxd5 44. Rc2 e4 45. a5 Rd3 46. Bf4
+Rf7 47. g3 e3 48. Rc1 Re7 49. Re1 Ra3 50. Re2 Kg6 51. Kg2 Rxa5 52. Rxe3 Ra2+
+53. Kf3 Rb7 54. Re6+ Kf5 55. Re5+ Kf6 56. Rd5 Rb3+ 57. Kg4 1/2-1/2
+
+[Event "Bled Tournament"]
+[Site "Bled, Yugoslavia"]
+[Date "1961.09.03"]
+[Round "1"]
+[White "Svetozar Gligoric"]
+[Black "Robert J. Fischer"]
+[Result "1/2-1/2"]
+
+1. d4 Nf6 2. c4 g6 3. Nc3 Bg7 4. e4 d6 5. Nf3 O-O 6. Be2 e5 7. O-O Nc6 8. d5
+Ne7 9. Ne1 Nd7 10. Nd3 f5 11. exf5 Nxf5 12. f3 Nf6 13. Nf2 Nd4 14. Nfe4 Nh5 15.
+Bg5 Qd7 16. g3 h6 17. Be3 c5 18. Bxd4 exd4 19. Nb5 a6 20. Nbxd6 d3 21. Qxd3
+Bd4+ 22. Kg2 Nxg3 23. Nxc8 Nxf1 24. Nb6 Qc7 25. Rxf1 Qxb6 26. b4 Qxb4 27. Rb1
+Qa5 28. Nxc5 Qxc5 29. Qxg6+ Bg7 30. Rxb7 Qd4 31. Bd3 Rf4 32. Qe6+ Kh8 33. Qg6
+1/2-1/2
+
+[Event "Bled Tournament"]
+[Site "Bled, Yugoslavia"]
+[Date "1961.09.04"]
+[Round "2"]
+[White "Robert J. Fischer"]
+[Black "Mikhail N. Tal"]
+[Result "1-0"]
+
+1. e4 c5 2. Nf3 Nc6 3. d4 cxd4 4. Nxd4 e6 5. Nc3 Qc7 6. g3 Nf6 7. Ndb5 Qb8 8.
+Bf4 Ne5 9. Be2 Bc5 10. Bxe5 Qxe5 11. f4 Qb8 12. e5 a6 13. exf6 axb5 14. fxg7
+Rg8 15. Ne4 Be7 16. Qd4 Ra4 17. Nf6+ Bxf6 18. Qxf6 Qc7 19. O-O-O Rxa2 20. Kb1
+Ra6 21. Bxb5 Rb6 22. Bd3 e5 23. fxe5 Rxf6 24. exf6 Qc5 25. Bxh7 Qg5 26. Bxg8
+Qxf6 27. Rhf1 Qxg7 28. Bxf7+ Kd8 29. Be6 Qh6 30. Bxd7 Bxd7 31. Rf7 Qxh2 32.
+Rdxd7+ Ke8 33. Rde7+ Kd8 34. Rd7+ Kc8 35. Rc7+ Kd8 36. Rfd7+ Ke8 37. Rd1 b5 38.
+Rb7 Qh5 39. g4 Qh3 40. g5 Qf3 41. Re1+ Kf8 42. Rxb5 Kg7 43. Rb6 Qg3 44. Rd1 Qc7
+45. Rdd6 Qc8 46. b3 Kf7 47. Ra6 1-0
+
+[Event "Bled Tournament"]
+[Site "Bled, Yugoslavia"]
+[Date "1961.09.10"]
+[Round "6"]
+[White "Robert J. Fischer"]
+[Black "Efim P. Geller"]
+[Result "1-0"]
+
+1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 d6 5. O-O Bg4 6. h3 Bh5 7. c3 Qf6 8. g4
+Bg6 9. d4 Bxe4 10. Nbd2 Bg6 11. Bxc6+ bxc6 12. dxe5 dxe5 13. Nxe5 Bd6 14. Nxg6
+Qxg6 15. Re1+ Kf8 16. Nc4 h5 17. Nxd6 cxd6 18. Bf4 d5 19. Qb3 hxg4 20. Qb7
+gxh3+ 21. Bg3 Rd8 22. Qb4+ 1-0
+
+[Event "Bled Tournament"]
+[Site "Bled, Yugoslavia"]
+[Date "1961.09.20"]
+[Round "12"]
+[White "Robert J. Fischer"]
+[Black "Petar Trifunovic"]
+[Result "1-0"]
+
+1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O Nxe4 6. d4 b5 7. Bb3 exd4 8.
+Re1 d5 9. Nc3 Be6 10. Nxe4 dxe4 11. Rxe4 Be7 12. Bxe6 fxe6 13. Nxd4 O-O 14. Qg4
+Nxd4 15. Rxd4 Qc8 16. Re4 Rf6 17. Be3 Qd7 18. Rd1 Qc6 19. Bd4 Rg6 20. Qe2 Rd8
+21. g3 Qd5 22. Re1 c5 23. Bc3 Rd6 24. Be5 Rd8 25. Bf4 c4 26. Rxe6 Rxe6 27.
+Qxe6+ Qxe6 28. Rxe6 Bf6 29. Rxa6 Rd1+ 30. Kg2 Bxb2 31. Rb6 Ra1 32. Rxb5 Rxa2
+33. Rc5 Ra4 34. Be5 Bxe5 35. Rxe5 Ra2 36. Re2 Kf7 37. Kf3 Kf6 38. Ke4 g5 39.
+Kd4 Kf5 40. f3 c3 41. Rf2 Ra3 42. Kc4 h5 43. Kb4 Ra8 44. f4 Ke4 45. fxg5 Ke3
+46. Rg2 Kd4 47. Re2 Rb8+ 48. Ka4 Rg8 49. h4 Rf8 50. Re7 Rf3 51. Rd7+ Kc4 52.
+Rc7+ Kd4 53. Rd7+ Kc4 54. Rc7+ Kd4 55. Kb3 Rxg3 56. Rd7+ Ke4 57. Rh7 Kd4 58.
+Rxh5 Rg1 59. Rh8 Rb1+ 60. Ka4 Ra1+ 61. Kb5 Rb1+ 62. Kc6 Rg1 63. Rd8+ Kc4 64.
+Re8 Kb4 65. Kd5 Rd1+ 66. Ke6 Re1+ 67. Kf7 Rf1+ 68. Kg6 Rf2 69. h5 Rxc2 70. h6
+Rh2 71. h7 c2 72. Rc8 Kb3 73. Kg7 1-0
+
+[Event "Bled Tournament"]
+[Site "Bled, Yugoslavia"]
+[Date "1961.09.30"]
+[Round "18"]
+[White "Robert J. Fischer"]
+[Black "Tigran V. Petrosian"]
+[Result "1-0"]
+
+1. e4 c6 2. d4 d5 3. Nc3 dxe4 4. Nxe4 Nd7 5. Nf3 Ngf6 6. Nxf6+ Nxf6 7. Bc4 Bf5
+8. Qe2 e6 9. Bg5 Bg4 10. O-O-O Be7 11. h3 Bxf3 12. Qxf3 Nd5 13. Bxe7 Qxe7 14.
+Kb1 Rd8 15. Qe4 b5 16. Bd3 a5 17. c3 Qd6 18. g3 b4 19. c4 Nf6 20. Qe5 c5 21.
+Qg5 h6 22. Qxc5 Qxc5 23. dxc5 Ke7 24. c6 Rd6 25. Rhe1 Rxc6 26. Re5 Ra8 27. Be4
+Rd6 28. Bxa8 Rxd1+ 29. Kc2 Rf1 30. Rxa5 Rxf2+ 31. Kb3 Rh2 32. c5 Kd8 33. Rb5
+Rxh3 34. Rb8+ Kc7 35. Rb7+ Kc6 36. Kc4 1-0
+
+[Event "Stockholm Interzonal"]
+[Site "Stockholm, Sweden"]
+[Date "1962.02.27"]
+[Round "19"]
+[White "Robert J. Fischer"]
+[Black "Viktor L. Kortchnoi"]
+[Result "1-0"]
+
+1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O Be7 6. Re1 b5 7. Bb3 O-O 8. c3
+d6 9. d4 Bg4 10. Be3 exd4 11. cxd4 Na5 12. Bc2 Nc4 13. Bc1 c5 14. b3 Na5 15. d5
+Nd7 16. Nbd2 Bf6 17. Rb1 c4 18. h3 Bxf3 19. Nxf3 cxb3 20. axb3 Qc7 21. Be3 Bc3
+22. Re2 b4 23. Nd4 Rfe8 24. Nf5 Nb7 25. Bd4 g6 26. Nh6+ Kf8 27. Rc1 Rac8 28.
+Bd3 Qa5 29. Rec2 Ne5 30. Bf1 Nc5 31. Bxc3 bxc3 32. Rxc3 Kg7 33. Ng4 Nxg4 34.
+Qxg4 Rb8 35. Rf3 Nxe4 36. Qf4 f5 37. Re3 Re5 38. Rc6 Rbe8 39. Rxd6 Qa1 40. Rxa6
+Qd4 41. Rd3 Qb2 42. d6 g5 43. Qe3 f4 44. Qa7+ 1-0
+
+[Event "Stockholm Interzonal"]
+[Site "Stockholm, Sweden"]
+[Date "1962.03.03"]
+[Round "21"]
+[White "Robert J. Fischer"]
+[Black "Julio Bolbochan"]
+[Result "1-0"]
+
+1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 a6 6. h3 Nc6 7. g4 Nxd4 8.
+Qxd4 e5 9. Qd3 Be7 10. g5 Nd7 11. Be3 Nc5 12. Qd2 Be6 13. O-O-O O-O 14. f3 Rc8
+15. Kb1 Nd7 16. h4 b5 17. Bh3 Bxh3 18. Rxh3 Nb6 19. Bxb6 Qxb6 20. Nd5 Qd8 21.
+f4 exf4 22. Qxf4 Qd7 23. Qf5 Rcd8 24. Ra3 Qa7 25. Rc3 g6 26. Qg4 Qd7 27. Qf3
+Qe6 28. Rc7 Rde8 29. Nf4 Qe5 30. Rd5 Qh8 31. a3 h6 32. gxh6 Qxh6 33. h5 Bg5 34.
+hxg6 fxg6 35. Qb3 Rxf4 36. Re5+ Kf8 37. Rxe8+ 1-0
+
+[Event "Stockholm Interzonal"]
+[Site "Stockholm, Sweden"]
+[Date "1962.03.04"]
+[Round "22"]
+[White "Mario Bertok"]
+[Black "Robert J. Fischer"]
+[Result "0-1"]
+
+1. d4 d5 2. c4 e6 3. Nc3 Be7 4. Nf3 Nf6 5. Bg5 O-O 6. e3 h6 7. Bh4 b6 8. cxd5
+Nxd5 9. Bxe7 Qxe7 10. Nxd5 exd5 11. Be2 Be6 12. O-O c5 13. dxc5 bxc5 14. Qa4
+Qb7 15. Qa3 Nd7 16. Ne1 a5 17. Nd3 c4 18. Nf4 Rfb8 19. Rab1 Bf5 20. Rbd1 Nf6
+21. Rd2 g5 22. Nxd5 Nxd5 23. Bxc4 Be6 24. Rfd1 Nxe3 25. Qxe3 Bxc4 26. h4 Re8
+27. Qg3 Qe7 28. b3 Be6 29. f4 g4 30. h5 Qc5+ 31. Rf2 Bf5 0-1
+
+[Event "Curacao Candidates Tournament"]
+[Site "Curacao, Netherlands Antilles"]
+[Date "1962.05.12"]
+[Round "7"]
+[White "Robert J. Fischer"]
+[Black "Paul Keres"]
+[Result "1-0"]
+
+1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O Be7 6. Re1 b5 7. Bb3 d6 8. c3
+O-O 9. h3 Na5 10. Bc2 c5 11. d4 Nd7 12. dxc5 dxc5 13. Nbd2 Qc7 14. Nf1 Nb6 15.
+Ne3 Rd8 16. Qe2 Be6 17. Nd5 Nxd5 18. exd5 Bxd5 19. Nxe5 Ra7 20. Bf4 Qb6 21.
+Rad1 g6 22. Ng4 Nc4 23. Bh6 Be6 24. Bb3 Qb8 25. Rxd8+ Bxd8 26. Bxc4 bxc4 27.
+Qxc4 Qd6 28. Qa4 Qe7 29. Nf6+ Kh8 30. Nd5 Qd7 31. Qe4 Qd6 32. Nf4 Re7 33. Bg5
+Re8 34. Bxd8 Rxd8 35. Nxe6 Qxe6 36. Qxe6 fxe6 37. Rxe6 Rd1+ 38. Kh2 Rd2 39. Rb6
+Rxf2 40. Rb7 Rf6 41. Kg3 1-0
+
+[Event "Curacao Candidates Tournament"]
+[Site "Curacao, Netherlands Antilles"]
+[Date "1962.05.24"]
+[Round "14"]
+[White "Paul Keres"]
+[Black "Robert J. Fischer"]
+[Result "1/2-1/2"]
+
+1. e4 c5 2. Ne2 d6 3. g3 g6 4. Bg2 Bg7 5. O-O Nc6 6. c3 e5 7. d3 Nge7 8. a3 O-O
+9. b4 b6 10. f4 exf4 11. gxf4 d5 12. e5 Bg4 13. h3 Bxe2 14. Qxe2 f6 15. b5 Na5
+16. Nd2 fxe5 17. fxe5 Rxf1+ 18. Nxf1 Nb3 19. Rb1 Nxc1 20. Rxc1 Qc7 21. Re1 Rd8
+22. Nh2 d4 23. cxd4 cxd4 24. Nf3 Bh6 25. Qa2+ Kh8 26. Qe6 Nd5 27. Nh2 Ne3 28.
+Bc6 Rf8 29. Nf3 Bf4 30. Nxd4 Bxe5 31. Nf3 Bd4 32. Rxe3 Bxe3+ 33. Qxe3 Qg3+ 34.
+Kf1 Qxh3+ 35. Ke1 Qf5 36. d4 Kg7 37. Kf2 h5 38. Kg3 Qg4+ 39. Kh2 Rf4 40. Qe7+
+Kh6 41. Qe2 Qf5 42. Qe3 g5 43. Kg2 Rg4+ 44. Kf2 Rf4 45. Kg2 Qc2+ 46. Kh1 Qb1+
+47. Kh2 Qa2+ 48. Kh3 Qf7 49. Kh2 Qf6 50. Kg2 Kg7 51. Kg3 h4+ 52. Kg2 Rg4+ 53.
+Kh1 Rg3 54. Qe4 g4 55. Nh2 Qg5 56. Nf1 Rh3+ 57. Kg1 Rxa3 58. d5 g3 59. Bd7 Ra1
+60. Bf5 Qf6 61. Qf4 Re1 62. d6 Re5 63. Qg4+ Kf8 64. d7 Rd5 65. Kg2 Rxd7 66.
+Bxd7 Qf2+ 67. Kh3 Qxf1+ 68. Kxh4 g2 69. Qb4+ Kf7 70. Qb3+ Kg7 71. Qg3+ Kh7 72.
+Qe5 Qh1+ 73. Bh3 Qxh3+ 74. Kxh3 g1=Q 75. Qe7+ Kh8 76. Qf8+ Kh7 77. Qf7+ 1/2-1/2
+
+[Event "15th Olympiad (Final)"]
+[Site "Varna, Bulgaria"]
+[Date "1962.09.28"]
+[Round "2"]
+[White "Robert J. Fischer"]
+[Black "Miguel Najdorf"]
+[Result "1-0"]
+
+1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 a6 6. h3 b5 7. Nd5 Bb7 8.
+Nxf6+ gxf6 9. c4 bxc4 10. Bxc4 Bxe4 11. O-O d5 12. Re1 e5 13. Qa4+ Nd7 14. Rxe4
+dxe4 15. Nf5 Bc5 16. Ng7+ Ke7 17. Nf5+ Ke8 18. Be3 Bxe3 19. fxe3 Qb6 20. Rd1
+Ra7 21. Rd6 Qd8 22. Qb3 Qc7 23. Bxf7+ Kd8 24. Be6 1-0
+
+[Event "15th Olympiad (Final)"]
+[Site "Varna, Bulgaria"]
+[Date "1962.09.30"]
+[Round "4"]
+[White "Robert J. Fischer"]
+[Black "Kark Robatsch"]
+[Result "1-0"]
+
+1. e4 d5 2. exd5 Qxd5 3. Nc3 Qd8 4. d4 g6 5. Bf4 Bg7 6. Qd2 Nf6 7. O-O-O c6 8.
+Bh6 O-O 9. h4 Qa5 10. h5 gxh5 11. Bd3 Nbd7 12. Nge2 Rd8 13. g4 Nf8 14. gxh5 Ne6
+15. Rdg1 Kh8 16. Bxg7+ Nxg7 17. Qh6 Rg8 18. Rg5 Qd8 19. Rhg1 Nf5 20. Bxf5 1-0
+
+[Event "15th Olympiad (Final)"]
+[Site "Varna, Bulgaria"]
+[Date "1962.10.04"]
+[Round "7"]
+[White "Wolfgang Unzicker"]
+[Black "Robert J. Fischer"]
+[Result "0-1"]
+
+1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 a6 6. Be2 e5 7. Nb3 Be6 8. O-O
+Nbd7 9. f4 Qc7 10. f5 Bc4 11. a4 Be7 12. Be3 O-O 13. a5 b5 14. axb6 Nxb6 15.
+Bxb6 Qxb6+ 16. Kh1 Bb5 17. Bxb5 axb5 18. Nd5 Nxd5 19. Qxd5 Ra4 20. c3 Qa6 21.
+h3 Rc8 22. Rfe1 h6 23. Kh2 Bg5 24. g3 Qa7 25. Kg2 Ra2 26. Kf1 Rxc3 0-1
+
+[Event "15th Olympiad (Final)"]
+[Site "Varna, Bulgaria"]
+[Date "1962.10.07"]
+[Round "10"]
+[White "Mikhail M. Botvinnik"]
+[Black "Robert J. Fischer"]
+[Result "1/2-1/2"]
+
+1. c4 g6 2. d4 Nf6 3. Nc3 d5 4. Nf3 Bg7 5. Qb3 dxc4 6. Qxc4 O-O 7. e4 Bg4 8.
+Be3 Nfd7 9. Be2 Nc6 10. Rd1 Nb6 11. Qc5 Qd6 12. h3 Bxf3 13. gxf3 Rfd8 14. d5
+Ne5 15. Nb5 Qf6 16. f4 Ned7 17. e5 Qxf4 18. Bxf4 Nxc5 19. Nxc7 Rac8 20. d6 exd6
+21. exd6 Bxb2 22. O-O Nbd7 23. Rd5 b6 24. Bf3 Ne6 25. Nxe6 fxe6 26. Rd3 Nc5 27.
+Re3 e5 28. Bxe5 Bxe5 29. Rxe5 Rxd6 30. Re7 Rd7 31. Rxd7 Nxd7 32. Bg4 Rc7 33.
+Re1 Kf7 34. Kg2 Nc5 35. Re3 Re7 36. Rf3+ Kg7 37. Rc3 Re4 38. Bd1 Rd4 39. Bc2
+Kf6 40. Kf3 Kg5 41. Kg3 Ne4+ 42. Bxe4 Rxe4 43. Ra3 Re7 44. Rf3 Rc7 45. a4 Rc5
+46. Rf7 Ra5 47. Rxh7 Rxa4 48. h4+ Kf5 49. Rf7+ Ke5 50. Rg7 Ra1 51. Kf3 b5 52.
+h5 Ra3+ 53. Kg2 gxh5 54. Rg5+ Kd6 55. Rxb5 h4 56. f4 Kc6 57. Rb8 h3+ 58. Kh2 a5
+59. f5 Kc7 60. Rb5 Kd6 61. f6 Ke6 62. Rb6+ Kf7 63. Ra6 Kg6 64. Rc6 a4 65. Ra6
+Kf7 66. Rc6 Rd3 67. Ra6 a3 68. Kg1 1/2-1/2
+
+[Event "US Championship"]
+[Site "New York City, NY USA"]
+[Date "1962.12.22"]
+[Round "5"]
+[White "Robert J. Fischer"]
+[Black "Samuel Reshevsky"]
+[Result "1-0"]
+
+1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 a6 6. h3 g6 7. g4 Bg7 8. g5
+Nh5 9. Be2 e5 10. Nb3 Nf4 11. Nd5 Nxd5 12. Qxd5 Nc6 13. Bg4 Bxg4 14. hxg4 Qc8
+15. Qd1 Nd4 16. c3 Nxb3 17. axb3 Qe6 18. Ra5 f6 19. Qd5 Qxd5 20. Rxd5 Kd7 21.
+gxf6 Bxf6 22. g5 Be7 23. Ke2 Raf8 24. Be3 Rc8 25. b4 b5 26. Rdd1 Ke6 27. Ra1
+Rc6 28. Rh3 Bf8 29. Rah1 Rc7 30. Rh4 d5 31. Ra1 Rc6 32. exd5+ Kxd5 33. Rd1+ Ke6
+34. Rd8 Kf5 35. Ra8 Re6 36. Rh3 Bg7 37. Rxh8 Bxh8 38. Rxh7 Re8 39. Rf7+ Kg4 40.
+f3+ Kg3 41. Kd3 e4+ 42. fxe4 Rd8+ 43. Bd4 Kg4 44. Rf1 Be5 45. Ke3 Bc7 46. Rg1+
+Kh5 47. Kf3 Rd7 48. e5 Rf7+ 49. Ke4 Rf5 50. e6 Bd8 51. Bf6 Bxf6 52. gxf6 Rxf6
+53. Ke5 Rf2 54. Re1 1-0
+
+[Event "New York State Open"]
+[Site "Poughkeepsie, NY USA"]
+[Date "1963.09.01"]
+[Round "5"]
+[White "Robert J. Fischer"]
+[Black "Arthur B. Bisguier"]
+[Result "1-0"]
+
+1. e4 e5 2. Nf3 Nc6 3. Bc4 Nf6 4. Ng5 d5 5. exd5 Na5 6. Bb5+ c6 7. dxc6 bxc6 8.
+Be2 h6 9. Nh3 Bc5 10. O-O O-O 11. d3 Bxh3 12. gxh3 Qd7 13. Bf3 Qxh3 14. Nd2
+Rad8 15. Bg2 Qf5 16. Qe1 Rfe8 17. Ne4 Bb6 18. Nxf6+ Qxf6 19. Kh1 c5 20. Qc3 Nc6
+21. f4 Nd4 22. Qc4 Qg6 23. c3 Nf5 24. fxe5 Rxe5 25. Bf4 Re2 26. Be4 Rxb2 27.
+Be5 Re8 28. Rxf5 Rxe5 29. Rxe5 1-0
+
+[Event "US Championship"]
+[Site "NY USA"]
+[Date "1963.12.18"]
+[Round "3"]
+[White "Robert Byrne"]
+[Black "Robert J. Fischer"]
+[Result "0-1"]
+
+1. d4 Nf6 2. c4 g6 3. g3 c6 4. Bg2 d5 5. cxd5 cxd5 6. Nc3 Bg7 7. e3 O-O 8. Nge2
+Nc6 9. O-O b6 10. b3 Ba6 11. Ba3 Re8 12. Qd2 e5 13. dxe5 Nxe5 14. Rfd1 Nd3 15.
+Qc2 Nxf2 16. Kxf2 Ng4+ 17. Kg1 Nxe3 18. Qd2 Nxg2 19. Kxg2 d4 20. Nxd4 Bb7+ 21.
+Kf1 Qd7 0-1
+
+[Event "US Championship"]
+[Site "NY USA"]
+[Date "1963.12.19"]
+[Round "4"]
+[White "Robert J. Fischer"]
+[Black "Arthur B. Bisguier"]
+[Result "1-0"]
+
+1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O Be7 6. Re1 b5 7. Bb3 O-O 8. c3
+d6 9. h3 Na5 10. Bc2 c5 11. d4 Qc7 12. Nbd2 Nc6 13. dxc5 dxc5 14. Nf1 Rd8 15.
+Qe2 Nh5 16. g3 g6 17. h4 Be6 18. Ne3 f6 19. Nd5 Qb7 20. Nxe7+ Qxe7 21. Nh2 Ng7
+22. Ng4 c4 23. Qf3 Bxg4 24. Qxg4 Ne6 25. h5 Kh8 26. Kg2 g5 27. Be3 Nf4+ 28. Kh2
+Nd3 29. Bxd3 cxd3 30. Red1 Rd7 31. Rd2 Na5 32. b3 Qd6 33. Rad1 Re8 34. Rxd3
+Qxd3 35. Qxd7 1-0
+
+[Event "US Championship"]
+[Site "NY USA"]
+[Date "1963.12.22"]
+[Round "6"]
+[White "Robert J. Fischer"]
+[Black "Robert H. Steinmeyer"]
+[Result "1-0"]
+
+1. e4 c6 2. d4 d5 3. Nc3 dxe4 4. Nxe4 Bf5 5. Ng3 Bg6 6. Nf3 Nf6 7. h4 h6 8. Bd3
+Bxd3 9. Qxd3 e6 10. Bd2 Nbd7 11. O-O-O Qc7 12. c4 O-O-O 13. Bc3 Qf4+ 14. Kb1
+Nc5 15. Qc2 Nce4 16. Ne5 Nxf2 17. Rdf1 1-0
+
+[Event "US Championship"]
+[Site "NY USA"]
+[Date "1963.12.30"]
+[Round "10"]
+[White "Robert J. Fischer"]
+[Black "Pal Benko"]
+[Result "1-0"]
+
+1. e4 g6 2. d4 Bg7 3. Nc3 d6 4. f4 Nf6 5. Nf3 O-O 6. Bd3 Bg4 7. h3 Bxf3 8. Qxf3
+Nc6 9. Be3 e5 10. dxe5 dxe5 11. f5 gxf5 12. Qxf5 Nd4 13. Qf2 Ne8 14. O-O Nd6
+15. Qg3 Kh8 16. Qg4 c6 17. Qh5 Qe8 18. Bxd4 exd4 19. Rf6 Kg8 20. e5 h6 21. Ne2
+1-0
+
+[Event "Casual Game"]
+[Site "New York City, NY USA"]
+[Date "1963.??.??"]
+[Round "nil"]
+[White "Robert J. Fischer"]
+[Black "Reuben Fine"]
+[Result "1-0"]
+
+1. e4 e5 2. Nf3 Nc6 3. Bc4 Bc5 4. b4 Bxb4 5. c3 Ba5 6. d4 exd4 7. O-O dxc3 8.
+Qb3 Qe7 9. Nxc3 Nf6 10. Nd5 Nxd5 11. exd5 Ne5 12. Nxe5 Qxe5 13. Bb2 Qg5 14. h4
+Qxh4 15. Bxg7 Rg8 16. Rfe1+ Kd8 17. Qg3 1-0
+
+[Event "Davis Clock Simultaneous"]
+[Site "CA USA"]
+[Date "1964.??.??"]
+[Round "nil"]
+[White "Robert J. Fischer"]
+[Black "O. Celle"]
+[Result "1-0"]
+
+1. e4 e5 2. Nf3 Nc6 3. Bc4 Bc5 4. b4 Bxb4 5. c3 Be7 6. d4 d6 7. dxe5 Nxe5 8.
+Nxe5 dxe5 9. Qh5 g6 10. Qxe5 Nf6 11. Ba3 Rf8 12. O-O Ng4 13. Qg3 Bxa3 14. Nxa3
+Qe7 15. Bb5+ c6 16. Nc4 Qe6 17. Rad1 cxb5 18. Qc7 Bd7 19. Nd6+ Ke7 20. Nf5+
+gxf5 21. exf5 Rac8 22. Rxd7+ Qxd7 23. f6+ Nxf6 24. Re1+ Ne4 25. Rxe4+ Kf6 26.
+Qxd7 Rfd8 27. Qg4 1-0
+
+[Event "Capablanca Memorial"]
+[Site "Havana, Cuba"]
+[Date "1965.08.26"]
+[Round "2"]
+[White "Robert J. Fischer"]
+[Black "Vasily V. Smyslov"]
+[Result "1-0"]
+
+1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. d3 d6 6. c3 Be7 7. Nbd2 O-O 8. Nf1
+b5 9. Bb3 d5 10. Qe2 dxe4 11. dxe4 Be6 12. Bxe6 fxe6 13. Ng3 Qd7 14. O-O Rad8
+15. a4 Qd3 16. Qxd3 Rxd3 17. axb5 axb5 18. Ra6 Rd6 19. Kh1 Nd7 20. Be3 Rd8 21.
+h3 h6 22. Rfa1 Ndb8 23. Ra8 Rd1+ 24. Kh2 Rxa1 25. Rxa1 Nd7 26. b4 Kf7 27. Nf1
+Bd6 28. g3 Nf6 29. N1d2 Ke7 30. Ra6 Nb8 31. Ra5 c6 32. Kg2 Nbd7 33. Kf1 Rc8 34.
+Ne1 Ne8 35. Nd3 Nc7 36. c4 bxc4 37. Nxc4 Nb5 38. Ra6 Kf6 39. Bc1 Bb8 40. Bb2 c5
+41. Nb6 Nxb6 42. Rxb6 c4 43. Nc5 1-0
+
+[Event "US Championship"]
+[Site "NY USA"]
+[Date "1965.12.??"]
+[Round "10"]
+[White "Robert J. Fischer"]
+[Black "Nicholas Rossolimo"]
+[Result "1-0"]
+
+1. e4 e6 2. d4 d5 3. Nc3 Nf6 4. Bg5 Bb4 5. e5 h6 6. Bd2 Bxc3 7. bxc3 Ne4 8. Qg4
+g6 9. Bd3 Nxd2 10. Kxd2 c5 11. Nf3 Nc6 12. Qf4 Qc7 13. h4 f5 14. g4 cxd4 15.
+cxd4 Ne7 16. gxf5 exf5 17. Bb5+ Kf8 18. Bd3 Be6 19. Ng1 Kf7 20. Nh3 Rac8 21.
+Rhg1 b6 22. h5 Qc3+ 23. Ke2 Nc6 24. hxg6+ Kg7 25. Rad1 Nxd4+ 26. Kf1 Rhe8 27.
+Rg3 Nc6 28. Qh4 Nxe5 29. Nf4 Ng4 30. Nxe6+ Rxe6 31. Bxf5 Qc4+ 32. Kg1 1-0
+
+[Event "Piatigorsky Cup"]
+[Site "Santa Monica, CA USA"]
+[Date "1966.08.03"]
+[Round "11"]
+[White "Lajos Portisch"]
+[Black "Robert J. Fischer"]
+[Result "0-1"]
+
+1. d4 Nf6 2. c4 e6 3. Nc3 Bb4 4. e3 b6 5. Ne2 Ba6 6. Ng3 Bxc3+ 7. bxc3 d5 8.
+Qf3 O-O 9. e4 dxe4 10. Nxe4 Nxe4 11. Qxe4 Qd7 12. Ba3 Re8 13. Bd3 f5 14. Qxa8
+Nc6 15. Qxe8+ Qxe8 16. O-O Na5 17. Rae1 Bxc4 18. Bxc4 Nxc4 19. Bc1 c5 20. dxc5
+bxc5 21. Bf4 h6 22. Re2 g5 23. Be5 Qd8 24. Rfe1 Kf7 25. h3 f4 26. Kh2 a6 27.
+Re4 Qd5 28. h4 Ne3 29. R1xe3 fxe3 30. Rxe3 Qxa2 31. Rf3+ Ke8 32. Bg7 Qc4 33.
+hxg5 hxg5 34. Rf8+ Kd7 35. Ra8 Kc6 0-1
+
+[Event "Piatigorsky Cup"]
+[Site "Santa Monica, CA USA"]
+[Date "1966.08.11"]
+[Round "16"]
+[White "Robert J. Fischer"]
+[Black "Miguel Najdorf"]
+[Result "1-0"]
+
+1. e4 c5 2. Nf3 Nc6 3. d4 cxd4 4. Nxd4 e6 5. Nb5 d6 6. Bf4 e5 7. Be3 Nf6 8. Bg5
+Be6 9. N1c3 a6 10. Bxf6 gxf6 11. Na3 Nd4 12. Bc4 b5 13. Bxe6 fxe6 14. Ne2 Nc6
+15. Ng3 Qd7 16. c4 Nd4 17. O-O b4 18. Nc2 Nxc2 19. Qxc2 h5 20. Rfd1 h4 21. Nf1
+Rg8 22. a3 h3 23. g3 bxa3 24. Rxa3 Qc6 25. Qe2 f5 26. c5 Qxe4 27. Qxe4 fxe4 28.
+cxd6 Bh6 29. Ra5 Kd7 30. Rxe5 Bg7 31. Rxe4 Bxb2 32. Ne3 a5 33. Nc4 Rgb8 34. Rh4
+Kc6 35. Rh7 Bd4 36. Rc7+ Kd5 37. d7 a4 38. Nb6+ Rxb6 39. Rc8 Rd6 40. Rxa8 Rxd7
+41. Rxa4 e5 42. Kf1 Rb7 43. f4 Ke6 44. fxe5 Rf7+ 45. Ke2 Rf2+ 46. Kd3 Bxe5 47.
+Re1 1-0
+
+[Event "17th Olympiad (Preliminary)"]
+[Site "Havana, Cuba"]
+[Date "1966.10.30"]
+[Round "5"]
+[White "Robert J. Fischer"]
+[Black "Jacek Bednarsky"]
+[Result "1-0"]
+
+1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 a6 6. Bc4 e6 7. Bb3 Nbd7 8. f4
+Nc5 9. f5 Nfxe4 10. fxe6 Qh4+ 11. g3 Nxg3 12. Nf3 Qh5 13. exf7+ Kd8 14. Rg1 Nf5
+15. Nd5 Qxf7 16. Bg5+ Ke8 17. Qe2+ Be6 18. Nf4 Kd7 19. O-O-O Qe8 20. Bxe6+ Nxe6
+21. Qe4 g6 22. Nxe6 1-0
+
+[Event "17th Olympiad (Final)"]
+[Site "Havana, Cuba"]
+[Date "1966.11.12"]
+[Round "8"]
+[White "Robert J. Fischer"]
+[Black "Svetozar Gligoric"]
+[Result "1-0"]
+
+1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Bxc6 dxc6 5. O-O f6 6. d4 Bg4 7. c3 exd4 8.
+cxd4 Qd7 9. h3 Be6 10. Nc3 O-O-O 11. Bf4 Ne7 12. Rc1 Ng6 13. Bg3 Bd6 14. Na4
+Bxg3 15. fxg3 Kb8 16. Nc5 Qd6 17. Qa4 Ka7 18. Nxa6 Bxh3 19. e5 Nxe5 20. dxe5
+fxe5 21. Nc5+ Kb8 22. gxh3 e4 23. Nxe4 Qe7 24. Rc3 b5 25. Qc2 1-0
+
+[Event "Monaco"]
+[Site "Monaco"]
+[Date "1967.03.28"]
+[Round "5"]
+[White "Bent Larsen"]
+[Black "Robert J. Fischer"]
+[Result "0-1"]
+
+1. d4 Nf6 2. c4 g6 3. Nc3 Bg7 4. e4 d6 5. Be2 O-O 6. Nf3 e5 7. O-O Nc6 8. Be3
+Re8 9. dxe5 dxe5 10. Qxd8 Nxd8 11. Nb5 Ne6 12. Ng5 Re7 13. Rfd1 b6 14. c5 Nxc5
+15. Rd8+ Bf8 16. Nxa7 Rxa7 17. Rxc8 Kg7 18. f3 Ne8 19. a3 Nd6 20. Rd8 h6 21.
+Nh3 Ne6 22. Rb8 Re8 23. Rxe8 Nxe8 24. Bb5 Nd6 25. Bf1 Nb7 26. Nf2 Bc5 27. Bxc5
+Nbxc5 28. Rd1 h5 29. Rd5 Kf6 30. h4 Ke7 31. Bc4 c6 32. Rd2 Nd4 33. Kf1 f5 34.
+b4 b5 35. Bg8 fxe4 36. fxe4 Nd7 37. Rd3 Ra6 38. Rc3 c5 39. g4 c4 40. gxh5 gxh5
+41. Bd5 Nf6 42. Rg3 Nxd5 43. exd5 Rf6 44. Kg2 Nf5 45. Rh3 Rg6+ 46. Kf3 Nd4+ 47.
+Ke3 Rg2 48. Rh1 Kd6 49. Ne4+ Kxd5 50. Nc3+ Ke6 51. Rc1 Rh2 52. a4 Rh3+ 53. Kf2
+Nb3 54. Kg2 Nxc1 55. Kxh3 bxa4 56. Nxa4 Ne2 57. b5 c3 58. b6 c2 59. Nc5+ Kd5
+60. Nb3 Kc6 61. Kg2 Kxb6 0-1
+
+[Event "Skopje"]
+[Site "Skopje, Yugoslavia"]
+[Date "1967.08.??"]
+[Round "2"]
+[White "Robert J. Fischer"]
+[Black "Efim P. Geller"]
+[Result "0-1"]
+
+1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 Nc6 6. Bc4 e6 7. Be3 Be7 8.
+Bb3 O-O 9. Qe2 Qa5 10. O-O-O Nxd4 11. Bxd4 Bd7 12. Kb1 Bc6 13. f4 Rad8 14. Rhf1
+b5 15. f5 b4 16. fxe6 bxc3 17. exf7+ Kh8 18. Rf5 Qb4 19. Qf1 Nxe4 20. a3 Qb7
+21. Qf4 Ba4 22. Qg4 Bf6 23. Rxf6 Bxb3 0-1
+
+[Event "Skopje"]
+[Site "Skopje, Yugoslavia"]
+[Date "1967.08.??"]
+[Round "16"]
+[White "Ratmit D. Kholmov"]
+[Black "Robert J. Fischer"]
+[Result "0-1"]
+
+1. d4 Nf6 2. Nf3 g6 3. g3 Bg7 4. Bg2 O-O 5. O-O d6 6. Nc3 Nbd7 7. b3 e5 8. dxe5
+dxe5 9. e4 Re8 10. Ba3 c6 11. Bd6 Qa5 12. Qd3 Re6 13. b4 Qa3 14. Bc7 Qxb4 15.
+Rab1 Qe7 16. Rfd1 Ne8 17. Ba5 Rd6 18. Qe2 Rxd1+ 19. Qxd1 Bf8 20. Nd2 Qa3 21.
+Nc4 Qc5 22. Bf1 b5 23. Nd2 Qa3 24. Nb3 Nc5 25. Bxb5 cxb5 26. Nxb5 Qa4 27. Nxc5
+Qxa5 28. Qd5 Rb8 29. a4 Bh3 30. Qxe5 Rc8 31. Nd3 Qxa4 32. Ne1 a6 0-1
+
+[Event "Sousse Interzonal"]
+[Site "Sousse, Tunisia"]
+[Date "1967.10.24"]
+[Round "7"]
+[White "Robert J. Fischer"]
+[Black "Leonid Z. Stein"]
+[Result "1-0"]
+
+1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O Be7 6. Re1 b5 7. Bb3 d6 8. c3
+O-O 9. h3 Bb7 10. d4 Na5 11. Bc2 Nc4 12. b3 Nb6 13. Nbd2 Nbd7 14. b4 exd4 15.
+cxd4 a5 16. bxa5 c5 17. e5 dxe5 18. dxe5 Nd5 19. Ne4 Nb4 20. Bb1 Rxa5 21. Qe2
+Nb6 22. Nfg5 Bxe4 23. Qxe4 g6 24. Qh4 h5 25. Qg3 Nc4 26. Nf3 Kg7 27. Qf4 Rh8
+28. e6 f5 29. Bxf5 Qf8 30. Be4 Qxf4 31. Bxf4 Re8 32. Rad1 Ra6 33. Rd7 Rxe6 34.
+Ng5 Rf6 35. Bf3 Rxf4 36. Ne6+ Kf6 37. Nxf4 Ne5 38. Rb7 Bd6 39. Kf1 Nc2 40. Re4
+Nd4 41. Rb6 Rd8 42. Nd5+ Kf5 43. Ne3+ Ke6 44. Be2 Kd7 45. Bxb5+ Nxb5 46. Rxb5
+Kc6 47. a4 Bc7 48. Ke2 g5 49. g3 Ra8 50. Rb2 Rf8 51. f4 gxf4 52. gxf4 Nf7 53.
+Re6+ Nd6 54. f5 Ra8 55. Rd2 Rxa4 56. f6 1-0
+
diff --git a/installer/WinBoard-4.2.7/RePackage/FA.ini b/installer/WinBoard-4.2.7/RePackage/FA.ini
new file mode 100644 (file)
index 0000000..c86b3f4
--- /dev/null
@@ -0,0 +1,28 @@
+[Settings]
+NumFields=3
+
+[Field 1]
+Type=label
+Text=Associate WinBoard with the following file extensions:
+Left=0
+Right=-1
+Top=0
+Bottom=10
+
+[Field 2]
+Type=checkbox
+Text=" .PGN - Portable Game Notation (Games)"
+Left=0
+Right=-1
+Top=30
+Bottom=40
+State=1
+
+[Field 3]
+Type=checkbox
+Text=" .FEN - Forsyth-Edwards Notation (Positions)"
+Left=0
+Right=-1
+Top=50
+Bottom=60
+State=1
\ No newline at end of file
diff --git a/installer/WinBoard-4.2.7/RePackage/WinBoard-4.2.7_full.nsi b/installer/WinBoard-4.2.7/RePackage/WinBoard-4.2.7_full.nsi
new file mode 100644 (file)
index 0000000..c151275
--- /dev/null
@@ -0,0 +1,378 @@
+; WinBoard-4.2.7 MUI
+;
+;
+
+;--------------------------------
+;Include Modern UI
+
+  !include "MUI.nsh"
+
+;--------------------------------
+
+!define InstName "WinBoard"
+!define InstVersion "4.2.7"
+!define InstBaseDir "WinBoard-4.2.7"
+
+;--------------------------------
+; General
+;
+
+Name "${InstName} ${InstVersion}"
+Caption "WinBoard - Chessboard For Windows"
+OutFile "WinBoard-4.2.7_full.exe"
+InstallDir $PROGRAMFILES\${InstBaseDir}
+
+SetCompressor lzma
+SetDateSave on
+SetDatablockOptimize on
+CRCCheck on
+SilentInstall normal
+BGGradient 000000 4682b4 FFFFFF
+;XPStyle on
+
+;--------------------------------
+;Variables
+
+  Var INI_VALUE
+  Var START_MENU_FOLDER
+  Var MUI_TEMP
+
+;--------------------------------
+
+
+;!define MUI_ICON "knight.ico"
+;!define MUI_UNICON "wc_uninst.ico"
+!define MUI_WELCOMEFINISHPAGE_BITMAP "welcome_chess.bmp"
+
+;--------------------------------
+;Interface Settings
+
+       !define MUI_ABORTWARNING
+       ;!define MUI_COMPONENTSPAGE_NODESC
+       !define MUI_COMPONENTSPAGE_SMALLDESC
+       !define MUI_WELCOMEPAGE_TEXT "This wizard will guide you through the installation of ${InstName} ${InstVersion}.\n\n\n\n\nClick Next to continue."
+       !define MUI_LICENSEPAGE_TEXT_BOTTOM "$\nPress Continue to proceed with the installation."
+       !define MUI_LICENSEPAGE_BUTTON "Continue"
+
+;--------------------------------
+
+;--------------------------------
+; Pages
+
+       ; Install Section
+       ;--------------------------------------------------------------------
+       !insertmacro MUI_PAGE_WELCOME
+       !insertmacro MUI_PAGE_LICENSE "..\READ_ME.txt"
+       !insertmacro MUI_PAGE_COMPONENTS
+       Page custom FileAssoc
+       !insertmacro MUI_PAGE_DIRECTORY
+       
+       ;Start Menu Folder Page Configuration
+        !define MUI_STARTMENUPAGE_REGISTRY_ROOT "HKCU"
+        !define MUI_STARTMENUPAGE_REGISTRY_KEY "Software\WinBoard"
+        !define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "Start Menu Folder"
+       !insertmacro MUI_PAGE_STARTMENU Application $START_MENU_FOLDER
+       
+       !insertmacro MUI_PAGE_INSTFILES
+       !insertmacro MUI_PAGE_FINISH
+       ;--------------------------------------------------------------------
+       
+       ; Uninstall Section
+       ;
+       ;!define MUI_WELCOMEPAGE_TEXT "WARNING! THIS UNINSTALLER WILL COMPLETELY DELETE THE INSTALLATION DIRECTORY\n\n$INSTDIR !!!\n\nIF THERE ARE ANY FILES YOU WISH TO SAVE, MOVE THEM FROM THE INSTALLATION DIRECTORY FIRST!\n\n\n\nPress Next to Continue."
+       !define MUI_WELCOMEPAGE_TEXT "This will uninstall WinBoard from directory:\n\n$INSTDIR\n\n\n\nPress Next to Continue."
+       !insertmacro MUI_UNPAGE_WELCOME
+       !insertmacro MUI_UNPAGE_CONFIRM
+       !insertmacro MUI_UNPAGE_INSTFILES
+       !insertmacro MUI_UNPAGE_FINISH
+
+;--------------------------------
+;Languages
+  !insertmacro MUI_LANGUAGE "English"
+
+;--------------------------------
+
+;--------------------------------
+;Reserve Files
+  
+  ;These files should be inserted before other files in the data block
+  ;Keep these lines before any File command
+  ;Only for solid compression (by default, solid compression is enabled for BZIP2 and LZMA)
+  
+  ReserveFile "FA.ini"
+  !insertmacro MUI_RESERVEFILE_INSTALLOPTIONS
+
+;--------------------------------
+
+Section "WinBoard Core Components" Core
+
+SectionIn 1 RO
+
+       SetOutPath $INSTDIR
+
+       File ..\bughouse.bat
+       File ..\ChangeLog
+       File ..\COPYING
+       File ..\COPYRIGHT
+       File ..\cygncurses7.dll
+       File ..\cygreadline5.dll
+       File ..\cygwin1.dll
+       File ..\FAQ.html
+       File ..\kk13.pgn
+       File ..\NEWS
+       File ..\READ_ME.txt
+       File ..\RJF60.pgn
+       File ..\timeseal.exe
+       File ..\timestamp.exe
+       File ..\winboard.exe
+       File ..\winboard.hlp
+       File ..\zippy.lines
+       File ..\zippy.README
+       
+       ;Create uninstaller
+       WriteUninstaller "$INSTDIR\UnInstall.exe"
+       
+       !insertmacro MUI_STARTMENU_WRITE_BEGIN Application
+
+       CreateDirectory "$SMPROGRAMS\$START_MENU_FOLDER"
+       CreateShortCut "$SMPROGRAMS\$START_MENU_FOLDER\Game Viewer.lnk" "$INSTDIR\winboard.exe" "-ncp" "$INSTDIR\winboard.exe" 1
+       CreateShortCut "$SMPROGRAMS\$START_MENU_FOLDER\Game Viewer - Bobby Fischer.lnk" "$INSTDIR\winboard.exe" "-ncp -lgf RJF60.pgn" "$INSTDIR\winboard.exe" 1
+       CreateShortCut "$SMPROGRAMS\$START_MENU_FOLDER\Game Viewer - Karpov vs Kasparov.lnk" "$INSTDIR\winboard.exe" "-ncp -lgf kk13.pgn" "$INSTDIR\winboard.exe" 1
+        CreateShortCut "$SMPROGRAMS\$START_MENU_FOLDER\WinBoard Help.lnk" "$INSTDIR\winboard.hlp"
+        CreateShortCut "$SMPROGRAMS\$START_MENU_FOLDER\Frequently Asked Questions.lnk" "$INSTDIR\FAQ.html"
+        CreateShortCut "$SMPROGRAMS\$START_MENU_FOLDER\WinBoard READ_ME.lnk" "$INSTDIR\READ_ME.txt"
+       CreateShortCut "$SMPROGRAMS\$START_MENU_FOLDER\WinBoard UnInstall.lnk" "$INSTDIR\UnInstall.exe"
+       CreateShortCut "$SMPROGRAMS\$START_MENU_FOLDER\Chess Server - chessclub.com.lnk" "$INSTDIR\winboard.exe"  "-ics -icshost chessclub.com -icshelper timestamp" "$INSTDIR\winboard.exe" 0
+       CreateShortCut "$SMPROGRAMS\$START_MENU_FOLDER\Chess Server - freechess.org.lnk" "$INSTDIR\winboard.exe"  "-ics -icshost freechess.org -icshelper timeseal" "$INSTDIR\winboard.exe" 0
+       CreateShortCut "$SMPROGRAMS\$START_MENU_FOLDER\Chess Server - Other.lnk" "$INSTDIR\winboard.exe" "-ics" "$INSTDIR\winboard.exe" 0
+       CreateShortCut "$SMPROGRAMS\$START_MENU_FOLDER\WinBoard Startup Dialog.lnk" "$INSTDIR\winboard.exe" "" "$INSTDIR\winboard.exe" 2
+       
+        !insertmacro MUI_STARTMENU_WRITE_END
+
+SectionEnd
+
+SubSection /e "Chess Engines" Engines
+
+       Section "GNU Chess 5.0" GNUChess5
+
+               SetOutPath "$INSTDIR"
+
+               File ..\book.dat
+               File ..\GNUChes5.exe
+               File ..\gnuches5.txt
+               File ..\gnuchess.dat
+               File ..\gnuchess.lan
+               File ..\gnuchess.README
+               
+               CreateDirectory "$SMPROGRAMS\$START_MENU_FOLDER\Chess Engines"
+
+                !insertmacro MUI_STARTMENU_WRITE_BEGIN Application
+
+               CreateShortCut "$SMPROGRAMS\$START_MENU_FOLDER\Chess Engines\GNU Chess 5.0 Documentation.lnk" "$INSTDIR\gnuches5.txt"
+               CreateShortCut "$SMPROGRAMS\$START_MENU_FOLDER\Chess Engines\GNU Chess 5.0.lnk" "$INSTDIR\winboard.exe" "-cp -fcp 'GNUChes5 xboard' -scp 'GNUChes5 xboard'" "$INSTDIR\winboard.exe" 2
+               
+               !insertmacro MUI_STARTMENU_WRITE_END
+
+       SectionEnd
+       
+       Section "GNU Chess 4.0" GNUChess4
+       
+                SetOutPath "$INSTDIR"
+                
+                File ..\gnuchesr.exe
+               File ..\GNUChess.exe
+               File ..\gnuchess.txt
+
+               CreateDirectory "$SMPROGRAMS\$START_MENU_FOLDER\Chess Engines"
+
+               !insertmacro MUI_STARTMENU_WRITE_BEGIN Application
+
+               CreateShortCut "$SMPROGRAMS\$START_MENU_FOLDER\Chess Engines\GNU Chess 4.0 Documentation.lnk" "$INSTDIR\gnuchess.txt"
+               CreateShortCut "$SMPROGRAMS\$START_MENU_FOLDER\Chess Engines\GNU Chess 4.0.lnk" "$INSTDIR\winboard.exe" "-cp -fcp GNUChess -scp GNUChess" "$INSTDIR\winboard.exe" 2
+               
+               !insertmacro MUI_STARTMENU_WRITE_END
+               
+         SectionEnd
+
+       Section "Crafty 19.3" Crafty
+
+               SetOutPath "$INSTDIR\Crafty"
+
+               File ..\Crafty-WinBoard\wcrafty.exe
+               File ..\Crafty-WinBoard\book.bin
+               File ..\Crafty-WinBoard\books.bin
+               File ..\Crafty-WinBoard\Crafty.rc
+               File ..\Crafty-WinBoard\crafty.doc.txt
+               
+               CreateDirectory "$SMPROGRAMS\$START_MENU_FOLDER\Chess Engines"
+               
+                !insertmacro MUI_STARTMENU_WRITE_BEGIN Application
+
+               CreateShortCut "$SMPROGRAMS\$START_MENU_FOLDER\Chess Engines\Crafty Documentation.lnk" "$INSTDIR\Crafty\crafty.doc.txt"
+               CreateShortCut "$SMPROGRAMS\$START_MENU_FOLDER\Chess Engines\Crafty 19.3.lnk" "$INSTDIR\winboard.exe" "-cp -fcp Crafty\wcrafty.exe -fd Crafty -scp Crafty\wcrafty.exe -sd Crafty" "$INSTDIR\winboard.exe" 2
+
+               !insertmacro MUI_STARTMENU_WRITE_END
+
+
+       SectionEnd
+
+SubSectionEnd
+
+
+;--------------------------------
+;Installer Functions
+Function .onInit
+
+  ;Extract InstallOptions INI files
+  !insertmacro MUI_INSTALLOPTIONS_EXTRACT "FA.ini"
+  
+FunctionEnd
+
+Function FileAssoc
+
+       !insertmacro MUI_HEADER_TEXT "Windows File Associations" "Do you want to use Winboard as your viewer for the following file types?"
+       !insertmacro MUI_INSTALLOPTIONS_DISPLAY "FA.ini"
+
+       
+       ;Read a value from an InstallOptions INI file
+
+       !insertmacro MUI_INSTALLOPTIONS_READ $INI_VALUE "FA.ini" "Field 2" "State"
+  
+       ;Display a messagebox if check box was checked
+       StrCmp $INI_VALUE "1" "" CheckFEN
+       WriteRegStr HKCR ".pgn" "" "WinBoard.PGN"
+       WriteRegStr HKCR ".pgn" "Content Type" "application/x-chess-pgn"
+       WriteRegStr HKCR "WinBoard.PGN" "" "Chess Game"
+       WriteRegStr HKCR "WinBoard.PGN\DefaultIcon" "" "$INSTDIR\WinBoard.exe,1"
+       WriteRegStr HKCR "WinBoard.PGN\Shell\Open" "" "Open"
+       WriteRegStr HKCR "WinBoard.PGN\Shell\Open\command" "" '"$INSTDIR\WinBoard.exe" -ini "$INSTDIR\WinBoard.ini" -ncp -lgf "%1"'
+       
+       CheckFEN:
+       !insertmacro MUI_INSTALLOPTIONS_READ $INI_VALUE "FA.ini" "Field 3" "State"
+  
+       ;Display a messagebox if check box was checked
+       StrCmp $INI_VALUE "1" "" Continue
+       WriteRegStr HKCR ".fen" "" "WinBoard.FEN"
+       WriteRegStr HKCR ".fen" "Content Type" "application/x-chess-fen"
+       WriteRegStr HKCR "WinBoard.FEN" "" "Chess Position"
+       WriteRegStr HKCR "WinBoard.FEN\DefaultIcon" "" "$INSTDIR\WinBoard.exe,1"
+       WriteRegStr HKCR "WinBoard.FEN\Shell\Open" "" "Open"
+       WriteRegStr HKCR "WinBoard.FEN\Shell\Open\command" "" '"$INSTDIR\WinBoard.exe" -ini "$INSTDIR\WinBoard.ini" -ncp -lpf "%1"'
+       
+       Continue:
+
+FunctionEnd
+
+;--------------------------------
+;Descriptions
+
+  ;Language strings
+
+       LangString DESC_Core ${LANG_ENGLISH} "Winboard Core Components - Executable and Help Files"
+       LangString DESC_Engines ${LANG_ENGLISH} "Chess Engines to play against using the WinBoard Interface"
+       LangString DESC_GNUChess5 ${LANG_ENGLISH} "GNU Chess 5.0 Engine"
+       LangString DESC_GNUChess4 ${LANG_ENGLISH} "GNU Chess 4.0 Engine"
+       LangString DESC_Crafty ${LANG_ENGLISH} "Crafty 19.3 Chess Engine, by Robert Hyatt"
+
+
+  ;Assign language strings to sections
+
+  !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
+       !insertmacro MUI_DESCRIPTION_TEXT ${Core} $(DESC_Core)
+       !insertmacro MUI_DESCRIPTION_TEXT ${Engines} $(DESC_Engines)
+       !insertmacro MUI_DESCRIPTION_TEXT ${GNUChess5} $(DESC_GNUChess5)
+       !insertmacro MUI_DESCRIPTION_TEXT ${GNUChess4} $(DESC_GNUChess4)
+       !insertmacro MUI_DESCRIPTION_TEXT ${Crafty} $(DESC_Crafty)
+  !insertmacro MUI_FUNCTION_DESCRIPTION_END
+
+;--------------------------------
+
+;--------------------------------
+;Uninstaller Section
+
+; Function to delete install directory if non-empty on user request
+Function un.ForceDirectoryDelete
+
+         MessageBox MB_YESNO "The uninstaller was unable to delete the directory '$INSTDIR'. This is usually$\r$\ndue to user-created files such as WinBoard.ini, or other configuration files. If$\r$\nyou wish to keep your old configuration files, select No.$\r$\n$\r$\nForce deletion of install directory and all files in it?" IDNO End
+         
+         RMDir /r "$INSTDIR"
+         
+         End:
+
+FunctionEnd
+
+
+Section "Uninstall"
+
+        Delete "$INSTDIR\bughouse.bat"
+       Delete "$INSTDIR\ChangeLog"
+       Delete "$INSTDIR\COPYING"
+       Delete "$INSTDIR\COPYRIGHT"
+       Delete "$INSTDIR\cygncurses7.dll"
+       Delete "$INSTDIR\cygreadline5.dll"
+       Delete "$INSTDIR\cygwin1.dll"
+       Delete "$INSTDIR\FAQ.html"
+       Delete "$INSTDIR\kk13.pgn"
+       Delete "$INSTDIR\NEWS"
+       Delete "$INSTDIR\READ_ME.txt"
+       Delete "$INSTDIR\RJF60.pgn"
+       Delete "$INSTDIR\timeseal.exe"
+       Delete "$INSTDIR\timestamp.exe"
+       Delete "$INSTDIR\winboard.exe"
+       Delete "$INSTDIR\winboard.hlp"
+       Delete "$INSTDIR\zippy.lines"
+       Delete "$INSTDIR\zippy.README"
+        Delete "$INSTDIR\book.dat"
+       Delete "$INSTDIR\GNUChes5.exe"
+       Delete "$INSTDIR\gnuches5.txt"
+       Delete "$INSTDIR\gnuchess.dat"
+       Delete "$INSTDIR\gnuchess.lan"
+       Delete "$INSTDIR\gnuchess.README"
+        Delete "$INSTDIR\gnuchesr.exe"
+       Delete "$INSTDIR\GNUChess.exe"
+       Delete "$INSTDIR\gnuchess.txt"
+       Delete "$INSTDIR\UnInstall.exe"
+       Delete "$INSTDIR\Crafty\wcrafty.exe"
+       Delete "$INSTDIR\Crafty\book.bin"
+       Delete "$INSTDIR\Crafty\books.bin"
+       Delete "$INSTDIR\Crafty\Crafty.rc"
+       Delete "$INSTDIR\Crafty\crafty.doc.txt"
+       RMDir "$INSTDIR\Crafty"
+       RMDir "$INSTDIR"
+
+       
+       !insertmacro MUI_STARTMENU_GETFOLDER Application $MUI_TEMP
+       
+       RMDir /r "$SMPROGRAMS\$MUI_TEMP"
+       
+       ReadRegStr $1 HKCR ".pgn" ""
+       StrCmp $1 "WinBoard.PGN" "" DelFEN
+       ReadRegStr $1 HKCR "WinBoard.PGN\Shell\Open\command" ""
+       StrCmp $1 '"$INSTDIR\WinBoard.exe" -ini "$INSTDIR\WinBoard.ini" -ncp -lgf "%1"' "" DelFEN
+       DeleteRegKey HKCR ".pgn"
+       DeleteRegKey HKCR "WinBoard.PGN"
+       
+       DelFEN:
+       
+       ReadRegStr $1 HKCR ".fen" ""
+       StrCmp $1 "WinBoard.FEN" "" ContDelFEN
+       ReadRegStr $1 HKCR "WinBoard.FEN\Shell\Open\command" ""
+       StrCmp $1 '"$INSTDIR\WinBoard.exe" -ini "$INSTDIR\WinBoard.ini" -ncp -lpf "%1"' "" ContDelFEN
+       DeleteRegKey HKCR ".fen"
+       DeleteRegKey HKCR "WinBoard.FEN"
+       
+       ContDelFEN:
+       
+       DeleteRegKey HKCU "Software\WinBoard"
+       
+       
+       IfFileExists "$INSTDIR\*.*" GoDirDel Continue
+
+       GoDirDel:
+       Call un.ForceDirectoryDelete
+
+       Continue:
+
+
+SectionEnd
diff --git a/installer/WinBoard-4.2.7/RePackage/knight.ico b/installer/WinBoard-4.2.7/RePackage/knight.ico
new file mode 100644 (file)
index 0000000..104eb73
Binary files /dev/null and b/installer/WinBoard-4.2.7/RePackage/knight.ico differ
diff --git a/installer/WinBoard-4.2.7/RePackage/modern-uninstall.ico b/installer/WinBoard-4.2.7/RePackage/modern-uninstall.ico
new file mode 100644 (file)
index 0000000..6c7410c
Binary files /dev/null and b/installer/WinBoard-4.2.7/RePackage/modern-uninstall.ico differ
diff --git a/installer/WinBoard-4.2.7/RePackage/wc_uninst.ico b/installer/WinBoard-4.2.7/RePackage/wc_uninst.ico
new file mode 100644 (file)
index 0000000..1be63d2
Binary files /dev/null and b/installer/WinBoard-4.2.7/RePackage/wc_uninst.ico differ
diff --git a/installer/WinBoard-4.2.7/RePackage/welcome_chess.bmp b/installer/WinBoard-4.2.7/RePackage/welcome_chess.bmp
new file mode 100644 (file)
index 0000000..da71667
Binary files /dev/null and b/installer/WinBoard-4.2.7/RePackage/welcome_chess.bmp differ
diff --git a/installer/WinBoard-4.2.7/book.dat b/installer/WinBoard-4.2.7/book.dat
new file mode 100644 (file)
index 0000000..e570ad9
Binary files /dev/null and b/installer/WinBoard-4.2.7/book.dat differ
diff --git a/installer/WinBoard-4.2.7/bughouse.bat b/installer/WinBoard-4.2.7/bughouse.bat
new file mode 100644 (file)
index 0000000..23ec04a
--- /dev/null
@@ -0,0 +1,14 @@
+@echo off
+REM  Usage: bughouse -icshost chessclub.com -icshelper timestamp
+REM  or:    bughouse -icshost freechess.org -icshelper timeseal
+REM
+REM  This batch file starts up two copies of WinBoard for use in playing
+REM  bughouse.  Each one has its own settings file and ICS logon file.
+REM  Arrange the windows on the screen to your taste, then do Save
+REM  Settings Now in both windows.  You can create the logon files
+REM  bh1ics.ini and bh2ics.ini if you like; have one of them log in
+REM  as you and the other as a guest.
+REM
+winboard -ics -x 0 -y 0 -icsX 30 -icsY 30 -settingsFile bh1stg.ini -icslogon bh1ics.ini %1 %2 %3 %4 %5 %6 %7 %8 %9
+winboard -ics -x 120 -y 120 -icsX 150 -icsY 150 -settingsFile bh2stg.ini -icslogon bh2ics.ini %1 %2 %3 %4 %5 %6 %7 %8 %9
+
diff --git a/installer/WinBoard-4.2.7/cygncurses7.dll b/installer/WinBoard-4.2.7/cygncurses7.dll
new file mode 100644 (file)
index 0000000..62b8070
Binary files /dev/null and b/installer/WinBoard-4.2.7/cygncurses7.dll differ
diff --git a/installer/WinBoard-4.2.7/cygreadline5.dll b/installer/WinBoard-4.2.7/cygreadline5.dll
new file mode 100644 (file)
index 0000000..8f55b1e
Binary files /dev/null and b/installer/WinBoard-4.2.7/cygreadline5.dll differ
diff --git a/installer/WinBoard-4.2.7/cygwin1.dll b/installer/WinBoard-4.2.7/cygwin1.dll
new file mode 100644 (file)
index 0000000..78210c9
Binary files /dev/null and b/installer/WinBoard-4.2.7/cygwin1.dll differ
diff --git a/installer/WinBoard-4.2.7/gnuches5.txt b/installer/WinBoard-4.2.7/gnuches5.txt
new file mode 100644 (file)
index 0000000..c2f39f7
--- /dev/null
@@ -0,0 +1,512 @@
+README
+GNU CHESS 5
+by Stuart Cracraft <cracraft@gnu.org>
+copyright (c) 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993
+1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
+Modified Simon Waters <simon@wretched.demon.co.uk> 2001
+Modified Simon Waters <simon@wretched.demon.co.uk> 2003
+
+IMPORTANT: Please send all updates to Simon at the above address.
+
+Table of Contents
+
+  Introduction
+  Who We Are
+  Data Structures
+  Move Generator
+  Search
+  Evaluation
+  Book
+  Hash Table
+  Auxillary File Formats (PGN, EPD)
+  Universal Board
+  Caveats
+  Compilers
+  Internet
+  Xboard/Winboard
+  Command List
+
+
+INTRODUCTION
+
+Welcome to the GNU CHESS 5 README. This is somewhat different than 
+a normal readme. You might consider this a manual. We've always found
+multiple documents confusing, overlapping and sometimes contradictory
+as far as software documentation goes. By putting it all together in
+one place we hope to avoid these traditional inadequacies and be able
+to maintain a single document. If you add documentation, add it to
+this document only.
+
+GNU Chess 5 is the new version of GNU Chess. The goal of creating this
+new version was to eliminate perceived problems with past versions, the
+major one being spaghetti-code that was extremely poorly documented, but
+another being antiquated data structures and especially the ignominous
+linked list. Another good reason was to have more standard file formats
+for game positions and game listings.
+
+
+WHO WE ARE
+
+We are the GNU Chess developers and you may reach us at 
+
+       bug-gnu-chess@gnu.org
+
+We are indebted to our sponsor, the Free Software Foundation
+whose web page is:
+
+       http://www.gnu.org
+
+and which also serves as our software depository for new versions of
+GNU and GNU Chess.
+
+We also have a Usenet bulletin board, gnu.chess. Feel free to post and
+support. Please become a developer and contribute your time and coding skill
+to GNU Chess. Make a donation of your time and money.
+
+But, as developers we like to develop our own ideas. Thus, if you have
+an idea check to see that no one else is working on it (posting on the
+above bulletin board or sending an email should be sufficient to find
+if someone is working on the idea and if you can collaborate with
+them.)
+
+We don't like messages asking us to implement features. Everybody
+has a list a mile long. Instead, contribute by writing code or pointing
+out very clearly a bug. To report a bug, tell us the version number
+of the program ("./gnuchess --version").
+
+The code is provided for the purpose of encouraging you to do the
+programming.  If you lack the programming skills to do so, try
+dabbling in it. You might surprise yourself.
+
+
+DATA STRUCTURES
+
+The primary data structure of GNU Chess is the bitboard. A bitboard
+is a 64-bit GNU C long long. It represents characteristics of a position.
+For example, 12 bitboards are sufficient to describe the whereabouts
+of all the pieces for both sides, i.e.
+
+       BitBoard board.b[2][6];
+
+So for example with a knight equal to 2 and white equal to 0 all the
+knights are located by the reference
+
+       #define white 0
+       #define knight 2
+
+       ... board.b[white][knight] ...
+
+Testing whether a particular square has a knight on it could be done
+with 
+
+       if (BitBoard[B1] & board.b[white][knight]) { ... }
+
+Another set of move arrays is helpful for calculating the simple moves
+of a knight or a king
+
+       MoveArray[knight or king][sq]
+
+This returns a bitmap of the squares from which a knight or king
+could move from the square sq. Squares are based at 0 for a1 (White's
+queen's rook 1) and numbered left to right up until 63 for h8 (Black's
+king's rook 1).
+
+Another basic data structure is the board. It is defined in common.h
+as the Board typedef:
+
+  typedef struct 
+  {
+     BitBoard b[2][7];         /* Pieces by side (0 - white, 1 black
+                                  by piece (1 - pawn ... 6 - king */
+     BitBoard friend[2];       /* Friendly (this side's) pieces */
+     BitBoard blocker;         /* Enemy pieces */
+     BitBoard blockerr90;
+     BitBoard blockerr45;
+     BitBoard blockerr315;
+     short ep;                 /* Location of en passant square */
+     short flag;               /* Relevant flags relating to castle privs */
+     short side;               /* Color of side on move 0 - white 1 - black */
+     short material[2];                /* Total material by side not inc. king */
+     short pmaterial[2];       /* Total pawn material by side not inc. king */
+     short castled[2];         /* True (1) if side is castled */
+     short king[2];            /* Location of king 0 - a1 .. 63 - h8 */
+  } Board; 
+
+Basic data structure typedefs are defined in common.h and allocated in
+main.c for the most part. Please read and understand those files. The
+best way to understand data structures is to add new evaluation terms.
+
+MOVE GENERATOR
+
+This is a rotated bit-board method which is considered state-of-the-art
+currently.
+
+SEARCH
+
+Based on Professor Tony Marsland's modification to alpha-beta minimax,
+called Principal Variation Search (PVS), this algorithm performs credibly.
+
+EVALUATION
+
+Evaluation in this version is quite a bit different than before.
+Earlier versions used piece/square tables with some end-leaf
+evaluation (but primary pc/sq tables). These are tables filled with
+values regarding the importance of having pieces on particular squares.
+It was filled once, at the beginning of the search.
+
+The drawback of pc/sq tables is that the information is typically of
+less and less importance the deeper a program searches because the
+board changes so much. With computers getting faster and faster, deeper
+and deeper searches are possible and so the pc/sq tables can provide
+misleading direction to the program, resulting in anti-positional moves.
+
+More recently there has been a return by some to what we espouse here:
+full end-leaf evaluation. Further, we use bitboards (64-bit quantities)
+to represents characteristics of the board. This harkens back, ironically
+to the early days of computer chess when giant number-crunching machines
+back in the 60's used bitmaps to describe positions.
+
+Bitboards in this version of GNU are defined using the "BitBoard" typedef
+defined in common.h. main.c contains most of the bitboards and these
+are accessed and used throughout the program and particularly by
+the move generator and the evaluator.
+
+The evaluator in eval.c consists of a series of scoring routines like
+ScoreP (), ScoreN (), ScoreB (), corresponding to the piece being
+scored. The routine evaluates all pieces of that type (P - pawn,
+N - knight, B - bishop, etc.) on the current board and returns a
+score.
+
+Typically a loop is used of the form
+
+    short sq;  /* Location of the piece of this type */
+    short s;   /* Score value for all pieces
+    BitBoard b;        /* Stores the bitboard representing location of the piece */
+    s = 0;     /* Score starts out as zero */
+    b = board.b[side][knight];
+    while (b) {
+      sq = leadz(b);
+      CLEARBIT (b, sq);
+      if (piece on sq has some property)
+       s += SOME_BONUS_OR_PENALTY;    /* defined in eval.h */
+    }
+    return(s);
+
+As you can see, this routine locates each piece in the 64-bit map
+where the corresponding square of the 64 is set to 1 meaning a piece
+is there. Hence for example in the opening position, board.b[white][bishop]
+would have the 3rd and 7th low-order bits set corresponding to the original
+locations of bishops in a game on C1 and F1. Likewise the values
+BitPosArray[C1] and BitPosArray[F1] can be used to return 64-bit
+quantities for checking specific matches as in
+
+   if (BitPosArray[A1] & board.b[side][bishop])
+       s += SOME_VERY_NEGATIVE_PENALTY_FOR_BISHOP_IN_A1_CORNER
+
+Writing evaluation code comes very naturally using these methods. Try
+to avoid too many specific square checks as those are expensive. Ideas
+as shown in the CTL() routine can be used to check for piece placement
+on specific squares being advantageous or disadvantageous.
+
+Primary evaluation is done with Evaluate(). Certain specifics are
+calculated which are deemed very important such as king evaluation
+and pawn evaluation. Then a "lazy evaluation" scenario is checked
+for which can save time. Otherwise other pieces are also evaluated.
+
+Very important for evaluation is the ability to see what board you
+are evaluating. Typically this should be sufficient when you add
+the new term:
+
+       /* ... new logic ... */
+       {
+         s += SOME_NEW_BONUS (define in eval.h)
+         printf("The condition is triggered:\n");
+         ShowBoard ();
+         getchar();
+       }
+
+This lets you see the board at the point the condition is triggered
+which adds the bonus or penalty to the evaluation score.
+
+
+BOOK
+
+The opening book is implemented as a simple binary file consisting of
+a set of sequential records of struct hashtype as defined in the module
+book.c. This data structure is simply two part, a 64-bit HashType (see
+common.h) and a 32-bit score. 
+
+The binary book stored in book.dat is compiled from the file book.pgn
+using the command "book add book.pgn" into a sequential set of binary 
+records in the format as described above. book.pgn is simply a set of 
+game records in portable game notation format.  A set of master games 
+may be used or specific openings programmed this way for a user-changeable
+opening book.
+
+HASH TABLE
+
+The hash table is simply an area of memory where information about
+positions is stored. In this version of the program there are two
+types of hash tables: general and pawn. 
+
+The general hash table size is controlled by the variable HASHSLOTS
+as defined in common.h. Likewise the pawn hash table size is controlled
+by the variable PAWNSLOTS in common.h.
+
+The number of hashtable slots can be controlled from the command
+line (Type "gnuchess -help" for details), or via the interactive
+hashsize command.
+
+Typically middle-game searches are sped up by 25%-50% by the general
+hash table and by much more in endgames where there are few pieces
+(because so many of the positions turn out to be cached already in
+the hash table.)
+
+Pawn evaluation is traditionally expensive because there are so many 
+things to evaluate. The pawn hash table remembers all the different
+pawn structures in the search. Typically pawn structure evaluation
+(without reference to pieces) may be calculated by simple table
+lookup this way 90-99% of the time. Hence, any amount of pawn logic
+that is pure-pawn and not related to pieces may be added without guilt.
+On the other hand, pawn structure that relates to pieces must be
+recalculated for every position. See ScoreP() in eval.c
+
+
+AUXILLARY FILE FORMATS
+
+.dat - binary book format, simply a 64-bit position hash and a 32-bit score
+.pgn - game listing like 1. e4 e5 2. Nf3 etc.
+.epd - epd-style format using FEN notation. See tests subdirectory for example.
+log.nnn - record of an entire game from computer's viewpoint (thinking, etc.)
+game.nnn - record of an entire game, similar to .pgn but auto-generated
+
+The .dat file format is a simple binary format for the compiled book
+which is read by the program when it is using book. See the section BOOK
+for more detail.
+
+EPD and PGN require little introduction. These are the uniformly accepted
+standards for position recording and game recording.
+
+Note that log.nnn and game.nnn files are written at the end of a game
+when you use the "name" command to give the computer your name. It is
+highly recommended to do this since the resulting two files that match
+in a monotonically-increasing extension numbered suffix may be used for
+reporting bugs and keeping track of your games.
+
+
+COMPILERS
+
+  We like GNU C in all its various forms. For Unix and Linux, use GNU C.
+
+  For Microsoft Windows platforms we compile and test using Cygwin,
+  which is a port of many GNU packages, including GCC.
+
+  Cygwin may require specific run time DLL's to provide the interface, 
+  these should be provided with any executable you receive.
+
+  Whilst GCC is the supported compiler, a key goal is portability. If
+  you experience problems compiling GNU Chess with a modern C compiler
+  please let the developers know.
+
+INTERNET
+
+  GNU CHESS 5 has been tested substantially on the Free Internet Chess
+  Servers (freechess.org) with Xboard (See Zippy documentation in the
+  Xboard/Winboard distribution http://www.tim-mann.org/).
+
+  GNU Chess 5.06 and later should also operate with icsDrone. Testing
+  5.06 with icsDrone 1.5.0 showed no immediate issues.
+
+XBOARD/WINBOARD
+
+  Running the program with the "--xboard" command line parameter sets it
+  to produce output acceptable to and accept input suitable for xboard
+  and winboard, the graphical display front-ends with mouse interface.
+
+  For historical reasons the option "xboard" does not need to be 
+  preceeded by "--", however we would encourage the new syntax.
+
+COMMAND LIST
+
+  ^C
+       Typically the interrupt key stops a search in progress,
+       makes the move last considered best and returns to the
+       command prompt
+
+  quit
+       Quit the program.
+  exit
+       In analysis mode this stops analysis, otherwise it quits the program.
+
+  help
+       Produces a help blurb corresponding to this list of commands.
+
+  usage
+       Produce blurb on command line options.
+       (Same as "gnuchess --help")
+
+  book
+       add - compiles book.dat from book.pgn
+       on - enables use of book
+       off - disables use of book
+       best - play best move from book
+       worst - play worst move from book
+       random - play any move from book
+       
+       prefer (default) - choose a good move from book
+       (Method subject to variation)
+
+  version
+       prints out the version of this program
+       (Same as "gnuchess --version")
+
+  pgnsave FILENAME
+       saves the game so far to the file from memory
+
+  pgnload FILENAME
+       loads the game in the file into memory
+
+  force
+  manual
+       Makes the program stop moving. You may now enter moves
+       to reach some position in the future.
+       (Same as "gnuchess --manual")
+   
+  white
+       Program plays black, set white to move.
+
+  black
+       Program plays white, set black to move.
+
+       (White and black commands are mainly for icsDrone
+        and will cause the current en-passant capture
+        square to be forgotten).
+
+  go
+       Computer takes whichever side is on move and begins its
+       thinking immediately
+
+  easy 
+       Disables thinking on opponent's time
+       (Same as "gnuchess --easy").
+
+  hard
+       Enables thinking on opponent's time
+
+  post
+       Arranges for verbose thinking output showing variation, score,
+       time, depth, etc.
+
+       If pondering (see hard) is on, the program will output
+       it's thinking whilst the opponent is thinking.
+
+       (Also "gnuchess --post")
+
+  nopost
+       Turns off verbose thinking output
+
+  name NAME
+       Lets you input your name. Also writes the log.nnn and a
+       corresponding game.nnn file. For details please see
+       auxillary file format sections.
+
+  result
+       Mostly used by Internet Chess server.
+
+  activate
+
+       This command reactivates a game that has been terminated automatically
+       due to checkmate or no more time on the clock. However, it does not
+       alter those conditions. You would have to undo a move or two or
+       add time to the clock with level or time in that case.
+
+  rating COMPUTERRATING OPPONENTRATING
+       Inputs the estimated rating for computer and for its opponent
+
+  new
+       Sets up new game (i.e. positions in original positions)
+
+  time
+       Inputs time left in game for computer in hundredths of a second.
+       Mostly used by Internet Chess server.
+
+  otim (NOT IMPLEMENTED)
+       Mostly used by Internet Chess server.
+
+  random (NOT IMPLEMENTED)
+       Randomizes play by perturbing the evaluation score slightly.
+       The degree of perturbation is adjustable.
+
+  hash
+       on - enables using the memory hash table to speed search
+       off - disables the memory hash table
+
+  hashsize N
+       Sets the hash table to permit storage of N positions
+       N is rounded down to nearest power of 2.
+       (Also "gnuchess --hashsize=N")
+
+  null
+       on - enables using the null move heuristic to speed search
+       off - disables using the null move heuristic
+
+  xboard
+       on - enables use of xboard/winboard
+       off - disables use of xboard/winboard
+       (Also "gnuchess --xboard")
+
+  depth N
+       Sets the program to look N ply (half-moves) deep for every
+       search it performs. If there is a checkmate or other condition
+       that does not allow that depth, then it will not be 
+
+  level MOVES MINUTES INCREMENT
+       Sets time control to be MOVES in MINUTES with each move giving
+       an INCREMENT (in seconds, i.e. Fischer-style clock).
+
+  load
+  epdload
+       Loads a position in EPD format from disk into memory.
+
+  save
+  epdsave
+       Saves game position into EPD format from memory to disk.
+
+  switch
+       Switches side to move
+
+  solve FILENAME
+  solveepd FILENAME
+       Solves the positions in FILENAME
+
+  remove
+       Backs up two moves in game history
+
+  undo
+       Backs up one move in game history
+
+  show
+       board - displays the current board
+       time - displays the time settings
+       moves - shows all moves using one call to routine
+       escape - shows moves that escape from check using one call to routine
+       noncapture - shows non-capture moves
+       capture - shows capture moves
+       eval [or score] - shows the evaluation per piece and overall
+       game - shows moves in game history
+       pin - shows pinned pieces
+
+  test
+       movelist - reads in an epd file and shows legal moves for its entries
+       capture - reads in an epd file and shows legal captures for its entries
+       movegenspeed - tests speed of move generator
+       capturespeed - tests speed of capture move generator
+       eval - reads in an epd file and shows evaluation for its entries
+       evalspeed tests speed of the evaluator
+
+  analyze
+       Switches program into analysis mode, this is primarily intended for
+       communicating analysis to an external interface using the Xboard 
+       chess engine protocol. It enables "force", "post", and
+       "hard", at the same time, whilst altering the
+       output format of post to conform with the engine protocol.      
diff --git a/installer/WinBoard-4.2.7/gnuchesr.exe b/installer/WinBoard-4.2.7/gnuchesr.exe
new file mode 100644 (file)
index 0000000..0750fd8
Binary files /dev/null and b/installer/WinBoard-4.2.7/gnuchesr.exe differ
diff --git a/installer/WinBoard-4.2.7/gnuchess.README b/installer/WinBoard-4.2.7/gnuchess.README
new file mode 100644 (file)
index 0000000..e479192
--- /dev/null
@@ -0,0 +1,13 @@
+The gnuchess.exe and gnuchesr.exe included here are compiled from
+unmodified GNU Chess 4.0.80 sources, available on the Internet as
+http://tim-mann.org//gnuchess/gnuchess-4.0.pl80.tar.gz. To recompile,
+get the source and unpack it using GNU gzip and GNU tar, then
+recompile with Microsoft Visual C++ by typing the command "nmake /f
+Makefile.nt" to an MSDOS Prompt box on Windows 95 or Windows NT.  If
+you have a different compiler, you are on your own; sorry.
+Afterwards, rename gnuchesx.exe to gnuchess.exe.
+
+The gnuches5.exe included here is compiled from unmodified GNU Chess 5.07
+sources, available as ftp://ftp.gnu.org/gnu/chess/gnuchess-5.07.tar.gz.  
+To recompile, get the free Cygwin tools from www.cygwin.org and use
+them to unpack the source (gzip and tar) and compile.
diff --git a/installer/WinBoard-4.2.7/gnuchess.dat b/installer/WinBoard-4.2.7/gnuchess.dat
new file mode 100644 (file)
index 0000000..54867f7
Binary files /dev/null and b/installer/WinBoard-4.2.7/gnuchess.dat differ
diff --git a/installer/WinBoard-4.2.7/gnuchess.lan b/installer/WinBoard-4.2.7/gnuchess.lan
new file mode 100644 (file)
index 0000000..f80edaa
--- /dev/null
@@ -0,0 +1,690 @@
+001:eng:{ pnbrqk}
+001:ger:{ bsltdk}
+001:swe:{ bsltdk}
+002:eng:{ PNBRQK}
+002:ger:{ BSLTDK}
+002:swe:{ BSLTDK}
+003:eng:{abcdefgh}
+003:ger:{abcdefgh}
+003:swe:{abcdefgh}
+004:eng:{12345678}
+004:ger:{12345678}
+004:swe:{12345678}
+005:eng:{o-o}
+005:ger:{o-o}
+005:swe:{o-o}
+006:eng:{o-o-o}
+006:ger:{o-o-o}
+006:swe:{o-o-o}
+007:eng:{0-0}
+007:ger:{0-0}
+007:swe:{0-0}
+008:eng:{0-0-0}
+008:ger:{0-0-0}
+008:swe:{0-0-0}
+009:eng:{wWbB}
+009:ger:{wWsS}
+009:swe:{vVsS}
+010:eng:{       score  depth   nodes  time         }
+010:ger:{       Bewert Tiefe   Posit  Zeit         }
+010:swe:{       eval   djup    noder  tid         }
+011:eng:{       score  depth   nodes  time\n}
+011:ger:{       Bewert Tiefe   Posit  Zeit\n}
+011:swe:{       eval   djup    noder  tid\n}
+012:eng:{     }
+012:ger:{     }
+012:swe:{     }
+013:eng:{   }
+013:ger:{   }
+013:swe:{   }
+014:eng:{  %s\n}
+014:ger:{  %s\n}
+014:swe:{  %s\n}
+015:eng:{  a    b    c    d    e    f    g    h}
+015:ger:{  a    b    c    d    e    f    g    h}
+015:swe:{  a    b    c    d    e    f    g    h}
+016:eng:{  h    g    f    e    d    c    b    a}
+016:ger:{  h    g    f    e    d    c    b    a}
+016:swe:{  h    g    f    e    d    c    b    a}
+017:eng:{ -}
+017:ger:{ -}
+017:swe:{ -}
+018:eng:{nocache}
+018:ger:{nocache}
+018:swe:{nocache}
+019:eng:{nopost}
+019:ger:{nohaupt}
+019:swe:{novariant}
+020:eng:{nott}
+020:ger:{nott}
+020:swe:{nott}
+021:eng:{noft}
+021:ger:{noft}
+021:swe:{noft}
+022:eng:{bk}
+022:ger:{bk}
+022:swe:{bk}
+023:eng:{ }
+023:ger:{ }
+023:swe:{ }
+024:eng:{ }
+024:ger:{ }
+024:swe:{ }
+025:eng:{ }
+025:ger:{ }
+025:swe:{ }
+026:eng:{ }
+026:ger:{ }
+026:swe:{ }
+027:eng:{ }
+027:ger:{ }
+027:swe:{ }
+028:eng:{#   Clear board\n}
+028:ger:{#   Loesche Brett\n}
+028:swe:{#   Rensa braedet\n}
+029:eng:{.   Exit to main\n}
+029:ger:{.   Zurueck ins Spiel\n}
+029:swe:{.   Tillbaka till spelet\n}
+030:eng:{/usr/games/lib/gnuchess.book}
+030:ger:{/usr/games/lib/gnuchess.book}
+030:swe:{/usr/games/lib/gnuchess.book}
+031:eng:{Abort? }
+031:ger:{Abbruch? }
+031:swe:{Avbryta? }
+032:eng:{Ambiguous Move!}
+032:ger:{Zug nicht eindeutig!}
+032:swe:{Tvetydigt drag!}
+033:eng:{Awindow}
+033:ger:{Awindow}
+033:swe:{Awindow}
+034:eng:{BAwindow= }
+034:ger:{BAwindow= }
+034:swe:{BAwindow= }
+035:eng:{BBwindow= }
+035:ger:{BBwindow= }
+035:swe:{BBwindow= }
+036:eng:{Beep:     %-12s Transposition file: %s\n}
+036:ger:{Beep:     %-12s Transposition file: %s\n}
+036:swe:{Beep:     %-12s Transposition file: %s\n}
+037:eng:{Black %s White %s %d eps %d\n}
+037:ger:{Schwarz %s Weiss %s %d eps %d\n}
+037:swe:{Svart %s Vit %s %d\n}
+038:eng:{Bwindow: }
+038:ger:{Bwindow: }
+038:swe:{Bwindow: }
+039:eng:{Bwindow}
+039:ger:{Bwindow}
+039:swe:{Bwindow}
+040:eng:{CHESS command summary\n}
+040:ger:{CHESS Befehlsuebersicht\n}
+040:swe:{CHESS kommandon\n}
+041:eng:{CHESS}
+041:ger:{CHESS}
+041:swe:{CHESS}
+042:eng:{Castled White %s Black %s\n}
+042:ger:{Rochade Weiss %s Schwarz %s\n}
+042:swe:{Vit Rockad %s Svart %s\n}
+043:eng:{Chess\n}
+043:ger:{Schach\n}
+043:swe:{Schack\n}
+044:eng:{Computer mates!}
+044:ger:{Computer setzt matt!}
+044:swe:{Datorn mattar!}
+045:eng:{Computer will soon mate!}
+045:ger:{Computer setzt bald matt!}
+045:swe:{Datorn mattar snart!}
+046:eng:{Computer: %-12s Opponent:            %s\n}
+046:ger:{Computer: %-12s Gegner:            %s\n}
+046:swe:{Datorn: %-12s Motstaandare:            %s\n}
+047:eng:{Computer: %s}
+047:ger:{Computer: %s}
+047:swe:{Datorn: %s}
+048:eng:{Could not open file}
+048:ger:{Konnte File nicht oeffnen}
+048:swe:{Kunde inte oeppna filen}
+049:eng:{Counting transposition file entries, wait!\n}
+049:ger:{Zaehle transposition File Eintraege, warten!\n}
+049:swe:{Raeknar posterna i transpositionsfilen, vaenta!\n}
+050:eng:{Create failed for %s\n}
+050:ger:{Erzeugung misslang wegen %s\n}
+050:swe:{Skapa misslickades foer %s\n}
+051:eng:{Depth:    %-12d Response time:       %d sec\n}
+051:ger:{Tiefe:    %-12d Antwortzeit:         %d Sek\n}
+051:swe:{Djup:     %-12d Svarstid:            %d sek\n}
+052:eng:{Depth: %d}
+052:ger:{Tiefe: %d}
+052:swe:{Djup: %d}
+053:eng:{Depth= %d%c }
+053:ger:{Tiefe= %d%c }
+053:swe:{Djup= %d%c }
+054:eng:{Draw %s\n}
+054:ger:{Zug %s\n}
+054:swe:{Drag %s\n}
+055:eng:{DrawPiece:  color[sq] err}
+055:ger:{DrawPiece:  color[sq] err}
+055:swe:{DrawPiece:  color[sq] err}
+056:eng:{Drawn game! %s}
+056:ger:{Spiel unentschieden! %s}
+056:swe:{Remi! %s}
+057:eng:{Drawn game!\n}
+057:ger:{Spiel unentschieden!\n}
+057:swe:{Remi!\n}
+058:eng:{Drawn game!}
+058:ger:{Spiel unentschieden!}
+058:swe:{Remi!}
+059:eng:{Easy mode: %s}
+059:ger:{Leichter Mode: %s}
+059:swe:{Laett: %s}
+060:eng:{Editing: %s}
+060:ger:{Editieren: %s}
+060:swe:{Editering: %s}
+061:eng:{Enter [moves] minutes[:sec] [increment][+]: }
+061:ger:{Eingabe [Zuege] Minuten[:Sek] [Inkrement][+]: }
+061:swe:{Ange #drag #minuter: }
+062:eng:{Enter Level: }
+062:ger:{Eingabe Level: }
+062:swe:{Ange Nivaa: }
+063:eng:{Enter file name: }
+063:ger:{Eingabe Filename: }
+063:swe:{Ange Filnamn: }
+064:eng:{Enter piece & location: }
+064:ger:{Eingabe Figur & Ort: }
+064:swe:{Ange pjaes & ruta: }
+065:eng:{Enter piece: }
+065:ger:{Eingabe Figur: }
+065:swe:{Ange pjaes: }
+066:eng:{Filling transposition file, wait!\n}
+066:ger:{Erzeuge Transposition File, warten!\n}
+066:swe:{Fyller transpositionsfilen, vaenta!\n}
+067:eng:{GNU Chess display (MS-DOS, Mar 90)}
+067:ger:{GNU Schach display (MS-DOS, Mar 90)}
+067:swe:{GNU Schack display (MS-DOS, Mar 90)}
+068:eng:{GNU Chess display (Nov 89)}
+068:ger:{GNU Schach display (Nov 89)}
+068:swe:{GNU Schack display (Nov 89)}
+069:eng:{GNU Chess}
+069:ger:{GNU Schach}
+069:swe:{GNU Schack}
+070:eng:{Game saved}
+070:ger:{Spiel abgespeichert}
+070:swe:{Partiet sparat}
+071:eng:{Hin/Hout/Tcol/Coll/Fin/Fout = %ld/%ld/%ld/%ld/%ld/%ld\n}
+071:ger:{Hin/Hout/Tcol/Coll/Fin/Fout = %ld/%ld/%ld/%ld/%ld/%ld\n}
+071:swe:{Hin/Hout/Tcol/Coll/Fin/Fout = %ld/%ld/%ld/%ld/%ld/%ld\n}
+072:eng:{Hint: %s\n}
+072:ger:{Hinweis: %s\n}
+072:swe:{Foerslag: %s\n}
+073:eng:{Hit <RET> to return: }
+073:ger:{Druecke <RET> fuer weiter: }
+073:swe:{Tillbaks med <RET>: }
+074:eng:{Human}
+074:ger:{Mensch  }
+074:swe:{Maenniska  }
+075:eng:{Illegal move (no matching move)%s\n}
+075:ger:{ungueltiger Zug (kein passender Zug)%s\n}
+075:swe:{Felaktigt drag (inget matchande drag)%s\n}
+076:eng:{Illegal move (no matching move)}
+076:ger:{ungueltiger Zug (kein passender Zug)}
+076:swe:{Felaktigt drag (inget matchande drag)}
+077:eng:{Illegal move..(in check)}
+077:ger:{ungueltiger Zug..(wird geprueft)}
+077:swe:{Otillaatet drag..(i schack)}
+078:eng:{Illegal move\n}
+078:ger:{ungueltiger Zug\n}
+078:swe:{Otillaatet drag\n}
+079:eng:{Level: %ld}
+079:ger:{Level: %ld}
+079:swe:{Level: %ld}
+080:eng:{Max Moves}
+080:ger:{Max Zuege}
+080:swe:{Max Drag}
+081:eng:{Max Tree= %5d}
+081:ger:{Max Verzw= %5d}
+081:swe:{Max Traed= %5d}
+082:eng:{MoveLimit= }
+082:ger:{Zug Limit= }
+082:swe:{Draggraens= }
+083:eng:{My move is: %s\n}
+083:ger:{Mein Zug ist: %s\n}
+083:swe:{Mitt drag aer: %s\n}
+084:eng:{My move is: %s}
+084:ger:{Mein Zug ist: %s}
+084:swe:{Mitt drag aer: %s}
+085:eng:{Testing Eval Speed}
+085:ger:{Teste Auswert.geschw.}
+085:swe:{Testar Evalueringen}
+086:eng:{Nf3       move knight to f3       cache      turn %s\n}
+086:ger:{Lf3       ziehe Laeufer nach f3   cache      schalte %s\n}
+086:swe:{Lf3       dra loeparen till f3    pip       tur %s\n}
+087:eng:{No moves}
+087:ger:{keine Zuege}
+087:swe:{Inga drag}
+088:eng:{No pieces}
+088:ger:{keine Figur}
+088:swe:{Inga pjaeser}
+089:eng:{Gen %ld Node %ld Tree %d Eval %ld Rate %ld EC %d/%d RS hi %ld lo %ld \n}
+089:ger:{Zug %ld Posit %ld Verz %d Eval %ld Rate %ld EC %d/%d RS hi %ld lo %ld \n}
+089:swe:{Drag %ld Nod %ld Traed %d Eval %ld Rate %ld EC %d/%d RS hi %ld lo %ld \n}
+090:eng:{Nodes= %8ld, Nodes/Sec= %5ld}
+090:ger:{Posit= %8ld, Posit/Sek= %5ld}
+090:swe:{Noder= %8ld, Noder/Sek= %5ld}
+091:eng:{Nodes= %ld Nodes/sec= %ld\n}
+091:ger:{Posit= %ld Posit/Sek= %ld\n}
+091:swe:{Noder= %ld Noder/Sek= %ld\n}
+092:eng:{OFF}
+092:ger:{AUS}
+092:swe:{AV}
+093:eng:{ON}
+093:ger:{EIN}
+093:swe:{PAA}
+094:eng:{Operator time(hundredths)= }
+094:ger:{Operator Zeit(hunderdstel)= }
+094:swe:{Operatoertid(hundradelar)= }
+095:eng:{Opponent mates!}
+095:ger:{Gegner setzt matt!}
+095:swe:{Motstaandaren mattar!}
+096:eng:{Opponent will soon mate!}
+096:ger:{Gegner setzt bald matt!}
+096:swe:{Motstaandaren mattar snart!}
+097:eng:{Opponent: %s}
+097:ger:{Gegner: %s}
+097:swe:{Motstaandare: %s}
+098:eng:{Playing without hashfile}
+098:ger:{Spiel ohne Hashfile}
+098:swe:{Spelar utan hashfil}
+099:eng:{Random:   %-12s Easy mode:           %s\n}
+099:ger:{Random:   %-12s Leichter Mode:           %s\n}
+099:swe:{Random:   %-12s Laett Mode:           %s\n}
+100:eng:{Random: %s}
+100:ger:{Random: %s}
+100:swe:{Random: %s}
+101:eng:{Repetition}
+101:ger:{Wiederholung}
+101:swe:{Upprepning}
+102:eng:{Gnuchess version %s patchlevel %s\n}
+102:ger:{Gnuchess Version %s Revision %s\n}
+102:swe:{Gnuchess version %s revision %s\n}
+103:eng:{S%d m%d ps%d m%d ps%d}
+103:ger:{S%d m%d ps%d m%d ps%d}
+103:swe:{S%d m%d ps%d m%d ps%d}
+104:eng:{Score= %d}
+104:ger:{Bewertung= %d}
+104:swe:{Vaerdering= %d}
+105:eng:{Score}
+105:ger:{Bewertung}
+105:swe:{Vaerdering}
+106:eng:{Setup successful\n}
+106:ger:{Aufstellung erfolgreich\n}
+106:swe:{Upstaellning lyckad\n}
+107:eng:{Testing CaptureList Speed}
+107:ger:{Test    Schlagliste Geschw}
+107:swe:{Testar  Slaglistans Hastighet}
+108:eng:{Testing MoveList Speed}
+108:ger:{Test    Zugliste Geschw}
+108:swe:{Testar  Draglistans Hastighet}
+109:eng:{The file contains %d entries out of max %d\n}
+109:ger:{Das File enthaelt %d Eintraege von max. %d\n}
+109:swe:{Filen innehaaller %d poster av max. %d\n}
+110:eng:{Time Control %s %d moves in %d sec inc %d depth %d\n}
+110:ger:{Zeitkontrolle %s %d Zuege in %d Sek Inc %d Tiefe %d\n}
+110:swe:{Tidskontroll %s %d drag %d sek %d ink %d djup\n}
+111:eng:{TimeControl %d Operator Time %d\n}
+111:ger:{Zeitkontrolle %d Operator Zeit %d\n}
+111:swe:{Tidskontroll %d Operatoerstid %d\n}
+112:eng:{Transposition table: %s}
+112:ger:{Transposition Tabelle: %s}
+112:swe:{Transpositionstabell: %s}
+113:eng:{Usage: Gnuchess [-a] [-t] [-c size] [-s savefile][-l listfile] [-x xwndw]\n}
+113:ger:{Aufruf: Gnuchess [-a] [-t] [-c size] [-s savefile][-l listfile] [-x xwndw]\n}
+113:swe:{Anvaend: Gnuchess\n [-L <eng, ger, swe>]\n [<+,->a] Laett\n [-b <bokfil>]\n [-B <binaer bokfil>]\n [<+,->h] Hashtabell\n [-s <Sparfil>]\n [-l <Listfil>]\n [-S <bokstorleken>]\n [-P <max bokdjup (halvdrag)>]\n [-r <rehash>]\n [-T <antal poster i hashtabellen>]\n [-t] testa hashfilen\n [-c <antal poster> skapa hashfilen x=1..23 betyder 2**x]\n [-x <xwin>] paaverkar evalueringen\n [-v] vilken version\n}
+114:eng:{WAwindow= }
+114:ger:{WAwindow= }
+114:swe:{WAwindow= }
+115:eng:{WBwindow= }
+115:ger:{WBwindow= }
+115:swe:{WBwindow= }
+116:eng:{White %d:%02d  Black %d:%02d\n}
+116:ger:{Weiss %d:%02d  Schwarz %d:%02d\n}
+116:swe:{Vit %d:%02d  Svart %d:%02d\n}
+117:eng:{White Clock %ld Moves %ld\nBlack Clock %d Moves %d\n\n}
+117:ger:{Weiss Uhr %ld Zuege %ld\nSchwarz Uhr %d Zuege %d\n\n}
+117:swe:{Vit klocka %ld Drag %ld\nSvart klocka %d drag %d\n\n}
+118:eng:{White}
+118:ger:{Weiss}
+118:swe:{Vit}
+119:eng:{Black}
+119:ger:{Schwarz}
+119:swe:{Svart}
+120:eng:{Wwindow: }
+120:ger:{Wwindow: }
+120:swe:{Wwindow: }
+121:eng:{Your move is? }
+121:ger:{Ihr Zug ist? }
+121:swe:{Ditt drag? }
+122:eng:{\n                          }
+122:ger:{\n                          }
+122:swe:{\n                          }
+123:eng:{\nMove# %d    Target= %ld    Clock: %ld\n}
+123:ger:{\nZug# %d     Zeilzeit= %ld  Uhr: %ld\n}
+123:swe:{\nDrag# %d    Maal= %ld      Klocka: %ld\n}
+124:eng:{\nYour move is? }
+124:ger:{\nIhr Zug ist? }
+124:swe:{\nDitt drag? }
+125:eng:{\n\n}
+125:ger:{\n\n}
+125:swe:{\n\n}
+126:eng:{\nmove  score depth  nodes  time flags capture color\n}
+126:ger:{\nZug   BewertTiefe  Posit  Zeit flags capture Farbe\n}
+126:swe:{\ndrag  eval  djup   noder  tid  flags capture faerg\n}
+127:eng:{\n}
+127:ger:{\n}
+127:swe:{\n}
+128:eng:{a7a8q     promote pawn to queen   material  turn %s\n}
+128:ger:{a7a8d     wandle Bauer in Dame    material  schalte %s\n}
+128:swe:{a7a8d     pronoverar till dam     material  tur %s\n}
+129:eng:{alg}
+129:ger:{alg}
+129:swe:{alg}
+130:eng:{bd        redraw board            reverse   board display\n}
+130:ger:{br        zeichne Brett neu       drehe     drehe Brett\n}
+130:swe:{br        ritar om braedet        invertera braedesvisning\n}
+131:eng:{bd}
+131:ger:{br}
+131:swe:{br}
+132:eng:{beep}
+132:ger:{ton }
+132:swe:{pip }
+133:eng:{black}
+133:ger:{schwarz}
+133:swe:{svart}
+134:eng:{book}
+134:ger:{bibl}
+134:swe:{bok}
+135:eng:{both}
+135:ger:{beide}
+135:swe:{baada}
+136:eng:{c   Change sides\n}
+136:ger:{c   Wechsle Spieler\n}
+136:swe:{c   byt sida\n}
+137:eng:{chess.000}
+137:ger:{chess.000}
+137:swe:{chess.000}
+138:eng:{chess.lst.%d}
+138:ger:{chess.lst.%d}
+138:swe:{chess.lst.%d}
+139:eng:{computer mates!\n}
+139:ger:{Computer setzt matt!\n}
+139:swe:{datorn saetter matt!\n}
+140:eng:{computer will soon mate!\n}
+140:ger:{Computer setzt bald matt!\n}
+140:swe:{datorn saetter snart matt!\n}
+141:eng:{computer}
+141:ger:{Computer}
+141:swe:{datorn}
+142:eng:{contempt= }
+142:ger:{contempt= }
+142:swe:{contempt= }
+143:eng:{contempt}
+143:ger:{contempt}
+143:swe:{contempt}
+144:eng:{coords    show coords             rv        reverse video\n}
+144:ger:{Koord     bezeichne Felder        rv        Farbumkehr\n}
+144:swe:{koord     visa koordinater        rv        negativ bild\n}
+145:eng:{coords}
+145:ger:{Koord}
+145:swe:{koord}
+146:eng:{debuglevel= }
+146:ger:{debuglevel= }
+146:swe:{debuglevel= }
+147:eng:{debuglevel}
+147:ger:{debuglevel}
+147:swe:{debuglevel}
+148:eng:{debug}
+148:ger:{debug}
+148:swe:{debug}
+149:eng:{depth     set search depth        clock     set time control\n}
+149:ger:{tiefe     setze Suchtiefe         zeit      setze Zeitkontrolle\n}
+149:swe:{djup      saett soekdjup          tid       saett tidskontroll\n}
+150:eng:{depth= }
+150:ger:{Tiefe= }
+150:swe:{djup= }
+151:eng:{depth}
+151:ger:{tiefe}
+151:swe:{djup}
+152:eng:{easy}
+152:ger:{leicht}
+152:swe:{laett}
+153:eng:{edit      edit board              force     enter game moves\n}
+153:ger:{edit      editiere Brett          selbst    spiele .. beide Seiten\n} 
+153:swe:{edit      editera braedet         sjaelv    spela baada sidorna\n} 
+154:eng:{edit}
+154:ger:{edit}
+154:swe:{edit}
+155:eng:{enter piece & location: \n}
+155:ger:{Eingabe Figur & Position: \n}
+155:swe:{Ange pjaes & ruta: \n}
+156:eng:{first}
+156:ger:{first}
+156:swe:{first}
+157:eng:{force}
+157:ger:{selbst}
+157:swe:{sjaelv}
+158:eng:{g1f3      move from g1 to f3      quit      Exit Chess\n}
+158:ger:{g1f3      ziehe von g1 nach f3    ende      Verlasse Spiel\n}
+158:swe:{g1f3      flytta g1 till f3       sluta     Avsluta Chess\n}
+159:eng:{game file= }
+159:ger:{Spielfile= }
+159:swe:{sparfil= }
+160:eng:{get}
+160:ger:{hole}
+160:swe:{haemta}
+161:eng:{gnuchess 4p%s game\n}
+161:ger:{gnuchess 4p%s Spiel\n}
+161:swe:{gnuchess 4p%s parti\n}
+162:eng:{go}
+162:ger:{ziehe}
+162:swe:{dra}
+163:eng:{hashdepth= }
+163:ger:{Hashtiefe= }
+163:swe:{hashdjup= }
+164:eng:{hashdepth}
+164:ger:{Hashtiefe}
+164:swe:{hashdjup}
+165:eng:{hash}
+165:ger:{hash}
+165:swe:{hash}
+166:eng:{help}
+166:ger:{hilfe}
+166:swe:{hjaelp}
+167:eng:{hint      suggest a move         post      turn %s principle variation\n}
+167:ger:{hinw      schlage Zug vor        haupt     schalte Hauptvariante %s\n}
+167:swe:{tips      tipsa om drag          variant   visa huvudvariant %s\n}
+168:eng:{hint}
+168:ger:{hinw}
+168:swe:{tips}
+169:eng:{level}
+169:ger:{Level}
+169:swe:{level}
+170:eng:{list      game to chess.lst       book      turn %s used %d of %d\n}
+170:ger:{doku      mentiere in chess.lst   bibl      schalte %s benutzte %d von %d\n}
+170:swe:{lista     parti till chess.lst    bok       slaar %s anvaende %d av %d\n}
+171:eng:{list}
+171:ger:{doku}
+171:swe:{lista}
+172:eng:{new}
+172:ger:{neu}
+172:swe:{ny}
+173:eng:{o-o       castle king side        easy      turn %s\n}
+173:ger:{o-o       kurze Rochade           leicht    schalte %s\n}
+173:swe:{o-o       kort rockad             laett     saett %s\n}
+174:eng:{o-o-o     castle queen side       hash      turn %s\n}
+174:ger:{o-o-o     lange Rochade           hash      schalte %s\n}
+174:swe:{o-o-o     laang rockad            hash      slaar %s\n}
+175:eng:{opponent mates!\n}
+175:ger:{Gegner schlaegt Matt!\n}
+175:swe:{Motstaandaren saetter matt!\n}
+176:eng:{opponent will soon mate!\n}
+176:ger:{Gegner schlaegt bald Matt!\n}
+176:swe:{Motstaandaren mattar strax!\n}
+177:eng:{post      principle variation     hint      suggest a move\n}
+177:ger:{haupt     Hauptvariante           hinw      schlage Zug vor\n}
+177:swe:{variant   huvudvarianten          hinw      tipsa om ett drag\n}
+178:eng:{post}
+178:ger:{haupt}
+178:swe:{variant}
+179:eng:{p}
+179:ger:{p}
+179:swe:{p}
+180:eng:{quit}
+180:ger:{ende}
+180:swe:{sluta}
+181:eng:{random    randomize play          new       start new game\n}
+181:ger:{zufall    variableres Spiel       neu       Starte neues Spiel\n}
+181:swe:{slump     varierar spelet         ny        startar nytt spel\n}
+182:eng:{random}
+182:ger:{zufall}
+182:swe:{slump}
+183:eng:{rcptr}
+183:ger:{rcptr}
+183:swe:{rcptr}
+184:eng:{remove}
+184:ger:{zur}
+184:swe:{bort}
+185:eng:{reverse}
+185:ger:{drehe}
+185:swe:{invertera}
+186:eng:{rv}
+186:ger:{rv}
+186:swe:{rv}
+187:eng:{r}
+187:ger:{r}
+187:swe:{r}
+188:eng:{save      game to file            get       game from file\n}
+188:ger:{speich    Spiel in File           hole      Spiel aus File\n}
+188:swe:{spara     parti i fil             haemta    parti fraan fil\n}
+189:eng:{save}
+189:ger:{speich}
+189:swe:{spara}
+190:eng:{setup}
+190:ger:{setup}
+190:swe:{setup}
+191:eng:{set}
+191:ger:{set}
+191:swe:{set}
+192:eng:{shade     toggle shade black      stars     toggle stars\n}
+192:ger:{Schatt    aender Farbton schwarz  stern     Stern bei Schwarz\n}
+192:swe:{skugga    skuggning av svart      asterisk  Asterisker foer svart\n}
+193:eng:{stars}
+193:ger:{stern}
+193:swe:{stern}
+194:eng:{switch    sides with computer     both      computer match\n}
+194:ger:{wechs     ele Seite mit computer  beide     Computer spielt ..\n}
+194:swe:{byt       sida med datorn         baada     datorn spelar sjaelv\n}
+195:eng:{switch}
+195:ger:{wechs}
+195:swe:{byt}
+196:eng:{test}
+196:ger:{Test}
+196:swe:{test}
+197:eng:{time}
+197:ger:{zeit}
+197:swe:{tid}
+198:eng:{try }
+198:ger:{Versuch }
+198:swe:{proeva }
+199:eng:{ttable collision detected}
+199:ger:{ttable collision detected}
+199:swe:{ttable collision detected}
+200:eng:{undo      undo last ply           remove    take back a move\n}
+200:ger:{hzur      Halbzug zurueck         zur       nehme einen Zug zurueck\n}
+200:swe:{aengra    ta tillbaka halvdrag    tillbaka  ta tillbaka ett drag\n}
+201:eng:{undo}
+201:ger:{hzur}
+201:swe:{hzur}
+202:eng:{white     computer plays white    black     computer plays black\n}
+202:ger:{weiss     Computer nimmt Weiss    schwarz   Computer nimmt Schwarz\n}
+202:swe:{vit       datorn spelar vit       svart     datorn spelar svart\n}
+203:eng:{white}
+203:ger:{weiss}
+203:swe:{vit}
+204:eng:{w}
+204:ger:{w}
+204:swe:{w}
+205:eng:{xboard.position.read}
+205:ger:{xboard.position.read}
+205:swe:{xboard.position.read}
+206:eng:{xboard}
+206:ger:{xboard}
+206:swe:{xboard}
+207:eng:{xget}
+207:ger:{xget}
+207:swe:{xget}
+208:eng:{xwndw= }
+208:ger:{xwndw= }
+208:swe:{xwndw= }
+209:eng:{xwndw}
+209:ger:{xwndw}
+209:swe:{xwndw}
+210:eng:{yes}
+210:ger:{ja}
+210:swe:{ja}
+211:eng:{Illegal move in book %d %s %s}
+211:ger:{Unerlaubter Zug in Bibl. %d %s %s}
+211:swe:{Otillaatet drag i bok %d %s %s}
+212:eng:{Warning can't find book.}
+212:ger:{Warnung: kann Bibl. nicht finden.}
+212:swe:{Varning, kan inte hitta boken.}
+213:eng:{Book used %d of %d entries.}
+213:ger:{Bibl. benutzte %d von %d Eintraegen.}
+213:swe:{Boken anvaende %d av %d poster.}
+214:eng:{true}
+214:ger:{wahr}
+214:swe:{sant}
+215:eng:{false}
+215:ger:{falsch}
+215:swe:{falskt}
+216:eng:{exit}
+216:ger:{exit}
+216:swe:{exit}
+217:eng:{clock}
+217:ger:{Uhr}
+217:swe:{klocka}
+218:eng:{Computer}
+218:ger:{Computer}
+218:swe:{Computer}
+219:eng:{Open failure for file: %s}
+219:ger:{Fehler beim Oeffnen des files: %s}
+219:swe:{Fel vid filoeppning: %s}
+220:eng:{Time Control Error}
+220:ger:{Fehler Zeitkontrolle}
+220:swe:{Tidskontrollsfel}
+221:eng:{material}
+221:ger:{material}
+221:swe:{material}
+222:eng:{time %d %d\n}
+222:ger:{Zeit %d %d\n}
+222:swe:{tid %d %d}
+223:eng:{I have no idea\n}
+223:ger:{Ich habe keine Ahnung\n}
+223:swe:{Jag har inte en aning\n}
+224:eng:{Not Enough Material}
+224:ger:{Nicht genug Material}
+224:swe:{Inte nog med material}
+225:eng:{Illegal position}
+225:ger:{Unerlaubter position}
+225:swe:{otillaaten position}
+226:eng:{beep}
+226:ger:{beep}
+226:swe:{beep}
+227:eng:{gamein}
+227:ger:{gamein}
+227:swe:{gamein}
+228:eng:{otim}
+228:ger:{otim}
+228:swe:{otim}
+229:eng:{hard}
+229:ger:{hart}
+229:swe:{svaar}
+230:eng:{Time Control %s Game in %d sec inc %d sec depth %d\n}
+230:ger:{Zeitkontrolle %s Spiel in %d Sek Inc %d Sek Tiefe %d\n}
+230:swe:{Time Control %s Game in %d sec inc %d sec depth %d\n}
diff --git a/installer/WinBoard-4.2.7/gnuchess.txt b/installer/WinBoard-4.2.7/gnuchess.txt
new file mode 100644 (file)
index 0000000..802e6a1
--- /dev/null
@@ -0,0 +1,348 @@
+gnuchess(6)                                                        gnuchess(6)
+
+
+
+NAME
+       gnuchess - Chess
+
+SYNOPSIS
+       gnuchess  [ [[-|+]a] [-A aging-rate] [-b bookfile] [-B binbookfile] [-C
+       cache-table-size] [-c] [[-|+]D ] [[-|+]E ]  [[-|+]e  ]  [[-|+]F  ]  [-H
+       hash-depth]  [[-|+]h  ]  [-L language] [-l listfile] [[-|+]N] [[-|+]p ]
+       [-P plys] [-r length] [-s savefile] [-S binbooksize] [-t] [-c hashfile-
+       size]  [-T  transition-table-size]  [[-|+]V] [-v] [-x] [-z search-fuzz]
+       arg1 arg2 ]
+
+DESCRIPTION
+       Gnuchess plays a game of chess against the user  or  it  plays  against
+       itself.
+
+       Gnuchess  is  an  updated version of the GNU chess playing program.  It
+       has a simple alpha-numeric board display, an IBM PC  compatible  inter-
+       face, or it can be compiled for use with the chesstool program on a SUN
+       workstation or with the xboard program under X-windows.  To invoke  the
+       program type:
+
+       gnuchess
+              - simple curses based version
+
+       gnuchessn
+              -  fancy  version using curses and inverse video on UNIX, or IBM
+              PC cursor controls and characters on MSDOS
+
+       gnuchessr
+              - ASCII based version
+
+       gnuchessc
+              - chesstool compatible version
+
+       gnuchessx
+              - xboard compatible version
+
+TIME CONTROLS
+       If one argument is given, it is the  search  time  per  move  in  [min-
+       utes:]seconds.  So gnuchess 30 will generate one move every 30 seconds,
+       while gnuchess 5:00 will generate one move every 5 minutes.
+
+       If two or more arguments are given, they will be used to set tournament
+       time  controls with the first argument of each pair being the number of
+       moves and the second being the total clock time  in  minutes[:seconds].
+       Thus,  entering  gnuchess  60  5 will set the clocks for 5 minutes (300
+       seconds) for the first 60 moves, and gnuchess 30 3:30 will allow 3 min-
+       utes and 30 seconds for 30 moves.
+
+       gnuchess  30 5 1 :30 will allow 5 minutes for the first 30 moves and 30
+       seconds for each move after that.  Up to 4 pairs  of  controls  may  be
+       specified.
+
+       If  no  argument is given the program will prompt the user for level of
+       play.
+
+       For use with chesstool or xboard, see the documentation on  those  pro-
+       grams.
+
+BOOK
+       At  startup  Gnuchess  reads the binbook file if it is present. It then
+       looks for a book file. If it is present it adds  its  contents  to  the
+       binbook  data.  If  the binbook file is writable a new combined binbook
+       file is written.
+
+       The book gnuchess.book consists of a sequence of openings.  An  opening
+       begins  with  a  line starting with a !  , the rest of the line is com-
+       ments.  Following this is a  series  of  moves  in  algebraic  notation
+       alternating white and black separated by white space. A move may have a
+       ?  after it indicating this move should never be made in this position.
+       Moves  are  stored  as position:move so transpositions between openings
+       can take place.
+
+HASHFILE
+       The hashfile if created should be  on  the  order  of  4  megabytes  or
+       gnuchess  -c  22.   This file contains positions and moves learned from
+       previous games.  If a hashfile is used the computer makes  use  of  the
+       experience it gained in past games. Tests run so far show that it plays
+       no worse with the hashfile than  without,  but  it  is  not  clear  yet
+       whether it provides a real advantage.
+
+LEGAL MOVES
+       Note:  Piece  letters  and legal castling notation is determined by the
+       language file.  What is specified here is the default English.
+
+       Once gnuchess is invoked, the program will display the board and prompt
+       the  user  for a move. To enter a move, use the notation e2e4 where the
+       first letter-number pair indicates the origination square and the  sec-
+       ond  letter-number  pair indicates the destination square.  An alterna-
+       tive is to use the notation nf3 where the first  letter  indicates  the
+       piece  type  (p,n,b,r,q,k).  To castle, type the origin and destination
+       squares of the king just as you would do for a regular move, or type o-
+       o  or  0-0  for kingside castling and o-o-o or 0-0-0 for queenside.  To
+       promote a pawn append the type of the new piece  to  the  move,  as  in
+       e7e8q or c7c8r.
+
+FUNCTION LETTERS
+       -L lang
+              Use  language  lang  from  the file gnuchess.lang.  If -L is not
+              specified it defaults to the language used in the first line  in
+              the file.  gnuchessr -L ger will use the german language.
+
+       -A aging-rate
+              Specify aging rate for hash table entries
+
+       [-]a   Do [do not] search on opponents time.
+
+       -b bookfile
+              Use bookfile for opening book.
+
+       -B binbookfile
+              Use binbookfile for binary opening book.
+
+       -C cache-size
+              Specify evaluation cache table size (in entries).
+
+       -D     Toggle DEEPNULL at runtime.
+
+       -E     Toggle flag.threat.
+
+       -e     Toggle flag.neweval to force evaluations instead of estimates
+
+       -F     Toggle flag.noscore
+
+       -H hash-depth
+              pecify depth in plys for hashing.
+
+       -S size
+              Size of binbookfile for memory based and GDX books. For creating
+              a binbookfile.
+
+       -P plylevels
+              Number of plys to include in the binbookfile. For  generating  a
+              binbookfile.
+
+       -p     Toggle flag.pvs
+
+       -c size
+              Create  a  new HASHFILE. File size is 2^size entries of approxi-
+              mately 65 bytes.
+
+       [-]h   Do [do not] use hashfile.
+
+       -l pathname
+              Pathname of the loadfile use with the get or xget.
+
+       -r length
+              Rehash length times in searching  entries for position in trans-
+              position table.
+
+       -s pathname
+              Pathname of the save file to use with the save command.
+
+       -t     Show statistics for HASHFILE
+
+       -T size
+              Set  the  transposition  table size to size entries. (minimum is
+              MINTTABLE)
+
+       -v     Show version and patchlevel.
+
+       -x value
+              Use value as the evaluation window xwndw.
+
+COMMANDS
+       In addition to legal moves, the following  commands  are  available  as
+       responses.  Note: command names are determined by the language file and
+       may vary with the implementation. This is default English.
+
+       alg -- allow algebraic input (not implemented)
+
+       Awindow -- change Alpha window (default score + 90)
+
+       Bwindow -- change Beta window (default score - 90)
+
+       beep -- causes the program to beep after each move.
+
+       bd -- updates the current board position on the display.
+
+       bk -- Print out all moves for this position  from  the  book  as:  move
+       response value
+
+       book -- turns off use of the opening library.
+
+       both -- causes the computer to play both sides of a chess game.
+
+       black -- causes the computer to take the black pieces.  If the computer
+       is to move first the go command must be given.
+
+       eco -- Print out opening information for this game - lists  ECO  #  and
+       variations
+
+       coords -- show coordinates on the display (visual only)
+
+       contempt -- allows the value of contempt to be modified.
+
+       debug  --   asks for a piece as color piece, as wb or bn, and shows its
+       calculated value on each square.
+
+       debuglevel --  sets level of debugging output if  compiled  with  debug
+       options.
+
+       depth  --  allows  the  user to change the search depth of the program.
+       The maximum depth is 29 ply.  Normally the depth is set to 29  and  the
+       computer terminates its search based on elapsed time rather than depth.
+       If depth is set to (say) 4 ply, the program will search until all moves
+       have  been examined to a depth of 4 ply (with extensions up to 11 addi-
+       tional ply for sequences of checks and captures).  If you set a maximum
+       time  per  move and also use the depth command, the search will stop at
+       the specified time or the specified depth, whichever comes first.
+
+       easy -- toggles easy mode (thinking on opponents time) on and off.  The
+       default  is  easy  mode  ON.  If easy mode is disabled, the keyboard is
+       polled for input every so often and when input is seen  the  search  is
+       terminated. It may also be terminated with a sigint.
+
+       edit -- allows the user to set up a board position.
+
+            # - command will clear the board.
+
+            c - toggle piece color.
+
+            .  - command will exit setup mode.
+
+       pb3 - place a pawn on b3
+
+       Pieces  are entered by typing a letter (p,n,b,r,q,k) for the piece fol-
+       lowed by the coordinate.
+
+       The usual warning about the language file applies.
+
+       exit -- exits gnuchess.
+
+       first -- tells the computer to move first.  Computer  begins  searching
+       for a move.  (same as "go").
+
+       force -- allows the user to enter moves for both sides. To get the pro-
+       gram to play after a sequence of moves has been entered use the 'white'
+       or 'black' command followed by 'go'.
+
+       gamein  --  toggles  game mode time control. Assumes the time specified
+       for time control is the time for a complete game. Input with the  level
+       command  should  be the game time and the expected number of moves in a
+       game.
+
+       get -- retrieves a game from disk.  The program will  prompt  the  user
+       for a file name.
+
+       go -- tells the computer to move first. Computer begins searching for a
+       move.  (same as "first").
+
+       hash -- use/don't use hashfile.
+
+       hard -- think on opponents time
+
+       hashdepth -- allows the user to change the minimum depth for using  the
+       hashfile  and  the number of moves from the begining of the game to use
+       it.
+
+       help -- displays a short description of the commands  and  the  current
+       status of options.
+
+       hint  -- causes the program to supply the user with its predicted move.
+
+       level -- allows the user to set time controls such as  60  moves  in  5
+       minutes  etc.   In  tournament  mode, the program will vary the time it
+       takes for each move depending on the situation.  If easy mode  is  dis-
+       abled  (using  the 'easy' command), the program will often respond with
+       its move immediately, saving time on its clock for use later on.
+
+       list -- writes the game moves and  some  statistics  on  search  depth,
+       nodes, and time to the file 'chess.lst'.
+
+       material  --  toggle material flag - draws on no pawns and both sides <
+       rook
+
+       Mwpawn, Mbpawn, Mwknight, Mbknight, Mwbishop,  Mbbishop  --  print  out
+       static position evaluation table
+
+       new -- starts a new game.
+
+       p  -- evaluates the board and shows the point score for each piece. The
+       total score for a position is the sum of these individual piece scores.
+
+       post  --  causes the program to display the principle variation and the
+       score during the search.  A score of 100 is  equivalent  to  a  1  pawn
+       advantage for the computer.
+
+       unpost -- turn off the post display.
+
+       quit -- exits the game.
+
+       random  -- causes the program to randomize its move selection slightly.
+
+       rcptr -- set recapture mode.
+
+       remove -- backout the last level for both sides. Equal to 2 undo's.
+
+       reverse -- causes the board display to be reversed.  That is, the white
+       pieces will now appear at the top of the board.
+
+       rv -- reverse board display.
+
+       setup  --  Compatibility  with  Unix chess and the nchesstool. Set up a
+       board position.  Eight lines of eight characters are used to setup  the
+       board.  a8-h8  is  the  first  line.  Black pieces are  represented  by
+       uppercase characters.
+
+       stars -- (gnuchessn only) add stars (*) to black pieces.
+
+       save -- saves a game to disk.  The program will prompt the user  for  a
+       file name.
+
+       switch  --  causes  the  program to switch places with the opponent and
+       begin searching.
+
+       test -- performs some speed tests for MoveList and CaptureList  genera-
+       tion, and ScorePosition position scoring for the current board.
+
+       time  otim  -- time set computers time remaining, intended for synchro-
+       nizing clocks among multiple  players.   --  otim  set  opponents  time
+       remaining, intended for synchronizing clocks among multiple players.
+
+       undo  --  undoes  the  last  move  whether it was the computer's or the
+       human's. You may also type "remove". This is equivalent to two "undo's"
+       (e.g. retract one move for each side).
+
+       white -- causes the computer to take the white pieces.  If the computer
+       is to move first the go command must be given.
+
+       xget -- read an xboard position file.
+
+       xwndw -- change X window. The window around alpha/beta used  to  deter-
+       mine whether the position should be scored or just estimated.
+
+BUGS
+SEE ALSO
+       chesstool(6)
+       xboard(6)
+
+
+
+
+                                                                   gnuchess(6)
diff --git a/installer/WinBoard-4.2.7/kk13.pgn b/installer/WinBoard-4.2.7/kk13.pgn
new file mode 100644 (file)
index 0000000..5f1ff40
--- /dev/null
@@ -0,0 +1,167 @@
+[Event "World Championship"]
+[Site "Lyon FRA"]
+[Date "1990.11.24"]
+[Round "13"]
+[White "Karpov, Anatoly"]
+[Black "Kasparov, Garry"]
+[Result "1/2-1/2"]
+
+1. d4 Nf6 2. c4 g6 3. Nc3 d5
+{
+Welcome to game 13 and the GI---that's Grunfeld-Indian.  Fight from
+the start.
+}
+4. cxd5 Nxd5 5. e4 Nxc3 6. bxc3 Bg7 7. Be3 c5 8. Qd2 O-O
+{
+So far on two minutes each.  GK.. Garry Kasparov looks tensed, says
+Mike Valvo.  Now Karpov took full 9 minutes to play ...
+}
+9. Rc1 Qa5
+{
+Kasparov thought six minutes here. Time now: White 0:19 Black: 0:08.
+Now 9 minutes has gone and AK is still thinking. Kasparov has left the
+stage. Who is fooling who? 9..Qa5 might be a new move. It's not in the
+pressroom database. Karpov is still thinking, so time for a little
+presentation. At your service in Lyon IM Bjarke Kristensen (Now Valvo:
+AK is nodding his head up and down alone on stage.) As commentators:
+Boris Spassky and a number of strong french IM's. IM Mike Valvo from
+New Jersey is here for a week.
+}
+10. Nf3 e6
+{
+And the "soon-to-be" GM Will Watson from England is here too.  "I
+don't understand the GI" he just said. Kasparov stays on stage.  Time:
+White: 0:37 Black: 0:10. Says Will Watson (now WW): "I predicted the
+opening this morning. And so did many others."  Valvo: "I think this
+shows that the Kings Indian hasn't worked out for Kasparov". IM Levy
+suggests b7-b6 for Black. IM Jonathan Tisdall says: "I've seen this
+before. But nobody can find a game with it."
+}
+11. d5 exd5 12. exd5 Re8 13. Be2
+{
+Time: White: 0:53 Black: 0:24. Valvo observed GK tapping his fingers
+impatiently on the table after move Re8. It just might all be
+preparations! Both are sitting deeply concentrated at the table.
+}
+13... Bf5 14. O-O
+{
+The atmosphere in the pressroom is a bit "fuzzy." The game hasn't
+found its own personality yet, and the fact that the US plays the
+Soviets at the Chess Olympiad in Novi Sad at this very moment is also
+widely discussed.
+}
+14... Nd7
+{
+Interesting is now: 15.Nh4 Be4 16.f3 Bxd5! 17.Qxd5 Rxe3 18.Qxd7
+18...Rxe2 with a big Black plus. say Watson. Rumours say that GK might
+be better here, but nobody really dares to risk his neck. The game is
+still in its childhood. But AK surely is in for a deep think. Now he's
+on 1:16 and still thinking. Garry has left the stage. Valvo say: The
+Mephisto computer thinks Black is better!  It's no "Deep Thought", but
+the Mephisto Chess Computer IS already world champion in its class. No
+one else dared to test their program against it!
+}
+15. h3
+{
+Time: White: 1:18 Black: 0:31. Now Karpov has left stage. And GK hangs
+over the board as if to power up his chessmuscles. Kasparov seems
+relaxed and satisfied. White's problem is his weakened pawns on the
+Q-side.  And as for his pride-pawn on d5? In an endgame it could be
+pure gold, but until then it gives a good square to a Black piece on
+d6. Kasparov now "hangs" his head between his hands. A very typical
+posture for the WC.
+}
+15... Nb6
+{
+GM Lein thinks White is in deep trouble. GK might play Nb6-a4.
+Another of GK's ideas might be Qa5-a4.
+}
+16. g4
+{
+Now ...that's a man! Karpov's idea obviously is 16... Be4 17.c4 Qxd2
+18.Nxd2 with 19.Nxe4 and 20.Bd3 to come. After a very slow start
+suddenly the game is very exciting. Now the Russians GMs in the
+pressroom find: 16...Be4 17.c4.. Qa3! with a Black edge. But...
+}
+16... Bd7
+{
+Time: AK: 1:31 GK: 0:49. GM-elects Watson and Gallagher say Karpov is
+still under pressure, but improving. Mephisto "thinks" it's slightly
+better for Black. And the Russians say that Kasparov should have
+played h7-h5, not Nd7-b6.
+}
+17. c4 Qxd2 18. Nxd2 Na4 19. Bf3 Nc3 20. Rxc3 Bxc3 21. Ne4
+{
+The heat is on, in the Palais des Congress. Watson thinks GK is still
+doing well. Might be a British understatement. Kasparov is in for at
+deep think. Time: White: 1:42 Black: 1:12 IM Tisdall: He'll take on e4
+now, and it is a draw.
+}
+21... Rxe4 22. Bxe4 Re8 23. Bd3 b6 24. Kg2
+{
+Tisdall says: The first one who can bring himself to offer a draw will
+get it. He might be right. A drastic change of the game has taken
+place. And where did Kasparov drop his advantage? Maybe ...Nc3 should
+have been prepared. Time: White: 1:46 Black: 1:17.  If Karpov plays
+Be3-c1 to press f2-f4 (hoping for an endgame advantage with f4-f5) GK
+might play Re8-e1 to enter a tame double-bishop ending. Draw.
+}
+24... f5 25. gxf5 Bxf5 26. Bxf5 gxf5
+{
+Karpov sits thinking alone at the board. Black's Bc3 is potentially
+weaker than Be3, but White's c4 pawn is GK's major target. I think
+that Black's still better. White's d-pawn looks strong (and it is) but
+right now it's quite impotent. If advanced it'll just be lost, since
+Kg8 is too close.
+}
+27. Rd1 Kf7
+{
+Time: White: 2:07 Black: 1:28. Now Kasparov's lead on the clock begins
+to count. Karpov must be considering lines like: 28.d6 Ke6 29.Bf4 Be5
+30.Bxe5 Kxe5 31.Rd5+ Ke6 32.d7 Rd8 and Black is much better.
+}
+28. Rd3 Bf6 29. Ra3 a5 30. Rb3
+{
+Time: White: 2:12 Black: 1:31. It might look simple, but in fact the
+game is balanced on an edge. Which is most important: Black's weakness
+on b6 or White's on c4?
+}
+30... Bd8
+{
+People in the pressroom seems to be losing interest a bit. I think
+that a long endgame battle may be ahead. The fight for the initiative
+is still very much on. Now Watson arrived with news.  He said: "The
+Russians think GK is slightly better, the Americans think AK is
+slightly better, and it might be a draw."
+}
+31. Rc3
+{
+Both are leaning across the board. If Karpov can get his king to d3,
+he might play on forever. Kasparov seems "speculative" now.  One point
+in Karpov's favour is: 31...Bc7 32.Kf3 Re4 33.Ke2 f4 34.Kd3 and Re4
+has to move.
+}
+31... Bc7
+{
+Karpov is hiding his head behind his hands, looking through his
+fingers. Nine minutes left.
+}
+32. a4 Kf6 33. Kf1 f4
+{
+33...f4! GK played this with determination. I don't understand
+Karpov's Kg2-f1.
+}
+34. Bc1 Kf5 35. Rc2 Rg8 36. Re2 Be5 37. Bb2 Bd4 38. Bxd4 cxd4 39. Re7 d3
+40. Ke1 Rc8 41. Kd2 Rxc4
+{
+Kasparov has moved from c8 to c4. Move 41 made. The last seven moves
+took only 11 minutes Now all analysis goes: 42.Kxd3 Rxa4 43.d6 Ra3+
+44.Kc4 Ra1 45. Kd5 Rd1+ 46.Kc6 a4 and White might be the one who in
+trouble. Both still sits at the board. GK is looking everywhere else,
+waiting for Karpov to decide on if he wants to seal his move now. Some
+say that Kasparov might have proposed a draw earlier on. Not
+verified. Time: 2:42 - 2:08.  Karpov sealed his 42nd move. The game
+will be continued (maybe) tomorrow at 11:00 AM ET.
+}
+{Draw agreed} 1/2-1/2
+
diff --git a/installer/WinBoard-4.2.7/modern-uninstall.ico b/installer/WinBoard-4.2.7/modern-uninstall.ico
new file mode 100644 (file)
index 0000000..6c7410c
Binary files /dev/null and b/installer/WinBoard-4.2.7/modern-uninstall.ico differ
diff --git a/installer/WinBoard-4.2.7/timeseal.exe b/installer/WinBoard-4.2.7/timeseal.exe
new file mode 100644 (file)
index 0000000..25df3a8
Binary files /dev/null and b/installer/WinBoard-4.2.7/timeseal.exe differ
diff --git a/installer/WinBoard-4.2.7/timestamp.exe b/installer/WinBoard-4.2.7/timestamp.exe
new file mode 100644 (file)
index 0000000..05df785
Binary files /dev/null and b/installer/WinBoard-4.2.7/timestamp.exe differ
diff --git a/installer/WinBoard-4.2.7/wcrafty.exe b/installer/WinBoard-4.2.7/wcrafty.exe
new file mode 100644 (file)
index 0000000..cfc58de
Binary files /dev/null and b/installer/WinBoard-4.2.7/wcrafty.exe differ
diff --git a/installer/WinBoard-4.2.7/winboard.exe b/installer/WinBoard-4.2.7/winboard.exe
new file mode 100644 (file)
index 0000000..c0cd675
Binary files /dev/null and b/installer/WinBoard-4.2.7/winboard.exe differ
diff --git a/installer/WinBoard-4.2.7/winboard.hlp b/installer/WinBoard-4.2.7/winboard.hlp
new file mode 100644 (file)
index 0000000..1430e9c
Binary files /dev/null and b/installer/WinBoard-4.2.7/winboard.hlp differ
diff --git a/installer/WinBoard-4.2.7/zippy.README b/installer/WinBoard-4.2.7/zippy.README
new file mode 100644 (file)
index 0000000..292646c
--- /dev/null
@@ -0,0 +1,411 @@
+Zippy README file
+For version xboard/WinBoard 4.2.4 and later only
+$Id$
+-----------------------------------------------------
+
+Zippy is a program that lets GNU Chess act as a computer player on an
+Internet Chess Server.  It also works with Crafty.  Zippy is
+unsupported, experimental code.
+
+Zippy is based on XBoard, a graphical interface to GNU Chess and to
+the ICS for the X Window system on Unix.  Zippy consists of exactly
+the same code as XBoard, plus one extra module that ties together the
+otherwise-separate functions of talking to GNU Chess and talking to
+the ICS.  Zippy is included in the XBoard distribution.
+
+There is also a version of Zippy that is based on WinBoard, a port of
+XBoard to Win32 (Microsoft Windows NT and Windows 95).  WinBoard does
+*not* run on Windows 3.1 or 3.11, not even with Win32s.  In versions
+3.5 and later, the Zippy code is included in WinBoard.exe.
+
+If you use Zippy, I ask you to do the following:
+
+- Don't expect fast response if you send me mail about problems.  It
+might take weeks for me to get back to you, or I might answer right
+away.  Try to solve problems yourself before you mail me about them.
+Try asking someone who is actively running a Zippy-based player on ICC
+or FICS for help getting started.  Mail me only if you get stuck.
+
+- Be honest.  Tell the admins of whatever ICS you use that your player
+is a computer, so that it gets put onto the computer list, and follow
+the ICS computer policies.  On ICC these are in "help computer"; read
+this file and abide by what it says.
+
+- If you want to interface some other chess program to ICS, feel free
+to start with this code.  Some documentation is in the file
+engine-intf.html in the distribution.
+
+- Please do not use the -zt flag to have your program shout Zippy the
+Pinhead sayings (or other things that my Zippy shouts).  One pinhead
+per server is plenty, and I'd like to keep the franchise.  Feel free
+to use -zt to have your program shout some other kind of sayings if
+you like.  Some of the jokes that Zippy shouts on ICC came from
+ftp://ftp.cco.caltech.edu/pub/humor.  The poetry came from Project
+Gutenberg; try http://www.cs.cmu.edu/Web/booktitles.html as a starting
+point.  You might find other suitable material at these sites.  Prose
+tends to work poorly because it is dull when shouted in isolated
+250-character chunks.
+
+       --Tim Mann
+         http://www.tim-mann.org/chess.html
+
+* * *
+
+Unix: To build the Zippy version of xboard, on most systems just do: 
+       configure --enable-zippy
+       make
+
+Windows: WinBoard.exe (versions 3.5 and later) includes the Zippy
+code.  There is no longer a distinct WinZippy.exe.
+
+In both xboard and WinBoard, the Zippy features are off by default.
+You can activate them with two new resources/command line options, and
+you can fine-tune them with some new environment variables, all
+described below.
+
+You will probably want to make a shell script or Windows .BAT file
+that sets the environment variables you want to use and invokes Zippy
+with the right command line options for your situation.  Some examples
+are at the bottom of this file.
+
+If you have problems building or running Zippy, see the rest of the
+xboard documentation: INSTALL documents the configure program, while
+READ_ME and xboard.man (or xboard.txt) document xboard itself, and
+WinBoard.hlp documents WinBoard.  FAQ answers some frequently asked
+questions.  The file engine-intf.html contains some information about
+the interface between xboard/WinBoard and GNU Chess (or other chess
+engines).
+
+===========
+NEW OPTIONS
+===========
+
+  -zippyPlay True/False or -zp/-xzp
+       If zippyPlay is set to True, when xboard is in -ics mode, it
+       will interface a chess engine to the ICS instead of letting you
+       play.  You must also set -ics when you use this mode.
+
+       In zippyPlay mode, xboard blindly issues an accept command for
+       every (well, almost every, see below) challenge it gets,
+       without remembering anything about the challenge afterwards.
+       This means that often it will get several challenges very
+       close together and try to accept them all!  ICS gives an error
+       message for every accept command after the one that actually
+       starts a match, but xboard just happily ignores the message.
+       xboard doesn't actually start the chess engine playing until
+       the first board image comes in from ICS.
+
+       The getMoveList option controls how adjourned games are
+       continued.  If it is True (the default), xboard fetches the
+       move list from ICS and feeds it into the chess program before
+       having the program start play.  If False, xboard feeds the
+       current position into the chess program and has it start from
+       there.  The latter option gets the program going sooner, but
+       can cause problems with detection of en passant legality,
+       castling legality (if a king or rook has moved and then
+       returned to its home square), draw by repetition, and draw by
+       the 50 move rule.
+
+       In zippyPlay mode, colorization in the ICS interaction window,
+       and the sounds corresponding to colors in that window, do not
+       work.  zippyPassword and related features (see below) capture
+       the tells, etc., before they can be matched by the color/sound
+       code.
+
+  -zippyTalk True/False or -zt/-xzt
+       If zippyTalk is set to True and xboard is in -ics mode:
+
+       (1) It will reply to anything said to it with a saying (if
+       there is a file of sayings in its working directory).  This
+       includes channel tells and shouts where its name is mentioned.
+       Some things it says to opponents in specific situations will
+       also be made Zippy-ish; you might want to change that.  See
+       zippyLines below for the file format.
+
+       (2) If a player XXX in your notify list logs on, xboard sends
+       the command "greet XXX" to ICS and tells XXX something from
+       its sayings file.  You can alias this to whatever you like.
+       If XXX is censoring you, he is automatically removed from your
+       notify list.
+       
+       (3) If a player XXX in your notify list logs off, xboard sends
+       the command "farewell XXX" to ICS.  You can alias this to 
+       whatever you like.  Note that the player is already gone, so
+       telling him something is futile.
+       
+       If zippyTalk is on, colorization in the ICS interaction
+       window, and the sounds corresponding to colors in that window,
+       do not work.  The reply feature captures the tells, etc.,
+       before they can be matched by the color/sound code.
+
+  In both -zp and -zt modes, if admin X spoofs Zippy, Zippy sends the
+  command "spoofedby X" to ICS.  You can alias this to something if you
+  want; otherwise it will produce a harmless error message.
+
+  -zippyPinhead string
+       In zippyTalk mode, if user XXX shouts anything containing
+       this string, xboard sends the command "insult XXX" to ICS.
+       You can alias "insult" to whatever you like.  This feature is
+       disabled if the option is not set.
+
+  -zippyPassword string
+       If someone does an ICS "tell" to xboard that begins with this
+       password, it will type the same string back as a command with
+       the password stripped off.  For example, if the password is
+       !%%! and xboard sees the string "Darooha tells you: !%%!shout
+       Hi there", it will type the command "shout Hi there" to the
+       ICS.  This feature is disabled if the option is not set.
+
+  -zippyPassword2 string
+       If someone does an ICS "tell" to xboard that begins with this
+       password, it will send the same string directly to the chess
+        engine with the password stripped off.  This feature is
+        disabled if the option is not set.  Use with caution.
+
+  -zippyWrongPassword string
+       This is a joke feature.  If player XXX does an ICS "tell" to
+        xboard that begins with this password, it will send the
+        command "wrong XXX" to ICS.  ICS does not define a "wrong"
+        command, but you can alias it to whatever you like.  The
+        feature is supposed to be used after you've changed the
+        zippyPassword, so that people who knew the old password get a
+        funny message.  Disabled if not set.
+
+  -zippyUseI True/False or -zui/-xzui
+       If this option is true, Zippy's shouts use the "i" command with
+       funny verbs; otherwise they use the "shout" command.  Default
+       is true.  The variable is automatically set to false if the "i"
+       command is disabled on ICS by the admins.
+
+  -zippyLines filename
+       Name of the file Zippy looks in for sayings when -zt is set.
+       Default: yow.lines.  File format: There must be a single ^
+       character or null character (control-@, ASCII code \000) after
+       each saying.  Sayings can have newlines in them; Zippy will
+       remove them.  Sayings can be at most about 250 characters;
+       longer ones will be ignored.  The first saying in the file is
+       never used; you should put a comment there.  If you have only
+       one or two sayings in your file, Zippy may get into a loop
+       trying to choose one.  Zippy chooses a saying by seeking to a
+       random character position in the file, skipping ahead to the
+       *next* null character, and printing the saying that starts
+       there.  If it hits end of file without finding a new saying,
+       it tries again.  Yes, this is a dumb algorithm.
+
+  -zippyAcceptOnly string
+        Normally, Zippy automatically accepts challenges from all
+       opponents.  If this option is set to an ICS login name, Zippy
+       will auto-accept challenges only from that opponent.  Set the
+       option to an invalid name like "0" if you don't want Zippy to
+       auto-accept any challenges.  You can still accept challenges
+       manually.  Setting this option also suppresses the
+       zippyGameEnd feature described below.  Default: not set.
+
+  -zippyNoplayCrafty True/False or -znc/-xznc
+       If this option is set to True, if Zippy's opponent kibitzes
+       "Hello from Crafty" within the first couple of moves, Zippy
+       will abort the game and add the opponent to his noplay list.
+        Default: False.
+
+  -zippyGameStart string
+       At the start of each game Zippy plays (including resuming from
+       adjournment), it sends this string to ICS, followed by a newline.
+       If the option is not set, nothing is sent.
+
+  -zippyGameEnd string
+       At the end of each game, Zippy sends this string to ICS,
+        followed by a newline.  If you do not set this option, the
+        string "gameend" is sent.  This is not a legal ICS command,
+        but you can alias it to whatever you like, or you can leave
+        it undefined, which will cause ICS to print a harmless error
+        message after each game.  If you want to send more than one
+        command at the end of the game, on ICC you can alias gameend
+        to a "multi" command (see the ICC help files), but on FICS that
+        does not work.  Instead, use the -zippyGameEnd option to have
+        a string of several commands sent, with newlines in between.
+        For example, you could give WinBoard the command line option
+          -zippyGameEnd='say thanks\nseek 5 0\nseek 2 12\n'
+        You could give xboard the command line option
+          -xrm '*zippyGameEnd: say thanks\nseek 5 0\nseek 2 12\n'
+
+  -zippyAdjourn True/False or -zadj/-xzadj
+       Zippy will allow its opponent to adjourn if this option is
+       set to true.  Default: False.
+
+  -zippyAbort True/False or -zab/-xzab
+       Zippy will allow its opponent to abort if this option is
+       set to true.  Default: False.
+
+  -zippyVariants string
+       Zippy will decline to play chess variants unless their names
+       (as given in engine-intf.html) are listed in this option.
+       Default: "normal".  Example: "suicide,losers,bughouse,normal".
+
+       Obviously, zippyVariants other than "normal" will work only
+       if your chess engine can play those variants.  GNU Chess
+       certainly cannot, but there are some suicide and bughouse
+       engines available.  While playing bughouse, Zippy passes
+       certain extra information on to the engine; see
+       engine-intf.html.
+
+  -zippyBughouse int
+        This option controls how Zippy handles bughouse partner
+        requests.  If zippyBughouse is set to 0, Zippy will decline
+        any offers of partnership and tell the offerer that it cannot
+        play bughouse.  If zippyBughouse is set to 1, Zippy will
+        decline offers, but you can make Zippy your partner by having
+        *it* offer *you* partnership (by using zippyPassword or typing
+        directly into its window).  If zippyBughouse is set to 2,
+        Zippy will accept all offers of partnership, even if it
+        already has a partner.  zippyBughouse must be at least 1 for
+        partner tells to be relayed to the engine with the ptell
+        command.
+
+  -zippyMaxGames int 
+  -zippyReplayTimeout
+        If zippyMaxGames > 0, Zippy will play at most the given number
+       of consecutive games against the same opponent.  Thereafter,
+       Zippy will decline all challenges from that opponent (with an
+       explanatory tell) until either someone else has played or
+       zippyReplayTimeout seconds have elapsed.  Defaults:
+       zippyMaxGames=0, zippyReplayTimeout=120.
+
+       Note: If you use these options and you have Zippy doing seeks,
+       be sure to include the "m" flag in the ICS seek command.  If
+       you use "seek m", when a player responds to the seek, the ICS
+       gives Zippy a challenge that it can either accept or decline.
+       If you use a seek without the "m" flag, the ICS immediately
+       starts a game between Zippy and the first opponent to respond,
+       giving Zippy no choice about whether to accept or decline.
+
+=====================
+ENVIRONMENT VARIABLES
+=====================
+
+  For backward compatibility with version 4.0.2 and earlier only, most
+  of the command line options listed above can also be set as
+  environment variables.  For boolean options, use 0 for false, 1 for
+  true in the corresponding environment variable.  The following
+  environment variables are supported.:
+
+    ZIPPYPINHEAD, ZIPPYPASSWORD, ZIPPYPASSWORD2, ZIPPYWRONGPASSWORD,
+    ZIPPYUSEI, ZIPPYLINES, ZIPPYACCEPTONLY, ZIPPYNOPLAYCRAFTY,
+    ZIPPYGAMESTART, ZIPPYGAMEEND, ZIPPYADJOURN, ZIPPYABORT,
+    ZIPPYVARIANTS, ZIPPYBUGHOUSE
+
+  Warnings: (1) If both the command line option and the corresponding
+  environment variable are set, the environment variable takes
+  precedence!  (2) Some of the environment variables have names that
+  are too long for Solaris 2.5's /bin/csh.  Use the command line
+  options instead.  (3) Newer options DO NOT have environment
+  variables.  If you don't see it in the list above, it doesn't exist.
+  (4) In the future the environment variables may go away entirely.
+  It would be a good idea to stop using them now and switch to the
+  command line options.
+
+You may also want to customize other things by editing zippy.c and
+recompiling the program.
+
+=====================
+ICS VARIABLE SETTINGS
+=====================
+
+You need to do the following settings on ICS:
+
+    set highlight 0  <-- I'm not sure this is still needed
+    set oldmatch 0
+    set examine 0
+
+If you want to use the zippyPassword remote-control feature, it's a
+good idea to do the following, so that commands you give Zippy won't
+be truncated because the ICS wrapped a "tell" to a new line:
+
+    set wrap 0       <-- on ICC, or
+    set width 255    <-- on FICS
+
+You will probably want to turn on server-side autoflagging too:
+
+    set autoflag 1
+
+======
+SIMULS
+======
+
+It has been discovered that Zippy can play simuls on ICC (but not on
+FICS).  If you arrange for Zippy to send the ICC command "simulize" in
+the -zippyGameStart string, it will accept additional games while
+playing.  Zippy will use the same engine for every game, so whenever
+it switches opponents, the engine's state will be reset with the "new"
+command.  This will of course weaken its play, so don't enable simuls
+if you want your engine to have the highest possible rating.
+
+Zippy was never designed to work with simuls; it just works by
+accident, and it hasn't been tested much.  So please report any bugs
+you notice, but don't expect them to be fixed rapidly.
+
+Be sure to use xboard/WinBoard 4.2.4 or later for simuls, because some
+obscure bugs are fixed in that version that affect starting a game in
+the middle (as with resuming from adjournments or switching opponents
+in a simul).
+
+As noted under -zippyPlay above, you should have -getMoveList on to
+ensure that the engine knows the game history after switching boards
+and thus handles draw by repetition and by the 50-move rule correctly.
+It should, however, also work to turn off this option to speed things
+up and reduce network bandwidth, if you don't mind the engine
+occasionally failing to see draw possibilities.  Unfortunately,
+though, with Crafty 18.3 (and probably other versions too) as the
+engine, users trying this have experienced Crafty crashes.  This looks
+to me like a Crafty bug, but I wasn't able to reproduce it, so it
+remains a mystery.
+
+
+========
+EXAMPLES
+========
+
+Here are some small example command lines.  You may want to use more
+options; see the man page, info file, or help file, and perhaps the
+FAQ file too.  You may want to put the command line into a Unix shell
+script or Windows .BAT file, which is simply a text file of commands.
+On Unix, turn on execute permission for the file (chmod a+x file); on
+Windows, give it the extension .BAT.  You can then run it just like an
+ordinary program.  Please do not ask me questions about how to make a
+shell script or .BAT file; these are not functions of xboard/WinBoard,
+but basic operating system features that you can learn about from
+introductory books, friends, teachers, or the online help for your
+system.  The examples below should be more than enough to get you
+started.
+
+Unix command lines:
+
+# xboard + GNU Chess on chessclub.com
+xboard -zp -ics -icshost chessclub.com -icshelper timestamp \
+    -zippyPassword beer
+
+# xboard + GNU Chess on freechess.org
+xboard -zp -ics -icshost freechess.org -icshelper timeseal \
+
+# xboard + Crafty on chessclub.com
+xboard -zp -ics -icshost chessclub.com \
+    -fd /home/crafty -fcp crafty -icshelper timestamp \
+    -zippyPassword beer
+
+# xboard + Crafty on freechess.org
+xboard -zp -ics -icshost freechess.org -autoflag \
+    -fd /home/crafty -fcp crafty -icshelper timeseal \
+    -zippyPassword beer
+
+Windows command lines:
+
+REM WinBoard + GNU Chess on chessclub.com
+WinBoard -zp -ics -icshost chessclub.com -fcp GNUChess -icshelper timestamp -zippyPassword beer
+
+REM WinBoard + GNU Chess on freechess.org
+WinBoard -zp -ics -icshost freechess.org -fcp GNUChess -icshelper timeseal -zippyPassword beer
+
+REM WinBoard + Crafty on chessclub.com
+WinBoard -zp -ics -icshost chessclub.com -fd C:\Crafty -fcp WCrafty -icshelper timestamp -zippyPassword beer
+
+REM WinBoard + Crafty on freechess.org
+WinBoard -zp -ics -icshost freechess.org -fd C:\Crafty -fcp WCrafty -icshelper timestamp -zippyPassword beer
diff --git a/installer/WinBoard-4.2.7/zippy.lines b/installer/WinBoard-4.2.7/zippy.lines
new file mode 100644 (file)
index 0000000..247b127
--- /dev/null
@@ -0,0 +1,33 @@
+This is a sample zippy.lines file for xboard/WinBoard 4.0.4 or later.
+Text before the first caret, like this text, is a comment.
+^
+Here is the first saying.  Sayings are separated by caret characters,
+like the character that appears on the next line.
+^
+Here is the second saying.
+^
+Here is saying #3.  Note you don't need newlines before the caret characters.^
+Here is saying #4 -- note that it's okay for a saying
+to extend across more than one line.  The line breaks are ignored.
+^Saying #5: You don't need newlines after the caret characters either,
+but don't put two carets in a row.
+^
+Our sixth bit of wisdom is that you can use ASCII NUL characters
+(character code \000) instead of carets, but carets are easier to deal with
+in most text editors.  In version 4.0.3 and earlier, carets did not work;
+only NULs were allowed.
+^
+The seventh thing you should remember is that any saying more than 250
+characters long will not be used.  Therefore, because this saying is
+more than 250 characters long, it will never be used.  This is an
+extra sentence to make the saying more than 250 characters long so
+that the previous sentence will be true.
+^
+The eighth item to know is that when you are testing, you had better have 
+several valid sayings in your file; for various reasons, having too few 
+sayings can cause Zippy to get into an endless loop, or to be very slow.
+^
+As the ninth and final saying, let me add that you need a caret
+at the end of the file; any junk after the last caret is ignored.
+^
+
index 27d1a13..58282bd 100644 (file)
--- a/parser.c
+++ b/parser.c
@@ -2278,8 +2278,6 @@ YY_RULE_SETUP
          result == WhitePromotionQueen  || result == BlackPromotionQueen)) {
         if(gameInfo.variant == VariantShatranj || gameInfo.variant == VariantCourier)
             currentMoveString[4] = PieceToChar(BlackFerz);
-        else if(gameInfo.variant == VariantGreat)
-            currentMoveString[4] = PieceToChar(BlackMan);
         else
             currentMoveString[4] = PieceToChar(BlackQueen);
        currentMoveString[5] = NULLCHAR;
@@ -2429,6 +2427,7 @@ YY_RULE_SETUP
 
     if (gameInfo.variant == VariantXiangqi && /* [HGM] In Xiangqi rank stays same */
          currentMoveString[0] != currentMoveString[2] ) {
+        if (yytext[2+skip] == ONE) return (int) ImpossibleMove;
         currentMoveString[1] = yytext[2+skip];
     } else 
     if (WhiteOnMove(yyboardindex)) {
@@ -2463,11 +2462,6 @@ YY_RULE_SETUP
         (result == WhitePromotionQueen  || result == BlackPromotionQueen ||
          result == WhitePromotionKnight || result == BlackPromotionKnight)) {
         currentMoveString[4] = PieceToChar(BlackQueen);
-       // [HGM] shatranj: take care of variants without Queen
-       if(gameInfo.variant == VariantShatranj || gameInfo.variant == VariantCourier)
-            currentMoveString[4] = PieceToChar(BlackFerz);
-       if(gameInfo.variant == VariantGreat)
-            currentMoveString[4] = PieceToChar(BlackMan);
        currentMoveString[5] = NULLCHAR;
     }
 
index 48e78f3..bdf11d0 100755 (executable)
--- a/parser.l
+++ b/parser.l
@@ -87,6 +87,16 @@ char *yy_text = (char *) yytext;
 \r
 #ifdef FLEX_SCANNER\r
 /* This is flex */\r
+/* [AP] use prototypes in function declarations */\r
+#define YY_USE_PROTOS\r
+\r
+#ifdef YY_USE_PROTOS\r
+#define YY_PROTO(proto) proto\r
+#else\r
+#define YY_PROTO(proto) ()\r
+#endif\r
+/* end of [AP] fix */\r
+\r
 #undef YY_INPUT\r
 #define YY_INPUT(buf, result, max_size) my_yy_input(buf, &result, max_size)\r
 #undef YY_DECL\r
@@ -1040,9 +1050,9 @@ static YY_BUFFER_STATE my_file_buffer = NULL;
 */\r
 int yyoffset()\r
 {\r
-    int pos = yy_c_buf_p - yy_current_buffer->yy_ch_buf;\r
+    int pos = yy_c_buf_p - YY_CURRENT_BUFFER->yy_ch_buf;\r
 \r
-    return(ftell(yy_current_buffer->yy_input_file) -\r
+    return(ftell(YY_CURRENT_BUFFER->yy_input_file) -\r
          yy_n_chars + pos);\r
 }\r
 \r
diff --git a/po/LINGUAS b/po/LINGUAS
new file mode 100755 (executable)
index 0000000..3a8928a
--- /dev/null
@@ -0,0 +1,2 @@
+# whitespace separated list of translated languages goes below
+tr de
diff --git a/po/Makefile.in.in b/po/Makefile.in.in
new file mode 100755 (executable)
index 0000000..5583699
--- /dev/null
@@ -0,0 +1,354 @@
+# Makefile for PO directory in any package using GNU gettext.
+# Copyright (C) 1995-1997, 2000-2003 by Ulrich Drepper <drepper@gnu.ai.mit.edu>
+#
+# This file can be copied and used freely without restrictions.  It can
+# be used in projects which are not available under the GNU General Public
+# License but which still want to provide support for the GNU gettext
+# functionality.
+# Please note that the actual code of GNU gettext is covered by the GNU
+# General Public License and is *not* in the public domain.
+
+PACKAGE = @PRODUCT@
+VERSION = @VERSION@
+
+SHELL = /bin/sh
+@SET_MAKE@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+
+prefix = @prefix@
+exec_prefix = @exec_prefix@
+datarootdir = @datarootdir@
+datadir = @datadir@
+localedir = $(datadir)/locale
+gettextsrcdir = $(datadir)/gettext/po
+
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+mkinstalldirs = $(SHELL) $(MKINSTALLDIRS)
+
+GMSGFMT = @GMSGFMT@
+MSGFMT = @MSGFMT@
+XGETTEXT = @XGETTEXT@
+MSGMERGE = msgmerge
+MSGMERGE_UPDATE = @MSGMERGE@ --update
+MSGINIT = msginit
+MSGCONV = msgconv
+MSGFILTER = msgfilter
+
+POFILES = @POFILES@
+GMOFILES = @GMOFILES@
+UPDATEPOFILES = @UPDATEPOFILES@
+DUMMYPOFILES = @DUMMYPOFILES@
+DISTFILES.common = Makefile.in.in remove-potcdate.sin \
+$(DISTFILES.common.extra1) $(DISTFILES.common.extra2) $(DISTFILES.common.extra3)
+DISTFILES = $(DISTFILES.common) Makevars POTFILES.in $(DOMAIN).pot stamp-po \
+$(POFILES) $(GMOFILES) \
+$(DISTFILES.extra1) $(DISTFILES.extra2) $(DISTFILES.extra3)
+
+POTFILES = \
+
+CATALOGS = @CATALOGS@
+
+# Makevars gets inserted here. (Don't remove this line!)
+
+.SUFFIXES:
+.SUFFIXES: .po .gmo .mo .sed .sin .nop .po-update
+
+.po.mo:
+       @echo "$(MSGFMT) -c -o $@ $<"; \
+       $(MSGFMT) -c -o t-$@ $< && mv t-$@ $@
+
+.po.gmo:
+       @lang=`echo $* | sed -e 's,.*/,,'`; \
+       test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
+       echo "$${cdcmd}rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics -o $${lang}.gmo $${lang}.po"; \
+       cd $(srcdir) && rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics -o t-$${lang}.gmo $${lang}.po && mv t-$${lang}.gmo $${lang}.gmo
+
+.sin.sed:
+       sed -e '/^#/d' $< > t-$@
+       mv t-$@ $@
+
+
+all: all-@USE_NLS@
+
+all-yes: stamp-po
+all-no:
+
+# stamp-po is a timestamp denoting the last time at which the CATALOGS have
+# been loosely updated. Its purpose is that when a developer or translator
+# checks out the package via CVS, and the $(DOMAIN).pot file is not in CVS,
+# "make" will update the $(DOMAIN).pot and the $(CATALOGS), but subsequent
+# invocations of "make" will do nothing. This timestamp would not be necessary
+# if updating the $(CATALOGS) would always touch them; however, the rule for
+# $(POFILES) has been designed to not touch files that don't need to be
+# changed.
+stamp-po: $(srcdir)/$(DOMAIN).pot
+       test -z "$(CATALOGS)" || $(MAKE) $(CATALOGS)
+       @echo "touch stamp-po"
+       @echo timestamp > stamp-poT
+       @mv stamp-poT stamp-po
+
+# Note: Target 'all' must not depend on target '$(DOMAIN).pot-update',
+# otherwise packages like GCC can not be built if only parts of the source
+# have been downloaded.
+
+# This target rebuilds $(DOMAIN).pot; it is an expensive operation.
+# Note that $(DOMAIN).pot is not touched if it doesn't need to be changed.
+$(DOMAIN).pot-update: $(POTFILES) $(srcdir)/POTFILES.in remove-potcdate.sed
+       $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \
+         --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) \
+         --files-from=$(srcdir)/POTFILES.in \
+         --copyright-holder='$(COPYRIGHT_HOLDER)' \
+         --msgid-bugs-address='$(MSGID_BUGS_ADDRESS)'
+       test ! -f $(DOMAIN).po || { \
+         if test -f $(srcdir)/$(DOMAIN).pot; then \
+           sed -f remove-potcdate.sed < $(srcdir)/$(DOMAIN).pot > $(DOMAIN).1po && \
+           sed -f remove-potcdate.sed < $(DOMAIN).po > $(DOMAIN).2po && \
+           if cmp $(DOMAIN).1po $(DOMAIN).2po >/dev/null 2>&1; then \
+             rm -f $(DOMAIN).1po $(DOMAIN).2po $(DOMAIN).po; \
+           else \
+             rm -f $(DOMAIN).1po $(DOMAIN).2po $(srcdir)/$(DOMAIN).pot && \
+             mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \
+           fi; \
+         else \
+           mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \
+         fi; \
+       }
+
+# This rule has no dependencies: we don't need to update $(DOMAIN).pot at
+# every "make" invocation, only create it when it is missing.
+# Only "make $(DOMAIN).pot-update" or "make dist" will force an update.
+$(srcdir)/$(DOMAIN).pot:
+       $(MAKE) $(DOMAIN).pot-update
+
+# This target rebuilds a PO file if $(DOMAIN).pot has changed.
+# Note that a PO file is not touched if it doesn't need to be changed.
+$(POFILES): $(srcdir)/$(DOMAIN).pot
+       @lang=`echo $@ | sed -e 's,.*/,,' -e 's/\.po$$//'`; \
+       test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
+       echo "$${cdcmd}$(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot"; \
+       cd $(srcdir) && $(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot
+
+
+install: install-exec install-data
+install-exec:
+install-data: install-data-@USE_NLS@
+       if test "$(PACKAGE)" = "gettext-tools"; then \
+         $(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \
+         for file in $(DISTFILES.common) Makevars.template; do \
+           $(INSTALL_DATA) $(srcdir)/$$file \
+                           $(DESTDIR)$(gettextsrcdir)/$$file; \
+         done; \
+         for file in Makevars; do \
+           rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \
+         done; \
+       else \
+         : ; \
+       fi
+install-data-no: all
+install-data-yes: all
+       $(mkinstalldirs) $(DESTDIR)$(datadir)
+       @catalogs='$(CATALOGS)'; \
+       for cat in $$catalogs; do \
+         cat=`basename $$cat`; \
+         lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \
+         dir=$(localedir)/$$lang/LC_MESSAGES; \
+         $(mkinstalldirs) $(DESTDIR)$$dir; \
+         if test -r $$cat; then realcat=$$cat; else realcat=$(srcdir)/$$cat; fi; \
+         $(INSTALL_DATA) $$realcat $(DESTDIR)$$dir/$(DOMAIN).mo; \
+         echo "installing $$realcat as $(DESTDIR)$$dir/$(DOMAIN).mo"; \
+         for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \
+           if test -n "$$lc"; then \
+             if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \
+               link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \
+               mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
+               mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
+               (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \
+                for file in *; do \
+                  if test -f $$file; then \
+                    ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \
+                  fi; \
+                done); \
+               rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
+             else \
+               if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \
+                 :; \
+               else \
+                 rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \
+                 mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
+               fi; \
+             fi; \
+             rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \
+             ln -s ../LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \
+             ln $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \
+             cp -p $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \
+             echo "installing $$realcat link as $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo"; \
+           fi; \
+         done; \
+       done
+
+install-strip: install
+
+installdirs: installdirs-exec installdirs-data
+installdirs-exec:
+installdirs-data: installdirs-data-@USE_NLS@
+       if test "$(PACKAGE)" = "gettext-tools"; then \
+         $(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \
+       else \
+         : ; \
+       fi
+installdirs-data-no:
+installdirs-data-yes:
+       $(mkinstalldirs) $(DESTDIR)$(datadir)
+       @catalogs='$(CATALOGS)'; \
+       for cat in $$catalogs; do \
+         cat=`basename $$cat`; \
+         lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \
+         dir=$(localedir)/$$lang/LC_MESSAGES; \
+         $(mkinstalldirs) $(DESTDIR)$$dir; \
+         for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \
+           if test -n "$$lc"; then \
+             if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \
+               link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \
+               mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
+               mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
+               (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \
+                for file in *; do \
+                  if test -f $$file; then \
+                    ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \
+                  fi; \
+                done); \
+               rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
+             else \
+               if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \
+                 :; \
+               else \
+                 rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \
+                 mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
+               fi; \
+             fi; \
+           fi; \
+         done; \
+       done
+
+# Define this as empty until I found a useful application.
+installcheck:
+
+uninstall: uninstall-exec uninstall-data
+uninstall-exec:
+uninstall-data: uninstall-data-@USE_NLS@
+       if test "$(PACKAGE)" = "gettext-tools"; then \
+         for file in $(DISTFILES.common) Makevars.template; do \
+           rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \
+         done; \
+       else \
+         : ; \
+       fi
+uninstall-data-no:
+uninstall-data-yes:
+       catalogs='$(CATALOGS)'; \
+       for cat in $$catalogs; do \
+         cat=`basename $$cat`; \
+         lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \
+         for lc in LC_MESSAGES $(EXTRA_LOCALE_CATEGORIES); do \
+           rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \
+         done; \
+       done
+
+check: all
+
+info dvi ps pdf html tags TAGS ctags CTAGS ID:
+
+mostlyclean:
+       rm -f remove-potcdate.sed
+       rm -f stamp-poT
+       rm -f core core.* $(DOMAIN).po $(DOMAIN).1po $(DOMAIN).2po *.new.po
+       rm -fr *.o
+
+clean: mostlyclean
+
+distclean: clean
+       rm -f Makefile Makefile.in POTFILES *.mo
+
+maintainer-clean: distclean
+       @echo "This command is intended for maintainers to use;"
+       @echo "it deletes files that may require special tools to rebuild."
+       rm -f stamp-po $(GMOFILES)
+
+distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)
+dist distdir:
+       $(MAKE) update-po
+       @$(MAKE) dist2
+# This is a separate target because 'update-po' must be executed before.
+dist2: $(DISTFILES)
+       dists="$(DISTFILES)"; \
+       if test "$(PACKAGE)" = "gettext-tools"; then \
+         dists="$$dists Makevars.template"; \
+       fi; \
+       if test -f $(srcdir)/ChangeLog; then \
+         dists="$$dists ChangeLog"; \
+       fi; \
+       for i in 0 1 2 3 4 5 6 7 8 9; do \
+         if test -f $(srcdir)/ChangeLog.$$i; then \
+           dists="$$dists ChangeLog.$$i"; \
+         fi; \
+       done; \
+       if test -f $(srcdir)/LINGUAS; then dists="$$dists LINGUAS"; fi; \
+       for file in $$dists; do \
+         if test -f $$file; then \
+           cp -p $$file $(distdir); \
+         else \
+           cp -p $(srcdir)/$$file $(distdir); \
+         fi; \
+       done
+
+update-po: Makefile
+       $(MAKE) $(DOMAIN).pot-update
+       test -z "$(UPDATEPOFILES)" || $(MAKE) $(UPDATEPOFILES)
+       $(MAKE) update-gmo
+
+# General rule for updating PO files.
+
+.nop.po-update:
+       @lang=`echo $@ | sed -e 's/\.po-update$$//'`; \
+       if test "$(PACKAGE)" = "gettext-tools"; then PATH=`pwd`/../src:$$PATH; fi; \
+       tmpdir=`pwd`; \
+       echo "$$lang:"; \
+       test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
+       echo "$${cdcmd}$(MSGMERGE) $$lang.po $(DOMAIN).pot -o $$lang.new.po"; \
+       cd $(srcdir); \
+       if $(MSGMERGE) $$lang.po $(DOMAIN).pot -o $$tmpdir/$$lang.new.po; then \
+         if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \
+           rm -f $$tmpdir/$$lang.new.po; \
+         else \
+           if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \
+             :; \
+           else \
+             echo "msgmerge for $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \
+             exit 1; \
+           fi; \
+         fi; \
+       else \
+         echo "msgmerge for $$lang.po failed!" 1>&2; \
+         rm -f $$tmpdir/$$lang.new.po; \
+       fi
+
+$(DUMMYPOFILES):
+
+update-gmo: Makefile $(GMOFILES)
+       @:
+
+Makefile: Makefile.in.in $(top_builddir)/config.status @POMAKEFILEDEPS@
+       cd $(top_builddir) \
+         && CONFIG_FILES=$(subdir)/$@.in CONFIG_HEADERS= \
+              $(SHELL) ./config.status
+
+force:
+
+# Tell versions [3.59,3.63) of GNU make not to export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/po/Makevars b/po/Makevars
new file mode 100755 (executable)
index 0000000..7ca6b7a
--- /dev/null
@@ -0,0 +1,41 @@
+# Makefile variables for PO directory in any package using GNU gettext.
+
+# Usually the message domain is the same as the package name.
+DOMAIN = $(PACKAGE)
+
+# These two variables depend on the location of this directory.
+subdir = po
+top_builddir = ..
+
+# These options get passed to xgettext.
+XGETTEXT_OPTIONS = --keyword=_ --keyword=N_ -cLabel
+
+# This is the copyright holder that gets inserted into the header of the
+# $(DOMAIN).pot file.  Set this to the copyright holder of the surrounding
+# package.  (Note that the msgstr strings, extracted from the package's
+# sources, belong to the copyright holder of the package.)  Translators are
+# expected to transfer the copyright for their translations to this person
+# or entity, or to disclaim their copyright.  The empty string stands for
+# the public domain; in this case the translators are expected to disclaim
+# their copyright.
+COPYRIGHT_HOLDER = Free Software Foundation, Inc.
+
+# This is the email address or URL to which the translators shall report
+# bugs in the untranslated strings:
+# - Strings which are not entire sentences, see the maintainer guidelines
+#   in the GNU gettext documentation, section 'Preparing Strings'.
+# - Strings which use unclear terms or require additional context to be
+#   understood.
+# - Strings which make invalid assumptions about notation of date, time or
+#   money.
+# - Pluralisation problems.
+# - Incorrect English spelling.
+# - Incorrect formatting.
+# It can be your email address, or a mailing list address where translators
+# can write to without being subscribed, or the URL of a web page through
+# which the translators can contact you.
+MSGID_BUGS_ADDRESS =
+
+# This is the list of locale categories, beyond LC_MESSAGES, for which the
+# message catalogs shall be used.  It is usually empty.
+EXTRA_LOCALE_CATEGORIES =
diff --git a/po/POTFILES.in b/po/POTFILES.in
new file mode 100755 (executable)
index 0000000..7de6241
--- /dev/null
@@ -0,0 +1,5 @@
+xboard.c
+xedittags.c
+xgamelist.c
+xhistory.c
+backend.c
diff --git a/po/de.po b/po/de.po
new file mode 100644 (file)
index 0000000..9db4a44
--- /dev/null
+++ b/po/de.po
@@ -0,0 +1,1335 @@
+# XBoard -- a graphical chessboard for X
+# Copyright (C) 1991 by Digital Equipment Corporation, Maynard, Massachusetts.
+# Enhancements Copyright (C) 1992-98 Free Software Foundation, Inc.
+# This file is distributed under the same license as the XBoard package.
+# Arun Persaud <arun@nubati.net>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: XBoard 4.2.7\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2003-12-01 20:00+0200\n"
+"PO-Revision-Date: 2009-04-09 21:17-0700\n"
+"Last-Translator: Arun Persaud <arun@nubati.net>\n"
+"Language-Team: German\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: xboard.c:514
+msgid "Reset Game"
+msgstr "Spiel zurücksetzen"
+
+#: xboard.c:516
+msgid "Load Game"
+msgstr "Spiel laden"
+
+#: xboard.c:517
+msgid "Load Next Game"
+msgstr "Nächstes Spiel laden"
+
+#: xboard.c:518
+msgid "Load Previous Game"
+msgstr "Vorheriges Spiel laden"
+
+#: xboard.c:519
+msgid "Reload Same Game"
+msgstr "Spiel erneut laden"
+
+#: xboard.c:520
+msgid "Save Game"
+msgstr "Spiel speichern"
+
+#: xboard.c:522
+msgid "Copy Game"
+msgstr "Spiel kopieren"
+
+#: xboard.c:523
+msgid "Paste Game"
+msgstr "Spiel einfügen"
+
+#: xboard.c:525
+msgid "Load Position"
+msgstr "Stellung laden"
+
+#: xboard.c:526
+msgid "Load Next Position"
+msgstr "Nächste Stellung laden"
+
+#: xboard.c:527
+msgid "Load Previous Position"
+msgstr "Vorherige Stellung laden"
+
+#: xboard.c:528
+msgid "Reload Same Position"
+msgstr "Stellung erneut laden"
+
+#: xboard.c:529
+msgid "Save Position"
+msgstr "Stellung speichern"
+
+#: xboard.c:531
+msgid "Copy Position"
+msgstr "Stellung kopieren"
+
+#: xboard.c:532
+msgid "Paste Position"
+msgstr "Stellung einfügen"
+
+#: xboard.c:534
+msgid "Mail Move"
+msgstr "Verschicke Zug"
+
+#: xboard.c:535
+msgid "Reload CMail Message"
+msgstr "CMail Nachricht erneut laden"
+
+#: xboard.c:537
+msgid "Exit"
+msgstr "Beenden"
+
+#: xboard.c:542
+msgid "Machine White"
+msgstr "Computer weiß"
+
+#: xboard.c:543
+msgid "Machine Black"
+msgstr "Computer schwarz"
+
+#: xboard.c:544
+msgid "Two Machines"
+msgstr "Zwei Computer"
+
+#: xboard.c:545
+msgid "Analysis Mode"
+msgstr "Analyse-Modus"
+
+#: xboard.c:546
+msgid "Analyze File"
+msgstr "Datei analyzieren"
+
+#: xboard.c:547
+msgid "ICS Client"
+msgstr ""
+
+#: xboard.c:548
+msgid "Edit Game"
+msgstr "Spiel bearbeiten"
+
+#: xboard.c:549
+msgid "Edit Position"
+msgstr "Stellung bearbeiten"
+
+#: xboard.c:550
+msgid "Training"
+msgstr "Training"
+
+#: xboard.c:552
+msgid "Show Game List"
+msgstr "Spielliste anzeigen"
+
+#: xboard.c:553
+msgid "Show Move List"
+msgstr "Züge anzeigen"
+
+#: xboard.c:554 xedittags.c:393
+msgid "Edit Tags"
+msgstr "Markierung bearbeiten"
+
+#: xboard.c:555
+msgid "Edit Comment"
+msgstr "Kommentar bearbeiten"
+
+#: xboard.c:556
+msgid "ICS Input Box"
+msgstr "ICS Eingabefeld"
+
+#: xboard.c:557
+msgid "Pause"
+msgstr "Pause"
+
+#: xboard.c:562
+msgid "Accept"
+msgstr "Annehmen"
+
+#: xboard.c:563
+msgid "Decline"
+msgstr "Ablehnen"
+
+#: xboard.c:564
+msgid "Rematch"
+msgstr ""
+
+#: xboard.c:566
+msgid "Call Flag"
+msgstr "Zeit reklamieren"
+
+#: xboard.c:567
+msgid "Draw"
+msgstr "Remi"
+
+#: xboard.c:568
+msgid "Adjourn"
+msgstr "Aussetzen"
+
+#: xboard.c:569
+msgid "Abort"
+msgstr "Abbrechen"
+
+#: xboard.c:570
+msgid "Resign"
+msgstr "Aufgeben"
+
+#: xboard.c:572
+msgid "Stop Observing"
+msgstr "Beobachtung beenden"
+
+#: xboard.c:573
+msgid "Stop Examining"
+msgstr "Untersuchung beenden"
+
+#: xboard.c:578
+msgid "Backward"
+msgstr "Zurück"
+
+#: xboard.c:579
+msgid "Forward"
+msgstr "Vorwärts"
+
+#: xboard.c:580
+msgid "Back to Start"
+msgstr "Zurück zum Anfang"
+
+#: xboard.c:581
+msgid "Forward to End"
+msgstr "Vorwärts zum Ende"
+
+#: xboard.c:582
+msgid "Revert"
+msgstr ""
+
+#: xboard.c:583
+msgid "Truncate Game"
+msgstr ""
+
+#: xboard.c:585
+msgid "Move Now"
+msgstr "Jetzt ziehen"
+
+#: xboard.c:586
+msgid "Retract Move"
+msgstr "Zug zurücknehmen"
+
+#: xboard.c:591
+msgid "Always Queen"
+msgstr "Immer Königin"
+
+#: xboard.c:592
+msgid "Animate Dragging"
+msgstr "Ziehen animieren"
+
+#: xboard.c:593
+msgid "Animate Moving"
+msgstr "Züge animieren"
+
+#: xboard.c:594
+msgid "Auto Comment"
+msgstr ""
+
+#: xboard.c:595
+msgid "Auto Flag"
+msgstr "Zeit automatisch reklamieren"
+
+#: xboard.c:596
+msgid "Auto Flip View"
+msgstr "Brett automatisch drehen"
+
+#: xboard.c:597
+msgid "Auto Observe"
+msgstr ""
+
+#: xboard.c:598
+msgid "Auto Raise Board"
+msgstr ""
+
+#: xboard.c:599
+msgid "Auto Save"
+msgstr "Automatisch speichern"
+
+#: xboard.c:600
+msgid "Blindfold"
+msgstr ""
+
+#: xboard.c:601
+msgid "Flash Moves"
+msgstr ""
+
+#: xboard.c:602
+msgid "Flip View"
+msgstr "Brett drehen"
+
+#: xboard.c:603
+msgid "Get Move List"
+msgstr ""
+
+#: xboard.c:605
+msgid "Highlight Dragging"
+msgstr ""
+
+#: xboard.c:607
+msgid "Highlight Last Move"
+msgstr ""
+
+#: xboard.c:608
+msgid "Move Sound"
+msgstr ""
+
+#: xboard.c:609
+msgid "ICS Alarm"
+msgstr "ICS-Alarm"
+
+#: xboard.c:610
+msgid "Old Save Style"
+msgstr ""
+
+#: xboard.c:611
+msgid "Periodic Updates"
+msgstr ""
+
+#: xboard.c:612
+msgid "Ponder Next Move"
+msgstr "Nächsten Zug abwägen"
+
+#: xboard.c:613
+msgid "Popup Exit Message"
+msgstr ""
+
+#: xboard.c:614
+msgid "Popup Move Errors"
+msgstr ""
+
+#: xboard.c:615
+msgid "Premove"
+msgstr ""
+
+#: xboard.c:616
+msgid "Quiet Play"
+msgstr ""
+
+#: xboard.c:617
+msgid "Show Coords"
+msgstr "Zeige Koordinaten"
+
+#: xboard.c:618
+msgid "Show Thinking"
+msgstr ""
+
+#: xboard.c:619
+msgid "Test Legality"
+msgstr ""
+
+#: xboard.c:624
+msgid "Info XBoard"
+msgstr "Info XBoard"
+
+#: xboard.c:625
+msgid "Man XBoard"
+msgstr "Man XBoard"
+
+#: xboard.c:627
+msgid "Hint"
+msgstr "Hinweiss"
+
+#: xboard.c:628
+msgid "Book"
+msgstr "Buch"
+
+#: xboard.c:630 xboard.c:6746
+msgid "About XBoard"
+msgstr "Über XBoard"
+
+#: xboard.c:635
+msgid "File"
+msgstr "Datei"
+
+#: xboard.c:636
+msgid "Mode"
+msgstr ""
+
+#: xboard.c:637
+msgid "Action"
+msgstr "Aktion"
+
+#: xboard.c:638
+msgid "Step"
+msgstr "Züge"
+
+#: xboard.c:639
+msgid "Options"
+msgstr "Optionen"
+
+#: xboard.c:640
+msgid "Help"
+msgstr "Hilfe"
+
+#. Label on pause button
+#: xboard.c:646
+msgid "P"
+msgstr "P"
+
+#: xboard.c:658 xboard.c:7440
+msgid "White"
+msgstr "Weiss"
+
+#: xboard.c:658 xboard.c:660 xboard.c:675
+msgid "Pawn"
+msgstr "Bauer"
+
+#: xboard.c:658 xboard.c:660 xboard.c:675 xboard.c:5218 xboard.c:5277
+msgid "Knight"
+msgstr "Springer"
+
+#: xboard.c:658 xboard.c:660 xboard.c:675 xboard.c:5216
+msgid "Bishop"
+msgstr "Läufer"
+
+#: xboard.c:658 xboard.c:660 xboard.c:675 xboard.c:5214
+msgid "Rook"
+msgstr "Turm"
+
+#: xboard.c:659 xboard.c:661 xboard.c:675 xboard.c:5212
+msgid "Queen"
+msgstr "Königin"
+
+#: xboard.c:659 xboard.c:661 xboard.c:5222
+msgid "King"
+msgstr "König"
+
+#: xboard.c:659 xboard.c:661
+msgid "Empty square"
+msgstr "Leeres Feld"
+
+#: xboard.c:659 xboard.c:661
+msgid "Clear board"
+msgstr ""
+
+#: xboard.c:660 xboard.c:7454
+msgid "Black"
+msgstr "Schwarz"
+
+#: xboard.c:1666
+#, c-format
+msgid "%s: Can't access XPM directory %s\n"
+msgstr "%s: XPM-Ordner nicht erreichbar %s\n"
+
+#: xboard.c:1689
+#, c-format
+msgid "Available `%s' sizes:\n"
+msgstr "Mögliche »%s« Größen:\n"
+
+#: xboard.c:1725
+#, c-format
+msgid "Error: No `%s' files!\n"
+msgstr "Fehler: Keine »%s« Datein!\n"
+
+#: xboard.c:1741
+msgid ""
+"Warning: No DIR structure found on this system --\n"
+"         Unable to autosize for XPM/XIM pieces.\n"
+"   Please report this error to frankm@hiwaay.net.\n"
+"   Include system type & operating system in message.\n"
+msgstr ""
+
+#: xboard.c:1802
+#, c-format
+msgid "%s: unrecognized color %s\n"
+msgstr "%s: nicht erkannte Farbe %s\n"
+
+#: xboard.c:1812
+#, c-format
+msgid "%s: can't parse foreground color in `%s'\n"
+msgstr ""
+
+#: xboard.c:1883
+#, c-format
+msgid "%s: unrecognized argument %s\n"
+msgstr "%s: nicht erkanntes Argument %s\n"
+
+#: xboard.c:1892
+#, c-format
+msgid "%s: can't cd to CHESSDIR: "
+msgstr "%s: cd zu CHESSDIR funktioniert nicht: "
+
+#: xboard.c:1928
+#, c-format
+msgid "%s: bad boardSize syntax %s\n"
+msgstr "%s: falsche boardSize Syntax %s\n"
+
+#: xboard.c:1964
+#, c-format
+msgid "%s: unrecognized boardSize name %s\n"
+msgstr ""
+
+#: xboard.c:1982
+#, c-format
+msgid "Error expanding path name \"%s\"\n"
+msgstr ""
+
+#: xboard.c:1987
+#, c-format
+msgid ""
+"XBoard square size (hint): %d\n"
+"%s fulldir:%s:\n"
+msgstr ""
+
+#: xboard.c:1993
+#, c-format
+msgid "Closest %s size: %d\n"
+msgstr "Nächste %s Größe: %d\n"
+
+#: xboard.c:2105
+#, c-format
+msgid "%s: too few colors available; trying monochrome mode\n"
+msgstr "%s: nicht genügend Farben vorhanden; versuche monochrom Modus\n"
+
+#: xboard.c:2110
+#, c-format
+msgid "white pixel = 0x%lx, black pixel = 0x%lx\n"
+msgstr ""
+
+#: xboard.c:2128
+#, c-format
+msgid "%s: can't parse color names; disabling colorization\n"
+msgstr ""
+
+#: xboard.c:2308 xboard.c:2318
+#, c-format
+msgid "%s: messageWidget geometry error %d %d %d %d %d\n"
+msgstr "%s: messageWidget Geometriefehler %d %d %d %d %d\n"
+
+#: xboard.c:2339
+#, c-format
+msgid "%s: titleWidget geometry error %d %d %d %d %d\n"
+msgstr "%s: titleWidget Geometriefehler %d %d %d %d %d\n"
+
+#: xboard.c:2909
+msgid "Unable to create font set.\n"
+msgstr "Nicht in der Lage Schriftsatz zu generieren.\n"
+
+#: xboard.c:2917
+#, c-format
+msgid "%s: no fonts match pattern %s\n"
+msgstr "%s: keine Schriften stimmen mit Muster %s überein\n"
+
+#: xboard.c:2960
+#, c-format
+msgid ""
+"resolved %s at pixel size %d\n"
+"  to %s\n"
+msgstr ""
+
+#: xboard.c:3084
+#, c-format
+msgid "%s: error loading XIM!\n"
+msgstr "%s: Fehler beim Laden von XIM!\n"
+
+#: xboard.c:3176
+msgid "XIM pieces cannot be used in monochrome mode"
+msgstr "XIM Figuren können nicht im Monochrom-modus benutzt werden"
+
+#: xboard.c:3180
+msgid ""
+"\n"
+"Loading XIMs...\n"
+msgstr ""
+
+#: xboard.c:3194 xboard.c:3215 xboard.c:3222 xboard.c:3313 xboard.c:3334
+#: xboard.c:3345
+#, c-format
+msgid "(File:%s:) "
+msgstr "(Datei:%s) "
+
+#: xboard.c:3210 xboard.c:3327
+msgid "light square "
+msgstr "weisses Feld "
+
+#: xboard.c:3218 xboard.c:3341
+msgid "dark square "
+msgstr "schwarze Feld "
+
+#: xboard.c:3229 xboard.c:3354
+msgid "Done.\n"
+msgstr "Fertig.\n"
+
+#: xboard.c:3271
+msgid "XPM pieces cannot be used in monochrome mode"
+msgstr "XPM Figuren können nicht im Monochrom-modus benutzt werden"
+
+#: xboard.c:3281
+#, c-format
+msgid "No builtin XPM pieces of size %d\n"
+msgstr "Keine XPM-Figuren der Größe %d vorhanden\n"
+
+#: xboard.c:3291
+#, c-format
+msgid "Error %d loading XPM image \"%s\"\n"
+msgstr "Fehler %d beim Laden von XPM-Bild »%s«\n"
+
+#: xboard.c:3302
+msgid ""
+"\n"
+"Loading XPMs...\n"
+msgstr ""
+"\n"
+"Lade XPMs…\n"
+
+#: xboard.c:3318 xboard.c:3338 xboard.c:3349
+#, c-format
+msgid "Error %d loading XPM file \"%s\"\n"
+msgstr ""
+
+#: xboard.c:3431
+#, c-format
+msgid "Can't open bitmap file %s"
+msgstr "Bitmap file %s kann nicht geöffnet werden"
+
+#: xboard.c:3434
+#, c-format
+msgid "Invalid bitmap in file %s"
+msgstr "Ungültiges Bitmap in Datei %s"
+
+#: xboard.c:3437
+#, c-format
+msgid "Ran out of memory reading bitmap file %s"
+msgstr ""
+
+#: xboard.c:3441
+#, c-format
+msgid "Unknown XReadBitmapFile error %d on file %s"
+msgstr "Unbekannter XReadBitmapFile-Fehler %d bei Datei %s"
+
+#: xboard.c:3445
+#, c-format
+msgid "%s: %s...using built-in\n"
+msgstr ""
+
+#: xboard.c:3449
+#, c-format
+msgid "%s: Bitmap %s is %dx%d, not %dx%d...using built-in\n"
+msgstr ""
+
+#: xboard.c:3456
+#, c-format
+msgid "%s: No built-in bitmap for %s; giving up\n"
+msgstr ""
+
+#: xboard.c:3652
+msgid "Drop"
+msgstr ""
+
+#: xboard.c:4573 xboard.c:4576 xboard.c:4832 xboard.c:5078 xboard.c:5087
+#: xboard.c:5340 xedittags.c:150 xedittags.c:248
+msgid "ok"
+msgstr "Ok"
+
+#: xboard.c:4587 xboard.c:4590 xboard.c:4839 xboard.c:5082 xboard.c:5088
+#: xboard.c:5127 xboard.c:5225 xboard.c:5273 xboard.c:7014 xboard.c:7055
+#: xedittags.c:157 xedittags.c:259
+msgid "cancel"
+msgstr "abbrechen"
+
+#: xboard.c:4601 xboard.c:4604 xboard.c:4841 xedittags.c:159
+msgid "clear"
+msgstr ""
+
+#: xboard.c:4614 xboard.c:4617 xboard.c:5008 xedittags.c:128 xedittags.c:282
+#: xgamelist.c:226 xgamelist.c:292
+msgid "close"
+msgstr "schließen"
+
+#: xboard.c:4628 xboard.c:4631 xboard.c:5010 xedittags.c:130 xedittags.c:293
+msgid "edit"
+msgstr ""
+
+#: xboard.c:4873
+msgid "ICS Input"
+msgstr ""
+
+#: xboard.c:5062
+msgid "File name prompt"
+msgstr ""
+
+#: xboard.c:5164 xboard.c:6864 xboard.c:6878
+msgid "Error"
+msgstr "Fehler"
+
+#: xboard.c:5164
+msgid "Can't open file"
+msgstr "Datei kann nicht geöffnet werden"
+
+#: xboard.c:5169
+msgid "Failed to open file"
+msgstr "Fehler beim Öffnen der Datei"
+
+#: xboard.c:5198
+msgid "Promotion"
+msgstr "Umwandlung"
+
+#: xboard.c:5207
+msgid "Promote pawn to what?"
+msgstr "In Was soll der Bauer umgewandelt werden?"
+
+#: xboard.c:5525 backend.c:5699
+msgid "Cannot build game list"
+msgstr ""
+
+#: xboard.c:5546
+msgid "Load game file name?"
+msgstr ""
+
+#: xboard.c:5612
+msgid "Load position file name?"
+msgstr ""
+
+#: xboard.c:5621
+msgid "Save game file name?"
+msgstr ""
+
+#: xboard.c:5632
+msgid "Save position file name?"
+msgstr ""
+
+#: xboard.c:5804
+msgid "Can't open temp file"
+msgstr ""
+
+#: xboard.c:5885 xboard.c:5903
+#, c-format
+msgid "%s does not support analysis"
+msgstr ""
+
+#: xboard.c:5913
+msgid "File to analyze"
+msgstr ""
+
+#: xboard.c:6901
+msgid "Fatal Error"
+msgstr ""
+
+#: xboard.c:6901
+msgid "Exiting"
+msgstr ""
+
+#: xboard.c:6911
+msgid "Information"
+msgstr ""
+
+#: xboard.c:6918
+msgid "Note"
+msgstr ""
+
+#: xboard.c:6968
+#, c-format
+msgid "AskQuestionProc needed 4 parameters, got %d\n"
+msgstr ""
+
+#: xboard.c:7001
+msgid "Error writing to chess program"
+msgstr ""
+
+#: xboard.c:7053
+msgid "enter"
+msgstr ""
+
+#: xboard.c:7166 backend.c:1323
+msgid "Error writing to display"
+msgstr ""
+
+#: xboard.c:7239
+#, c-format
+msgid "ERROR: Unknown user %s (in path %s)\n"
+msgstr ""
+
+#: xboard.c:7594
+msgid "Socket support is not configured in"
+msgstr ""
+
+#: xboard.c:7696
+msgid "internal rcmd not implemented for Unix"
+msgstr ""
+
+#: xboard.c:8422
+#, c-format
+msgid "AnimateMove: piece %d hops from %d,%d to %d,%d \n"
+msgstr ""
+
+#: xboard.c:8423
+#, c-format
+msgid "AnimateMove: piece %d slides from %d,%d to %d,%d \n"
+msgstr ""
+
+#: xedittags.c:346 xedittags.c:354
+msgid "Tags"
+msgstr ""
+
+#: xedittags.c:385
+msgid "Edit tags"
+msgstr ""
+
+#: xgamelist.c:193 xgamelist.c:298
+msgid "load"
+msgstr ""
+
+#: xgamelist.c:204 xgamelist.c:311
+msgid "prev"
+msgstr ""
+
+#: xgamelist.c:215 xgamelist.c:304
+msgid "next"
+msgstr ""
+
+#: xgamelist.c:301
+msgid "No game selected"
+msgstr ""
+
+#: xgamelist.c:307
+msgid "Can't go forward any further"
+msgstr ""
+
+#: xgamelist.c:314 backend.c:5833 backend.c:6292
+msgid "Can't back up any further"
+msgstr ""
+
+#: xgamelist.c:415
+msgid "There is no game list"
+msgstr ""
+
+#: xhistory.c:156
+msgid "White "
+msgstr "Weiss"
+
+#: xhistory.c:157
+msgid "Black "
+msgstr "Schwarz"
+
+#: xhistory.c:347 xhistory.c:351
+msgid "Move list"
+msgstr ""
+
+#: xhistory.c:445
+msgid "Close"
+msgstr "Schließen"
+
+#: backend.c:468
+#, c-format
+msgid "bad timeControl option %s"
+msgstr ""
+
+#: backend.c:483
+#, c-format
+msgid "bad searchTime option %s"
+msgstr ""
+
+#: backend.c:542 backend.c:552
+#, c-format
+msgid "protocol version %d not supported"
+msgstr ""
+
+#: backend.c:603
+#, c-format
+msgid "Variant %s supported only in ICS mode"
+msgstr ""
+
+#: backend.c:618
+#, c-format
+msgid "Unknown variant name %s"
+msgstr ""
+
+#: backend.c:705
+#, c-format
+msgid "Could not open comm port %s"
+msgstr ""
+
+#: backend.c:708
+#, c-format
+msgid "Could not connect to host %s, port %s"
+msgstr ""
+
+#: backend.c:753
+#, c-format
+msgid "Unknown initialMode %s"
+msgstr ""
+
+#: backend.c:761
+msgid "Can't have a match with no chess programs"
+msgstr ""
+
+#: backend.c:771
+msgid "Bad game file"
+msgstr ""
+
+#: backend.c:778
+msgid "Bad position file"
+msgstr ""
+
+#: backend.c:790
+msgid "AnalyzeFile mode requires a game file"
+msgstr ""
+
+#: backend.c:805
+msgid "Analysis mode requires a chess engine"
+msgstr ""
+
+#: backend.c:809
+msgid "Analysis mode does not work with ICS mode"
+msgstr ""
+
+#: backend.c:819
+msgid "MachineWhite mode requires a chess engine"
+msgstr ""
+
+#: backend.c:824
+msgid "MachineWhite mode does not work with ICS mode"
+msgstr ""
+
+#: backend.c:831
+msgid "MachineBlack mode requires a chess engine"
+msgstr ""
+
+#: backend.c:836
+msgid "MachineBlack mode does not work with ICS mode"
+msgstr ""
+
+#: backend.c:843
+msgid "TwoMachines mode requires a chess engine"
+msgstr ""
+
+#: backend.c:848
+msgid "TwoMachines mode does not work with ICS mode"
+msgstr ""
+
+#: backend.c:859
+msgid "Training mode requires a game file"
+msgstr ""
+
+#: backend.c:1007 backend.c:1029 backend.c:1054 backend.c:1409
+msgid "Error writing to ICS"
+msgstr ""
+
+#: backend.c:1011
+msgid "Error reading from keyboard"
+msgstr ""
+
+#: backend.c:1014
+msgid "Got end of file from keyboard"
+msgstr ""
+
+#: backend.c:1258
+#, c-format
+msgid "recognized '%s' (%d) as variant %s\n"
+msgstr ""
+
+#: backend.c:2000
+msgid "Error gathering move list: two headers"
+msgstr ""
+
+#: backend.c:2014
+#, c-format
+msgid "Ratings from header: W %d, B %d\n"
+msgstr ""
+
+#: backend.c:2047
+msgid "Error gathering move list: nested"
+msgstr ""
+
+#: backend.c:2556
+msgid "Connection closed by ICS"
+msgstr ""
+
+#: backend.c:2558
+msgid "Error reading from ICS"
+msgstr ""
+
+#: backend.c:2606
+#, c-format
+msgid "Parsing board: %s\n"
+msgstr ""
+
+#: backend.c:2618
+#, c-format
+msgid ""
+"Failed to parse board string:\n"
+"\"%s\""
+msgstr ""
+
+#: backend.c:2627 backend.c:4811
+msgid "Game too long; increase MAX_MOVES and recompile"
+msgstr ""
+
+#: backend.c:2689
+msgid "Error gathering move list: extra board"
+msgstr ""
+
+#: backend.c:2936 backend.c:2958
+#, c-format
+msgid "Couldn't parse move \"%s\" from ICS"
+msgstr ""
+
+#: backend.c:3391
+msgid "You are playing Black"
+msgstr "Sie spielen Schwarz"
+
+#: backend.c:3400 backend.c:3431
+msgid "You are playing White"
+msgstr "Sie spielen Weiß"
+
+#: backend.c:3407 backend.c:3439 backend.c:3504 backend.c:3526 backend.c:3542
+#: backend.c:7925
+msgid "It is White's turn"
+msgstr "Weiß ist am Zug"
+
+#: backend.c:3411 backend.c:3443 backend.c:3512 backend.c:3532 backend.c:3563
+#: backend.c:7917
+msgid "It is Black's turn"
+msgstr "Schwarz ist am Zug"
+
+#: backend.c:3454
+msgid "Displayed position is not current"
+msgstr ""
+
+#: backend.c:3602
+msgid "Illegal move"
+msgstr "Ungültiger Zug"
+
+#: backend.c:3636
+msgid "End of game"
+msgstr "Ende des Spiels"
+
+#: backend.c:3639
+msgid "Incorrect move"
+msgstr ""
+
+#: backend.c:3858
+#, c-format
+msgid "Illegal move \"%s\" from %s machine"
+msgstr ""
+
+#: backend.c:4099
+#, c-format
+msgid "Illegal move \"%s\" (rejected by %s chess program)"
+msgstr ""
+
+#: backend.c:4124
+#, c-format
+msgid "Failed to start %s chess program %s on %s: %s\n"
+msgstr ""
+
+#: backend.c:4147
+#, c-format
+msgid ""
+"Illegal hint move \"%s\"\n"
+"from %s chess program"
+msgstr ""
+
+#: backend.c:4322
+msgid ""
+"Machine offers a draw\n"
+"Select Action / Draw to agree"
+msgstr ""
+
+#: backend.c:4578
+#, c-format
+msgid "Ambiguous move in ICS output: \"%s\""
+msgstr ""
+
+#: backend.c:4583
+#, c-format
+msgid "Illegal move in ICS output: \"%s\""
+msgstr ""
+
+#: backend.c:4589
+msgid "Gap in move list"
+msgstr ""
+
+#: backend.c:4890
+#, c-format
+msgid "Variant %s not supported by %s"
+msgstr ""
+
+#: backend.c:5242
+#, c-format
+msgid "Match %s vs. %s: final score %d-%d-%d"
+msgstr ""
+
+#: backend.c:5628
+#, c-format
+msgid "Ambiguous move: %d.%s%s"
+msgstr ""
+
+#: backend.c:5639
+#, c-format
+msgid "Illegal move: %d.%s%s"
+msgstr ""
+
+#: backend.c:5687 backend.c:6314 backend.c:6507 backend.c:6733
+#, c-format
+msgid "Can't open \"%s\""
+msgstr ""
+
+#: backend.c:5788
+msgid "No more games in this message"
+msgstr ""
+
+#: backend.c:5829
+msgid "No game has been loaded yet"
+msgstr ""
+
+#: backend.c:5888
+msgid "Game number out of range"
+msgstr ""
+
+#: backend.c:5899
+msgid "Can't seek on game file"
+msgstr ""
+
+#: backend.c:5958
+msgid "Game not found in file"
+msgstr "Spiel in Datei nicht gefunden"
+
+#: backend.c:6075 backend.c:6404
+msgid "Bad FEN position in file"
+msgstr ""
+
+#: backend.c:6218
+msgid "No moves in game"
+msgstr "Keine Züge in dem Spiel"
+
+#: backend.c:6288
+msgid "No position has been loaded yet"
+msgstr ""
+
+#: backend.c:6355 backend.c:6366
+msgid "Can't seek on position file"
+msgstr ""
+
+#: backend.c:6373 backend.c:6395
+msgid "Position not found in file"
+msgstr ""
+
+#: backend.c:6436
+msgid "Black to play"
+msgstr "Schwarz am Zug"
+
+#: backend.c:6439
+msgid "White to play"
+msgstr "Weiß am Zug"
+
+#: backend.c:6863
+msgid ""
+"You have edited the game history.\n"
+"Use Reload Same Game and make your move again."
+msgstr ""
+
+#: backend.c:6868
+msgid ""
+"You have entered too many moves.\n"
+"Back up to the correct position and try again."
+msgstr ""
+
+#: backend.c:6873
+msgid ""
+"Displayed position is not current.\n"
+"Step forward to the correct position and try again."
+msgstr ""
+
+#: backend.c:6921
+msgid "You have not made a move yet"
+msgstr "Sie haben noch keinen Zug gemacht"
+
+#: backend.c:6942
+msgid ""
+"The cmail message is not loaded.\n"
+"Use Reload CMail Message and make your move again."
+msgstr ""
+
+#: backend.c:6947
+msgid "No unfinished games"
+msgstr ""
+
+#: backend.c:6953
+#, c-format
+msgid ""
+"You have already mailed a move.\n"
+"Wait until a move arrives from your opponent.\n"
+"To resend the same move, type\n"
+"\"cmail -remail -game %s\"\n"
+"on the command line."
+msgstr ""
+
+#: backend.c:6968
+msgid "Failed to invoke cmail"
+msgstr ""
+
+#: backend.c:7030
+msgid "Waiting for reply from opponent\n"
+msgstr ""
+
+#: backend.c:7053
+msgid "Still need to make move for game\n"
+msgstr ""
+
+#: backend.c:7058
+msgid "Still need to make moves for both games\n"
+msgstr ""
+
+#: backend.c:7063
+#, c-format
+msgid "Still need to make moves for all %d games\n"
+msgstr ""
+
+#: backend.c:7071
+#, c-format
+msgid "Still need to make a move for game %s\n"
+msgstr ""
+
+#: backend.c:7077
+msgid "No unfinished games\n"
+msgstr ""
+
+#: backend.c:7079
+msgid "Ready to send mail\n"
+msgstr ""
+
+#: backend.c:7085
+#, c-format
+msgid "Still need to make moves for games %s\n"
+msgstr ""
+
+#: backend.c:7237
+msgid "Edit comment"
+msgstr ""
+
+#: backend.c:7239
+#, c-format
+msgid "Edit comment on %d.%s%s"
+msgstr ""
+
+#: backend.c:7270 backend.c:7297
+msgid "Analysis"
+msgstr "Analyse"
+
+#: backend.c:7271 backend.c:7298
+msgid ""
+"Starting analysis mode...\n"
+"If this message stays up, your chess program does not support analysis."
+msgstr ""
+
+#: backend.c:7330
+msgid "It is not White's turn"
+msgstr "Weiß ist nicht am Zug"
+
+#: backend.c:7393
+msgid "It is not Black's turn"
+msgstr "Schwarz ist nicht am Zug"
+
+#: backend.c:7474 backend.c:8405
+msgid ""
+"Wait until your turn,\n"
+"or select Move Now"
+msgstr ""
+
+#: backend.c:7506
+msgid "Starting second chess program"
+msgstr "Starte zweites Schachprogramm"
+
+#: backend.c:7571
+msgid "Training mode off"
+msgstr "Trainier-Modus aus"
+
+#: backend.c:7579
+msgid "Training mode on"
+msgstr "Trainier-Modus ein"
+
+#: backend.c:7582
+msgid "Already at end of game"
+msgstr ""
+
+#: backend.c:7663
+msgid "Warning: You are still playing a game"
+msgstr ""
+
+#: backend.c:7666
+msgid "Warning: You are still observing a game"
+msgstr ""
+
+#: backend.c:7669
+msgid "Warning: You are still examining a game"
+msgstr ""
+
+#: backend.c:7942
+msgid "That square is occupied"
+msgstr ""
+
+#: backend.c:7966 backend.c:7992
+msgid "There is no pending offer on this move"
+msgstr ""
+
+#: backend.c:8028 backend.c:8039
+msgid "Your opponent is not out of time"
+msgstr ""
+
+#: backend.c:8074
+msgid "You must make your move before offering a draw"
+msgstr ""
+
+#: backend.c:8387
+msgid "You are not examining a game"
+msgstr ""
+
+#: backend.c:8391
+msgid "You can't revert while pausing"
+msgstr ""
+
+#: backend.c:8445 backend.c:8452
+msgid "It is your turn"
+msgstr "Sie sind am Zug"
+
+#: backend.c:8502 backend.c:8509 backend.c:8528 backend.c:8535
+msgid "Wait until your turn"
+msgstr "Warten Sie bis Sie am Zug sind"
+
+#: backend.c:8514
+msgid "No hint available"
+msgstr ""
+
+#: backend.c:8820
+#, c-format
+msgid "Error writing to %s chess program"
+msgstr ""
+
+#: backend.c:8841
+#, c-format
+msgid "Error: %s chess program (%s) exited unexpectedly"
+msgstr ""
+
+#: backend.c:8847
+#, c-format
+msgid "Error reading from %s chess program (%s)"
+msgstr ""
+
+#: backend.c:9350 backend.c:9372
+msgid "Both flags fell"
+msgstr ""
+
+#: backend.c:9352
+msgid "White's flag fell"
+msgstr ""
+
+#: backend.c:9374
+msgid "Black's flag fell"
+msgstr ""
+
+#: backend.c:9972
+msgid "Bad FEN position in clipboard"
+msgstr ""
diff --git a/po/remove-potcdate.sin b/po/remove-potcdate.sin
new file mode 100755 (executable)
index 0000000..2436c49
--- /dev/null
@@ -0,0 +1,19 @@
+# Sed script that remove the POT-Creation-Date line in the header entry
+# from a POT file.
+#
+# The distinction between the first and the following occurrences of the
+# pattern is achieved by looking at the hold space.
+/^"POT-Creation-Date: .*"$/{
+x
+# Test if the hold space is empty.
+s/P/P/
+ta
+# Yes it was empty. First occurrence. Remove the line.
+g
+d
+bb
+:a
+# The hold space was nonempty. Following occurrences. Do nothing.
+x
+:b
+}
diff --git a/po/tr.po b/po/tr.po
new file mode 100644 (file)
index 0000000..0384b0a
--- /dev/null
+++ b/po/tr.po
@@ -0,0 +1,1333 @@
+# XBoard -- a graphical chessboard for X
+# Copyright (C) 1991 by Digital Equipment Corporation, Maynard, Massachusetts.
+# Enhancements Copyright (C) 1992-98 Free Software Foundation, Inc.
+# This file is distributed under the same license as the XBoard package.
+# A. Alper Atýcý <alper_atici@yahoo.com>, 2003.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: XBoard 4.2.7\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2003-12-01 20:00+0200\n"
+"PO-Revision-Date: 2003-12-26 16:38+0200\n"
+"Last-Translator: A. Alper Atýcý <alper_atici@yahoo.com>\n"
+"Language-Team: Turkish <gnu-tr-u12a@lists.sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-9\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: xboard.c:514
+msgid "Reset Game"
+msgstr "Oyunu Sýfýrla"
+
+#: xboard.c:516
+msgid "Load Game"
+msgstr "Oyun Yükle"
+
+#: xboard.c:517
+msgid "Load Next Game"
+msgstr "Sonraki Oyunu Yükle"
+
+#: xboard.c:518
+msgid "Load Previous Game"
+msgstr "Önceki Oyunu Yükle"
+
+#: xboard.c:519
+msgid "Reload Same Game"
+msgstr "Ayný Oyunu Tekrar Yükle"
+
+#: xboard.c:520
+msgid "Save Game"
+msgstr "Oyunu Kaydet"
+
+#: xboard.c:522
+msgid "Copy Game"
+msgstr "Oyunu Kopyala"
+
+#: xboard.c:523
+msgid "Paste Game"
+msgstr "Oyunu Yapýþtýr"
+
+#: xboard.c:525
+msgid "Load Position"
+msgstr "Pozisyon Yükle"
+
+#: xboard.c:526
+msgid "Load Next Position"
+msgstr "Sonraki Pozisyonu Yükle"
+
+#: xboard.c:527
+msgid "Load Previous Position"
+msgstr "Önceki Pozisyonu Yükle"
+
+#: xboard.c:528
+msgid "Reload Same Position"
+msgstr "Ayný Pozisyonu Tekrar Yükle"
+
+#: xboard.c:529
+msgid "Save Position"
+msgstr "Pozisyonu Kaydet"
+
+#: xboard.c:531
+msgid "Copy Position"
+msgstr "Pozisyonu Kopyala"
+
+#: xboard.c:532
+msgid "Paste Position"
+msgstr "Pozisyonu Yapýþtýr"
+
+#: xboard.c:534
+msgid "Mail Move"
+msgstr "Hamleyi Postala"
+
+#: xboard.c:535
+msgid "Reload CMail Message"
+msgstr "CMail Ýletisini Tekrar Yükle"
+
+#: xboard.c:537
+msgid "Exit"
+msgstr "Çýk"
+
+#: xboard.c:542
+msgid "Machine White"
+msgstr "Bilgisayar Beyaz"
+
+#: xboard.c:543
+msgid "Machine Black"
+msgstr "Bilgisayar Siyah"
+
+#: xboard.c:544
+msgid "Two Machines"
+msgstr "Ýkisi de Bilgisayar"
+
+#: xboard.c:545
+msgid "Analysis Mode"
+msgstr "Analiz Kipi"
+
+#: xboard.c:546
+msgid "Analyze File"
+msgstr "Analiz Dosyasý"
+
+#: xboard.c:547
+msgid "ICS Client"
+msgstr "ICS Ýstemcisi"
+
+#: xboard.c:548
+msgid "Edit Game"
+msgstr "Oyunu Düzenle"
+
+#: xboard.c:549
+msgid "Edit Position"
+msgstr "Pozisyonu Düzenle"
+
+#: xboard.c:550
+msgid "Training"
+msgstr "Eðitim"
+
+#: xboard.c:552
+msgid "Show Game List"
+msgstr "Oyun Listesini Göster"
+
+#: xboard.c:553
+msgid "Show Move List"
+msgstr "Hamle Listesini Göster"
+
+#: xboard.c:554 xedittags.c:393
+msgid "Edit Tags"
+msgstr ""
+
+#: xboard.c:555
+msgid "Edit Comment"
+msgstr ""
+
+#: xboard.c:556
+msgid "ICS Input Box"
+msgstr ""
+
+#: xboard.c:557
+msgid "Pause"
+msgstr "Duraklat"
+
+#: xboard.c:562
+msgid "Accept"
+msgstr "Kabul et"
+
+#: xboard.c:563
+msgid "Decline"
+msgstr "Red et"
+
+#: xboard.c:564
+msgid "Rematch"
+msgstr ""
+
+#: xboard.c:566
+msgid "Call Flag"
+msgstr "Terk et"
+
+#: xboard.c:567
+msgid "Draw"
+msgstr "Berabere"
+
+#: xboard.c:568
+msgid "Adjourn"
+msgstr "Ertele"
+
+#: xboard.c:569
+msgid "Abort"
+msgstr ""
+
+#: xboard.c:570
+msgid "Resign"
+msgstr ""
+
+#: xboard.c:572
+msgid "Stop Observing"
+msgstr ""
+
+#: xboard.c:573
+msgid "Stop Examining"
+msgstr ""
+
+#: xboard.c:578
+msgid "Backward"
+msgstr "Geri"
+
+#: xboard.c:579
+msgid "Forward"
+msgstr "Ýleri"
+
+#: xboard.c:580
+msgid "Back to Start"
+msgstr "En Baþa"
+
+#: xboard.c:581
+msgid "Forward to End"
+msgstr "En Sona"
+
+#: xboard.c:582
+msgid "Revert"
+msgstr ""
+
+#: xboard.c:583
+msgid "Truncate Game"
+msgstr ""
+
+#: xboard.c:585
+msgid "Move Now"
+msgstr ""
+
+#: xboard.c:586
+msgid "Retract Move"
+msgstr "Hamleyi Geri Al"
+
+#: xboard.c:591
+msgid "Always Queen"
+msgstr "Hep Vezir Olsun"
+
+#: xboard.c:592
+msgid "Animate Dragging"
+msgstr ""
+
+#: xboard.c:593
+msgid "Animate Moving"
+msgstr ""
+
+#: xboard.c:594
+msgid "Auto Comment"
+msgstr ""
+
+#: xboard.c:595
+msgid "Auto Flag"
+msgstr ""
+
+#: xboard.c:596
+msgid "Auto Flip View"
+msgstr ""
+
+#: xboard.c:597
+msgid "Auto Observe"
+msgstr ""
+
+#: xboard.c:598
+msgid "Auto Raise Board"
+msgstr ""
+
+#: xboard.c:599
+msgid "Auto Save"
+msgstr ""
+
+#: xboard.c:600
+msgid "Blindfold"
+msgstr "Tahtayý Görmeden"
+
+#: xboard.c:601
+msgid "Flash Moves"
+msgstr ""
+
+#: xboard.c:602
+msgid "Flip View"
+msgstr ""
+
+#: xboard.c:603
+msgid "Get Move List"
+msgstr ""
+
+#: xboard.c:605
+msgid "Highlight Dragging"
+msgstr ""
+
+#: xboard.c:607
+msgid "Highlight Last Move"
+msgstr ""
+
+#: xboard.c:608
+msgid "Move Sound"
+msgstr ""
+
+#: xboard.c:609
+msgid "ICS Alarm"
+msgstr ""
+
+#: xboard.c:610
+msgid "Old Save Style"
+msgstr ""
+
+#: xboard.c:611
+msgid "Periodic Updates"
+msgstr ""
+
+#: xboard.c:612
+msgid "Ponder Next Move"
+msgstr ""
+
+#: xboard.c:613
+msgid "Popup Exit Message"
+msgstr ""
+
+#: xboard.c:614
+msgid "Popup Move Errors"
+msgstr ""
+
+#: xboard.c:615
+msgid "Premove"
+msgstr ""
+
+#: xboard.c:616
+msgid "Quiet Play"
+msgstr ""
+
+#: xboard.c:617
+msgid "Show Coords"
+msgstr ""
+
+#: xboard.c:618
+msgid "Show Thinking"
+msgstr ""
+
+#: xboard.c:619
+msgid "Test Legality"
+msgstr ""
+
+#: xboard.c:624
+msgid "Info XBoard"
+msgstr "XBoard Info Sayfasý"
+
+#: xboard.c:625
+msgid "Man XBoard"
+msgstr "XBoard Man Sayfasý"
+
+#: xboard.c:627
+msgid "Hint"
+msgstr "Ýpucu"
+
+#: xboard.c:628
+msgid "Book"
+msgstr "Kitap"
+
+#: xboard.c:630 xboard.c:6746
+msgid "About XBoard"
+msgstr "XBoard Hakkýnda"
+
+#: xboard.c:635
+msgid "File"
+msgstr "Dosya"
+
+#: xboard.c:636
+msgid "Mode"
+msgstr "Kip"
+
+#: xboard.c:637
+msgid "Action"
+msgstr "Eylem"
+
+#: xboard.c:638
+msgid "Step"
+msgstr "Adým"
+
+#: xboard.c:639
+msgid "Options"
+msgstr "Seçenekler"
+
+#: xboard.c:640
+msgid "Help"
+msgstr "Yardým"
+
+#. Label on pause button
+#: xboard.c:646
+msgid "P"
+msgstr "D"
+
+#: xboard.c:658 xboard.c:7440
+msgid "White"
+msgstr "Beyaz"
+
+#: xboard.c:658 xboard.c:660 xboard.c:675
+msgid "Pawn"
+msgstr "Piyon"
+
+#: xboard.c:658 xboard.c:660 xboard.c:675 xboard.c:5218 xboard.c:5277
+msgid "Knight"
+msgstr "At"
+
+#: xboard.c:658 xboard.c:660 xboard.c:675 xboard.c:5216
+msgid "Bishop"
+msgstr "Fil"
+
+#: xboard.c:658 xboard.c:660 xboard.c:675 xboard.c:5214
+msgid "Rook"
+msgstr "Kale"
+
+#: xboard.c:659 xboard.c:661 xboard.c:675 xboard.c:5212
+msgid "Queen"
+msgstr "Vezir"
+
+#: xboard.c:659 xboard.c:661 xboard.c:5222
+msgid "King"
+msgstr "Þah"
+
+#: xboard.c:659 xboard.c:661
+msgid "Empty square"
+msgstr "Kareyi Boþalt"
+
+#: xboard.c:659 xboard.c:661
+msgid "Clear board"
+msgstr "Tahtayý Temizle"
+
+#: xboard.c:660 xboard.c:7454
+msgid "Black"
+msgstr "Siyah"
+
+#: xboard.c:1666
+#, c-format
+msgid "%s: Can't access XPM directory %s\n"
+msgstr ""
+
+#: xboard.c:1689
+#, c-format
+msgid "Available `%s' sizes:\n"
+msgstr ""
+
+#: xboard.c:1725
+#, c-format
+msgid "Error: No `%s' files!\n"
+msgstr ""
+
+#: xboard.c:1741
+msgid ""
+"Warning: No DIR structure found on this system --\n"
+"         Unable to autosize for XPM/XIM pieces.\n"
+"   Please report this error to frankm@hiwaay.net.\n"
+"   Include system type & operating system in message.\n"
+msgstr ""
+
+#: xboard.c:1802
+#, c-format
+msgid "%s: unrecognized color %s\n"
+msgstr ""
+
+#: xboard.c:1812
+#, c-format
+msgid "%s: can't parse foreground color in `%s'\n"
+msgstr ""
+
+#: xboard.c:1883
+#, c-format
+msgid "%s: unrecognized argument %s\n"
+msgstr ""
+
+#: xboard.c:1892
+#, c-format
+msgid "%s: can't cd to CHESSDIR: "
+msgstr ""
+
+#: xboard.c:1928
+#, c-format
+msgid "%s: bad boardSize syntax %s\n"
+msgstr ""
+
+#: xboard.c:1964
+#, c-format
+msgid "%s: unrecognized boardSize name %s\n"
+msgstr ""
+
+#: xboard.c:1982
+#, c-format
+msgid "Error expanding path name \"%s\"\n"
+msgstr ""
+
+#: xboard.c:1987
+#, c-format
+msgid ""
+"XBoard square size (hint): %d\n"
+"%s fulldir:%s:\n"
+msgstr ""
+
+#: xboard.c:1993
+#, c-format
+msgid "Closest %s size: %d\n"
+msgstr ""
+
+#: xboard.c:2105
+#, c-format
+msgid "%s: too few colors available; trying monochrome mode\n"
+msgstr ""
+
+#: xboard.c:2110
+#, c-format
+msgid "white pixel = 0x%lx, black pixel = 0x%lx\n"
+msgstr ""
+
+#: xboard.c:2128
+#, c-format
+msgid "%s: can't parse color names; disabling colorization\n"
+msgstr ""
+
+#: xboard.c:2308 xboard.c:2318
+#, c-format
+msgid "%s: messageWidget geometry error %d %d %d %d %d\n"
+msgstr ""
+
+#: xboard.c:2339
+#, c-format
+msgid "%s: titleWidget geometry error %d %d %d %d %d\n"
+msgstr ""
+
+#: xboard.c:2909
+msgid "Unable to create font set.\n"
+msgstr ""
+
+#: xboard.c:2917
+#, c-format
+msgid "%s: no fonts match pattern %s\n"
+msgstr ""
+
+#: xboard.c:2960
+#, c-format
+msgid ""
+"resolved %s at pixel size %d\n"
+"  to %s\n"
+msgstr ""
+
+#: xboard.c:3084
+#, c-format
+msgid "%s: error loading XIM!\n"
+msgstr ""
+
+#: xboard.c:3176
+msgid "XIM pieces cannot be used in monochrome mode"
+msgstr ""
+
+#: xboard.c:3180
+msgid ""
+"\n"
+"Loading XIMs...\n"
+msgstr ""
+
+#: xboard.c:3194 xboard.c:3215 xboard.c:3222 xboard.c:3313 xboard.c:3334
+#: xboard.c:3345
+#, c-format
+msgid "(File:%s:) "
+msgstr ""
+
+#: xboard.c:3210 xboard.c:3327
+msgid "light square "
+msgstr ""
+
+#: xboard.c:3218 xboard.c:3341
+msgid "dark square "
+msgstr ""
+
+#: xboard.c:3229 xboard.c:3354
+msgid "Done.\n"
+msgstr ""
+
+#: xboard.c:3271
+msgid "XPM pieces cannot be used in monochrome mode"
+msgstr ""
+
+#: xboard.c:3281
+#, c-format
+msgid "No builtin XPM pieces of size %d\n"
+msgstr ""
+
+#: xboard.c:3291
+#, c-format
+msgid "Error %d loading XPM image \"%s\"\n"
+msgstr ""
+
+#: xboard.c:3302
+msgid ""
+"\n"
+"Loading XPMs...\n"
+msgstr ""
+
+#: xboard.c:3318 xboard.c:3338 xboard.c:3349
+#, c-format
+msgid "Error %d loading XPM file \"%s\"\n"
+msgstr ""
+
+#: xboard.c:3431
+#, c-format
+msgid "Can't open bitmap file %s"
+msgstr ""
+
+#: xboard.c:3434
+#, c-format
+msgid "Invalid bitmap in file %s"
+msgstr ""
+
+#: xboard.c:3437
+#, c-format
+msgid "Ran out of memory reading bitmap file %s"
+msgstr ""
+
+#: xboard.c:3441
+#, c-format
+msgid "Unknown XReadBitmapFile error %d on file %s"
+msgstr ""
+
+#: xboard.c:3445
+#, c-format
+msgid "%s: %s...using built-in\n"
+msgstr ""
+
+#: xboard.c:3449
+#, c-format
+msgid "%s: Bitmap %s is %dx%d, not %dx%d...using built-in\n"
+msgstr ""
+
+#: xboard.c:3456
+#, c-format
+msgid "%s: No built-in bitmap for %s; giving up\n"
+msgstr ""
+
+#: xboard.c:3652
+msgid "Drop"
+msgstr ""
+
+#: xboard.c:4573 xboard.c:4576 xboard.c:4832 xboard.c:5078 xboard.c:5087
+#: xboard.c:5340 xedittags.c:150 xedittags.c:248
+msgid "ok"
+msgstr "tamam"
+
+#: xboard.c:4587 xboard.c:4590 xboard.c:4839 xboard.c:5082 xboard.c:5088
+#: xboard.c:5127 xboard.c:5225 xboard.c:5273 xboard.c:7014 xboard.c:7055
+#: xedittags.c:157 xedittags.c:259
+msgid "cancel"
+msgstr "iptal"
+
+#: xboard.c:4601 xboard.c:4604 xboard.c:4841 xedittags.c:159
+msgid "clear"
+msgstr "temizle"
+
+#: xboard.c:4614 xboard.c:4617 xboard.c:5008 xedittags.c:128 xedittags.c:282
+#: xgamelist.c:226 xgamelist.c:292
+msgid "close"
+msgstr "kapat"
+
+#: xboard.c:4628 xboard.c:4631 xboard.c:5010 xedittags.c:130 xedittags.c:293
+msgid "edit"
+msgstr "düzenle"
+
+#: xboard.c:4873
+msgid "ICS Input"
+msgstr ""
+
+#: xboard.c:5062
+msgid "File name prompt"
+msgstr "Dosya adý giriþi"
+
+#: xboard.c:5164 xboard.c:6864 xboard.c:6878
+msgid "Error"
+msgstr "Hata"
+
+#: xboard.c:5164
+msgid "Can't open file"
+msgstr "Dosya açýlamýyor"
+
+#: xboard.c:5169
+msgid "Failed to open file"
+msgstr "Dosya açýlamadý"
+
+#: xboard.c:5198
+msgid "Promotion"
+msgstr "Terfi"
+
+#: xboard.c:5207
+msgid "Promote pawn to what?"
+msgstr "Piyon hangi taþa terfi edilsin?"
+
+#: xboard.c:5525 backend.c:5699
+msgid "Cannot build game list"
+msgstr ""
+
+#: xboard.c:5546
+msgid "Load game file name?"
+msgstr ""
+
+#: xboard.c:5612
+msgid "Load position file name?"
+msgstr ""
+
+#: xboard.c:5621
+msgid "Save game file name?"
+msgstr ""
+
+#: xboard.c:5632
+msgid "Save position file name?"
+msgstr ""
+
+#: xboard.c:5804
+msgid "Can't open temp file"
+msgstr ""
+
+#: xboard.c:5885 xboard.c:5903
+#, c-format
+msgid "%s does not support analysis"
+msgstr ""
+
+#: xboard.c:5913
+msgid "File to analyze"
+msgstr "Analiz edilecek dosya"
+
+#: xboard.c:6901
+msgid "Fatal Error"
+msgstr ""
+
+#: xboard.c:6901
+msgid "Exiting"
+msgstr ""
+
+#: xboard.c:6911
+msgid "Information"
+msgstr "Bilgi"
+
+#: xboard.c:6918
+msgid "Note"
+msgstr "Not"
+
+#: xboard.c:6968
+#, c-format
+msgid "AskQuestionProc needed 4 parameters, got %d\n"
+msgstr ""
+
+#: xboard.c:7001
+msgid "Error writing to chess program"
+msgstr ""
+
+#: xboard.c:7053
+msgid "enter"
+msgstr "gir"
+
+#: xboard.c:7166 backend.c:1323
+msgid "Error writing to display"
+msgstr ""
+
+#: xboard.c:7239
+#, c-format
+msgid "ERROR: Unknown user %s (in path %s)\n"
+msgstr ""
+
+#: xboard.c:7594
+msgid "Socket support is not configured in"
+msgstr ""
+
+#: xboard.c:7696
+msgid "internal rcmd not implemented for Unix"
+msgstr ""
+
+#: xboard.c:8422
+#, c-format
+msgid "AnimateMove: piece %d hops from %d,%d to %d,%d \n"
+msgstr ""
+
+#: xboard.c:8423
+#, c-format
+msgid "AnimateMove: piece %d slides from %d,%d to %d,%d \n"
+msgstr ""
+
+#: xedittags.c:346 xedittags.c:354
+msgid "Tags"
+msgstr ""
+
+#: xedittags.c:385
+msgid "Edit tags"
+msgstr ""
+
+#: xgamelist.c:193 xgamelist.c:298
+msgid "load"
+msgstr "yükle"
+
+#: xgamelist.c:204 xgamelist.c:311
+msgid "prev"
+msgstr "önceki"
+
+#: xgamelist.c:215 xgamelist.c:304
+msgid "next"
+msgstr "sonraki"
+
+#: xgamelist.c:301
+msgid "No game selected"
+msgstr ""
+
+#: xgamelist.c:307
+msgid "Can't go forward any further"
+msgstr ""
+
+#: xgamelist.c:314 backend.c:5833 backend.c:6292
+msgid "Can't back up any further"
+msgstr ""
+
+#: xgamelist.c:415
+msgid "There is no game list"
+msgstr ""
+
+#: xhistory.c:156
+msgid "White "
+msgstr "Beyaz "
+
+#: xhistory.c:157
+msgid "Black "
+msgstr "Siyah "
+
+#: xhistory.c:347 xhistory.c:351
+msgid "Move list"
+msgstr "Hamle listesi"
+
+#: xhistory.c:445
+msgid "Close"
+msgstr "Kapat"
+
+#: backend.c:468
+#, c-format
+msgid "bad timeControl option %s"
+msgstr ""
+
+#: backend.c:483
+#, c-format
+msgid "bad searchTime option %s"
+msgstr ""
+
+#: backend.c:542 backend.c:552
+#, c-format
+msgid "protocol version %d not supported"
+msgstr ""
+
+#: backend.c:603
+#, c-format
+msgid "Variant %s supported only in ICS mode"
+msgstr ""
+
+#: backend.c:618
+#, c-format
+msgid "Unknown variant name %s"
+msgstr ""
+
+#: backend.c:705
+#, c-format
+msgid "Could not open comm port %s"
+msgstr ""
+
+#: backend.c:708
+#, c-format
+msgid "Could not connect to host %s, port %s"
+msgstr ""
+
+#: backend.c:753
+#, c-format
+msgid "Unknown initialMode %s"
+msgstr ""
+
+#: backend.c:761
+msgid "Can't have a match with no chess programs"
+msgstr ""
+
+#: backend.c:771
+msgid "Bad game file"
+msgstr ""
+
+#: backend.c:778
+msgid "Bad position file"
+msgstr ""
+
+#: backend.c:790
+msgid "AnalyzeFile mode requires a game file"
+msgstr ""
+
+#: backend.c:805
+msgid "Analysis mode requires a chess engine"
+msgstr ""
+
+#: backend.c:809
+msgid "Analysis mode does not work with ICS mode"
+msgstr ""
+
+#: backend.c:819
+msgid "MachineWhite mode requires a chess engine"
+msgstr ""
+
+#: backend.c:824
+msgid "MachineWhite mode does not work with ICS mode"
+msgstr ""
+
+#: backend.c:831
+msgid "MachineBlack mode requires a chess engine"
+msgstr ""
+
+#: backend.c:836
+msgid "MachineBlack mode does not work with ICS mode"
+msgstr ""
+
+#: backend.c:843
+msgid "TwoMachines mode requires a chess engine"
+msgstr ""
+
+#: backend.c:848
+msgid "TwoMachines mode does not work with ICS mode"
+msgstr ""
+
+#: backend.c:859
+msgid "Training mode requires a game file"
+msgstr ""
+
+#: backend.c:1007 backend.c:1029 backend.c:1054 backend.c:1409
+msgid "Error writing to ICS"
+msgstr ""
+
+#: backend.c:1011
+msgid "Error reading from keyboard"
+msgstr ""
+
+#: backend.c:1014
+msgid "Got end of file from keyboard"
+msgstr ""
+
+#: backend.c:1258
+#, c-format
+msgid "recognized '%s' (%d) as variant %s\n"
+msgstr ""
+
+#: backend.c:2000
+msgid "Error gathering move list: two headers"
+msgstr ""
+
+#: backend.c:2014
+#, c-format
+msgid "Ratings from header: W %d, B %d\n"
+msgstr ""
+
+#: backend.c:2047
+msgid "Error gathering move list: nested"
+msgstr ""
+
+#: backend.c:2556
+msgid "Connection closed by ICS"
+msgstr ""
+
+#: backend.c:2558
+msgid "Error reading from ICS"
+msgstr ""
+
+#: backend.c:2606
+#, c-format
+msgid "Parsing board: %s\n"
+msgstr ""
+
+#: backend.c:2618
+#, c-format
+msgid ""
+"Failed to parse board string:\n"
+"\"%s\""
+msgstr ""
+
+#: backend.c:2627 backend.c:4811
+msgid "Game too long; increase MAX_MOVES and recompile"
+msgstr ""
+
+#: backend.c:2689
+msgid "Error gathering move list: extra board"
+msgstr ""
+
+#: backend.c:2936 backend.c:2958
+#, c-format
+msgid "Couldn't parse move \"%s\" from ICS"
+msgstr ""
+
+#: backend.c:3391
+msgid "You are playing Black"
+msgstr "Siz Siyah'sýnýz"
+
+#: backend.c:3400 backend.c:3431
+msgid "You are playing White"
+msgstr "Siz Beyaz'sýnýz"
+
+#: backend.c:3407 backend.c:3439 backend.c:3504 backend.c:3526 backend.c:3542
+#: backend.c:7925
+msgid "It is White's turn"
+msgstr "Sýra Beyaz'da"
+
+#: backend.c:3411 backend.c:3443 backend.c:3512 backend.c:3532 backend.c:3563
+#: backend.c:7917
+msgid "It is Black's turn"
+msgstr "Sýra Siyah'ta"
+
+#: backend.c:3454
+msgid "Displayed position is not current"
+msgstr ""
+
+#: backend.c:3602
+msgid "Illegal move"
+msgstr "Geçersiz hamle"
+
+#: backend.c:3636
+msgid "End of game"
+msgstr "Oyun sonu"
+
+#: backend.c:3639
+msgid "Incorrect move"
+msgstr "Yanlýþ hamle"
+
+#: backend.c:3858
+#, c-format
+msgid "Illegal move \"%s\" from %s machine"
+msgstr ""
+
+#: backend.c:4099
+#, c-format
+msgid "Illegal move \"%s\" (rejected by %s chess program)"
+msgstr ""
+
+#: backend.c:4124
+#, c-format
+msgid "Failed to start %s chess program %s on %s: %s\n"
+msgstr ""
+
+#: backend.c:4147
+#, c-format
+msgid ""
+"Illegal hint move \"%s\"\n"
+"from %s chess program"
+msgstr ""
+
+#: backend.c:4322
+msgid ""
+"Machine offers a draw\n"
+"Select Action / Draw to agree"
+msgstr ""
+
+#: backend.c:4578
+#, c-format
+msgid "Ambiguous move in ICS output: \"%s\""
+msgstr ""
+
+#: backend.c:4583
+#, c-format
+msgid "Illegal move in ICS output: \"%s\""
+msgstr ""
+
+#: backend.c:4589
+msgid "Gap in move list"
+msgstr ""
+
+#: backend.c:4890
+#, c-format
+msgid "Variant %s not supported by %s"
+msgstr ""
+
+#: backend.c:5242
+#, c-format
+msgid "Match %s vs. %s: final score %d-%d-%d"
+msgstr ""
+
+#: backend.c:5628
+#, c-format
+msgid "Ambiguous move: %d.%s%s"
+msgstr ""
+
+#: backend.c:5639
+#, c-format
+msgid "Illegal move: %d.%s%s"
+msgstr ""
+
+#: backend.c:5687 backend.c:6314 backend.c:6507 backend.c:6733
+#, c-format
+msgid "Can't open \"%s\""
+msgstr ""
+
+#: backend.c:5788
+msgid "No more games in this message"
+msgstr ""
+
+#: backend.c:5829
+msgid "No game has been loaded yet"
+msgstr ""
+
+#: backend.c:5888
+msgid "Game number out of range"
+msgstr ""
+
+#: backend.c:5899
+msgid "Can't seek on game file"
+msgstr ""
+
+#: backend.c:5958
+msgid "Game not found in file"
+msgstr ""
+
+#: backend.c:6075 backend.c:6404
+msgid "Bad FEN position in file"
+msgstr ""
+
+#: backend.c:6218
+msgid "No moves in game"
+msgstr ""
+
+#: backend.c:6288
+msgid "No position has been loaded yet"
+msgstr ""
+
+#: backend.c:6355 backend.c:6366
+msgid "Can't seek on position file"
+msgstr ""
+
+#: backend.c:6373 backend.c:6395
+msgid "Position not found in file"
+msgstr ""
+
+#: backend.c:6436
+msgid "Black to play"
+msgstr ""
+
+#: backend.c:6439
+msgid "White to play"
+msgstr ""
+
+#: backend.c:6863
+msgid ""
+"You have edited the game history.\n"
+"Use Reload Same Game and make your move again."
+msgstr ""
+
+#: backend.c:6868
+msgid ""
+"You have entered too many moves.\n"
+"Back up to the correct position and try again."
+msgstr ""
+
+#: backend.c:6873
+msgid ""
+"Displayed position is not current.\n"
+"Step forward to the correct position and try again."
+msgstr ""
+
+#: backend.c:6921
+msgid "You have not made a move yet"
+msgstr ""
+
+#: backend.c:6942
+msgid ""
+"The cmail message is not loaded.\n"
+"Use Reload CMail Message and make your move again."
+msgstr ""
+
+#: backend.c:6947
+msgid "No unfinished games"
+msgstr ""
+
+#: backend.c:6953
+#, c-format
+msgid ""
+"You have already mailed a move.\n"
+"Wait until a move arrives from your opponent.\n"
+"To resend the same move, type\n"
+"\"cmail -remail -game %s\"\n"
+"on the command line."
+msgstr ""
+
+#: backend.c:6968
+msgid "Failed to invoke cmail"
+msgstr ""
+
+#: backend.c:7030
+msgid "Waiting for reply from opponent\n"
+msgstr ""
+
+#: backend.c:7053
+msgid "Still need to make move for game\n"
+msgstr ""
+
+#: backend.c:7058
+msgid "Still need to make moves for both games\n"
+msgstr ""
+
+#: backend.c:7063
+#, c-format
+msgid "Still need to make moves for all %d games\n"
+msgstr ""
+
+#: backend.c:7071
+#, c-format
+msgid "Still need to make a move for game %s\n"
+msgstr ""
+
+#: backend.c:7077
+msgid "No unfinished games\n"
+msgstr ""
+
+#: backend.c:7079
+msgid "Ready to send mail\n"
+msgstr ""
+
+#: backend.c:7085
+#, c-format
+msgid "Still need to make moves for games %s\n"
+msgstr ""
+
+#: backend.c:7237
+msgid "Edit comment"
+msgstr ""
+
+#: backend.c:7239
+#, c-format
+msgid "Edit comment on %d.%s%s"
+msgstr ""
+
+#: backend.c:7270 backend.c:7297
+msgid "Analysis"
+msgstr ""
+
+#: backend.c:7271 backend.c:7298
+msgid ""
+"Starting analysis mode...\n"
+"If this message stays up, your chess program does not support analysis."
+msgstr ""
+
+#: backend.c:7330
+msgid "It is not White's turn"
+msgstr ""
+
+#: backend.c:7393
+msgid "It is not Black's turn"
+msgstr ""
+
+#: backend.c:7474 backend.c:8405
+msgid ""
+"Wait until your turn,\n"
+"or select Move Now"
+msgstr ""
+
+#: backend.c:7506
+msgid "Starting second chess program"
+msgstr ""
+
+#: backend.c:7571
+msgid "Training mode off"
+msgstr ""
+
+#: backend.c:7579
+msgid "Training mode on"
+msgstr ""
+
+#: backend.c:7582
+msgid "Already at end of game"
+msgstr ""
+
+#: backend.c:7663
+msgid "Warning: You are still playing a game"
+msgstr ""
+
+#: backend.c:7666
+msgid "Warning: You are still observing a game"
+msgstr ""
+
+#: backend.c:7669
+msgid "Warning: You are still examining a game"
+msgstr ""
+
+#: backend.c:7942
+msgid "That square is occupied"
+msgstr ""
+
+#: backend.c:7966 backend.c:7992
+msgid "There is no pending offer on this move"
+msgstr ""
+
+#: backend.c:8028 backend.c:8039
+msgid "Your opponent is not out of time"
+msgstr ""
+
+#: backend.c:8074
+msgid "You must make your move before offering a draw"
+msgstr ""
+
+#: backend.c:8387
+msgid "You are not examining a game"
+msgstr ""
+
+#: backend.c:8391
+msgid "You can't revert while pausing"
+msgstr ""
+
+#: backend.c:8445 backend.c:8452
+msgid "It is your turn"
+msgstr ""
+
+#: backend.c:8502 backend.c:8509 backend.c:8528 backend.c:8535
+msgid "Wait until your turn"
+msgstr ""
+
+#: backend.c:8514
+msgid "No hint available"
+msgstr ""
+
+#: backend.c:8820
+#, c-format
+msgid "Error writing to %s chess program"
+msgstr ""
+
+#: backend.c:8841
+#, c-format
+msgid "Error: %s chess program (%s) exited unexpectedly"
+msgstr ""
+
+#: backend.c:8847
+#, c-format
+msgid "Error reading from %s chess program (%s)"
+msgstr ""
+
+#: backend.c:9350 backend.c:9372
+msgid "Both flags fell"
+msgstr "Berabere"
+
+#: backend.c:9352
+msgid "White's flag fell"
+msgstr "Beyaz Þah mat"
+
+#: backend.c:9374
+msgid "Black's flag fell"
+msgstr "Siyah Þah mat"
+
+#: backend.c:9972
+msgid "Bad FEN position in clipboard"
+msgstr ""
diff --git a/po/xboard.pot b/po/xboard.pot
new file mode 100755 (executable)
index 0000000..632d876
--- /dev/null
@@ -0,0 +1,1333 @@
+# XBoard -- a graphical chessboard for X
+# Copyright (C) 1991 by Digital Equipment Corporation, Maynard, Massachusetts.
+# Enhancements Copyright (C) 1992-98 Free Software Foundation, Inc.
+# This file is distributed under the same license as the XBoard package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: XBoard 4.2.7\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2003-12-01 20:00+0200\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: xboard.c:514
+msgid "Reset Game"
+msgstr ""
+
+#: xboard.c:516
+msgid "Load Game"
+msgstr ""
+
+#: xboard.c:517
+msgid "Load Next Game"
+msgstr ""
+
+#: xboard.c:518
+msgid "Load Previous Game"
+msgstr ""
+
+#: xboard.c:519
+msgid "Reload Same Game"
+msgstr ""
+
+#: xboard.c:520
+msgid "Save Game"
+msgstr ""
+
+#: xboard.c:522
+msgid "Copy Game"
+msgstr ""
+
+#: xboard.c:523
+msgid "Paste Game"
+msgstr ""
+
+#: xboard.c:525
+msgid "Load Position"
+msgstr ""
+
+#: xboard.c:526
+msgid "Load Next Position"
+msgstr ""
+
+#: xboard.c:527
+msgid "Load Previous Position"
+msgstr ""
+
+#: xboard.c:528
+msgid "Reload Same Position"
+msgstr ""
+
+#: xboard.c:529
+msgid "Save Position"
+msgstr ""
+
+#: xboard.c:531
+msgid "Copy Position"
+msgstr ""
+
+#: xboard.c:532
+msgid "Paste Position"
+msgstr ""
+
+#: xboard.c:534
+msgid "Mail Move"
+msgstr ""
+
+#: xboard.c:535
+msgid "Reload CMail Message"
+msgstr ""
+
+#: xboard.c:537
+msgid "Exit"
+msgstr ""
+
+#: xboard.c:542
+msgid "Machine White"
+msgstr ""
+
+#: xboard.c:543
+msgid "Machine Black"
+msgstr ""
+
+#: xboard.c:544
+msgid "Two Machines"
+msgstr ""
+
+#: xboard.c:545
+msgid "Analysis Mode"
+msgstr ""
+
+#: xboard.c:546
+msgid "Analyze File"
+msgstr ""
+
+#: xboard.c:547
+msgid "ICS Client"
+msgstr ""
+
+#: xboard.c:548
+msgid "Edit Game"
+msgstr ""
+
+#: xboard.c:549
+msgid "Edit Position"
+msgstr ""
+
+#: xboard.c:550
+msgid "Training"
+msgstr ""
+
+#: xboard.c:552
+msgid "Show Game List"
+msgstr ""
+
+#: xboard.c:553
+msgid "Show Move List"
+msgstr ""
+
+#: xboard.c:554 xedittags.c:393
+msgid "Edit Tags"
+msgstr ""
+
+#: xboard.c:555
+msgid "Edit Comment"
+msgstr ""
+
+#: xboard.c:556
+msgid "ICS Input Box"
+msgstr ""
+
+#: xboard.c:557
+msgid "Pause"
+msgstr ""
+
+#: xboard.c:562
+msgid "Accept"
+msgstr ""
+
+#: xboard.c:563
+msgid "Decline"
+msgstr ""
+
+#: xboard.c:564
+msgid "Rematch"
+msgstr ""
+
+#: xboard.c:566
+msgid "Call Flag"
+msgstr ""
+
+#: xboard.c:567
+msgid "Draw"
+msgstr ""
+
+#: xboard.c:568
+msgid "Adjourn"
+msgstr ""
+
+#: xboard.c:569
+msgid "Abort"
+msgstr ""
+
+#: xboard.c:570
+msgid "Resign"
+msgstr ""
+
+#: xboard.c:572
+msgid "Stop Observing"
+msgstr ""
+
+#: xboard.c:573
+msgid "Stop Examining"
+msgstr ""
+
+#: xboard.c:578
+msgid "Backward"
+msgstr ""
+
+#: xboard.c:579
+msgid "Forward"
+msgstr ""
+
+#: xboard.c:580
+msgid "Back to Start"
+msgstr ""
+
+#: xboard.c:581
+msgid "Forward to End"
+msgstr ""
+
+#: xboard.c:582
+msgid "Revert"
+msgstr ""
+
+#: xboard.c:583
+msgid "Truncate Game"
+msgstr ""
+
+#: xboard.c:585
+msgid "Move Now"
+msgstr ""
+
+#: xboard.c:586
+msgid "Retract Move"
+msgstr ""
+
+#: xboard.c:591
+msgid "Always Queen"
+msgstr ""
+
+#: xboard.c:592
+msgid "Animate Dragging"
+msgstr ""
+
+#: xboard.c:593
+msgid "Animate Moving"
+msgstr ""
+
+#: xboard.c:594
+msgid "Auto Comment"
+msgstr ""
+
+#: xboard.c:595
+msgid "Auto Flag"
+msgstr ""
+
+#: xboard.c:596
+msgid "Auto Flip View"
+msgstr ""
+
+#: xboard.c:597
+msgid "Auto Observe"
+msgstr ""
+
+#: xboard.c:598
+msgid "Auto Raise Board"
+msgstr ""
+
+#: xboard.c:599
+msgid "Auto Save"
+msgstr ""
+
+#: xboard.c:600
+msgid "Blindfold"
+msgstr ""
+
+#: xboard.c:601
+msgid "Flash Moves"
+msgstr ""
+
+#: xboard.c:602
+msgid "Flip View"
+msgstr ""
+
+#: xboard.c:603
+msgid "Get Move List"
+msgstr ""
+
+#: xboard.c:605
+msgid "Highlight Dragging"
+msgstr ""
+
+#: xboard.c:607
+msgid "Highlight Last Move"
+msgstr ""
+
+#: xboard.c:608
+msgid "Move Sound"
+msgstr ""
+
+#: xboard.c:609
+msgid "ICS Alarm"
+msgstr ""
+
+#: xboard.c:610
+msgid "Old Save Style"
+msgstr ""
+
+#: xboard.c:611
+msgid "Periodic Updates"
+msgstr ""
+
+#: xboard.c:612
+msgid "Ponder Next Move"
+msgstr ""
+
+#: xboard.c:613
+msgid "Popup Exit Message"
+msgstr ""
+
+#: xboard.c:614
+msgid "Popup Move Errors"
+msgstr ""
+
+#: xboard.c:615
+msgid "Premove"
+msgstr ""
+
+#: xboard.c:616
+msgid "Quiet Play"
+msgstr ""
+
+#: xboard.c:617
+msgid "Show Coords"
+msgstr ""
+
+#: xboard.c:618
+msgid "Show Thinking"
+msgstr ""
+
+#: xboard.c:619
+msgid "Test Legality"
+msgstr ""
+
+#: xboard.c:624
+msgid "Info XBoard"
+msgstr ""
+
+#: xboard.c:625
+msgid "Man XBoard"
+msgstr ""
+
+#: xboard.c:627
+msgid "Hint"
+msgstr ""
+
+#: xboard.c:628
+msgid "Book"
+msgstr ""
+
+#: xboard.c:630 xboard.c:6746
+msgid "About XBoard"
+msgstr ""
+
+#: xboard.c:635
+msgid "File"
+msgstr ""
+
+#: xboard.c:636
+msgid "Mode"
+msgstr ""
+
+#: xboard.c:637
+msgid "Action"
+msgstr ""
+
+#: xboard.c:638
+msgid "Step"
+msgstr ""
+
+#: xboard.c:639
+msgid "Options"
+msgstr ""
+
+#: xboard.c:640
+msgid "Help"
+msgstr ""
+
+#. Label on pause button
+#: xboard.c:646
+msgid "P"
+msgstr ""
+
+#: xboard.c:658 xboard.c:7440
+msgid "White"
+msgstr ""
+
+#: xboard.c:658 xboard.c:660 xboard.c:675
+msgid "Pawn"
+msgstr ""
+
+#: xboard.c:658 xboard.c:660 xboard.c:675 xboard.c:5218 xboard.c:5277
+msgid "Knight"
+msgstr ""
+
+#: xboard.c:658 xboard.c:660 xboard.c:675 xboard.c:5216
+msgid "Bishop"
+msgstr ""
+
+#: xboard.c:658 xboard.c:660 xboard.c:675 xboard.c:5214
+msgid "Rook"
+msgstr ""
+
+#: xboard.c:659 xboard.c:661 xboard.c:675 xboard.c:5212
+msgid "Queen"
+msgstr ""
+
+#: xboard.c:659 xboard.c:661 xboard.c:5222
+msgid "King"
+msgstr ""
+
+#: xboard.c:659 xboard.c:661
+msgid "Empty square"
+msgstr ""
+
+#: xboard.c:659 xboard.c:661
+msgid "Clear board"
+msgstr ""
+
+#: xboard.c:660 xboard.c:7454
+msgid "Black"
+msgstr ""
+
+#: xboard.c:1666
+#, c-format
+msgid "%s: Can't access XPM directory %s\n"
+msgstr ""
+
+#: xboard.c:1689
+#, c-format
+msgid "Available `%s' sizes:\n"
+msgstr ""
+
+#: xboard.c:1725
+#, c-format
+msgid "Error: No `%s' files!\n"
+msgstr ""
+
+#: xboard.c:1741
+msgid ""
+"Warning: No DIR structure found on this system --\n"
+"         Unable to autosize for XPM/XIM pieces.\n"
+"   Please report this error to frankm@hiwaay.net.\n"
+"   Include system type & operating system in message.\n"
+msgstr ""
+
+#: xboard.c:1802
+#, c-format
+msgid "%s: unrecognized color %s\n"
+msgstr ""
+
+#: xboard.c:1812
+#, c-format
+msgid "%s: can't parse foreground color in `%s'\n"
+msgstr ""
+
+#: xboard.c:1883
+#, c-format
+msgid "%s: unrecognized argument %s\n"
+msgstr ""
+
+#: xboard.c:1892
+#, c-format
+msgid "%s: can't cd to CHESSDIR: "
+msgstr ""
+
+#: xboard.c:1928
+#, c-format
+msgid "%s: bad boardSize syntax %s\n"
+msgstr ""
+
+#: xboard.c:1964
+#, c-format
+msgid "%s: unrecognized boardSize name %s\n"
+msgstr ""
+
+#: xboard.c:1982
+#, c-format
+msgid "Error expanding path name \"%s\"\n"
+msgstr ""
+
+#: xboard.c:1987
+#, c-format
+msgid ""
+"XBoard square size (hint): %d\n"
+"%s fulldir:%s:\n"
+msgstr ""
+
+#: xboard.c:1993
+#, c-format
+msgid "Closest %s size: %d\n"
+msgstr ""
+
+#: xboard.c:2105
+#, c-format
+msgid "%s: too few colors available; trying monochrome mode\n"
+msgstr ""
+
+#: xboard.c:2110
+#, c-format
+msgid "white pixel = 0x%lx, black pixel = 0x%lx\n"
+msgstr ""
+
+#: xboard.c:2128
+#, c-format
+msgid "%s: can't parse color names; disabling colorization\n"
+msgstr ""
+
+#: xboard.c:2308 xboard.c:2318
+#, c-format
+msgid "%s: messageWidget geometry error %d %d %d %d %d\n"
+msgstr ""
+
+#: xboard.c:2339
+#, c-format
+msgid "%s: titleWidget geometry error %d %d %d %d %d\n"
+msgstr ""
+
+#: xboard.c:2909
+msgid "Unable to create font set.\n"
+msgstr ""
+
+#: xboard.c:2917
+#, c-format
+msgid "%s: no fonts match pattern %s\n"
+msgstr ""
+
+#: xboard.c:2960
+#, c-format
+msgid ""
+"resolved %s at pixel size %d\n"
+"  to %s\n"
+msgstr ""
+
+#: xboard.c:3084
+#, c-format
+msgid "%s: error loading XIM!\n"
+msgstr ""
+
+#: xboard.c:3176
+msgid "XIM pieces cannot be used in monochrome mode"
+msgstr ""
+
+#: xboard.c:3180
+msgid ""
+"\n"
+"Loading XIMs...\n"
+msgstr ""
+
+#: xboard.c:3194 xboard.c:3215 xboard.c:3222 xboard.c:3313 xboard.c:3334
+#: xboard.c:3345
+#, c-format
+msgid "(File:%s:) "
+msgstr ""
+
+#: xboard.c:3210 xboard.c:3327
+msgid "light square "
+msgstr ""
+
+#: xboard.c:3218 xboard.c:3341
+msgid "dark square "
+msgstr ""
+
+#: xboard.c:3229 xboard.c:3354
+msgid "Done.\n"
+msgstr ""
+
+#: xboard.c:3271
+msgid "XPM pieces cannot be used in monochrome mode"
+msgstr ""
+
+#: xboard.c:3281
+#, c-format
+msgid "No builtin XPM pieces of size %d\n"
+msgstr ""
+
+#: xboard.c:3291
+#, c-format
+msgid "Error %d loading XPM image \"%s\"\n"
+msgstr ""
+
+#: xboard.c:3302
+msgid ""
+"\n"
+"Loading XPMs...\n"
+msgstr ""
+
+#: xboard.c:3318 xboard.c:3338 xboard.c:3349
+#, c-format
+msgid "Error %d loading XPM file \"%s\"\n"
+msgstr ""
+
+#: xboard.c:3431
+#, c-format
+msgid "Can't open bitmap file %s"
+msgstr ""
+
+#: xboard.c:3434
+#, c-format
+msgid "Invalid bitmap in file %s"
+msgstr ""
+
+#: xboard.c:3437
+#, c-format
+msgid "Ran out of memory reading bitmap file %s"
+msgstr ""
+
+#: xboard.c:3441
+#, c-format
+msgid "Unknown XReadBitmapFile error %d on file %s"
+msgstr ""
+
+#: xboard.c:3445
+#, c-format
+msgid "%s: %s...using built-in\n"
+msgstr ""
+
+#: xboard.c:3449
+#, c-format
+msgid "%s: Bitmap %s is %dx%d, not %dx%d...using built-in\n"
+msgstr ""
+
+#: xboard.c:3456
+#, c-format
+msgid "%s: No built-in bitmap for %s; giving up\n"
+msgstr ""
+
+#: xboard.c:3652
+msgid "Drop"
+msgstr ""
+
+#: xboard.c:4573 xboard.c:4576 xboard.c:4832 xboard.c:5078 xboard.c:5087
+#: xboard.c:5340 xedittags.c:150 xedittags.c:248
+msgid "ok"
+msgstr ""
+
+#: xboard.c:4587 xboard.c:4590 xboard.c:4839 xboard.c:5082 xboard.c:5088
+#: xboard.c:5127 xboard.c:5225 xboard.c:5273 xboard.c:7014 xboard.c:7055
+#: xedittags.c:157 xedittags.c:259
+msgid "cancel"
+msgstr ""
+
+#: xboard.c:4601 xboard.c:4604 xboard.c:4841 xedittags.c:159
+msgid "clear"
+msgstr ""
+
+#: xboard.c:4614 xboard.c:4617 xboard.c:5008 xedittags.c:128 xedittags.c:282
+#: xgamelist.c:226 xgamelist.c:292
+msgid "close"
+msgstr ""
+
+#: xboard.c:4628 xboard.c:4631 xboard.c:5010 xedittags.c:130 xedittags.c:293
+msgid "edit"
+msgstr ""
+
+#: xboard.c:4873
+msgid "ICS Input"
+msgstr ""
+
+#: xboard.c:5062
+msgid "File name prompt"
+msgstr ""
+
+#: xboard.c:5164 xboard.c:6864 xboard.c:6878
+msgid "Error"
+msgstr ""
+
+#: xboard.c:5164
+msgid "Can't open file"
+msgstr ""
+
+#: xboard.c:5169
+msgid "Failed to open file"
+msgstr ""
+
+#: xboard.c:5198
+msgid "Promotion"
+msgstr ""
+
+#: xboard.c:5207
+msgid "Promote pawn to what?"
+msgstr ""
+
+#: xboard.c:5525 backend.c:5699
+msgid "Cannot build game list"
+msgstr ""
+
+#: xboard.c:5546
+msgid "Load game file name?"
+msgstr ""
+
+#: xboard.c:5612
+msgid "Load position file name?"
+msgstr ""
+
+#: xboard.c:5621
+msgid "Save game file name?"
+msgstr ""
+
+#: xboard.c:5632
+msgid "Save position file name?"
+msgstr ""
+
+#: xboard.c:5804
+msgid "Can't open temp file"
+msgstr ""
+
+#: xboard.c:5885 xboard.c:5903
+#, c-format
+msgid "%s does not support analysis"
+msgstr ""
+
+#: xboard.c:5913
+msgid "File to analyze"
+msgstr ""
+
+#: xboard.c:6901
+msgid "Fatal Error"
+msgstr ""
+
+#: xboard.c:6901
+msgid "Exiting"
+msgstr ""
+
+#: xboard.c:6911
+msgid "Information"
+msgstr ""
+
+#: xboard.c:6918
+msgid "Note"
+msgstr ""
+
+#: xboard.c:6968
+#, c-format
+msgid "AskQuestionProc needed 4 parameters, got %d\n"
+msgstr ""
+
+#: xboard.c:7001
+msgid "Error writing to chess program"
+msgstr ""
+
+#: xboard.c:7053
+msgid "enter"
+msgstr ""
+
+#: xboard.c:7166 backend.c:1323
+msgid "Error writing to display"
+msgstr ""
+
+#: xboard.c:7239
+#, c-format
+msgid "ERROR: Unknown user %s (in path %s)\n"
+msgstr ""
+
+#: xboard.c:7594
+msgid "Socket support is not configured in"
+msgstr ""
+
+#: xboard.c:7696
+msgid "internal rcmd not implemented for Unix"
+msgstr ""
+
+#: xboard.c:8422
+#, c-format
+msgid "AnimateMove: piece %d hops from %d,%d to %d,%d \n"
+msgstr ""
+
+#: xboard.c:8423
+#, c-format
+msgid "AnimateMove: piece %d slides from %d,%d to %d,%d \n"
+msgstr ""
+
+#: xedittags.c:346 xedittags.c:354
+msgid "Tags"
+msgstr ""
+
+#: xedittags.c:385
+msgid "Edit tags"
+msgstr ""
+
+#: xgamelist.c:193 xgamelist.c:298
+msgid "load"
+msgstr ""
+
+#: xgamelist.c:204 xgamelist.c:311
+msgid "prev"
+msgstr ""
+
+#: xgamelist.c:215 xgamelist.c:304
+msgid "next"
+msgstr ""
+
+#: xgamelist.c:301
+msgid "No game selected"
+msgstr ""
+
+#: xgamelist.c:307
+msgid "Can't go forward any further"
+msgstr ""
+
+#: xgamelist.c:314 backend.c:5833 backend.c:6292
+msgid "Can't back up any further"
+msgstr ""
+
+#: xgamelist.c:415
+msgid "There is no game list"
+msgstr ""
+
+#: xhistory.c:156
+msgid "White "
+msgstr ""
+
+#: xhistory.c:157
+msgid "Black "
+msgstr ""
+
+#: xhistory.c:347 xhistory.c:351
+msgid "Move list"
+msgstr ""
+
+#: xhistory.c:445
+msgid "Close"
+msgstr ""
+
+#: backend.c:468
+#, c-format
+msgid "bad timeControl option %s"
+msgstr ""
+
+#: backend.c:483
+#, c-format
+msgid "bad searchTime option %s"
+msgstr ""
+
+#: backend.c:542 backend.c:552
+#, c-format
+msgid "protocol version %d not supported"
+msgstr ""
+
+#: backend.c:603
+#, c-format
+msgid "Variant %s supported only in ICS mode"
+msgstr ""
+
+#: backend.c:618
+#, c-format
+msgid "Unknown variant name %s"
+msgstr ""
+
+#: backend.c:705
+#, c-format
+msgid "Could not open comm port %s"
+msgstr ""
+
+#: backend.c:708
+#, c-format
+msgid "Could not connect to host %s, port %s"
+msgstr ""
+
+#: backend.c:753
+#, c-format
+msgid "Unknown initialMode %s"
+msgstr ""
+
+#: backend.c:761
+msgid "Can't have a match with no chess programs"
+msgstr ""
+
+#: backend.c:771
+msgid "Bad game file"
+msgstr ""
+
+#: backend.c:778
+msgid "Bad position file"
+msgstr ""
+
+#: backend.c:790
+msgid "AnalyzeFile mode requires a game file"
+msgstr ""
+
+#: backend.c:805
+msgid "Analysis mode requires a chess engine"
+msgstr ""
+
+#: backend.c:809
+msgid "Analysis mode does not work with ICS mode"
+msgstr ""
+
+#: backend.c:819
+msgid "MachineWhite mode requires a chess engine"
+msgstr ""
+
+#: backend.c:824
+msgid "MachineWhite mode does not work with ICS mode"
+msgstr ""
+
+#: backend.c:831
+msgid "MachineBlack mode requires a chess engine"
+msgstr ""
+
+#: backend.c:836
+msgid "MachineBlack mode does not work with ICS mode"
+msgstr ""
+
+#: backend.c:843
+msgid "TwoMachines mode requires a chess engine"
+msgstr ""
+
+#: backend.c:848
+msgid "TwoMachines mode does not work with ICS mode"
+msgstr ""
+
+#: backend.c:859
+msgid "Training mode requires a game file"
+msgstr ""
+
+#: backend.c:1007 backend.c:1029 backend.c:1054 backend.c:1409
+msgid "Error writing to ICS"
+msgstr ""
+
+#: backend.c:1011
+msgid "Error reading from keyboard"
+msgstr ""
+
+#: backend.c:1014
+msgid "Got end of file from keyboard"
+msgstr ""
+
+#: backend.c:1258
+#, c-format
+msgid "recognized '%s' (%d) as variant %s\n"
+msgstr ""
+
+#: backend.c:2000
+msgid "Error gathering move list: two headers"
+msgstr ""
+
+#: backend.c:2014
+#, c-format
+msgid "Ratings from header: W %d, B %d\n"
+msgstr ""
+
+#: backend.c:2047
+msgid "Error gathering move list: nested"
+msgstr ""
+
+#: backend.c:2556
+msgid "Connection closed by ICS"
+msgstr ""
+
+#: backend.c:2558
+msgid "Error reading from ICS"
+msgstr ""
+
+#: backend.c:2606
+#, c-format
+msgid "Parsing board: %s\n"
+msgstr ""
+
+#: backend.c:2618
+#, c-format
+msgid ""
+"Failed to parse board string:\n"
+"\"%s\""
+msgstr ""
+
+#: backend.c:2627 backend.c:4811
+msgid "Game too long; increase MAX_MOVES and recompile"
+msgstr ""
+
+#: backend.c:2689
+msgid "Error gathering move list: extra board"
+msgstr ""
+
+#: backend.c:2936 backend.c:2958
+#, c-format
+msgid "Couldn't parse move \"%s\" from ICS"
+msgstr ""
+
+#: backend.c:3391
+msgid "You are playing Black"
+msgstr ""
+
+#: backend.c:3400 backend.c:3431
+msgid "You are playing White"
+msgstr ""
+
+#: backend.c:3407 backend.c:3439 backend.c:3504 backend.c:3526 backend.c:3542
+#: backend.c:7925
+msgid "It is White's turn"
+msgstr ""
+
+#: backend.c:3411 backend.c:3443 backend.c:3512 backend.c:3532 backend.c:3563
+#: backend.c:7917
+msgid "It is Black's turn"
+msgstr ""
+
+#: backend.c:3454
+msgid "Displayed position is not current"
+msgstr ""
+
+#: backend.c:3602
+msgid "Illegal move"
+msgstr ""
+
+#: backend.c:3636
+msgid "End of game"
+msgstr ""
+
+#: backend.c:3639
+msgid "Incorrect move"
+msgstr ""
+
+#: backend.c:3858
+#, c-format
+msgid "Illegal move \"%s\" from %s machine"
+msgstr ""
+
+#: backend.c:4099
+#, c-format
+msgid "Illegal move \"%s\" (rejected by %s chess program)"
+msgstr ""
+
+#: backend.c:4124
+#, c-format
+msgid "Failed to start %s chess program %s on %s: %s\n"
+msgstr ""
+
+#: backend.c:4147
+#, c-format
+msgid ""
+"Illegal hint move \"%s\"\n"
+"from %s chess program"
+msgstr ""
+
+#: backend.c:4322
+msgid ""
+"Machine offers a draw\n"
+"Select Action / Draw to agree"
+msgstr ""
+
+#: backend.c:4578
+#, c-format
+msgid "Ambiguous move in ICS output: \"%s\""
+msgstr ""
+
+#: backend.c:4583
+#, c-format
+msgid "Illegal move in ICS output: \"%s\""
+msgstr ""
+
+#: backend.c:4589
+msgid "Gap in move list"
+msgstr ""
+
+#: backend.c:4890
+#, c-format
+msgid "Variant %s not supported by %s"
+msgstr ""
+
+#: backend.c:5242
+#, c-format
+msgid "Match %s vs. %s: final score %d-%d-%d"
+msgstr ""
+
+#: backend.c:5628
+#, c-format
+msgid "Ambiguous move: %d.%s%s"
+msgstr ""
+
+#: backend.c:5639
+#, c-format
+msgid "Illegal move: %d.%s%s"
+msgstr ""
+
+#: backend.c:5687 backend.c:6314 backend.c:6507 backend.c:6733
+#, c-format
+msgid "Can't open \"%s\""
+msgstr ""
+
+#: backend.c:5788
+msgid "No more games in this message"
+msgstr ""
+
+#: backend.c:5829
+msgid "No game has been loaded yet"
+msgstr ""
+
+#: backend.c:5888
+msgid "Game number out of range"
+msgstr ""
+
+#: backend.c:5899
+msgid "Can't seek on game file"
+msgstr ""
+
+#: backend.c:5958
+msgid "Game not found in file"
+msgstr ""
+
+#: backend.c:6075 backend.c:6404
+msgid "Bad FEN position in file"
+msgstr ""
+
+#: backend.c:6218
+msgid "No moves in game"
+msgstr ""
+
+#: backend.c:6288
+msgid "No position has been loaded yet"
+msgstr ""
+
+#: backend.c:6355 backend.c:6366
+msgid "Can't seek on position file"
+msgstr ""
+
+#: backend.c:6373 backend.c:6395
+msgid "Position not found in file"
+msgstr ""
+
+#: backend.c:6436
+msgid "Black to play"
+msgstr ""
+
+#: backend.c:6439
+msgid "White to play"
+msgstr ""
+
+#: backend.c:6863
+msgid ""
+"You have edited the game history.\n"
+"Use Reload Same Game and make your move again."
+msgstr ""
+
+#: backend.c:6868
+msgid ""
+"You have entered too many moves.\n"
+"Back up to the correct position and try again."
+msgstr ""
+
+#: backend.c:6873
+msgid ""
+"Displayed position is not current.\n"
+"Step forward to the correct position and try again."
+msgstr ""
+
+#: backend.c:6921
+msgid "You have not made a move yet"
+msgstr ""
+
+#: backend.c:6942
+msgid ""
+"The cmail message is not loaded.\n"
+"Use Reload CMail Message and make your move again."
+msgstr ""
+
+#: backend.c:6947
+msgid "No unfinished games"
+msgstr ""
+
+#: backend.c:6953
+#, c-format
+msgid ""
+"You have already mailed a move.\n"
+"Wait until a move arrives from your opponent.\n"
+"To resend the same move, type\n"
+"\"cmail -remail -game %s\"\n"
+"on the command line."
+msgstr ""
+
+#: backend.c:6968
+msgid "Failed to invoke cmail"
+msgstr ""
+
+#: backend.c:7030
+msgid "Waiting for reply from opponent\n"
+msgstr ""
+
+#: backend.c:7053
+msgid "Still need to make move for game\n"
+msgstr ""
+
+#: backend.c:7058
+msgid "Still need to make moves for both games\n"
+msgstr ""
+
+#: backend.c:7063
+#, c-format
+msgid "Still need to make moves for all %d games\n"
+msgstr ""
+
+#: backend.c:7071
+#, c-format
+msgid "Still need to make a move for game %s\n"
+msgstr ""
+
+#: backend.c:7077
+msgid "No unfinished games\n"
+msgstr ""
+
+#: backend.c:7079
+msgid "Ready to send mail\n"
+msgstr ""
+
+#: backend.c:7085
+#, c-format
+msgid "Still need to make moves for games %s\n"
+msgstr ""
+
+#: backend.c:7237
+msgid "Edit comment"
+msgstr ""
+
+#: backend.c:7239
+#, c-format
+msgid "Edit comment on %d.%s%s"
+msgstr ""
+
+#: backend.c:7270 backend.c:7297
+msgid "Analysis"
+msgstr ""
+
+#: backend.c:7271 backend.c:7298
+msgid ""
+"Starting analysis mode...\n"
+"If this message stays up, your chess program does not support analysis."
+msgstr ""
+
+#: backend.c:7330
+msgid "It is not White's turn"
+msgstr ""
+
+#: backend.c:7393
+msgid "It is not Black's turn"
+msgstr ""
+
+#: backend.c:7474 backend.c:8405
+msgid ""
+"Wait until your turn,\n"
+"or select Move Now"
+msgstr ""
+
+#: backend.c:7506
+msgid "Starting second chess program"
+msgstr ""
+
+#: backend.c:7571
+msgid "Training mode off"
+msgstr ""
+
+#: backend.c:7579
+msgid "Training mode on"
+msgstr ""
+
+#: backend.c:7582
+msgid "Already at end of game"
+msgstr ""
+
+#: backend.c:7663
+msgid "Warning: You are still playing a game"
+msgstr ""
+
+#: backend.c:7666
+msgid "Warning: You are still observing a game"
+msgstr ""
+
+#: backend.c:7669
+msgid "Warning: You are still examining a game"
+msgstr ""
+
+#: backend.c:7942
+msgid "That square is occupied"
+msgstr ""
+
+#: backend.c:7966 backend.c:7992
+msgid "There is no pending offer on this move"
+msgstr ""
+
+#: backend.c:8028 backend.c:8039
+msgid "Your opponent is not out of time"
+msgstr ""
+
+#: backend.c:8074
+msgid "You must make your move before offering a draw"
+msgstr ""
+
+#: backend.c:8387
+msgid "You are not examining a game"
+msgstr ""
+
+#: backend.c:8391
+msgid "You can't revert while pausing"
+msgstr ""
+
+#: backend.c:8445 backend.c:8452
+msgid "It is your turn"
+msgstr ""
+
+#: backend.c:8502 backend.c:8509 backend.c:8528 backend.c:8535
+msgid "Wait until your turn"
+msgstr ""
+
+#: backend.c:8514
+msgid "No hint available"
+msgstr ""
+
+#: backend.c:8820
+#, c-format
+msgid "Error writing to %s chess program"
+msgstr ""
+
+#: backend.c:8841
+#, c-format
+msgid "Error: %s chess program (%s) exited unexpectedly"
+msgstr ""
+
+#: backend.c:8847
+#, c-format
+msgid "Error reading from %s chess program (%s)"
+msgstr ""
+
+#: backend.c:9350 backend.c:9372
+msgid "Both flags fell"
+msgstr ""
+
+#: backend.c:9352
+msgid "White's flag fell"
+msgstr ""
+
+#: backend.c:9374
+msgid "Black's flag fell"
+msgstr ""
+
+#: backend.c:9972
+msgid "Bad FEN position in clipboard"
+msgstr ""
diff --git a/uci/uci_protocol.txt b/uci/uci_protocol.txt
new file mode 100755 (executable)
index 0000000..f89ddfb
--- /dev/null
@@ -0,0 +1,502 @@
+/* With friendly permission, to public this document,
+ * of Stefan-Mayer Kahlen 
+ * For more information or newer versions of the 
+ * UCI protcol please visit 
+ * http://www.shredderchess.de/download.html
+ */
+  
+Description of the universal chess interface (UCI)    April 2004
+================================================================
+
+* The specification is independent of the operating system. For Windows,
+  the engine is a normal exe file, either a console or "real" windows application.
+
+* all communication is done via standard input and output with text commands,
+
+* The engine should boot and wait for input from the GUI,
+  the engine should wait for the "isready" or "setoption" command to set up its internal parameters
+  as the boot process should be as quick as possible.
+
+* the engine must always be able to process input from stdin, even while thinking.
+
+* all command strings the engine receives will end with '\n',
+  also all commands the GUI receives should end with '\n',
+  Note: '\n' can be 0x0c or 0x0a0c or any combination depending on your OS.
+  If you use Engine und GUI in the same OS this should be no problem if you cummunicate in text mode,
+  but be aware of this when for example running a Linux engine in a Windows GUI.
+
+* The engine will always be in forced mode which means it should never start calculating
+  or pondering without receiving a "go" command first.
+
+* Before the engine is asked to search on a position, there will always be a position command
+  to tell the engine about the current position.
+
+* by default all the opening book handling is done by the GUI,
+  but there is an option for the engine to use its own book ("OwnBook" option, see below)
+
+* if the engine or the GUI receives an unknown command or token it should just ignore it and try to
+  parse the rest of the string.
+
+* if the engine receives a command which is not supposed to come, for example "stop" when the engine is
+  not calculating, it should also just ignore it.
+  
+
+Move format:
+------------
+
+The move format is in long algebraic notation.
+A nullmove from the Engine to the GUI should be send as 0000.
+Examples:  e2e4, e7e5, e1g1 (white short castling), e7e8q (for promotion)
+
+
+
+GUI to engine:
+--------------
+
+These are all the command the engine gets from the interface.
+
+* uci
+       tell engine to use the uci (universal chess interface),
+       this will be send once as a first command after program boot
+       to tell the engine to switch to uci mode.
+       After receiving the uci command the engine must identify itself with the "id" command
+       and sent the "option" commands to tell the GUI which engine settings the engine supports if any.
+       After that the engine should sent "uciok" to acknowledge the uci mode.
+       If no uciok is sent within a certain time period, the engine task will be killed by the GUI.
+
+* debug [ on | off ]
+       switch the debug mode of the engine on and off.
+       In debug mode the engine should sent additional infos to the GUI, e.g. with the "info string" command,
+       to help debugging, e.g. the commands that the engine has received etc.
+       This mode should be switched off by default and this command can be sent
+       any time, also when the engine is thinking.
+
+* isready
+       this is used to synchronize the engine with the GUI. When the GUI has sent a command or
+       multiple commands that can take some time to complete,
+       this command can be used to wait for the engine to be ready again or
+       to ping the engine to find out if it is still alive.
+       E.g. this should be sent after setting the path to the tablebases as this can take some time.
+       This command is also required once before the engine is asked to do any search
+       to wait for the engine to finish initializing.
+       This command must always be answered with "readyok" and can be sent also when the engine is calculating
+       in which case the engine should also immediately answer with "readyok" without stopping the search.
+
+* setoption name <id> [value <x>]
+       this is sent to the engine when the user wants to change the internal parameters
+       of the engine. For the "button" type no value is needed.
+       One string will be sent for each parameter and this will only be sent when the engine is waiting.
+       The name of the option in <id> should not be case sensitive and can inludes spaces like also the value.
+       The substrings "value" and "name" should be avoided in <id> and <x> to allow unambiguous parsing,
+       for example do not use <name> = "draw value".
+       Here are some strings for the example below:
+          "setoption name Nullmove value true\n"
+      "setoption name Selectivity value 3\n"
+          "setoption name Style value Risky\n"
+          "setoption name Clear Hash\n"
+          "setoption name NalimovPath value c:\chess\tb\4;c:\chess\tb\5\n"
+
+* register
+       this is the command to try to register an engine or to tell the engine that registration
+       will be done later. This command should always be sent if the engine    has send "registration error"
+       at program startup.
+       The following tokens are allowed:
+       * later
+          the user doesn't want to register the engine now.
+       * name <x>
+          the engine should be registered with the name <x>
+       * code <y>
+          the engine should be registered with the code <y>
+       Example:
+          "register later"
+          "register name Stefan MK code 4359874324"
+
+* ucinewgame
+   this is sent to the engine when the next search (started with "position" and "go") will be from
+   a different game. This can be a new game the engine should play or a new game it should analyse but
+   also the next position from a testsuite with positions only.
+   If the GUI hasn't sent a "ucinewgame" before the first "position" command, the engine shouldn't
+   expect any further ucinewgame commands as the GUI is probably not supporting the ucinewgame command.
+   So the engine should not rely on this command even though all new GUIs should support it.
+   As the engine's reaction to "ucinewgame" can take some time the GUI should always send "isready"
+   after "ucinewgame" to wait for the engine to finish its operation.
+   
+* position [fen <fenstring> | startpos ]  moves <move1> .... <movei>
+       set up the position described in fenstring on the internal board and
+       play the moves on the internal chess board.
+       if the game was played  from the start position the string "startpos" will be sent
+       Note: no "new" command is needed. However, if this position is from a different game than
+       the last position sent to the engine, the GUI should have sent a "ucinewgame" inbetween.
+
+* go
+       start calculating on the current position set up with the "position" command.
+       There are a number of commands that can follow this command, all will be sent in the same string.
+       If one command is not send its value should be interpreted as it would not influence the search.
+       * searchmoves <move1> .... <movei>
+               restrict search to this moves only
+               Example: After "position startpos" and "go infinite searchmoves e2e4 d2d4"
+               the engine should only search the two moves e2e4 and d2d4 in the initial position.
+       * ponder
+               start searching in pondering mode.
+               Do not exit the search in ponder mode, even if it's mate!
+               This means that the last move sent in in the position string is the ponder move.
+               The engine can do what it wants to do, but after a "ponderhit" command
+               it should execute the suggested move to ponder on. This means that the ponder move sent by
+               the GUI can be interpreted as a recommendation about which move to ponder. However, if the
+               engine decides to ponder on a different move, it should not display any mainlines as they are
+               likely to be misinterpreted by the GUI because the GUI expects the engine to ponder
+          on the suggested move.
+       * wtime <x>
+               white has x msec left on the clock
+       * btime <x>
+               black has x msec left on the clock
+       * winc <x>
+               white increment per move in mseconds if x > 0
+       * binc <x>
+               black increment per move in mseconds if x > 0
+       * movestogo <x>
+      there are x moves to the next time control,
+               this will only be sent if x > 0,
+               if you don't get this and get the wtime and btime it's sudden death
+       * depth <x>
+               search x plies only.
+       * nodes <x>
+          search x nodes only,
+       * mate <x>
+               search for a mate in x moves
+       * movetime <x>
+               search exactly x mseconds
+       * infinite
+               search until the "stop" command. Do not exit the search without being told so in this mode!
+    
+* stop
+       stop calculating as soon as possible,
+       don't forget the "bestmove" and possibly the "ponder" token when finishing the search
+
+* ponderhit
+       the user has played the expected move. This will be sent if the engine was told to ponder on the same move
+       the user has played. The engine should continue searching but switch from pondering to normal search.
+
+* quit
+       quit the program as soon as possible
+
+
+Engine to GUI:
+--------------
+
+* id
+       * name <x>
+               this must be sent after receiving the "uci" command to identify the engine,
+               e.g. "id name Shredder X.Y\n"
+       * author <x>
+               this must be sent after receiving the "uci" command to identify the engine,
+               e.g. "id author Stefan MK\n"
+
+* uciok
+       Must be sent after the id and optional options to tell the GUI that the engine
+       has sent all infos and is ready in uci mode.
+
+* readyok
+       This must be sent when the engine has received an "isready" command and has
+       processed all input and is ready to accept new commands now.
+       It is usually sent after a command that can take some time to be able to wait for the engine,
+       but it can be used anytime, even when the engine is searching,
+       and must always be answered with "isready".
+
+* bestmove <move1> [ ponder <move2> ]
+       the engine has stopped searching and found the move <move> best in this position.
+       the engine can send the move it likes to ponder on. The engine must not start pondering automatically.
+       this command must always be sent if the engine stops searching, also in pondering mode if there is a
+       "stop" command, so for every "go" command a "bestmove" command is needed!
+       Directly before that the engine should send a final "info" command with the final search information,
+       the the GUI has the complete statistics about the last search.
+
+* copyprotection
+       this is needed for copyprotected engines. After the uciok command the engine can tell the GUI,
+       that it will check the copy protection now. This is done by "copyprotection checking".
+       If the check is ok the engine should sent "copyprotection ok", otherwise "copyprotection error".
+       If there is an error the engine should not function properly but should not quit alone.
+       If the engine reports "copyprotection error" the GUI should not use this engine
+       and display an error message instead!
+       The code in the engine can look like this
+      TellGUI("copyprotection checking\n");
+          // ... check the copy protection here ...
+          if(ok)
+             TellGUI("copyprotection ok\n");
+      else
+         TellGUI("copyprotection error\n");
+         
+* registration
+       this is needed for engines that need a username and/or a code to function with all features.
+       Analog to the "copyprotection" command the engine can send "registration checking"
+       after the uciok command followed by either "registration ok" or "registration error".
+       Also after every attempt to register the engine it should answer with "registration checking"
+       and then either "registration ok" or "registration error".
+       In contrast to the "copyprotection" command, the GUI can use the engine after the engine has
+       reported an error, but should inform the user that the engine is not properly registered
+       and might not use all its features.
+       In addition the GUI should offer to open a dialog to
+       enable registration of the engine. To try to register an engine the GUI can send
+       the "register" command.
+       The GUI has to always answer with the "register" command        if the engine sends "registration error"
+       at engine startup (this can also be done with "register later")
+       and tell the user somehow that the engine is not registered.
+       This way the engine knows that the GUI can deal with the registration procedure and the user
+       will be informed that the engine is not properly registered.
+             
+* info
+       the engine wants to send infos to the GUI. This should be done whenever one of the info has changed.
+       The engine can send only selected infos and multiple infos can be send with one info command,
+       e.g. "info currmove e2e4 currmovenumber 1" or
+            "info depth 12 nodes 123456 nps 100000".
+       Also all infos belonging to the pv should be sent together
+       e.g. "info depth 2 score cp 214 time 1242 nodes 2124 nps 34928 pv e2e4 e7e5 g1f3"
+       I suggest to start sending "currmove", "currmovenumber", "currline" and "refutation" only after one second
+       to avoid too much traffic.
+       Additional info:
+       * depth <x>
+               search depth in plies
+       * seldepth <x>
+               selective search depth in plies,
+               if the engine sends seldepth there must also a "depth" be present in the same string.
+       * time <x>
+               the time searched in ms, this should be sent together with the pv.
+       * nodes <x>
+               x nodes searched, the engine should send this info regularly
+       * pv <move1> ... <movei>
+               the best line found
+       * multipv <num>
+               this for the multi pv mode.
+               for the best move/pv add "multipv 1" in the string when you send the pv.
+               in k-best mode always send all k variants in k strings together.
+       * score
+               * cp <x>
+                       the score from the engine's point of view in centipawns.
+               * mate <y>
+                       mate in y moves, not plies.
+                       If the engine is getting mated use negativ values for y.
+               * lowerbound
+             the score is just a lower bound.
+               * upperbound
+                  the score is just an upper bound.
+       * currmove <move>
+               currently searching this move
+       * currmovenumber <x>
+               currently searching move number x, for the first move x should be 1 not 0.
+       * hashfull <x>
+               the hash is x permill full, the engine should send this info regularly
+       * nps <x>
+               x nodes per second searched, the engine should send this info regularly
+       * tbhits <x>
+               x positions where found in the endgame table bases
+       * cpuload <x>
+               the cpu usage of the engine is x permill.
+       * string <str>
+               any string str which will be displayed be the engine,
+               if there is a string command the rest of the line will be interpreted as <str>.
+       * refutation <move1> <move2> ... <movei>
+          move <move1> is refuted by the line <move2> ... <movei>, i can be any number >= 1.
+          Example: after move d1h5 is searched, the engine can send
+          "info refutation d1h5 g6h5"
+          if g6h5 is the best answer after d1h5 or if g6h5 refutes the move d1h5.
+          if there is norefutation for d1h5 found, the engine should just send
+          "info refutation d1h5"
+               The engine should only send this if the option "UCI_ShowRefutations" is set to true.
+       * currline <cpunr> <move1> ... <movei>
+          this is the current line the engine is calculating. <cpunr> is the number of the cpu if
+          the engine is running on more than one cpu. <cpunr> = 1,2,3....
+          if the engine is just using one cpu, <cpunr> can be omitted.
+          If <cpunr> is greater than 1, always send all k lines in k strings together.
+               The engine should only send this if the option "UCI_ShowCurrLine" is set to true.
+       
+
+* option
+       This command tells the GUI which parameters can be changed in the engine.
+       This should be sent once at engine startup after the "uci" and the "id" commands
+       if any parameter can be changed in the engine.
+       The GUI should parse this and build a dialog for the user to change the settings.
+       Note that not every option needs to appear in this dialog as some options like
+       "Ponder", "UCI_AnalyseMode", etc. are better handled elsewhere or are set automatically.
+       If the user wants to change some settings, the GUI will send a "setoption" command to the engine.
+       Note that the GUI need not send the setoption command when starting the engine for every option if
+       it doesn't want to change the default value.
+       For all allowed combinations see the example below,
+       as some combinations of this tokens don't make sense.
+       One string will be sent for each parameter.
+       * name <id>
+               The option has the name id.
+               Certain options have a fixed value for <id>, which means that the semantics of this option is fixed.
+               Usually those options should not be displayed in the normal engine options window of the GUI but
+               get a special treatment. "Pondering" for example should be set automatically when pondering is
+               enabled or disabled in the GUI options. The same for "UCI_AnalyseMode" which should also be set
+               automatically by the GUI. All those certain options have the prefix "UCI_" except for the
+               first 6 options below. If the GUI get an unknown Option with the prefix "UCI_", it should just
+               ignore it and not display it in the engine's options dialog.
+               * <id> = Hash, type is spin
+                       the value in MB for memory for hash tables can be changed,
+                       this should be answered with the first "setoptions" command at program boot
+                       if the engine has sent the appropriate "option name Hash" command,
+                       which should be supported by all engines!
+                       So the engine should use a very small hash first as default.
+               * <id> = NalimovPath, type string
+                       this is the path on the hard disk to the Nalimov compressed format.
+                       Multiple directories can be concatenated with ";"
+               * <id> = NalimovCache, type spin
+                       this is the size in MB for the cache for the nalimov table bases
+                       These last two options should also be present in the initial options exchange dialog
+                       when the engine is booted if the engine supports it
+               * <id> = Ponder, type check
+                       this means that the engine is able to ponder.
+                       The GUI will send this whenever pondering is possible or not.
+                       Note: The engine should not start pondering on its own if this is enabled, this option is only
+                       needed because the engine might change its time management algorithm when pondering is allowed.
+               * <id> = OwnBook, type check
+                       this means that the engine has its own book which is accessed by the engine itself.
+                       if this is set, the engine takes care of the opening book and the GUI will never
+                       execute a move out of its book for the engine. If this is set to false by the GUI,
+                       the engine should not access its own book.
+               * <id> = MultiPV, type spin
+                       the engine supports multi best line or k-best mode. the default value is 1
+               * <id> = UCI_ShowCurrLine, type check, should be false by default,
+                       the engine can show the current line it is calculating. see "info currline" above.
+               * <id> = UCI_ShowRefutations, type check, should be false by default,
+                       the engine can show a move and its refutation in a line. see "info refutations" above.
+               * <id> = UCI_LimitStrength, type check, should be false by default,
+                       The engine is able to limit its strength to a specific Elo number,
+                  This should always be implemented together with "UCI_Elo".
+               * <id> = UCI_Elo, type spin
+                       The engine can limit its strength in Elo within this interval.
+                       If UCI_LimitStrength is set to false, this value should be ignored.
+                       If UCI_LimitStrength is set to true, the engine should play with this specific strength.
+                  This should always be implemented together with "UCI_LimitStrength".
+               * <id> = UCI_AnalyseMode, type check
+                  The engine wants to behave differently when analysing or playing a game.
+                  For example when playing it can use some kind of learning.
+                  This is set to false if the engine is playing a game, otherwise it is true.
+                * <id> = UCI_Opponent, type string
+                  With this command the GUI can send the name, title, elo and if the engine is playing a human
+                  or computer to the engine.
+                  The format of the string has to be [GM|IM|FM|WGM|WIM|none] [<elo>|none] [computer|human] <name>
+                  Example:
+                  "setoption name UCI_Opponent value GM 2800 human Gary Kasparow"
+                  "setoption name UCI_Opponent value none none computer Shredder"
+                                  
+               
+       * type <t>
+               The option has type t.
+               There are 5 different types of options the engine can send
+               * check
+                       a checkbox that can either be true or false
+               * spin
+                       a spin wheel that can be an integer in a certain range
+               * combo
+                       a combo box that can have different predefined strings as a value
+               * button
+                       a button that can be pressed to send a command to the engine
+               * string
+                       a text field that has a string as a value,
+                       an empty string has the value "<empty>"
+       * default <x>
+               the default value of this parameter is x
+       * min <x>
+               the minimum value of this parameter is x
+       * max <x>
+               the maximum value of this parameter is x
+       * var <x>
+               a predefined value of this parameter is x
+       Example:
+    Here are 5 strings for each of the 5 possible types of options
+          "option name Nullmove type check default true\n"
+      "option name Selectivity type spin default 2 min 0 max 4\n"
+          "option name Style type combo default Normal var Solid var Normal var Risky\n"
+          "option name NalimovPath type string default c:\\n"
+          "option name Clear Hash type button\n"
+
+
+
+Example:
+--------
+
+This is how the communication when the engine boots can look like:
+
+GUI     engine
+
+// tell the engine to switch to UCI mode
+uci
+
+// engine identify  
+      id name Shredder
+               id author Stefan MK
+
+// engine sends the options it can change
+// the engine can change the hash size from 1 to 128 MB
+               option name Hash type spin default 1 min 1 max 128
+
+// the engine supports Nalimov endgame tablebases
+               option name NalimovPath type string default <empty>
+               option name NalimovCache type spin default 1 min 1 max 32
+
+// the engine can switch off Nullmove and set the playing style
+          option name Nullmove type check default true
+               option name Style type combo default Normal var Solid var Normal var Risky
+
+// the engine has sent all parameters and is ready
+               uciok
+
+// Note: here the GUI can already send a "quit" command if it just wants to find out
+//       details about the engine, so the engine should not initialize its internal
+//       parameters before here.
+// now the GUI sets some values in the engine
+// set hash to 32 MB
+setoption name Hash value 32
+
+// init tbs
+setoption name NalimovCache value 1
+setoption name NalimovPath value d:\tb;c\tb
+
+// waiting for the engine to finish initializing
+// this command and the answer is required here!
+isready
+
+// engine has finished setting up the internal values
+               readyok
+
+// now we are ready to go
+
+// if the GUI is supporting it, tell the engine that is is
+// searching on a game that is hasn't searched on before
+ucinewgame
+
+// if the engine supports the "UCI_AnalyseMode" option and the next search is supposted to
+// be an analysis, the GUI should set "UCI_AnalyseMode" to true if it is currently
+// set to false with this engine
+setoption name UCI_AnalyseMode value true
+
+// tell the engine to search infinite from the start position after 1.e4 e5
+position startpos moves e2e4 e7e5
+go infinite
+
+// the engine starts sending infos about the search to the GUI
+// (only some examples are given)
+
+
+               info depth 1 seldepth 0
+               info score cp 13  depth 1 nodes 13 time 15 pv f1b5 
+               info depth 2 seldepth 2
+               info nps 15937
+               info score cp 14  depth 2 nodes 255 time 15 pv f1c4 f8c5 
+               info depth 2 seldepth 7 nodes 255
+               info depth 3 seldepth 7
+               info nps 26437
+               info score cp 20  depth 3 nodes 423 time 15 pv f1c4 g8f6 b1c3 
+               info nps 41562
+               ....
+
+
+// here the user has seen enough and asks to stop the searching
+stop
+
+// the engine has finished searching and is sending the bestmove command
+// which is needed for every "go" command sent to tell the GUI
+// that the engine is ready again
+               bestmove g1f3 ponder d8f6
index 32aceb1..980e948 100644 (file)
@@ -36,7 +36,7 @@
 \r
 #define LAST_PTY_LETTER 'q'\r
 \r
-#define PATCHLEVEL "15k"\r
+#define PATCHLEVEL "0e"\r
 \r
 #define PRODUCT "WinBoard"\r
 \r
@@ -54,7 +54,7 @@
 \r
 #define USE_PTYS 0\r
 \r
-#define VERSION "4.3"\r
+#define VERSION "4.4"\r
 \r
 /*#undef X_WCHAR*/\r
 \r
index bbc81cd..cbe1fe9 100644 (file)
@@ -214,6 +214,7 @@ freechess.org /icsport=5000 /icshelper=timeseal\n\
 global.chessparlor.com /icsport=6000 /icshelper=timeseal\n\\r
 chessanytime.com /icsport=5000\n\\r
 chess.net /icsport=5000\n\\r
+chess.deepnet.com /icsport=5000 /icshelper=timeseal\n\\r
 zics.org /icsport=5000\n\\r
 jogo.cex.org.br /icsport=5000\n\\r
 ajedrez.cec.uchile.cl /icsport=5000\n\\r
@@ -241,11 +242,13 @@ Pl&ay (name),play,1,1\n\
 "\r
 \r
 #define FCP_NAMES "\\r
+fmax /fd=Fairy-Max\n\\r
 GNUChess\n\\r
 \"GNUChes5 xboard\"\n\\r
 "\r
 \r
 #define SCP_NAMES "\\r
+fmax /sd=Fairy-Max\n\\r
 GNUChess\n\\r
 \"GNUChes5 xboard\"\n\\r
 "\r
diff --git a/winboard/mingw32.mak b/winboard/mingw32.mak
new file mode 100644 (file)
index 0000000..f60de0f
--- /dev/null
@@ -0,0 +1,90 @@
+#
+# Makefile for WinBoard, using the GNU Cygwin toolset
+#
+
+# Uncomment both lines to turn on debugging symbols #######
+cdebug= -g
+linkdebug= -g
+#######################################################
+
+proj=winboard
+allobj=  winboard.o backend.o parser.o moves.o lists.o \
+        gamelist.o pgntags.o wedittags.o wgamelist.o zippy.o \
+         wsockerr.o wbres.o wclipbrd.o woptions.o
+
+dotc=   winboard.c ../backend.c ../parser.c ../moves.c ../lists.c \
+        ../gamelist.c ../pgntags.c wedittags.c wgamelist.c ../zippy.c \
+         wsockerr.c winboard.rc wclipbrd.c woptions.c
+
+# Currently WinBoard will build either with or without -mno-cygwin
+# however, a Cygwin bug in forming the command line to WinMain() is
+# exposed if -mno-cygwin is not used.
+#cygwin= -mno-cygwin
+
+VPATH= .:..
+CFLAGS= $(cdebug)
+INCLUDES= -I. -I..
+CVARS= $(INCLUDES) $(cygwin)
+CC =i686-pc-mingw32-gcc $(CVARS)
+WCC = $(CC) -mwindows $(linkdebug)
+
+all: $(proj).exe
+
+depend: $(dotc)
+       makedepend -Y -f cygwin.mak $(INCLUDES) $^
+
+clean:
+       rm -f *.obj *~ $(proj).exe $(proj).err $(proj).rbj \
+               $(proj).RES $(proj).res $(proj).ini *.sbr *.bsc *.o \
+               *.plg *.opt *.ncb *.debug *.bak *.gid *.GID
+
+maintainer-clean: clean
+       rm -f parser.c *.hlp *.HLP
+
+# Update the help file if necessary
+#$(proj).hlp : $(proj).rtf
+#      $(HC) $(proj).hpj
+#      cat $(proj).err
+
+# Update the resource if necessary
+wbres.o: $(proj).rc $(proj).h resource.h
+       i686-pc-mingw32-windres --use-temp-file --include-dir .. $<  -O coff -o $@
+
+# Update the object files if necessary
+
+parser.c: parser.l
+       flex -oparser.c -L $<
+
+$(proj).exe: $(allobj)  $(proj).rc
+       $(WCC) $(guiflags) $(allobj) \
+       -lwsock32 -lwinmm -lintl -lm -liberty \
+       -o $(proj).exe
+
+# DO NOT DELETE
+
+winboard.o: config.h ../common.h winboard.h resource.h ../frontend.h
+winboard.o: ../backend.h ../lists.h ../moves.h wclipbrd.h wgamelist.h
+winboard.o: wedittags.h woptions.h wsockerr.h defaults.h
+backend.o: config.h ../common.h ../frontend.h ../backend.h ../lists.h
+backend.o: ../parser.h ../moves.h ../zippy.h ../backendz.h
+parser.o: config.h ../common.h ../backend.h ../lists.h ../frontend.h
+parser.o: ../parser.h ../moves.h
+moves.o: config.h ../common.h ../backend.h ../lists.h ../frontend.h
+moves.o: ../moves.h ../parser.h
+lists.o: config.h ../common.h ../lists.h
+gamelist.o: config.h ../common.h ../frontend.h ../backend.h ../lists.h
+gamelist.o: ../parser.h
+pgntags.o: config.h ../common.h ../frontend.h ../backend.h ../lists.h
+pgntags.o: ../parser.h
+wedittags.o: config.h ../common.h winboard.h resource.h ../frontend.h
+wedittags.o: ../backend.h ../lists.h
+wgamelist.o: config.h ../common.h winboard.h resource.h ../frontend.h
+wgamelist.o: ../backend.h ../lists.h
+zippy.o: config.h ../common.h ../zippy.h ../frontend.h ../backend.h
+zippy.o: ../lists.h ../backendz.h
+wsockerr.o: wsockerr.h
+winboard.o: resource.h
+wclipbrd.o: config.h ../common.h winboard.h resource.h ../frontend.h
+wclipbrd.o: ../backend.h ../lists.h wclipbrd.h
+woptions.o: config.h ../common.h winboard.h resource.h ../backend.h
+woptions.o: ../lists.h ../frontend.h woptions.h defaults.h wedittags.h
diff --git a/winboard/msvc7.mak b/winboard/msvc7.mak
new file mode 100644 (file)
index 0000000..bb4cd4f
--- /dev/null
@@ -0,0 +1,113 @@
+#
+# Makefile for WinBoard, using Microsoft Visual C++ and nmake
+# Command line:   nmake /f msvc.mak
+#
+
+OS=NT
+ENV=WIN32
+CPU=i386
+
+!include <$(OS)$(ENV).MAK>
+
+# Use up to date help compiler
+hc=hcrtf.exe -xn
+
+# Comment out both to turn on debugging symbols #######
+cdebug=
+linkdebug=
+#######################################################
+
+proj = winboard
+allobj = winboard.obj backend.obj parser.obj moves.obj lists.obj \
+        gamelist.obj pgntags.obj wedittags.obj wgamelist.obj zippy.obj \
+         wsockerr.obj wclipbrd.obj woptions.obj
+
+cvars = $(cvars) -I. -I.. -DWINVER=0x0400
+#cflags = $(cflags) /FR
+cflags = $(cflags)
+
+all: $(proj).exe
+
+clean:
+       del /f *.obj *~ $(proj).exe $(proj).err $(proj).rbj $(proj).res \
+         $(proj).ini *.sbr *.bsc *.o *.plg *.opt *.ncb *.debug *.bak *.gid
+
+# Update the help file if necessary
+$(proj).hlp : $(proj).rtf
+    $(hc) $(proj).hpj
+    type $(proj).err
+
+# Update the resource if necessary
+$(proj).rbj: $(proj).rc $(proj).h $(proj).res resource.h
+    $(rc) $(rcvars) -r -fo $(proj).res $(proj).rc
+    cvtres  /machine:X86 /out:$(proj).rbj $(proj).res
+
+# Update the object files if necessary
+winboard.obj: winboard.c config.h winboard.h ../common.h ../frontend.h \
+        ../backend.h ../moves.h wgamelist.h defaults.h resource.h wclipbrd.h \
+        wedittags.h wsockerr.h ../lists.h
+    $(cc) $(cflags) $(cvars) $(cdebug) winboard.c
+
+backend.obj: ../backend.c config.h ../common.h ../frontend.h ../backend.h \
+        ../parser.h ../moves.h ../zippy.h ../backendz.h ../lists.h
+    $(cc) $(cflags) $(cvars) $(cdebug) ../backend.c
+
+parser.obj: parser.c config.h ../common.h ../backend.h ../parser.h \
+        ../frontend.h ../moves.h ../lists.h
+    $(cc) $(cflags) $(cvars) $(cdebug) parser.c
+
+parser.c: ../parser.l
+    flex -oparser.c -L ../parser.l
+
+moves.obj: ../moves.c config.h ../backend.h ../common.h ../parser.h \
+        ../moves.h ../lists.h ../frontend.h
+    $(cc) $(cflags) $(cvars) $(cdebug) ../moves.c
+
+lists.obj: ../lists.c config.h ../lists.h ../common.h
+    $(cc) $(cflags) $(cvars) $(cdebug) ../lists.c
+
+gamelist.obj: ../gamelist.c config.h ../lists.h ../common.h ../frontend.h \
+        ../backend.h ../parser.h ../lists.h
+    $(cc) $(cflags) $(cvars) $(cdebug) ../gamelist.c
+
+pgntags.obj: ../pgntags.c config.h ../common.h ../frontend.h ../backend.h \
+    ../parser.h ../lists.h
+    $(cc) $(cflags) $(cvars) $(cdebug) ../pgntags.c
+
+wclipbrd.obj: wclipbrd.c config.h ../common.h ../frontend.h ../backend.h \
+              winboard.h wclipbrd.h ../lists.h resource.h
+    $(cc) $(cflags) $(cvars) $(cdebug) wclipbrd.c
+
+wedittags.obj: wedittags.c config.h ../common.h winboard.h ../frontend.h \
+        ../backend.h ../lists.h resource.h
+    $(cc) $(cflags) $(cvars) $(cdebug) wedittags.c
+
+wgamelist.obj: wgamelist.c config.h. ../common.h winboard.h ../frontend.h \
+        ../backend.h wgamelist.h ../lists.h resource.h
+    $(cc) $(cflags) $(cvars) $(cdebug) wgamelist.c
+
+woptions.obj: woptions.c config.h ../common.h ../frontend.h ../backend.h \
+       ../lists.h defaults.h
+    $(cc) $(cflags) $(cvars) $(cdebug) woptions.c
+
+wsockerr.obj: wsockerr.c wsockerr.h
+    $(cc) $(cflags) $(cvars) $(cdebug) wsockerr.c
+
+zippy.obj: ../zippy.c config.h ../common.h ../zippy.h ../frontend.h \
+       ../backend.h ../backendz.h ../lists.h
+    $(cc) $(cflags) $(cvars) $(cdebug) ../zippy.c
+
+$(proj).exe: $(allobj) $(proj).rbj $(proj).hlp $(proj).rc
+    $(link) $(linkdebug) /NODEFAULTLIB:LIBCD $(guiflags) $(allobj) \
+       wsock32.lib comctl32.lib winmm.lib libc.lib oldnames.lib kernel32.lib \
+       advapi32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib \
+       ws2_32.lib \
+       $(proj).rbj -out:$(proj).exe
+
+# I don't use the .sbr, but it can be reenabled.  Also turn /FR back on above.
+#      bscmake *.sbr
+
+test.exe: test.c
+       $(cc) $(cflags) $(cvars) $(cdebug) test.c
+       $(link) $(linkdebug) $(conflags) test.obj $(conlibs) -out:test.exe
+
diff --git a/winboard/parser.c b/winboard/parser.c
new file mode 100644 (file)
index 0000000..ff36db3
--- /dev/null
@@ -0,0 +1,4066 @@
+/* A lexical scanner generated by flex */
+
+/* Scanner skeleton version:
+ * $Header: /home/daffy/u0/vern/flex/RCS/flex.skl,v 2.91 96/09/10 16:58:48 vern Exp $
+ */
+
+#define FLEX_SCANNER
+#define YY_FLEX_MAJOR_VERSION 2
+#define YY_FLEX_MINOR_VERSION 5
+
+#include <stdio.h>
+#include <errno.h>
+
+/* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */
+#ifdef c_plusplus
+#ifndef __cplusplus
+#define __cplusplus
+#endif
+#endif
+
+
+#ifdef __cplusplus
+
+#include <stdlib.h>
+#ifndef _WIN32
+#include <unistd.h>
+#endif
+
+/* Use prototypes in function declarations. */
+#define YY_USE_PROTOS
+
+/* The "const" storage-class-modifier is valid. */
+#define YY_USE_CONST
+
+#else  /* ! __cplusplus */
+
+#if __STDC__
+
+#define YY_USE_PROTOS
+#define YY_USE_CONST
+
+#endif /* __STDC__ */
+#endif /* ! __cplusplus */
+
+#ifdef __TURBOC__
+ #pragma warn -rch
+ #pragma warn -use
+#include <io.h>
+#include <stdlib.h>
+#define YY_USE_CONST
+#define YY_USE_PROTOS
+#endif
+
+#ifdef YY_USE_CONST
+#define yyconst const
+#else
+#define yyconst
+#endif
+
+
+#ifdef YY_USE_PROTOS
+#define YY_PROTO(proto) proto
+#else
+#define YY_PROTO(proto) ()
+#endif
+
+
+/* Returned upon end-of-file. */
+#define YY_NULL 0
+
+/* Promotes a possibly negative, possibly signed char to an unsigned
+ * integer for use as an array index.  If the signed char is negative,
+ * we want to instead treat it as an 8-bit unsigned char, hence the
+ * double cast.
+ */
+#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
+
+/* Enter a start condition.  This macro really ought to take a parameter,
+ * but we do it the disgusting crufty way forced on us by the ()-less
+ * definition of BEGIN.
+ */
+#define BEGIN yy_start = 1 + 2 *
+
+/* Translate the current start state into a value that can be later handed
+ * to BEGIN to return to the state.  The YYSTATE alias is for lex
+ * compatibility.
+ */
+#define YY_START ((yy_start - 1) / 2)
+#define YYSTATE YY_START
+
+/* Action number for EOF rule of a given start state. */
+#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
+
+/* Special action meaning "start processing a new file". */
+#define YY_NEW_FILE yyrestart( yyin )
+
+#define YY_END_OF_BUFFER_CHAR 0
+
+/* Size of default input buffer. */
+#define YY_BUF_SIZE 16384
+
+typedef struct yy_buffer_state *YY_BUFFER_STATE;
+
+extern int yyleng;
+extern FILE *yyin, *yyout;
+
+#define EOB_ACT_CONTINUE_SCAN 0
+#define EOB_ACT_END_OF_FILE 1
+#define EOB_ACT_LAST_MATCH 2
+
+/* The funky do-while in the following #define is used to turn the definition
+ * int a single C statement (which needs a semi-colon terminator).  This
+ * avoids problems with code like:
+ *
+ *     if ( condition_holds )
+ *             yyless( 5 );
+ *     else
+ *             do_something_else();
+ *
+ * Prior to using the do-while the compiler would get upset at the
+ * "else" because it interpreted the "if" statement as being all
+ * done when it reached the ';' after the yyless() call.
+ */
+
+/* Return all but the first 'n' matched characters back to the input stream. */
+
+#define yyless(n) \
+       do \
+               { \
+               /* Undo effects of setting up yytext. */ \
+               *yy_cp = yy_hold_char; \
+               YY_RESTORE_YY_MORE_OFFSET \
+               yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; \
+               YY_DO_BEFORE_ACTION; /* set up yytext again */ \
+               } \
+       while ( 0 )
+
+#define unput(c) yyunput( c, yytext_ptr )
+
+/* The following is because we cannot portably get our hands on size_t
+ * (without autoconf's help, which isn't available because we want
+ * flex-generated scanners to compile on their own).
+ */
+typedef unsigned int yy_size_t;
+
+
+struct yy_buffer_state
+       {
+       FILE *yy_input_file;
+
+       char *yy_ch_buf;                /* input buffer */
+       char *yy_buf_pos;               /* current position in input buffer */
+
+       /* Size of input buffer in bytes, not including room for EOB
+        * characters.
+        */
+       yy_size_t yy_buf_size;
+
+       /* Number of characters read into yy_ch_buf, not including EOB
+        * characters.
+        */
+       int yy_n_chars;
+
+       /* Whether we "own" the buffer - i.e., we know we created it,
+        * and can realloc() it to grow it, and should free() it to
+        * delete it.
+        */
+       int yy_is_our_buffer;
+
+       /* Whether this is an "interactive" input source; if so, and
+        * if we're using stdio for input, then we want to use getc()
+        * instead of fread(), to make sure we stop fetching input after
+        * each newline.
+        */
+       int yy_is_interactive;
+
+       /* Whether we're considered to be at the beginning of a line.
+        * If so, '^' rules will be active on the next match, otherwise
+        * not.
+        */
+       int yy_at_bol;
+
+       /* Whether to try to fill the input buffer when we reach the
+        * end of it.
+        */
+       int yy_fill_buffer;
+
+       int yy_buffer_status;
+#define YY_BUFFER_NEW 0
+#define YY_BUFFER_NORMAL 1
+       /* When an EOF's been seen but there's still some text to process
+        * then we mark the buffer as YY_EOF_PENDING, to indicate that we
+        * shouldn't try reading from the input source any more.  We might
+        * still have a bunch of tokens to match, though, because of
+        * possible backing-up.
+        *
+        * When we actually see the EOF, we change the status to "new"
+        * (via yyrestart()), so that the user can continue scanning by
+        * just pointing yyin at a new input file.
+        */
+#define YY_BUFFER_EOF_PENDING 2
+       };
+
+static YY_BUFFER_STATE yy_current_buffer = 0;
+
+/* We provide macros for accessing buffer states in case in the
+ * future we want to put the buffer states in a more general
+ * "scanner state".
+ */
+#define YY_CURRENT_BUFFER yy_current_buffer
+
+
+/* yy_hold_char holds the character lost when yytext is formed. */
+static char yy_hold_char;
+
+static int yy_n_chars;         /* number of characters read into yy_ch_buf */
+
+
+int yyleng;
+
+/* Points to current character in buffer. */
+static char *yy_c_buf_p = (char *) 0;
+static int yy_init = 1;                /* whether we need to initialize */
+static int yy_start = 0;       /* start state number */
+
+/* Flag which is used to allow yywrap()'s to do buffer switches
+ * instead of setting up a fresh yyin.  A bit of a hack ...
+ */
+static int yy_did_buffer_switch_on_eof;
+
+void yyrestart YY_PROTO(( FILE *input_file ));
+
+void yy_switch_to_buffer YY_PROTO(( YY_BUFFER_STATE new_buffer ));
+void yy_load_buffer_state YY_PROTO(( void ));
+YY_BUFFER_STATE yy_create_buffer YY_PROTO(( FILE *file, int size ));
+void yy_delete_buffer YY_PROTO(( YY_BUFFER_STATE b ));
+void yy_init_buffer YY_PROTO(( YY_BUFFER_STATE b, FILE *file ));
+void yy_flush_buffer YY_PROTO(( YY_BUFFER_STATE b ));
+#define YY_FLUSH_BUFFER yy_flush_buffer( yy_current_buffer )
+
+YY_BUFFER_STATE yy_scan_buffer YY_PROTO(( char *base, yy_size_t size ));
+YY_BUFFER_STATE yy_scan_string YY_PROTO(( yyconst char *yy_str ));
+YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( yyconst char *bytes, int len ));
+
+static void *yy_flex_alloc YY_PROTO(( yy_size_t ));
+static void *yy_flex_realloc YY_PROTO(( void *, yy_size_t ));
+static void yy_flex_free YY_PROTO(( void * ));
+
+#define yy_new_buffer yy_create_buffer
+
+#define yy_set_interactive(is_interactive) \
+       { \
+       if ( ! yy_current_buffer ) \
+               yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
+       yy_current_buffer->yy_is_interactive = is_interactive; \
+       }
+
+#define yy_set_bol(at_bol) \
+       { \
+       if ( ! yy_current_buffer ) \
+               yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
+       yy_current_buffer->yy_at_bol = at_bol; \
+       }
+
+#define YY_AT_BOL() (yy_current_buffer->yy_at_bol)
+
+
+#define YY_USES_REJECT
+typedef unsigned char YY_CHAR;
+FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
+typedef int yy_state_type;
+extern char *yytext;
+#define yytext_ptr yytext
+
+static yy_state_type yy_get_previous_state YY_PROTO(( void ));
+static yy_state_type yy_try_NUL_trans YY_PROTO(( yy_state_type current_state ));
+static int yy_get_next_buffer YY_PROTO(( void ));
+static void yy_fatal_error YY_PROTO(( yyconst char msg[] ));
+
+/* Done after the current pattern has been matched and before the
+ * corresponding action - sets up yytext.
+ */
+#define YY_DO_BEFORE_ACTION \
+       yytext_ptr = yy_bp; \
+       yyleng = (int) (yy_cp - yy_bp); \
+       yy_hold_char = *yy_cp; \
+       *yy_cp = '\0'; \
+       yy_c_buf_p = yy_cp;
+
+#define YY_NUM_RULES 42
+#define YY_END_OF_BUFFER 43
+static yyconst short int yy_acclist[650] =
+    {   0,
+       43,   41,   42,   41,   42,   41,   42,   40,   41,   42,
+       41,   42,   25,   41,   42,   41,   42,   40,   41,   42,
+       40,   41,   42,16410,   40,   41,   42,16410,   41,   42,
+       40,   41,   42,   40,   41,   42,   40,   41,   42,   40,
+       41,   42,   40,   41,   42,   40,   41,   42,   40,   41,
+       42,   40,   41,   42,   40,   41,   42,   40,   41,   42,
+       40,   41,   42,   41,   42,   40,   41,   42,   40,   41,
+       42,   40,   41,   42,   40,   41,   42,   40,   41,   42,
+       40,   41,   42,   40,   41,   42,   40,   41,   42,   40,
+       41,   42,   40,   41,   42,   40,   41,   42,   40,   41,
+
+       42,   40,   41,   42,   40,   41,   42,   40,   41,   42,
+       40,   41,   42,   40,   41,   42,   41,   42,   41,   42,
+       40,   41,   42,   40,   41,   42,   40,   41,   42,16410,
+       40,   41,   42,16410,   41,   42,   40,   41,   42,   40,
+       41,   42,   40,   41,   42,   40,   41,   42,   40,   41,
+       42,   40,   41,   42,   40,   41,   42,   40,   41,   42,
+       40,   41,   42,   40,   41,   42,   40,   41,   42,   40,
+       41,   42,   40,   41,   42,   40,   41,   42,   40,   41,
+       42,   40,   41,   42,   40,   41,   42,   40,   41,   42,
+       40,   41,   42,   40,   41,   42,   40,   41,   42,   40,
+
+       41,   42,   40,   41,   42,   40,   41,   42,   40,   41,
+       42,   40,   41,   42,   40,   41,   42,   40,   41,   42,
+       41,   42,   33,   40,   17,   40,    9,   40,   40,   40,
+    16410, 8218,   40,   35,   40,   40,   40,   40,   40,   40,
+       40,   40,   40,   40,   40,    9,   40,   40,   40,   40,
+       40,   40,   36,   40,    3,   40,   40,    4,   40,   40,
+       40,   40,   40,   40,    9,   40,   40,   40,   34,   40,
+       40,    9,   40,   40,   40,16410, 8218,   40,   40,   40,
+       40,   40,   40,   40,   40,   40,   40,   40,   40,    9,
+       40,   40,   40,   40,   40,   40,   40,    3,   40,   40,
+
+        4,   40,   40,   40,   40,   40,   40,    9,   40,   40,
+       40,   15,    9,   40,   23,   40,   23,    8,   40, 8218,
+       22,   40,   22,   24,   40,   40,   40,    6,   40,   40,
+       40,   40,   40,   40,   40,    9,   40,   40,   40,   40,
+       20,   40,    4,   40,   40,    3,    3,   40,    3,   40,
+       40,    4,    5,   40,    4,    4,   40,   40,   40,   40,
+        9,   40,   40,   34,   39,    9,   40,   23,   40,    8,
+       40,   22,   40,   35,   40,   40,   40,    6,   40,   40,
+       40,   40,   40,   40,   40,    9,   40,   40,   40,   40,
+       20,   40,    4,   40,   40,    3,   40,    3,   40,   40,
+
+        5,   40,    4,   40,   40,   40,   40,    9,   40,   40,
+       38,   38,   37,   25,   25,    6,   40,   10,    6,   40,
+        7,   40,    6,   40,    6,   40,   40,   40,   19,   40,
+       40,   21,   40,   16,   40,   40,   40,   40,   40,   20,
+       20,   40,   20,   40,   36,    3,    3,    2,   40,    5,
+        4,    5,    5,   40,   40,    4,    4,   40,   40,   25,
+       39,   40,    6,   40,    7,   40,   40,   40,   40,   40,
+       19,   40,   40,   21,   40,   16,   40,   40,   40,   40,
+       40,   20,   40,   20,   20,   40,    2,   40,    5,   40,
+       40,    4,   40,   40,    7,    7,    1,   40,   40,   40,
+
+       19,   40,   40,   40,   21,   21,   40,   21,   40,   40,
+       40,   40,   30,   36,    2,    2,    2,   40,    5,    5,
+        5,   40,   39,    1,   40,   40,   40,   19,   40,   40,
+       40,   21,   40,   21,   21,   40,   40,   40,   40,   20,
+       39,    2,   40,    5,   40,   27,   38,    1,   23,   23,
+       22,   22,   24,   24,    1,    1,   40,   20,   21,   40,
+       40,   40,   11,   40,   40,   28,   36,   30,    2,    2,
+       27,   34,   39,   39,    1,   40,   40,   40,   40,   21,
+       39,   11,   40,   40,   20,   39,   18,    1,   24,    1,
+       20,   21,   19,   40,   40,   40,   11,   40,   40,   40,
+
+       40,   21,   39,   40,   11,   40,   40,   12,   40,   40,
+       40,   40,   12,   40,   40,   14,   40,   40,   40,   14,
+       40,   40,   40,   39,   40,   40,   40,   40,   39,   39,
+       40,   40,   31,   40,   39,   39,   31,   40,   13,   31,
+       32,   32,   35,   39,   39,   31,   39,   34,   29
+    } ;
+
+static yyconst short int yy_accept[698] =
+    {   0,
+        1,    1,    1,    2,    4,    6,    8,   11,   13,   16,
+       18,   21,   25,   29,   31,   34,   37,   40,   43,   46,
+       49,   52,   55,   58,   61,   64,   66,   69,   72,   75,
+       78,   81,   84,   87,   90,   93,   96,   99,  102,  105,
+      108,  111,  114,  117,  119,  121,  124,  127,  131,  135,
+      137,  140,  143,  146,  149,  152,  155,  158,  161,  164,
+      167,  170,  173,  176,  179,  182,  185,  188,  191,  194,
+      197,  200,  203,  206,  209,  212,  215,  218,  221,  223,
+      223,  224,  225,  225,  225,  225,  225,  226,  226,  226,
+      226,  227,  227,  229,  229,  229,  229,  230,  230,  230,
+
+      232,  232,  234,  234,  235,  235,  236,  236,  237,  237,
+      238,  238,  239,  240,  241,  242,  243,  244,  245,  246,
+      248,  249,  250,  251,  252,  253,  253,  253,  253,  253,
+      254,  255,  257,  257,  258,  260,  261,  262,  263,  264,
+      265,  267,  268,  269,  269,  269,  269,  270,  270,  271,
+      271,  272,  274,  274,  275,  277,  277,  279,  279,  280,
+      281,  281,  282,  283,  284,  285,  286,  287,  288,  289,
+      290,  292,  293,  294,  295,  296,  297,  298,  300,  300,
+      301,  303,  304,  305,  306,  307,  308,  310,  311,  312,
+      312,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+
+      312,  313,  313,  313,  313,  313,  313,  315,  317,  318,
+      320,  321,  321,  321,  321,  323,  324,  325,  325,  326,
+      326,  327,  327,  328,  328,  330,  330,  330,  330,  330,
+      331,  332,  333,  334,  335,  336,  338,  339,  340,  341,
+      343,  343,  343,  343,  343,  345,  345,  346,  346,  347,
+      349,  351,  352,  353,  353,  355,  356,  358,  359,  360,
+      361,  363,  364,  365,  365,  365,  365,  365,  366,  368,
+      370,  372,  374,  374,  375,  375,  376,  377,  377,  378,
+      380,  381,  382,  383,  384,  385,  386,  388,  389,  390,
+      391,  393,  395,  396,  396,  398,  400,  401,  403,  405,
+
+      406,  407,  408,  410,  411,  411,  411,  412,  413,  413,
+      413,  414,  414,  414,  415,  415,  416,  416,  417,  417,
+      417,  417,  418,  418,  418,  418,  418,  418,  418,  418,
+      419,  421,  421,  423,  424,  425,  425,  426,  427,  427,
+      427,  427,  427,  428,  429,  431,  431,  432,  434,  436,
+      437,  438,  439,  440,  441,  443,  445,  445,  445,  445,
+      445,  446,  447,  447,  448,  450,  451,  452,  452,  452,
+      453,  455,  456,  457,  457,  459,  460,  460,  461,  461,
+      461,  461,  461,  462,  462,  463,  463,  463,  465,  467,
+      468,  468,  469,  470,  471,  473,  474,  476,  478,  479,
+
+      480,  481,  482,  484,  485,  487,  489,  491,  492,  494,
+      495,  495,  495,  495,  495,  496,  496,  496,  496,  496,
+      496,  496,  496,  496,  496,  497,  499,  499,  499,  499,
+      499,  500,  501,  501,  503,  503,  504,  505,  506,  508,
+      510,  511,  512,  513,  513,  513,  515,  515,  515,  516,
+      516,  517,  519,  520,  520,  521,  521,  523,  523,  523,
+      523,  523,  523,  523,  523,  524,  524,  524,  526,  527,
+      528,  530,  531,  532,  534,  535,  537,  538,  539,  540,
+      542,  544,  546,  546,  546,  548,  548,  549,  549,  550,
+      550,  551,  551,  552,  552,  553,  553,  554,  554,  555,
+
+      555,  555,  555,  556,  558,  558,  558,  560,  560,  561,
+      561,  561,  561,  561,  561,  562,  563,  565,  566,  568,
+      568,  569,  570,  571,  571,  571,  573,  573,  573,  574,
+      575,  575,  575,  577,  578,  579,  580,  582,  584,  585,
+      587,  587,  588,  588,  588,  589,  589,  590,  591,  591,
+      591,  591,  593,  593,  593,  594,  594,  594,  594,  594,
+      595,  596,  597,  599,  600,  600,  600,  600,  600,  600,
+      601,  602,  604,  605,  607,  608,  608,  608,  608,  608,
+      608,  608,  609,  609,  609,  609,  609,  610,  611,  611,
+      611,  611,  611,  612,  613,  613,  613,  613,  613,  614,
+
+      614,  614,  614,  615,  616,  618,  618,  618,  618,  618,
+      619,  619,  620,  622,  622,  622,  622,  622,  623,  624,
+      624,  624,  624,  624,  625,  626,  627,  627,  627,  627,
+      627,  627,  628,  629,  629,  629,  629,  629,  630,  631,
+      632,  633,  633,  633,  633,  633,  633,  635,  635,  635,
+      635,  635,  636,  637,  639,  639,  639,  640,  640,  641,
+      641,  642,  642,  642,  644,  644,  645,  646,  646,  646,
+      646,  646,  648,  648,  648,  648,  648,  648,  648,  648,
+      648,  648,  648,  648,  648,  648,  648,  648,  648,  648,
+      648,  648,  648,  648,  649,  650,  650
+
+    } ;
+
+static yyconst int yy_ec[256] =
+    {   0,
+        1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    4,    1,    5,    6,    7,    8,    1,    9,   10,
+       11,   12,   13,    1,   14,   15,   16,   17,   18,   19,
+       20,   20,   20,   20,   20,   20,   20,   21,   22,    1,
+       23,    1,    1,   24,   25,   26,   27,   28,   29,   30,
+       31,   32,   33,   33,   34,   35,   36,   37,   38,   34,
+       34,   39,   40,   33,   41,   33,   42,   43,   33,   33,
+       44,    1,   45,    1,   46,    1,   47,   48,   49,   50,
+
+       51,   52,   53,   54,   55,   56,   57,   58,   59,   60,
+       61,   62,   63,   64,   65,   66,   67,   68,   69,   70,
+       71,   68,   72,    1,   73,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1
+    } ;
+
+static yyconst int yy_meta[74] =
+    {   0,
+        1,    2,    3,    2,    1,    1,    1,    1,    4,    5,
+        6,    1,    7,    8,    1,    1,    9,    9,    9,    9,
+       10,    1,   11,    1,   12,   12,   12,   12,   12,   12,
+       12,   12,   13,   12,   13,   13,   12,   12,   12,   13,
+       13,   12,   14,    1,    1,    1,   15,   15,   15,   15,
+       16,   15,   15,   15,   15,   15,   15,   15,   17,   18,
+       18,   18,   18,   18,   17,   17,   17,   17,   17,   19,
+       17,    1,    1
+    } ;
+
+static yyconst short int yy_base[784] =
+    {   0,
+        0,   73, 2729, 4517,  122,  131,    0,  142, 2724,  140,
+      151,  171,  162, 2724,  231,  159, 2672, 2661,  119, 2660,
+     2673,  143, 2668, 2652,  211,  301,  361,  212,  209,  279,
+      243,  284,  301,  286,  221,  303,  309,  329, 2670,  239,
+     2665, 2649,  338,  403, 2710,  149,  380,  475,  348,  190,
+      538,  240, 2659, 2648,  236, 2650, 2663,  157, 2658, 2642,
+      379,  600,  314,  353,  377,  395,  401,  413,  382,  408,
+      513,  424,  516,  423,  562,  448,  544,  607,  612, 2654,
+      468,    0, 2696,  309,  617,  174, 4517, 2692,  672,  246,
+      353, 2686, 2686, 2680,  517,  661, 2680,  576,  280,  655,
+
+     2679,    0, 2692, 4517,    0,  696,    0,  741,    0,  580,
+      644,  586,  622, 2645, 2640, 2592, 2592,  692, 2617, 2616,
+      714, 2606,  680,  720, 2592, 2606,  811,  537,  884, 4517,
+      911,  961,    0,  986, 1035,  687,  753,  757, 2584, 2588,
+     2587, 2582, 2591,  318, 2568,  825, 2636, 2635,  430, 2634,
+      747,  820,  253,  830, 1085,  160,  563,  455, 1148, 1193,
+     2633,  784,  843,  850,  760,  603,  692,  844,  854, 2596,
+      657,  858,  893,  862,  893,  658, 1217, 1267, 2629, 1292,
+     1342,  913,  926, 1157,  831,  894,  915,  918,  895,  845,
+     2568,  464,  487,  538, 2620,  556, 1162, 1073, 2619, 2556,
+
+     4517, 1146, 1209, 2624, 2623, 2622, 2611, 2620, 2619,    0,
+     4517, 2618, 2616, 2615, 2614, 2613,  384, 1029, 1062, 1078,
+     1367, 1147, 1145, 1167, 1412, 2558, 2551, 2564, 2559, 1240,
+     1422, 2540,  756,  651, 2557, 2593, 2551, 2547, 1214, 1482,
+      722, 1208,  761, 1555, 1619,    0, 1624,    0, 2594, 2592,
+     2591, 1174, 1426, 1490, 1673, 2591, 2589,  560, 2550, 2549,
+     2583, 2530, 4517, 1499, 1039, 2591,  725, 2587,  928,  845,
+      592,  917,  642, 2585, 1156, 1503, 1716, 2584, 1516, 1761,
+     1531, 1564, 1470, 1565, 1464, 1429, 1580, 1490, 1566, 1598,
+     1831, 1896, 1901, 2583, 1582, 2573, 1613, 1950, 1587, 1676,
+
+     1588, 1614, 1581, 1149, 1539, 2528, 4517,  775,  799, 2562,
+     4517, 1709, 2557, 2556, 2493, 2492, 1202, 1709, 2546, 2545,
+     2544, 2544,  615, 2543,  744, 2542, 1099, 1674,  832, 4517,
+     2535, 1719, 2534, 2533, 1955, 1622, 4517, 1410, 2490, 2490,
+     2487, 2487, 2494, 2493,  778,  892,  920, 2013,    0, 2511,
+     2495, 2496, 2495,    0, 2086, 2159,  940, 1210, 1233, 1309,
+     2540, 2533, 1434, 4517, 1776, 1424, 2529,  910, 1615, 1616,
+     2528, 1173, 4517, 2476,    0, 2476, 1842, 2532, 1727, 1735,
+     2488, 2473, 2530, 1003, 1736,  904,  599, 1216, 1523, 2186,
+     2528, 1847, 1726, 1767, 1880, 1771, 2244, 1522, 1813, 1849,
+
+     1848, 1862, 2317, 2527, 2390, 2029, 1869, 1879, 1713, 2021,
+     1747, 2479, 2517, 1595, 2500, 1809, 2511, 2443, 2504, 2441,
+     2500, 2433, 2460, 1869, 4517, 2454, 2427, 2423, 2423, 2418,
+     2468, 1049, 2006, 2467, 1075, 2440, 2410,    0, 2497, 2570,
+     2400, 2394, 2448, 1341, 1756, 4517, 2446, 1803, 1343, 1491,
+     1768, 2439, 2438, 1416, 4517, 2386,    0, 2425, 1871, 2421,
+     1240, 2416, 2373, 2366, 1454, 1718, 1473, 2635, 1888, 2044,
+     1889, 2042, 2023, 2678, 2425, 1990, 1886, 2052, 2063, 2425,
+     1870, 1899, 1958, 1000, 4517, 2095, 1777, 2416, 2415, 2351,
+     2350, 2411, 2410, 2347, 2346, 2407, 2406, 2343, 2342, 2393,
+
+     2388, 1840, 2017, 2382, 2320, 2326, 2011, 2298, 2303, 2338,
+     2296, 2275, 2316, 2293, 2302, 2270, 2018, 2264, 4517, 2117,
+     4517, 2296, 4517, 2290, 2119, 2300, 2251, 2231, 2282, 1960,
+     1445,  289, 2107, 2108, 2114, 2068, 2281, 2125, 2131, 2280,
+     2139, 4517, 2227, 2176, 2262, 2267, 2258, 4517, 2187, 2173,
+     2177, 4517, 2166, 2214, 2211, 2157, 2198, 2148, 2103, 2111,
+     2085, 2098,    0, 2077, 2196, 2071, 2002,  827, 1575, 2168,
+     2135, 2063, 2170, 2136, 2164, 2203, 2000, 2014, 1683, 1939,
+     1931, 2030, 1944, 1630, 1954, 1906, 2751, 1919, 1917, 1913,
+     1385, 1565, 2824, 2249, 2204, 1850, 1863, 1832, 4517, 1806,
+
+     1637, 1912, 2897, 1920,    0, 1775, 1762, 1585,  945, 2970,
+     2096, 1949, 2188, 2207, 1772, 1743, 2250, 1745, 1677, 1563,
+     1551, 1686,  681, 2260, 1568, 1502, 2258, 1408, 1406, 2243,
+     2170, 1358, 1313, 1240, 1258, 1751, 1127, 2261, 2312, 1072,
+      926, 2279, 2133,  809, 1969, 2073,    0,  855,  705,  711,
+     1429, 2317, 2305,    0, 2284,  631, 4517,  546, 2094,  480,
+     4517,  413,  392, 4517, 1794, 2351, 2357, 2298,  325,  206,
+     1884, 2303, 2352,  203, 1915,  365, 2138, 2221, 2364, 2365,
+     2369, 2370, 2371, 2372, 2373, 2427, 2444, 2451, 2452, 2453,
+     2454, 2456, 2296,  179, 4517, 4517, 3040, 3059, 3072, 3086,
+
+     3105, 3124, 3140, 3159, 3178, 3196, 1267, 1342, 1671, 3214,
+     3233, 1702, 3252, 3271, 3290, 3309, 3328, 3347, 3366, 3385,
+     3404, 3416, 3435, 3454, 3473, 3492, 3511, 3519, 1896, 3529,
+     3545, 3564, 3580, 3599, 3618, 3637, 3656, 3675, 3694, 3713,
+     3732, 3744, 3763, 3782, 3801, 3820, 3839, 3858, 3877, 3893,
+     3908, 3924, 3943, 3962, 3981, 3997, 4016, 4035, 4054, 4073,
+     4092, 4111, 4130, 4149, 4168, 4187, 4206, 4225, 4244, 4259,
+     4278, 4297, 4316, 4331, 4345, 4364, 4383, 4402, 4421, 4440,
+     4459, 4478, 4497
+    } ;
+
+static yyconst short int yy_def[784] =
+    {   0,
+      696,  696,  696,  696,  696,  696,  697,  698,  696,  699,
+      697,  696,   12,  700,  697,   15,   15,   15,   15,   15,
+       15,   15,   15,   15,   15,  701,  697,   27,   27,   27,
+       27,   27,   27,   27,   27,   27,   27,   27,  697,  697,
+      697,  697,  697,  702,  696,  703,  703,  696,   48,  700,
+      703,   51,   51,   51,   51,   51,   51,   51,   51,   51,
+       51,  703,   62,   62,   62,   62,   62,   62,   62,   62,
+       62,   62,   62,  703,  703,  703,  703,  703,  702,  696,
+      696,  697,  704,  705,  704,  696,  696,  696,  696,  696,
+      697,  696,  697,  696,  706,  706,  697,  706,  696,   12,
+
+      696,  697,  700,  696,  707,  697,  708,  697,  709,  108,
+      696,  108,  108,  697,  697,  697,  697,  108,  106,  697,
+      108,  697,  108,  108,  697,  710,  701,  710,  711,  696,
+      697,  696,  712,  697,  697,  697,  697,  697,  697,  697,
+      697,  697,  697,  702,  713,  702,  696,  714,  703,  696,
+      703,  703,  696,  703,  696,  696,  703,  715,  703,  159,
+      709,  160,  160,  160,  703,  703,  703,  703,  160,  159,
+      703,  160,  703,  160,  160,  703,  159,  696,  712,  159,
+      696,  703,  703,  703,  703,  703,  703,  703,  703,  702,
+      696,  716,  717,  717,  718,  719,  716,  716,  720,  721,
+
+      696,  722,  722,  696,  696,  696,  697,  697,  696,  697,
+      696,  696,  696,  696,  697,  696,  696,  696,  697,  696,
+      697,  722,  697,  696,  697,  696,  696,  696,  696,  697,
+      697,  697,  697,  697,  697,  697,  697,  697,  697,  723,
+      724,  725,  726,  727,  697,  728,  697,  729,  728,  697,
+      247,  697,  730,  730,  697,  254,  697,  697,  697,  697,
+      697,  697,  696,  702,  696,  731,  696,  732,  733,  733,
+      733,  733,  734,  731,  735,  733,  733,  222,  733,  277,
+      733,  733,  733,  733,  733,  733,  733,  733,  733,  733,
+      736,  733,  277,  729,  733,  293,  733,  292,  733,  733,
+
+      733,  733,  733,  733,  702,  696,  696,  737,  737,  738,
+      696,  739,  740,  740,  741,  741,  696,  742,  696,  696,
+      696,  697,  696,  696,  696,  696,  696,  696,  696,  696,
+      697,  742,  697,  696,  697,  332,  696,  697,  696,  696,
+      696,  696,  697,  697,  697,  696,  697,  743,  697,  697,
+      697,  697,  697,  744,  745,  745,  746,  746,  747,  748,
+      749,  696,  696,  696,  750,  751,  696,  696,  751,  751,
+      697,  697,  696,  696,  697,  697,  702,  696,  696,  696,
+      696,  696,  752,  696,  733,  753,  753,  733,  733,  293,
+      336,  733,  733,  733,  733,  733,  754,  733,  733,  733,
+
+      733,  733,  755,  744,  755,  756,  733,  733,  733,  733,
+      702,  696,  757,  758,  696,  696,  759,  760,  761,  762,
+      763,  764,  696,  696,  696,  697,  696,  696,  696,  696,
+      697,  697,  696,  697,  696,  697,  697,  765,  766,  766,
+      697,  697,  697,  767,  768,  696,  769,  696,  770,  770,
+      770,  697,  696,  696,  696,  696,  697,  696,  702,  696,
+      696,  696,  696,  696,  771,  772,  772,  733,  733,  733,
+      733,  733,  733,  754,  765,  474,  733,  733,  733,  773,
+      733,  733,  702,  696,  696,  758,  774,  759,  759,  760,
+      760,  761,  761,  762,  762,  763,  763,  764,  764,  696,
+
+      696,  774,  774,  697,  696,  696,  696,  696,  697,  775,
+      696,  696,  696,  696,  697,  697,  697,  697,  696,  696,
+      696,  696,  696,  696,  702,  696,  696,  696,  771,  771,
+      772,  772,  733,  733,  733,  733,  776,  733,  733,  773,
+      702,  696,  696,  758,  696,  696,  696,  696,  696,  696,
+      696,  696,  696,  775,  775,  696,  696,  696,  696,  697,
+      697,  697,  697,  697,  702,  696,  696,  772,  772,  733,
+      733,  776,  733,  733,  733,  702,  696,  696,  696,  696,
+      696,  696,  696,  696,  696,  696,  777,  697,  696,  696,
+      772,  772,  778,  733,  702,  696,  696,  696,  696,  696,
+
+      779,  779,  777,  603,  697,  696,  696,  772,  772,  778,
+      779,  610,  733,  702,  696,  696,  779,  603,  603,  696,
+      696,  772,  772,  780,  610,  610,  702,  696,  696,  779,
+      779,  603,  603,  696,  696,  772,  772,  780,  780,  610,
+      610,  702,  696,  696,  779,  779,  603,  781,  696,  782,
+      772,  780,  780,  610,  702,  696,  696,  696,  779,  781,
+      696,  696,  782,  696,  772,  780,  780,  702,  696,  696,
+      772,  780,  702,  696,  772,  702,  783,  783,  783,  783,
+      783,  783,  783,  783,  783,  783,  783,  783,  783,  783,
+      783,  783,  783,  696,  696,    0,  696,  696,  696,  696,
+
+      696,  696,  696,  696,  696,  696,  696,  696,  696,  696,
+      696,  696,  696,  696,  696,  696,  696,  696,  696,  696,
+      696,  696,  696,  696,  696,  696,  696,  696,  696,  696,
+      696,  696,  696,  696,  696,  696,  696,  696,  696,  696,
+      696,  696,  696,  696,  696,  696,  696,  696,  696,  696,
+      696,  696,  696,  696,  696,  696,  696,  696,  696,  696,
+      696,  696,  696,  696,  696,  696,  696,  696,  696,  696,
+      696,  696,  696,  696,  696,  696,  696,  696,  696,  696,
+      696,  696,  696
+    } ;
+
+static yyconst short int yy_nxt[4591] =
+    {   0,
+        4,    4,    4,    5,    4,    4,    6,    4,    7,    8,
+        4,    9,   10,    7,    4,    4,   11,   12,   13,   13,
+        4,   14,    4,    4,   15,   16,   17,   18,   15,   15,
+       19,   15,   15,   15,   20,   21,   15,   22,   23,   24,
+       15,   25,   15,   26,    4,    4,   27,   28,   29,   30,
+       31,   32,   33,   34,   35,   36,   37,   38,   39,    7,
+       40,    7,    7,   41,   42,    7,    7,    7,   43,    7,
+        7,   44,    4,    4,    4,    4,    5,    4,   45,    6,
+       45,    7,    8,    4,    9,   10,   46,    4,    4,   47,
+       48,   49,   49,    4,   50,    4,    4,   51,   52,   53,
+
+       54,   51,   51,   55,   51,   51,   51,   56,   57,   51,
+       58,   59,   60,   51,   61,   51,   26,    4,    4,   62,
+       63,   64,   65,   66,   67,   68,   69,   70,   71,   72,
+       73,   74,   46,   75,   46,   46,   76,   77,   46,   46,
+       46,   78,   46,   46,   79,    4,   80,   81,   81,   81,
+       81,   84,   87,   88,   90,  115,  119,   82,   85,   85,
+       85,   85,  111,  268,   91,   95,   92,   93,   80,  150,
+      170,   94,   95,   95,   96,   82,  216,  696,  116,   82,
+      120,  695,  696,  199,   97,   98,   99,  100,  100,  100,
+      100,  101,  104,  158,  171,  102,  102,  102,  102,  102,
+
+      102,  102,  102,   82,  102,   82,   82,  102,  102,  102,
+       82,   82,  102,   82,  111,  111,  112,  102,  102,  102,
+      102,  102,  102,  102,  102,  102,  102,  102,  102,   82,
+      102,  102,  102,  102,  102,   82,   82,   82,   82,   82,
+       82,   82,  105,  111,  106,  200,  107,  108,  108,  108,
+      108,  109,  140,  648,  105,  136,  268,  135,  135,  204,
+      135,  205,  138,  674,  123,  124,  206,  136,  136,  137,
+      209,  125,  166,  106,  135,  135,  135,  110,  110,  110,
+      110,  110,  110,  110,  110,  110,  110,  110,  110,  136,
+      136,  104,  135,  135,  135,  167,  216,  163,  217,  141,
+
+      106,  126,  127,  127,  127,  126,  126,  126,  126,  126,
+      126,  126,  126,  126,  128,  126,  126,  111,  195,  196,
+      145,  126,  126,  126,  126,  136,  136,  135,  135,  135,
+      136,  136,  136,  136,  135,  135,  135,  115,  135,  135,
+      135,  111,  114,  569,  126,  130,  126,  136,  136,  136,
+      136,   95,  135,  135,  135,  136,  136,  135,  135,  135,
+      116,  149,  181,  696,  135,  135,  135,  677,  150,  207,
+      208,  183,  126,  126,  131,  136,  136,  132,  132,  132,
+      132,  133,  111,   90,  542,  135,  135,  328,   82,  117,
+      147,  143,  125,  151,  664,   92,  152,  329,  125,  182,
+
+      153,  181,  181,  134,  329,  145,  184,  135,  135,  136,
+      136,  136,  136,  136,  136,  136,  136,  136,  136,  146,
+      146,  146,  146,  182,  182,  181,  181,  181,  182,  182,
+      134,   82,  174,  175,  181,  181,  181,  147,   82,  176,
+      165,  182,  182,  150,  181,  181,  181,  182,  182,  166,
+      150,  181,  181,  181,  182,  182,   82,  274,  275,  182,
+      182,  181,  181,  181,  181,  181,  181,  670,  150,  185,
+      182,  182,  167,  193,  307,  147,   95,   95,   96,  181,
+      181,  181,  661,   82,   81,   81,   81,   81,  154,   98,
+       99,  155,  155,  155,  155,  156,  195,  308,  188,  157,
+
+      157,  157,  157,  157,  157,  157,  157,  149,  157,  149,
+      149,  157,  157,  157,  149,  149,  157,  149,   95,   95,
+       95,  157,  157,  157,  157,  157,  157,  157,  157,  157,
+      157,  157,  157,  149,  157,  157,  157,  157,  157,  149,
+      149,  149,  149,  149,  149,  149,   82,  195,  308,  105,
+      241,  159,   82,  107,  160,  160,  160,  160,  161,  182,
+      182,  105,  182,  182,  150,  310,  311,  181,  181,  181,
+       82,   82,  181,  181,  374,  186,  168,   95,   95,   95,
+      159,  130,  150,  150,  162,  162,  162,  162,  162,  162,
+      162,  162,  162,  162,  162,  162,  225,  225,  225,  225,
+
+       82,  104,  225,  225,  225,  225,  669,  159,   82,  173,
+      111,   82,  150,  177,  145,   82,  178,  178,  178,  178,
+      179,  375,  187,  150,  417,  190,  193,  150,  146,  146,
+      146,  146,  230,  197,  197,  197,  197,  198,  225,  225,
+      225,  225,  180,  284,  274,  275,  181,  181,  182,  182,
+      182,  182,  182,  182,  182,  182,  182,  182,   95,  467,
+      189,  176,   95,   95,   95,   82,   82,  176,   82,  180,
+      696,  226,  231,  227,  212,  696,  213,  150,  150,  228,
+      657,  214,  229,  104,  147,  109,  418,  107,  202,  202,
+      202,  202,  109,  226,  271,  227,  225,  225,  225,  225,
+
+       82,  348,  228,  255,  255,  255,  255,  229,  225,  225,
+      225,  225,  150,  664,  109,  348,  348,  291,  203,  203,
+      203,  203,  203,  203,  203,  203,  203,  203,  203,  203,
+      225,  225,  225,  225,  239,  358,  225,  225,  225,  225,
+      637,  109,  219,  219,  219,  219,  219,  219,  219,  219,
+      219,  219,  219,  219,  221,   82,  662,  235,  284,  346,
+      216,  222,  217,  269,  270,  360,  130,  150,   82,  255,
+      255,  255,  255,  255,  255,  255,  255,  381,  237,  240,
+      150,  433,  347,  221,  310,  311,  382,  223,  223,  223,
+      223,  223,  223,  223,  223,  223,  223,  223,  223,  259,
+
+      280,  280,  280,  280,  347,  361,  283,  260,  310,  311,
+      221,  126,  127,  127,  127,  126,  126,  126,  126,  126,
+      126,  126,  126,  126,  126,  126,  126,  145,   82,  104,
+      591,  126,  126,  126,  126,  423,  271,  434,   82,   82,
+      150,  146,  146,  146,  146,  264,  272,  145,  323,  424,
+      150,  150,   82,   82,  126,  130,  126,  661,  305,  280,
+      280,  280,  280,  658,  150,  150,  280,  280,  280,  280,
+      280,  280,  280,  280,  280,  280,  280,  280,  280,  280,
+      280,  280,  126,  126,  126,  242,  242,  242,  243,  281,
+      126,  126,  126,  126,  126,  126,  286,  147,  126,  126,
+
+      282,   82,   82,   82,  126,  126,  104,  126,  285,  280,
+      280,  280,  280,  150,  150,  150,  290,  147,  435,  286,
+      327,   82,  288,   82,  374,   82,   82,  126,  130,  298,
+      298,  298,  298,  150,   82,  150,   82,  150,  150,  289,
+      435,  385,  298,  298,  298,  298,  150,  104,  150,  304,
+      466,  436,  291,  358,  303,  126,  126,  245,  245,  245,
+      245,  245,  245,  245,  245,  245,  245,  245,  245,   82,
+      246,  373,  301,  437,  247,  271,  654,   82,   82,   82,
+       82,  248,  288,  249,  130,  250,  250,  250,  250,  250,
+      250,  250,  250,  250,  250,  250,  250,  250,  250,  250,
+
+      250,  250,  250,  251,  465,  623,  465,  252,  252,  252,
+      252,  252,  252,  252,  252,  252,  252,  252,  252,   82,
+       82,   82,   82,   82,   82,   82,   82,   82,   82,   82,
+      247,   82,  135,  135,  135,  135,  135,  135,  135,  135,
+      135,  135,  135,  135,  254,  330,  330,  330,  330,  542,
+      378,  255,  255,  255,  255,  379,  380,  256,  543,  257,
+      257,  257,  257,  257,  257,  257,  257,  257,  257,  257,
+      257,  257,  257,  257,  257,  257,  257,  257,  331,  331,
+      331,  331,  193,  307,  509,  258,   95,   95,   95,  312,
+      312,  312,  312,   82,  332,  332,  332,  332,  149,   98,
+
+      654,  155,  155,  155,  155,  150,  513,  509,  419,  157,
+      157,  157,  157,  157,  157,  157,  157,  149,  157,  149,
+      149,  157,  157,  157,  149,  149,  157,  149,  514,  104,
+      651,  157,  157,  157,  157,  157,  157,  157,  157,  157,
+      157,  157,  157,  149,  157,  157,  157,  157,  157,  149,
+      149,  149,  149,  149,  149,  149,   82,   82,  104,  222,
+      696,  333,  333,  333,  333,   82,  222,  696,  150,  150,
+      420,  193,  307,  298,  298,  298,  298,  150,  197,  197,
+      197,  197,  198,  334,  334,  334,  334,  456,  222,  696,
+      365,  365,  365,  365,  276,  276,  276,  276,  276,  276,
+
+      276,  276,  276,  276,  276,  276,  277,  302,  386,  242,
+      242,  242,  243,  278,  402,  222,  696,  387,  415,  415,
+      415,  415,  222,  444,   82,  318,  318,  318,  318,  222,
+      333,  333,  333,  333,  457,  277,  150,  360,  337,  279,
+      279,  279,  279,  279,  279,  279,  279,  279,  279,  279,
+      279,  222,  130,  212,  130,  213,  333,  333,  333,  333,
+      214,  649,  277,  292,  292,  292,  292,  292,  292,  292,
+      292,  292,  292,  292,  292,   82,  246,  361,  222,  353,
+      293,  218,  218,  149,  149,  149,  149,  294,  343,  249,
+      648,  295,  295,  295,  295,  295,  295,  295,  295,  295,
+
+      295,  295,  295,  295,  295,  295,  295,  295,  295,  296,
+      445,  445,  445,  297,  297,  297,  297,  297,  297,  297,
+      297,  297,  297,  297,  297,  149,  149,  149,  149,  149,
+      149,  149,  149,  149,  149,  149,  293,  149,  181,  181,
+      181,  181,  181,  181,  181,  181,  181,  181,  181,  181,
+       82,  254,  450,  446,  444,  149,  220,  220,  298,  298,
+      298,  298,  150,  647,  256,  451,  299,  299,  299,  299,
+      299,  299,  299,  299,  299,  299,  299,  299,  299,  299,
+      299,  299,  299,  299,  299,  519,  647,  104,  149,  149,
+      149,  149,  300,  149,  149,  149,  149,  149,  149,  149,
+
+      149,  149,  149,  149,  149,  149,  149,  149,  149,  149,
+      149,  149,  149,  223,  223,  223,  223,  223,  223,  223,
+      223,  223,  223,  223,  223,  335,  426,  426,  426,  426,
+      456,  104,  336,  369,  337,  254,  608,   82,  333,  333,
+      333,  333,  366,  366,  366,  366,  370,  104,  256,  150,
+      449,  449,  449,  449,  335,  530,  384,  530,  338,  338,
+      338,  338,  338,  338,  338,  338,  338,  338,  338,  338,
+      344,  644,   82,  643,  454,  104,  368,  455,   82,  398,
+      665,  335,  354,  354,  150,  354,  354,  354,  354,  354,
+      150,  354,  354,  354,  354,  568,  354,  354,   82,  696,
+
+      696,  145,  354,  354,  354,  354,  696,  696,  696,  696,
+      150,   82,  696,  696,  397,  377,  377,  377,  377,  388,
+      388,  388,  388,  150,   82,  354,  354,  354,  397,  397,
+       82,   82,  389,  389,  389,  389,  150,  532,  395,   82,
+      696,  145,  150,  150,  400,  425,  356,  389,  389,  389,
+      389,  150,  411,  354,  354,  126,  242,  242,  242,  243,
+      641,  126,  126,  126,  126,  126,  126,  104,  346,  126,
+      126,  147,   82,   82,   82,  126,  126,  104,  126,  393,
+      389,  389,  389,  389,  150,  150,  150,  104,   82,   82,
+       82,  396,  364,  399,  410,   82,   82,  373,  126,  130,
+
+      150,  150,  150,  640,  193,  485,   82,  150,  150,  486,
+      635,  147,  394,  396,  389,  389,  389,  389,  150,  609,
+      634,   82,   82,  401,  696,  369,  126,  126,  254,  406,
+      406,  406,  406,  150,  150,  696,  393,  696,  696,  622,
+      592,  256,  696,  257,  257,  257,  257,  257,  257,  257,
+      257,  257,  257,  257,  257,  257,  257,  257,  257,  257,
+      257,  257,  394,  402,  696,  696,  696,  617,  511,  258,
+      252,  252,  252,  252,  252,  252,  252,  252,  252,  252,
+      252,  252,  369,  421,   82,  224,  224,  329,  104,  617,
+      374,  696,  421,  511,  329,  370,  150,  371,  371,  371,
+
+      371,  371,  371,  371,  371,  371,  371,  371,  371,  371,
+      371,  371,  371,  371,  371,  371,  253,  253,  193,  307,
+      104,   82,  336,  372,   82,  414,  414,  414,  414,  336,
+       90,  337,  336,  150,   82,  633,  150,  409,  461,  336,
+      460,  696,   92,  636,   82,  422,  150,   94,  462,  145,
+       99,  336,  271,  104,  422,  101,  150,  445,  445,  445,
+      483,  336,  279,  279,  279,  279,  279,  279,  279,  279,
+      279,  279,  279,  279,  390,   82,  531,  450,  336,   82,
+      632,  391,  469,  337,   82,  450,  502,  150,  336,   82,
+      696,  150,   82,   82,   82,   82,  104,  629,  451,  503,
+
+      446,  650,  472,  390,  520,  520,  520,  392,  392,  392,
+      392,  392,  392,  392,  392,  392,  392,  392,  392,  147,
+      628,   82,  621,  470,  473,  487,  487,  487,  487,  620,
+      390,  354,  354,  150,  354,  354,  354,  354,  354,  355,
+      354,  354,  354,  354,  145,  354,  354,  521,  671,  696,
+      271,  404,  354,  354,  354,   82,   82,   82,  459,  459,
+      459,  459,  696,  468,  468,  468,  468,  150,  150,  150,
+       82,  616,  500,  145,  354,  354,  354,   82,   82,  455,
+      523,  599,  150,  433,  501,  525,  104,   82,   82,  150,
+      150,  111,  433,  456,   82,  405,   82,   82,  478,  150,
+
+      150,  477,  354,  354,   82,  254,  150,   82,  150,  150,
+      363,  363,  479,  615,  147,  542,  150,  104,  256,  150,
+      299,  299,  299,  299,  299,  299,  299,  299,  299,  299,
+      299,  299,  299,  299,  299,  299,  299,  299,  299,  471,
+      482,  675,  617,  526,  618,  538,  300,  297,  297,  297,
+      297,  297,  297,  297,  297,  297,  297,  297,  297,  369,
+      145,  530,  384,  530,  617,  650,  619,  607,  606,  605,
+      601,  541,  370,  625,  407,  407,  407,  407,  407,  407,
+      407,  407,  407,  407,  407,  407,  407,  407,  407,  407,
+      407,  407,  407,  601,  600,  626,  582,  659,  597,  617,
+
+      408,  338,  338,  338,  338,  338,  338,  338,  338,  338,
+      338,  338,  338,  438,  438,  510,  438,  438,  438,  438,
+      438,  617,  438,  438,  438,  438,  502,  438,  438,   82,
+      147,   82,  547,  438,  438,  438,  438,   82,  450,  696,
+      476,  150,  149,  150,  511,  149,  149,  149,  149,  150,
+       82,  451,   82,  512,  476,  476,  438,  438,  438,  596,
+       82,  551,  150,  440,  150,  384,  111,  590,  562,  511,
+      535,   82,  150,  536,  589,  552,   82,  440,  440,  534,
+      598,  271,  563,  150,  438,  438,  354,  354,  150,  354,
+      354,  354,  354,  354,  599,  354,  354,  354,  354,  624,
+
+      354,  354,  534,  617,  193,  307,  354,  354,  354,  354,
+      539,  544,  544,  544,  544,   82,   82,  548,  520,  520,
+      520,  145,   82,  659,  617,  617,  617,  150,  150,  354,
+      354,  354,  571,   82,  150,  565,  565,  565,  565,   82,
+      679,  145,  588,   82,   82,  150,  617,  563,  617,  587,
+      587,  150,  576,  570,  185,  150,  150,  354,  354,  354,
+      354,  521,  354,  354,  354,  354,  354,  586,  354,  354,
+      354,  354,   82,  354,  354,  573,   82,  575,   82,  354,
+      354,  354,  354,  656,  150,  193,  485,  585,  150,  574,
+      150,  147,  544,  544,  544,  544,   82,  657,  145,  593,
+
+      617,  584,  354,  354,  354,  145,  145,  593,  150,  145,
+      263,  147,  565,  565,  565,  565,  595,  614,  583,  574,
+      627,  555,  617,  679,  555,  582,  552,  581,  646,  594,
+      354,  354,  392,  392,  392,  392,  392,  392,  392,  392,
+      392,  392,  392,  392,  438,  438,  580,  438,  438,  438,
+      438,  438,  439,  438,  438,  438,  438,   82,  438,  438,
+      145,  579,  384,  384,  475,  438,  438,  438,  526,  150,
+      578,  642,  548,  617,  630,  147,  147,  577,  645,  147,
+      617,  145,  384,  384,  384,  567,  145,  438,  438,  438,
+      639,  639,  655,  263,  476,  617,  631,  668,  679,  613,
+
+      145,  566,  617,  265,  455,  384,  523,  384,  476,  476,
+      564,  673,  639,  639,  384,  438,  438,  354,  354,  384,
+      354,  354,  354,  354,  354,  355,  354,  354,  354,  354,
+      147,  354,  354,  639,  561,  639,  652,  404,  354,  354,
+      354,  560,  639,  559,  558,  557,  556,  639,  555,  139,
+      553,  147,  666,  384,  145,  639,  147,  639,  653,  384,
+      354,  354,  354,  667,  639,  676,  679,  679,  694,  639,
+      147,  679,  679,  679,  679,  679,  550,  680,  681,  672,
+      549,  639,  682,  683,  684,  685,  686,  639,  354,  354,
+      354,  354,  548,  354,  354,  354,  354,  354,  355,  354,
+
+      354,  354,  354,  639,  354,  354,  547,  672,  546,  639,
+      404,  354,  354,  354,  499,  499,  497,  497,  495,  495,
+      493,  493,  491,  491,  147,  489,  489,  384,  537,  679,
+      528,  527,  216,  354,  354,  354,  263,  263,  209,  373,
+      687,  263,  263,  263,  263,  263,  679,  524,  455,  523,
+      448,  111,  518,  679,  679,  679,  679,  688,  679,  517,
+      516,  354,  354,  502,  689,  690,  691,  692,  515,  693,
+      433,  111,  508,  507,  506,  505,  503,  424,  504,  504,
+      504,  504,  504,  504,  504,  504,  504,  504,  504,  504,
+      504,  504,  504,  504,  504,  504,  504,  438,  438,  263,
+
+      438,  438,  438,  438,  438,  499,  438,  438,  438,  438,
+      497,  438,  438,  495,  493,  491,  263,  438,  438,  438,
+      438,  489,  425,  263,  263,  263,  263,  196,  263,  484,
+      480,  268,  384,  464,  463,   86,  210,  458,  455,  373,
+      438,  438,  438,  364,  448,  443,  442,  441,  210,  432,
+      431,  430,  429,  428,  427,  337,  425,  337,  216,  216,
+      210,  209,  209,  209,  316,  316,  314,  314,  438,  438,
+      438,  438,  196,  438,  438,  438,  438,  438,  412,  438,
+      438,  438,  438,  364,  438,  438,  268,  268,  267,  384,
+      438,  438,  438,  438,  267,  353,  376,  344,  343,  373,
+
+      254,  364,  364,  246,  352,  351,  350,  349,  345,  342,
+      341,  340,  339,  438,  438,  438,  327,  327,  326,  325,
+      440,  324,  323,  323,  322,  321,  320,  319,  316,  314,
+      307,  306,  268,  287,  440,  440,  268,  268,  267,  265,
+      263,  438,  438,   82,  502,  262,  237,  210,  261,  235,
+      130,  240,  238,  210,  236,  150,  234,  503,  233,  533,
+      533,  533,  533,  533,  533,  533,  533,  533,  533,  533,
+      533,  533,  533,  533,  533,  533,  533,  533,  438,  438,
+      233,  438,  438,  438,  438,  438,  439,  438,  438,  438,
+      438,  232,  438,  438,  104,  216,  215,  209,  475,  438,
+
+      438,  438,  210,  209,  201,  193,  191,  173,  172,  169,
+      168,  165,  164,  148,  122,  142,  139,  122,  121,  118,
+      117,  438,  438,  438,  114,  113,  104,   86,  696,  696,
+      696,  696,  696,  696,  696,  696,  696,  696,  696,  696,
+      696,  696,  696,  696,  696,  696,  696,  696,  696,  438,
+      438,  602,  602,  696,  602,  602,  602,  602,  602,  696,
+      602,  602,  602,  602,  696,  602,  602,  696,  696,  696,
+      696,  602,  602,  602,  602,  696,  696,  696,  696,  696,
+      696,  604,  696,  696,  696,  696,  696,  696,  696,  696,
+      696,  696,  696,  696,  602,  602,  602,  696,  696,  696,
+
+      696,  696,  696,  604,  696,  696,  696,  696,  696,  696,
+      696,  696,  696,  696,  696,  696,  696,  696,  696,  696,
+      696,  696,  602,  602,  602,  602,  696,  602,  602,  602,
+      602,  602,  603,  602,  602,  602,  602,  696,  602,  602,
+      696,  696,  696,  696,  611,  602,  602,  602,  696,  696,
+      696,  696,  696,  696,  612,  696,  696,  696,  696,  696,
+      696,  696,  696,  696,  696,  696,  696,  602,  602,  602,
+      696,  696,  696,  696,  696,  696,  612,  696,  696,  696,
+      696,  696,  696,  696,  696,  696,  696,  696,  696,  696,
+      696,  696,  696,  696,  696,  602,  602,  602,  602,  696,
+
+      602,  602,  602,  602,  602,  696,  602,  602,  602,  602,
+      696,  602,  602,  696,  696,  696,  696,  602,  602,  602,
+      602,  696,  696,  696,  696,  696,  696,  604,  696,  696,
+      696,  696,  696,  696,  696,  696,  696,  696,  696,  696,
+      602,  602,  602,  696,  696,  696,  696,  696,  696,  604,
+      696,  696,  696,  696,  696,  696,  696,  696,  696,  696,
+      696,  696,  696,  696,  696,  696,  696,  696,  602,  602,
+      602,  602,  696,  602,  602,  602,  602,  602,  603,  602,
+      602,  602,  602,  696,  602,  602,  696,  696,  696,  696,
+      611,  602,  602,  602,  696,  696,  696,  696,  696,  696,
+
+      612,  696,  696,  696,  696,  696,  696,  696,  696,  696,
+      696,  696,  696,  602,  602,  602,  696,  696,  696,  696,
+      696,  696,  612,  696,  696,  696,  696,  696,  696,  696,
+      696,  696,  696,  696,  696,  696,  696,  696,  696,  696,
+      696,  602,  602,   82,  696,  696,  696,   82,   82,  696,
+      696,   82,   82,   82,   82,   82,   82,   82,   82,   83,
+       83,   83,   83,   83,  696,   83,   83,   83,   83,   83,
+       83,   83,   83,   83,   83,   83,   83,   83,   89,   89,
+      696,  696,  696,   89,   89,   89,  103,  103,  103,  103,
+      103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
+
+      103,  103,  103,  103,  103,  129,  129,  129,  129,  129,
+      129,  129,  129,  129,  129,  129,  129,  129,  129,  129,
+      129,  129,  129,  129,  144,  144,  144,  144,  144,  144,
+      144,  144,  144,  144,  144,  144,  144,  144,  144,  144,
+      144,  144,  144,  149,  696,  696,  696,  149,  149,  149,
+      696,  149,  149,  149,  149,  149,  149,  149,  149,  192,
+      192,  192,  192,  192,  696,  192,  192,  192,  192,  192,
+      192,  192,  192,  192,  192,  192,  192,  192,  194,  194,
+      194,  194,  194,  194,  194,  194,  194,  194,  194,  194,
+      194,  194,  194,  194,  194,  194,  194,  211,  211,  696,
+
+      696,  696,  696,  696,  696,  696,  696,  211,  696,  696,
+      211,  211,  696,  211,  126,  126,  126,  126,  126,  126,
+      126,  126,  126,  126,  126,  126,  126,  126,  126,  126,
+      126,  126,  126,  244,  244,  244,  244,  244,  244,  244,
+      244,  244,  244,  244,  244,  244,  244,  244,  244,  244,
+      244,  244,  145,  145,  145,  145,  145,  145,  145,  145,
+      145,  145,  145,  145,  145,  145,  145,  145,  145,  145,
+      145,  266,  266,  266,  266,  266,  266,  266,  266,  266,
+      266,  266,  266,  266,  266,  266,  266,  266,  266,  266,
+      273,  273,  273,  273,  273,  273,  273,  273,  273,  273,
+
+      273,  273,  273,  273,  273,  273,  273,  273,  273,  192,
+      192,  192,  192,  192,  192,  192,  192,  192,  192,  192,
+      192,  192,  192,  192,  192,  192,  192,  192,  194,  194,
+      194,  194,  194,  194,  194,  194,  194,  194,  194,  194,
+      194,  194,  194,  194,  194,  194,  194,  195,  195,  195,
+      195,  195,  195,  195,  195,  195,  195,  195,  195,  195,
+      195,  195,  195,  195,  195,  195,  309,  309,  309,  309,
+      309,  309,  309,  309,  309,  309,  309,  309,  309,  309,
+      309,  309,  309,  309,  309,  313,  313,  696,  313,  313,
+      313,  313,  313,  313,  313,  313,  313,  313,  313,  313,
+
+      313,  313,  313,  313,  315,  315,  696,  315,  315,  315,
+      315,  315,  315,  315,  315,  315,  315,  315,  315,  315,
+      315,  315,  315,  317,  696,  317,  696,  696,  696,  317,
+      317,  317,  696,  696,  317,  355,  355,  696,  355,  355,
+      355,  355,  355,  355,  355,  355,  355,  355,  355,  355,
+      355,  355,  355,  355,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  126,  126,  126,  126,  126,  126,  126,
+      126,  126,  126,  126,  126,  126,  126,  126,  126,  126,
+      126,  126,  359,  359,  359,  359,  359,  359,  359,  359,
+
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  244,  244,  244,  244,  244,  244,  244,  244,  244,
+      244,  244,  244,  244,  244,  244,  244,  244,  244,  244,
+      362,  362,  362,  367,  696,  696,  696,  367,  696,  367,
+      367,  367,  367,  696,  367,  266,  266,  266,  266,  266,
+      266,  266,  266,  266,  266,  266,  266,  266,  266,  266,
+      266,  266,  266,  266,  383,  383,  383,  383,  383,  383,
+      383,  383,  383,  383,  383,  383,  383,  383,  383,  383,
+      383,  383,  383,  149,  696,  696,  696,  149,  149,  149,
+      696,  149,  149,  149,  149,  149,  149,  149,  149,  273,
+
+      273,  273,  273,  273,  273,  273,  273,  273,  273,  273,
+      273,  273,  273,  273,  273,  273,  273,  273,  103,  103,
+      103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
+      103,  103,  103,  103,  103,  103,  103,  403,  403,  696,
+      403,  403,  403,  403,  403,  403,  403,  403,  403,  403,
+      403,  403,  403,  403,  403,  403,  309,  309,  309,  309,
+      309,  309,  309,  309,  309,  309,  309,  309,  309,  309,
+      309,  309,  309,  309,  309,  413,  413,  413,  413,  696,
+      413,  413,  413,  413,  413,  413,  413,  413,  413,  413,
+      413,  413,  413,  413,  192,  192,  192,  192,  192,  192,
+
+      192,  192,  192,  192,  192,  192,  192,  192,  192,  192,
+      192,  192,  192,  313,  313,  696,  313,  313,  313,  313,
+      313,  313,  313,  313,  313,  313,  313,  313,  313,  313,
+      313,  313,  315,  315,  696,  315,  315,  315,  315,  315,
+      315,  315,  315,  315,  315,  315,  315,  315,  315,  315,
+      315,  416,  696,  416,  416,  696,  696,  416,  416,  416,
+      696,  696,  416,  439,  439,  696,  439,  439,  439,  439,
+      439,  439,  439,  439,  439,  439,  439,  439,  439,  439,
+      439,  439,  354,  354,  696,  354,  354,  354,  354,  354,
+      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
+
+      354,  355,  355,  696,  355,  355,  355,  355,  355,  355,
+      355,  355,  355,  355,  355,  355,  355,  355,  355,  355,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  126,  126,
+      126,  126,  126,  126,  126,  126,  126,  126,  126,  126,
+      126,  126,  126,  126,  126,  126,  126,  447,  447,  447,
+      447,  447,  447,  447,  447,  447,  447,  447,  447,  447,
+      447,  447,  447,  447,  447,  447,  452,  452,  696,  696,
+
+      452,  452,  696,  452,  452,  452,  452,  452,  452,  452,
+      452,  452,  453,  696,  696,  696,  696,  696,  453,  453,
+      453,  453,  696,  453,  383,  383,  383,  383,  383,  383,
+      383,  383,  383,  383,  383,  383,  383,  383,  383,  383,
+      383,  383,  383,  103,  103,  103,  103,  103,  103,  103,
+      103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
+      103,  103,  474,  474,  696,  474,  474,  474,  474,  474,
+      474,  474,  474,  474,  474,  474,  474,  474,  474,  474,
+      474,  403,  403,  696,  403,  403,  403,  403,  403,  403,
+      403,  403,  403,  403,  403,  403,  403,  403,  403,  403,
+
+      481,  481,  696,  696,  481,  481,  481,  481,  481,  481,
+      481,  481,  481,  481,  481,  481,  413,  413,  413,  413,
+      696,  413,  413,  413,  413,  413,  413,  413,  413,  413,
+      413,  413,  413,  413,  413,  192,  192,  192,  192,  192,
+      192,  192,  192,  192,  192,  192,  192,  192,  192,  192,
+      192,  192,  192,  192,  488,  488,  696,  488,  488,  488,
+      488,  488,  488,  488,  488,  488,  488,  488,  488,  488,
+      488,  488,  488,  490,  490,  696,  490,  490,  490,  490,
+      490,  490,  490,  490,  490,  490,  490,  490,  490,  490,
+      490,  490,  492,  492,  696,  492,  492,  492,  492,  492,
+
+      492,  492,  492,  492,  492,  492,  492,  492,  492,  492,
+      492,  494,  494,  696,  494,  494,  494,  494,  494,  494,
+      494,  494,  494,  494,  494,  494,  494,  494,  494,  494,
+      496,  496,  696,  496,  496,  496,  496,  496,  496,  496,
+      496,  496,  496,  496,  496,  496,  496,  496,  496,  498,
+      498,  696,  498,  498,  498,  498,  498,  498,  498,  498,
+      498,  498,  498,  498,  498,  498,  498,  498,  438,  438,
+      696,  438,  438,  438,  438,  438,  438,  438,  438,  438,
+      438,  438,  438,  438,  438,  438,  438,  439,  439,  696,
+      439,  439,  439,  439,  439,  439,  439,  439,  439,  439,
+
+      439,  439,  439,  439,  439,  439,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  126,  126,  126,  126,  126,
+      126,  126,  126,  126,  126,  126,  126,  126,  126,  126,
+      126,  126,  126,  126,  447,  447,  447,  447,  447,  447,
+      447,  447,  447,  447,  447,  447,  447,  447,  447,  447,
+      447,  447,  447,  522,  696,  696,  696,  696,  696,  522,
+      522,  522,  522,  522,  522,  522,  522,  522,  529,  529,
+      529,  529,  529,  529,  529,  529,  529,  529,  529,  529,
+      529,  529,  529,  529,  529,  529,  529,  103,  103,  103,
+
+      103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
+      103,  103,  103,  103,  103,  103,  540,  540,  540,  540,
+      540,  540,  540,  540,  540,  540,  540,  540,  540,  540,
+      540,  540,  540,  540,  540,  545,  696,  696,  696,  696,
+      696,  545,  545,  545,  545,  554,  554,  696,  554,  554,
+      554,  554,  554,  554,  554,  554,  554,  554,  554,  554,
+      554,  554,  554,  554,  572,  572,  572,  572,  572,  572,
+      572,  572,  572,  572,  572,  572,  572,  572,  572,  572,
+      572,  572,  572,  603,  603,  696,  603,  603,  603,  603,
+      603,  603,  603,  603,  603,  603,  603,  603,  603,  603,
+
+      603,  603,  610,  610,  696,  610,  610,  610,  610,  610,
+      610,  610,  610,  610,  610,  610,  610,  610,  610,  610,
+      610,  602,  602,  696,  602,  602,  602,  602,  602,  602,
+      602,  602,  602,  602,  602,  602,  602,  602,  602,  602,
+      638,  638,  638,  638,  638,  638,  638,  638,  638,  638,
+      638,  638,  638,  638,  638,  638,  638,  638,  638,  660,
+      660,  660,  660,  660,  660,  660,  660,  660,  660,  660,
+      660,  660,  660,  660,  660,  660,  660,  660,  663,  663,
+      663,  663,  663,  663,  663,  663,  663,  663,  663,  663,
+      663,  663,  663,  663,  663,  663,  663,  678,  678,  678,
+
+      678,  678,  678,  678,  678,  678,  678,  678,  678,  678,
+      678,  678,  678,  678,  678,  678,    3,  696,  696,  696,
+      696,  696,  696,  696,  696,  696,  696,  696,  696,  696,
+      696,  696,  696,  696,  696,  696,  696,  696,  696,  696,
+      696,  696,  696,  696,  696,  696,  696,  696,  696,  696,
+      696,  696,  696,  696,  696,  696,  696,  696,  696,  696,
+      696,  696,  696,  696,  696,  696,  696,  696,  696,  696,
+      696,  696,  696,  696,  696,  696,  696,  696,  696,  696,
+      696,  696,  696,  696,  696,  696,  696,  696,  696,  696
+    } ;
+
+static yyconst short int yy_chk[4591] =
+    {   0,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    2,    2,    2,    2,    2,    2,    2,
+        2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
+        2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
+
+        2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
+        2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
+        2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
+        2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
+        2,    2,    2,    2,    2,    2,    5,    6,    6,    6,
+        6,    8,   10,   10,   11,   19,   22,   46,    8,    8,
+        8,    8,   16,  156,   11,   13,   11,   11,    5,   46,
+       58,   11,   12,   12,   12,   13,  156,   13,   19,   12,
+       22,  694,   13,   86,   12,   12,   12,   12,   12,   12,
+       12,   12,   50,   50,   58,   12,   12,   12,   12,   12,
+
+       12,   12,   12,   12,   12,   12,   12,   12,   12,   12,
+       12,   12,   12,   12,   25,   28,   16,   12,   12,   12,
+       12,   12,   12,   12,   12,   12,   12,   12,   12,   12,
+       12,   12,   12,   12,   12,   12,   12,   12,   12,   12,
+       12,   12,   15,   52,   15,   86,   15,   15,   15,   15,
+       15,   15,   40,  674,   15,   29,  153,   29,   29,   90,
+       28,   90,   29,  670,   25,   25,   90,   35,   35,   28,
+      153,   25,   55,   15,   35,   35,   35,   15,   15,   15,
+       15,   15,   15,   15,   15,   15,   15,   15,   15,   31,
+       31,  532,   31,   31,   31,   55,   99,   52,   99,   40,
+
+       15,   26,   26,   26,   26,   26,   26,   26,   26,   26,
+       26,   26,   26,   26,   26,   26,   26,   63,   84,   84,
+      144,   26,   26,   26,   26,   30,   30,   30,   30,   30,
+       32,   32,   34,   34,   32,   32,   32,   33,   34,   34,
+       34,   43,   30,  532,   26,   26,   26,   33,   33,   36,
+       36,   49,   33,   33,   33,   37,   37,   36,   36,   36,
+       33,   49,   63,   49,   37,   37,   37,  676,   49,   91,
+       91,   63,   26,   26,   27,   38,   38,   27,   27,   27,
+       27,   27,   61,   47,  669,   38,   38,  217,   47,   38,
+      144,   43,   43,   47,  663,   47,   47,  217,   43,   64,
+
+       47,   64,   64,   27,  217,   44,   64,   27,   27,   27,
+       27,   27,   27,   27,   27,   27,   27,   27,   27,   44,
+       44,   44,   44,   65,   65,   65,   65,   65,   69,   69,
+       27,   74,   61,   61,   69,   69,   69,  676,  149,   61,
+       65,   66,   66,   74,   66,   66,   66,   67,   67,   68,
+      149,   67,   67,   67,   70,   70,   76,  158,  158,   68,
+       68,   70,   70,   70,   68,   68,   68,  662,   76,   74,
+       72,   72,   68,  192,  192,   44,   48,   48,   48,   72,
+       72,   72,  660,   48,   81,   81,   81,   81,   48,   48,
+       48,   48,   48,   48,   48,   48,  193,  193,   76,   48,
+
+       48,   48,   48,   48,   48,   48,   48,   48,   48,   48,
+       48,   48,   48,   48,   48,   48,   48,   48,   95,   95,
+       95,   48,   48,   48,   48,   48,   48,   48,   48,   48,
+       48,   48,   48,   48,   48,   48,   48,   48,   48,   48,
+       48,   48,   48,   48,   48,   48,   51,  194,  194,   51,
+      128,   51,   77,   51,   51,   51,   51,   51,   51,   71,
+       71,   51,   73,   73,   77,  196,  196,   71,   71,   71,
+       75,  157,   73,   73,  258,   75,   73,   98,   98,   98,
+       51,  128,   75,  157,   51,   51,   51,   51,   51,   51,
+       51,   51,   51,   51,   51,   51,  110,  110,  110,  110,
+
+      271,  387,  112,  112,  112,  112,  658,   51,   62,   77,
+       78,  166,  271,   62,   79,   78,   62,   62,   62,   62,
+       62,  258,   75,  166,  323,   79,   85,   78,   79,   79,
+       79,   79,  112,   85,   85,   85,   85,   85,  113,  113,
+      113,  113,   62,  166,  273,  273,   62,   62,   62,   62,
+       62,   62,   62,   62,   62,   62,   62,   62,  100,  387,
+       78,   78,   96,   96,   96,  171,  176,   78,  100,   62,
+      100,  111,  113,  111,   96,  100,   96,  171,  176,  111,
+      656,   96,  111,  623,   79,   89,  323,   89,   89,   89,
+       89,   89,   89,  111,  171,  111,  123,  123,  123,  123,
+
+      167,  234,  111,  136,  136,  136,  136,  111,  118,  118,
+      118,  118,  167,  650,   89,  234,  234,  176,   89,   89,
+       89,   89,   89,   89,   89,   89,   89,   89,   89,   89,
+      121,  121,  121,  121,  123,  241,  124,  124,  124,  124,
+      623,   89,  106,  106,  106,  106,  106,  106,  106,  106,
+      106,  106,  106,  106,  108,  151,  649,  118,  167,  233,
+      325,  108,  325,  151,  151,  243,  241,  151,  165,  137,
+      137,  137,  137,  138,  138,  138,  138,  267,  121,  124,
+      165,  345,  233,  108,  308,  308,  267,  108,  108,  108,
+      108,  108,  108,  108,  108,  108,  108,  108,  108,  137,
+
+      162,  162,  162,  162,  233,  243,  165,  138,  309,  309,
+      108,  127,  127,  127,  127,  127,  127,  127,  127,  127,
+      127,  127,  127,  127,  127,  127,  127,  146,  152,  568,
+      568,  127,  127,  127,  127,  329,  152,  345,  154,  185,
+      152,  146,  146,  146,  146,  146,  154,  190,  270,  329,
+      154,  185,  168,  270,  127,  127,  127,  648,  190,  163,
+      163,  163,  163,  644,  168,  270,  164,  164,  164,  164,
+      169,  169,  169,  169,  172,  172,  172,  172,  174,  174,
+      174,  174,  127,  127,  129,  129,  129,  129,  129,  163,
+      129,  129,  129,  129,  129,  129,  185,  146,  129,  129,
+
+      164,  173,  186,  189,  129,  129,  386,  129,  168,  175,
+      175,  175,  175,  173,  186,  189,  174,  190,  346,  169,
+      272,  182,  172,  187,  368,  272,  188,  129,  129,  182,
+      182,  182,  182,  182,  183,  187,  269,  272,  188,  173,
+      346,  269,  183,  183,  183,  183,  183,  609,  269,  189,
+      386,  347,  175,  357,  186,  129,  129,  131,  131,  131,
+      131,  131,  131,  131,  131,  131,  131,  131,  131,  132,
+      132,  368,  183,  347,  132,  187,  641,  132,  132,  132,
+      132,  132,  188,  132,  357,  132,  132,  132,  132,  132,
+      132,  132,  132,  132,  132,  132,  132,  132,  132,  132,
+
+      132,  132,  132,  132,  384,  609,  384,  132,  132,  132,
+      132,  132,  132,  132,  132,  132,  132,  132,  132,  132,
+      132,  132,  132,  132,  132,  132,  132,  132,  132,  132,
+      132,  132,  134,  134,  134,  134,  134,  134,  134,  134,
+      134,  134,  134,  134,  135,  218,  218,  218,  218,  484,
+      265,  135,  135,  135,  135,  265,  265,  135,  484,  135,
+      135,  135,  135,  135,  135,  135,  135,  135,  135,  135,
+      135,  135,  135,  135,  135,  135,  135,  135,  219,  219,
+      219,  219,  198,  198,  432,  135,  155,  155,  155,  198,
+      198,  198,  198,  155,  220,  220,  220,  220,  155,  155,
+
+      640,  155,  155,  155,  155,  155,  435,  432,  327,  155,
+      155,  155,  155,  155,  155,  155,  155,  155,  155,  155,
+      155,  155,  155,  155,  155,  155,  155,  155,  435,  637,
+      637,  155,  155,  155,  155,  155,  155,  155,  155,  155,
+      155,  155,  155,  155,  155,  155,  155,  155,  155,  155,
+      155,  155,  155,  155,  155,  155,  159,  304,  275,  202,
+      222,  223,  223,  223,  223,  184,  202,  222,  159,  304,
+      327,  197,  197,  184,  184,  184,  184,  184,  197,  197,
+      197,  197,  197,  224,  224,  224,  224,  372,  202,  222,
+      252,  252,  252,  252,  159,  159,  159,  159,  159,  159,
+
+      159,  159,  159,  159,  159,  159,  160,  184,  275,  242,
+      242,  242,  242,  160,  304,  202,  222,  275,  317,  317,
+      317,  317,  203,  358,  388,  203,  203,  203,  203,  203,
+      239,  239,  239,  239,  372,  160,  388,  359,  388,  160,
+      160,  160,  160,  160,  160,  160,  160,  160,  160,  160,
+      160,  203,  242,  461,  358,  461,  230,  230,  230,  230,
+      461,  635,  160,  177,  177,  177,  177,  177,  177,  177,
+      177,  177,  177,  177,  177,  178,  178,  359,  203,  239,
+      178,  707,  707,  178,  178,  178,  178,  178,  230,  178,
+      634,  178,  178,  178,  178,  178,  178,  178,  178,  178,
+
+      178,  178,  178,  178,  178,  178,  178,  178,  178,  178,
+      360,  360,  360,  178,  178,  178,  178,  178,  178,  178,
+      178,  178,  178,  178,  178,  178,  178,  178,  178,  178,
+      178,  178,  178,  178,  178,  178,  178,  178,  180,  180,
+      180,  180,  180,  180,  180,  180,  180,  180,  180,  180,
+      181,  181,  449,  360,  444,  181,  708,  708,  181,  181,
+      181,  181,  181,  633,  181,  449,  181,  181,  181,  181,
+      181,  181,  181,  181,  181,  181,  181,  181,  181,  181,
+      181,  181,  181,  181,  181,  444,  632,  591,  181,  181,
+      181,  181,  181,  181,  181,  181,  181,  181,  181,  181,
+
+      181,  181,  181,  181,  181,  181,  181,  181,  181,  181,
+      181,  181,  181,  221,  221,  221,  221,  221,  221,  221,
+      221,  221,  221,  221,  221,  225,  338,  338,  338,  338,
+      454,  651,  225,  366,  225,  253,  591,  286,  231,  231,
+      231,  231,  253,  253,  253,  253,  366,  531,  253,  286,
+      363,  363,  363,  363,  225,  465,  465,  465,  225,  225,
+      225,  225,  225,  225,  225,  225,  225,  225,  225,  225,
+      231,  629,  285,  628,  366,  467,  253,  454,  283,  286,
+      651,  225,  240,  240,  285,  240,  240,  240,  240,  240,
+      283,  240,  240,  240,  240,  531,  240,  240,  288,  254,
+
+      450,  264,  240,  240,  240,  240,  254,  254,  254,  254,
+      288,  276,  254,  450,  285,  264,  264,  264,  264,  276,
+      276,  276,  276,  276,  279,  240,  240,  240,  285,  285,
+      398,  389,  279,  279,  279,  279,  279,  467,  283,  281,
+      254,  305,  398,  389,  288,  389,  240,  281,  281,  281,
+      281,  281,  305,  240,  240,  244,  244,  244,  244,  244,
+      626,  244,  244,  244,  244,  244,  244,  592,  284,  244,
+      244,  264,  282,  284,  289,  244,  244,  569,  244,  281,
+      282,  282,  282,  282,  282,  284,  289,  608,  287,  303,
+      295,  284,  295,  287,  303,  299,  301,  299,  244,  244,
+
+      287,  303,  295,  625,  414,  414,  290,  299,  301,  414,
+      621,  305,  282,  284,  290,  290,  290,  290,  290,  592,
+      620,  297,  302,  289,  369,  370,  244,  244,  245,  297,
+      297,  297,  297,  297,  302,  336,  301,  369,  370,  608,
+      569,  245,  336,  245,  245,  245,  245,  245,  245,  245,
+      245,  245,  245,  245,  245,  245,  245,  245,  245,  245,
+      245,  245,  302,  290,  336,  369,  370,  601,  584,  245,
+      247,  247,  247,  247,  247,  247,  247,  247,  247,  247,
+      247,  247,  255,  328,  300,  709,  709,  328,  622,  601,
+      300,  336,  579,  584,  328,  255,  300,  255,  255,  255,
+
+      255,  255,  255,  255,  255,  255,  255,  255,  255,  255,
+      255,  255,  255,  255,  255,  255,  712,  712,  312,  312,
+      466,  409,  318,  255,  277,  312,  312,  312,  312,  318,
+      379,  318,  332,  409,  393,  619,  277,  300,  380,  332,
+      379,  332,  379,  622,  385,  328,  393,  379,  380,  411,
+      380,  318,  385,  636,  579,  380,  385,  445,  445,  445,
+      411,  332,  277,  277,  277,  277,  277,  277,  277,  277,
+      277,  277,  277,  277,  280,  394,  466,  451,  318,  396,
+      618,  280,  393,  280,  365,  365,  487,  394,  332,  365,
+      451,  396,  365,  365,  365,  365,  665,  616,  365,  487,
+
+      445,  636,  396,  280,  448,  448,  448,  280,  280,  280,
+      280,  280,  280,  280,  280,  280,  280,  280,  280,  411,
+      615,  399,  607,  394,  396,  416,  416,  416,  416,  606,
+      280,  291,  291,  399,  291,  291,  291,  291,  291,  291,
+      291,  291,  291,  291,  377,  291,  291,  448,  665,  502,
+      399,  291,  291,  291,  291,  392,  401,  400,  377,  377,
+      377,  377,  502,  392,  392,  392,  392,  392,  401,  400,
+      402,  600,  424,  459,  291,  291,  291,  407,  481,  407,
+      481,  598,  402,  395,  424,  459,  671,  408,  395,  407,
+      481,  469,  471,  408,  477,  291,  469,  471,  401,  408,
+
+      395,  400,  291,  291,  292,  292,  477,  482,  469,  471,
+      729,  729,  402,  597,  377,  596,  292,  675,  292,  482,
+      292,  292,  292,  292,  292,  292,  292,  292,  292,  292,
+      292,  292,  292,  292,  292,  292,  292,  292,  292,  395,
+      408,  671,  602,  459,  604,  477,  292,  293,  293,  293,
+      293,  293,  293,  293,  293,  293,  293,  293,  293,  298,
+      483,  530,  530,  530,  602,  675,  604,  590,  589,  588,
+      586,  483,  298,  612,  298,  298,  298,  298,  298,  298,
+      298,  298,  298,  298,  298,  298,  298,  298,  298,  298,
+      298,  298,  298,  585,  583,  612,  581,  645,  580,  645,
+
+      298,  335,  335,  335,  335,  335,  335,  335,  335,  335,
+      335,  335,  335,  348,  348,  433,  348,  348,  348,  348,
+      348,  645,  348,  348,  348,  348,  503,  348,  348,  410,
+      483,  473,  578,  348,  348,  348,  348,  406,  406,  503,
+      476,  410,  406,  473,  433,  406,  406,  406,  406,  406,
+      472,  406,  470,  433,  476,  476,  348,  348,  348,  577,
+      478,  507,  472,  348,  470,  572,  479,  567,  517,  433,
+      472,  479,  478,  473,  566,  507,  536,  348,  348,  470,
+      582,  410,  517,  479,  348,  348,  355,  355,  536,  355,
+      355,  355,  355,  355,  582,  355,  355,  355,  355,  611,
+
+      355,  355,  470,  646,  486,  486,  355,  355,  355,  355,
+      478,  486,  486,  486,  486,  533,  534,  533,  520,  520,
+      520,  525,  535,  646,  659,  646,  611,  533,  534,  355,
+      355,  355,  536,  538,  535,  525,  525,  525,  525,  539,
+      677,  541,  564,  571,  574,  538,  659,  562,  611,  561,
+      560,  539,  541,  535,  534,  571,  574,  355,  355,  356,
+      356,  520,  356,  356,  356,  356,  356,  559,  356,  356,
+      356,  356,  575,  356,  356,  538,  570,  539,  573,  356,
+      356,  356,  356,  643,  575,  544,  544,  558,  570,  538,
+      573,  525,  544,  544,  544,  544,  613,  643,  565,  571,
+
+      631,  557,  356,  356,  356,  576,  595,  570,  613,  614,
+      677,  541,  565,  565,  565,  565,  576,  595,  556,  573,
+      614,  555,  631,  678,  554,  553,  551,  550,  631,  575,
+      356,  356,  390,  390,  390,  390,  390,  390,  390,  390,
+      390,  390,  390,  390,  397,  397,  549,  397,  397,  397,
+      397,  397,  397,  397,  397,  397,  397,  594,  397,  397,
+      627,  547,  624,  638,  397,  397,  397,  397,  565,  594,
+      546,  627,  545,  630,  617,  576,  595,  543,  630,  614,
+      617,  642,  540,  537,  529,  528,  655,  397,  397,  397,
+      624,  638,  642,  678,  397,  630,  617,  655,  693,  594,
+
+      668,  527,  617,  526,  524,  672,  522,  653,  397,  397,
+      518,  668,  624,  638,  639,  397,  397,  403,  403,  652,
+      403,  403,  403,  403,  403,  403,  403,  403,  403,  403,
+      627,  403,  403,  672,  516,  653,  639,  403,  403,  403,
+      403,  515,  639,  514,  513,  512,  511,  652,  510,  509,
+      508,  642,  652,  666,  673,  672,  655,  653,  639,  667,
+      403,  403,  403,  653,  639,  673,  679,  680,  693,  652,
+      668,  681,  682,  683,  684,  685,  506,  679,  680,  666,
+      505,  666,  681,  682,  683,  684,  685,  667,  403,  403,
+      405,  405,  504,  405,  405,  405,  405,  405,  405,  405,
+
+      405,  405,  405,  666,  405,  405,  501,  667,  500,  667,
+      405,  405,  405,  405,  499,  498,  497,  496,  495,  494,
+      493,  492,  491,  490,  673,  489,  488,  480,  475,  686,
+      464,  463,  462,  405,  405,  405,  679,  680,  460,  458,
+      686,  681,  682,  683,  684,  685,  687,  456,  453,  452,
+      447,  443,  442,  688,  689,  690,  691,  687,  692,  441,
+      437,  405,  405,  426,  688,  689,  690,  691,  436,  692,
+      434,  431,  430,  429,  428,  427,  426,  423,  426,  426,
+      426,  426,  426,  426,  426,  426,  426,  426,  426,  426,
+      426,  426,  426,  426,  426,  426,  426,  439,  439,  686,
+
+      439,  439,  439,  439,  439,  422,  439,  439,  439,  439,
+      421,  439,  439,  420,  419,  418,  687,  439,  439,  439,
+      439,  417,  415,  688,  689,  690,  691,  413,  692,  412,
+      404,  391,  383,  382,  381,  378,  376,  374,  371,  367,
+      439,  439,  439,  362,  361,  353,  352,  351,  350,  344,
+      343,  342,  341,  340,  339,  334,  333,  331,  326,  324,
+      322,  321,  320,  319,  316,  315,  314,  313,  439,  439,
+      440,  440,  310,  440,  440,  440,  440,  440,  306,  440,
+      440,  440,  440,  296,  440,  440,  294,  278,  274,  268,
+      440,  440,  440,  440,  266,  262,  261,  260,  259,  257,
+
+      256,  251,  250,  249,  238,  237,  236,  235,  232,  229,
+      228,  227,  226,  440,  440,  440,  216,  215,  214,  213,
+      440,  212,  209,  208,  207,  206,  205,  204,  200,  199,
+      195,  191,  179,  170,  440,  440,  161,  150,  148,  147,
+      145,  440,  440,  468,  468,  143,  142,  141,  140,  139,
+      126,  125,  122,  120,  119,  468,  117,  468,  116,  468,
+      468,  468,  468,  468,  468,  468,  468,  468,  468,  468,
+      468,  468,  468,  468,  468,  468,  468,  468,  474,  474,
+      115,  474,  474,  474,  474,  474,  474,  474,  474,  474,
+      474,  114,  474,  474,  103,  101,   97,   94,  474,  474,
+
+      474,  474,   93,   92,   88,   83,   80,   60,   59,   57,
+       56,   54,   53,   45,   42,   41,   39,   24,   23,   21,
+       20,  474,  474,  474,   18,   17,   14,    9,    3,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  474,
+      474,  587,  587,    0,  587,  587,  587,  587,  587,    0,
+      587,  587,  587,  587,    0,  587,  587,    0,    0,    0,
+        0,  587,  587,  587,  587,    0,    0,    0,    0,    0,
+        0,  587,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,  587,  587,  587,    0,    0,    0,
+
+        0,    0,    0,  587,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,  587,  587,  593,  593,    0,  593,  593,  593,
+      593,  593,  593,  593,  593,  593,  593,    0,  593,  593,
+        0,    0,    0,    0,  593,  593,  593,  593,    0,    0,
+        0,    0,    0,    0,  593,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,  593,  593,  593,
+        0,    0,    0,    0,    0,    0,  593,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,  593,  593,  603,  603,    0,
+
+      603,  603,  603,  603,  603,    0,  603,  603,  603,  603,
+        0,  603,  603,    0,    0,    0,    0,  603,  603,  603,
+      603,    0,    0,    0,    0,    0,    0,  603,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+      603,  603,  603,    0,    0,    0,    0,    0,    0,  603,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,  603,  603,
+      610,  610,    0,  610,  610,  610,  610,  610,  610,  610,
+      610,  610,  610,    0,  610,  610,    0,    0,    0,    0,
+      610,  610,  610,  610,    0,    0,    0,    0,    0,    0,
+
+      610,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,  610,  610,  610,    0,    0,    0,    0,
+        0,    0,  610,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,  610,  610,  697,    0,    0,    0,  697,  697,    0,
+        0,  697,  697,  697,  697,  697,  697,  697,  697,  698,
+      698,  698,  698,  698,    0,  698,  698,  698,  698,  698,
+      698,  698,  698,  698,  698,  698,  698,  698,  699,  699,
+        0,    0,    0,  699,  699,  699,  700,  700,  700,  700,
+      700,  700,  700,  700,  700,  700,  700,  700,  700,  700,
+
+      700,  700,  700,  700,  700,  701,  701,  701,  701,  701,
+      701,  701,  701,  701,  701,  701,  701,  701,  701,  701,
+      701,  701,  701,  701,  702,  702,  702,  702,  702,  702,
+      702,  702,  702,  702,  702,  702,  702,  702,  702,  702,
+      702,  702,  702,  703,    0,    0,    0,  703,  703,  703,
+        0,  703,  703,  703,  703,  703,  703,  703,  703,  704,
+      704,  704,  704,  704,    0,  704,  704,  704,  704,  704,
+      704,  704,  704,  704,  704,  704,  704,  704,  705,  705,
+      705,  705,  705,  705,  705,  705,  705,  705,  705,  705,
+      705,  705,  705,  705,  705,  705,  705,  706,  706,    0,
+
+        0,    0,    0,    0,    0,    0,    0,  706,    0,    0,
+      706,  706,    0,  706,  710,  710,  710,  710,  710,  710,
+      710,  710,  710,  710,  710,  710,  710,  710,  710,  710,
+      710,  710,  710,  711,  711,  711,  711,  711,  711,  711,
+      711,  711,  711,  711,  711,  711,  711,  711,  711,  711,
+      711,  711,  713,  713,  713,  713,  713,  713,  713,  713,
+      713,  713,  713,  713,  713,  713,  713,  713,  713,  713,
+      713,  714,  714,  714,  714,  714,  714,  714,  714,  714,
+      714,  714,  714,  714,  714,  714,  714,  714,  714,  714,
+      715,  715,  715,  715,  715,  715,  715,  715,  715,  715,
+
+      715,  715,  715,  715,  715,  715,  715,  715,  715,  716,
+      716,  716,  716,  716,  716,  716,  716,  716,  716,  716,
+      716,  716,  716,  716,  716,  716,  716,  716,  717,  717,
+      717,  717,  717,  717,  717,  717,  717,  717,  717,  717,
+      717,  717,  717,  717,  717,  717,  717,  718,  718,  718,
+      718,  718,  718,  718,  718,  718,  718,  718,  718,  718,
+      718,  718,  718,  718,  718,  718,  719,  719,  719,  719,
+      719,  719,  719,  719,  719,  719,  719,  719,  719,  719,
+      719,  719,  719,  719,  719,  720,  720,    0,  720,  720,
+      720,  720,  720,  720,  720,  720,  720,  720,  720,  720,
+
+      720,  720,  720,  720,  721,  721,    0,  721,  721,  721,
+      721,  721,  721,  721,  721,  721,  721,  721,  721,  721,
+      721,  721,  721,  722,    0,  722,    0,    0,    0,  722,
+      722,  722,    0,    0,  722,  723,  723,    0,  723,  723,
+      723,  723,  723,  723,  723,  723,  723,  723,  723,  723,
+      723,  723,  723,  723,  724,  724,  724,  724,  724,  724,
+      724,  724,  724,  724,  724,  724,  724,  724,  724,  724,
+      724,  724,  724,  725,  725,  725,  725,  725,  725,  725,
+      725,  725,  725,  725,  725,  725,  725,  725,  725,  725,
+      725,  725,  726,  726,  726,  726,  726,  726,  726,  726,
+
+      726,  726,  726,  726,  726,  726,  726,  726,  726,  726,
+      726,  727,  727,  727,  727,  727,  727,  727,  727,  727,
+      727,  727,  727,  727,  727,  727,  727,  727,  727,  727,
+      728,  728,  728,  730,    0,    0,    0,  730,    0,  730,
+      730,  730,  730,    0,  730,  731,  731,  731,  731,  731,
+      731,  731,  731,  731,  731,  731,  731,  731,  731,  731,
+      731,  731,  731,  731,  732,  732,  732,  732,  732,  732,
+      732,  732,  732,  732,  732,  732,  732,  732,  732,  732,
+      732,  732,  732,  733,    0,    0,    0,  733,  733,  733,
+        0,  733,  733,  733,  733,  733,  733,  733,  733,  734,
+
+      734,  734,  734,  734,  734,  734,  734,  734,  734,  734,
+      734,  734,  734,  734,  734,  734,  734,  734,  735,  735,
+      735,  735,  735,  735,  735,  735,  735,  735,  735,  735,
+      735,  735,  735,  735,  735,  735,  735,  736,  736,    0,
+      736,  736,  736,  736,  736,  736,  736,  736,  736,  736,
+      736,  736,  736,  736,  736,  736,  737,  737,  737,  737,
+      737,  737,  737,  737,  737,  737,  737,  737,  737,  737,
+      737,  737,  737,  737,  737,  738,  738,  738,  738,    0,
+      738,  738,  738,  738,  738,  738,  738,  738,  738,  738,
+      738,  738,  738,  738,  739,  739,  739,  739,  739,  739,
+
+      739,  739,  739,  739,  739,  739,  739,  739,  739,  739,
+      739,  739,  739,  740,  740,    0,  740,  740,  740,  740,
+      740,  740,  740,  740,  740,  740,  740,  740,  740,  740,
+      740,  740,  741,  741,    0,  741,  741,  741,  741,  741,
+      741,  741,  741,  741,  741,  741,  741,  741,  741,  741,
+      741,  742,    0,  742,  742,    0,    0,  742,  742,  742,
+        0,    0,  742,  743,  743,    0,  743,  743,  743,  743,
+      743,  743,  743,  743,  743,  743,  743,  743,  743,  743,
+      743,  743,  744,  744,    0,  744,  744,  744,  744,  744,
+      744,  744,  744,  744,  744,  744,  744,  744,  744,  744,
+
+      744,  745,  745,    0,  745,  745,  745,  745,  745,  745,
+      745,  745,  745,  745,  745,  745,  745,  745,  745,  745,
+      746,  746,  746,  746,  746,  746,  746,  746,  746,  746,
+      746,  746,  746,  746,  746,  746,  746,  746,  746,  747,
+      747,  747,  747,  747,  747,  747,  747,  747,  747,  747,
+      747,  747,  747,  747,  747,  747,  747,  747,  748,  748,
+      748,  748,  748,  748,  748,  748,  748,  748,  748,  748,
+      748,  748,  748,  748,  748,  748,  748,  749,  749,  749,
+      749,  749,  749,  749,  749,  749,  749,  749,  749,  749,
+      749,  749,  749,  749,  749,  749,  750,  750,    0,    0,
+
+      750,  750,    0,  750,  750,  750,  750,  750,  750,  750,
+      750,  750,  751,    0,    0,    0,    0,    0,  751,  751,
+      751,  751,    0,  751,  752,  752,  752,  752,  752,  752,
+      752,  752,  752,  752,  752,  752,  752,  752,  752,  752,
+      752,  752,  752,  753,  753,  753,  753,  753,  753,  753,
+      753,  753,  753,  753,  753,  753,  753,  753,  753,  753,
+      753,  753,  754,  754,    0,  754,  754,  754,  754,  754,
+      754,  754,  754,  754,  754,  754,  754,  754,  754,  754,
+      754,  755,  755,    0,  755,  755,  755,  755,  755,  755,
+      755,  755,  755,  755,  755,  755,  755,  755,  755,  755,
+
+      756,  756,    0,    0,  756,  756,  756,  756,  756,  756,
+      756,  756,  756,  756,  756,  756,  757,  757,  757,  757,
+        0,  757,  757,  757,  757,  757,  757,  757,  757,  757,
+      757,  757,  757,  757,  757,  758,  758,  758,  758,  758,
+      758,  758,  758,  758,  758,  758,  758,  758,  758,  758,
+      758,  758,  758,  758,  759,  759,    0,  759,  759,  759,
+      759,  759,  759,  759,  759,  759,  759,  759,  759,  759,
+      759,  759,  759,  760,  760,    0,  760,  760,  760,  760,
+      760,  760,  760,  760,  760,  760,  760,  760,  760,  760,
+      760,  760,  761,  761,    0,  761,  761,  761,  761,  761,
+
+      761,  761,  761,  761,  761,  761,  761,  761,  761,  761,
+      761,  762,  762,    0,  762,  762,  762,  762,  762,  762,
+      762,  762,  762,  762,  762,  762,  762,  762,  762,  762,
+      763,  763,    0,  763,  763,  763,  763,  763,  763,  763,
+      763,  763,  763,  763,  763,  763,  763,  763,  763,  764,
+      764,    0,  764,  764,  764,  764,  764,  764,  764,  764,
+      764,  764,  764,  764,  764,  764,  764,  764,  765,  765,
+        0,  765,  765,  765,  765,  765,  765,  765,  765,  765,
+      765,  765,  765,  765,  765,  765,  765,  766,  766,    0,
+      766,  766,  766,  766,  766,  766,  766,  766,  766,  766,
+
+      766,  766,  766,  766,  766,  766,  767,  767,  767,  767,
+      767,  767,  767,  767,  767,  767,  767,  767,  767,  767,
+      767,  767,  767,  767,  767,  768,  768,  768,  768,  768,
+      768,  768,  768,  768,  768,  768,  768,  768,  768,  768,
+      768,  768,  768,  768,  769,  769,  769,  769,  769,  769,
+      769,  769,  769,  769,  769,  769,  769,  769,  769,  769,
+      769,  769,  769,  770,    0,    0,    0,    0,    0,  770,
+      770,  770,  770,  770,  770,  770,  770,  770,  771,  771,
+      771,  771,  771,  771,  771,  771,  771,  771,  771,  771,
+      771,  771,  771,  771,  771,  771,  771,  772,  772,  772,
+
+      772,  772,  772,  772,  772,  772,  772,  772,  772,  772,
+      772,  772,  772,  772,  772,  772,  773,  773,  773,  773,
+      773,  773,  773,  773,  773,  773,  773,  773,  773,  773,
+      773,  773,  773,  773,  773,  774,    0,    0,    0,    0,
+        0,  774,  774,  774,  774,  775,  775,    0,  775,  775,
+      775,  775,  775,  775,  775,  775,  775,  775,  775,  775,
+      775,  775,  775,  775,  776,  776,  776,  776,  776,  776,
+      776,  776,  776,  776,  776,  776,  776,  776,  776,  776,
+      776,  776,  776,  777,  777,    0,  777,  777,  777,  777,
+      777,  777,  777,  777,  777,  777,  777,  777,  777,  777,
+
+      777,  777,  778,  778,    0,  778,  778,  778,  778,  778,
+      778,  778,  778,  778,  778,  778,  778,  778,  778,  778,
+      778,  779,  779,    0,  779,  779,  779,  779,  779,  779,
+      779,  779,  779,  779,  779,  779,  779,  779,  779,  779,
+      780,  780,  780,  780,  780,  780,  780,  780,  780,  780,
+      780,  780,  780,  780,  780,  780,  780,  780,  780,  781,
+      781,  781,  781,  781,  781,  781,  781,  781,  781,  781,
+      781,  781,  781,  781,  781,  781,  781,  781,  782,  782,
+      782,  782,  782,  782,  782,  782,  782,  782,  782,  782,
+      782,  782,  782,  782,  782,  782,  782,  783,  783,  783,
+
+      783,  783,  783,  783,  783,  783,  783,  783,  783,  783,
+      783,  783,  783,  783,  783,  783,  696,  696,  696,  696,
+      696,  696,  696,  696,  696,  696,  696,  696,  696,  696,
+      696,  696,  696,  696,  696,  696,  696,  696,  696,  696,
+      696,  696,  696,  696,  696,  696,  696,  696,  696,  696,
+      696,  696,  696,  696,  696,  696,  696,  696,  696,  696,
+      696,  696,  696,  696,  696,  696,  696,  696,  696,  696,
+      696,  696,  696,  696,  696,  696,  696,  696,  696,  696,
+      696,  696,  696,  696,  696,  696,  696,  696,  696,  696
+    } ;
+
+static yy_state_type yy_state_buf[YY_BUF_SIZE + 2], *yy_state_ptr;
+static char *yy_full_match;
+static int yy_lp;
+static int yy_looking_for_trail_begin = 0;
+static int yy_full_lp;
+static int *yy_full_state;
+#define YY_TRAILING_MASK 0x2000
+#define YY_TRAILING_HEAD_MASK 0x4000
+#define REJECT \
+{ \
+*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ \
+yy_cp = yy_full_match; /* restore poss. backed-over text */ \
+yy_lp = yy_full_lp; /* restore orig. accepting pos. */ \
+yy_state_ptr = yy_full_state; /* restore orig. state */ \
+yy_current_state = *yy_state_ptr; /* restore curr. state */ \
+++yy_lp; \
+goto find_rule; \
+}
+#define yymore() yymore_used_but_not_detected
+#define YY_MORE_ADJ 0
+#define YY_RESTORE_YY_MORE_OFFSET
+char *yytext;
+#define INITIAL 0
+/*
+ * parser.l -- lex parser of algebraic chess moves for XBoard
+ * $Id: parser.l,v 2.1 2003/10/27 19:21:00 mann Exp $
+ *
+ * Copyright 1991 by Digital Equipment Corporation, Maynard, Massachusetts.
+ * Enhancements Copyright 1992-95 Free Software Foundation, Inc.
+ *
+ * The following terms apply to Digital Equipment Corporation's copyright
+ * interest in XBoard:
+ * ------------------------------------------------------------------------
+ * All Rights Reserved
+ *
+ * Permission to use, copy, modify, and distribute this software and its
+ * documentation for any purpose and without fee is hereby granted,
+ * provided that the above copyright notice appear in all copies and that
+ * both that copyright notice and this permission notice appear in
+ * supporting documentation, and that the name of Digital not be
+ * used in advertising or publicity pertaining to distribution of the
+ * software without specific, written prior permission.
+ *
+ * DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+ * DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
+ * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+ * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+ * SOFTWARE.
+ * ------------------------------------------------------------------------
+ *
+ * The following terms apply to the enhanced version of XBoard distributed
+ * by the Free Software Foundation:
+ * ------------------------------------------------------------------------
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * ------------------------------------------------------------------------
+ */
+
+/* This parser handles all forms of promotion.
+ * The parser resolves ambiguous moves by searching and check-testing.
+ * It also parses comments of the form [anything] or (anything).
+ *
+ * [HGM] Parser extensively modified for bigger boards, Shogi-like syntax,
+ * and unknow pieces. All pieces are now mandatory upper case, but can be
+ * any letter A-Z. Files must be lower case (as before), but can run upto 'l'.
+ * Ranks can be 0-9. The parser returns 0 for off-board files and ranks.
+ * For an unknown piece (as mover or promotion piece) it returns
+ * IllegalMove, like it does when the piece doesn't match.
+ * Promotions can now also be appended Shogi-style, a bare '=' or '+',
+ * and this is then returned as promotion character. The piece indicator
+ * can be prefixed by a '+' to indicate it is a promoted piece.
+ */
+
+#include "config.h"
+
+#define NO_CONSTRAINT  -1
+#undef YYLMAX
+#define YYLMAX                 4096
+#define UNPUT_BUF_SIZE         YYLMAX
+
+#ifdef FLEX_SCANNER
+/* yytext is probably a char*, but could be a char[].  yy_text is set
+   in YY_DECL below, because if yytext is a char*, its value is not
+   constant. */
+char *yy_text;
+#else /*!FLEX_SCANNER*/
+/* yytext is definitely a char[], so yy_text can be set here, statically. */
+char *yy_text = (char *) yytext;
+#endif
+
+#ifdef FLEX_SCANNER
+/* This is flex */
+/* [AP] use prototypes in function declarations */
+#define YY_USE_PROTOS
+
+#ifdef YY_USE_PROTOS
+#define YY_PROTO(proto) proto
+#else
+#define YY_PROTO(proto) ()
+#endif
+/* end of [AP] fix */
+
+#undef YY_INPUT
+#define YY_INPUT(buf, result, max_size) my_yy_input(buf, &result, max_size)
+#undef YY_DECL
+#define YY_DECL                     \
+    int _yylex YY_PROTO((void));    \
+    int yylex YY_PROTO((void))      \
+    {                               \
+       int result = _yylex();      \
+       yy_text = (char *) yytext;  \
+       return(result);             \
+    }                               \
+    int _yylex YY_PROTO((void))
+#else
+/* This is lex */
+#undef input
+#undef output
+#undef unput
+#endif
+
+/* The includes must be here, below the #undef input */
+
+#include <ctype.h>
+
+#if STDC_HEADERS
+# include <stdlib.h>
+# include <string.h>
+#else /* not STDC_HEADERS */
+# if HAVE_STRING_H
+#  include <string.h>
+# else /* not HAVE_STRING_H */
+#  include <strings.h>
+# endif /* not HAVE_STRING_H */
+#endif /* not STDC_HEADERS */
+
+#if HAVE_UNISTD_H
+# include <unistd.h>
+#endif
+
+#if defined(_amigados)
+# include <errno.h>
+# if HAVE_FCNTL_H
+#  include <fcntl.h>    /*  isatty() prototype  */
+# endif /*  HAVE_FCNTL_H        */
+#endif  /*  defined(_amigados)  */
+
+#include "common.h"
+#include "backend.h"
+#include "frontend.h"
+#include "parser.h"
+#include "moves.h"
+
+extern int PosFlags P((int));
+
+extern Board   boards[MAX_MOVES];
+int            yyboardindex;
+int             yyskipmoves = FALSE;
+char           currentMoveString[YYLMAX];
+#ifndef FLEX_SCANNER
+char           unputBuffer[UNPUT_BUF_SIZE];
+int            unputCount = 0;
+#endif
+
+#ifdef FLEX_SCANNER
+void my_yy_input P((char *buf, int *result, int max_size));
+#else /*!FLEX_SCANNER*/
+static int input P((void));
+static void output P((int ch));
+static void unput P((int ch));
+int yylook P((void));
+int yyback P((int *, int));
+#endif
+#undef yywrap
+int yywrap P((void));
+extern void CopyBoard P((Board to, Board from));
+
+
+/* Macros after this point can all be overridden by user definitions in
+ * section 1.
+ */
+
+#ifndef YY_SKIP_YYWRAP
+#ifdef __cplusplus
+extern "C" int yywrap YY_PROTO(( void ));
+#else
+extern int yywrap YY_PROTO(( void ));
+#endif
+#endif
+
+#ifndef YY_NO_UNPUT
+static void yyunput YY_PROTO(( int c, char *buf_ptr ));
+#endif
+
+#ifndef yytext_ptr
+static void yy_flex_strncpy YY_PROTO(( char *, yyconst char *, int ));
+#endif
+
+#ifdef YY_NEED_STRLEN
+static int yy_flex_strlen YY_PROTO(( yyconst char * ));
+#endif
+
+#ifndef YY_NO_INPUT
+#ifdef __cplusplus
+static int yyinput YY_PROTO(( void ));
+#else
+static int input YY_PROTO(( void ));
+#endif
+#endif
+
+#if YY_STACK_USED
+static int yy_start_stack_ptr = 0;
+static int yy_start_stack_depth = 0;
+static int *yy_start_stack = 0;
+#ifndef YY_NO_PUSH_STATE
+static void yy_push_state YY_PROTO(( int new_state ));
+#endif
+#ifndef YY_NO_POP_STATE
+static void yy_pop_state YY_PROTO(( void ));
+#endif
+#ifndef YY_NO_TOP_STATE
+static int yy_top_state YY_PROTO(( void ));
+#endif
+
+#else
+#define YY_NO_PUSH_STATE 1
+#define YY_NO_POP_STATE 1
+#define YY_NO_TOP_STATE 1
+#endif
+
+#ifdef YY_MALLOC_DECL
+YY_MALLOC_DECL
+#else
+#if __STDC__
+#ifndef __cplusplus
+#include <stdlib.h>
+#endif
+#else
+/* Just try to get by without declaring the routines.  This will fail
+ * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int)
+ * or sizeof(void*) != sizeof(int).
+ */
+#endif
+#endif
+
+/* Amount of stuff to slurp up with each read. */
+#ifndef YY_READ_BUF_SIZE
+#define YY_READ_BUF_SIZE 8192
+#endif
+
+/* Copy whatever the last rule matched to the standard output. */
+
+#ifndef ECHO
+/* This used to be an fputs(), but since the string might contain NUL's,
+ * we now use fwrite().
+ */
+#define ECHO (void) fwrite( yytext, yyleng, 1, yyout )
+#endif
+
+/* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
+ * is returned in "result".
+ */
+#ifndef YY_INPUT
+#define YY_INPUT(buf,result,max_size) \
+       if ( yy_current_buffer->yy_is_interactive ) \
+               { \
+               int c = '*', n; \
+               for ( n = 0; n < max_size && \
+                            (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
+                       buf[n] = (char) c; \
+               if ( c == '\n' ) \
+                       buf[n++] = (char) c; \
+               if ( c == EOF && ferror( yyin ) ) \
+                       YY_FATAL_ERROR( "input in flex scanner failed" ); \
+               result = n; \
+               } \
+       else \
+               { \
+               errno=0; \
+               while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \
+                       { \
+                       if( errno != EINTR) \
+                               { \
+                               YY_FATAL_ERROR( "input in flex scanner failed" ); \
+                               break; \
+                               } \
+                       errno=0; \
+                       clearerr(yyin); \
+                       } \
+               }
+#endif
+
+/* No semi-colon after return; correct usage is to write "yyterminate();" -
+ * we don't want an extra ';' after the "return" because that will cause
+ * some compilers to complain about unreachable statements.
+ */
+#ifndef yyterminate
+#define yyterminate() return YY_NULL
+#endif
+
+/* Number of entries by which start-condition stack grows. */
+#ifndef YY_START_STACK_INCR
+#define YY_START_STACK_INCR 25
+#endif
+
+/* Report a fatal error. */
+#ifndef YY_FATAL_ERROR
+#define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
+#endif
+
+/* Default declaration of generated scanner - a define so the user can
+ * easily add parameters.
+ */
+#ifndef YY_DECL
+#define YY_DECL int yylex YY_PROTO(( void ))
+#endif
+
+/* Code executed at the beginning of each rule, after yytext and yyleng
+ * have been set up.
+ */
+#ifndef YY_USER_ACTION
+#define YY_USER_ACTION
+#endif
+
+/* Code executed at the end of each rule. */
+#ifndef YY_BREAK
+#define YY_BREAK break;
+#endif
+
+#define YY_RULE_SETUP \
+       if ( yyleng > 0 ) \
+               yy_current_buffer->yy_at_bol = \
+                               (yytext[yyleng - 1] == '\n'); \
+       YY_USER_ACTION
+
+YY_DECL
+       {
+       register yy_state_type yy_current_state;
+       register char *yy_cp, *yy_bp;
+       register int yy_act;
+
+
+
+
+       if ( yy_init )
+               {
+               yy_init = 0;
+
+#ifdef YY_USER_INIT
+               YY_USER_INIT;
+#endif
+
+               if ( ! yy_start )
+                       yy_start = 1;   /* first start state */
+
+               if ( ! yyin )
+                       yyin = stdin;
+
+               if ( ! yyout )
+                       yyout = stdout;
+
+               if ( ! yy_current_buffer )
+                       yy_current_buffer =
+                               yy_create_buffer( yyin, YY_BUF_SIZE );
+
+               yy_load_buffer_state();
+               }
+
+       while ( 1 )             /* loops until end-of-file is reached */
+               {
+               yy_cp = yy_c_buf_p;
+
+               /* Support of yytext. */
+               *yy_cp = yy_hold_char;
+
+               /* yy_bp points to the position in yy_ch_buf of the start of
+                * the current run.
+                */
+               yy_bp = yy_cp;
+
+               yy_current_state = yy_start;
+               yy_current_state += YY_AT_BOL();
+               yy_state_ptr = yy_state_buf;
+               *yy_state_ptr++ = yy_current_state;
+yy_match:
+               do
+                       {
+                       register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
+                       while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
+                               {
+                               yy_current_state = (int) yy_def[yy_current_state];
+                               if ( yy_current_state >= 697 )
+                                       yy_c = yy_meta[(unsigned int) yy_c];
+                               }
+                       yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
+                       *yy_state_ptr++ = yy_current_state;
+                       ++yy_cp;
+                       }
+               while ( yy_base[yy_current_state] != 4517 );
+
+yy_find_action:
+               yy_current_state = *--yy_state_ptr;
+               yy_lp = yy_accept[yy_current_state];
+find_rule: /* we branch to this label when backing up */
+               for ( ; ; ) /* until we find what rule we matched */
+                       {
+                       if ( yy_lp && yy_lp < yy_accept[yy_current_state + 1] )
+                               {
+                               yy_act = yy_acclist[yy_lp];
+                               if ( yy_act & YY_TRAILING_HEAD_MASK ||
+                                    yy_looking_for_trail_begin )
+                                       {
+                                       if ( yy_act == yy_looking_for_trail_begin )
+                                               {
+                                               yy_looking_for_trail_begin = 0;
+                                               yy_act &= ~YY_TRAILING_HEAD_MASK;
+                                               break;
+                                               }
+                                       }
+                               else if ( yy_act & YY_TRAILING_MASK )
+                                       {
+                                       yy_looking_for_trail_begin = yy_act & ~YY_TRAILING_MASK;
+                                       yy_looking_for_trail_begin |= YY_TRAILING_HEAD_MASK;
+                                       }
+                               else
+                                       {
+                                       yy_full_match = yy_cp;
+                                       yy_full_state = yy_state_ptr;
+                                       yy_full_lp = yy_lp;
+                                       break;
+                                       }
+                               ++yy_lp;
+                               goto find_rule;
+                               }
+                       --yy_cp;
+                       yy_current_state = *--yy_state_ptr;
+                       yy_lp = yy_accept[yy_current_state];
+                       }
+
+               YY_DO_BEFORE_ACTION;
+
+
+do_action:     /* This label is used only to access EOF actions. */
+
+
+               switch ( yy_act )
+       { /* beginning of action switch */
+case 1:
+YY_RULE_SETUP
+{
+    /*
+     * Fully-qualified algebraic move, possibly with promotion
+     */
+    int skip1 = 0, skip2 = 0, skip3 = 0, promoted = 0;
+    ChessSquare piece;
+    ChessMove result;
+    char c;
+    
+    if (yyskipmoves) return (int) AmbiguousMove; /* not disambiguated */
+
+    if (yytext[0] == '+') skip1 = skip3 = promoted = 1; /* [HGM] Shogi promoted */
+
+    /* remove the / */
+    if (yytext[1+skip1] == '/')  skip1++; 
+    
+    /* remove the [xX:-] */
+    if ((yytext[3+skip1] == 'x') || (yytext[3+skip1] == 'X') ||
+        (yytext[3+skip1] == '-') || (yytext[3+skip1] == ':')) skip2 = 1;
+    
+    currentMoveString[0] = yytext[1+skip1];
+    currentMoveString[1] = yytext[2+skip1];
+    currentMoveString[2] = yytext[3+skip1+skip2];
+    currentMoveString[3] = yytext[4+skip1+skip2];
+    currentMoveString[4] = NULLCHAR;
+    
+    if (appData.debugMode) {
+        fprintf(debugFP, "Parser Qa1b2: yyleng=%d\n",
+        yyleng);
+    }
+
+    if (yyleng-skip1-skip2 > 5) { char c;
+        if (yytext[yyleng-1] == ')') {
+            c = currentMoveString[4] = ToLower(yytext[yyleng-2]);
+       } else {
+            c = currentMoveString[4] = ToLower(yytext[yyleng-1]);
+       }
+       currentMoveString[5] = NULLCHAR;
+        if(c != '=' && c != '+' && CharToPiece(c) == EmptySquare)
+            return IllegalMove; /* [HGM] promotion to invalid piece */
+    }
+
+    if (appData.debugMode) {
+        fprintf(debugFP, "parser: %s\n", currentMoveString);
+    }
+    /* [HGM] do not allow values beyond board size */
+    if(currentMoveString[1] - ONE >= BOARD_HEIGHT ||
+       currentMoveString[1] - ONE <  0            ||
+       currentMoveString[0] - AAA >= BOARD_RGHT   ||
+       currentMoveString[3] - ONE >= BOARD_HEIGHT ||
+       currentMoveString[3] - ONE <  0            ||
+       currentMoveString[2] - AAA >= BOARD_RGHT   ||
+       currentMoveString[0] - AAA <  BOARD_LEFT   ||
+       currentMoveString[2] - AAA <  BOARD_LEFT     )
+      return 0;
+
+    piece = boards[yyboardindex]
+      [currentMoveString[1] - ONE][currentMoveString[0] - AAA];
+    if(promoted) piece = (ChessSquare) (DEMOTED piece);
+    c = PieceToChar(piece);
+    if(c == '~') c = PieceToChar((ChessSquare) (DEMOTED piece));
+    if (ToLower(yytext[skip3]) != ToLower(c))
+      return (int) IllegalMove;
+
+    result = LegalityTest(boards[yyboardindex],
+                         PosFlags(yyboardindex), EP_UNKNOWN,
+                          initialRights, /* [HGM] assume all castlings allowed */
+                          currentMoveString[1] - ONE,
+                          currentMoveString[0] - AAA,
+                          currentMoveString[3] - ONE,
+                          currentMoveString[2] - AAA,
+                         currentMoveString[4]);
+
+    if (currentMoveString[4] == NULLCHAR &&
+        (result == WhitePromotionKnight || result == BlackPromotionKnight ||
+         result == WhitePromotionQueen  || result == BlackPromotionQueen)) {
+        currentMoveString[4] = PieceToChar(BlackQueen);
+       currentMoveString[5] = NULLCHAR;
+    }
+
+    return (int) result;
+}
+       YY_BREAK
+case 2:
+YY_RULE_SETUP
+{
+    /*
+     * Simple algebraic move, possibly with promotion
+     * [HGM] Engine moves are received in this format, with lower-case promoChar!
+     */
+    int skip = 0;
+    ChessMove result;
+
+    if (yyskipmoves) return (int) AmbiguousMove; /* not disambiguated */
+
+    /* remove the [xX:-] */
+    if ((yytext[2] == 'x') || (yytext[2] == 'X') ||
+       (yytext[2] == '-') || (yytext[2] == ':')) skip = 1;
+
+    currentMoveString[0] = yytext[0];
+    currentMoveString[1] = yytext[1];
+    currentMoveString[2] = yytext[2+skip];
+    currentMoveString[3] = yytext[3+skip];
+    currentMoveString[4] = NULLCHAR;
+
+    if (yyleng-skip > 4) { char c;
+       if (yytext[yyleng-1] == ')') {
+            c = currentMoveString[4] = ToLower(yytext[yyleng-2]);
+       } else {
+            c = currentMoveString[4] = ToLower(yytext[yyleng-1]);
+       }
+       currentMoveString[5] = NULLCHAR;
+        if(c != '=' && c != '+' && CharToPiece(c) == EmptySquare)
+            return IllegalMove;
+    }
+
+    /* [HGM] do not allow values beyond board size */
+    if(currentMoveString[1] - ONE >= BOARD_HEIGHT ||
+       currentMoveString[1] - ONE <  0            ||
+       currentMoveString[0] - AAA >= BOARD_RGHT   ||
+       currentMoveString[3] - ONE >= BOARD_HEIGHT ||
+       currentMoveString[3] - ONE <  0            ||
+       currentMoveString[2] - AAA >= BOARD_RGHT   ||
+       currentMoveString[0] - AAA <  BOARD_LEFT   ||
+       currentMoveString[2] - AAA <  BOARD_LEFT     )
+      return 0;
+
+    result = LegalityTest(boards[yyboardindex],
+                         PosFlags(yyboardindex), EP_UNKNOWN,
+                          initialRights, /* [HGM] assume all castlings allowed */
+                          currentMoveString[1] - ONE,
+                          currentMoveString[0] - AAA,
+                          currentMoveString[3] - ONE,
+                          currentMoveString[2] - AAA,
+                         currentMoveString[4]);
+
+    if (currentMoveString[4] == NULLCHAR &&
+        (result == WhitePromotionKnight || result == BlackPromotionKnight ||
+         result == WhitePromotionQueen  || result == BlackPromotionQueen)) {
+        if(gameInfo.variant == VariantShatranj || gameInfo.variant == VariantCourier)
+            currentMoveString[4] = PieceToChar(BlackFerz);
+        else if(gameInfo.variant == VariantGreat)
+            currentMoveString[4] = PieceToChar(BlackMan);
+        else
+            currentMoveString[4] = PieceToChar(BlackQueen);
+       currentMoveString[5] = NULLCHAR;
+    }
+
+    return (int) result;
+}
+       YY_BREAK
+case 3:
+YY_RULE_SETUP
+{
+    /*
+     * Pawn move, possibly with promotion
+     */
+    DisambiguateClosure cl;
+    int skip = 0; char c;
+
+    if (yyskipmoves) return (int) AmbiguousMove; /* not disambiguated */
+
+    /* remove the =() */
+    if (yytext[2] == '=' && yytext[3] != NULLCHAR) skip++;
+    if (yytext[2+skip] == '(') skip++;
+
+    cl.pieceIn = WhiteOnMove(yyboardindex) ? WhitePawn : BlackPawn;
+    cl.rfIn = -1;
+    cl.ffIn = yytext[0] - AAA;
+    cl.rtIn = yytext[1] - ONE;
+    cl.ftIn = yytext[0] - AAA;
+    c = cl.promoCharIn = yytext[2+skip];
+
+    /* [HGM] do not allow values beyond board size */
+    if(cl.rtIn >= BOARD_HEIGHT ||
+       cl.rtIn <  0            ||
+       cl.ffIn >= BOARD_RGHT   ||
+       cl.ftIn <  BOARD_LEFT     )
+      return 0;
+
+    if(c != '=' && c != '+' && c != NULLCHAR && CharToPiece(c) == EmptySquare)
+      return IllegalMove;
+
+
+    Disambiguate(boards[yyboardindex],
+                PosFlags(yyboardindex), EP_UNKNOWN, &cl);
+
+    currentMoveString[0] = cl.ff + AAA;
+    currentMoveString[1] = cl.rf + ONE;
+    currentMoveString[2] = cl.ft + AAA;
+    currentMoveString[3] = cl.rt + ONE;
+    currentMoveString[4] = cl.promoChar;
+    currentMoveString[5] = NULLCHAR;
+
+    return (int) cl.kind;
+}
+       YY_BREAK
+case 4:
+YY_RULE_SETUP
+{
+    /*
+     * Pawn capture, possibly with promotion, possibly ambiguous
+     */
+    DisambiguateClosure cl;
+    int skip1 = 0, skip2 = 0; char c;
+
+    if (yyskipmoves) return (int) AmbiguousMove; /* not disambiguated */
+
+    /* remove trailing ep or e.p. (nonstandard PGN) */
+    if (yytext[yyleng-1] == 'p') {
+      yyleng -= 2;
+      yytext[yyleng] = NULLCHAR;
+    } else if (yytext[yyleng-1] == '.') {
+      yyleng -= 4;
+      yytext[yyleng] = NULLCHAR;
+    }
+
+    /* remove the [xX:-] and =() */
+    if ((yytext[1] == 'x') || (yytext[1] == 'X')
+       || (yytext[1] == ':') || (yytext[1] == '-')) skip1 = 1;
+    if (yytext[2+skip1] == '=' && yytext[3+skip1] != NULLCHAR) skip2++;
+    if (yytext[2+skip1+skip2] == '(') skip2++;
+
+    cl.pieceIn = WhiteOnMove(yyboardindex) ? WhitePawn : BlackPawn;
+    cl.rfIn = -1;
+    cl.ffIn = yytext[0] - AAA;
+    cl.rtIn = -1;
+    cl.ftIn = yytext[1+skip1] - AAA;
+    c = cl.promoCharIn = yytext[2+skip1+skip2];
+
+    /* [HGM] do not allow values beyond board size */
+    if(cl.ffIn >= BOARD_RGHT  ||
+       cl.ffIn <  BOARD_LEFT  ||
+       cl.ftIn >= BOARD_RGHT  ||
+       cl.ftIn <  BOARD_LEFT     )
+      return 0;
+
+    if(c != '=' && c != '+' && c != NULLCHAR && CharToPiece(c) == EmptySquare)
+      return IllegalMove;
+
+    Disambiguate(boards[yyboardindex],
+                PosFlags(yyboardindex), EP_UNKNOWN, &cl);
+
+    currentMoveString[0] = cl.ff + AAA;
+    currentMoveString[1] = cl.rf + ONE;
+    currentMoveString[2] = cl.ft + AAA;
+    currentMoveString[3] = cl.rt + ONE;
+    currentMoveString[4] = cl.promoChar;
+    currentMoveString[5] = NULLCHAR;
+
+    return (int) cl.kind;
+}
+       YY_BREAK
+case 5:
+YY_RULE_SETUP
+{
+    /*
+     * unambiguously abbreviated Pawn capture, possibly with promotion
+     */
+    int skip = 0;
+    ChessMove result; char c;
+
+    if (yyskipmoves) return (int) AmbiguousMove; /* not disambiguated */
+
+    /* remove trailing ep or e.p. (nonstandard PGN) */
+    if (yytext[yyleng-1] == 'p') {
+      yyleng -= 2;
+      yytext[yyleng] = NULLCHAR;
+    } else if (yytext[yyleng-1] == '.') {
+      yyleng -= 4;
+      yytext[yyleng] = NULLCHAR;
+    }
+
+    /* remove the [xX:-] */
+    if ((yytext[1] == 'x') || (yytext[1] == 'X')
+       || (yytext[1] == ':') || (yytext[1] == '-')) skip = 1;
+
+    currentMoveString[0] = yytext[0];
+    currentMoveString[2] = yytext[1+skip];
+    currentMoveString[3] = yytext[2+skip];
+
+    /* [HGM] do not allow values beyond board size */
+    if(currentMoveString[0] - AAA >= BOARD_RGHT   ||
+       currentMoveString[3] - ONE >= BOARD_HEIGHT ||
+       currentMoveString[3] - ONE <  0            ||
+       currentMoveString[2] - AAA >= BOARD_RGHT   ||
+       currentMoveString[0] - AAA <  BOARD_LEFT   ||
+       currentMoveString[2] - AAA <  BOARD_LEFT     )
+      return 0;
+
+    if (gameInfo.variant == VariantXiangqi && /* [HGM] In Xiangqi rank stays same */
+         currentMoveString[0] != currentMoveString[2] ) {
+        currentMoveString[1] = yytext[2+skip];
+    } else 
+    if (WhiteOnMove(yyboardindex)) {
+        if (yytext[2+skip] == ONE) return (int) ImpossibleMove;
+       currentMoveString[1] = yytext[2+skip] - 1;
+    } else {
+        currentMoveString[1] = currentMoveString[3] + 1;
+        if (currentMoveString[3] == ONE+BOARD_HEIGHT-1) return (int) ImpossibleMove;
+    }
+    if (yyleng-skip > 3) {
+       if (yytext[yyleng-1] == ')')
+          c = currentMoveString[4] = ToLower(yytext[yyleng-2]);
+       else
+          c = currentMoveString[4] = ToLower(yytext[yyleng-1]);
+       currentMoveString[5] = NULLCHAR;
+        if(c != '=' && c != '+' && CharToPiece(c) == EmptySquare)
+            return IllegalMove;
+    } else {
+       currentMoveString[4] = NULLCHAR;
+    }
+
+    result = LegalityTest(boards[yyboardindex],
+                         PosFlags(yyboardindex), EP_UNKNOWN,
+                          initialRights, /* [HGM] assume all castlings allowed */
+                          currentMoveString[1] - ONE,
+                          currentMoveString[0] - AAA,
+                          currentMoveString[3] - ONE,
+                          currentMoveString[2] - AAA,
+                         currentMoveString[4]);
+
+    if (currentMoveString[4] == NULLCHAR &&
+        (result == WhitePromotionQueen  || result == BlackPromotionQueen ||
+         result == WhitePromotionKnight || result == BlackPromotionKnight)) {
+        currentMoveString[4] = PieceToChar(BlackQueen);
+       // [HGM] shatranj: take care of variants without Queen
+       if(gameInfo.variant == VariantShatranj || gameInfo.variant == VariantCourier)
+            currentMoveString[4] = PieceToChar(BlackFerz);
+       if(gameInfo.variant == VariantGreat)
+            currentMoveString[4] = PieceToChar(BlackMan);
+       currentMoveString[5] = NULLCHAR;
+    }
+
+    if (result != IllegalMove) return (int) result;
+
+    /* Special case: improperly written en passant capture */
+    if (WhiteOnMove(yyboardindex)) {
+       if (currentMoveString[3] == '5') {
+           currentMoveString[1] = '5';
+           currentMoveString[3] = '6';
+       } else {
+           return (int) IllegalMove;
+       }
+    } else {
+       if (currentMoveString[3] == '4') {
+           currentMoveString[1] = '4';
+           currentMoveString[3] = '3';
+       } else {
+           return (int) IllegalMove;
+       }
+    }
+
+    result = LegalityTest(boards[yyboardindex],
+                         PosFlags(yyboardindex), EP_UNKNOWN,
+                          initialRights, /* [HGM] assume all castlings allowed */
+                          currentMoveString[1] - ONE,
+                          currentMoveString[0] - AAA,
+                          currentMoveString[3] - ONE,
+                          currentMoveString[2] - AAA,
+                         currentMoveString[4]);
+
+    if (result == WhiteCapturesEnPassant || result == BlackCapturesEnPassant)
+      return (int) result;
+    else
+      return (int) IllegalMove;
+}
+       YY_BREAK
+case 6:
+YY_RULE_SETUP
+{
+    /*
+     * piece move, possibly ambiguous
+     */
+    DisambiguateClosure cl;
+    int skip = 0, skip2 = 0, promoted = 0;
+
+    if (yyskipmoves) return (int) AmbiguousMove; /* not disambiguated */
+
+    if(yytext[0] == '+') promoted = skip = skip2 = 1;
+
+    /* remove the [xX:-] */
+    if ((yytext[1+skip] == 'x') || (yytext[1+skip] == 'X')
+        || (yytext[1+skip] == ':') || (yytext[1+skip] == '-')) skip++;
+
+    if (WhiteOnMove(yyboardindex)) {
+        cl.pieceIn = CharToPiece(ToUpper(yytext[skip2]));
+    } else {
+        cl.pieceIn = CharToPiece(ToLower(yytext[skip2]));
+    }
+    if(promoted) cl.pieceIn = (ChessSquare) (PROMOTED cl.pieceIn);
+
+    cl.rfIn = -1;
+    cl.ffIn = -1;
+    cl.rtIn = yytext[2+skip] - ONE;
+    cl.ftIn = yytext[1+skip] - AAA;
+    cl.promoCharIn = NULLCHAR;
+
+    if(yyleng-skip > 3) /* [HGM] can have Shogi-style promotion */
+        cl.promoCharIn = yytext[yyleng-1];
+
+    if (appData.debugMode) {
+        fprintf(debugFP, "Parser Qa1: yyleng=%d,  %d(%d,%d)-(%d,%d) = %d (%c)\n",
+        yyleng,
+        cl.pieceIn,cl.ffIn,cl.rfIn,cl.ftIn,cl.rtIn,cl.promoCharIn,cl.promoCharIn?cl.promoCharIn:' ');
+    }
+
+    /* [HGM] but do not allow values beyond board size */
+    if(cl.rtIn >= BOARD_HEIGHT ||
+       cl.rtIn <  0            ||
+       cl.ftIn >= BOARD_RGHT   ||
+       cl.ftIn <  BOARD_LEFT     )
+      return 0;
+
+    Disambiguate(boards[yyboardindex],
+                PosFlags(yyboardindex), EP_UNKNOWN, &cl);
+
+    currentMoveString[0] = cl.ff + AAA;
+    currentMoveString[1] = cl.rf + ONE;
+    currentMoveString[2] = cl.ft + AAA;
+    currentMoveString[3] = cl.rt + ONE;
+    currentMoveString[4] = cl.promoChar;
+    currentMoveString[5] = NULLCHAR;
+
+    return (int) cl.kind;
+}
+       YY_BREAK
+case 7:
+YY_RULE_SETUP
+{
+    /*
+     * piece move with rank or file disambiguator
+     */
+    DisambiguateClosure cl;
+    int skip = 0, skip2 = 0; int promoted=0;
+
+    if (yyskipmoves) return (int) AmbiguousMove; /* not disambiguated */
+
+    if(yytext[0]=='+') promoted = skip = skip2 = 1;
+
+    /* remove the [xX:-] */
+    if ((yytext[2+skip] == 'x') || (yytext[2+skip] == 'X')
+        || (yytext[2+skip] == ':') || (yytext[2+skip] == '-')) skip++;
+
+    if (WhiteOnMove(yyboardindex)) {
+        cl.pieceIn = CharToPiece(ToUpper(yytext[skip2]));
+    } else {
+        cl.pieceIn = CharToPiece(ToLower(yytext[skip2]));
+    }
+    if(promoted) cl.pieceIn = (ChessSquare) (PROMOTED cl.pieceIn);
+
+    if (isalpha(yytext[1+skip2])) {
+       cl.rfIn = -1;
+        cl.ffIn = yytext[1+skip2] - AAA;
+       
+        if(cl.ffIn >= BOARD_RGHT ||
+           cl.ffIn <  BOARD_LEFT   ) return 0;
+    } else {
+        cl.rfIn = yytext[1+skip2] - ONE;
+       cl.ffIn = -1;
+        if(cl.rfIn >= BOARD_HEIGHT ||
+           cl.rfIn <  0) return 0;
+    }
+    cl.rtIn = yytext[3+skip] - ONE;
+    cl.ftIn = yytext[2+skip] - AAA;
+    cl.promoCharIn = NULLCHAR;
+
+    if(yyleng-skip > 4) /* [HGM] can have Shogi-style promotion */
+        cl.promoCharIn = yytext[yyleng-1];
+
+    /* [HGM] do not allow values beyond board size */
+    if(cl.rtIn >= BOARD_HEIGHT ||
+       cl.rtIn <  0            ||
+       cl.ftIn >= BOARD_RGHT   ||
+       cl.ftIn <  BOARD_LEFT     )
+      return 0;
+
+    Disambiguate(boards[yyboardindex],
+                PosFlags(yyboardindex), EP_UNKNOWN, &cl);
+
+    currentMoveString[0] = cl.ff + AAA;
+    currentMoveString[1] = cl.rf + ONE;
+    currentMoveString[2] = cl.ft + AAA;
+    currentMoveString[3] = cl.rt + ONE;
+    currentMoveString[4] = cl.promoChar;
+    currentMoveString[5] = NULLCHAR;
+
+    return (int) cl.kind;
+}
+       YY_BREAK
+case 8:
+YY_RULE_SETUP
+{
+    int rf, ff, rt, ft;
+
+    if (yyskipmoves) return (int) AmbiguousMove; /* not disambiguated */
+
+    /* [HGM] all squares referenced to board edges in stead of absolute */
+    if (WhiteOnMove(yyboardindex)) {
+        if (boards[yyboardindex][0][(BOARD_WIDTH-1)>>1] == WhiteKing) {
+           /* ICS wild castling */
+           rf = 0;
+            ff = (BOARD_WIDTH-1)>>1;
+           rt = 0;
+            ft = BOARD_RGHT-3;
+       } else {
+           rf = 0;
+            ff = BOARD_WIDTH>>1;
+           rt = 0;
+            ft = BOARD_LEFT+2;
+       }
+    } else{ 
+        if (boards[yyboardindex][BOARD_HEIGHT-1][(BOARD_WIDTH-1)>>1] == BlackKing) {
+           /* ICS wild castling */
+            rf = BOARD_HEIGHT-1;
+            ff = (BOARD_WIDTH-1)>>1;
+            rt = BOARD_HEIGHT-1;
+            ft = BOARD_RGHT-3;
+       } else {
+            rf = BOARD_HEIGHT-1;
+            ff = BOARD_WIDTH>>1;
+            rt = BOARD_HEIGHT-1;
+            ft = BOARD_LEFT+2;
+       }
+    }
+    if(gameInfo.variant == VariantFischeRandom) {
+        if (WhiteOnMove(yyboardindex)) {
+            ff = initialRights[2];
+            ft = initialRights[1];
+        } else {
+            ff = initialRights[5];
+            ft = initialRights[4];
+        }
+        fprintf(debugFP, "Parser FRC long %d %d\n", ff, ft);
+        if(ff < 0 || ft < 0) return 0;
+    }
+    sprintf(currentMoveString, "%c%c%c%c",ff+AAA,rf+ONE,ft+AAA,rt+ONE);
+    if (appData.debugMode) {
+        fprintf(debugFP, "long castling %d %d\n", ff, ft);
+    }
+    return (int) LegalityTest(boards[yyboardindex],
+                             PosFlags(yyboardindex), EP_UNKNOWN,
+                              castlingRights[yyboardindex], /* [HGM] use true castling rights */
+                             rf, ff, rt, ft, NULLCHAR);
+}
+       YY_BREAK
+case 9:
+YY_RULE_SETUP
+{
+    int rf, ff, rt, ft;
+
+    if (yyskipmoves) return (int) AmbiguousMove; /* not disambiguated */
+
+    if (WhiteOnMove(yyboardindex)) {
+        if (boards[yyboardindex][0][(BOARD_WIDTH-1)>>1] == WhiteKing) {
+           /* ICS wild castling */
+           rf = 0;
+            ff = (BOARD_WIDTH-1)>>1;
+           rt = 0;
+            ft = BOARD_LEFT+1;
+       } else {
+           rf = 0;
+            ff = BOARD_WIDTH>>1;
+           rt = 0;
+            ft = BOARD_RGHT-2;
+       }
+    } else {
+        if (boards[yyboardindex][BOARD_HEIGHT-1][(BOARD_WIDTH-1)>>1] == BlackKing) {
+           /* ICS wild castling */
+            rf = BOARD_HEIGHT-1;
+            ff = (BOARD_WIDTH-1)>>1;
+            rt = BOARD_HEIGHT-1;
+            ft = BOARD_LEFT+1;
+       } else {
+            rf = BOARD_HEIGHT-1;
+            ff = BOARD_WIDTH>>1;
+            rt = BOARD_HEIGHT-1;
+            ft = BOARD_RGHT-2;
+       }
+    }
+    if(gameInfo.variant == VariantFischeRandom) {
+        if (WhiteOnMove(yyboardindex)) {
+            ff = initialRights[2];
+            ft = initialRights[0];
+        } else {
+            ff = initialRights[5];
+            ft = initialRights[3];
+        }
+    if (appData.debugMode) {
+        fprintf(debugFP, "Parser FRC short %d %d\n", ff, ft);
+    }
+        if(ff < 0 || ft < 0) return 0;
+    }
+    sprintf(currentMoveString, "%c%c%c%c",ff+AAA,rf+ONE,ft+AAA,rt+ONE);
+    if (appData.debugMode) {
+        fprintf(debugFP, "short castling %d %d\n", ff, ft);
+    }
+
+    return (int) LegalityTest(boards[yyboardindex],
+                              PosFlags(yyboardindex), EP_UNKNOWN,
+                              castlingRights[yyboardindex], /* [HGM] use true castling rights */
+                             rf, ff, rt, ft, NULLCHAR);
+}
+       YY_BREAK
+case 10:
+YY_RULE_SETUP
+{
+    /* Bughouse piece drop.  No legality checking for now. */
+    currentMoveString[1] = '@';
+    currentMoveString[2] = yytext[2];
+    currentMoveString[3] = yytext[3];
+    currentMoveString[4] = NULLCHAR;
+
+    if (appData.debugMode) {
+        fprintf(debugFP, "Drop: %s\n", currentMoveString);
+    }
+    /* [HGM] do not allow values beyond board size */
+    if(currentMoveString[3] - ONE >= BOARD_HEIGHT ||
+       currentMoveString[2] - AAA >= BOARD_WIDTH     )
+      return 0;
+
+    if (WhiteOnMove(yyboardindex)) {
+       currentMoveString[0] = ToUpper(yytext[0]);
+       return (int) WhiteDrop;
+    } else {
+       currentMoveString[0] = ToLower(yytext[0]);
+       return (int) BlackDrop;
+    }
+}
+       YY_BREAK
+case 11:
+YY_RULE_SETUP
+{
+    if (WhiteOnMove(yyboardindex))
+      return (int) BlackWins;
+    else
+      return (int) WhiteWins;
+}
+       YY_BREAK
+case 12:
+YY_RULE_SETUP
+{
+    return (int) (ToUpper(yytext[0]) == 'W' ? BlackWins : WhiteWins);
+}
+       YY_BREAK
+case 13:
+YY_RULE_SETUP
+{
+    return (int) GameUnfinished;
+}
+       YY_BREAK
+case 14:
+YY_RULE_SETUP
+{
+    return (int) GameIsDrawn;
+}
+       YY_BREAK
+case 15:
+YY_RULE_SETUP
+{
+    return (int) GameIsDrawn;
+}
+       YY_BREAK
+case 16:
+YY_RULE_SETUP
+{
+    if (WhiteOnMove(yyboardindex))
+      return (int) BlackWins;
+    else
+      return (int) WhiteWins;
+}
+       YY_BREAK
+case 17:
+YY_RULE_SETUP
+{
+    if (WhiteOnMove(yyboardindex))
+      return (int) BlackWins;
+    else
+      return (int) WhiteWins;
+}
+       YY_BREAK
+case 18:
+YY_RULE_SETUP
+{
+    return (int) GameIsDrawn;
+}
+       YY_BREAK
+case 19:
+YY_RULE_SETUP
+{
+    return (int) GameIsDrawn;
+}
+       YY_BREAK
+case 20:
+YY_RULE_SETUP
+{
+    return (int) (ToUpper(yytext[0]) == 'W' ? WhiteWins : BlackWins);
+}
+       YY_BREAK
+case 21:
+YY_RULE_SETUP
+{
+    return (int) (ToUpper(yytext[0]) == 'W' ? BlackWins : WhiteWins);
+}
+       YY_BREAK
+case 22:
+YY_RULE_SETUP
+{ 
+    return (int) WhiteWins;
+}
+       YY_BREAK
+case 23:
+YY_RULE_SETUP
+{ 
+    return (int) BlackWins;
+}
+       YY_BREAK
+case 24:
+YY_RULE_SETUP
+{
+    return (int) GameIsDrawn;
+}
+       YY_BREAK
+case 25:
+YY_RULE_SETUP
+{
+    return (int) GameUnfinished;
+}
+       YY_BREAK
+case 26:
+YY_RULE_SETUP
+{
+    /* move numbers */
+    if ((yyleng == 1) && (yytext[0] == '1'))
+      return (int) MoveNumberOne;
+}
+       YY_BREAK
+case 27:
+YY_RULE_SETUP
+{
+    /* elapsed time indication, e.g. (0:12) or {10:21.071} */ 
+    return (int) ElapsedTime;
+}
+       YY_BREAK
+case 28:
+YY_RULE_SETUP
+{
+    /* position diagram enclosed in [-- --] */
+    return (int) PositionDiagram;
+}
+       YY_BREAK
+case 29:
+*yy_cp = yy_hold_char; /* undo effects of setting up yytext */
+yy_c_buf_p = yy_cp -= 1;
+YY_DO_BEFORE_ACTION; /* set up yytext again */
+YY_RULE_SETUP
+{
+    /* position diagram enclosed in {-- --} */
+    return (int) PositionDiagram;
+}
+       YY_BREAK
+case 30:
+YY_RULE_SETUP
+{
+    return (int) PGNTag;
+}    
+       YY_BREAK
+case 31:
+YY_RULE_SETUP
+{
+    return (int) GNUChessGame;
+}
+       YY_BREAK
+case 32:
+*yy_cp = yy_hold_char; /* undo effects of setting up yytext */
+yy_c_buf_p = yy_cp -= 1;
+YY_DO_BEFORE_ACTION; /* set up yytext again */
+YY_RULE_SETUP
+{
+    return (int) XBoardGame;
+}
+       YY_BREAK
+case 33:
+YY_RULE_SETUP
+{                              /* numeric annotation glyph */
+    return (int) NAG;
+}
+       YY_BREAK
+case 34:
+YY_RULE_SETUP
+{                              /* anything in {} */
+    return (int) Comment; 
+}
+       YY_BREAK
+case 35:
+*yy_cp = yy_hold_char; /* undo effects of setting up yytext */
+yy_c_buf_p = yy_cp -= 1;
+YY_DO_BEFORE_ACTION; /* set up yytext again */
+YY_RULE_SETUP
+{                                          /* ; to end of line */
+    return (int) Comment;
+}
+       YY_BREAK
+case 36:
+YY_RULE_SETUP
+{                              /* anything in [] */
+    return (int) Comment; 
+}
+       YY_BREAK
+case 37:
+YY_RULE_SETUP
+{              /* nested () */
+    return (int) Comment; 
+}
+       YY_BREAK
+case 38:
+YY_RULE_SETUP
+{                              /* >=2 chars in () */
+    return (int) Comment; 
+}       
+       YY_BREAK
+case 39:
+YY_RULE_SETUP
+{
+        /* Skip mail headers */
+}
+       YY_BREAK
+case 40:
+YY_RULE_SETUP
+{
+        /* Skip random words */
+}
+       YY_BREAK
+case 41:
+YY_RULE_SETUP
+{
+        /* Skip everything else */
+}
+       YY_BREAK
+case 42:
+YY_RULE_SETUP
+ECHO;
+       YY_BREAK
+                       case YY_STATE_EOF(INITIAL):
+                               yyterminate();
+
+       case YY_END_OF_BUFFER:
+               {
+               /* Amount of text matched not including the EOB char. */
+               int yy_amount_of_matched_text = (int) (yy_cp - yytext_ptr) - 1;
+
+               /* Undo the effects of YY_DO_BEFORE_ACTION. */
+               *yy_cp = yy_hold_char;
+               YY_RESTORE_YY_MORE_OFFSET
+
+               if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_NEW )
+                       {
+                       /* We're scanning a new file or input source.  It's
+                        * possible that this happened because the user
+                        * just pointed yyin at a new source and called
+                        * yylex().  If so, then we have to assure
+                        * consistency between yy_current_buffer and our
+                        * globals.  Here is the right place to do so, because
+                        * this is the first action (other than possibly a
+                        * back-up) that will match for the new input source.
+                        */
+                       yy_n_chars = yy_current_buffer->yy_n_chars;
+                       yy_current_buffer->yy_input_file = yyin;
+                       yy_current_buffer->yy_buffer_status = YY_BUFFER_NORMAL;
+                       }
+
+               /* Note that here we test for yy_c_buf_p "<=" to the position
+                * of the first EOB in the buffer, since yy_c_buf_p will
+                * already have been incremented past the NUL character
+                * (since all states make transitions on EOB to the
+                * end-of-buffer state).  Contrast this with the test
+                * in input().
+                */
+               if ( yy_c_buf_p <= &yy_current_buffer->yy_ch_buf[yy_n_chars] )
+                       { /* This was really a NUL. */
+                       yy_state_type yy_next_state;
+
+                       yy_c_buf_p = yytext_ptr + yy_amount_of_matched_text;
+
+                       yy_current_state = yy_get_previous_state();
+
+                       /* Okay, we're now positioned to make the NUL
+                        * transition.  We couldn't have
+                        * yy_get_previous_state() go ahead and do it
+                        * for us because it doesn't know how to deal
+                        * with the possibility of jamming (and we don't
+                        * want to build jamming into it because then it
+                        * will run more slowly).
+                        */
+
+                       yy_next_state = yy_try_NUL_trans( yy_current_state );
+
+                       yy_bp = yytext_ptr + YY_MORE_ADJ;
+
+                       if ( yy_next_state )
+                               {
+                               /* Consume the NUL. */
+                               yy_cp = ++yy_c_buf_p;
+                               yy_current_state = yy_next_state;
+                               goto yy_match;
+                               }
+
+                       else
+                               {
+                               yy_cp = yy_c_buf_p;
+                               goto yy_find_action;
+                               }
+                       }
+
+               else switch ( yy_get_next_buffer() )
+                       {
+                       case EOB_ACT_END_OF_FILE:
+                               {
+                               yy_did_buffer_switch_on_eof = 0;
+
+                               if ( yywrap() )
+                                       {
+                                       /* Note: because we've taken care in
+                                        * yy_get_next_buffer() to have set up
+                                        * yytext, we can now set up
+                                        * yy_c_buf_p so that if some total
+                                        * hoser (like flex itself) wants to
+                                        * call the scanner after we return the
+                                        * YY_NULL, it'll still work - another
+                                        * YY_NULL will get returned.
+                                        */
+                                       yy_c_buf_p = yytext_ptr + YY_MORE_ADJ;
+
+                                       yy_act = YY_STATE_EOF(YY_START);
+                                       goto do_action;
+                                       }
+
+                               else
+                                       {
+                                       if ( ! yy_did_buffer_switch_on_eof )
+                                               YY_NEW_FILE;
+                                       }
+                               break;
+                               }
+
+                       case EOB_ACT_CONTINUE_SCAN:
+                               yy_c_buf_p =
+                                       yytext_ptr + yy_amount_of_matched_text;
+
+                               yy_current_state = yy_get_previous_state();
+
+                               yy_cp = yy_c_buf_p;
+                               yy_bp = yytext_ptr + YY_MORE_ADJ;
+                               goto yy_match;
+
+                       case EOB_ACT_LAST_MATCH:
+                               yy_c_buf_p =
+                               &yy_current_buffer->yy_ch_buf[yy_n_chars];
+
+                               yy_current_state = yy_get_previous_state();
+
+                               yy_cp = yy_c_buf_p;
+                               yy_bp = yytext_ptr + YY_MORE_ADJ;
+                               goto yy_find_action;
+                       }
+               break;
+               }
+
+       default:
+               YY_FATAL_ERROR(
+                       "fatal flex scanner internal error--no action found" );
+       } /* end of action switch */
+               } /* end of scanning one token */
+       } /* end of yylex */
+
+
+/* yy_get_next_buffer - try to read in a new buffer
+ *
+ * Returns a code representing an action:
+ *     EOB_ACT_LAST_MATCH -
+ *     EOB_ACT_CONTINUE_SCAN - continue scanning from current position
+ *     EOB_ACT_END_OF_FILE - end of file
+ */
+
+static int yy_get_next_buffer()
+       {
+       register char *dest = yy_current_buffer->yy_ch_buf;
+       register char *source = yytext_ptr;
+       register int number_to_move, i;
+       int ret_val;
+
+       if ( yy_c_buf_p > &yy_current_buffer->yy_ch_buf[yy_n_chars + 1] )
+               YY_FATAL_ERROR(
+               "fatal flex scanner internal error--end of buffer missed" );
+
+       if ( yy_current_buffer->yy_fill_buffer == 0 )
+               { /* Don't try to fill the buffer, so this is an EOF. */
+               if ( yy_c_buf_p - yytext_ptr - YY_MORE_ADJ == 1 )
+                       {
+                       /* We matched a single character, the EOB, so
+                        * treat this as a final EOF.
+                        */
+                       return EOB_ACT_END_OF_FILE;
+                       }
+
+               else
+                       {
+                       /* We matched some text prior to the EOB, first
+                        * process it.
+                        */
+                       return EOB_ACT_LAST_MATCH;
+                       }
+               }
+
+       /* Try to read more data. */
+
+       /* First move last chars to start of buffer. */
+       number_to_move = (int) (yy_c_buf_p - yytext_ptr) - 1;
+
+       for ( i = 0; i < number_to_move; ++i )
+               *(dest++) = *(source++);
+
+       if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_EOF_PENDING )
+               /* don't do the read, it's not guaranteed to return an EOF,
+                * just force an EOF
+                */
+               yy_current_buffer->yy_n_chars = yy_n_chars = 0;
+
+       else
+               {
+               int num_to_read =
+                       yy_current_buffer->yy_buf_size - number_to_move - 1;
+
+               while ( num_to_read <= 0 )
+                       { /* Not enough room in the buffer - grow it. */
+#ifdef YY_USES_REJECT
+                       YY_FATAL_ERROR(
+"input buffer overflow, can't enlarge buffer because scanner uses REJECT" );
+#else
+
+                       /* just a shorter name for the current buffer */
+                       YY_BUFFER_STATE b = yy_current_buffer;
+
+                       int yy_c_buf_p_offset =
+                               (int) (yy_c_buf_p - b->yy_ch_buf);
+
+                       if ( b->yy_is_our_buffer )
+                               {
+                               int new_size = b->yy_buf_size * 2;
+
+                               if ( new_size <= 0 )
+                                       b->yy_buf_size += b->yy_buf_size / 8;
+                               else
+                                       b->yy_buf_size *= 2;
+
+                               b->yy_ch_buf = (char *)
+                                       /* Include room in for 2 EOB chars. */
+                                       yy_flex_realloc( (void *) b->yy_ch_buf,
+                                                        b->yy_buf_size + 2 );
+                               }
+                       else
+                               /* Can't grow it, we don't own it. */
+                               b->yy_ch_buf = 0;
+
+                       if ( ! b->yy_ch_buf )
+                               YY_FATAL_ERROR(
+                               "fatal error - scanner input buffer overflow" );
+
+                       yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
+
+                       num_to_read = yy_current_buffer->yy_buf_size -
+                                               number_to_move - 1;
+#endif
+                       }
+
+               if ( num_to_read > YY_READ_BUF_SIZE )
+                       num_to_read = YY_READ_BUF_SIZE;
+
+               /* Read in more data. */
+               YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]),
+                       yy_n_chars, num_to_read );
+
+               yy_current_buffer->yy_n_chars = yy_n_chars;
+               }
+
+       if ( yy_n_chars == 0 )
+               {
+               if ( number_to_move == YY_MORE_ADJ )
+                       {
+                       ret_val = EOB_ACT_END_OF_FILE;
+                       yyrestart( yyin );
+                       }
+
+               else
+                       {
+                       ret_val = EOB_ACT_LAST_MATCH;
+                       yy_current_buffer->yy_buffer_status =
+                               YY_BUFFER_EOF_PENDING;
+                       }
+               }
+
+       else
+               ret_val = EOB_ACT_CONTINUE_SCAN;
+
+       yy_n_chars += number_to_move;
+       yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR;
+       yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
+
+       yytext_ptr = &yy_current_buffer->yy_ch_buf[0];
+
+       return ret_val;
+       }
+
+
+/* yy_get_previous_state - get the state just before the EOB char was reached */
+
+static yy_state_type yy_get_previous_state()
+       {
+       register yy_state_type yy_current_state;
+       register char *yy_cp;
+
+       yy_current_state = yy_start;
+       yy_current_state += YY_AT_BOL();
+       yy_state_ptr = yy_state_buf;
+       *yy_state_ptr++ = yy_current_state;
+
+       for ( yy_cp = yytext_ptr + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp )
+               {
+               register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
+               while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
+                       {
+                       yy_current_state = (int) yy_def[yy_current_state];
+                       if ( yy_current_state >= 697 )
+                               yy_c = yy_meta[(unsigned int) yy_c];
+                       }
+               yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
+               *yy_state_ptr++ = yy_current_state;
+               }
+
+       return yy_current_state;
+       }
+
+
+/* yy_try_NUL_trans - try to make a transition on the NUL character
+ *
+ * synopsis
+ *     next_state = yy_try_NUL_trans( current_state );
+ */
+
+#ifdef YY_USE_PROTOS
+static yy_state_type yy_try_NUL_trans( yy_state_type yy_current_state )
+#else
+static yy_state_type yy_try_NUL_trans( yy_current_state )
+yy_state_type yy_current_state;
+#endif
+       {
+       register int yy_is_jam;
+
+       register YY_CHAR yy_c = 1;
+       while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
+               {
+               yy_current_state = (int) yy_def[yy_current_state];
+               if ( yy_current_state >= 697 )
+                       yy_c = yy_meta[(unsigned int) yy_c];
+               }
+       yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
+       yy_is_jam = (yy_current_state == 696);
+       if ( ! yy_is_jam )
+               *yy_state_ptr++ = yy_current_state;
+
+       return yy_is_jam ? 0 : yy_current_state;
+       }
+
+
+#ifndef YY_NO_UNPUT
+#ifdef YY_USE_PROTOS
+static void yyunput( int c, register char *yy_bp )
+#else
+static void yyunput( c, yy_bp )
+int c;
+register char *yy_bp;
+#endif
+       {
+       register char *yy_cp = yy_c_buf_p;
+
+       /* undo effects of setting up yytext */
+       *yy_cp = yy_hold_char;
+
+       if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
+               { /* need to shift things up to make room */
+               /* +2 for EOB chars. */
+               register int number_to_move = yy_n_chars + 2;
+               register char *dest = &yy_current_buffer->yy_ch_buf[
+                                       yy_current_buffer->yy_buf_size + 2];
+               register char *source =
+                               &yy_current_buffer->yy_ch_buf[number_to_move];
+
+               while ( source > yy_current_buffer->yy_ch_buf )
+                       *--dest = *--source;
+
+               yy_cp += (int) (dest - source);
+               yy_bp += (int) (dest - source);
+               yy_current_buffer->yy_n_chars =
+                       yy_n_chars = yy_current_buffer->yy_buf_size;
+
+               if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
+                       YY_FATAL_ERROR( "flex scanner push-back overflow" );
+               }
+
+       *--yy_cp = (char) c;
+
+
+       yytext_ptr = yy_bp;
+       yy_hold_char = *yy_cp;
+       yy_c_buf_p = yy_cp;
+       }
+#endif /* ifndef YY_NO_UNPUT */
+
+
+#ifdef __cplusplus
+static int yyinput()
+#else
+static int input()
+#endif
+       {
+       int c;
+
+       *yy_c_buf_p = yy_hold_char;
+
+       if ( *yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
+               {
+               /* yy_c_buf_p now points to the character we want to return.
+                * If this occurs *before* the EOB characters, then it's a
+                * valid NUL; if not, then we've hit the end of the buffer.
+                */
+               if ( yy_c_buf_p < &yy_current_buffer->yy_ch_buf[yy_n_chars] )
+                       /* This was really a NUL. */
+                       *yy_c_buf_p = '\0';
+
+               else
+                       { /* need more input */
+                       int offset = yy_c_buf_p - yytext_ptr;
+                       ++yy_c_buf_p;
+
+                       switch ( yy_get_next_buffer() )
+                               {
+                               case EOB_ACT_LAST_MATCH:
+                                       /* This happens because yy_g_n_b()
+                                        * sees that we've accumulated a
+                                        * token and flags that we need to
+                                        * try matching the token before
+                                        * proceeding.  But for input(),
+                                        * there's no matching to consider.
+                                        * So convert the EOB_ACT_LAST_MATCH
+                                        * to EOB_ACT_END_OF_FILE.
+                                        */
+
+                                       /* Reset buffer status. */
+                                       yyrestart( yyin );
+
+                                       /* fall through */
+
+                               case EOB_ACT_END_OF_FILE:
+                                       {
+                                       if ( yywrap() )
+                                               return EOF;
+
+                                       if ( ! yy_did_buffer_switch_on_eof )
+                                               YY_NEW_FILE;
+#ifdef __cplusplus
+                                       return yyinput();
+#else
+                                       return input();
+#endif
+                                       }
+
+                               case EOB_ACT_CONTINUE_SCAN:
+                                       yy_c_buf_p = yytext_ptr + offset;
+                                       break;
+                               }
+                       }
+               }
+
+       c = *(unsigned char *) yy_c_buf_p;      /* cast for 8-bit char's */
+       *yy_c_buf_p = '\0';     /* preserve yytext */
+       yy_hold_char = *++yy_c_buf_p;
+
+       yy_current_buffer->yy_at_bol = (c == '\n');
+
+       return c;
+       }
+
+
+#ifdef YY_USE_PROTOS
+void yyrestart( FILE *input_file )
+#else
+void yyrestart( input_file )
+FILE *input_file;
+#endif
+       {
+       if ( ! yy_current_buffer )
+               yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE );
+
+       yy_init_buffer( yy_current_buffer, input_file );
+       yy_load_buffer_state();
+       }
+
+
+#ifdef YY_USE_PROTOS
+void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer )
+#else
+void yy_switch_to_buffer( new_buffer )
+YY_BUFFER_STATE new_buffer;
+#endif
+       {
+       if ( yy_current_buffer == new_buffer )
+               return;
+
+       if ( yy_current_buffer )
+               {
+               /* Flush out information for old buffer. */
+               *yy_c_buf_p = yy_hold_char;
+               yy_current_buffer->yy_buf_pos = yy_c_buf_p;
+               yy_current_buffer->yy_n_chars = yy_n_chars;
+               }
+
+       yy_current_buffer = new_buffer;
+       yy_load_buffer_state();
+
+       /* We don't actually know whether we did this switch during
+        * EOF (yywrap()) processing, but the only time this flag
+        * is looked at is after yywrap() is called, so it's safe
+        * to go ahead and always set it.
+        */
+       yy_did_buffer_switch_on_eof = 1;
+       }
+
+
+#ifdef YY_USE_PROTOS
+void yy_load_buffer_state( void )
+#else
+void yy_load_buffer_state()
+#endif
+       {
+       yy_n_chars = yy_current_buffer->yy_n_chars;
+       yytext_ptr = yy_c_buf_p = yy_current_buffer->yy_buf_pos;
+       yyin = yy_current_buffer->yy_input_file;
+       yy_hold_char = *yy_c_buf_p;
+       }
+
+
+#ifdef YY_USE_PROTOS
+YY_BUFFER_STATE yy_create_buffer( FILE *file, int size )
+#else
+YY_BUFFER_STATE yy_create_buffer( file, size )
+FILE *file;
+int size;
+#endif
+       {
+       YY_BUFFER_STATE b;
+
+       b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
+       if ( ! b )
+               YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
+
+       b->yy_buf_size = size;
+
+       /* yy_ch_buf has to be 2 characters longer than the size given because
+        * we need to put in 2 end-of-buffer characters.
+        */
+       b->yy_ch_buf = (char *) yy_flex_alloc( b->yy_buf_size + 2 );
+       if ( ! b->yy_ch_buf )
+               YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
+
+       b->yy_is_our_buffer = 1;
+
+       yy_init_buffer( b, file );
+
+       return b;
+       }
+
+
+#ifdef YY_USE_PROTOS
+void yy_delete_buffer( YY_BUFFER_STATE b )
+#else
+void yy_delete_buffer( b )
+YY_BUFFER_STATE b;
+#endif
+       {
+       if ( ! b )
+               return;
+
+       if ( b == yy_current_buffer )
+               yy_current_buffer = (YY_BUFFER_STATE) 0;
+
+       if ( b->yy_is_our_buffer )
+               yy_flex_free( (void *) b->yy_ch_buf );
+
+       yy_flex_free( (void *) b );
+       }
+
+
+#ifndef _WIN32
+#include <unistd.h>
+#else
+#ifndef YY_ALWAYS_INTERACTIVE
+#ifndef YY_NEVER_INTERACTIVE
+extern int isatty YY_PROTO(( int ));
+#endif
+#endif
+#endif
+
+#ifdef YY_USE_PROTOS
+void yy_init_buffer( YY_BUFFER_STATE b, FILE *file )
+#else
+void yy_init_buffer( b, file )
+YY_BUFFER_STATE b;
+FILE *file;
+#endif
+
+
+       {
+       yy_flush_buffer( b );
+
+       b->yy_input_file = file;
+       b->yy_fill_buffer = 1;
+
+#if YY_ALWAYS_INTERACTIVE
+       b->yy_is_interactive = 1;
+#else
+#if YY_NEVER_INTERACTIVE
+       b->yy_is_interactive = 0;
+#else
+       b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
+#endif
+#endif
+       }
+
+
+#ifdef YY_USE_PROTOS
+void yy_flush_buffer( YY_BUFFER_STATE b )
+#else
+void yy_flush_buffer( b )
+YY_BUFFER_STATE b;
+#endif
+
+       {
+       if ( ! b )
+               return;
+
+       b->yy_n_chars = 0;
+
+       /* We always need two end-of-buffer characters.  The first causes
+        * a transition to the end-of-buffer state.  The second causes
+        * a jam in that state.
+        */
+       b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
+       b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
+
+       b->yy_buf_pos = &b->yy_ch_buf[0];
+
+       b->yy_at_bol = 1;
+       b->yy_buffer_status = YY_BUFFER_NEW;
+
+       if ( b == yy_current_buffer )
+               yy_load_buffer_state();
+       }
+
+
+#ifndef YY_NO_SCAN_BUFFER
+#ifdef YY_USE_PROTOS
+YY_BUFFER_STATE yy_scan_buffer( char *base, yy_size_t size )
+#else
+YY_BUFFER_STATE yy_scan_buffer( base, size )
+char *base;
+yy_size_t size;
+#endif
+       {
+       YY_BUFFER_STATE b;
+
+       if ( size < 2 ||
+            base[size-2] != YY_END_OF_BUFFER_CHAR ||
+            base[size-1] != YY_END_OF_BUFFER_CHAR )
+               /* They forgot to leave room for the EOB's. */
+               return 0;
+
+       b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
+       if ( ! b )
+               YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
+
+       b->yy_buf_size = size - 2;      /* "- 2" to take care of EOB's */
+       b->yy_buf_pos = b->yy_ch_buf = base;
+       b->yy_is_our_buffer = 0;
+       b->yy_input_file = 0;
+       b->yy_n_chars = b->yy_buf_size;
+       b->yy_is_interactive = 0;
+       b->yy_at_bol = 1;
+       b->yy_fill_buffer = 0;
+       b->yy_buffer_status = YY_BUFFER_NEW;
+
+       yy_switch_to_buffer( b );
+
+       return b;
+       }
+#endif
+
+
+#ifndef YY_NO_SCAN_STRING
+#ifdef YY_USE_PROTOS
+YY_BUFFER_STATE yy_scan_string( yyconst char *yy_str )
+#else
+YY_BUFFER_STATE yy_scan_string( yy_str )
+yyconst char *yy_str;
+#endif
+       {
+       int len;
+       for ( len = 0; yy_str[len]; ++len )
+               ;
+
+       return yy_scan_bytes( yy_str, len );
+       }
+#endif
+
+
+#ifndef YY_NO_SCAN_BYTES
+#ifdef YY_USE_PROTOS
+YY_BUFFER_STATE yy_scan_bytes( yyconst char *bytes, int len )
+#else
+YY_BUFFER_STATE yy_scan_bytes( bytes, len )
+yyconst char *bytes;
+int len;
+#endif
+       {
+       YY_BUFFER_STATE b;
+       char *buf;
+       yy_size_t n;
+       int i;
+
+       /* Get memory for full buffer, including space for trailing EOB's. */
+       n = len + 2;
+       buf = (char *) yy_flex_alloc( n );
+       if ( ! buf )
+               YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
+
+       for ( i = 0; i < len; ++i )
+               buf[i] = bytes[i];
+
+       buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR;
+
+       b = yy_scan_buffer( buf, n );
+       if ( ! b )
+               YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
+
+       /* It's okay to grow etc. this buffer, and we should throw it
+        * away when we're done.
+        */
+       b->yy_is_our_buffer = 1;
+
+       return b;
+       }
+#endif
+
+
+#ifndef YY_NO_PUSH_STATE
+#ifdef YY_USE_PROTOS
+static void yy_push_state( int new_state )
+#else
+static void yy_push_state( new_state )
+int new_state;
+#endif
+       {
+       if ( yy_start_stack_ptr >= yy_start_stack_depth )
+               {
+               yy_size_t new_size;
+
+               yy_start_stack_depth += YY_START_STACK_INCR;
+               new_size = yy_start_stack_depth * sizeof( int );
+
+               if ( ! yy_start_stack )
+                       yy_start_stack = (int *) yy_flex_alloc( new_size );
+
+               else
+                       yy_start_stack = (int *) yy_flex_realloc(
+                                       (void *) yy_start_stack, new_size );
+
+               if ( ! yy_start_stack )
+                       YY_FATAL_ERROR(
+                       "out of memory expanding start-condition stack" );
+               }
+
+       yy_start_stack[yy_start_stack_ptr++] = YY_START;
+
+       BEGIN(new_state);
+       }
+#endif
+
+
+#ifndef YY_NO_POP_STATE
+static void yy_pop_state()
+       {
+       if ( --yy_start_stack_ptr < 0 )
+               YY_FATAL_ERROR( "start-condition stack underflow" );
+
+       BEGIN(yy_start_stack[yy_start_stack_ptr]);
+       }
+#endif
+
+
+#ifndef YY_NO_TOP_STATE
+static int yy_top_state()
+       {
+       return yy_start_stack[yy_start_stack_ptr - 1];
+       }
+#endif
+
+#ifndef YY_EXIT_FAILURE
+#define YY_EXIT_FAILURE 2
+#endif
+
+#ifdef YY_USE_PROTOS
+static void yy_fatal_error( yyconst char msg[] )
+#else
+static void yy_fatal_error( msg )
+char msg[];
+#endif
+       {
+       (void) fprintf( stderr, "%s\n", msg );
+       exit( YY_EXIT_FAILURE );
+       }
+
+
+
+/* Redefine yyless() so it works in section 3 code. */
+
+#undef yyless
+#define yyless(n) \
+       do \
+               { \
+               /* Undo effects of setting up yytext. */ \
+               yytext[yyleng] = yy_hold_char; \
+               yy_c_buf_p = yytext + n; \
+               yy_hold_char = *yy_c_buf_p; \
+               *yy_c_buf_p = '\0'; \
+               yyleng = n; \
+               } \
+       while ( 0 )
+
+
+/* Internal utility routines. */
+
+#ifndef yytext_ptr
+#ifdef YY_USE_PROTOS
+static void yy_flex_strncpy( char *s1, yyconst char *s2, int n )
+#else
+static void yy_flex_strncpy( s1, s2, n )
+char *s1;
+yyconst char *s2;
+int n;
+#endif
+       {
+       register int i;
+       for ( i = 0; i < n; ++i )
+               s1[i] = s2[i];
+       }
+#endif
+
+#ifdef YY_NEED_STRLEN
+#ifdef YY_USE_PROTOS
+static int yy_flex_strlen( yyconst char *s )
+#else
+static int yy_flex_strlen( s )
+yyconst char *s;
+#endif
+       {
+       register int n;
+       for ( n = 0; s[n]; ++n )
+               ;
+
+       return n;
+       }
+#endif
+
+
+#ifdef YY_USE_PROTOS
+static void *yy_flex_alloc( yy_size_t size )
+#else
+static void *yy_flex_alloc( size )
+yy_size_t size;
+#endif
+       {
+       return (void *) malloc( size );
+       }
+
+#ifdef YY_USE_PROTOS
+static void *yy_flex_realloc( void *ptr, yy_size_t size )
+#else
+static void *yy_flex_realloc( ptr, size )
+void *ptr;
+yy_size_t size;
+#endif
+       {
+       /* The cast to (char *) in the following accommodates both
+        * implementations that use char* generic pointers, and those
+        * that use void* generic pointers.  It works with the latter
+        * because both ANSI C and C++ allow castless assignment from
+        * any pointer type to void*, and deal with argument conversions
+        * as though doing an assignment.
+        */
+       return (void *) realloc( (char *) ptr, size );
+       }
+
+#ifdef YY_USE_PROTOS
+static void yy_flex_free( void *ptr )
+#else
+static void yy_flex_free( ptr )
+void *ptr;
+#endif
+       {
+       free( ptr );
+       }
+
+#if YY_MAIN
+int main()
+       {
+       yylex();
+       return 0;
+       }
+#endif
+
+
+
+static char *StringToLex;
+
+#ifndef FLEX_SCANNER
+static FILE *lexFP;
+
+static int input()
+{
+    int ret;
+    
+    if (StringToLex != NULL) {
+       ret = *StringToLex;
+       if (ret == NULLCHAR)
+         ret = EOF;
+       else
+         StringToLex++;
+    } else if (unputCount > 0) {
+       ret = unputBuffer[--unputCount];
+    } else {
+       ret = fgetc(lexFP);
+    }    
+
+    if (ret == EOF) 
+      return 0;
+    else
+      return ret;
+}
+
+/*
+ * Return offset of next pattern within current file
+ */
+int yyoffset()
+{
+    int offset = ftell(lexFP) - unputCount;
+
+    if (offset < 0) {
+       offset = 0;
+    }
+    return(offset);
+}
+static void output(ch)
+     int ch;
+{
+    fprintf(stderr, "PARSER BUG: unmatched character '%c' (0%o)\n",
+           ch, ch);
+}
+
+static void unput(ch)
+     int ch;
+{
+    if (ch == 0) return;
+    if (StringToLex != NULL) {
+       StringToLex--;
+    } else {
+       if (unputCount >= UNPUT_BUF_SIZE)
+         fprintf(stderr, "PARSER BUG: unput buffer overflow '%c' (0%o)\n",
+                 ch, ch);
+       unputBuffer[unputCount++] = ch;
+    }
+}
+
+/* Get ready to lex from a new file.  Kludge below sticks
+   an artificial newline at the front of the file, which the
+   above grammar ignores, but which makes ^ at start of pattern
+   match at the real start of the file.
+*/
+void yynewfile(f)
+     FILE *f;
+{
+    lexFP = f;
+    StringToLex = NULL;
+    unputCount = 0;
+    unput('\n'); /* kludge */
+}
+
+/* Get ready to lex from a string.  ^ at start of pattern WON'T
+   match at the start of the string!
+*/
+void yynewstr(s)
+     char *s;
+{
+    lexFP = NULL;
+    StringToLex = s;
+    unputCount = 0;
+}
+#endif /*!FLEX_SCANNER*/
+
+#ifdef FLEX_SCANNER
+void my_yy_input(buf, result, max_size)
+     char *buf;
+     int *result;
+     int max_size;
+{
+    int count;
+
+    if (StringToLex != NULL) {
+       count = 0;
+       while (*StringToLex != NULLCHAR) {
+           *buf++ = *StringToLex++;
+           count++;
+       }
+       *result = count;
+       return;
+    } else {
+       count = fread(buf, 1, max_size, yyin);
+       if (count == 0) {
+           *result = YY_NULL;
+       } else {
+           *result = count;
+       }
+       return;
+    }    
+}
+
+static YY_BUFFER_STATE my_file_buffer = NULL;
+
+/*
+    Return offset of next pattern in the current file.
+*/
+int yyoffset()
+{
+    int pos = yy_c_buf_p - YY_CURRENT_BUFFER->yy_ch_buf;
+
+    return(ftell(YY_CURRENT_BUFFER->yy_input_file) -
+         yy_n_chars + pos);
+}
+
+
+void yynewstr(s)
+     char *s;
+{
+    if (my_file_buffer != NULL)
+      yy_delete_buffer(my_file_buffer);
+    StringToLex = s;
+    my_file_buffer = yy_create_buffer(stdin, YY_BUF_SIZE);
+    yy_switch_to_buffer(my_file_buffer);
+}
+
+void yynewfile(f)
+     FILE *f;
+{
+    if (my_file_buffer != NULL)
+      yy_delete_buffer(my_file_buffer);
+    StringToLex = NULL;
+    my_file_buffer = yy_create_buffer(f, YY_BUF_SIZE);
+    yy_switch_to_buffer(my_file_buffer);
+}
+#endif /*FLEX_SCANNER*/
+
+int yywrap()
+{
+    return TRUE;
+}
+
+/* Parse a move from the given string s */
+/* ^ at start of pattern WON'T work here unless using flex */
+ChessMove yylexstr(boardIndex, s)
+     int boardIndex;
+     char *s;
+{
+    ChessMove ret;
+    char *oldStringToLex;
+#ifdef FLEX_SCANNER
+    YY_BUFFER_STATE buffer, oldBuffer;
+#endif
+    
+    yyboardindex = boardIndex;
+    oldStringToLex = StringToLex;
+    StringToLex = s;
+#ifdef FLEX_SCANNER
+    buffer = yy_create_buffer(stdin, YY_BUF_SIZE);
+    oldBuffer = YY_CURRENT_BUFFER;
+    yy_switch_to_buffer(buffer);
+#endif /*FLEX_SCANNER*/
+
+    ret = (ChessMove) yylex();
+
+#ifdef FLEX_SCANNER
+    if (oldBuffer != NULL) 
+      yy_switch_to_buffer(oldBuffer);
+    yy_delete_buffer(buffer);
+#endif /*FLEX_SCANNER*/
+    StringToLex = oldStringToLex;
+
+    return ret;
+}
index b22e6b4..e05ed40 100644 (file)
@@ -1,3 +1,52 @@
+                             WinBoard 4.3.16 RELEASE NOTES\r
+\r
+Compared to version 4.3.15 described below, this version features\r
+\r
+New command-line options\r
+/niceEngines=N       for adjusting the priority of engine processes so they don't soak up all your system resources\r
+/firstOptions="..."   Allows the setting of options that engines define through the feature option="..." commands\r
+/secondOptions="..."\r
+/firstLogo=filename.bmp  Displays the mentioned bitmap next to the clock (with H:W =1:2 aspect ratio) (WB only)\r
+/secondLogo=filename.bmp\r
+/autoLogo=false          get logo files automatically from engineDirectory\logo.bmp\r
+\r
+General enhancements:\r
+* New WB-protocol command: 'feature option="NAME -TYPE VALUE OTHER"', which engines can use to define options\r
+* New WB-protocol command: 'option NAME VALUE' used to set value of engine-defned options.\r
+* implements /delayAfterQuit and /delayBeforeQuit in XBoard, and uses SIGKILL to terminate rogue engine processes\r
+\r
+\r
+\r
+                             WinBoard 4.3.15 RELEASE NOTES\r
+\r
+Compared to version 4.3.14k described below, this version features\r
+\r
+New command-line options\r
+/rewindIndex=N (for the new auto-increment mode of the loadGameIndex or loadPositionIndex in match mode)\r
+/sameColorGames=N (for playing a match where the same player has white all the time)\r
+/egtFormats="..." (for specifying where various end-game tables are installed on the computer)\r
+\r
+New menu items\r
++ Time-odds factors can be set in the time-control dialog\r
++ Nr of CPUs for SMP engines can be set in the Options -> UCI dialog\r
++ Own-Book options can be switched from the Options -> UCI dialog\r
++ The ScoreIsAbs options can be set from the Options -> Engine dialog\r
++ New-Variant menu adds Superchess\r
+\r
+General Enhancements:\r
+* WinBoard engines can now also use the Polyglot opening book (implemented as general GUI book)\r
+* New WB-protocol commands memory, cores and egtpath make interactive setting of these parameters \r
+  possible on WB engines\r
+* New Polyglot is available that relays the interactive setting of these parameters to UCI engines\r
+* Match mode suports an auto-increment mode, so that all games or positions from a file can be played\r
+* Draw claims with Kings and an arbitrary number of like Bishops (e.g. KBBKB) are accepted\r
+\r
+The source tree in original xboard 4.2.7 format can now be compiled under Cygwin with the aid\r
+of the cygwin.mak file in the ~/winboard/ subdirectory of the source releasy, after you put\r
+the hep-file from an executabl distribution there. Maefiles for other compilers are not updated\r
+since 4.2.7, as I do not have those compilers.\r
+\r
+\r
                              WinBoard 4.3.14k RELEASE NOTES\r
 \r
 Compared to version 4.3.13 described below, this version features\r
@@ -21,7 +70,7 @@ Bugfixes:
 * In ICS observing mode game history is now fully accessible \r
 * Moves are not fed to engine in zippy mode, when observing a game from a variant unknown to the engine \r
 * a problem with loading PGN of FRC games with move disambiguation and initial castling rights was fixed.\r
-* A bug in the clock display that mad previous versions of WinBoard crash for tiny displays is fixed\r
+* A bug in the clock display that made previous versions of WinBoard crash for tiny displays is fixed\r
 \r
 General enhancements: \r
 * variant name displayed in title bar in ICS mode, when not 'normal' \r
index 994af41..942f593 100644 (file)
-/*
- * Engine output (PV)
- *
- * Author: Alessandro Scotti (Dec 2005)
- *
- * ------------------------------------------------------------------------
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- * ------------------------------------------------------------------------
- */
-#include "config.h"
-
-#include <windows.h> /* required for all Windows applications */
-#include <richedit.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <malloc.h>
-#include <commdlg.h>
-#include <dlgs.h>
-
-#include "common.h"
-#include "winboard.h"
-#include "frontend.h"
-#include "backend.h"
-
-#include "wsnap.h"
-
-// [HGM] define numbers to indicate icons, for referring to them in platform-independent way
-#define nColorBlack   1
-#define nColorWhite   2
-#define nColorUnknown 3
-#define nClear        4
-#define nPondering    5
-#define nThinking     6
-#define nAnalyzing    7
-
-HICON icons[8]; // [HGM] this front-end array translates back-end icon indicator to handle
-
-// [HGM] same for output fields (note that there are two of each type, one per color)
-#define nColorIcon 1
-#define nStateIcon 2
-#define nLabel     3
-#define nStateData 4
-#define nLabelNPS  5
-#define nMemo      6
-
-HWND outputField[2][7]; // [HGM] front-end array to translate output field to window handle
-
-void EngineOutputPopUp();
-void EngineOutputPopDown();
-int  EngineOutputIsUp();
-
-#define SHOW_PONDERING
-
-/* Imports from backend.c */
-char * SavePart(char *str);
-extern int opponentKibitzes;
-
-/* Imports from winboard.c */
-extern HWND engineOutputDialog;
-extern int     engineOutputDialogUp;
-
-extern HINSTANCE hInst;
-extern HWND hwndMain;
-
-extern WindowPlacement wpEngineOutput;
-
-/* Module variables */
-#define H_MARGIN            2
-#define V_MARGIN            2
-#define LABEL_V_DISTANCE    1   /* Distance between label and memo */
-#define SPLITTER_SIZE       4   /* Distance between first memo and second label */
-
-#define ICON_SIZE           14
-
-#define STATE_UNKNOWN   -1
-#define STATE_THINKING   0
-#define STATE_IDLE       1
-#define STATE_PONDERING  2
-#define STATE_ANALYZING  3
-
-static int  windowMode = 1;
-
-static int  needInit = TRUE;
-
-static int  lastDepth[2] = { -1, -1 };
-static int  lastForwardMostMove[2] = { -1, -1 };
-static int  engineState[2] = { -1, -1 };
-
-typedef struct {
-//    HWND hColorIcon; // [HGM] the output-control handles are no loger passed,
-//    HWND hLabel;     //       to give better front-end / back-end separation
-//    HWND hStateIcon; //       the front-end routines now get them from a (front-end)
-//    HWND hStateData; //       table, indexed by output-field indicators.
-//    HWND hLabelNPS;
-//    HWND hMemo;
-    char * name;
-    int which;
-    int depth;
-    unsigned long nodes;
-    int score;
-    int time;
-    char * pv;
-    char * hint;
-    int an_move_index;
-    int an_move_count;
-} EngineOutputData;
-
-static VerifyDisplayMode();
-static void UpdateControls( EngineOutputData * ed );
-static SetEngineState( int which, int state, char * state_data );
-
-// front end
-static HICON LoadIconEx( int id )
-{
-    return LoadImage( hInst, MAKEINTRESOURCE(id), IMAGE_ICON, ICON_SIZE, ICON_SIZE, 0 );
-}
-
-// [HGM] the platform-dependent way of indicating where output should go is now all
-// concentrated here, where a table of platform-dependent handles are initialized.
-// This cleanses most other routines of front-end stuff, so they can go into the back end.
-static void InitializeEngineOutput()
-{
- //   if( needInit ) { // needInit was already tested before call
-       // [HGM] made this into a table, rather than separate global variables
-        icons[nColorBlack]   = LoadIconEx( IDI_BLACK_14 );
-        icons[nColorWhite]   = LoadIconEx( IDI_WHITE_14 );
-        icons[nColorUnknown] = LoadIconEx( IDI_UNKNOWN_14 );
-        icons[nClear]        = LoadIconEx( IDI_TRANS_14 );
-        icons[nPondering]    = LoadIconEx( IDI_PONDER_14 );
-        icons[nThinking]     = LoadIconEx( IDI_CLOCK_14 );
-        icons[nAnalyzing]    = LoadIconEx( IDI_ANALYZE2_14 );
-
-       // [HGM] also make a table of handles to output controls
-       // Note that engineOutputDialog must be defined first!
-        outputField[0][nColorIcon] = GetDlgItem( engineOutputDialog, IDC_Color1 );
-        outputField[0][nLabel]     = GetDlgItem( engineOutputDialog, IDC_EngineLabel1 );
-        outputField[0][nStateIcon] = GetDlgItem( engineOutputDialog, IDC_StateIcon1 );
-        outputField[0][nStateData] = GetDlgItem( engineOutputDialog, IDC_StateData1 );
-        outputField[0][nLabelNPS]  = GetDlgItem( engineOutputDialog, IDC_Engine1_NPS );
-        outputField[0][nMemo]      = GetDlgItem( engineOutputDialog, IDC_EngineMemo1 );
-
-        outputField[1][nColorIcon] = GetDlgItem( engineOutputDialog, IDC_Color2 );
-        outputField[1][nLabel]     = GetDlgItem( engineOutputDialog, IDC_EngineLabel2 );
-        outputField[1][nStateIcon] = GetDlgItem( engineOutputDialog, IDC_StateIcon2 );
-        outputField[1][nStateData] = GetDlgItem( engineOutputDialog, IDC_StateData2 );
-        outputField[1][nLabelNPS]  = GetDlgItem( engineOutputDialog, IDC_Engine2_NPS );
-        outputField[1][nMemo]      = GetDlgItem( engineOutputDialog, IDC_EngineMemo2 );
-//        needInit = FALSE;
-//    }
-}
-
-// front end
-static void SetControlPos( HWND hDlg, int id, int x, int y, int width, int height )
-{
-    HWND hControl = GetDlgItem( hDlg, id );
-
-    SetWindowPos( hControl, HWND_TOP, x, y, width, height, SWP_NOZORDER );
-}
-
-#define HIDDEN_X    20000
-#define HIDDEN_Y    20000
-
-// front end
-static void HideControl( HWND hDlg, int id )
-{
-    HWND hControl = GetDlgItem( hDlg, id );
-    RECT rc;
-
-    GetWindowRect( hControl, &rc );
-
-    /* 
-        Avoid hiding an already hidden control, because that causes many
-        unnecessary WM_ERASEBKGND messages!
-    */
-    if( rc.left != HIDDEN_X || rc.top != HIDDEN_Y ) {
-        SetControlPos( hDlg, id, 20000, 20000, 100, 100 );
-    }
-}
-
-// front end, although we might make GetWindowRect front end instead
-static int GetControlWidth( HWND hDlg, int id )
-{
-    RECT rc;
-
-    GetWindowRect( GetDlgItem( hDlg, id ), &rc );
-
-    return rc.right - rc.left;
-}
-
-// front end?
-static int GetControlHeight( HWND hDlg, int id )
-{
-    RECT rc;
-
-    GetWindowRect( GetDlgItem( hDlg, id ), &rc );
-
-    return rc.bottom - rc.top;
-}
-
-static int GetHeaderHeight()
-{
-    int result = GetControlHeight( engineOutputDialog, IDC_EngineLabel1 );
-
-    if( result < ICON_SIZE ) result = ICON_SIZE;
-
-    return result;
-}
-
-// The size calculations should be backend? If setControlPos is a platform-dependent way of doing things,
-// a platform-independent wrapper for it should be supplied.
-static void PositionControlSet( HWND hDlg, int x, int y, int clientWidth, int memoHeight, int idColor, int idEngineLabel, int idNPS, int idMemo, int idStateIcon, int idStateData )
-{
-    int label_x = x + ICON_SIZE + H_MARGIN;
-    int label_h = GetControlHeight( hDlg, IDC_EngineLabel1 );
-    int label_y = y + ICON_SIZE - label_h;
-    int nps_w = GetControlWidth( hDlg, IDC_Engine1_NPS );
-    int nps_x = clientWidth - H_MARGIN - nps_w;
-    int state_data_w = GetControlWidth( hDlg, IDC_StateData1 );
-    int state_data_x = nps_x - H_MARGIN - state_data_w;
-    int state_icon_x = state_data_x - ICON_SIZE - 2;
-    int max_w = clientWidth - 2*H_MARGIN;
-    int memo_y = y + ICON_SIZE + LABEL_V_DISTANCE;
-
-    SetControlPos( hDlg, idColor, x, y, ICON_SIZE, ICON_SIZE );
-    SetControlPos( hDlg, idEngineLabel, label_x, label_y, state_icon_x - label_x, label_h );
-    SetControlPos( hDlg, idStateIcon, state_icon_x, y, ICON_SIZE, ICON_SIZE );
-    SetControlPos( hDlg, idStateData, state_data_x, label_y, state_data_w, label_h );
-    SetControlPos( hDlg, idNPS, nps_x, label_y, nps_w, label_h );
-    SetControlPos( hDlg, idMemo, x, memo_y, max_w, memoHeight );
-}
-
-// Also here some of the size calculations should go to the back end, and their actual application to a front-end routine
-static void ResizeWindowControls( HWND hDlg, int mode )
-{
-    RECT rc;
-    int headerHeight = GetHeaderHeight();
-    int labelHeight = GetControlHeight( hDlg, IDC_EngineLabel1 );
-    int labelOffset = H_MARGIN + ICON_SIZE + H_MARGIN;
-    int labelDeltaY = ICON_SIZE - labelHeight;
-    int clientWidth;
-    int clientHeight;
-    int maxControlWidth;
-    int npsWidth;
-
-    /* Initialize variables */
-    GetClientRect( hDlg, &rc );
-
-    clientWidth = rc.right - rc.left;
-    clientHeight = rc.bottom - rc.top;
-
-    maxControlWidth = clientWidth - 2*H_MARGIN;
-
-    npsWidth = GetControlWidth( hDlg, IDC_Engine1_NPS );
-
-    /* Resize controls */
-    if( mode == 0 ) {
-        /* One engine */
-        PositionControlSet( hDlg, H_MARGIN, V_MARGIN, 
-            clientWidth, 
-            clientHeight - V_MARGIN - LABEL_V_DISTANCE - headerHeight- V_MARGIN,
-            IDC_Color1, IDC_EngineLabel1, IDC_Engine1_NPS, IDC_EngineMemo1, IDC_StateIcon1, IDC_StateData1 );
-
-        /* Hide controls for the second engine */
-        HideControl( hDlg, IDC_Color2 );
-        HideControl( hDlg, IDC_EngineLabel2 );
-        HideControl( hDlg, IDC_StateIcon2 );
-        HideControl( hDlg, IDC_StateData2 );
-        HideControl( hDlg, IDC_Engine2_NPS );
-        HideControl( hDlg, IDC_EngineMemo2 );
-        SendDlgItemMessage( hDlg, IDC_EngineMemo2, WM_SETTEXT, 0, (LPARAM) "" );
-        /* TODO: we should also hide/disable them!!! what about tab stops?!?! */
-    }
-    else {
-        /* Two engines */
-        int memo_h = (clientHeight - headerHeight*2 - V_MARGIN*2 - LABEL_V_DISTANCE*2 - SPLITTER_SIZE) / 2;
-        int header1_y = V_MARGIN;
-        int header2_y = V_MARGIN + headerHeight + LABEL_V_DISTANCE + memo_h + SPLITTER_SIZE;
-
-        PositionControlSet( hDlg, H_MARGIN, header1_y, clientWidth, memo_h,
-            IDC_Color1, IDC_EngineLabel1, IDC_Engine1_NPS, IDC_EngineMemo1, IDC_StateIcon1, IDC_StateData1 );
-
-        PositionControlSet( hDlg, H_MARGIN, header2_y, clientWidth, memo_h,
-            IDC_Color2, IDC_EngineLabel2, IDC_Engine2_NPS, IDC_EngineMemo2, IDC_StateIcon2, IDC_StateData2 );
-    }
-
-    InvalidateRect( GetDlgItem(hDlg,IDC_EngineMemo1), NULL, FALSE );
-    InvalidateRect( GetDlgItem(hDlg,IDC_EngineMemo2), NULL, FALSE );
-}
-
-// front end. Actual printing of PV lines into the output field
-static void InsertIntoMemo( int which, char * text )
-{
-    SendMessage( outputField[which][nMemo], EM_SETSEL, 0, 0 );
-
-    SendMessage( outputField[which][nMemo], EM_REPLACESEL, (WPARAM) FALSE, (LPARAM) text );
-}
-
-// front end. Associates an icon with an output field ("control" in Windows jargon).
-// [HGM] let it find out the output field from the 'which' number by itself
-static void SetIcon( int which, int field, int nIcon )
-{
-
-    if( nIcon != 0 ) {
-        SendMessage( outputField[which][field], STM_SETICON, (WPARAM) icons[nIcon], 0 );
-    }
-}
-
-// front end wrapper for SetWindowText, taking control number in stead of handle
-void DoSetWindowText(int which, int field, char *s_label)
-{
-    SetWindowText( outputField[which][field], s_label );
-}
-
-// This seems pure front end
-LRESULT CALLBACK EngineOutputProc( HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam )
-{
-    static SnapData sd;
-
-    switch (message) {
-    case WM_INITDIALOG:
-        if( engineOutputDialog == NULL ) {
-            engineOutputDialog = hDlg;
-
-            RestoreWindowPlacement( hDlg, &wpEngineOutput ); /* Restore window placement */
-
-            ResizeWindowControls( hDlg, windowMode );
-
-            SetEngineState( 0, STATE_IDLE, "" );
-            SetEngineState( 1, STATE_IDLE, "" );
-        }
-
-        return FALSE;
-
-    case WM_COMMAND:
-        switch (LOWORD(wParam)) {
-        case IDOK:
-          EndDialog(hDlg, TRUE);
-          return TRUE;
-
-        case IDCANCEL:
-          EndDialog(hDlg, FALSE);
-          return TRUE;
-
-        default:
-          break;
-        }
-
-        break;
-
-    case WM_GETMINMAXINFO:
-        {
-            MINMAXINFO * mmi = (MINMAXINFO *) lParam;
-        
-            mmi->ptMinTrackSize.x = 100;
-            mmi->ptMinTrackSize.y = 160;
-        }
-        break;
-
-    case WM_CLOSE:
-        EngineOutputPopDown();
-        break;
-
-    case WM_SIZE:
-        ResizeWindowControls( hDlg, windowMode );
-        break;
-
-    case WM_ENTERSIZEMOVE:
-        return OnEnterSizeMove( &sd, hDlg, wParam, lParam );
-
-    case WM_SIZING:
-        return OnSizing( &sd, hDlg, wParam, lParam );
-
-    case WM_MOVING:
-        return OnMoving( &sd, hDlg, wParam, lParam );
-
-    case WM_EXITSIZEMOVE:
-        return OnExitSizeMove( &sd, hDlg, wParam, lParam );
-    }
-
-    return FALSE;
-}
-
-// front end
-void EngineOutputPopUp()
-{
-  FARPROC lpProc;
-  
-  CheckMenuItem(GetMenu(hwndMain), IDM_ShowEngineOutput, MF_CHECKED);
-
-  if( engineOutputDialog ) {
-    SendMessage( engineOutputDialog, WM_INITDIALOG, 0, 0 );
-
-    if( ! engineOutputDialogUp ) {
-        ShowWindow(engineOutputDialog, SW_SHOW);
-    }
-  }
-  else {
-    lpProc = MakeProcInstance( (FARPROC) EngineOutputProc, hInst );
-
-    /* Note to self: dialog must have the WS_VISIBLE style set, otherwise it's not shown! */
-    CreateDialog( hInst, MAKEINTRESOURCE(DLG_EngineOutput), hwndMain, (DLGPROC)lpProc );
-
-    FreeProcInstance(lpProc);
-  }
-
-  // [HGM] displaced to after creation of dialog, to allow initialization of output fields
-  if( needInit ) {
-      InitializeEngineOutput();
-      needInit = FALSE;
-  }
-
-  engineOutputDialogUp = TRUE;
-}
-
-// front end
-void EngineOutputPopDown()
-{
-  CheckMenuItem(GetMenu(hwndMain), IDM_ShowEngineOutput, MF_UNCHECKED);
-
-  if( engineOutputDialog ) {
-      ShowWindow(engineOutputDialog, SW_HIDE);
-  }
-
-  engineOutputDialogUp = FALSE;
-}
-
-// front end. [HGM] Takes handle of output control from table, so only number is passed
-void DoClearMemo(int which)
-{
-        SendMessage( outputField[which][nMemo], WM_SETTEXT, 0, (LPARAM) "" );
-}
-
-//------------------------ pure back-end routines -------------------------------
-
-
-// back end, due to front-end wrapper for SetWindowText, and new SetIcon arguments
-static SetEngineState( int which, int state, char * state_data )
-{
-    int x_which = 1 - which;
-
-    if( engineState[ which ] != state ) {
-        engineState[ which ] = state;
-
-        switch( state ) {
-        case STATE_THINKING:
-            SetIcon( which, nStateIcon, nThinking );
-            if( engineState[ x_which ] == STATE_THINKING ) {
-                SetEngineState( x_which, STATE_IDLE, "" );
-            }
-            break;
-        case STATE_PONDERING:
-            SetIcon( which, nStateIcon, nPondering );
-            break;
-        case STATE_ANALYZING:
-            SetIcon( which, nStateIcon, nAnalyzing );
-            break;
-        default:
-            SetIcon( which, nStateIcon, nClear );
-            break;
-        }
-    }
-
-    if( state_data != 0 ) {
-        DoSetWindowText( which, nStateData, state_data );
-    }
-}
-
-// back end, now the front-end wrapper ClearMemo is used, and ed no longer contains handles.
-void EngineOutputUpdate( FrontEndProgramStats * stats )
-{
-    EngineOutputData ed;
-    int clearMemo = FALSE;
-    int which;
-    int depth;
-
-    if( stats == 0 ) {
-        SetEngineState( 0, STATE_IDLE, "" );
-        SetEngineState( 1, STATE_IDLE, "" );
-        return;
-    }
-
-    if(gameMode == IcsObserving) return; // [HGM] kibitz: shut up engine if we are observing an ICS game
-
-    which = stats->which;
-    depth = stats->depth;
-
-    if( which < 0 || which > 1 || depth < 0 || stats->time < 0 || stats->pv == 0 ) {
-        return;
-    }
-
-    if( engineOutputDialog == NULL ) {
-        return;
-    }
-
-    VerifyDisplayMode();
-
-    ed.which = which;
-    ed.depth = depth;
-    ed.nodes = stats->nodes;
-    ed.score = stats->score;
-    ed.time = stats->time;
-    ed.pv = stats->pv;
-    ed.hint = stats->hint;
-    ed.an_move_index = stats->an_move_index;
-    ed.an_move_count = stats->an_move_count;
-
-    /* Get target control. [HGM] this is moved to front end, which get them from a table */
-    if( which == 0 ) {
-        ed.name = first.tidy;
-    }
-    else {
-        ed.name = second.tidy;
-    }
-
-    /* Clear memo if needed */
-    if( lastDepth[which] > depth || (lastDepth[which] == depth && depth <= 1) ) {
-        clearMemo = TRUE;
-    }
-
-    if( lastForwardMostMove[which] != forwardMostMove ) {
-        clearMemo = TRUE;
-    }
-
-    if( clearMemo ) DoClearMemo(which);
-
-    /* Update */
-    lastDepth[which] = depth;
-    lastForwardMostMove[which] = forwardMostMove;
-
-    if( ed.pv != 0 && ed.pv[0] == ' ' ) {
-        if( strncmp( ed.pv, " no PV", 6 ) == 0 ) { /* Hack on hack! :-O */
-            ed.pv = "";
-        }
-    }
-
-    UpdateControls( &ed );
-}
-
-#define ENGINE_COLOR_WHITE      'w'
-#define ENGINE_COLOR_BLACK      'b'
-#define ENGINE_COLOR_UNKNOWN    ' '
-
-// pure back end
-char GetEngineColor( int which )
-{
-    char result = ENGINE_COLOR_UNKNOWN;
-
-    if( which == 0 || which == 1 ) {
-        ChessProgramState * cps;
-
-        switch (gameMode) {
-        case MachinePlaysBlack:
-        case IcsPlayingBlack:
-            result = ENGINE_COLOR_BLACK;
-            break;
-        case MachinePlaysWhite:
-        case IcsPlayingWhite:
-            result = ENGINE_COLOR_WHITE;
-            break;
-        case AnalyzeMode:
-        case AnalyzeFile:
-            result = WhiteOnMove(forwardMostMove) ? ENGINE_COLOR_WHITE : ENGINE_COLOR_BLACK;
-            break;
-        case TwoMachinesPlay:
-            cps = (which == 0) ? &first : &second;
-            result = cps->twoMachinesColor[0];
-            result = result == 'w' ? ENGINE_COLOR_WHITE : ENGINE_COLOR_BLACK;
-            break;
-        }
-    }
-
-    return result;
-}
-
-// pure back end
-char GetActiveEngineColor()
-{
-    char result = ENGINE_COLOR_UNKNOWN;
-
-    if( gameMode == TwoMachinesPlay ) {
-        result = WhiteOnMove(forwardMostMove) ? ENGINE_COLOR_WHITE : ENGINE_COLOR_BLACK;
-    }
-
-    return result;
-}
-
-// pure back end
-static int IsEnginePondering( int which )
-{
-    int result = FALSE;
-
-    switch (gameMode) {
-    case MachinePlaysBlack:
-    case IcsPlayingBlack:
-        if( WhiteOnMove(forwardMostMove) ) result = TRUE;
-        break;
-    case MachinePlaysWhite:
-    case IcsPlayingWhite:
-        if( ! WhiteOnMove(forwardMostMove) ) result = TRUE;
-        break;
-    case TwoMachinesPlay:
-        if( GetActiveEngineColor() != ENGINE_COLOR_UNKNOWN ) {
-            if( GetEngineColor( which ) != GetActiveEngineColor() ) result = TRUE;
-        }
-        break;
-    }
-
-    return result;
-}
-
-// back end
-static void SetDisplayMode( int mode )
-{
-    if( windowMode != mode ) {
-        windowMode = mode;
-
-        ResizeWindowControls( engineOutputDialog, mode );
-    }
-}
-
-// pure back end
-static VerifyDisplayMode()
-{
-    int mode;
-
-    /* Get proper mode for current game */
-    switch( gameMode ) {
-    case AnalyzeMode:
-    case AnalyzeFile:
-    case MachinePlaysWhite:
-    case MachinePlaysBlack:
-        mode = 0;
-        break;
-    case IcsPlayingWhite:
-    case IcsPlayingBlack:
-        mode = appData.zippyPlay && opponentKibitzes; // [HGM] kibitz
-        break;
-    case TwoMachinesPlay:
-        mode = 1;
-        break;
-    default:
-        /* Do not change */
-        return;
-    }
-
-    SetDisplayMode( mode );
-}
-
-// back end. Determine what icon to se in the color-icon field, and print it
-static void SetEngineColorIcon( int which )
-{
-    char color = GetEngineColor(which);
-    int nicon = 0;
-
-    if( color == ENGINE_COLOR_BLACK )
-        nicon = nColorBlack;
-    else if( color == ENGINE_COLOR_WHITE )
-        nicon = nColorWhite;
-    else
-        nicon = nColorUnknown;
-
-    SetIcon( which, nColorIcon, nicon );
-}
-
-#define MAX_NAME_LENGTH 32
-
-// pure back end, now SetWindowText is called via wrapper DoSetWindowText
-static void UpdateControls( EngineOutputData * ed )
-{
-    int isPondering = FALSE;
-
-    char s_label[MAX_NAME_LENGTH + 32];
-    
-    char * name = ed->name;
-
-    /* Label */
-    if( name == 0 || *name == '\0' ) {
-        name = "?";
-    }
-
-    strncpy( s_label, name, MAX_NAME_LENGTH );
-    s_label[ MAX_NAME_LENGTH-1 ] = '\0';
-
-#ifdef SHOW_PONDERING
-    if( IsEnginePondering( ed->which ) ) {
-        char buf[8];
-
-        buf[0] = '\0';
-
-        if( ed->hint != 0 && *ed->hint != '\0' ) {
-            strncpy( buf, ed->hint, sizeof(buf) );
-            buf[sizeof(buf)-1] = '\0';
-        }
-        else if( ed->pv != 0 && *ed->pv != '\0' ) {
-            char * sep = strchr( ed->pv, ' ' );
-            int buflen = sizeof(buf);
-
-            if( sep != NULL ) {
-                buflen = sep - ed->pv + 1;
-                if( buflen > sizeof(buf) ) buflen = sizeof(buf);
-            }
-
-            strncpy( buf, ed->pv, buflen );
-            buf[ buflen-1 ] = '\0';
-        }
-
-        SetEngineState( ed->which, STATE_PONDERING, buf );
-    }
-    else if( gameMode == TwoMachinesPlay ) {
-        SetEngineState( ed->which, STATE_THINKING, "" );
-    }
-    else if( gameMode == AnalyzeMode || gameMode == AnalyzeFile ) {
-        char buf[64];
-        int time_secs = ed->time / 100;
-        int time_mins = time_secs / 60;
-
-        buf[0] = '\0';
-
-        if( ed->an_move_index != 0 && ed->an_move_count != 0 && *ed->hint != '\0' ) {
-            char mov[16];
-
-            strncpy( mov, ed->hint, sizeof(mov) );
-            mov[ sizeof(mov)-1 ] = '\0';
-
-            sprintf( buf, "%d/%d: %s [%02d:%02d:%02d]", ed->an_move_index, ed->an_move_count, mov, time_mins / 60, time_mins % 60, time_secs % 60 );
-        }
-
-        SetEngineState( ed->which, STATE_ANALYZING, buf );
-    }
-    else {
-        SetEngineState( ed->which, STATE_IDLE, "" );
-    }
-#endif
-
-    DoSetWindowText( ed->which, nLabel, s_label );
-
-    s_label[0] = '\0';
-
-    if( ed->time > 0 && ed->nodes > 0 ) {
-        unsigned long nps_100 = ed->nodes / ed->time;
-
-        if( nps_100 < 100000 ) {
-            sprintf( s_label, "NPS: %lu", nps_100 * 100 );
-        }
-        else {
-            sprintf( s_label, "NPS: %.1fk", nps_100 / 10.0 );
-        }
-    }
-
-    DoSetWindowText( ed->which, nLabelNPS, s_label );
-
-    /* Memo */
-    if( ed->pv != 0 && *ed->pv != '\0' ) {
-        char s_nodes[24];
-        char s_score[16];
-        char s_time[24];
-        char buf[256];
-        int buflen;
-        int time_secs = ed->time / 100;
-        int time_cent = ed->time % 100;
-
-        /* Nodes */
-        if( ed->nodes < 1000000 ) {
-            sprintf( s_nodes, "%lu", ed->nodes );
-        }
-        else {
-            sprintf( s_nodes, "%.1fM", ed->nodes / 1000000.0 );
-        }
-
-        /* Score */
-        if( ed->score > 0 ) {
-            sprintf( s_score, "+%.2f", ed->score / 100.0 );
-        }
-        else {
-            sprintf( s_score, "%.2f", ed->score / 100.0 );
-        }
-
-        /* Time */
-        sprintf( s_time, "%d:%02d.%02d", time_secs / 60, time_secs % 60, time_cent );
-
-        /* Put all together... */
-        sprintf( buf, "%3d\t%s\t%s\t%s\t", ed->depth, s_score, s_nodes, s_time );
-
-        /* Add PV */
-        buflen = strlen(buf);
-
-        strncpy( buf + buflen, ed->pv, sizeof(buf) - buflen );
-
-        buf[ sizeof(buf) - 3 ] = '\0';
-
-        strcat( buf + buflen, "\r\n" );
-
-        /* Update memo */
-        InsertIntoMemo( ed->which, buf );
-    }
-
-    /* Colors */
-    SetEngineColorIcon( ed->which );
-}
-
-// back end
-int EngineOutputIsUp()
-{
-    return engineOutputDialogUp;
-}
-
-// [HGM] kibitz: write kibitz line; split window for it if necessary
-void OutputKibitz(int window, char *text)
-{
-       if(!EngineOutputIsUp()) return;
-       if(!opponentKibitzes) { // on first kibitz of game, clear memos
-           DoClearMemo(1);
-           if(gameMode == IcsObserving) DoClearMemo(0);
-       }
-       opponentKibitzes = TRUE; // this causes split window DisplayMode in ICS modes.
-       VerifyDisplayMode();
-       if(gameMode == IcsObserving) {
-           DoSetWindowText(0, nLabel, gameInfo.white);
-           SetIcon( 0, nColorIcon,  nColorWhite);
-           SetIcon( 0, nStateIcon,  nClear);
-       }
-       DoSetWindowText(1, nLabel, gameMode == IcsPlayingBlack ? gameInfo.white : gameInfo.black); // opponent name
-       SetIcon( 1, nColorIcon,  gameMode == IcsPlayingBlack ? nColorWhite : nColorBlack);
-       SetIcon( 1, nStateIcon,  nClear);
-       InsertIntoMemo(window-1, text);
-}
-
+/*\r
+ * Engine output (PV)\r
+ *\r
+ * Author: Alessandro Scotti (Dec 2005)\r
+ *\r
+ * ------------------------------------------------------------------------\r
+ * This program is free software; you can redistribute it and/or modify\r
+ * it under the terms of the GNU General Public License as published by\r
+ * the Free Software Foundation; either version 2 of the License, or\r
+ * (at your option) any later version.\r
+ *\r
+ * This program is distributed in the hope that it will be useful,\r
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
+ * GNU General Public License for more details.\r
+ *\r
+ * You should have received a copy of the GNU General Public License\r
+ * along with this program; if not, write to the Free Software\r
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.\r
+ * ------------------------------------------------------------------------\r
+ */\r
+#include "config.h"\r
+\r
+#include <windows.h> /* required for all Windows applications */\r
+#include <richedit.h>\r
+#include <stdio.h>\r
+#include <stdlib.h>\r
+#include <malloc.h>\r
+#include <commdlg.h>\r
+#include <dlgs.h>\r
+\r
+#include "common.h"\r
+#include "winboard.h"\r
+#include "frontend.h"\r
+#include "backend.h"\r
+\r
+#include "wsnap.h"\r
+\r
+// [HGM] define numbers to indicate icons, for referring to them in platform-independent way\r
+#define nColorBlack   1\r
+#define nColorWhite   2\r
+#define nColorUnknown 3\r
+#define nClear        4\r
+#define nPondering    5\r
+#define nThinking     6\r
+#define nAnalyzing    7\r
+\r
+HICON icons[8]; // [HGM] this front-end array translates back-end icon indicator to handle\r
+\r
+// [HGM] same for output fields (note that there are two of each type, one per color)\r
+#define nColorIcon 1\r
+#define nStateIcon 2\r
+#define nLabel     3\r
+#define nStateData 4\r
+#define nLabelNPS  5\r
+#define nMemo      6\r
+\r
+HWND outputField[2][7]; // [HGM] front-end array to translate output field to window handle\r
+\r
+void EngineOutputPopUp();\r
+void EngineOutputPopDown();\r
+int  EngineOutputIsUp();\r
+\r
+#define SHOW_PONDERING\r
+\r
+/* Imports from backend.c */\r
+char * SavePart(char *str);\r
+extern int opponentKibitzes;\r
+\r
+/* Imports from winboard.c */\r
+extern HWND engineOutputDialog;\r
+extern int     engineOutputDialogUp;\r
+\r
+extern HINSTANCE hInst;\r
+extern HWND hwndMain;\r
+\r
+extern WindowPlacement wpEngineOutput;\r
+\r
+/* Module variables */\r
+#define H_MARGIN            2\r
+#define V_MARGIN            2\r
+#define LABEL_V_DISTANCE    1   /* Distance between label and memo */\r
+#define SPLITTER_SIZE       4   /* Distance between first memo and second label */\r
+\r
+#define ICON_SIZE           14\r
+\r
+#define STATE_UNKNOWN   -1\r
+#define STATE_THINKING   0\r
+#define STATE_IDLE       1\r
+#define STATE_PONDERING  2\r
+#define STATE_ANALYZING  3\r
+\r
+static int  windowMode = 1;\r
+\r
+static int  needInit = TRUE;\r
+\r
+static int  lastDepth[2] = { -1, -1 };\r
+static int  lastForwardMostMove[2] = { -1, -1 };\r
+static int  engineState[2] = { -1, -1 };\r
+\r
+typedef struct {\r
+//    HWND hColorIcon; // [HGM] the output-control handles are no loger passed,\r
+//    HWND hLabel;     //       to give better front-end / back-end separation\r
+//    HWND hStateIcon; //       the front-end routines now get them from a (front-end)\r
+//    HWND hStateData; //       table, indexed by output-field indicators.\r
+//    HWND hLabelNPS;\r
+//    HWND hMemo;\r
+    char * name;\r
+    int which;\r
+    int depth;\r
+    u64 nodes;\r
+    int score;\r
+    int time;\r
+    char * pv;\r
+    char * hint;\r
+    int an_move_index;\r
+    int an_move_count;\r
+} EngineOutputData;\r
+\r
+static VerifyDisplayMode();\r
+static void UpdateControls( EngineOutputData * ed );\r
+static SetEngineState( int which, int state, char * state_data );\r
+\r
+// front end\r
+static HICON LoadIconEx( int id )\r
+{\r
+    return LoadImage( hInst, MAKEINTRESOURCE(id), IMAGE_ICON, ICON_SIZE, ICON_SIZE, 0 );\r
+}\r
+\r
+// [HGM] the platform-dependent way of indicating where output should go is now all\r
+// concentrated here, where a table of platform-dependent handles are initialized.\r
+// This cleanses most other routines of front-end stuff, so they can go into the back end.\r
+static void InitializeEngineOutput()\r
+{\r
+ //   if( needInit ) { // needInit was already tested before call\r
+       // [HGM] made this into a table, rather than separate global variables\r
+        icons[nColorBlack]   = LoadIconEx( IDI_BLACK_14 );\r
+        icons[nColorWhite]   = LoadIconEx( IDI_WHITE_14 );\r
+        icons[nColorUnknown] = LoadIconEx( IDI_UNKNOWN_14 );\r
+        icons[nClear]        = LoadIconEx( IDI_TRANS_14 );\r
+        icons[nPondering]    = LoadIconEx( IDI_PONDER_14 );\r
+        icons[nThinking]     = LoadIconEx( IDI_CLOCK_14 );\r
+        icons[nAnalyzing]    = LoadIconEx( IDI_ANALYZE2_14 );\r
+\r
+       // [HGM] also make a table of handles to output controls\r
+       // Note that engineOutputDialog must be defined first!\r
+        outputField[0][nColorIcon] = GetDlgItem( engineOutputDialog, IDC_Color1 );\r
+        outputField[0][nLabel]     = GetDlgItem( engineOutputDialog, IDC_EngineLabel1 );\r
+        outputField[0][nStateIcon] = GetDlgItem( engineOutputDialog, IDC_StateIcon1 );\r
+        outputField[0][nStateData] = GetDlgItem( engineOutputDialog, IDC_StateData1 );\r
+        outputField[0][nLabelNPS]  = GetDlgItem( engineOutputDialog, IDC_Engine1_NPS );\r
+        outputField[0][nMemo]      = GetDlgItem( engineOutputDialog, IDC_EngineMemo1 );\r
+\r
+        outputField[1][nColorIcon] = GetDlgItem( engineOutputDialog, IDC_Color2 );\r
+        outputField[1][nLabel]     = GetDlgItem( engineOutputDialog, IDC_EngineLabel2 );\r
+        outputField[1][nStateIcon] = GetDlgItem( engineOutputDialog, IDC_StateIcon2 );\r
+        outputField[1][nStateData] = GetDlgItem( engineOutputDialog, IDC_StateData2 );\r
+        outputField[1][nLabelNPS]  = GetDlgItem( engineOutputDialog, IDC_Engine2_NPS );\r
+        outputField[1][nMemo]      = GetDlgItem( engineOutputDialog, IDC_EngineMemo2 );\r
+//        needInit = FALSE;\r
+//    }\r
+}\r
+\r
+// front end\r
+static void SetControlPos( HWND hDlg, int id, int x, int y, int width, int height )\r
+{\r
+    HWND hControl = GetDlgItem( hDlg, id );\r
+\r
+    SetWindowPos( hControl, HWND_TOP, x, y, width, height, SWP_NOZORDER );\r
+}\r
+\r
+#define HIDDEN_X    20000\r
+#define HIDDEN_Y    20000\r
+\r
+// front end\r
+static void HideControl( HWND hDlg, int id )\r
+{\r
+    HWND hControl = GetDlgItem( hDlg, id );\r
+    RECT rc;\r
+\r
+    GetWindowRect( hControl, &rc );\r
+\r
+    /* \r
+        Avoid hiding an already hidden control, because that causes many\r
+        unnecessary WM_ERASEBKGND messages!\r
+    */\r
+    if( rc.left != HIDDEN_X || rc.top != HIDDEN_Y ) {\r
+        SetControlPos( hDlg, id, 20000, 20000, 100, 100 );\r
+    }\r
+}\r
+\r
+// front end, although we might make GetWindowRect front end instead\r
+static int GetControlWidth( HWND hDlg, int id )\r
+{\r
+    RECT rc;\r
+\r
+    GetWindowRect( GetDlgItem( hDlg, id ), &rc );\r
+\r
+    return rc.right - rc.left;\r
+}\r
+\r
+// front end?\r
+static int GetControlHeight( HWND hDlg, int id )\r
+{\r
+    RECT rc;\r
+\r
+    GetWindowRect( GetDlgItem( hDlg, id ), &rc );\r
+\r
+    return rc.bottom - rc.top;\r
+}\r
+\r
+static int GetHeaderHeight()\r
+{\r
+    int result = GetControlHeight( engineOutputDialog, IDC_EngineLabel1 );\r
+\r
+    if( result < ICON_SIZE ) result = ICON_SIZE;\r
+\r
+    return result;\r
+}\r
+\r
+// The size calculations should be backend? If setControlPos is a platform-dependent way of doing things,\r
+// a platform-independent wrapper for it should be supplied.\r
+static void PositionControlSet( HWND hDlg, int x, int y, int clientWidth, int memoHeight, int idColor, int idEngineLabel, int idNPS, int idMemo, int idStateIcon, int idStateData )\r
+{\r
+    int label_x = x + ICON_SIZE + H_MARGIN;\r
+    int label_h = GetControlHeight( hDlg, IDC_EngineLabel1 );\r
+    int label_y = y + ICON_SIZE - label_h;\r
+    int nps_w = GetControlWidth( hDlg, IDC_Engine1_NPS );\r
+    int nps_x = clientWidth - H_MARGIN - nps_w;\r
+    int state_data_w = GetControlWidth( hDlg, IDC_StateData1 );\r
+    int state_data_x = nps_x - H_MARGIN - state_data_w;\r
+    int state_icon_x = state_data_x - ICON_SIZE - 2;\r
+    int max_w = clientWidth - 2*H_MARGIN;\r
+    int memo_y = y + ICON_SIZE + LABEL_V_DISTANCE;\r
+\r
+    SetControlPos( hDlg, idColor, x, y, ICON_SIZE, ICON_SIZE );\r
+    SetControlPos( hDlg, idEngineLabel, label_x, label_y, state_icon_x - label_x, label_h );\r
+    SetControlPos( hDlg, idStateIcon, state_icon_x, y, ICON_SIZE, ICON_SIZE );\r
+    SetControlPos( hDlg, idStateData, state_data_x, label_y, state_data_w, label_h );\r
+    SetControlPos( hDlg, idNPS, nps_x, label_y, nps_w, label_h );\r
+    SetControlPos( hDlg, idMemo, x, memo_y, max_w, memoHeight );\r
+}\r
+\r
+// Also here some of the size calculations should go to the back end, and their actual application to a front-end routine\r
+static void ResizeWindowControls( HWND hDlg, int mode )\r
+{\r
+    RECT rc;\r
+    int headerHeight = GetHeaderHeight();\r
+    int labelHeight = GetControlHeight( hDlg, IDC_EngineLabel1 );\r
+    int labelOffset = H_MARGIN + ICON_SIZE + H_MARGIN;\r
+    int labelDeltaY = ICON_SIZE - labelHeight;\r
+    int clientWidth;\r
+    int clientHeight;\r
+    int maxControlWidth;\r
+    int npsWidth;\r
+\r
+    /* Initialize variables */\r
+    GetClientRect( hDlg, &rc );\r
+\r
+    clientWidth = rc.right - rc.left;\r
+    clientHeight = rc.bottom - rc.top;\r
+\r
+    maxControlWidth = clientWidth - 2*H_MARGIN;\r
+\r
+    npsWidth = GetControlWidth( hDlg, IDC_Engine1_NPS );\r
+\r
+    /* Resize controls */\r
+    if( mode == 0 ) {\r
+        /* One engine */\r
+        PositionControlSet( hDlg, H_MARGIN, V_MARGIN, \r
+            clientWidth, \r
+            clientHeight - V_MARGIN - LABEL_V_DISTANCE - headerHeight- V_MARGIN,\r
+            IDC_Color1, IDC_EngineLabel1, IDC_Engine1_NPS, IDC_EngineMemo1, IDC_StateIcon1, IDC_StateData1 );\r
+\r
+        /* Hide controls for the second engine */\r
+        HideControl( hDlg, IDC_Color2 );\r
+        HideControl( hDlg, IDC_EngineLabel2 );\r
+        HideControl( hDlg, IDC_StateIcon2 );\r
+        HideControl( hDlg, IDC_StateData2 );\r
+        HideControl( hDlg, IDC_Engine2_NPS );\r
+        HideControl( hDlg, IDC_EngineMemo2 );\r
+        SendDlgItemMessage( hDlg, IDC_EngineMemo2, WM_SETTEXT, 0, (LPARAM) "" );\r
+        /* TODO: we should also hide/disable them!!! what about tab stops?!?! */\r
+    }\r
+    else {\r
+        /* Two engines */\r
+        int memo_h = (clientHeight - headerHeight*2 - V_MARGIN*2 - LABEL_V_DISTANCE*2 - SPLITTER_SIZE) / 2;\r
+        int header1_y = V_MARGIN;\r
+        int header2_y = V_MARGIN + headerHeight + LABEL_V_DISTANCE + memo_h + SPLITTER_SIZE;\r
+\r
+        PositionControlSet( hDlg, H_MARGIN, header1_y, clientWidth, memo_h,\r
+            IDC_Color1, IDC_EngineLabel1, IDC_Engine1_NPS, IDC_EngineMemo1, IDC_StateIcon1, IDC_StateData1 );\r
+\r
+        PositionControlSet( hDlg, H_MARGIN, header2_y, clientWidth, memo_h,\r
+            IDC_Color2, IDC_EngineLabel2, IDC_Engine2_NPS, IDC_EngineMemo2, IDC_StateIcon2, IDC_StateData2 );\r
+    }\r
+\r
+    InvalidateRect( GetDlgItem(hDlg,IDC_EngineMemo1), NULL, FALSE );\r
+    InvalidateRect( GetDlgItem(hDlg,IDC_EngineMemo2), NULL, FALSE );\r
+}\r
+\r
+// front end. Actual printing of PV lines into the output field\r
+static void InsertIntoMemo( int which, char * text )\r
+{\r
+    SendMessage( outputField[which][nMemo], EM_SETSEL, 0, 0 );\r
+\r
+    SendMessage( outputField[which][nMemo], EM_REPLACESEL, (WPARAM) FALSE, (LPARAM) text );\r
+}\r
+\r
+// front end. Associates an icon with an output field ("control" in Windows jargon).\r
+// [HGM] let it find out the output field from the 'which' number by itself\r
+static void SetIcon( int which, int field, int nIcon )\r
+{\r
+\r
+    if( nIcon != 0 ) {\r
+        SendMessage( outputField[which][field], STM_SETICON, (WPARAM) icons[nIcon], 0 );\r
+    }\r
+}\r
+\r
+// front end wrapper for SetWindowText, taking control number in stead of handle\r
+void DoSetWindowText(int which, int field, char *s_label)\r
+{\r
+    SetWindowText( outputField[which][field], s_label );\r
+}\r
+\r
+// This seems pure front end\r
+LRESULT CALLBACK EngineOutputProc( HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam )\r
+{\r
+    static SnapData sd;\r
+\r
+    switch (message) {\r
+    case WM_INITDIALOG:\r
+        if( engineOutputDialog == NULL ) {\r
+            engineOutputDialog = hDlg;\r
+\r
+            RestoreWindowPlacement( hDlg, &wpEngineOutput ); /* Restore window placement */\r
+\r
+            ResizeWindowControls( hDlg, windowMode );\r
+\r
+            SetEngineState( 0, STATE_IDLE, "" );\r
+            SetEngineState( 1, STATE_IDLE, "" );\r
+        }\r
+\r
+        return FALSE;\r
+\r
+    case WM_COMMAND:\r
+        switch (LOWORD(wParam)) {\r
+        case IDOK:\r
+          EndDialog(hDlg, TRUE);\r
+          return TRUE;\r
+\r
+        case IDCANCEL:\r
+          EndDialog(hDlg, FALSE);\r
+          return TRUE;\r
+\r
+        default:\r
+          break;\r
+        }\r
+\r
+        break;\r
+\r
+    case WM_GETMINMAXINFO:\r
+        {\r
+            MINMAXINFO * mmi = (MINMAXINFO *) lParam;\r
+        \r
+            mmi->ptMinTrackSize.x = 100;\r
+            mmi->ptMinTrackSize.y = 160;\r
+        }\r
+        break;\r
+\r
+    case WM_CLOSE:\r
+        EngineOutputPopDown();\r
+        break;\r
+\r
+    case WM_SIZE:\r
+        ResizeWindowControls( hDlg, windowMode );\r
+        break;\r
+\r
+    case WM_ENTERSIZEMOVE:\r
+        return OnEnterSizeMove( &sd, hDlg, wParam, lParam );\r
+\r
+    case WM_SIZING:\r
+        return OnSizing( &sd, hDlg, wParam, lParam );\r
+\r
+    case WM_MOVING:\r
+        return OnMoving( &sd, hDlg, wParam, lParam );\r
+\r
+    case WM_EXITSIZEMOVE:\r
+        return OnExitSizeMove( &sd, hDlg, wParam, lParam );\r
+    }\r
+\r
+    return FALSE;\r
+}\r
+\r
+// front end\r
+void EngineOutputPopUp()\r
+{\r
+  FARPROC lpProc;\r
+  \r
+  CheckMenuItem(GetMenu(hwndMain), IDM_ShowEngineOutput, MF_CHECKED);\r
+\r
+  if( engineOutputDialog ) {\r
+    SendMessage( engineOutputDialog, WM_INITDIALOG, 0, 0 );\r
+\r
+    if( ! engineOutputDialogUp ) {\r
+        ShowWindow(engineOutputDialog, SW_SHOW);\r
+    }\r
+  }\r
+  else {\r
+    lpProc = MakeProcInstance( (FARPROC) EngineOutputProc, hInst );\r
+\r
+    /* Note to self: dialog must have the WS_VISIBLE style set, otherwise it's not shown! */\r
+    CreateDialog( hInst, MAKEINTRESOURCE(DLG_EngineOutput), hwndMain, (DLGPROC)lpProc );\r
+\r
+    FreeProcInstance(lpProc);\r
+  }\r
+\r
+  // [HGM] displaced to after creation of dialog, to allow initialization of output fields\r
+  if( needInit ) {\r
+      InitializeEngineOutput();\r
+      needInit = FALSE;\r
+  }\r
+\r
+  engineOutputDialogUp = TRUE;\r
+}\r
+\r
+// front end\r
+void EngineOutputPopDown()\r
+{\r
+  CheckMenuItem(GetMenu(hwndMain), IDM_ShowEngineOutput, MF_UNCHECKED);\r
+\r
+  if( engineOutputDialog ) {\r
+      ShowWindow(engineOutputDialog, SW_HIDE);\r
+  }\r
+\r
+  engineOutputDialogUp = FALSE;\r
+}\r
+\r
+// front end. [HGM] Takes handle of output control from table, so only number is passed\r
+void DoClearMemo(int which)\r
+{\r
+        SendMessage( outputField[which][nMemo], WM_SETTEXT, 0, (LPARAM) "" );\r
+}\r
+\r
+//------------------------ pure back-end routines -------------------------------\r
+\r
+\r
+// back end, due to front-end wrapper for SetWindowText, and new SetIcon arguments\r
+static SetEngineState( int which, int state, char * state_data )\r
+{\r
+    int x_which = 1 - which;\r
+\r
+    if( engineState[ which ] != state ) {\r
+        engineState[ which ] = state;\r
+\r
+        switch( state ) {\r
+        case STATE_THINKING:\r
+            SetIcon( which, nStateIcon, nThinking );\r
+            if( engineState[ x_which ] == STATE_THINKING ) {\r
+                SetEngineState( x_which, STATE_IDLE, "" );\r
+            }\r
+            break;\r
+        case STATE_PONDERING:\r
+            SetIcon( which, nStateIcon, nPondering );\r
+            break;\r
+        case STATE_ANALYZING:\r
+            SetIcon( which, nStateIcon, nAnalyzing );\r
+            break;\r
+        default:\r
+            SetIcon( which, nStateIcon, nClear );\r
+            break;\r
+        }\r
+    }\r
+\r
+    if( state_data != 0 ) {\r
+        DoSetWindowText( which, nStateData, state_data );\r
+    }\r
+}\r
+\r
+// back end, now the front-end wrapper ClearMemo is used, and ed no longer contains handles.\r
+void EngineOutputUpdate( FrontEndProgramStats * stats )\r
+{\r
+    EngineOutputData ed;\r
+    int clearMemo = FALSE;\r
+    int which;\r
+    int depth;\r
+\r
+    if( stats == 0 ) {\r
+        SetEngineState( 0, STATE_IDLE, "" );\r
+        SetEngineState( 1, STATE_IDLE, "" );\r
+        return;\r
+    }\r
+\r
+    if(gameMode == IcsObserving && !appData.icsEngineAnalyze)\r
+       return; // [HGM] kibitz: shut up engine if we are observing an ICS game\r
+\r
+    which = stats->which;\r
+    depth = stats->depth;\r
+\r
+    if( which < 0 || which > 1 || depth < 0 || stats->time < 0 || stats->pv == 0 ) {\r
+        return;\r
+    }\r
+\r
+    if( engineOutputDialog == NULL ) {\r
+        return;\r
+    }\r
+\r
+    VerifyDisplayMode();\r
+\r
+    ed.which = which;\r
+    ed.depth = depth;\r
+    ed.nodes = stats->nodes;\r
+    ed.score = stats->score;\r
+    ed.time = stats->time;\r
+    ed.pv = stats->pv;\r
+    ed.hint = stats->hint;\r
+    ed.an_move_index = stats->an_move_index;\r
+    ed.an_move_count = stats->an_move_count;\r
+\r
+    /* Get target control. [HGM] this is moved to front end, which get them from a table */\r
+    if( which == 0 ) {\r
+        ed.name = first.tidy;\r
+    }\r
+    else {\r
+        ed.name = second.tidy;\r
+    }\r
+\r
+    /* Clear memo if needed */\r
+    if( lastDepth[which] > depth || (lastDepth[which] == depth && depth <= 1) ) {\r
+        clearMemo = TRUE;\r
+    }\r
+\r
+    if( lastForwardMostMove[which] != forwardMostMove ) {\r
+        clearMemo = TRUE;\r
+    }\r
+\r
+    if( clearMemo ) DoClearMemo(which);\r
+\r
+    /* Update */\r
+    lastDepth[which] = depth;\r
+    lastForwardMostMove[which] = forwardMostMove;\r
+\r
+    if( ed.pv != 0 && ed.pv[0] == ' ' ) {\r
+        if( strncmp( ed.pv, " no PV", 6 ) == 0 ) { /* Hack on hack! :-O */\r
+            ed.pv = "";\r
+        }\r
+    }\r
+\r
+    UpdateControls( &ed );\r
+}\r
+\r
+#define ENGINE_COLOR_WHITE      'w'\r
+#define ENGINE_COLOR_BLACK      'b'\r
+#define ENGINE_COLOR_UNKNOWN    ' '\r
+\r
+// pure back end\r
+char GetEngineColor( int which )\r
+{\r
+    char result = ENGINE_COLOR_UNKNOWN;\r
+\r
+    if( which == 0 || which == 1 ) {\r
+        ChessProgramState * cps;\r
+\r
+        switch (gameMode) {\r
+        case MachinePlaysBlack:\r
+        case IcsPlayingBlack:\r
+            result = ENGINE_COLOR_BLACK;\r
+            break;\r
+        case MachinePlaysWhite:\r
+        case IcsPlayingWhite:\r
+            result = ENGINE_COLOR_WHITE;\r
+            break;\r
+        case AnalyzeMode:\r
+        case AnalyzeFile:\r
+            result = WhiteOnMove(forwardMostMove) ? ENGINE_COLOR_WHITE : ENGINE_COLOR_BLACK;\r
+            break;\r
+        case TwoMachinesPlay:\r
+            cps = (which == 0) ? &first : &second;\r
+            result = cps->twoMachinesColor[0];\r
+            result = result == 'w' ? ENGINE_COLOR_WHITE : ENGINE_COLOR_BLACK;\r
+            break;\r
+        }\r
+    }\r
+\r
+    return result;\r
+}\r
+\r
+// pure back end\r
+char GetActiveEngineColor()\r
+{\r
+    char result = ENGINE_COLOR_UNKNOWN;\r
+\r
+    if( gameMode == TwoMachinesPlay ) {\r
+        result = WhiteOnMove(forwardMostMove) ? ENGINE_COLOR_WHITE : ENGINE_COLOR_BLACK;\r
+    }\r
+\r
+    return result;\r
+}\r
+\r
+// pure back end\r
+static int IsEnginePondering( int which )\r
+{\r
+    int result = FALSE;\r
+\r
+    switch (gameMode) {\r
+    case MachinePlaysBlack:\r
+    case IcsPlayingBlack:\r
+        if( WhiteOnMove(forwardMostMove) ) result = TRUE;\r
+        break;\r
+    case MachinePlaysWhite:\r
+    case IcsPlayingWhite:\r
+        if( ! WhiteOnMove(forwardMostMove) ) result = TRUE;\r
+        break;\r
+    case TwoMachinesPlay:\r
+        if( GetActiveEngineColor() != ENGINE_COLOR_UNKNOWN ) {\r
+            if( GetEngineColor( which ) != GetActiveEngineColor() ) result = TRUE;\r
+        }\r
+        break;\r
+    }\r
+\r
+    return result;\r
+}\r
+\r
+// back end\r
+static void SetDisplayMode( int mode )\r
+{\r
+    if( windowMode != mode ) {\r
+        windowMode = mode;\r
+\r
+        ResizeWindowControls( engineOutputDialog, mode );\r
+    }\r
+}\r
+\r
+// pure back end\r
+static VerifyDisplayMode()\r
+{\r
+    int mode;\r
+\r
+    /* Get proper mode for current game */\r
+    switch( gameMode ) {\r
+    case IcsObserving:    // [HGM] ICS analyze\r
+       if(!appData.icsEngineAnalyze) return;\r
+    case AnalyzeMode:\r
+    case AnalyzeFile:\r
+    case MachinePlaysWhite:\r
+    case MachinePlaysBlack:\r
+        mode = 0;\r
+        break;\r
+    case IcsPlayingWhite:\r
+    case IcsPlayingBlack:\r
+        mode = appData.zippyPlay && opponentKibitzes; // [HGM] kibitz\r
+        break;\r
+    case TwoMachinesPlay:\r
+        mode = 1;\r
+        break;\r
+    default:\r
+        /* Do not change */\r
+        return;\r
+    }\r
+\r
+    SetDisplayMode( mode );\r
+}\r
+\r
+// back end. Determine what icon to se in the color-icon field, and print it\r
+static void SetEngineColorIcon( int which )\r
+{\r
+    char color = GetEngineColor(which);\r
+    int nicon = 0;\r
+\r
+    if( color == ENGINE_COLOR_BLACK )\r
+        nicon = nColorBlack;\r
+    else if( color == ENGINE_COLOR_WHITE )\r
+        nicon = nColorWhite;\r
+    else\r
+        nicon = nColorUnknown;\r
+\r
+    SetIcon( which, nColorIcon, nicon );\r
+}\r
+\r
+#define MAX_NAME_LENGTH 32\r
+\r
+// pure back end, now SetWindowText is called via wrapper DoSetWindowText\r
+static void UpdateControls( EngineOutputData * ed )\r
+{\r
+    int isPondering = FALSE;\r
+\r
+    char s_label[MAX_NAME_LENGTH + 32];\r
+    \r
+    char * name = ed->name;\r
+\r
+    /* Label */\r
+    if( name == 0 || *name == '\0' ) {\r
+        name = "?";\r
+    }\r
+\r
+    strncpy( s_label, name, MAX_NAME_LENGTH );\r
+    s_label[ MAX_NAME_LENGTH-1 ] = '\0';\r
+\r
+#ifdef SHOW_PONDERING\r
+    if( IsEnginePondering( ed->which ) ) {\r
+        char buf[8];\r
+\r
+        buf[0] = '\0';\r
+\r
+        if( ed->hint != 0 && *ed->hint != '\0' ) {\r
+            strncpy( buf, ed->hint, sizeof(buf) );\r
+            buf[sizeof(buf)-1] = '\0';\r
+        }\r
+        else if( ed->pv != 0 && *ed->pv != '\0' ) {\r
+            char * sep = strchr( ed->pv, ' ' );\r
+            int buflen = sizeof(buf);\r
+\r
+            if( sep != NULL ) {\r
+                buflen = sep - ed->pv + 1;\r
+                if( buflen > sizeof(buf) ) buflen = sizeof(buf);\r
+            }\r
+\r
+            strncpy( buf, ed->pv, buflen );\r
+            buf[ buflen-1 ] = '\0';\r
+        }\r
+\r
+        SetEngineState( ed->which, STATE_PONDERING, buf );\r
+    }\r
+    else if( gameMode == TwoMachinesPlay ) {\r
+        SetEngineState( ed->which, STATE_THINKING, "" );\r
+    }\r
+    else if( gameMode == AnalyzeMode || gameMode == AnalyzeFile\r
+         || gameMode == IcsObserving && appData.icsEngineAnalyze) { // [HGM] ICS-analyze\r
+        char buf[64];\r
+        int time_secs = ed->time / 100;\r
+        int time_mins = time_secs / 60;\r
+\r
+        buf[0] = '\0';\r
+\r
+        if( ed->an_move_index != 0 && ed->an_move_count != 0 && *ed->hint != '\0' ) {\r
+            char mov[16];\r
+\r
+            strncpy( mov, ed->hint, sizeof(mov) );\r
+            mov[ sizeof(mov)-1 ] = '\0';\r
+\r
+            sprintf( buf, "%d/%d: %s [%02d:%02d:%02d]", ed->an_move_index, ed->an_move_count, mov, time_mins / 60, time_mins % 60, time_secs % 60 );\r
+        }\r
+\r
+        SetEngineState( ed->which, STATE_ANALYZING, buf );\r
+    }\r
+    else {\r
+        SetEngineState( ed->which, STATE_IDLE, "" );\r
+    }\r
+#endif\r
+\r
+    DoSetWindowText( ed->which, nLabel, s_label );\r
+\r
+    s_label[0] = '\0';\r
+\r
+    if( ed->time > 0 && ed->nodes > 0 ) {\r
+        unsigned long nps_100 = ed->nodes / ed->time;\r
+\r
+        if( nps_100 < 100000 ) {\r
+            sprintf( s_label, "NPS: %lu", nps_100 * 100 );\r
+        }\r
+        else {\r
+            sprintf( s_label, "NPS: %.1fk", nps_100 / 10.0 );\r
+        }\r
+    }\r
+\r
+    DoSetWindowText( ed->which, nLabelNPS, s_label );\r
+\r
+    /* Memo */\r
+    if( ed->pv != 0 && *ed->pv != '\0' ) {\r
+        char s_nodes[24];\r
+        char s_score[16];\r
+        char s_time[24];\r
+        char buf[256];\r
+        int buflen;\r
+        int time_secs = ed->time / 100;\r
+        int time_cent = ed->time % 100;\r
+\r
+        /* Nodes */\r
+        if( ed->nodes < 1000000 ) {\r
+            sprintf( s_nodes, u64Display, ed->nodes );\r
+        }\r
+        else {\r
+            sprintf( s_nodes, "%.1fM", u64ToDouble(ed->nodes) / 1000000.0 );\r
+        }\r
+\r
+        /* Score */\r
+        if( ed->score > 0 ) {\r
+            sprintf( s_score, "+%.2f", ed->score / 100.0 );\r
+        }\r
+        else {\r
+            sprintf( s_score, "%.2f", ed->score / 100.0 );\r
+        }\r
+\r
+        /* Time */\r
+        sprintf( s_time, "%d:%02d.%02d", time_secs / 60, time_secs % 60, time_cent );\r
+\r
+        /* Put all together... */\r
+        sprintf( buf, "%3d\t%s\t%s\t%s\t", ed->depth, s_score, s_nodes, s_time );\r
+\r
+        /* Add PV */\r
+        buflen = strlen(buf);\r
+\r
+        strncpy( buf + buflen, ed->pv, sizeof(buf) - buflen );\r
+\r
+        buf[ sizeof(buf) - 3 ] = '\0';\r
+\r
+        strcat( buf + buflen, "\r\n" );\r
+\r
+        /* Update memo */\r
+        InsertIntoMemo( ed->which, buf );\r
+    }\r
+\r
+    /* Colors */\r
+    SetEngineColorIcon( ed->which );\r
+}\r
+\r
+// back end\r
+int EngineOutputIsUp()\r
+{\r
+    return engineOutputDialogUp;\r
+}\r
+\r
+// [HGM] kibitz: write kibitz line; split window for it if necessary\r
+void OutputKibitz(int window, char *text)\r
+{\r
+       if(!EngineOutputIsUp()) return;\r
+       if(!opponentKibitzes) { // on first kibitz of game, clear memos\r
+           DoClearMemo(1);\r
+           if(gameMode == IcsObserving) DoClearMemo(0);\r
+       }\r
+       opponentKibitzes = TRUE; // this causes split window DisplayMode in ICS modes.\r
+       VerifyDisplayMode();\r
+       if(gameMode == IcsObserving) {\r
+           DoSetWindowText(0, nLabel, gameInfo.white);\r
+           SetIcon( 0, nColorIcon,  nColorWhite);\r
+           SetIcon( 0, nStateIcon,  nClear);\r
+       }\r
+       DoSetWindowText(1, nLabel, gameMode == IcsPlayingBlack ? gameInfo.white : gameInfo.black); // opponent name\r
+       SetIcon( 1, nColorIcon,  gameMode == IcsPlayingBlack ? nColorWhite : nColorBlack);\r
+       SetIcon( 1, nStateIcon,  nClear);\r
+       InsertIntoMemo(window-1, text);\r
+}\r
index 6ad5def..fb64ff7 100644 (file)
@@ -688,11 +688,6 @@ InitInstance(HINSTANCE hInstance, int nCmdShow, LPSTR lpCmdLine)
 \r
   mysrandom( (unsigned) time(NULL) );\r
 \r
-  /* Make a console window if needed */\r
-  if (appData.icsActive) {\r
-    ConsoleCreate();\r
-  }\r
-\r
   /* [AS] Restore layout */\r
   if( wpMoveHistory.visible ) {\r
       MoveHistoryPopUp();\r
@@ -1277,6 +1272,7 @@ ArgDescriptor argDescriptors[] = {
   { "secondAccumulateTC", ArgInt, (LPVOID) &appData.secondAccumulateTC, FALSE },\r
   { "firstNPS", ArgInt, (LPVOID) &appData.firstNPS, FALSE },\r
   { "secondNPS", ArgInt, (LPVOID) &appData.secondNPS, FALSE },\r
+  { "noGUI", ArgTrue, (LPVOID) &appData.noGUI, FALSE },\r
   { NULL, ArgNone, NULL, FALSE }\r
 };\r
 \r
@@ -1838,6 +1834,7 @@ InitAppData(LPSTR lpCmdLine)
   appData.reuseFirst = TRUE;\r
   appData.reuseSecond = TRUE;\r
   appData.blindfold = FALSE;\r
+  appData.icsEngineAnalyze = FALSE;\r
   dcb.DCBlength = sizeof(DCB);\r
   dcb.BaudRate = 9600;\r
   dcb.fBinary = TRUE;\r
@@ -1852,7 +1849,12 @@ InitAppData(LPSTR lpCmdLine)
   dcb.fNull = FALSE;\r
   dcb.fRtsControl = RTS_CONTROL_ENABLE;\r
   dcb.fAbortOnError = FALSE;\r
-  dcb.wReserved = 0;\r
+  /* Microsoft SDK >= Feb. 2003 (MS VS >= 2002) */\r
+  #if (defined(_MSC_VER) && _MSC_VER <= 1200) \r
+       //dcb.wReserved = 0;\r
+  #else\r
+    dcb.wReserved = 0;\r
+  #endif\r
   dcb.ByteSize = 7;\r
   dcb.Parity = SPACEPARITY;\r
   dcb.StopBits = ONESTOPBIT;\r
@@ -5039,6 +5041,17 @@ MouseEvent(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
     }\r
     break;\r
 \r
+  case WM_MOUSEWHEEL: // [DM]\r
+       /* Mouse Wheel is being rolled forward\r
+        * Play moves forward\r
+        */\r
+       if((short)HIWORD(wParam) > 0 && currentMove < forwardMostMove) ForwardEvent();\r
+       /* Mouse Wheel is being rolled backward\r
+        * Play moves backward\r
+        */\r
+       if((short)HIWORD(wParam) < 0 && currentMove > backwardMostMove) BackwardEvent();\r
+       break;\r
+\r
   case WM_MBUTTONDOWN:\r
   case WM_RBUTTONDOWN:\r
     ErrorPopDown();\r
@@ -5373,6 +5386,7 @@ WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
   FILE *f;\r
   UINT number;\r
   char fileTitle[MSG_SIZ];\r
+  char buf[MSG_SIZ];\r
   static SnapData sd;\r
 \r
   switch (message) {\r
@@ -5397,6 +5411,7 @@ WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
   case WM_MBUTTONUP:\r
   case WM_RBUTTONUP:\r
   case WM_MOUSEMOVE:\r
+  case WM_MOUSEWHEEL:\r
     MouseEvent(hwnd, message, wParam, lParam);\r
     break;\r
 \r
@@ -5686,10 +5701,34 @@ WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
 \r
     case IDM_AnalysisMode:\r
       if (!first.analysisSupport) {\r
-        char buf[MSG_SIZ];\r
         sprintf(buf, "%s does not support analysis", first.tidy);\r
         DisplayError(buf, 0);\r
       } else {\r
+        /* [DM] icsEngineAnlyze [HGM] Why is this front-end??? */\r
+        if (appData.icsActive) {\r
+               if (gameMode != IcsObserving) {\r
+                       sprintf(buf, "You are not observing a game");\r
+                       DisplayError(buf, 0);\r
+                       /* secure check */\r
+                       if (appData.icsEngineAnalyze) {\r
+                               if (appData.debugMode) \r
+                                       fprintf(debugFP, "Found unexpected active ICS engine analyze \n");\r
+                               ExitAnalyzeMode();\r
+                               ModeHighlight();\r
+                               break;\r
+                       }\r
+                       break;\r
+               } else {\r
+                       /* if enable, user want disable icsEngineAnalyze */\r
+                       if (appData.icsEngineAnalyze) {\r
+                               ExitAnalyzeMode();\r
+                               ModeHighlight();\r
+                               break;\r
+                       }\r
+                       appData.icsEngineAnalyze = TRUE;\r
+                       if (appData.debugMode) fprintf(debugFP, "ICS engine analyze starting...\n");\r
+               }\r
+        } \r
        if (!appData.showThinking) ToggleShowThinking();\r
        AnalyzeModeEvent();\r
       }\r
@@ -6155,8 +6194,8 @@ WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
       AutoPlayGameLoop(); /* call into back end */\r
       break;\r
     case ANALYSIS_TIMER_ID:\r
-      if ((gameMode == AnalyzeMode || gameMode == AnalyzeFile) && \r
-         appData.periodicUpdates) {\r
+      if ((gameMode == AnalyzeMode || gameMode == AnalyzeFile\r
+                 || appData.icsEngineAnalyze) && appData.periodicUpdates) {\r
        AnalysisPeriodicEvent(0);\r
       } else {\r
        KillTimer(hwnd, analysisTimerEvent);\r
@@ -7916,6 +7955,26 @@ ConsoleWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
       wp.rcNormalPosition.bottom = consoleY + consoleH;\r
       SetWindowPlacement(hDlg, &wp);\r
     }\r
+#if 0 \r
+   // [HGM] Chessknight's change 2004-07-13\r
+   else { /* Determine Defaults */\r
+       WINDOWPLACEMENT wp;\r
+       consoleX = winWidth + 1;\r
+       consoleY = boardY;\r
+       consoleW = screenWidth -  winWidth;\r
+       consoleH = winHeight;\r
+       EnsureOnScreen(&consoleX, &consoleY);\r
+       wp.length = sizeof(WINDOWPLACEMENT);\r
+       wp.flags = 0;\r
+       wp.showCmd = SW_SHOW;\r
+       wp.ptMaxPosition.x = wp.ptMaxPosition.y = 0;\r
+       wp.rcNormalPosition.left = consoleX;\r
+       wp.rcNormalPosition.right = consoleX + consoleW;\r
+       wp.rcNormalPosition.top = consoleY;\r
+       wp.rcNormalPosition.bottom = consoleY + consoleH;\r
+       SetWindowPlacement(hDlg, &wp);\r
+    }\r
+#endif\r
     return FALSE;\r
 \r
   case WM_SETFOCUS:\r
@@ -8441,7 +8500,7 @@ Enables icsEnables[] = {
   { IDM_MachineWhite, MF_BYCOMMAND|MF_GRAYED },\r
   { IDM_MachineBlack, MF_BYCOMMAND|MF_GRAYED },\r
   { IDM_TwoMachines, MF_BYCOMMAND|MF_GRAYED },\r
-  { IDM_AnalysisMode, MF_BYCOMMAND|MF_GRAYED },\r
+  { IDM_AnalysisMode, MF_BYCOMMAND|MF_ENABLED },\r
   { IDM_AnalyzeFile, MF_BYCOMMAND|MF_GRAYED },\r
   { IDM_TimeControl, MF_BYCOMMAND|MF_GRAYED },\r
   { IDM_MoveNow, MF_BYCOMMAND|MF_GRAYED },\r
@@ -8636,6 +8695,17 @@ ModeHighlight()
   }\r
 \r
   prevChecked = nowChecked;\r
+\r
+  /* [DM] icsEngineAnalyze - Do a sceure check too */\r
+  if (appData.icsActive) {\r
+       if (appData.icsEngineAnalyze) {\r
+               (void) CheckMenuItem(GetMenu(hwndMain), IDM_AnalysisMode,\r
+                       MF_BYCOMMAND|MF_CHECKED);\r
+       } else {\r
+               (void) CheckMenuItem(GetMenu(hwndMain), IDM_AnalysisMode,\r
+                       MF_BYCOMMAND|MF_UNCHECKED);\r
+       }\r
+  }\r
 }\r
 \r
 VOID\r
@@ -8648,6 +8718,9 @@ SetICSMode()
 #ifdef ZIPPY\r
   if (appData.zippyPlay) {\r
     SetMenuEnables(hmenu, zippyEnables);\r
+    if (!appData.noChessProgram)     /* [DM] icsEngineAnalyze */\r
+         (void) EnableMenuItem(GetMenu(hwndMain), IDM_AnalysisMode,\r
+          MF_BYCOMMAND|MF_ENABLED);\r
   }\r
 #endif\r
 }\r
@@ -9382,9 +9455,10 @@ void
 DisplayWhiteClock(long timeRemaining, int highlight)\r
 {\r
   HDC hdc;\r
-  hdc = GetDC(hwndMain);\r
   char *flag = whiteFlag && gameMode == TwoMachinesPlay ? "(!)" : "";\r
 \r
+  if(appData.noGUI) return;\r
+  hdc = GetDC(hwndMain);\r
   if (!IsIconic(hwndMain)) {\r
     DisplayAClock(hdc, timeRemaining, highlight, \r
                        (logoHeight > 0 ? flipView: flipClock) ? &blackRect : &whiteRect, "White", flag);\r
@@ -9407,6 +9481,7 @@ DisplayBlackClock(long timeRemaining, int highlight)
   HDC hdc;\r
   char *flag = blackFlag && gameMode == TwoMachinesPlay ? "(!)" : "";\r
 \r
+  if(appData.noGUI) return;\r
   hdc = GetDC(hwndMain);\r
   if (!IsIconic(hwndMain)) {\r
     DisplayAClock(hdc, timeRemaining, highlight, \r
@@ -10322,6 +10397,11 @@ AnalysisDialog(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
   case WM_COMMAND: /* message: received a command */\r
     switch (LOWORD(wParam)) {\r
     case IDCANCEL:\r
+      if (appData.icsActive && appData.icsEngineAnalyze) { /* [DM] icsEngineAnalyze */\r
+          ExitAnalyzeMode();\r
+          ModeHighlight();\r
+          return TRUE;\r
+      }\r
       EditGameEvent();\r
       return TRUE;\r
     default:\r
index eb7ee05..0759e9f 100644 (file)
@@ -1005,18 +1005,18 @@ END
 \r
 // Icon with lowest ID value placed first to ensure application icon\r
 // remains consistent on all systems.\r
-IDI_WHITE_14            ICON    DISCARDABLE     "bitmaps\\white_14.ico"\r
-ICON_BLACK              ICON    DISCARDABLE     "bitmaps\\icon_ob.ico"\r
-ICON_BOARD              ICON    DISCARDABLE     "bitmaps\\board.ico"\r
-ICON_WHITE              ICON    DISCARDABLE     "bitmaps\\icon_whi.ico"\r
-IDI_BLACK_14            ICON    DISCARDABLE     "bitmaps\\black_14.ico"\r
-IDI_PONDER_14           ICON    DISCARDABLE     "bitmaps\\ponder_14.ico"\r
-IDI_TRANS_14            ICON    DISCARDABLE     "bitmaps\\trans_14.ico"\r
-IDI_CLOCK_14            ICON    DISCARDABLE     "bitmaps\\clock_14.ico"\r
-IDI_UNKNOWN_14          ICON    DISCARDABLE     "bitmaps\\unknown_14.ico"\r
-IDI_BALOON_14           ICON    DISCARDABLE     "bitmaps\\baloon_14.ico"\r
-IDI_ANALYZE_14          ICON    DISCARDABLE     "bitmaps\\analyze_14.ico"\r
-IDI_ANALYZE2_14         ICON    DISCARDABLE     "bitmaps\\analyze2_14.ico"\r
+IDI_WHITE_14            ICON    DISCARDABLE     "bitmaps/white_14.ico"\r
+ICON_BLACK              ICON    DISCARDABLE     "bitmaps/icon_ob.ico"\r
+ICON_BOARD              ICON    DISCARDABLE     "bitmaps/board.ico"\r
+ICON_WHITE              ICON    DISCARDABLE     "bitmaps/icon_whi.ico"\r
+IDI_BLACK_14            ICON    DISCARDABLE     "bitmaps/black_14.ico"\r
+IDI_PONDER_14           ICON    DISCARDABLE     "bitmaps/ponder_14.ico"\r
+IDI_TRANS_14            ICON    DISCARDABLE     "bitmaps/trans_14.ico"\r
+IDI_CLOCK_14            ICON    DISCARDABLE     "bitmaps/clock_14.ico"\r
+IDI_UNKNOWN_14          ICON    DISCARDABLE     "bitmaps/unknown_14.ico"\r
+IDI_BALOON_14           ICON    DISCARDABLE     "bitmaps/baloon_14.ico"\r
+IDI_ANALYZE_14          ICON    DISCARDABLE     "bitmaps/analyze_14.ico"\r
+IDI_ANALYZE2_14         ICON    DISCARDABLE     "bitmaps/analyze2_14.ico"\r
 \r
 /////////////////////////////////////////////////////////////////////////////\r
 //\r
@@ -1377,587 +1377,584 @@ END
 // Bitmap\r
 //\r
 \r
-P21O                    BITMAP  MOVEABLE PURE   "bitmaps\\p21o.bmp"\r
-N21O                    BITMAP  MOVEABLE PURE   "bitmaps\\n21o.bmp"\r
-B21O                    BITMAP  MOVEABLE PURE   "bitmaps\\b21o.bmp"\r
-R21O                    BITMAP  MOVEABLE PURE   "bitmaps\\r21o.bmp"\r
-K21O                    BITMAP  MOVEABLE PURE   "bitmaps\\k21o.bmp"\r
-Q21O                    BITMAP  MOVEABLE PURE   "bitmaps\\q21o.bmp"\r
-P21S                    BITMAP  MOVEABLE PURE   "bitmaps\\p21s.bmp"\r
-N21S                    BITMAP  MOVEABLE PURE   "bitmaps\\n21s.bmp"\r
-B21S                    BITMAP  MOVEABLE PURE   "bitmaps\\b21s.bmp"\r
-R21S                    BITMAP  MOVEABLE PURE   "bitmaps\\r21s.bmp"\r
-Q21S                    BITMAP  MOVEABLE PURE   "bitmaps\\q21s.bmp"\r
-K21S                    BITMAP  MOVEABLE PURE   "bitmaps\\k21s.bmp"\r
-P21W                    BITMAP  MOVEABLE PURE   "bitmaps\\p21w.bmp"\r
-N21W                    BITMAP  MOVEABLE PURE   "bitmaps\\n21w.bmp"\r
-B21W                    BITMAP  MOVEABLE PURE   "bitmaps\\b21w.bmp"\r
-R21W                    BITMAP  MOVEABLE PURE   "bitmaps\\r21w.bmp"\r
-Q21W                    BITMAP  MOVEABLE PURE   "bitmaps\\q21w.bmp"\r
-K21W                    BITMAP  MOVEABLE PURE   "bitmaps\\k21w.bmp"\r
-P25O                    BITMAP  MOVEABLE PURE   "bitmaps\\p25o.bmp"\r
-N25O                    BITMAP  MOVEABLE PURE   "bitmaps\\n25o.bmp"\r
-B25O                    BITMAP  MOVEABLE PURE   "bitmaps\\b25o.bmp"\r
-R25O                    BITMAP  MOVEABLE PURE   "bitmaps\\r25o.bmp"\r
-Q25O                    BITMAP  MOVEABLE PURE   "bitmaps\\q25o.bmp"\r
-K25O                    BITMAP  MOVEABLE PURE   "bitmaps\\k25o.bmp"\r
-P25S                    BITMAP  MOVEABLE PURE   "bitmaps\\p25s.bmp"\r
-N25S                    BITMAP  MOVEABLE PURE   "bitmaps\\n25s.bmp"\r
-B25S                    BITMAP  MOVEABLE PURE   "bitmaps\\b25s.bmp"\r
-R25S                    BITMAP  MOVEABLE PURE   "bitmaps\\r25s.bmp"\r
-Q25S                    BITMAP  MOVEABLE PURE   "bitmaps\\q25s.bmp"\r
-K25S                    BITMAP  MOVEABLE PURE   "bitmaps\\k25s.bmp"\r
-P25W                    BITMAP  MOVEABLE PURE   "bitmaps\\p25w.bmp"\r
-N25W                    BITMAP  MOVEABLE PURE   "bitmaps\\n25w.bmp"\r
-B25W                    BITMAP  MOVEABLE PURE   "bitmaps\\b25w.bmp"\r
-R25W                    BITMAP  MOVEABLE PURE   "bitmaps\\r25w.bmp"\r
-Q25W                    BITMAP  MOVEABLE PURE   "bitmaps\\q25w.bmp"\r
-K25W                    BITMAP  MOVEABLE PURE   "bitmaps\\k25w.bmp"\r
-P29O                    BITMAP  MOVEABLE PURE   "bitmaps\\p29o.bmp"\r
-N29O                    BITMAP  MOVEABLE PURE   "bitmaps\\n29o.bmp"\r
-B29O                    BITMAP  MOVEABLE PURE   "bitmaps\\b29o.bmp"\r
-R29O                    BITMAP  MOVEABLE PURE   "bitmaps\\r29o.bmp"\r
-Q29O                    BITMAP  MOVEABLE PURE   "bitmaps\\q29o.bmp"\r
-K29O                    BITMAP  MOVEABLE PURE   "bitmaps\\k29o.bmp"\r
-P29S                    BITMAP  MOVEABLE PURE   "bitmaps\\p29s.bmp"\r
-N29S                    BITMAP  MOVEABLE PURE   "bitmaps\\n29s.bmp"\r
-B29S                    BITMAP  MOVEABLE PURE   "bitmaps\\b29s.bmp"\r
-R29S                    BITMAP  MOVEABLE PURE   "bitmaps\\r29s.bmp"\r
-Q29S                    BITMAP  MOVEABLE PURE   "bitmaps\\q29s.bmp"\r
-K29S                    BITMAP  MOVEABLE PURE   "bitmaps\\k29s.bmp"\r
-P29W                    BITMAP  MOVEABLE PURE   "bitmaps\\p29w.bmp"\r
-N29W                    BITMAP  MOVEABLE PURE   "bitmaps\\n29w.bmp"\r
-B29W                    BITMAP  MOVEABLE PURE   "bitmaps\\b29w.bmp"\r
-R29W                    BITMAP  MOVEABLE PURE   "bitmaps\\r29w.bmp"\r
-Q29W                    BITMAP  MOVEABLE PURE   "bitmaps\\q29w.bmp"\r
-K29W                    BITMAP  MOVEABLE PURE   "bitmaps\\k29w.bmp"\r
-P33O                    BITMAP  MOVEABLE PURE   "bitmaps\\p33o.bmp"\r
-N33O                    BITMAP  MOVEABLE PURE   "bitmaps\\n33o.bmp"\r
-B33O                    BITMAP  MOVEABLE PURE   "bitmaps\\b33o.bmp"\r
-R33O                    BITMAP  MOVEABLE PURE   "bitmaps\\r33o.bmp"\r
-Q33O                    BITMAP  MOVEABLE PURE   "bitmaps\\q33o.bmp"\r
-K33O                    BITMAP  MOVEABLE PURE   "bitmaps\\k33o.bmp"\r
-P33S                    BITMAP  MOVEABLE PURE   "bitmaps\\p33s.bmp"\r
-N33S                    BITMAP  MOVEABLE PURE   "bitmaps\\n33s.bmp"\r
-B33S                    BITMAP  MOVEABLE PURE   "bitmaps\\b33s.bmp"\r
-R33S                    BITMAP  MOVEABLE PURE   "bitmaps\\r33s.bmp"\r
-Q33S                    BITMAP  MOVEABLE PURE   "bitmaps\\q33s.bmp"\r
-K33S                    BITMAP  MOVEABLE PURE   "bitmaps\\k33s.bmp"\r
-P33W                    BITMAP  MOVEABLE PURE   "bitmaps\\p33w.bmp"\r
-N33W                    BITMAP  MOVEABLE PURE   "bitmaps\\n33w.bmp"\r
-B33W                    BITMAP  MOVEABLE PURE   "bitmaps\\b33w.bmp"\r
-R33W                    BITMAP  MOVEABLE PURE   "bitmaps\\r33w.bmp"\r
-Q33W                    BITMAP  MOVEABLE PURE   "bitmaps\\q33w.bmp"\r
-K33W                    BITMAP  MOVEABLE PURE   "bitmaps\\k33w.bmp"\r
-P37O                    BITMAP  MOVEABLE PURE   "bitmaps\\p37o.bmp"\r
-N37O                    BITMAP  MOVEABLE PURE   "bitmaps\\n37o.bmp"\r
-B37O                    BITMAP  MOVEABLE PURE   "bitmaps\\b37o.bmp"\r
-R37O                    BITMAP  MOVEABLE PURE   "bitmaps\\r37o.bmp"\r
-Q37O                    BITMAP  MOVEABLE PURE   "bitmaps\\q37o.bmp"\r
-K37O                    BITMAP  MOVEABLE PURE   "bitmaps\\k37o.bmp"\r
-P37S                    BITMAP  MOVEABLE PURE   "bitmaps\\p37s.bmp"\r
-N37S                    BITMAP  MOVEABLE PURE   "bitmaps\\n37s.bmp"\r
-B37S                    BITMAP  MOVEABLE PURE   "bitmaps\\b37s.bmp"\r
-R37S                    BITMAP  MOVEABLE PURE   "bitmaps\\r37s.bmp"\r
-Q37S                    BITMAP  MOVEABLE PURE   "bitmaps\\q37s.bmp"\r
-K37S                    BITMAP  MOVEABLE PURE   "bitmaps\\k37s.bmp"\r
-P37W                    BITMAP  MOVEABLE PURE   "bitmaps\\p37w.bmp"\r
-N37W                    BITMAP  MOVEABLE PURE   "bitmaps\\n37w.bmp"\r
-B37W                    BITMAP  MOVEABLE PURE   "bitmaps\\b37w.bmp"\r
-R37W                    BITMAP  MOVEABLE PURE   "bitmaps\\r37w.bmp"\r
-Q37W                    BITMAP  MOVEABLE PURE   "bitmaps\\q37w.bmp"\r
-K37W                    BITMAP  MOVEABLE PURE   "bitmaps\\k37w.bmp"\r
-P40O                    BITMAP  MOVEABLE PURE   "bitmaps\\p40o.bmp"\r
-N40O                    BITMAP  MOVEABLE PURE   "bitmaps\\n40o.bmp"\r
-B40O                    BITMAP  MOVEABLE PURE   "bitmaps\\b40o.bmp"\r
-R40O                    BITMAP  MOVEABLE PURE   "bitmaps\\r40o.bmp"\r
-Q40O                    BITMAP  MOVEABLE PURE   "bitmaps\\q40o.bmp"\r
-K40O                    BITMAP  MOVEABLE PURE   "bitmaps\\k40o.bmp"\r
-P40S                    BITMAP  MOVEABLE PURE   "bitmaps\\p40s.bmp"\r
-N40S                    BITMAP  MOVEABLE PURE   "bitmaps\\n40s.bmp"\r
-B40S                    BITMAP  MOVEABLE PURE   "bitmaps\\b40s.bmp"\r
-R40S                    BITMAP  MOVEABLE PURE   "bitmaps\\r40s.bmp"\r
-Q40S                    BITMAP  MOVEABLE PURE   "bitmaps\\q40s.bmp"\r
-K40S                    BITMAP  MOVEABLE PURE   "bitmaps\\k40s.bmp"\r
-P40W                    BITMAP  MOVEABLE PURE   "bitmaps\\p40w.bmp"\r
-N40W                    BITMAP  MOVEABLE PURE   "bitmaps\\n40w.bmp"\r
-B40W                    BITMAP  MOVEABLE PURE   "bitmaps\\b40w.bmp"\r
-R40W                    BITMAP  MOVEABLE PURE   "bitmaps\\r40w.bmp"\r
-Q40W                    BITMAP  MOVEABLE PURE   "bitmaps\\q40w.bmp"\r
-K40W                    BITMAP  MOVEABLE PURE   "bitmaps\\k40w.bmp"\r
-P45O                    BITMAP  MOVEABLE PURE   "bitmaps\\p45o.bmp"\r
-N45O                    BITMAP  MOVEABLE PURE   "bitmaps\\n45o.bmp"\r
-B45O                    BITMAP  MOVEABLE PURE   "bitmaps\\b45o.bmp"\r
-R45O                    BITMAP  MOVEABLE PURE   "bitmaps\\r45o.bmp"\r
-Q45O                    BITMAP  MOVEABLE PURE   "bitmaps\\q45o.bmp"\r
-K45O                    BITMAP  MOVEABLE PURE   "bitmaps\\k45o.bmp"\r
-P45S                    BITMAP  MOVEABLE PURE   "bitmaps\\p45s.bmp"\r
-N45S                    BITMAP  MOVEABLE PURE   "bitmaps\\n45s.bmp"\r
-B45S                    BITMAP  MOVEABLE PURE   "bitmaps\\b45s.bmp"\r
-R45S                    BITMAP  MOVEABLE PURE   "bitmaps\\r45s.bmp"\r
-Q45S                    BITMAP  MOVEABLE PURE   "bitmaps\\q45s.bmp"\r
-K45S                    BITMAP  MOVEABLE PURE   "bitmaps\\k45s.bmp"\r
-P45W                    BITMAP  MOVEABLE PURE   "bitmaps\\p45w.bmp"\r
-N45W                    BITMAP  MOVEABLE PURE   "bitmaps\\n45w.bmp"\r
-B45W                    BITMAP  MOVEABLE PURE   "bitmaps\\b45w.bmp"\r
-R45W                    BITMAP  MOVEABLE PURE   "bitmaps\\r45w.bmp"\r
-Q45W                    BITMAP  MOVEABLE PURE   "bitmaps\\q45w.bmp"\r
-K45W                    BITMAP  MOVEABLE PURE   "bitmaps\\k45w.bmp"\r
-P49O                    BITMAP  MOVEABLE PURE   "bitmaps\\p49o.bmp"\r
-N49O                    BITMAP  MOVEABLE PURE   "bitmaps\\n49o.bmp"\r
-B49O                    BITMAP  MOVEABLE PURE   "bitmaps\\b49o.bmp"\r
-R49O                    BITMAP  MOVEABLE PURE   "bitmaps\\r49o.bmp"\r
-Q49O                    BITMAP  MOVEABLE PURE   "bitmaps\\q49o.bmp"\r
-K49O                    BITMAP  MOVEABLE PURE   "bitmaps\\k49o.bmp"\r
-P49S                    BITMAP  MOVEABLE PURE   "bitmaps\\p49s.bmp"\r
-N49S                    BITMAP  MOVEABLE PURE   "bitmaps\\n49s.bmp"\r
-B49S                    BITMAP  MOVEABLE PURE   "bitmaps\\b49s.bmp"\r
-R49S                    BITMAP  MOVEABLE PURE   "bitmaps\\r49s.bmp"\r
-Q49S                    BITMAP  MOVEABLE PURE   "bitmaps\\q49s.bmp"\r
-K49S                    BITMAP  MOVEABLE PURE   "bitmaps\\k49s.bmp"\r
-P49W                    BITMAP  MOVEABLE PURE   "bitmaps\\p49w.bmp"\r
-N49W                    BITMAP  MOVEABLE PURE   "bitmaps\\n49w.bmp"\r
-B49W                    BITMAP  MOVEABLE PURE   "bitmaps\\b49w.bmp"\r
-R49W                    BITMAP  MOVEABLE PURE   "bitmaps\\r49w.bmp"\r
-Q49W                    BITMAP  MOVEABLE PURE   "bitmaps\\q49w.bmp"\r
-K49W                    BITMAP  MOVEABLE PURE   "bitmaps\\k49w.bmp"\r
-P54O                    BITMAP  MOVEABLE PURE   "bitmaps\\p54o.bmp"\r
-N54O                    BITMAP  MOVEABLE PURE   "bitmaps\\n54o.bmp"\r
-B54O                    BITMAP  MOVEABLE PURE   "bitmaps\\b54o.bmp"\r
-R54O                    BITMAP  MOVEABLE PURE   "bitmaps\\r54o.bmp"\r
-Q54O                    BITMAP  MOVEABLE PURE   "bitmaps\\q54o.bmp"\r
-K54O                    BITMAP  MOVEABLE PURE   "bitmaps\\k54o.bmp"\r
-P54S                    BITMAP  MOVEABLE PURE   "bitmaps\\p54s.bmp"\r
-N54S                    BITMAP  MOVEABLE PURE   "bitmaps\\n54s.bmp"\r
-B54S                    BITMAP  MOVEABLE PURE   "bitmaps\\b54s.bmp"\r
-R54S                    BITMAP  MOVEABLE PURE   "bitmaps\\r54s.bmp"\r
-Q54S                    BITMAP  MOVEABLE PURE   "bitmaps\\q54s.bmp"\r
-K54S                    BITMAP  MOVEABLE PURE   "bitmaps\\k54s.bmp"\r
-P54W                    BITMAP  MOVEABLE PURE   "bitmaps\\p54w.bmp"\r
-N54W                    BITMAP  MOVEABLE PURE   "bitmaps\\n54w.bmp"\r
-B54W                    BITMAP  MOVEABLE PURE   "bitmaps\\b54w.bmp"\r
-R54W                    BITMAP  MOVEABLE PURE   "bitmaps\\r54w.bmp"\r
-Q54W                    BITMAP  MOVEABLE PURE   "bitmaps\\q54w.bmp"\r
-K54W                    BITMAP  MOVEABLE PURE   "bitmaps\\k54w.bmp"\r
-P58O                    BITMAP  MOVEABLE PURE   "bitmaps\\p58o.bmp"\r
-N58O                    BITMAP  MOVEABLE PURE   "bitmaps\\n58o.bmp"\r
-B58O                    BITMAP  MOVEABLE PURE   "bitmaps\\b58o.bmp"\r
-R58O                    BITMAP  MOVEABLE PURE   "bitmaps\\r58o.bmp"\r
-Q58O                    BITMAP  MOVEABLE PURE   "bitmaps\\q58o.bmp"\r
-K58O                    BITMAP  MOVEABLE PURE   "bitmaps\\k58o.bmp"\r
-P58S                    BITMAP  MOVEABLE PURE   "bitmaps\\p58s.bmp"\r
-N58S                    BITMAP  MOVEABLE PURE   "bitmaps\\n58s.bmp"\r
-B58S                    BITMAP  MOVEABLE PURE   "bitmaps\\b58s.bmp"\r
-R58S                    BITMAP  MOVEABLE PURE   "bitmaps\\r58s.bmp"\r
-Q58S                    BITMAP  MOVEABLE PURE   "bitmaps\\q58s.bmp"\r
-K58S                    BITMAP  MOVEABLE PURE   "bitmaps\\k58s.bmp"\r
-P58W                    BITMAP  MOVEABLE PURE   "bitmaps\\p58w.bmp"\r
-N58W                    BITMAP  MOVEABLE PURE   "bitmaps\\n58w.bmp"\r
-B58W                    BITMAP  MOVEABLE PURE   "bitmaps\\b58w.bmp"\r
-R58W                    BITMAP  MOVEABLE PURE   "bitmaps\\r58w.bmp"\r
-Q58W                    BITMAP  MOVEABLE PURE   "bitmaps\\q58w.bmp"\r
-K58W                    BITMAP  MOVEABLE PURE   "bitmaps\\k58w.bmp"\r
-P64O                    BITMAP  MOVEABLE PURE   "bitmaps\\p64o.bmp"\r
-N64O                    BITMAP  MOVEABLE PURE   "bitmaps\\n64o.bmp"\r
-B64O                    BITMAP  MOVEABLE PURE   "bitmaps\\b64o.bmp"\r
-R64O                    BITMAP  MOVEABLE PURE   "bitmaps\\r64o.bmp"\r
-Q64O                    BITMAP  MOVEABLE PURE   "bitmaps\\q64o.bmp"\r
-K64O                    BITMAP  MOVEABLE PURE   "bitmaps\\k64o.bmp"\r
-P64S                    BITMAP  MOVEABLE PURE   "bitmaps\\p64s.bmp"\r
-N64S                    BITMAP  MOVEABLE PURE   "bitmaps\\n64s.bmp"\r
-B64S                    BITMAP  MOVEABLE PURE   "bitmaps\\b64s.bmp"\r
-R64S                    BITMAP  MOVEABLE PURE   "bitmaps\\r64s.bmp"\r
-Q64S                    BITMAP  MOVEABLE PURE   "bitmaps\\q64s.bmp"\r
-K64S                    BITMAP  MOVEABLE PURE   "bitmaps\\k64s.bmp"\r
-P64W                    BITMAP  MOVEABLE PURE   "bitmaps\\p64w.bmp"\r
-N64W                    BITMAP  MOVEABLE PURE   "bitmaps\\n64w.bmp"\r
-B64W                    BITMAP  MOVEABLE PURE   "bitmaps\\b64w.bmp"\r
-R64W                    BITMAP  MOVEABLE PURE   "bitmaps\\r64w.bmp"\r
-Q64W                    BITMAP  MOVEABLE PURE   "bitmaps\\q64w.bmp"\r
-K64W                    BITMAP  MOVEABLE PURE   "bitmaps\\k64w.bmp"\r
-P72O                    BITMAP  MOVEABLE PURE   "bitmaps\\p72o.bmp"\r
-N72O                    BITMAP  MOVEABLE PURE   "bitmaps\\n72o.bmp"\r
-B72O                    BITMAP  MOVEABLE PURE   "bitmaps\\b72o.bmp"\r
-R72O                    BITMAP  MOVEABLE PURE   "bitmaps\\r72o.bmp"\r
-Q72O                    BITMAP  MOVEABLE PURE   "bitmaps\\q72o.bmp"\r
-K72O                    BITMAP  MOVEABLE PURE   "bitmaps\\k72o.bmp"\r
-P72S                    BITMAP  MOVEABLE PURE   "bitmaps\\p72s.bmp"\r
-N72S                    BITMAP  MOVEABLE PURE   "bitmaps\\n72s.bmp"\r
-B72S                    BITMAP  MOVEABLE PURE   "bitmaps\\b72s.bmp"\r
-R72S                    BITMAP  MOVEABLE PURE   "bitmaps\\r72s.bmp"\r
-Q72S                    BITMAP  MOVEABLE PURE   "bitmaps\\q72s.bmp"\r
-K72S                    BITMAP  MOVEABLE PURE   "bitmaps\\k72s.bmp"\r
-P72W                    BITMAP  MOVEABLE PURE   "bitmaps\\p72w.bmp"\r
-N72W                    BITMAP  MOVEABLE PURE   "bitmaps\\n72w.bmp"\r
-B72W                    BITMAP  MOVEABLE PURE   "bitmaps\\b72w.bmp"\r
-R72W                    BITMAP  MOVEABLE PURE   "bitmaps\\r72w.bmp"\r
-Q72W                    BITMAP  MOVEABLE PURE   "bitmaps\\q72w.bmp"\r
-K72W                    BITMAP  MOVEABLE PURE   "bitmaps\\k72w.bmp"\r
-P80O                    BITMAP  MOVEABLE PURE   "bitmaps\\p80o.bmp"\r
-N80O                    BITMAP  MOVEABLE PURE   "bitmaps\\n80o.bmp"\r
-B80O                    BITMAP  MOVEABLE PURE   "bitmaps\\b80o.bmp"\r
-R80O                    BITMAP  MOVEABLE PURE   "bitmaps\\r80o.bmp"\r
-Q80O                    BITMAP  MOVEABLE PURE   "bitmaps\\q80o.bmp"\r
-K80O                    BITMAP  MOVEABLE PURE   "bitmaps\\k80o.bmp"\r
-P80S                    BITMAP  MOVEABLE PURE   "bitmaps\\p80s.bmp"\r
-N80S                    BITMAP  MOVEABLE PURE   "bitmaps\\n80s.bmp"\r
-B80S                    BITMAP  MOVEABLE PURE   "bitmaps\\b80s.bmp"\r
-R80S                    BITMAP  MOVEABLE PURE   "bitmaps\\r80s.bmp"\r
-Q80S                    BITMAP  MOVEABLE PURE   "bitmaps\\q80s.bmp"\r
-K80S                    BITMAP  MOVEABLE PURE   "bitmaps\\k80s.bmp"\r
-P80W                    BITMAP  MOVEABLE PURE   "bitmaps\\p80w.bmp"\r
-N80W                    BITMAP  MOVEABLE PURE   "bitmaps\\n80w.bmp"\r
-B80W                    BITMAP  MOVEABLE PURE   "bitmaps\\b80w.bmp"\r
-R80W                    BITMAP  MOVEABLE PURE   "bitmaps\\r80w.bmp"\r
-Q80W                    BITMAP  MOVEABLE PURE   "bitmaps\\q80w.bmp"\r
-K80W                    BITMAP  MOVEABLE PURE   "bitmaps\\k80w.bmp"\r
-P87O                    BITMAP  MOVEABLE PURE   "bitmaps\\p87o.bmp"\r
-N87O                    BITMAP  MOVEABLE PURE   "bitmaps\\n87o.bmp"\r
-B87O                    BITMAP  MOVEABLE PURE   "bitmaps\\b87o.bmp"\r
-R87O                    BITMAP  MOVEABLE PURE   "bitmaps\\r87o.bmp"\r
-Q87O                    BITMAP  MOVEABLE PURE   "bitmaps\\q87o.bmp"\r
-K87O                    BITMAP  MOVEABLE PURE   "bitmaps\\k87o.bmp"\r
-P87S                    BITMAP  MOVEABLE PURE   "bitmaps\\p87s.bmp"\r
-N87S                    BITMAP  MOVEABLE PURE   "bitmaps\\n87s.bmp"\r
-B87S                    BITMAP  MOVEABLE PURE   "bitmaps\\b87s.bmp"\r
-R87S                    BITMAP  MOVEABLE PURE   "bitmaps\\r87s.bmp"\r
-Q87S                    BITMAP  MOVEABLE PURE   "bitmaps\\q87s.bmp"\r
-K87S                    BITMAP  MOVEABLE PURE   "bitmaps\\k87s.bmp"\r
-P87W                    BITMAP  MOVEABLE PURE   "bitmaps\\p87w.bmp"\r
-N87W                    BITMAP  MOVEABLE PURE   "bitmaps\\n87w.bmp"\r
-B87W                    BITMAP  MOVEABLE PURE   "bitmaps\\b87w.bmp"\r
-R87W                    BITMAP  MOVEABLE PURE   "bitmaps\\r87w.bmp"\r
-Q87W                    BITMAP  MOVEABLE PURE   "bitmaps\\q87w.bmp"\r
-K87W                    BITMAP  MOVEABLE PURE   "bitmaps\\k87w.bmp"\r
-P95O                    BITMAP  MOVEABLE PURE   "bitmaps\\p95o.bmp"\r
-N95O                    BITMAP  MOVEABLE PURE   "bitmaps\\n95o.bmp"\r
-B95O                    BITMAP  MOVEABLE PURE   "bitmaps\\b95o.bmp"\r
-R95O                    BITMAP  MOVEABLE PURE   "bitmaps\\r95o.bmp"\r
-Q95O                    BITMAP  MOVEABLE PURE   "bitmaps\\q95o.bmp"\r
-K95O                    BITMAP  MOVEABLE PURE   "bitmaps\\k95o.bmp"\r
-P95S                    BITMAP  MOVEABLE PURE   "bitmaps\\p95s.bmp"\r
-N95S                    BITMAP  MOVEABLE PURE   "bitmaps\\n95s.bmp"\r
-B95S                    BITMAP  MOVEABLE PURE   "bitmaps\\b95s.bmp"\r
-R95S                    BITMAP  MOVEABLE PURE   "bitmaps\\r95s.bmp"\r
-Q95S                    BITMAP  MOVEABLE PURE   "bitmaps\\q95s.bmp"\r
-K95S                    BITMAP  MOVEABLE PURE   "bitmaps\\k95s.bmp"\r
-P95W                    BITMAP  MOVEABLE PURE   "bitmaps\\p95w.bmp"\r
-N95W                    BITMAP  MOVEABLE PURE   "bitmaps\\n95w.bmp"\r
-B95W                    BITMAP  MOVEABLE PURE   "bitmaps\\b95w.bmp"\r
-R95W                    BITMAP  MOVEABLE PURE   "bitmaps\\r95w.bmp"\r
-Q95W                    BITMAP  MOVEABLE PURE   "bitmaps\\q95w.bmp"\r
-K95W                    BITMAP  MOVEABLE PURE   "bitmaps\\k95w.bmp"\r
-P108O                   BITMAP  MOVEABLE PURE   "bitmaps\\p108o.bmp"\r
-N108O                   BITMAP  MOVEABLE PURE   "bitmaps\\n108o.bmp"\r
-B108O                   BITMAP  MOVEABLE PURE   "bitmaps\\b108o.bmp"\r
-R108O                   BITMAP  MOVEABLE PURE   "bitmaps\\r108o.bmp"\r
-Q108O                   BITMAP  MOVEABLE PURE   "bitmaps\\q108o.bmp"\r
-K108O                   BITMAP  MOVEABLE PURE   "bitmaps\\k108o.bmp"\r
-P108S                   BITMAP  MOVEABLE PURE   "bitmaps\\p108s.bmp"\r
-N108S                   BITMAP  MOVEABLE PURE   "bitmaps\\n108s.bmp"\r
-B108S                   BITMAP  MOVEABLE PURE   "bitmaps\\b108s.bmp"\r
-R108S                   BITMAP  MOVEABLE PURE   "bitmaps\\r108s.bmp"\r
-Q108S                   BITMAP  MOVEABLE PURE   "bitmaps\\q108s.bmp"\r
-K108S                   BITMAP  MOVEABLE PURE   "bitmaps\\k108s.bmp"\r
-P108W                   BITMAP  MOVEABLE PURE   "bitmaps\\p108w.bmp"\r
-N108W                   BITMAP  MOVEABLE PURE   "bitmaps\\n108w.bmp"\r
-B108W                   BITMAP  MOVEABLE PURE   "bitmaps\\b108w.bmp"\r
-R108W                   BITMAP  MOVEABLE PURE   "bitmaps\\r108w.bmp"\r
-Q108W                   BITMAP  MOVEABLE PURE   "bitmaps\\q108w.bmp"\r
-K108W                   BITMAP  MOVEABLE PURE   "bitmaps\\k108w.bmp"\r
-P116O                   BITMAP  MOVEABLE PURE   "bitmaps\\p116o.bmp"\r
-N116O                   BITMAP  MOVEABLE PURE   "bitmaps\\n116o.bmp"\r
-B116O                   BITMAP  MOVEABLE PURE   "bitmaps\\b116o.bmp"\r
-R116O                   BITMAP  MOVEABLE PURE   "bitmaps\\r116o.bmp"\r
-Q116O                   BITMAP  MOVEABLE PURE   "bitmaps\\q116o.bmp"\r
-K116O                   BITMAP  MOVEABLE PURE   "bitmaps\\k116o.bmp"\r
-P116S                   BITMAP  MOVEABLE PURE   "bitmaps\\p116s.bmp"\r
-N116S                   BITMAP  MOVEABLE PURE   "bitmaps\\n116s.bmp"\r
-B116S                   BITMAP  MOVEABLE PURE   "bitmaps\\b116s.bmp"\r
-R116S                   BITMAP  MOVEABLE PURE   "bitmaps\\r116s.bmp"\r
-Q116S                   BITMAP  MOVEABLE PURE   "bitmaps\\q116s.bmp"\r
-K116S                   BITMAP  MOVEABLE PURE   "bitmaps\\k116s.bmp"\r
-P116W                   BITMAP  MOVEABLE PURE   "bitmaps\\p116w.bmp"\r
-N116W                   BITMAP  MOVEABLE PURE   "bitmaps\\n116w.bmp"\r
-B116W                   BITMAP  MOVEABLE PURE   "bitmaps\\b116w.bmp"\r
-R116W                   BITMAP  MOVEABLE PURE   "bitmaps\\r116w.bmp"\r
-Q116W                   BITMAP  MOVEABLE PURE   "bitmaps\\q116w.bmp"\r
-K116W                   BITMAP  MOVEABLE PURE   "bitmaps\\k116w.bmp"\r
-P129O                   BITMAP  MOVEABLE PURE   "bitmaps\\p129o.bmp"\r
-N129O                   BITMAP  MOVEABLE PURE   "bitmaps\\n129o.bmp"\r
-B129O                   BITMAP  MOVEABLE PURE   "bitmaps\\b129o.bmp"\r
-R129O                   BITMAP  MOVEABLE PURE   "bitmaps\\r129o.bmp"\r
-Q129O                   BITMAP  MOVEABLE PURE   "bitmaps\\q129o.bmp"\r
-K129O                   BITMAP  MOVEABLE PURE   "bitmaps\\k129o.bmp"\r
-P129S                   BITMAP  MOVEABLE PURE   "bitmaps\\p129s.bmp"\r
-N129S                   BITMAP  MOVEABLE PURE   "bitmaps\\n129s.bmp"\r
-B129S                   BITMAP  MOVEABLE PURE   "bitmaps\\b129s.bmp"\r
-R129S                   BITMAP  MOVEABLE PURE   "bitmaps\\r129s.bmp"\r
-Q129S                   BITMAP  MOVEABLE PURE   "bitmaps\\q129s.bmp"\r
-K129S                   BITMAP  MOVEABLE PURE   "bitmaps\\k129s.bmp"\r
-P129W                   BITMAP  MOVEABLE PURE   "bitmaps\\p129w.bmp"\r
-N129W                   BITMAP  MOVEABLE PURE   "bitmaps\\n129w.bmp"\r
-B129W                   BITMAP  MOVEABLE PURE   "bitmaps\\b129w.bmp"\r
-R129W                   BITMAP  MOVEABLE PURE   "bitmaps\\r129w.bmp"\r
-Q129W                   BITMAP  MOVEABLE PURE   "bitmaps\\q129w.bmp"\r
-K129W                   BITMAP  MOVEABLE PURE   "bitmaps\\k129w.bmp"\r
-GALACTIC                BITMAP  MOVEABLE PURE   "bitmaps\\galactic.bmp"\r
-TIM                     BITMAP  MOVEABLE PURE   "bitmaps\\tim.bmp"\r
+P21O                    BITMAP  MOVEABLE PURE   "bitmaps/p21o.bmp"\r
+N21O                    BITMAP  MOVEABLE PURE   "bitmaps/n21o.bmp"\r
+B21O                    BITMAP  MOVEABLE PURE   "bitmaps/b21o.bmp"\r
+R21O                    BITMAP  MOVEABLE PURE   "bitmaps/r21o.bmp"\r
+K21O                    BITMAP  MOVEABLE PURE   "bitmaps/k21o.bmp"\r
+Q21O                    BITMAP  MOVEABLE PURE   "bitmaps/q21o.bmp"\r
+P21S                    BITMAP  MOVEABLE PURE   "bitmaps/p21s.bmp"\r
+N21S                    BITMAP  MOVEABLE PURE   "bitmaps/n21s.bmp"\r
+B21S                    BITMAP  MOVEABLE PURE   "bitmaps/b21s.bmp"\r
+R21S                    BITMAP  MOVEABLE PURE   "bitmaps/r21s.bmp"\r
+Q21S                    BITMAP  MOVEABLE PURE   "bitmaps/q21s.bmp"\r
+K21S                    BITMAP  MOVEABLE PURE   "bitmaps/k21s.bmp"\r
+P21W                    BITMAP  MOVEABLE PURE   "bitmaps/p21w.bmp"\r
+N21W                    BITMAP  MOVEABLE PURE   "bitmaps/n21w.bmp"\r
+B21W                    BITMAP  MOVEABLE PURE   "bitmaps/b21w.bmp"\r
+R21W                    BITMAP  MOVEABLE PURE   "bitmaps/r21w.bmp"\r
+Q21W                    BITMAP  MOVEABLE PURE   "bitmaps/q21w.bmp"\r
+K21W                    BITMAP  MOVEABLE PURE   "bitmaps/k21w.bmp"\r
+P25O                    BITMAP  MOVEABLE PURE   "bitmaps/p25o.bmp"\r
+N25O                    BITMAP  MOVEABLE PURE   "bitmaps/n25o.bmp"\r
+B25O                    BITMAP  MOVEABLE PURE   "bitmaps/b25o.bmp"\r
+R25O                    BITMAP  MOVEABLE PURE   "bitmaps/r25o.bmp"\r
+Q25O                    BITMAP  MOVEABLE PURE   "bitmaps/q25o.bmp"\r
+K25O                    BITMAP  MOVEABLE PURE   "bitmaps/k25o.bmp"\r
+P25S                    BITMAP  MOVEABLE PURE   "bitmaps/p25s.bmp"\r
+N25S                    BITMAP  MOVEABLE PURE   "bitmaps/n25s.bmp"\r
+B25S                    BITMAP  MOVEABLE PURE   "bitmaps/b25s.bmp"\r
+R25S                    BITMAP  MOVEABLE PURE   "bitmaps/r25s.bmp"\r
+Q25S                    BITMAP  MOVEABLE PURE   "bitmaps/q25s.bmp"\r
+K25S                    BITMAP  MOVEABLE PURE   "bitmaps/k25s.bmp"\r
+P25W                    BITMAP  MOVEABLE PURE   "bitmaps/p25w.bmp"\r
+N25W                    BITMAP  MOVEABLE PURE   "bitmaps/n25w.bmp"\r
+B25W                    BITMAP  MOVEABLE PURE   "bitmaps/b25w.bmp"\r
+R25W                    BITMAP  MOVEABLE PURE   "bitmaps/r25w.bmp"\r
+Q25W                    BITMAP  MOVEABLE PURE   "bitmaps/q25w.bmp"\r
+K25W                    BITMAP  MOVEABLE PURE   "bitmaps/k25w.bmp"\r
+P29O                    BITMAP  MOVEABLE PURE   "bitmaps/p29o.bmp"\r
+N29O                    BITMAP  MOVEABLE PURE   "bitmaps/n29o.bmp"\r
+B29O                    BITMAP  MOVEABLE PURE   "bitmaps/b29o.bmp"\r
+R29O                    BITMAP  MOVEABLE PURE   "bitmaps/r29o.bmp"\r
+Q29O                    BITMAP  MOVEABLE PURE   "bitmaps/q29o.bmp"\r
+K29O                    BITMAP  MOVEABLE PURE   "bitmaps/k29o.bmp"\r
+P29S                    BITMAP  MOVEABLE PURE   "bitmaps/p29s.bmp"\r
+N29S                    BITMAP  MOVEABLE PURE   "bitmaps/n29s.bmp"\r
+B29S                    BITMAP  MOVEABLE PURE   "bitmaps/b29s.bmp"\r
+R29S                    BITMAP  MOVEABLE PURE   "bitmaps/r29s.bmp"\r
+Q29S                    BITMAP  MOVEABLE PURE   "bitmaps/q29s.bmp"\r
+K29S                    BITMAP  MOVEABLE PURE   "bitmaps/k29s.bmp"\r
+P29W                    BITMAP  MOVEABLE PURE   "bitmaps/p29w.bmp"\r
+N29W                    BITMAP  MOVEABLE PURE   "bitmaps/n29w.bmp"\r
+B29W                    BITMAP  MOVEABLE PURE   "bitmaps/b29w.bmp"\r
+R29W                    BITMAP  MOVEABLE PURE   "bitmaps/r29w.bmp"\r
+Q29W                    BITMAP  MOVEABLE PURE   "bitmaps/q29w.bmp"\r
+K29W                    BITMAP  MOVEABLE PURE   "bitmaps/k29w.bmp"\r
+P33O                    BITMAP  MOVEABLE PURE   "bitmaps/p33o.bmp"\r
+N33O                    BITMAP  MOVEABLE PURE   "bitmaps/n33o.bmp"\r
+B33O                    BITMAP  MOVEABLE PURE   "bitmaps/b33o.bmp"\r
+R33O                    BITMAP  MOVEABLE PURE   "bitmaps/r33o.bmp"\r
+Q33O                    BITMAP  MOVEABLE PURE   "bitmaps/q33o.bmp"\r
+K33O                    BITMAP  MOVEABLE PURE   "bitmaps/k33o.bmp"\r
+P33S                    BITMAP  MOVEABLE PURE   "bitmaps/p33s.bmp"\r
+N33S                    BITMAP  MOVEABLE PURE   "bitmaps/n33s.bmp"\r
+B33S                    BITMAP  MOVEABLE PURE   "bitmaps/b33s.bmp"\r
+R33S                    BITMAP  MOVEABLE PURE   "bitmaps/r33s.bmp"\r
+Q33S                    BITMAP  MOVEABLE PURE   "bitmaps/q33s.bmp"\r
+K33S                    BITMAP  MOVEABLE PURE   "bitmaps/k33s.bmp"\r
+P33W                    BITMAP  MOVEABLE PURE   "bitmaps/p33w.bmp"\r
+N33W                    BITMAP  MOVEABLE PURE   "bitmaps/n33w.bmp"\r
+B33W                    BITMAP  MOVEABLE PURE   "bitmaps/b33w.bmp"\r
+R33W                    BITMAP  MOVEABLE PURE   "bitmaps/r33w.bmp"\r
+Q33W                    BITMAP  MOVEABLE PURE   "bitmaps/q33w.bmp"\r
+K33W                    BITMAP  MOVEABLE PURE   "bitmaps/k33w.bmp"\r
+P37O                    BITMAP  MOVEABLE PURE   "bitmaps/p37o.bmp"\r
+N37O                    BITMAP  MOVEABLE PURE   "bitmaps/n37o.bmp"\r
+B37O                    BITMAP  MOVEABLE PURE   "bitmaps/b37o.bmp"\r
+R37O                    BITMAP  MOVEABLE PURE   "bitmaps/r37o.bmp"\r
+Q37O                    BITMAP  MOVEABLE PURE   "bitmaps/q37o.bmp"\r
+K37O                    BITMAP  MOVEABLE PURE   "bitmaps/k37o.bmp"\r
+P37S                    BITMAP  MOVEABLE PURE   "bitmaps/p37s.bmp"\r
+N37S                    BITMAP  MOVEABLE PURE   "bitmaps/n37s.bmp"\r
+B37S                    BITMAP  MOVEABLE PURE   "bitmaps/b37s.bmp"\r
+R37S                    BITMAP  MOVEABLE PURE   "bitmaps/r37s.bmp"\r
+Q37S                    BITMAP  MOVEABLE PURE   "bitmaps/q37s.bmp"\r
+K37S                    BITMAP  MOVEABLE PURE   "bitmaps/k37s.bmp"\r
+P37W                    BITMAP  MOVEABLE PURE   "bitmaps/p37w.bmp"\r
+N37W                    BITMAP  MOVEABLE PURE   "bitmaps/n37w.bmp"\r
+B37W                    BITMAP  MOVEABLE PURE   "bitmaps/b37w.bmp"\r
+R37W                    BITMAP  MOVEABLE PURE   "bitmaps/r37w.bmp"\r
+Q37W                    BITMAP  MOVEABLE PURE   "bitmaps/q37w.bmp"\r
+K37W                    BITMAP  MOVEABLE PURE   "bitmaps/k37w.bmp"\r
+P40O                    BITMAP  MOVEABLE PURE   "bitmaps/p40o.bmp"\r
+N40O                    BITMAP  MOVEABLE PURE   "bitmaps/n40o.bmp"\r
+B40O                    BITMAP  MOVEABLE PURE   "bitmaps/b40o.bmp"\r
+R40O                    BITMAP  MOVEABLE PURE   "bitmaps/r40o.bmp"\r
+Q40O                    BITMAP  MOVEABLE PURE   "bitmaps/q40o.bmp"\r
+K40O                    BITMAP  MOVEABLE PURE   "bitmaps/k40o.bmp"\r
+P40S                    BITMAP  MOVEABLE PURE   "bitmaps/p40s.bmp"\r
+N40S                    BITMAP  MOVEABLE PURE   "bitmaps/n40s.bmp"\r
+B40S                    BITMAP  MOVEABLE PURE   "bitmaps/b40s.bmp"\r
+R40S                    BITMAP  MOVEABLE PURE   "bitmaps/r40s.bmp"\r
+Q40S                    BITMAP  MOVEABLE PURE   "bitmaps/q40s.bmp"\r
+K40S                    BITMAP  MOVEABLE PURE   "bitmaps/k40s.bmp"\r
+P40W                    BITMAP  MOVEABLE PURE   "bitmaps/p40w.bmp"\r
+N40W                    BITMAP  MOVEABLE PURE   "bitmaps/n40w.bmp"\r
+B40W                    BITMAP  MOVEABLE PURE   "bitmaps/b40w.bmp"\r
+R40W                    BITMAP  MOVEABLE PURE   "bitmaps/r40w.bmp"\r
+Q40W                    BITMAP  MOVEABLE PURE   "bitmaps/q40w.bmp"\r
+K40W                    BITMAP  MOVEABLE PURE   "bitmaps/k40w.bmp"\r
+P45O                    BITMAP  MOVEABLE PURE   "bitmaps/p45o.bmp"\r
+N45O                    BITMAP  MOVEABLE PURE   "bitmaps/n45o.bmp"\r
+B45O                    BITMAP  MOVEABLE PURE   "bitmaps/b45o.bmp"\r
+R45O                    BITMAP  MOVEABLE PURE   "bitmaps/r45o.bmp"\r
+Q45O                    BITMAP  MOVEABLE PURE   "bitmaps/q45o.bmp"\r
+K45O                    BITMAP  MOVEABLE PURE   "bitmaps/k45o.bmp"\r
+P45S                    BITMAP  MOVEABLE PURE   "bitmaps/p45s.bmp"\r
+N45S                    BITMAP  MOVEABLE PURE   "bitmaps/n45s.bmp"\r
+B45S                    BITMAP  MOVEABLE PURE   "bitmaps/b45s.bmp"\r
+R45S                    BITMAP  MOVEABLE PURE   "bitmaps/r45s.bmp"\r
+Q45S                    BITMAP  MOVEABLE PURE   "bitmaps/q45s.bmp"\r
+K45S                    BITMAP  MOVEABLE PURE   "bitmaps/k45s.bmp"\r
+P45W                    BITMAP  MOVEABLE PURE   "bitmaps/p45w.bmp"\r
+N45W                    BITMAP  MOVEABLE PURE   "bitmaps/n45w.bmp"\r
+B45W                    BITMAP  MOVEABLE PURE   "bitmaps/b45w.bmp"\r
+R45W                    BITMAP  MOVEABLE PURE   "bitmaps/r45w.bmp"\r
+Q45W                    BITMAP  MOVEABLE PURE   "bitmaps/q45w.bmp"\r
+K45W                    BITMAP  MOVEABLE PURE   "bitmaps/k45w.bmp"\r
+P49O                    BITMAP  MOVEABLE PURE   "bitmaps/p49o.bmp"\r
+N49O                    BITMAP  MOVEABLE PURE   "bitmaps/n49o.bmp"\r
+B49O                    BITMAP  MOVEABLE PURE   "bitmaps/b49o.bmp"\r
+R49O                    BITMAP  MOVEABLE PURE   "bitmaps/r49o.bmp"\r
+Q49O                    BITMAP  MOVEABLE PURE   "bitmaps/q49o.bmp"\r
+K49O                    BITMAP  MOVEABLE PURE   "bitmaps/k49o.bmp"\r
+P49S                    BITMAP  MOVEABLE PURE   "bitmaps/p49s.bmp"\r
+N49S                    BITMAP  MOVEABLE PURE   "bitmaps/n49s.bmp"\r
+B49S                    BITMAP  MOVEABLE PURE   "bitmaps/b49s.bmp"\r
+R49S                    BITMAP  MOVEABLE PURE   "bitmaps/r49s.bmp"\r
+Q49S                    BITMAP  MOVEABLE PURE   "bitmaps/q49s.bmp"\r
+K49S                    BITMAP  MOVEABLE PURE   "bitmaps/k49s.bmp"\r
+P49W                    BITMAP  MOVEABLE PURE   "bitmaps/p49w.bmp"\r
+N49W                    BITMAP  MOVEABLE PURE   "bitmaps/n49w.bmp"\r
+B49W                    BITMAP  MOVEABLE PURE   "bitmaps/b49w.bmp"\r
+R49W                    BITMAP  MOVEABLE PURE   "bitmaps/r49w.bmp"\r
+Q49W                    BITMAP  MOVEABLE PURE   "bitmaps/q49w.bmp"\r
+K49W                    BITMAP  MOVEABLE PURE   "bitmaps/k49w.bmp"\r
+P54O                    BITMAP  MOVEABLE PURE   "bitmaps/p54o.bmp"\r
+N54O                    BITMAP  MOVEABLE PURE   "bitmaps/n54o.bmp"\r
+B54O                    BITMAP  MOVEABLE PURE   "bitmaps/b54o.bmp"\r
+R54O                    BITMAP  MOVEABLE PURE   "bitmaps/r54o.bmp"\r
+Q54O                    BITMAP  MOVEABLE PURE   "bitmaps/q54o.bmp"\r
+K54O                    BITMAP  MOVEABLE PURE   "bitmaps/k54o.bmp"\r
+P54S                    BITMAP  MOVEABLE PURE   "bitmaps/p54s.bmp"\r
+N54S                    BITMAP  MOVEABLE PURE   "bitmaps/n54s.bmp"\r
+B54S                    BITMAP  MOVEABLE PURE   "bitmaps/b54s.bmp"\r
+R54S                    BITMAP  MOVEABLE PURE   "bitmaps/r54s.bmp"\r
+Q54S                    BITMAP  MOVEABLE PURE   "bitmaps/q54s.bmp"\r
+K54S                    BITMAP  MOVEABLE PURE   "bitmaps/k54s.bmp"\r
+P54W                    BITMAP  MOVEABLE PURE   "bitmaps/p54w.bmp"\r
+N54W                    BITMAP  MOVEABLE PURE   "bitmaps/n54w.bmp"\r
+B54W                    BITMAP  MOVEABLE PURE   "bitmaps/b54w.bmp"\r
+R54W                    BITMAP  MOVEABLE PURE   "bitmaps/r54w.bmp"\r
+Q54W                    BITMAP  MOVEABLE PURE   "bitmaps/q54w.bmp"\r
+K54W                    BITMAP  MOVEABLE PURE   "bitmaps/k54w.bmp"\r
+P58O                    BITMAP  MOVEABLE PURE   "bitmaps/p58o.bmp"\r
+N58O                    BITMAP  MOVEABLE PURE   "bitmaps/n58o.bmp"\r
+B58O                    BITMAP  MOVEABLE PURE   "bitmaps/b58o.bmp"\r
+R58O                    BITMAP  MOVEABLE PURE   "bitmaps/r58o.bmp"\r
+Q58O                    BITMAP  MOVEABLE PURE   "bitmaps/q58o.bmp"\r
+K58O                    BITMAP  MOVEABLE PURE   "bitmaps/k58o.bmp"\r
+P58S                    BITMAP  MOVEABLE PURE   "bitmaps/p58s.bmp"\r
+N58S                    BITMAP  MOVEABLE PURE   "bitmaps/n58s.bmp"\r
+B58S                    BITMAP  MOVEABLE PURE   "bitmaps/b58s.bmp"\r
+R58S                    BITMAP  MOVEABLE PURE   "bitmaps/r58s.bmp"\r
+Q58S                    BITMAP  MOVEABLE PURE   "bitmaps/q58s.bmp"\r
+K58S                    BITMAP  MOVEABLE PURE   "bitmaps/k58s.bmp"\r
+P58W                    BITMAP  MOVEABLE PURE   "bitmaps/p58w.bmp"\r
+N58W                    BITMAP  MOVEABLE PURE   "bitmaps/n58w.bmp"\r
+B58W                    BITMAP  MOVEABLE PURE   "bitmaps/b58w.bmp"\r
+R58W                    BITMAP  MOVEABLE PURE   "bitmaps/r58w.bmp"\r
+Q58W                    BITMAP  MOVEABLE PURE   "bitmaps/q58w.bmp"\r
+K58W                    BITMAP  MOVEABLE PURE   "bitmaps/k58w.bmp"\r
+P64O                    BITMAP  MOVEABLE PURE   "bitmaps/p64o.bmp"\r
+N64O                    BITMAP  MOVEABLE PURE   "bitmaps/n64o.bmp"\r
+B64O                    BITMAP  MOVEABLE PURE   "bitmaps/b64o.bmp"\r
+R64O                    BITMAP  MOVEABLE PURE   "bitmaps/r64o.bmp"\r
+Q64O                    BITMAP  MOVEABLE PURE   "bitmaps/q64o.bmp"\r
+K64O                    BITMAP  MOVEABLE PURE   "bitmaps/k64o.bmp"\r
+P64S                    BITMAP  MOVEABLE PURE   "bitmaps/p64s.bmp"\r
+N64S                    BITMAP  MOVEABLE PURE   "bitmaps/n64s.bmp"\r
+B64S                    BITMAP  MOVEABLE PURE   "bitmaps/b64s.bmp"\r
+R64S                    BITMAP  MOVEABLE PURE   "bitmaps/r64s.bmp"\r
+Q64S                    BITMAP  MOVEABLE PURE   "bitmaps/q64s.bmp"\r
+K64S                    BITMAP  MOVEABLE PURE   "bitmaps/k64s.bmp"\r
+P64W                    BITMAP  MOVEABLE PURE   "bitmaps/p64w.bmp"\r
+N64W                    BITMAP  MOVEABLE PURE   "bitmaps/n64w.bmp"\r
+B64W                    BITMAP  MOVEABLE PURE   "bitmaps/b64w.bmp"\r
+R64W                    BITMAP  MOVEABLE PURE   "bitmaps/r64w.bmp"\r
+Q64W                    BITMAP  MOVEABLE PURE   "bitmaps/q64w.bmp"\r
+K64W                    BITMAP  MOVEABLE PURE   "bitmaps/k64w.bmp"\r
+P72O                    BITMAP  MOVEABLE PURE   "bitmaps/p72o.bmp"\r
+N72O                    BITMAP  MOVEABLE PURE   "bitmaps/n72o.bmp"\r
+B72O                    BITMAP  MOVEABLE PURE   "bitmaps/b72o.bmp"\r
+R72O                    BITMAP  MOVEABLE PURE   "bitmaps/r72o.bmp"\r
+Q72O                    BITMAP  MOVEABLE PURE   "bitmaps/q72o.bmp"\r
+K72O                    BITMAP  MOVEABLE PURE   "bitmaps/k72o.bmp"\r
+P72S                    BITMAP  MOVEABLE PURE   "bitmaps/p72s.bmp"\r
+N72S                    BITMAP  MOVEABLE PURE   "bitmaps/n72s.bmp"\r
+B72S                    BITMAP  MOVEABLE PURE   "bitmaps/b72s.bmp"\r
+R72S                    BITMAP  MOVEABLE PURE   "bitmaps/r72s.bmp"\r
+Q72S                    BITMAP  MOVEABLE PURE   "bitmaps/q72s.bmp"\r
+K72S                    BITMAP  MOVEABLE PURE   "bitmaps/k72s.bmp"\r
+P72W                    BITMAP  MOVEABLE PURE   "bitmaps/p72w.bmp"\r
+N72W                    BITMAP  MOVEABLE PURE   "bitmaps/n72w.bmp"\r
+B72W                    BITMAP  MOVEABLE PURE   "bitmaps/b72w.bmp"\r
+R72W                    BITMAP  MOVEABLE PURE   "bitmaps/r72w.bmp"\r
+Q72W                    BITMAP  MOVEABLE PURE   "bitmaps/q72w.bmp"\r
+K72W                    BITMAP  MOVEABLE PURE   "bitmaps/k72w.bmp"\r
+P80O                    BITMAP  MOVEABLE PURE   "bitmaps/p80o.bmp"\r
+N80O                    BITMAP  MOVEABLE PURE   "bitmaps/n80o.bmp"\r
+B80O                    BITMAP  MOVEABLE PURE   "bitmaps/b80o.bmp"\r
+R80O                    BITMAP  MOVEABLE PURE   "bitmaps/r80o.bmp"\r
+Q80O                    BITMAP  MOVEABLE PURE   "bitmaps/q80o.bmp"\r
+K80O                    BITMAP  MOVEABLE PURE   "bitmaps/k80o.bmp"\r
+P80S                    BITMAP  MOVEABLE PURE   "bitmaps/p80s.bmp"\r
+N80S                    BITMAP  MOVEABLE PURE   "bitmaps/n80s.bmp"\r
+B80S                    BITMAP  MOVEABLE PURE   "bitmaps/b80s.bmp"\r
+R80S                    BITMAP  MOVEABLE PURE   "bitmaps/r80s.bmp"\r
+Q80S                    BITMAP  MOVEABLE PURE   "bitmaps/q80s.bmp"\r
+K80S                    BITMAP  MOVEABLE PURE   "bitmaps/k80s.bmp"\r
+P80W                    BITMAP  MOVEABLE PURE   "bitmaps/p80w.bmp"\r
+N80W                    BITMAP  MOVEABLE PURE   "bitmaps/n80w.bmp"\r
+B80W                    BITMAP  MOVEABLE PURE   "bitmaps/b80w.bmp"\r
+R80W                    BITMAP  MOVEABLE PURE   "bitmaps/r80w.bmp"\r
+Q80W                    BITMAP  MOVEABLE PURE   "bitmaps/q80w.bmp"\r
+K80W                    BITMAP  MOVEABLE PURE   "bitmaps/k80w.bmp"\r
+P87O                    BITMAP  MOVEABLE PURE   "bitmaps/p87o.bmp"\r
+N87O                    BITMAP  MOVEABLE PURE   "bitmaps/n87o.bmp"\r
+B87O                    BITMAP  MOVEABLE PURE   "bitmaps/b87o.bmp"\r
+R87O                    BITMAP  MOVEABLE PURE   "bitmaps/r87o.bmp"\r
+Q87O                    BITMAP  MOVEABLE PURE   "bitmaps/q87o.bmp"\r
+K87O                    BITMAP  MOVEABLE PURE   "bitmaps/k87o.bmp"\r
+P87S                    BITMAP  MOVEABLE PURE   "bitmaps/p87s.bmp"\r
+N87S                    BITMAP  MOVEABLE PURE   "bitmaps/n87s.bmp"\r
+B87S                    BITMAP  MOVEABLE PURE   "bitmaps/b87s.bmp"\r
+R87S                    BITMAP  MOVEABLE PURE   "bitmaps/r87s.bmp"\r
+Q87S                    BITMAP  MOVEABLE PURE   "bitmaps/q87s.bmp"\r
+K87S                    BITMAP  MOVEABLE PURE   "bitmaps/k87s.bmp"\r
+P87W                    BITMAP  MOVEABLE PURE   "bitmaps/p87w.bmp"\r
+N87W                    BITMAP  MOVEABLE PURE   "bitmaps/n87w.bmp"\r
+B87W                    BITMAP  MOVEABLE PURE   "bitmaps/b87w.bmp"\r
+R87W                    BITMAP  MOVEABLE PURE   "bitmaps/r87w.bmp"\r
+Q87W                    BITMAP  MOVEABLE PURE   "bitmaps/q87w.bmp"\r
+K87W                    BITMAP  MOVEABLE PURE   "bitmaps/k87w.bmp"\r
+P95O                    BITMAP  MOVEABLE PURE   "bitmaps/p95o.bmp"\r
+N95O                    BITMAP  MOVEABLE PURE   "bitmaps/n95o.bmp"\r
+B95O                    BITMAP  MOVEABLE PURE   "bitmaps/b95o.bmp"\r
+R95O                    BITMAP  MOVEABLE PURE   "bitmaps/r95o.bmp"\r
+Q95O                    BITMAP  MOVEABLE PURE   "bitmaps/q95o.bmp"\r
+K95O                    BITMAP  MOVEABLE PURE   "bitmaps/k95o.bmp"\r
+P95S                    BITMAP  MOVEABLE PURE   "bitmaps/p95s.bmp"\r
+N95S                    BITMAP  MOVEABLE PURE   "bitmaps/n95s.bmp"\r
+B95S                    BITMAP  MOVEABLE PURE   "bitmaps/b95s.bmp"\r
+R95S                    BITMAP  MOVEABLE PURE   "bitmaps/r95s.bmp"\r
+Q95S                    BITMAP  MOVEABLE PURE   "bitmaps/q95s.bmp"\r
+K95S                    BITMAP  MOVEABLE PURE   "bitmaps/k95s.bmp"\r
+P95W                    BITMAP  MOVEABLE PURE   "bitmaps/p95w.bmp"\r
+N95W                    BITMAP  MOVEABLE PURE   "bitmaps/n95w.bmp"\r
+B95W                    BITMAP  MOVEABLE PURE   "bitmaps/b95w.bmp"\r
+R95W                    BITMAP  MOVEABLE PURE   "bitmaps/r95w.bmp"\r
+Q95W                    BITMAP  MOVEABLE PURE   "bitmaps/q95w.bmp"\r
+K95W                    BITMAP  MOVEABLE PURE   "bitmaps/k95w.bmp"\r
+P108O                   BITMAP  MOVEABLE PURE   "bitmaps/p108o.bmp"\r
+N108O                   BITMAP  MOVEABLE PURE   "bitmaps/n108o.bmp"\r
+B108O                   BITMAP  MOVEABLE PURE   "bitmaps/b108o.bmp"\r
+R108O                   BITMAP  MOVEABLE PURE   "bitmaps/r108o.bmp"\r
+Q108O                   BITMAP  MOVEABLE PURE   "bitmaps/q108o.bmp"\r
+K108O                   BITMAP  MOVEABLE PURE   "bitmaps/k108o.bmp"\r
+P108S                   BITMAP  MOVEABLE PURE   "bitmaps/p108s.bmp"\r
+N108S                   BITMAP  MOVEABLE PURE   "bitmaps/n108s.bmp"\r
+B108S                   BITMAP  MOVEABLE PURE   "bitmaps/b108s.bmp"\r
+R108S                   BITMAP  MOVEABLE PURE   "bitmaps/r108s.bmp"\r
+Q108S                   BITMAP  MOVEABLE PURE   "bitmaps/q108s.bmp"\r
+K108S                   BITMAP  MOVEABLE PURE   "bitmaps/k108s.bmp"\r
+P108W                   BITMAP  MOVEABLE PURE   "bitmaps/p108w.bmp"\r
+N108W                   BITMAP  MOVEABLE PURE   "bitmaps/n108w.bmp"\r
+B108W                   BITMAP  MOVEABLE PURE   "bitmaps/b108w.bmp"\r
+R108W                   BITMAP  MOVEABLE PURE   "bitmaps/r108w.bmp"\r
+Q108W                   BITMAP  MOVEABLE PURE   "bitmaps/q108w.bmp"\r
+K108W                   BITMAP  MOVEABLE PURE   "bitmaps/k108w.bmp"\r
+P116O                   BITMAP  MOVEABLE PURE   "bitmaps/p116o.bmp"\r
+N116O                   BITMAP  MOVEABLE PURE   "bitmaps/n116o.bmp"\r
+B116O                   BITMAP  MOVEABLE PURE   "bitmaps/b116o.bmp"\r
+R116O                   BITMAP  MOVEABLE PURE   "bitmaps/r116o.bmp"\r
+Q116O                   BITMAP  MOVEABLE PURE   "bitmaps/q116o.bmp"\r
+K116O                   BITMAP  MOVEABLE PURE   "bitmaps/k116o.bmp"\r
+P116S                   BITMAP  MOVEABLE PURE   "bitmaps/p116s.bmp"\r
+N116S                   BITMAP  MOVEABLE PURE   "bitmaps/n116s.bmp"\r
+B116S                   BITMAP  MOVEABLE PURE   "bitmaps/b116s.bmp"\r
+R116S                   BITMAP  MOVEABLE PURE   "bitmaps/r116s.bmp"\r
+Q116S                   BITMAP  MOVEABLE PURE   "bitmaps/q116s.bmp"\r
+K116S                   BITMAP  MOVEABLE PURE   "bitmaps/k116s.bmp"\r
+P116W                   BITMAP  MOVEABLE PURE   "bitmaps/p116w.bmp"\r
+N116W                   BITMAP  MOVEABLE PURE   "bitmaps/n116w.bmp"\r
+B116W                   BITMAP  MOVEABLE PURE   "bitmaps/b116w.bmp"\r
+R116W                   BITMAP  MOVEABLE PURE   "bitmaps/r116w.bmp"\r
+Q116W                   BITMAP  MOVEABLE PURE   "bitmaps/q116w.bmp"\r
+K116W                   BITMAP  MOVEABLE PURE   "bitmaps/k116w.bmp"\r
+P129O                   BITMAP  MOVEABLE PURE   "bitmaps/p129o.bmp"\r
+N129O                   BITMAP  MOVEABLE PURE   "bitmaps/n129o.bmp"\r
+B129O                   BITMAP  MOVEABLE PURE   "bitmaps/b129o.bmp"\r
+R129O                   BITMAP  MOVEABLE PURE   "bitmaps/r129o.bmp"\r
+Q129O                   BITMAP  MOVEABLE PURE   "bitmaps/q129o.bmp"\r
+K129O                   BITMAP  MOVEABLE PURE   "bitmaps/k129o.bmp"\r
+P129S                   BITMAP  MOVEABLE PURE   "bitmaps/p129s.bmp"\r
+N129S                   BITMAP  MOVEABLE PURE   "bitmaps/n129s.bmp"\r
+B129S                   BITMAP  MOVEABLE PURE   "bitmaps/b129s.bmp"\r
+R129S                   BITMAP  MOVEABLE PURE   "bitmaps/r129s.bmp"\r
+Q129S                   BITMAP  MOVEABLE PURE   "bitmaps/q129s.bmp"\r
+K129S                   BITMAP  MOVEABLE PURE   "bitmaps/k129s.bmp"\r
+P129W                   BITMAP  MOVEABLE PURE   "bitmaps/p129w.bmp"\r
+N129W                   BITMAP  MOVEABLE PURE   "bitmaps/n129w.bmp"\r
+B129W                   BITMAP  MOVEABLE PURE   "bitmaps/b129w.bmp"\r
+R129W                   BITMAP  MOVEABLE PURE   "bitmaps/r129w.bmp"\r
+Q129W                   BITMAP  MOVEABLE PURE   "bitmaps/q129w.bmp"\r
+K129W                   BITMAP  MOVEABLE PURE   "bitmaps/k129w.bmp"\r
+GALACTIC                BITMAP  MOVEABLE PURE   "bitmaps/galactic.bmp"\r
+TIM                     BITMAP  MOVEABLE PURE   "bitmaps/tim.bmp"\r
 // [HGM] Some fairy symbols:\r
-E72O                    BITMAP  MOVEABLE PURE   "bitmaps\\e72o.bmp"\r
-A72O                    BITMAP  MOVEABLE PURE   "bitmaps\\a72o.bmp"\r
-AA72O                   BITMAP  MOVEABLE PURE   "bitmaps\\as72o.bmp"\r
-C72O                    BITMAP  MOVEABLE PURE   "bitmaps\\c72o.bmp"\r
-CV72O                   BITMAP  MOVEABLE PURE   "bitmaps\\cv72o.bmp"\r
-F72O                    BITMAP  MOVEABLE PURE   "bitmaps\\f72o.bmp"\r
-M72O                    BITMAP  MOVEABLE PURE   "bitmaps\\m72o.bmp"\r
-W72O                    BITMAP  MOVEABLE PURE   "bitmaps\\w72o.bmp"\r
-O72O                    BITMAP  MOVEABLE PURE   "bitmaps\\o72o.bmp"\r
-U72O                    BITMAP  MOVEABLE PURE   "bitmaps\\u72o.bmp"\r
-H72O                    BITMAP  MOVEABLE PURE   "bitmaps\\h72o.bmp"\r
-G72O                    BITMAP  MOVEABLE PURE   "bitmaps\\g72o.bmp"\r
-V72O                    BITMAP  MOVEABLE PURE   "bitmaps\\v72o.bmp"\r
-S72O                    BITMAP  MOVEABLE PURE   "bitmaps\\s72o.bmp"\r
-L72O                    BITMAP  MOVEABLE PURE   "bitmaps\\l72o.bmp"\r
-DK72O                   BITMAP  MOVEABLE PURE   "bitmaps\\dk72o.bmp"\r
-WP72O                   BITMAP  MOVEABLE PURE   "bitmaps\\wp72o.bmp"\r
-WN72O                   BITMAP  MOVEABLE PURE   "bitmaps\\wn72o.bmp"\r
-WL72O                   BITMAP  MOVEABLE PURE   "bitmaps\\wl72o.bmp"\r
-WS72O                   BITMAP  MOVEABLE PURE   "bitmaps\\ws72o.bmp"\r
-E72S                    BITMAP  MOVEABLE PURE   "bitmaps\\e72s.bmp"\r
-A72S                    BITMAP  MOVEABLE PURE   "bitmaps\\a72s.bmp"\r
-AA72S                   BITMAP  MOVEABLE PURE   "bitmaps\\as72s.bmp"\r
-C72S                    BITMAP  MOVEABLE PURE   "bitmaps\\c72s.bmp"\r
-CV72S                   BITMAP  MOVEABLE PURE   "bitmaps\\cv72s.bmp"\r
-F72S                    BITMAP  MOVEABLE PURE   "bitmaps\\f72s.bmp"\r
-M72S                    BITMAP  MOVEABLE PURE   "bitmaps\\m72s.bmp"\r
-W72S                    BITMAP  MOVEABLE PURE   "bitmaps\\w72s.bmp"\r
-O72S                    BITMAP  MOVEABLE PURE   "bitmaps\\o72s.bmp"\r
-U72S                    BITMAP  MOVEABLE PURE   "bitmaps\\u72s.bmp"\r
-H72S                    BITMAP  MOVEABLE PURE   "bitmaps\\h72s.bmp"\r
-G72S                    BITMAP  MOVEABLE PURE   "bitmaps\\g72s.bmp"\r
-V72S                    BITMAP  MOVEABLE PURE   "bitmaps\\v72s.bmp"\r
-S72S                    BITMAP  MOVEABLE PURE   "bitmaps\\s72s.bmp"\r
-L72S                    BITMAP  MOVEABLE PURE   "bitmaps\\l72s.bmp"\r
-DK72S                   BITMAP  MOVEABLE PURE   "bitmaps\\dk72s.bmp"\r
-WP72S                   BITMAP  MOVEABLE PURE   "bitmaps\\wp72s.bmp"\r
-WN72S                   BITMAP  MOVEABLE PURE   "bitmaps\\wn72s.bmp"\r
-WL72S                   BITMAP  MOVEABLE PURE   "bitmaps\\wl72s.bmp"\r
-WS72S                   BITMAP  MOVEABLE PURE   "bitmaps\\ws72s.bmp"\r
-E72W                    BITMAP  MOVEABLE PURE   "bitmaps\\e72w.bmp"\r
-A72W                    BITMAP  MOVEABLE PURE   "bitmaps\\a72w.bmp"\r
-AA72W                   BITMAP  MOVEABLE PURE   "bitmaps\\as72w.bmp"\r
-C72W                    BITMAP  MOVEABLE PURE   "bitmaps\\c72w.bmp"\r
-CV72W                   BITMAP  MOVEABLE PURE   "bitmaps\\cv72w.bmp"\r
-F72W                    BITMAP  MOVEABLE PURE   "bitmaps\\f72w.bmp"\r
-M72W                    BITMAP  MOVEABLE PURE   "bitmaps\\m72w.bmp"\r
-W72W                    BITMAP  MOVEABLE PURE   "bitmaps\\w72w.bmp"\r
-O72W                    BITMAP  MOVEABLE PURE   "bitmaps\\o72w.bmp"\r
-U72W                    BITMAP  MOVEABLE PURE   "bitmaps\\u72w.bmp"\r
-H72W                    BITMAP  MOVEABLE PURE   "bitmaps\\h72w.bmp"\r
-G72W                    BITMAP  MOVEABLE PURE   "bitmaps\\g72w.bmp"\r
-V72W                    BITMAP  MOVEABLE PURE   "bitmaps\\v72w.bmp"\r
-S72W                    BITMAP  MOVEABLE PURE   "bitmaps\\s72w.bmp"\r
-L72W                    BITMAP  MOVEABLE PURE   "bitmaps\\l72w.bmp"\r
-DK72W                   BITMAP  MOVEABLE PURE   "bitmaps\\dk72w.bmp"\r
-E49O                    BITMAP  MOVEABLE PURE   "bitmaps\\e49o.bmp"\r
-A49O                    BITMAP  MOVEABLE PURE   "bitmaps\\a49o.bmp"\r
-AA49O                   BITMAP  MOVEABLE PURE   "bitmaps\\as49o.bmp"\r
-C49O                    BITMAP  MOVEABLE PURE   "bitmaps\\c49o.bmp"\r
-CV49O                   BITMAP  MOVEABLE PURE   "bitmaps\\cv49o.bmp"\r
-F49O                    BITMAP  MOVEABLE PURE   "bitmaps\\f49o.bmp"\r
-M49O                    BITMAP  MOVEABLE PURE   "bitmaps\\m49o.bmp"\r
-W49O                    BITMAP  MOVEABLE PURE   "bitmaps\\w49o.bmp"\r
-O49O                    BITMAP  MOVEABLE PURE   "bitmaps\\o49o.bmp"\r
-U49O                    BITMAP  MOVEABLE PURE   "bitmaps\\u49o.bmp"\r
-H49O                    BITMAP  MOVEABLE PURE   "bitmaps\\h49o.bmp"\r
-G49O                    BITMAP  MOVEABLE PURE   "bitmaps\\g49o.bmp"\r
-V49O                    BITMAP  MOVEABLE PURE   "bitmaps\\v49o.bmp"\r
-S49O                    BITMAP  MOVEABLE PURE   "bitmaps\\s49o.bmp"\r
-L49O                    BITMAP  MOVEABLE PURE   "bitmaps\\l49o.bmp"\r
-DK49O                   BITMAP  MOVEABLE PURE   "bitmaps\\dk49o.bmp"\r
-WP49O                   BITMAP  MOVEABLE PURE   "bitmaps\\wp49o.bmp"\r
-WN49O                   BITMAP  MOVEABLE PURE   "bitmaps\\wn49o.bmp"\r
-WL49O                   BITMAP  MOVEABLE PURE   "bitmaps\\wl49o.bmp"\r
-WS49O                   BITMAP  MOVEABLE PURE   "bitmaps\\ws49o.bmp"\r
-E49S                    BITMAP  MOVEABLE PURE   "bitmaps\\e49s.bmp"\r
-A49S                    BITMAP  MOVEABLE PURE   "bitmaps\\a49s.bmp"\r
-AA49S                   BITMAP  MOVEABLE PURE   "bitmaps\\as49s.bmp"\r
-C49S                    BITMAP  MOVEABLE PURE   "bitmaps\\c49s.bmp"\r
-CV49S                   BITMAP  MOVEABLE PURE   "bitmaps\\cv49s.bmp"\r
-F49S                    BITMAP  MOVEABLE PURE   "bitmaps\\f49s.bmp"\r
-M49S                    BITMAP  MOVEABLE PURE   "bitmaps\\m49s.bmp"\r
-W49S                    BITMAP  MOVEABLE PURE   "bitmaps\\w49s.bmp"\r
-O49S                    BITMAP  MOVEABLE PURE   "bitmaps\\o49s.bmp"\r
-U49S                    BITMAP  MOVEABLE PURE   "bitmaps\\u49s.bmp"\r
-H49S                    BITMAP  MOVEABLE PURE   "bitmaps\\h49s.bmp"\r
-G49S                    BITMAP  MOVEABLE PURE   "bitmaps\\g49s.bmp"\r
-V49S                    BITMAP  MOVEABLE PURE   "bitmaps\\v49s.bmp"\r
-S49S                    BITMAP  MOVEABLE PURE   "bitmaps\\s49s.bmp"\r
-L49S                    BITMAP  MOVEABLE PURE   "bitmaps\\l49s.bmp"\r
-DK49S                   BITMAP  MOVEABLE PURE   "bitmaps\\dk49s.bmp"\r
-WP49S                   BITMAP  MOVEABLE PURE   "bitmaps\\wp49s.bmp"\r
-WN49S                   BITMAP  MOVEABLE PURE   "bitmaps\\wn49s.bmp"\r
-WL49S                   BITMAP  MOVEABLE PURE   "bitmaps\\wl49s.bmp"\r
-WS49S                   BITMAP  MOVEABLE PURE   "bitmaps\\ws49s.bmp"\r
-E49W                    BITMAP  MOVEABLE PURE   "bitmaps\\e49w.bmp"\r
-A49W                    BITMAP  MOVEABLE PURE   "bitmaps\\a49w.bmp"\r
-AA49W                   BITMAP  MOVEABLE PURE   "bitmaps\\as49w.bmp"\r
-C49W                    BITMAP  MOVEABLE PURE   "bitmaps\\c49w.bmp"\r
-CV49W                   BITMAP  MOVEABLE PURE   "bitmaps\\cv49w.bmp"\r
-F49W                    BITMAP  MOVEABLE PURE   "bitmaps\\f49w.bmp"\r
-M49W                    BITMAP  MOVEABLE PURE   "bitmaps\\m49w.bmp"\r
-W49W                    BITMAP  MOVEABLE PURE   "bitmaps\\w49w.bmp"\r
-O49W                    BITMAP  MOVEABLE PURE   "bitmaps\\o49w.bmp"\r
-U49W                    BITMAP  MOVEABLE PURE   "bitmaps\\u49w.bmp"\r
-H49W                    BITMAP  MOVEABLE PURE   "bitmaps\\h49w.bmp"\r
-G49W                    BITMAP  MOVEABLE PURE   "bitmaps\\g49w.bmp"\r
-V49W                    BITMAP  MOVEABLE PURE   "bitmaps\\v49w.bmp"\r
-S49W                    BITMAP  MOVEABLE PURE   "bitmaps\\s49w.bmp"\r
-L49W                    BITMAP  MOVEABLE PURE   "bitmaps\\l49w.bmp"\r
-DK49W                   BITMAP  MOVEABLE PURE   "bitmaps\\dk49w.bmp"\r
-A33O                    BITMAP  MOVEABLE PURE   "bitmaps\\a33o.bmp"\r
-AA33O                   BITMAP  MOVEABLE PURE   "bitmaps\\as33o.bmp"\r
-C33O                    BITMAP  MOVEABLE PURE   "bitmaps\\c33o.bmp"\r
-CV33O                   BITMAP  MOVEABLE PURE   "bitmaps\\cv33o.bmp"\r
-V33O                    BITMAP  MOVEABLE PURE   "bitmaps\\v33o.bmp"\r
-E33O                    BITMAP  MOVEABLE PURE   "bitmaps\\e33o.bmp"\r
-F33O                    BITMAP  MOVEABLE PURE   "bitmaps\\f33o.bmp"\r
-H33O                    BITMAP  MOVEABLE PURE   "bitmaps\\h33o.bmp"\r
-G33O                    BITMAP  MOVEABLE PURE   "bitmaps\\g33o.bmp"\r
-L33O                    BITMAP  MOVEABLE PURE   "bitmaps\\l33o.bmp"\r
-W33O                    BITMAP  MOVEABLE PURE   "bitmaps\\w33o.bmp"\r
-M33O                    BITMAP  MOVEABLE PURE   "bitmaps\\m33o.bmp"\r
-O33O                    BITMAP  MOVEABLE PURE   "bitmaps\\o33o.bmp"\r
-DK33O                   BITMAP  MOVEABLE PURE   "bitmaps\\dk33o.bmp"\r
-A33W                    BITMAP  MOVEABLE PURE   "bitmaps\\a33w.bmp"\r
-AA33W                   BITMAP  MOVEABLE PURE   "bitmaps\\as33w.bmp"\r
-C33W                    BITMAP  MOVEABLE PURE   "bitmaps\\c33w.bmp"\r
-CV33W                   BITMAP  MOVEABLE PURE   "bitmaps\\cv33w.bmp"\r
-V33W                    BITMAP  MOVEABLE PURE   "bitmaps\\v33w.bmp"\r
-E33W                    BITMAP  MOVEABLE PURE   "bitmaps\\e33w.bmp"\r
-F33W                    BITMAP  MOVEABLE PURE   "bitmaps\\f33w.bmp"\r
-H33W                    BITMAP  MOVEABLE PURE   "bitmaps\\h33w.bmp"\r
-G33W                    BITMAP  MOVEABLE PURE   "bitmaps\\g33w.bmp"\r
-L33W                    BITMAP  MOVEABLE PURE   "bitmaps\\l33w.bmp"\r
-W33W                    BITMAP  MOVEABLE PURE   "bitmaps\\w33w.bmp"\r
-M33W                    BITMAP  MOVEABLE PURE   "bitmaps\\m33w.bmp"\r
-O33W                    BITMAP  MOVEABLE PURE   "bitmaps\\o33w.bmp"\r
-DK33W                   BITMAP  MOVEABLE PURE   "bitmaps\\dk33w.bmp"\r
-A33S                    BITMAP  MOVEABLE PURE   "bitmaps\\a33s.bmp"\r
-AA33S                   BITMAP  MOVEABLE PURE   "bitmaps\\as33s.bmp"\r
-C33S                    BITMAP  MOVEABLE PURE   "bitmaps\\c33s.bmp"\r
-CV33S                   BITMAP  MOVEABLE PURE   "bitmaps\\cv33s.bmp"\r
-V33S                    BITMAP  MOVEABLE PURE   "bitmaps\\v33s.bmp"\r
-E33S                    BITMAP  MOVEABLE PURE   "bitmaps\\e33s.bmp"\r
-F33S                    BITMAP  MOVEABLE PURE   "bitmaps\\f33s.bmp"\r
-H33S                    BITMAP  MOVEABLE PURE   "bitmaps\\h33s.bmp"\r
-G33S                    BITMAP  MOVEABLE PURE   "bitmaps\\g33s.bmp"\r
-L33S                    BITMAP  MOVEABLE PURE   "bitmaps\\l33s.bmp"\r
-W33S                    BITMAP  MOVEABLE PURE   "bitmaps\\w33s.bmp"\r
-M33S                    BITMAP  MOVEABLE PURE   "bitmaps\\m33s.bmp"\r
-O33S                    BITMAP  MOVEABLE PURE   "bitmaps\\o33s.bmp"\r
-DK33S                   BITMAP  MOVEABLE PURE   "bitmaps\\dk33s.bmp"\r
-\r
-A37O                    BITMAP  MOVEABLE PURE   "bitmaps\\a37o.bmp"\r
-L37O                    BITMAP  MOVEABLE PURE   "bitmaps\\l37o.bmp"\r
-C37O                    BITMAP  MOVEABLE PURE   "bitmaps\\c37o.bmp"\r
-CV37O                   BITMAP  MOVEABLE PURE   "bitmaps\\cv37o.bmp"\r
-A40O                    BITMAP  MOVEABLE PURE   "bitmaps\\a40o.bmp"\r
-L40O                    BITMAP  MOVEABLE PURE   "bitmaps\\l40o.bmp"\r
-C40O                    BITMAP  MOVEABLE PURE   "bitmaps\\c40o.bmp"\r
-CV40O                   BITMAP  MOVEABLE PURE   "bitmaps\\cv40o.bmp"\r
-A45O                    BITMAP  MOVEABLE PURE   "bitmaps\\a45o.bmp"\r
-L45O                    BITMAP  MOVEABLE PURE   "bitmaps\\l45o.bmp"\r
-C45O                    BITMAP  MOVEABLE PURE   "bitmaps\\c45o.bmp"\r
-CV45O                   BITMAP  MOVEABLE PURE   "bitmaps\\cv45o.bmp"\r
-A54O                    BITMAP  MOVEABLE PURE   "bitmaps\\a54o.bmp"\r
-L54O                    BITMAP  MOVEABLE PURE   "bitmaps\\l54o.bmp"\r
-C54O                    BITMAP  MOVEABLE PURE   "bitmaps\\c54o.bmp"\r
-CV54O                   BITMAP  MOVEABLE PURE   "bitmaps\\cv54o.bmp"\r
-V54O                    BITMAP  MOVEABLE PURE   "bitmaps\\v54o.bmp"\r
-A58O                    BITMAP  MOVEABLE PURE   "bitmaps\\a58o.bmp"\r
-L58O                    BITMAP  MOVEABLE PURE   "bitmaps\\l58o.bmp"\r
-C58O                    BITMAP  MOVEABLE PURE   "bitmaps\\c58o.bmp"\r
-CV58O                   BITMAP  MOVEABLE PURE   "bitmaps\\cv58o.bmp"\r
-A64O                    BITMAP  MOVEABLE PURE   "bitmaps\\a64o.bmp"\r
-L64O                    BITMAP  MOVEABLE PURE   "bitmaps\\l64o.bmp"\r
-C64O                    BITMAP  MOVEABLE PURE   "bitmaps\\c64o.bmp"\r
-CV64O                   BITMAP  MOVEABLE PURE   "bitmaps\\cv64o.bmp"\r
-A37W                    BITMAP  MOVEABLE PURE   "bitmaps\\a37w.bmp"\r
-L37W                    BITMAP  MOVEABLE PURE   "bitmaps\\l37w.bmp"\r
-C37W                    BITMAP  MOVEABLE PURE   "bitmaps\\c37w.bmp"\r
-CV37W                   BITMAP  MOVEABLE PURE   "bitmaps\\cv37w.bmp"\r
-A40W                    BITMAP  MOVEABLE PURE   "bitmaps\\a40w.bmp"\r
-L40W                    BITMAP  MOVEABLE PURE   "bitmaps\\l40w.bmp"\r
-C40W                    BITMAP  MOVEABLE PURE   "bitmaps\\c40w.bmp"\r
-CV40W                   BITMAP  MOVEABLE PURE   "bitmaps\\cv40w.bmp"\r
-A45W                    BITMAP  MOVEABLE PURE   "bitmaps\\a45w.bmp"\r
-L45W                    BITMAP  MOVEABLE PURE   "bitmaps\\l45w.bmp"\r
-C45W                    BITMAP  MOVEABLE PURE   "bitmaps\\c45w.bmp"\r
-CV45W                   BITMAP  MOVEABLE PURE   "bitmaps\\cv45w.bmp"\r
-A54W                    BITMAP  MOVEABLE PURE   "bitmaps\\a54w.bmp"\r
-L54W                    BITMAP  MOVEABLE PURE   "bitmaps\\l54w.bmp"\r
-C54W                    BITMAP  MOVEABLE PURE   "bitmaps\\c54w.bmp"\r
-CV54W                   BITMAP  MOVEABLE PURE   "bitmaps\\cv54w.bmp"\r
-V54W                    BITMAP  MOVEABLE PURE   "bitmaps\\v54w.bmp"\r
-A58W                    BITMAP  MOVEABLE PURE   "bitmaps\\a58w.bmp"\r
-L58W                    BITMAP  MOVEABLE PURE   "bitmaps\\l58w.bmp"\r
-C58W                    BITMAP  MOVEABLE PURE   "bitmaps\\c58w.bmp"\r
-CV58W                   BITMAP  MOVEABLE PURE   "bitmaps\\cv58w.bmp"\r
-A64W                    BITMAP  MOVEABLE PURE   "bitmaps\\a64w.bmp"\r
-L64W                    BITMAP  MOVEABLE PURE   "bitmaps\\l64w.bmp"\r
-C64W                    BITMAP  MOVEABLE PURE   "bitmaps\\c64w.bmp"\r
-CV64W                   BITMAP  MOVEABLE PURE   "bitmaps\\cv64w.bmp"\r
-A37S                    BITMAP  MOVEABLE PURE   "bitmaps\\a37s.bmp"\r
-L37S                    BITMAP  MOVEABLE PURE   "bitmaps\\l37s.bmp"\r
-C37S                    BITMAP  MOVEABLE PURE   "bitmaps\\c37s.bmp"\r
-CV37S                   BITMAP  MOVEABLE PURE   "bitmaps\\cv37s.bmp"\r
-A40S                    BITMAP  MOVEABLE PURE   "bitmaps\\a40s.bmp"\r
-L40S                    BITMAP  MOVEABLE PURE   "bitmaps\\l40s.bmp"\r
-C40S                    BITMAP  MOVEABLE PURE   "bitmaps\\c40s.bmp"\r
-CV40S                   BITMAP  MOVEABLE PURE   "bitmaps\\cv40s.bmp"\r
-A45S                    BITMAP  MOVEABLE PURE   "bitmaps\\a45s.bmp"\r
-L45S                    BITMAP  MOVEABLE PURE   "bitmaps\\l45s.bmp"\r
-C45S                    BITMAP  MOVEABLE PURE   "bitmaps\\c45s.bmp"\r
-CV45S                   BITMAP  MOVEABLE PURE   "bitmaps\\cv45s.bmp"\r
-A54S                    BITMAP  MOVEABLE PURE   "bitmaps\\a54s.bmp"\r
-L54S                    BITMAP  MOVEABLE PURE   "bitmaps\\l54s.bmp"\r
-C54S                    BITMAP  MOVEABLE PURE   "bitmaps\\c54s.bmp"\r
-CV54S                   BITMAP  MOVEABLE PURE   "bitmaps\\cv54s.bmp"\r
-V54S                    BITMAP  MOVEABLE PURE   "bitmaps\\v54s.bmp"\r
-A58S                    BITMAP  MOVEABLE PURE   "bitmaps\\a58s.bmp"\r
-L58S                    BITMAP  MOVEABLE PURE   "bitmaps\\l58s.bmp"\r
-C58S                    BITMAP  MOVEABLE PURE   "bitmaps\\c58s.bmp"\r
-CV58S                   BITMAP  MOVEABLE PURE   "bitmaps\\cv58s.bmp"\r
-A64S                    BITMAP  MOVEABLE PURE   "bitmaps\\a64s.bmp"\r
-L64S                    BITMAP  MOVEABLE PURE   "bitmaps\\l64s.bmp"\r
-C64S                    BITMAP  MOVEABLE PURE   "bitmaps\\c64s.bmp"\r
-CV64S                   BITMAP  MOVEABLE PURE   "bitmaps\\cv64s.bmp"\r
-\r
-SP58O                   BITMAP  MOVEABLE PURE   "shogibitmaps\\sp58o.bmp"\r
-SN58O                   BITMAP  MOVEABLE PURE   "shogibitmaps\\sn58o.bmp"\r
-SB58O                   BITMAP  MOVEABLE PURE   "shogibitmaps\\sb58o.bmp"\r
-SR58O                   BITMAP  MOVEABLE PURE   "shogibitmaps\\sr58o.bmp"\r
-SL58O                   BITMAP  MOVEABLE PURE   "shogibitmaps\\sl58o.bmp"\r
-SK58O                   BITMAP  MOVEABLE PURE   "shogibitmaps\\sk58o.bmp"\r
-SF58O                   BITMAP  MOVEABLE PURE   "shogibitmaps\\sf58o.bmp"\r
-SW58O                   BITMAP  MOVEABLE PURE   "shogibitmaps\\sw58o.bmp"\r
-SU58O                   BITMAP  MOVEABLE PURE   "shogibitmaps\\su58o.bmp"\r
-SH58O                   BITMAP  MOVEABLE PURE   "shogibitmaps\\sh58o.bmp"\r
-SA58O                   BITMAP  MOVEABLE PURE   "shogibitmaps\\sa58o.bmp"\r
-SC58O                   BITMAP  MOVEABLE PURE   "shogibitmaps\\sc58o.bmp"\r
-SG58O                   BITMAP  MOVEABLE PURE   "shogibitmaps\\sg58o.bmp"\r
-SS58O                   BITMAP  MOVEABLE PURE   "shogibitmaps\\ss58o.bmp"\r
-SP58W                   BITMAP  MOVEABLE PURE   "shogibitmaps\\sp58w.bmp"\r
-SN58W                   BITMAP  MOVEABLE PURE   "shogibitmaps\\sn58w.bmp"\r
-SR58W                   BITMAP  MOVEABLE PURE   "shogibitmaps\\sr58w.bmp"\r
-SL58W                   BITMAP  MOVEABLE PURE   "shogibitmaps\\sl58w.bmp"\r
-SK58W                   BITMAP  MOVEABLE PURE   "shogibitmaps\\sk58w.bmp"\r
-SW58W                   BITMAP  MOVEABLE PURE   "shogibitmaps\\sw58w.bmp"\r
-\r
-KING45C                 BITMAP  MOVEABLE PURE   "shogibitmaps\\king.bmp"\r
-AMAZON50C               BITMAP  MOVEABLE PURE   "shogibitmaps\\bamazon.bmp"\r
+E72O                    BITMAP  MOVEABLE PURE   "bitmaps/e72o.bmp"\r
+A72O                    BITMAP  MOVEABLE PURE   "bitmaps/a72o.bmp"\r
+AA72O                   BITMAP  MOVEABLE PURE   "bitmaps/as72o.bmp"\r
+C72O                    BITMAP  MOVEABLE PURE   "bitmaps/c72o.bmp"\r
+CV72O                   BITMAP  MOVEABLE PURE   "bitmaps/cv72o.bmp"\r
+F72O                    BITMAP  MOVEABLE PURE   "bitmaps/f72o.bmp"\r
+M72O                    BITMAP  MOVEABLE PURE   "bitmaps/m72o.bmp"\r
+W72O                    BITMAP  MOVEABLE PURE   "bitmaps/w72o.bmp"\r
+O72O                    BITMAP  MOVEABLE PURE   "bitmaps/o72o.bmp"\r
+U72O                    BITMAP  MOVEABLE PURE   "bitmaps/u72o.bmp"\r
+H72O                    BITMAP  MOVEABLE PURE   "bitmaps/h72o.bmp"\r
+G72O                    BITMAP  MOVEABLE PURE   "bitmaps/g72o.bmp"\r
+V72O                    BITMAP  MOVEABLE PURE   "bitmaps/v72o.bmp"\r
+S72O                    BITMAP  MOVEABLE PURE   "bitmaps/s72o.bmp"\r
+L72O                    BITMAP  MOVEABLE PURE   "bitmaps/l72o.bmp"\r
+DK72O                   BITMAP  MOVEABLE PURE   "bitmaps/dk72o.bmp"\r
+WP72O                   BITMAP  MOVEABLE PURE   "bitmaps/wp72o.bmp"\r
+WN72O                   BITMAP  MOVEABLE PURE   "bitmaps/wn72o.bmp"\r
+WL72O                   BITMAP  MOVEABLE PURE   "bitmaps/wl72o.bmp"\r
+WS72O                   BITMAP  MOVEABLE PURE   "bitmaps/ws72o.bmp"\r
+E72S                    BITMAP  MOVEABLE PURE   "bitmaps/e72s.bmp"\r
+A72S                    BITMAP  MOVEABLE PURE   "bitmaps/a72s.bmp"\r
+AA72S                   BITMAP  MOVEABLE PURE   "bitmaps/as72s.bmp"\r
+C72S                    BITMAP  MOVEABLE PURE   "bitmaps/c72s.bmp"\r
+CV72S                   BITMAP  MOVEABLE PURE   "bitmaps/cv72s.bmp"\r
+F72S                    BITMAP  MOVEABLE PURE   "bitmaps/f72s.bmp"\r
+M72S                    BITMAP  MOVEABLE PURE   "bitmaps/m72s.bmp"\r
+W72S                    BITMAP  MOVEABLE PURE   "bitmaps/w72s.bmp"\r
+O72S                    BITMAP  MOVEABLE PURE   "bitmaps/o72s.bmp"\r
+U72S                    BITMAP  MOVEABLE PURE   "bitmaps/u72s.bmp"\r
+H72S                    BITMAP  MOVEABLE PURE   "bitmaps/h72s.bmp"\r
+G72S                    BITMAP  MOVEABLE PURE   "bitmaps/g72s.bmp"\r
+V72S                    BITMAP  MOVEABLE PURE   "bitmaps/v72s.bmp"\r
+S72S                    BITMAP  MOVEABLE PURE   "bitmaps/s72s.bmp"\r
+L72S                    BITMAP  MOVEABLE PURE   "bitmaps/l72s.bmp"\r
+DK72S                   BITMAP  MOVEABLE PURE   "bitmaps/dk72s.bmp"\r
+WP72S                   BITMAP  MOVEABLE PURE   "bitmaps/wp72s.bmp"\r
+WN72S                   BITMAP  MOVEABLE PURE   "bitmaps/wn72s.bmp"\r
+WL72S                   BITMAP  MOVEABLE PURE   "bitmaps/wl72s.bmp"\r
+WS72S                   BITMAP  MOVEABLE PURE   "bitmaps/ws72s.bmp"\r
+E72W                    BITMAP  MOVEABLE PURE   "bitmaps/e72w.bmp"\r
+A72W                    BITMAP  MOVEABLE PURE   "bitmaps/a72w.bmp"\r
+AA72W                   BITMAP  MOVEABLE PURE   "bitmaps/as72w.bmp"\r
+C72W                    BITMAP  MOVEABLE PURE   "bitmaps/c72w.bmp"\r
+CV72W                   BITMAP  MOVEABLE PURE   "bitmaps/cv72w.bmp"\r
+F72W                    BITMAP  MOVEABLE PURE   "bitmaps/f72w.bmp"\r
+M72W                    BITMAP  MOVEABLE PURE   "bitmaps/m72w.bmp"\r
+W72W                    BITMAP  MOVEABLE PURE   "bitmaps/w72w.bmp"\r
+O72W                    BITMAP  MOVEABLE PURE   "bitmaps/o72w.bmp"\r
+U72W                    BITMAP  MOVEABLE PURE   "bitmaps/u72w.bmp"\r
+H72W                    BITMAP  MOVEABLE PURE   "bitmaps/h72w.bmp"\r
+G72W                    BITMAP  MOVEABLE PURE   "bitmaps/g72w.bmp"\r
+V72W                    BITMAP  MOVEABLE PURE   "bitmaps/v72w.bmp"\r
+S72W                    BITMAP  MOVEABLE PURE   "bitmaps/s72w.bmp"\r
+L72W                    BITMAP  MOVEABLE PURE   "bitmaps/l72w.bmp"\r
+DK72W                   BITMAP  MOVEABLE PURE   "bitmaps/dk72w.bmp"\r
+E49O                    BITMAP  MOVEABLE PURE   "bitmaps/e49o.bmp"\r
+A49O                    BITMAP  MOVEABLE PURE   "bitmaps/a49o.bmp"\r
+AA49O                   BITMAP  MOVEABLE PURE   "bitmaps/as49o.bmp"\r
+C49O                    BITMAP  MOVEABLE PURE   "bitmaps/c49o.bmp"\r
+CV49O                   BITMAP  MOVEABLE PURE   "bitmaps/cv49o.bmp"\r
+F49O                    BITMAP  MOVEABLE PURE   "bitmaps/f49o.bmp"\r
+M49O                    BITMAP  MOVEABLE PURE   "bitmaps/m49o.bmp"\r
+W49O                    BITMAP  MOVEABLE PURE   "bitmaps/w49o.bmp"\r
+O49O                    BITMAP  MOVEABLE PURE   "bitmaps/o49o.bmp"\r
+U49O                    BITMAP  MOVEABLE PURE   "bitmaps/u49o.bmp"\r
+H49O                    BITMAP  MOVEABLE PURE   "bitmaps/h49o.bmp"\r
+G49O                    BITMAP  MOVEABLE PURE   "bitmaps/g49o.bmp"\r
+V49O                    BITMAP  MOVEABLE PURE   "bitmaps/v49o.bmp"\r
+S49O                    BITMAP  MOVEABLE PURE   "bitmaps/s49o.bmp"\r
+L49O                    BITMAP  MOVEABLE PURE   "bitmaps/l49o.bmp"\r
+DK49O                   BITMAP  MOVEABLE PURE   "bitmaps/dk49o.bmp"\r
+WP49O                   BITMAP  MOVEABLE PURE   "bitmaps/wp49o.bmp"\r
+WN49O                   BITMAP  MOVEABLE PURE   "bitmaps/wn49o.bmp"\r
+WL49O                   BITMAP  MOVEABLE PURE   "bitmaps/wl49o.bmp"\r
+WS49O                   BITMAP  MOVEABLE PURE   "bitmaps/ws49o.bmp"\r
+E49S                    BITMAP  MOVEABLE PURE   "bitmaps/e49s.bmp"\r
+A49S                    BITMAP  MOVEABLE PURE   "bitmaps/a49s.bmp"\r
+AA49S                   BITMAP  MOVEABLE PURE   "bitmaps/as49s.bmp"\r
+C49S                    BITMAP  MOVEABLE PURE   "bitmaps/c49s.bmp"\r
+CV49S                   BITMAP  MOVEABLE PURE   "bitmaps/cv49s.bmp"\r
+F49S                    BITMAP  MOVEABLE PURE   "bitmaps/f49s.bmp"\r
+M49S                    BITMAP  MOVEABLE PURE   "bitmaps/m49s.bmp"\r
+W49S                    BITMAP  MOVEABLE PURE   "bitmaps/w49s.bmp"\r
+O49S                    BITMAP  MOVEABLE PURE   "bitmaps/o49s.bmp"\r
+U49S                    BITMAP  MOVEABLE PURE   "bitmaps/u49s.bmp"\r
+H49S                    BITMAP  MOVEABLE PURE   "bitmaps/h49s.bmp"\r
+G49S                    BITMAP  MOVEABLE PURE   "bitmaps/g49s.bmp"\r
+V49S                    BITMAP  MOVEABLE PURE   "bitmaps/v49s.bmp"\r
+S49S                    BITMAP  MOVEABLE PURE   "bitmaps/s49s.bmp"\r
+L49S                    BITMAP  MOVEABLE PURE   "bitmaps/l49s.bmp"\r
+DK49S                   BITMAP  MOVEABLE PURE   "bitmaps/dk49s.bmp"\r
+WP49S                   BITMAP  MOVEABLE PURE   "bitmaps/wp49s.bmp"\r
+WN49S                   BITMAP  MOVEABLE PURE   "bitmaps/wn49s.bmp"\r
+WL49S                   BITMAP  MOVEABLE PURE   "bitmaps/wl49s.bmp"\r
+WS49S                   BITMAP  MOVEABLE PURE   "bitmaps/ws49s.bmp"\r
+E49W                    BITMAP  MOVEABLE PURE   "bitmaps/e49w.bmp"\r
+A49W                    BITMAP  MOVEABLE PURE   "bitmaps/a49w.bmp"\r
+AA49W                   BITMAP  MOVEABLE PURE   "bitmaps/as49w.bmp"\r
+C49W                    BITMAP  MOVEABLE PURE   "bitmaps/c49w.bmp"\r
+CV49W                   BITMAP  MOVEABLE PURE   "bitmaps/cv49w.bmp"\r
+F49W                    BITMAP  MOVEABLE PURE   "bitmaps/f49w.bmp"\r
+M49W                    BITMAP  MOVEABLE PURE   "bitmaps/m49w.bmp"\r
+W49W                    BITMAP  MOVEABLE PURE   "bitmaps/w49w.bmp"\r
+O49W                    BITMAP  MOVEABLE PURE   "bitmaps/o49w.bmp"\r
+U49W                    BITMAP  MOVEABLE PURE   "bitmaps/u49w.bmp"\r
+H49W                    BITMAP  MOVEABLE PURE   "bitmaps/h49w.bmp"\r
+G49W                    BITMAP  MOVEABLE PURE   "bitmaps/g49w.bmp"\r
+V49W                    BITMAP  MOVEABLE PURE   "bitmaps/v49w.bmp"\r
+S49W                    BITMAP  MOVEABLE PURE   "bitmaps/s49w.bmp"\r
+L49W                    BITMAP  MOVEABLE PURE   "bitmaps/l49w.bmp"\r
+DK49W                   BITMAP  MOVEABLE PURE   "bitmaps/dk49w.bmp"\r
+A33O                    BITMAP  MOVEABLE PURE   "bitmaps/a33o.bmp"\r
+AA33O                   BITMAP  MOVEABLE PURE   "bitmaps/as33o.bmp"\r
+C33O                    BITMAP  MOVEABLE PURE   "bitmaps/c33o.bmp"\r
+CV33O                   BITMAP  MOVEABLE PURE   "bitmaps/cv33o.bmp"\r
+V33O                    BITMAP  MOVEABLE PURE   "bitmaps/v33o.bmp"\r
+E33O                    BITMAP  MOVEABLE PURE   "bitmaps/e33o.bmp"\r
+F33O                    BITMAP  MOVEABLE PURE   "bitmaps/f33o.bmp"\r
+H33O                    BITMAP  MOVEABLE PURE   "bitmaps/h33o.bmp"\r
+G33O                    BITMAP  MOVEABLE PURE   "bitmaps/g33o.bmp"\r
+L33O                    BITMAP  MOVEABLE PURE   "bitmaps/l33o.bmp"\r
+W33O                    BITMAP  MOVEABLE PURE   "bitmaps/w33o.bmp"\r
+M33O                    BITMAP  MOVEABLE PURE   "bitmaps/m33o.bmp"\r
+O33O                    BITMAP  MOVEABLE PURE   "bitmaps/o33o.bmp"\r
+DK33O                   BITMAP  MOVEABLE PURE   "bitmaps/dk33o.bmp"\r
+A33W                    BITMAP  MOVEABLE PURE   "bitmaps/a33w.bmp"\r
+AA33W                   BITMAP  MOVEABLE PURE   "bitmaps/as33w.bmp"\r
+C33W                    BITMAP  MOVEABLE PURE   "bitmaps/c33w.bmp"\r
+CV33W                   BITMAP  MOVEABLE PURE   "bitmaps/cv33w.bmp"\r
+V33W                    BITMAP  MOVEABLE PURE   "bitmaps/v33w.bmp"\r
+E33W                    BITMAP  MOVEABLE PURE   "bitmaps/e33w.bmp"\r
+F33W                    BITMAP  MOVEABLE PURE   "bitmaps/f33w.bmp"\r
+H33W                    BITMAP  MOVEABLE PURE   "bitmaps/h33w.bmp"\r
+G33W                    BITMAP  MOVEABLE PURE   "bitmaps/g33w.bmp"\r
+L33W                    BITMAP  MOVEABLE PURE   "bitmaps/l33w.bmp"\r
+W33W                    BITMAP  MOVEABLE PURE   "bitmaps/w33w.bmp"\r
+M33W                    BITMAP  MOVEABLE PURE   "bitmaps/m33w.bmp"\r
+O33W                    BITMAP  MOVEABLE PURE   "bitmaps/o33w.bmp"\r
+DK33W                   BITMAP  MOVEABLE PURE   "bitmaps/dk33w.bmp"\r
+A33S                    BITMAP  MOVEABLE PURE   "bitmaps/a33s.bmp"\r
+AA33S                   BITMAP  MOVEABLE PURE   "bitmaps/as33s.bmp"\r
+C33S                    BITMAP  MOVEABLE PURE   "bitmaps/c33s.bmp"\r
+CV33S                   BITMAP  MOVEABLE PURE   "bitmaps/cv33s.bmp"\r
+V33S                    BITMAP  MOVEABLE PURE   "bitmaps/v33s.bmp"\r
+E33S                    BITMAP  MOVEABLE PURE   "bitmaps/e33s.bmp"\r
+F33S                    BITMAP  MOVEABLE PURE   "bitmaps/f33s.bmp"\r
+H33S                    BITMAP  MOVEABLE PURE   "bitmaps/h33s.bmp"\r
+G33S                    BITMAP  MOVEABLE PURE   "bitmaps/g33s.bmp"\r
+L33S                    BITMAP  MOVEABLE PURE   "bitmaps/l33s.bmp"\r
+W33S                    BITMAP  MOVEABLE PURE   "bitmaps/w33s.bmp"\r
+M33S                    BITMAP  MOVEABLE PURE   "bitmaps/m33s.bmp"\r
+O33S                    BITMAP  MOVEABLE PURE   "bitmaps/o33s.bmp"\r
+DK33S                   BITMAP  MOVEABLE PURE   "bitmaps/dk33s.bmp"\r
+\r
+A37O                    BITMAP  MOVEABLE PURE   "bitmaps/a37o.bmp"\r
+L37O                    BITMAP  MOVEABLE PURE   "bitmaps/l37o.bmp"\r
+C37O                    BITMAP  MOVEABLE PURE   "bitmaps/c37o.bmp"\r
+CV37O                   BITMAP  MOVEABLE PURE   "bitmaps/cv37o.bmp"\r
+A40O                    BITMAP  MOVEABLE PURE   "bitmaps/a40o.bmp"\r
+L40O                    BITMAP  MOVEABLE PURE   "bitmaps/l40o.bmp"\r
+C40O                    BITMAP  MOVEABLE PURE   "bitmaps/c40o.bmp"\r
+CV40O                   BITMAP  MOVEABLE PURE   "bitmaps/cv40o.bmp"\r
+A45O                    BITMAP  MOVEABLE PURE   "bitmaps/a45o.bmp"\r
+L45O                    BITMAP  MOVEABLE PURE   "bitmaps/l45o.bmp"\r
+C45O                    BITMAP  MOVEABLE PURE   "bitmaps/c45o.bmp"\r
+CV45O                   BITMAP  MOVEABLE PURE   "bitmaps/cv45o.bmp"\r
+A54O                    BITMAP  MOVEABLE PURE   "bitmaps/a54o.bmp"\r
+L54O                    BITMAP  MOVEABLE PURE   "bitmaps/l54o.bmp"\r
+C54O                    BITMAP  MOVEABLE PURE   "bitmaps/c54o.bmp"\r
+CV54O                   BITMAP  MOVEABLE PURE   "bitmaps/cv54o.bmp"\r
+V54O                    BITMAP  MOVEABLE PURE   "bitmaps/v54o.bmp"\r
+A58O                    BITMAP  MOVEABLE PURE   "bitmaps/a58o.bmp"\r
+L58O                    BITMAP  MOVEABLE PURE   "bitmaps/l58o.bmp"\r
+C58O                    BITMAP  MOVEABLE PURE   "bitmaps/c58o.bmp"\r
+CV58O                   BITMAP  MOVEABLE PURE   "bitmaps/cv58o.bmp"\r
+A64O                    BITMAP  MOVEABLE PURE   "bitmaps/a64o.bmp"\r
+L64O                    BITMAP  MOVEABLE PURE   "bitmaps/l64o.bmp"\r
+C64O                    BITMAP  MOVEABLE PURE   "bitmaps/c64o.bmp"\r
+CV64O                   BITMAP  MOVEABLE PURE   "bitmaps/cv64o.bmp"\r
+A37W                    BITMAP  MOVEABLE PURE   "bitmaps/a37w.bmp"\r
+L37W                    BITMAP  MOVEABLE PURE   "bitmaps/l37w.bmp"\r
+C37W                    BITMAP  MOVEABLE PURE   "bitmaps/c37w.bmp"\r
+CV37W                   BITMAP  MOVEABLE PURE   "bitmaps/cv37w.bmp"\r
+A40W                    BITMAP  MOVEABLE PURE   "bitmaps/a40w.bmp"\r
+L40W                    BITMAP  MOVEABLE PURE   "bitmaps/l40w.bmp"\r
+C40W                    BITMAP  MOVEABLE PURE   "bitmaps/c40w.bmp"\r
+CV40W                   BITMAP  MOVEABLE PURE   "bitmaps/cv40w.bmp"\r
+A45W                    BITMAP  MOVEABLE PURE   "bitmaps/a45w.bmp"\r
+L45W                    BITMAP  MOVEABLE PURE   "bitmaps/l45w.bmp"\r
+C45W                    BITMAP  MOVEABLE PURE   "bitmaps/c45w.bmp"\r
+CV45W                   BITMAP  MOVEABLE PURE   "bitmaps/cv45w.bmp"\r
+A54W                    BITMAP  MOVEABLE PURE   "bitmaps/a54w.bmp"\r
+L54W                    BITMAP  MOVEABLE PURE   "bitmaps/l54w.bmp"\r
+C54W                    BITMAP  MOVEABLE PURE   "bitmaps/c54w.bmp"\r
+CV54W                   BITMAP  MOVEABLE PURE   "bitmaps/cv54w.bmp"\r
+V54W                    BITMAP  MOVEABLE PURE   "bitmaps/v54w.bmp"\r
+A58W                    BITMAP  MOVEABLE PURE   "bitmaps/a58w.bmp"\r
+L58W                    BITMAP  MOVEABLE PURE   "bitmaps/l58w.bmp"\r
+C58W                    BITMAP  MOVEABLE PURE   "bitmaps/c58w.bmp"\r
+CV58W                   BITMAP  MOVEABLE PURE   "bitmaps/cv58w.bmp"\r
+A64W                    BITMAP  MOVEABLE PURE   "bitmaps/a64w.bmp"\r
+L64W                    BITMAP  MOVEABLE PURE   "bitmaps/l64w.bmp"\r
+C64W                    BITMAP  MOVEABLE PURE   "bitmaps/c64w.bmp"\r
+CV64W                   BITMAP  MOVEABLE PURE   "bitmaps/cv64w.bmp"\r
+A37S                    BITMAP  MOVEABLE PURE   "bitmaps/a37s.bmp"\r
+L37S                    BITMAP  MOVEABLE PURE   "bitmaps/l37s.bmp"\r
+C37S                    BITMAP  MOVEABLE PURE   "bitmaps/c37s.bmp"\r
+CV37S                   BITMAP  MOVEABLE PURE   "bitmaps/cv37s.bmp"\r
+A40S                    BITMAP  MOVEABLE PURE   "bitmaps/a40s.bmp"\r
+L40S                    BITMAP  MOVEABLE PURE   "bitmaps/l40s.bmp"\r
+C40S                    BITMAP  MOVEABLE PURE   "bitmaps/c40s.bmp"\r
+CV40S                   BITMAP  MOVEABLE PURE   "bitmaps/cv40s.bmp"\r
+A45S                    BITMAP  MOVEABLE PURE   "bitmaps/a45s.bmp"\r
+L45S                    BITMAP  MOVEABLE PURE   "bitmaps/l45s.bmp"\r
+C45S                    BITMAP  MOVEABLE PURE   "bitmaps/c45s.bmp"\r
+CV45S                   BITMAP  MOVEABLE PURE   "bitmaps/cv45s.bmp"\r
+A54S                    BITMAP  MOVEABLE PURE   "bitmaps/a54s.bmp"\r
+L54S                    BITMAP  MOVEABLE PURE   "bitmaps/l54s.bmp"\r
+C54S                    BITMAP  MOVEABLE PURE   "bitmaps/c54s.bmp"\r
+CV54S                   BITMAP  MOVEABLE PURE   "bitmaps/cv54s.bmp"\r
+V54S                    BITMAP  MOVEABLE PURE   "bitmaps/v54s.bmp"\r
+A58S                    BITMAP  MOVEABLE PURE   "bitmaps/a58s.bmp"\r
+L58S                    BITMAP  MOVEABLE PURE   "bitmaps/l58s.bmp"\r
+C58S                    BITMAP  MOVEABLE PURE   "bitmaps/c58s.bmp"\r
+CV58S                   BITMAP  MOVEABLE PURE   "bitmaps/cv58s.bmp"\r
+A64S                    BITMAP  MOVEABLE PURE   "bitmaps/a64s.bmp"\r
+L64S                    BITMAP  MOVEABLE PURE   "bitmaps/l64s.bmp"\r
+C64S                    BITMAP  MOVEABLE PURE   "bitmaps/c64s.bmp"\r
+CV64S                   BITMAP  MOVEABLE PURE   "bitmaps/cv64s.bmp"\r
+\r
+SP58O                   BITMAP  MOVEABLE PURE   "shogibitmaps/sp58o.bmp"\r
+SN58O                   BITMAP  MOVEABLE PURE   "shogibitmaps/sn58o.bmp"\r
+SB58O                   BITMAP  MOVEABLE PURE   "shogibitmaps/sb58o.bmp"\r
+SR58O                   BITMAP  MOVEABLE PURE   "shogibitmaps/sr58o.bmp"\r
+SL58O                   BITMAP  MOVEABLE PURE   "shogibitmaps/sl58o.bmp"\r
+SK58O                   BITMAP  MOVEABLE PURE   "shogibitmaps/sk58o.bmp"\r
+SF58O                   BITMAP  MOVEABLE PURE   "shogibitmaps/sf58o.bmp"\r
+SW58O                   BITMAP  MOVEABLE PURE   "shogibitmaps/sw58o.bmp"\r
+SU58O                   BITMAP  MOVEABLE PURE   "shogibitmaps/su58o.bmp"\r
+SH58O                   BITMAP  MOVEABLE PURE   "shogibitmaps/sh58o.bmp"\r
+SA58O                   BITMAP  MOVEABLE PURE   "shogibitmaps/sa58o.bmp"\r
+SC58O                   BITMAP  MOVEABLE PURE   "shogibitmaps/sc58o.bmp"\r
+SG58O                   BITMAP  MOVEABLE PURE   "shogibitmaps/sg58o.bmp"\r
+SS58O                   BITMAP  MOVEABLE PURE   "shogibitmaps/ss58o.bmp"\r
+SP58W                   BITMAP  MOVEABLE PURE   "shogibitmaps/sp58w.bmp"\r
+SN58W                   BITMAP  MOVEABLE PURE   "shogibitmaps/sn58w.bmp"\r
+SR58W                   BITMAP  MOVEABLE PURE   "shogibitmaps/sr58w.bmp"\r
+SL58W                   BITMAP  MOVEABLE PURE   "shogibitmaps/sl58w.bmp"\r
+SK58W                   BITMAP  MOVEABLE PURE   "shogibitmaps/sk58w.bmp"\r
+SW58W                   BITMAP  MOVEABLE PURE   "shogibitmaps/sw58w.bmp"\r
 \r
 #ifdef APSTUDIO_INVOKED\r
 /////////////////////////////////////////////////////////////////////////////\r
@@ -1994,38 +1991,38 @@ END
 // WAVE\r
 //\r
 \r
-DING                    WAVE    DISCARDABLE     "sounds\\ding1.wav"\r
-CHING                   WAVE    DISCARDABLE     "sounds\\ching.wav"\r
-CLICK                   WAVE    DISCARDABLE     "sounds\\click.wav"\r
-CYMBAL                  WAVE    DISCARDABLE     "sounds\\cymbal.wav"\r
-DRIP                    WAVE    DISCARDABLE     "sounds\\drip.wav"\r
-GONG                    WAVE    DISCARDABLE     "sounds\\gong.wav"\r
-BEEPBEEP                WAVE    DISCARDABLE     "sounds\\honkhonk.wav"\r
-LASER                   WAVE    DISCARDABLE     "sounds\\laser.wav"\r
-PENALTY                 WAVE    DISCARDABLE     "sounds\\penalty.wav"\r
-PHONE                   WAVE    DISCARDABLE     "sounds\\phone.wav"\r
-POP                     WAVE    DISCARDABLE     "sounds\\pop.wav"\r
-POP2                    WAVE    DISCARDABLE     "sounds\\pop2.wav"\r
-SLAP                    WAVE    DISCARDABLE     "sounds\\slap.wav"\r
-SQUEAK                  WAVE    DISCARDABLE     "sounds\\squeak.wav"\r
-SWISH                   WAVE    DISCARDABLE     "sounds\\swish.wav"\r
-THUD                    WAVE    DISCARDABLE     "sounds\\thud.wav"\r
-WHIPCRACK               WAVE    DISCARDABLE     "sounds\\whipcrak.wav"\r
-MOVE                    WAVE    DISCARDABLE     "sounds\\move.wav"\r
-ALARM                   WAVE    DISCARDABLE     "sounds\\alarm.wav"\r
-CHALLENGE               WAVE    DISCARDABLE     "sounds\\challenge.wav"\r
-CHANNEL                 WAVE    DISCARDABLE     "sounds\\channel.wav"\r
-CHANNEL1                WAVE    DISCARDABLE     "sounds\\channel1.wav"\r
-DRAW                    WAVE    DISCARDABLE     "sounds\\draw.wav"\r
-KIBITZ                  WAVE    DISCARDABLE     "sounds\\kibitz.wav"\r
-LOSE                    WAVE    DISCARDABLE     "sounds\\lose.wav"\r
-REQUEST                 WAVE    DISCARDABLE     "sounds\\request.wav"\r
-SEEK                    WAVE    DISCARDABLE     "sounds\\seek.wav"\r
-SHOUT                   WAVE    DISCARDABLE     "sounds\\shout.wav"\r
-SSHOUT                  WAVE    DISCARDABLE     "sounds\\sshout.wav"\r
-TELL                    WAVE    DISCARDABLE     "sounds\\tell.wav"\r
-UNFINISHED              WAVE    DISCARDABLE     "sounds\\unfinished.wav"\r
-WIN                     WAVE    DISCARDABLE     "sounds\\win.wav"\r
+DING                    WAVE    DISCARDABLE     "sounds/ding1.wav"\r
+CHING                   WAVE    DISCARDABLE     "sounds/ching.wav"\r
+CLICK                   WAVE    DISCARDABLE     "sounds/click.wav"\r
+CYMBAL                  WAVE    DISCARDABLE     "sounds/cymbal.wav"\r
+DRIP                    WAVE    DISCARDABLE     "sounds/drip.wav"\r
+GONG                    WAVE    DISCARDABLE     "sounds/gong.wav"\r
+BEEPBEEP                WAVE    DISCARDABLE     "sounds/honkhonk.wav"\r
+LASER                   WAVE    DISCARDABLE     "sounds/laser.wav"\r
+PENALTY                 WAVE    DISCARDABLE     "sounds/penalty.wav"\r
+PHONE                   WAVE    DISCARDABLE     "sounds/phone.wav"\r
+POP                     WAVE    DISCARDABLE     "sounds/pop.wav"\r
+POP2                    WAVE    DISCARDABLE     "sounds/pop2.wav"\r
+SLAP                    WAVE    DISCARDABLE     "sounds/slap.wav"\r
+SQUEAK                  WAVE    DISCARDABLE     "sounds/squeak.wav"\r
+SWISH                   WAVE    DISCARDABLE     "sounds/swish.wav"\r
+THUD                    WAVE    DISCARDABLE     "sounds/thud.wav"\r
+WHIPCRACK               WAVE    DISCARDABLE     "sounds/whipcrak.wav"\r
+MOVE                    WAVE    DISCARDABLE     "sounds/move.wav"\r
+ALARM                   WAVE    DISCARDABLE     "sounds/alarm.wav"\r
+CHALLENGE               WAVE    DISCARDABLE     "sounds/challenge.wav"\r
+CHANNEL                 WAVE    DISCARDABLE     "sounds/channel.wav"\r
+CHANNEL1                WAVE    DISCARDABLE     "sounds/channel1.wav"\r
+DRAW                    WAVE    DISCARDABLE     "sounds/draw.wav"\r
+KIBITZ                  WAVE    DISCARDABLE     "sounds/kibitz.wav"\r
+LOSE                    WAVE    DISCARDABLE     "sounds/lose.wav"\r
+REQUEST                 WAVE    DISCARDABLE     "sounds/request.wav"\r
+SEEK                    WAVE    DISCARDABLE     "sounds/seek.wav"\r
+SHOUT                   WAVE    DISCARDABLE     "sounds/shout.wav"\r
+SSHOUT                  WAVE    DISCARDABLE     "sounds/sshout.wav"\r
+TELL                    WAVE    DISCARDABLE     "sounds/tell.wav"\r
+UNFINISHED              WAVE    DISCARDABLE     "sounds/unfinished.wav"\r
+WIN                     WAVE    DISCARDABLE     "sounds/win.wav"\r
 #endif    // English (U.S.) resources\r
 /////////////////////////////////////////////////////////////////////////////\r
 \r
index 2fdaec7..4b757c6 100644 (file)
 {\rtf1\ansi\ansicpg1252\uc1 \deff5\deflang1033\deflangfe1043{\fonttbl{\f0\froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f1\fswiss\fcharset0\fprq2{\*\panose 020b0604020202020204}Arial;}\r
 {\f2\fmodern\fcharset0\fprq1{\*\panose 02070309020205020404}Courier New;}{\f3\froman\fcharset2\fprq2{\*\panose 05050102010706020507}Symbol;}{\f4\froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times;}\r
-{\f5\fswiss\fcharset0\fprq2{\*\panose 020b0604020202020204}Helvetica{\*\falt Arial};}{\f6\fmodern\fcharset0\fprq1{\*\panose 00000000000000000000}Courier;}{\f7\fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}Geneva;}\r
+{\f5\fswiss\fcharset0\fprq2{\*\panose 020b0604020202020204}Helvetica{\*\falt Arial};}{\f6\fmodern\fcharset0\fprq1{\*\panose 00000000000000000000}Courier{\*\falt Courier New};}{\f7\fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}Geneva;}\r
 {\f8\froman\fcharset0\fprq2{\*\panose 00000000000000000000}Tms Rmn;}{\f9\fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}Helv;}{\f10\froman\fcharset0\fprq2{\*\panose 00000000000000000000}MS Serif;}\r
-{\f11\fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}MS Sans Serif;}{\f12\froman\fcharset0\fprq2{\*\panose 00000000000000000000}New York;}{\f13\fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}System;}\r
-{\f14\fnil\fcharset2\fprq2{\*\panose 05000000000000000000}Wingdings;}{\f15\fswiss\fcharset0\fprq2{\*\panose 020b0604030504040204}Tahoma;}{\f16\froman\fcharset128\fprq1{\*\panose 00000000000000000000}Mincho{\*\falt ??};}\r
-{\f17\fnil\fcharset129\fprq1{\*\panose 00000000000000000000}Batang{\*\falt ??};}{\f18\fnil\fcharset134\fprq2{\*\panose 00000000000000000000}SimSun{\*\falt ??};}{\f19\fnil\fcharset136\fprq2{\*\panose 00000000000000000000}PMingLiU{\*\falt ????};}\r
-{\f20\fmodern\fcharset128\fprq1{\*\panose 00000000000000000000}Gothic{\*\falt ?????};}{\f21\fmodern\fcharset129\fprq1{\*\panose 00000000000000000000}Dotum{\*\falt ??};}{\f22\fmodern\fcharset134\fprq1{\*\panose 00000000000000000000}SimHei{\*\falt ??};}\r
-{\f23\fmodern\fcharset136\fprq1{\*\panose 00000000000000000000}MingLiU{\*\falt ???};}{\f24\froman\fcharset128\fprq1{\*\panose 00000000000000000000}MS Mincho{\*\falt ?? ??};}{\f25\froman\fcharset129\fprq1{\*\panose 00000000000000000000}Gulim{\*\falt ??};}\r
-{\f26\fmodern\fcharset128\fprq1{\*\panose 00000000000000000000}MS Gothic{\*\falt ?? ????};}{\f27\froman\fcharset0\fprq2{\*\panose 00000000000000000000}Century;}{\f28\fswiss\fcharset0\fprq0{\*\panose 00000000000000000000}Univers (WN);}\r
-{\f29\froman\fcharset0\fprq0{\*\panose 00000000000000000000}CG Times (WN);}{\f30\froman\fcharset177\fprq2{\*\panose 00000000000000000000}Times New Roman (Hebrew);}{\f31\froman\fcharset178\fprq2{\*\panose 00000000000000000000}Times New Roman (Arabic);}\r
-{\f32\fswiss\fcharset177\fprq2{\*\panose 00000000000000000000}Arial (Hebrew);}{\f33\fswiss\fcharset178\fprq2{\*\panose 00000000000000000000}Arial (Arabic);}{\f34\fmodern\fcharset177\fprq1{\*\panose 00000000000000000000}Courier New (Hebrew);}\r
-{\f35\fmodern\fcharset178\fprq1{\*\panose 00000000000000000000}Courier New (Arabic);}{\f36\fswiss\fcharset177\fprq2{\*\panose 00000000000000000000}Tahoma (Hebrew);}{\f37\fswiss\fcharset178\fprq2{\*\panose 00000000000000000000}Tahoma (Arabic);}\r
-{\f38\fmodern\fcharset0\fprq1{\*\panose 00000000000000000000}Fixedsys;}{\f39\fmodern\fcharset255\fprq1{\*\panose 00000000000000000000}Terminal;}{\f40\fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}Small Fonts;}\r
-{\f41\fnil\fcharset2\fprq2{\*\panose 00000000000000000000}Marlett;}{\f42\fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}News Gothic MT;}{\f43\fscript\fcharset0\fprq2{\*\panose 00000000000000000000}Lucida Handwriting;}\r
-{\f44\fswiss\fcharset0\fprq2{\*\panose 020b0602030504020204}Lucida Sans;}{\f45\fswiss\fcharset0\fprq2{\*\panose 020b0602030504020204}Lucida Sans Unicode;}{\f46\froman\fcharset0\fprq2{\*\panose 00000000000000000000}Book Antiqua;}\r
-{\f47\fswiss\fcharset0\fprq2{\*\panose 020b0502020202020204}Century Gothic;}{\f48\fmodern\fcharset0\fprq2{\*\panose 02010509020102010303}OCR A Extended;}{\f49\froman\fcharset0\fprq2{\*\panose 00000000000000000000}Calisto MT;}\r
-{\f50\fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}Abadi MT Condensed Light;}{\f51\fswiss\fcharset0\fprq2{\*\panose 020e0705020206020404}Copperplate Gothic Bold;}\r
-{\f52\fswiss\fcharset0\fprq2{\*\panose 020e0507020206020404}Copperplate Gothic Light;}{\f53\fdecor\fcharset0\fprq2{\*\panose 04040403030d02020704}Matisse ITC;}{\f54\fdecor\fcharset0\fprq2{\*\panose 04020404030d07020202}Tempus Sans ITC;}\r
-{\f55\fdecor\fcharset0\fprq2{\*\panose 00000000000000000000}Westminster;}{\f56\fmodern\fcharset0\fprq1{\*\panose 020b0609040504020204}Lucida Console;}{\f57\fswiss\fcharset0\fprq2{\*\panose 020b0a04020102020204}Arial Black;}\r
-{\f58\fscript\fcharset0\fprq2{\*\panose 030f0702030302020204}Comic Sans MS;}{\f59\fswiss\fcharset0\fprq2{\*\panose 020b0806030902050204}Impact;}{\f60\fswiss\fcharset0\fprq2{\*\panose 020b0604030504040204}Verdana;}\r
-{\f61\froman\fcharset2\fprq2{\*\panose 05030102010509060703}Webdings;}{\f62\fmodern\fcharset0\fprq1{\*\panose 00000000000000000000}OCR-A II;}{\f63\fmodern\fcharset0\fprq1{\*\panose 00000000000000000000}OCR B MT;}\r
-{\f64\fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}QuickType II;}{\f65\fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}QuickType II Condensed;}{\f66\fmodern\fcharset0\fprq1{\*\panose 00000000000000000000}QuickType II Mono;}\r
-{\f67\fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}QuickType II Pi;}{\f68\fswiss\fcharset0\fprq2{\*\panose 020b0506020202030204}Arial Narrow;}{\f69\froman\fcharset0\fprq2{\*\panose 02050604050505020204}Bookman Old Style;}\r
-{\f70\froman\fcharset0\fprq2{\*\panose 02020404030301010803}Garamond;}{\f71\fswiss\fcharset0\fprq2{\*\panose 020b0603020202020204}Trebuchet MS;}{\f72\froman\fcharset2\fprq2{\*\panose 05050102010205020202}MT Extra;}\r
-{\f73\fswiss\fcharset177\fprq2{\*\panose 00000000000000000000}Lucida Sans Unicode (Hebrew);}{\f74\froman\fcharset238\fprq2{\*\panose 00000000000000000000}Book Antiqua CE;}{\f75\froman\fcharset204\fprq2{\*\panose 00000000000000000000}Book Antiqua Cyr;}\r
-{\f76\froman\fcharset161\fprq2{\*\panose 00000000000000000000}Book Antiqua Greek;}{\f77\froman\fcharset162\fprq2{\*\panose 00000000000000000000}Book Antiqua Tur;}{\f78\froman\fcharset186\fprq2{\*\panose 00000000000000000000}Book Antiqua Baltic;}\r
-{\f79\fdecor\fcharset2\fprq1{\*\panose 00000000000000000000}WST_Czec;}{\f80\fdecor\fcharset2\fprq1{\*\panose 00000000000000000000}WST_Engl;}{\f81\fdecor\fcharset2\fprq1{\*\panose 00000000000000000000}WST_Fren;}\r
-{\f82\fdecor\fcharset2\fprq1{\*\panose 00000000000000000000}WST_Germ;}{\f83\fdecor\fcharset2\fprq1{\*\panose 00000000000000000000}WST_Ital;}{\f84\fdecor\fcharset2\fprq1{\*\panose 00000000000000000000}WST_Span;}\r
-{\f85\fdecor\fcharset2\fprq1{\*\panose 00000000000000000000}WST_Swed;}{\f86\froman\fcharset0\fprq2{\*\panose 02040502050405020303}Georgia;}{\f87\fswiss\fcharset0\fprq2{\*\panose 020b0603020102020204}Franklin Gothic Medium;}\r
-{\f88\froman\fcharset0\fprq2{\*\panose 02040502050505030304}Palatino Linotype;}{\f89\fscript\fcharset0\fprq2 Estrangelo Edessa;}{\f90\fnil\fcharset0\fprq2 Gautami;}{\f91\fnil\fcharset0\fprq2 Latha;}{\f92\fnil\fcharset0\fprq2 Mangal;}\r
-{\f93\fnil\fcharset0\fprq2 MV Boli;}{\f94\fnil\fcharset0\fprq2 Raavi;}{\f95\fnil\fcharset0\fprq2 Shruti;}{\f96\fnil\fcharset0\fprq2 Tunga;}{\f97\froman\fcharset0\fprq2{\*\panose 010a0502050306030303}Sylfaen;}\r
-{\f98\fswiss\fcharset0\fprq2{\*\panose 020b0604020202020204}Microsoft Sans Serif;}{\f99\froman\fcharset0\fprq2{\*\panose 02060603020205020403}Rockwell;}{\f100\froman\fcharset0\fprq2{\*\panose 02060903040505020403}Rockwell Extra Bold;}\r
-{\f101\fscript\fcharset0\fprq2{\*\panose 03090702030407020403}Mistral;}{\f102\fdecor\fcharset0\fprq2{\*\panose 04020505051007020d02}Blackadder ITC;}{\f103\fscript\fcharset0\fprq2{\*\panose 03070402050302030203}Bradley Hand ITC;}\r
-{\f104\fdecor\fcharset0\fprq2{\*\panose 04040404050702020202}Curlz MT;}{\f105\fscript\fcharset0\fprq2{\*\panose 030303020407070d0804}Edwardian Script ITC;}{\f106\froman\fcharset0\fprq2{\*\panose 02090707080505020304}Engravers MT;}\r
-{\f107\fswiss\fcharset0\fprq2{\*\panose 020b0805030504020804}Eras Demi ITC;}{\f108\fswiss\fcharset0\fprq2{\*\panose 020b0402030504020804}Eras Light ITC;}{\f109\fswiss\fcharset0\fprq2{\*\panose 020b0504020202050204}Eurostile;}\r
-{\f110\fdecor\fcharset0\fprq2{\*\panose 04060505060202020a04}Felix Titling;}{\f111\fswiss\fcharset0\fprq2{\*\panose 020b0503020102020204}Franklin Gothic Book;}{\f112\fswiss\fcharset0\fprq2{\*\panose 020b0703020102020204}Franklin Gothic Demi;}\r
-{\f113\fswiss\fcharset0\fprq2{\*\panose 020b0606030402020204}Franklin Gothic Medium Cond;}{\f114\fswiss\fcharset0\fprq2{\*\panose 020b0903020102020204}Franklin Gothic Heavy;}\r
-{\f115\fswiss\fcharset0\fprq2{\*\panose 020b0706030402020204}Franklin Gothic Demi Cond;}{\f116\fscript\fcharset0\fprq2{\*\panose 03020402040607040605}French Script MT;}{\f117\fscript\fcharset0\fprq2{\*\panose 03050502040202030202}Kristen ITC;}\r
-{\f118\fswiss\fcharset0\fprq2{\*\panose 020e0502030308020204}Maiandra GD;}{\f119\fscript\fcharset0\fprq2{\*\panose 03070502060502030205}Papyrus;}{\f120\froman\fcharset0\fprq2{\*\panose 02020502060401020303}Perpetua;}\r
-{\f121\fscript\fcharset0\fprq2{\*\panose 03020602050506090804}Vivaldi;}{\f122\froman\fcharset2\fprq2{\*\panose 05020102010507070707}Wingdings 2;}{\f123\froman\fcharset2\fprq2{\*\panose 05040102010807070707}Wingdings 3;}\r
-{\f124\fdecor\fcharset0\fprq2{\*\panose 04090605060d06020702}Jokerman;}{\f125\fdecor\fcharset0\fprq2{\*\panose 04040403040a02020202}Juice ITC;}{\f126\fnil\fcharset2\fprq2{\*\panose 05000000000000000000}MS Reference 1;}\r
-{\f127\fnil\fcharset2\fprq2{\*\panose 00000000000000000000}MS Reference 2;}{\f128\fswiss\fcharset0\fprq2{\*\panose 020b0604030504040204}MS Reference Sans Serif;}{\f129\fnil\fcharset2\fprq2{\*\panose 05000500000000000000}MS Reference Specialty;}\r
-{\f130\fswiss\fcharset0\fprq2{\*\panose 020b0706040902060204}Haettenschweiler;}{\f131\fnil\fcharset2\fprq2{\*\panose 01010601010101010101}Monotype Sorts;}{\f132\fnil\fcharset2\fprq2{\*\panose 05000000000000000000}MS Outlook;}\r
-{\f133\froman\fcharset0\fprq2{\*\panose 02020503030404060203}Kartika;}{\f134\fnil\fcharset0\fprq2{\*\panose 01010600010101010101}Vrinda;}{\f135\fswiss\fcharset2\fprq2{\*\panose 020b0603050302020204}WinboardF;}\r
-{\f136\fswiss\fcharset161\fprq2{\*\panose 00000000000000000000}Franklin Gothic Medium Cond Gre;}{\f137\fswiss\fcharset186\fprq2{\*\panose 00000000000000000000}Franklin Gothic Medium Cond Bal;}\r
-{\f138\fswiss\fcharset186\fprq2{\*\panose 00000000000000000000}Franklin Gothic Demi Cond Balti;}{\f139\froman\fcharset238\fprq2 Times New Roman CE;}{\f140\froman\fcharset204\fprq2 Times New Roman Cyr;}\r
-{\f142\froman\fcharset161\fprq2 Times New Roman Greek;}{\f143\froman\fcharset162\fprq2 Times New Roman Tur;}{\f144\froman\fcharset186\fprq2 Times New Roman Baltic;}{\f145\fswiss\fcharset238\fprq2 Arial CE;}{\f146\fswiss\fcharset204\fprq2 Arial Cyr;}\r
-{\f148\fswiss\fcharset161\fprq2 Arial Greek;}{\f149\fswiss\fcharset162\fprq2 Arial Tur;}{\f150\fswiss\fcharset186\fprq2 Arial Baltic;}{\f151\fmodern\fcharset238\fprq1 Courier New CE;}{\f152\fmodern\fcharset204\fprq1 Courier New Cyr;}\r
-{\f154\fmodern\fcharset161\fprq1 Courier New Greek;}{\f155\fmodern\fcharset162\fprq1 Courier New Tur;}{\f156\fmodern\fcharset186\fprq1 Courier New Baltic;}{\f163\froman\fcharset238\fprq2 Times CE;}{\f164\froman\fcharset204\fprq2 Times Cyr;}\r
-{\f166\froman\fcharset161\fprq2 Times Greek;}{\f167\froman\fcharset162\fprq2 Times Tur;}{\f168\froman\fcharset186\fprq2 Times Baltic;}{\f169\fswiss\fcharset238\fprq2 Helvetica CE{\*\falt Arial};}\r
-{\f170\fswiss\fcharset204\fprq2 Helvetica Cyr{\*\falt Arial};}{\f172\fswiss\fcharset161\fprq2 Helvetica Greek{\*\falt Arial};}{\f173\fswiss\fcharset162\fprq2 Helvetica Tur{\*\falt Arial};}{\f174\fswiss\fcharset186\fprq2 Helvetica Baltic{\*\falt Arial};}\r
-{\f229\fswiss\fcharset238\fprq2 Tahoma CE;}{\f230\fswiss\fcharset204\fprq2 Tahoma Cyr;}{\f232\fswiss\fcharset161\fprq2 Tahoma Greek;}{\f233\fswiss\fcharset162\fprq2 Tahoma Tur;}{\f234\fswiss\fcharset186\fprq2 Tahoma Baltic;}\r
-{\f409\fswiss\fcharset238\fprq2 Lucida Sans Unicode CE;}{\f410\fswiss\fcharset204\fprq2 Lucida Sans Unicode Cyr;}{\f412\fswiss\fcharset161\fprq2 Lucida Sans Unicode Greek;}{\f413\fswiss\fcharset162\fprq2 Lucida Sans Unicode Tur;}\r
-{\f421\fswiss\fcharset238\fprq2 Century Gothic CE;}{\f422\fswiss\fcharset204\fprq2 Century Gothic Cyr;}{\f424\fswiss\fcharset161\fprq2 Century Gothic Greek;}{\f425\fswiss\fcharset162\fprq2 Century Gothic Tur;}\r
-{\f426\fswiss\fcharset186\fprq2 Century Gothic Baltic;}{\f475\fmodern\fcharset238\fprq1 Lucida Console CE;}{\f476\fmodern\fcharset204\fprq1 Lucida Console Cyr;}{\f478\fmodern\fcharset161\fprq1 Lucida Console Greek;}\r
-{\f479\fmodern\fcharset162\fprq1 Lucida Console Tur;}{\f481\fswiss\fcharset238\fprq2 Arial Black CE;}{\f482\fswiss\fcharset204\fprq2 Arial Black Cyr;}{\f484\fswiss\fcharset161\fprq2 Arial Black Greek;}{\f485\fswiss\fcharset162\fprq2 Arial Black Tur;}\r
-{\f486\fswiss\fcharset186\fprq2 Arial Black Baltic;}{\f487\fscript\fcharset238\fprq2 Comic Sans MS CE;}{\f488\fscript\fcharset204\fprq2 Comic Sans MS Cyr;}{\f490\fscript\fcharset161\fprq2 Comic Sans MS Greek;}\r
-{\f491\fscript\fcharset162\fprq2 Comic Sans MS Tur;}{\f492\fscript\fcharset186\fprq2 Comic Sans MS Baltic;}{\f493\fswiss\fcharset238\fprq2 Impact CE;}{\f494\fswiss\fcharset204\fprq2 Impact Cyr;}{\f496\fswiss\fcharset161\fprq2 Impact Greek;}\r
-{\f497\fswiss\fcharset162\fprq2 Impact Tur;}{\f498\fswiss\fcharset186\fprq2 Impact Baltic;}{\f499\fswiss\fcharset238\fprq2 Verdana CE;}{\f500\fswiss\fcharset204\fprq2 Verdana Cyr;}{\f502\fswiss\fcharset161\fprq2 Verdana Greek;}\r
-{\f503\fswiss\fcharset162\fprq2 Verdana Tur;}{\f504\fswiss\fcharset186\fprq2 Verdana Baltic;}{\f547\fswiss\fcharset238\fprq2 Arial Narrow CE;}{\f548\fswiss\fcharset204\fprq2 Arial Narrow Cyr;}{\f550\fswiss\fcharset161\fprq2 Arial Narrow Greek;}\r
-{\f551\fswiss\fcharset162\fprq2 Arial Narrow Tur;}{\f552\fswiss\fcharset186\fprq2 Arial Narrow Baltic;}{\f553\froman\fcharset238\fprq2 Bookman Old Style CE;}{\f554\froman\fcharset204\fprq2 Bookman Old Style Cyr;}\r
-{\f556\froman\fcharset161\fprq2 Bookman Old Style Greek;}{\f557\froman\fcharset162\fprq2 Bookman Old Style Tur;}{\f558\froman\fcharset186\fprq2 Bookman Old Style Baltic;}{\f559\froman\fcharset238\fprq2 Garamond CE;}\r
-{\f560\froman\fcharset204\fprq2 Garamond Cyr;}{\f562\froman\fcharset161\fprq2 Garamond Greek;}{\f563\froman\fcharset162\fprq2 Garamond Tur;}{\f564\froman\fcharset186\fprq2 Garamond Baltic;}{\f565\fswiss\fcharset238\fprq2 Trebuchet MS CE;}\r
-{\f566\fswiss\fcharset204\fprq2 Trebuchet MS Cyr;}{\f568\fswiss\fcharset161\fprq2 Trebuchet MS Greek;}{\f569\fswiss\fcharset162\fprq2 Trebuchet MS Tur;}{\f570\fswiss\fcharset186\fprq2 Trebuchet MS Baltic;}{\f655\froman\fcharset238\fprq2 Georgia CE;}\r
-{\f656\froman\fcharset204\fprq2 Georgia Cyr;}{\f658\froman\fcharset161\fprq2 Georgia Greek;}{\f659\froman\fcharset162\fprq2 Georgia Tur;}{\f660\froman\fcharset186\fprq2 Georgia Baltic;}{\f661\fswiss\fcharset238\fprq2 Franklin Gothic Medium CE;}\r
-{\f662\fswiss\fcharset204\fprq2 Franklin Gothic Medium Cyr;}{\f664\fswiss\fcharset161\fprq2 Franklin Gothic Medium Greek;}{\f665\fswiss\fcharset162\fprq2 Franklin Gothic Medium Tur;}{\f666\fswiss\fcharset186\fprq2 Franklin Gothic Medium Baltic;}\r
-{\f667\froman\fcharset238\fprq2 Palatino Linotype CE;}{\f668\froman\fcharset204\fprq2 Palatino Linotype Cyr;}{\f670\froman\fcharset161\fprq2 Palatino Linotype Greek;}{\f671\froman\fcharset162\fprq2 Palatino Linotype Tur;}\r
-{\f672\froman\fcharset186\fprq2 Palatino Linotype Baltic;}{\f721\froman\fcharset238\fprq2 Sylfaen CE;}{\f722\froman\fcharset204\fprq2 Sylfaen Cyr;}{\f724\froman\fcharset161\fprq2 Sylfaen Greek;}{\f725\froman\fcharset162\fprq2 Sylfaen Tur;}\r
-{\f726\froman\fcharset186\fprq2 Sylfaen Baltic;}{\f727\fswiss\fcharset238\fprq2 Microsoft Sans Serif CE;}{\f728\fswiss\fcharset204\fprq2 Microsoft Sans Serif Cyr;}{\f730\fswiss\fcharset161\fprq2 Microsoft Sans Serif Greek;}\r
-{\f731\fswiss\fcharset162\fprq2 Microsoft Sans Serif Tur;}{\f732\fswiss\fcharset186\fprq2 Microsoft Sans Serif Baltic;}{\f733\froman\fcharset238\fprq2 Rockwell CE;}{\f745\fscript\fcharset238\fprq2 Mistral CE;}{\f746\fscript\fcharset204\fprq2 Mistral Cyr;}\r
-{\f748\fscript\fcharset161\fprq2 Mistral Greek;}{\f749\fscript\fcharset162\fprq2 Mistral Tur;}{\f750\fscript\fcharset186\fprq2 Mistral Baltic;}{\f805\fswiss\fcharset238\fprq2 Franklin Gothic Book CE;}\r
-{\f806\fswiss\fcharset204\fprq2 Franklin Gothic Book Cyr;}{\f808\fswiss\fcharset161\fprq2 Franklin Gothic Book Greek;}{\f809\fswiss\fcharset162\fprq2 Franklin Gothic Book Tur;}{\f810\fswiss\fcharset186\fprq2 Franklin Gothic Book Baltic;}\r
-{\f811\fswiss\fcharset238\fprq2 Franklin Gothic Demi CE;}{\f812\fswiss\fcharset204\fprq2 Franklin Gothic Demi Cyr;}{\f814\fswiss\fcharset161\fprq2 Franklin Gothic Demi Greek;}{\f815\fswiss\fcharset162\fprq2 Franklin Gothic Demi Tur;}\r
-{\f816\fswiss\fcharset186\fprq2 Franklin Gothic Demi Baltic;}{\f817\fswiss\fcharset238\fprq2 Franklin Gothic Medium Cond CE;}{\f818\fswiss\fcharset204\fprq2 Franklin Gothic Medium Cond Cyr;}\r
-{\f820\fswiss\fcharset161\fprq2 Franklin Gothic Medium Cond Greek;}{\f821\fswiss\fcharset162\fprq2 Franklin Gothic Medium Cond Tur;}{\f822\fswiss\fcharset186\fprq2 Franklin Gothic Medium Cond Baltic;}\r
-{\f823\fswiss\fcharset238\fprq2 Franklin Gothic Heavy CE;}{\f824\fswiss\fcharset204\fprq2 Franklin Gothic Heavy Cyr;}{\f826\fswiss\fcharset161\fprq2 Franklin Gothic Heavy Greek;}{\f827\fswiss\fcharset162\fprq2 Franklin Gothic Heavy Tur;}\r
-{\f828\fswiss\fcharset186\fprq2 Franklin Gothic Heavy Baltic;}{\f829\fswiss\fcharset238\fprq2 Franklin Gothic Demi Cond CE;}{\f830\fswiss\fcharset204\fprq2 Franklin Gothic Demi Cond Cyr;}{\f832\fswiss\fcharset161\fprq2 Franklin Gothic Demi Cond Greek;}\r
-{\f833\fswiss\fcharset162\fprq2 Franklin Gothic Demi Cond Tur;}{\f834\fswiss\fcharset186\fprq2 Franklin Gothic Demi Cond Baltic;}{\f907\fswiss\fcharset238\fprq2 MS Reference Sans Serif CE;}{\f908\fswiss\fcharset204\fprq2 MS Reference Sans Serif Cyr;}\r
-{\f910\fswiss\fcharset161\fprq2 MS Reference Sans Serif Greek;}{\f911\fswiss\fcharset162\fprq2 MS Reference Sans Serif Tur;}{\f912\fswiss\fcharset186\fprq2 MS Reference Sans Serif Baltic;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\r
-\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;\r
-\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;}{\stylesheet{\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid \snext0 Normal;}{\s1\li120\sb280\sa120\sl-320\slmult0\nowidctlpar\adjustright \b\f5\cgrid \r
-\sbasedon0 \snext26 heading 1;}{\s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\adjustright \b\f5\fs20\cgrid \sbasedon0 \snext0 heading 2;}{\s3\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid \sbasedon0 \snext0 heading 3;}{\r
-\s4\fi-245\li360\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \f11\fs20\cgrid \sbasedon2 \snext4 heading 4;}{\s5\li120\sb80\sl-240\slmult0\keepn\nowidctlpar\outlinelevel4\adjustright \f5\fs20\ul\cgrid \sbasedon0 \snext0 heading 5;}{\*\r
-\cs10 \additive Default Paragraph Font;}{\*\cs15 \additive \f5\fs18\up6\lang1033 \sbasedon10 footnote reference;}{\s16\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid \sbasedon0 \snext0 footnote text;}{\s17\li360\sb80\sl-240\slmult0\r
-\nowidctlpar\adjustright \f5\fs20\cgrid \sbasedon0 \snext0 Normal Indent;}{\s18\fi-240\li600\sb60\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid \snext18 Jli;}{\s19\li120\sb60\sl-240\slmult0\keep\nowidctlpar\r
+{\f11\fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}MS Sans Serif;}{\f12\froman\fcharset0\fprq2{\*\panose 00000000000000000000}New York{\*\falt Times New Roman};}{\f13\fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}System;}\r
+{\f14\fnil\fcharset2\fprq2{\*\panose 05000000000000000000}Wingdings;}{\f15\fswiss\fcharset0\fprq2{\*\panose 020b0604030504040204}Tahoma;}{\f16\fnil\fcharset134\fprq2{\*\panose 02010600030101010101}SimSun{\*\falt ??};}\r
+{\f17\froman\fcharset0\fprq0{\*\panose 00000000000000000000}??;}{\f18\fswiss\fcharset0\fprq0{\*\panose 00000000000000000000}BookAntiqua-Bold;}{\f19\fswiss\fcharset0\fprq0{\*\panose 00000000000000000000}BookAntiqua;}\r
+{\f20\froman\fcharset0\fprq0{\*\panose 00000000000000000000}Minion-Regular;}{\f21\fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}Calibri;}{\f22\froman\fcharset0\fprq0{\*\panose 00000000000000000000}TimesNewRoman;}\r
+{\f23\froman\fcharset0\fprq0{\*\panose 00000000000000000000}TimesNewRoman,Italic;}{\f24\froman\fcharset0\fprq2{\*\panose 00000000000000000000}Cambria Math;}{\f25\fmodern\fcharset255\fprq1{\*\panose 00000000000000000000}Terminal;}\r
+{\f26\fmodern\fcharset0\fprq1{\*\panose 00000000000000000000}Fixedsys;}{\f27\fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}Small Fonts;}{\f28\fdecor\fcharset2\fprq1{\*\panose 00000000000000000000}WST_Czec;}\r
+{\f29\fdecor\fcharset2\fprq1{\*\panose 00000000000000000000}WST_Engl;}{\f30\fdecor\fcharset2\fprq1{\*\panose 00000000000000000000}WST_Fren;}{\f31\fdecor\fcharset2\fprq1{\*\panose 00000000000000000000}WST_Germ;}\r
+{\f32\fdecor\fcharset2\fprq1{\*\panose 00000000000000000000}WST_Ital;}{\f33\fdecor\fcharset2\fprq1{\*\panose 00000000000000000000}WST_Span;}{\f34\fdecor\fcharset2\fprq1{\*\panose 00000000000000000000}WST_Swed;}\r
+{\f35\fnil\fcharset2\fprq2{\*\panose 00000000000000000000}Marlett;}{\f36\fmodern\fcharset0\fprq1{\*\panose 020b0609040504020204}Lucida Console;}{\f37\fswiss\fcharset0\fprq2{\*\panose 020b0602030504020204}Lucida Sans Unicode;}\r
+{\f38\fswiss\fcharset0\fprq2{\*\panose 020b0604030504040204}Verdana;}{\f39\fswiss\fcharset0\fprq2{\*\panose 020b0a04020102020204}Arial Black;}{\f40\fscript\fcharset0\fprq2{\*\panose 030f0702030302020204}Comic Sans MS;}\r
+{\f41\fswiss\fcharset0\fprq2{\*\panose 020b0806030902050204}Impact;}{\f42\froman\fcharset0\fprq2{\*\panose 02040502050405020303}Georgia;}{\f43\fswiss\fcharset0\fprq2{\*\panose 020b0603020102020204}Franklin Gothic Medium;}\r
+{\f44\froman\fcharset0\fprq2{\*\panose 02040502050505030304}Palatino Linotype;}{\f45\fswiss\fcharset0\fprq2{\*\panose 020b0603020202020204}Trebuchet MS;}{\f46\froman\fcharset2\fprq2{\*\panose 05030102010509060703}Webdings;}\r
+{\f47\fscript\fcharset0\fprq2 Estrangelo Edessa;}{\f48\fnil\fcharset0\fprq2 Gautami;}{\f49\fnil\fcharset0\fprq2 Latha;}{\f50\fnil\fcharset0\fprq2 Mangal;}{\f51\fnil\fcharset0\fprq2 MV Boli;}{\f52\fnil\fcharset0\fprq2 Raavi;}\r
+{\f53\fnil\fcharset0\fprq2 Shruti;}{\f54\fnil\fcharset0\fprq2 Tunga;}{\f55\froman\fcharset0\fprq2{\*\panose 010a0502050306030303}Sylfaen;}{\f56\fswiss\fcharset0\fprq2{\*\panose 020b0604020202020204}Microsoft Sans Serif;}\r
+{\f57\fswiss\fcharset0\fprq2{\*\panose 020b0506020202030204}Arial Narrow;}{\f58\froman\fcharset0\fprq2{\*\panose 02060603020205020403}Rockwell;}{\f59\froman\fcharset0\fprq2{\*\panose 02060903040505020403}Rockwell Extra Bold;}\r
+{\f60\fscript\fcharset0\fprq2{\*\panose 03090702030407020403}Mistral;}{\f61\fdecor\fcharset0\fprq2{\*\panose 04020505051007020d02}Blackadder ITC;}{\f62\fscript\fcharset0\fprq2{\*\panose 03070402050302030203}Bradley Hand ITC;}\r
+{\f63\fswiss\fcharset0\fprq2{\*\panose 020e0705020206020404}Copperplate Gothic Bold;}{\f64\fswiss\fcharset0\fprq2{\*\panose 020e0507020206020404}Copperplate Gothic Light;}{\f65\fdecor\fcharset0\fprq2{\*\panose 04040404050702020202}Curlz MT;}\r
+{\f66\fscript\fcharset0\fprq2{\*\panose 030303020407070d0804}Edwardian Script ITC;}{\f67\froman\fcharset0\fprq2{\*\panose 02090707080505020304}Engravers MT;}{\f68\fswiss\fcharset0\fprq2{\*\panose 020b0805030504020804}Eras Demi ITC;}\r
+{\f69\fswiss\fcharset0\fprq2{\*\panose 020b0402030504020804}Eras Light ITC;}{\f70\fswiss\fcharset0\fprq2{\*\panose 020b0504020202050204}Eurostile;}{\f71\fdecor\fcharset0\fprq2{\*\panose 04060505060202020a04}Felix Titling;}\r
+{\f72\fswiss\fcharset0\fprq2{\*\panose 020b0503020102020204}Franklin Gothic Book;}{\f73\fswiss\fcharset0\fprq2{\*\panose 020b0703020102020204}Franklin Gothic Demi;}{\f74\fswiss\fcharset0\fprq2{\*\panose 020b0606030402020204}Franklin Gothic Medium Cond;}\r
+{\f75\fswiss\fcharset0\fprq2{\*\panose 020b0903020102020204}Franklin Gothic Heavy;}{\f76\fswiss\fcharset0\fprq2{\*\panose 020b0706030402020204}Franklin Gothic Demi Cond;}{\f77\fscript\fcharset0\fprq2{\*\panose 03020402040607040605}French Script MT;}\r
+{\f78\fswiss\fcharset0\fprq2{\*\panose 020b0502020202020204}Century Gothic;}{\f79\fscript\fcharset0\fprq2{\*\panose 03050502040202030202}Kristen ITC;}{\f80\fswiss\fcharset0\fprq2{\*\panose 020b0602030504020204}Lucida Sans;}\r
+{\f81\fswiss\fcharset0\fprq2{\*\panose 020e0502030308020204}Maiandra GD;}{\f82\fdecor\fcharset0\fprq2{\*\panose 04040403030d02020704}Matisse ITC;}{\f83\fscript\fcharset0\fprq2{\*\panose 03070502060502030205}Papyrus;}\r
+{\f84\froman\fcharset0\fprq2{\*\panose 02020502060401020303}Perpetua;}{\f85\fdecor\fcharset0\fprq2{\*\panose 04020404030d07020202}Tempus Sans ITC;}{\f86\fscript\fcharset0\fprq2{\*\panose 03020602050506090804}Vivaldi;}\r
+{\f87\froman\fcharset2\fprq2{\*\panose 05020102010507070707}Wingdings 2;}{\f88\froman\fcharset2\fprq2{\*\panose 05040102010807070707}Wingdings 3;}{\f89\fdecor\fcharset0\fprq2{\*\panose 04090605060d06020702}Jokerman;}\r
+{\f90\fdecor\fcharset0\fprq2{\*\panose 04040403040a02020202}Juice ITC;}{\f91\fmodern\fcharset0\fprq2{\*\panose 02010509020102010303}OCR A Extended;}{\f92\fnil\fcharset2\fprq2{\*\panose 05000000000000000000}MS Reference 1;}\r
+{\f93\fnil\fcharset2\fprq2{\*\panose 00000000000000000000}MS Reference 2;}{\f94\fswiss\fcharset0\fprq2{\*\panose 020b0604030504040204}MS Reference Sans Serif;}{\f95\fnil\fcharset2\fprq2{\*\panose 05000500000000000000}MS Reference Specialty;}\r
+{\f96\froman\fcharset2\fprq2{\*\panose 05050102010205020202}MT Extra;}{\f97\fswiss\fcharset0\fprq2{\*\panose 020b0706040902060204}Haettenschweiler;}{\f98\froman\fcharset0\fprq2{\*\panose 02050604050505020204}Bookman Old Style;}\r
+{\f99\fnil\fcharset2\fprq2{\*\panose 01010601010101010101}Monotype Sorts;}{\f100\froman\fcharset0\fprq2{\*\panose 02020404030301010803}Garamond;}{\f101\fnil\fcharset2\fprq2{\*\panose 05000000000000000000}MS Outlook;}\r
+{\f102\froman\fcharset0\fprq2{\*\panose 02020503030404060203}Kartika;}{\f103\fnil\fcharset0\fprq2{\*\panose 01010600010101010101}Vrinda;}{\f104\fswiss\fcharset2\fprq2{\*\panose 020b0603050302020204}WinboardF;}\r
+{\f105\fswiss\fcharset2\fprq2{\*\panose 020b0603050302020204}Chess Mark;}{\f106\fnil\fcharset0\fprq2{\*\panose 02000500000000000000}Superchess;}{\f107\fswiss\fcharset0\fprq2{\*\panose 020b0603050302020204}Tasc Chess Figurine;}\r
+{\f108\fnil\fcharset0\fprq1{\*\panose 02010603010101010101}XIANGQI;}{\f109\fmodern\fcharset128\fprq1{\*\panose 02020609040205080304}MS Mincho{\*\falt ?? ??};}{\f110\fmodern\fcharset128\fprq1{\*\panose 02020609040205080304}@MS Mincho;}\r
+{\f111\froman\fcharset128\fprq2{\*\panose 02020600040205080304}MS PMincho;}{\f112\froman\fcharset128\fprq2{\*\panose 02020600040205080304}@MS PMincho;}{\f113\fmodern\fcharset128\fprq1{\*\panose 020b0609070205080204}MS Gothic{\*\falt ?? ????};}\r
+{\f114\fmodern\fcharset128\fprq1{\*\panose 020b0609070205080204}@MS Gothic;}{\f115\fswiss\fcharset128\fprq2{\*\panose 020b0600070205080204}MS PGothic;}{\f116\fswiss\fcharset128\fprq2{\*\panose 020b0600070205080204}@MS PGothic;}\r
+{\f117\fswiss\fcharset128\fprq2{\*\panose 020b0600070205080204}MS UI Gothic;}{\f118\fswiss\fcharset128\fprq2{\*\panose 020b0600070205080204}@MS UI Gothic;}{\f119\fswiss\fcharset129\fprq2{\*\panose 020b0600000101010101}Gulim{\*\falt ??};}\r
+{\f120\fswiss\fcharset129\fprq2{\*\panose 020b0600000101010101}@Gulim;}{\f121\fmodern\fcharset129\fprq1{\*\panose 020b0609000101010101}GulimChe;}{\f122\fmodern\fcharset129\fprq1{\*\panose 020b0609000101010101}@GulimChe;}\r
+{\f123\fswiss\fcharset129\fprq2{\*\panose 020b0600000101010101}Dotum{\*\falt ??};}{\f124\fswiss\fcharset129\fprq2{\*\panose 020b0600000101010101}@Dotum;}{\f125\fmodern\fcharset129\fprq1{\*\panose 020b0609000101010101}DotumChe;}\r
+{\f126\fmodern\fcharset129\fprq1{\*\panose 020b0609000101010101}@DotumChe;}{\f127\froman\fcharset129\fprq2{\*\panose 02030600000101010101}Batang{\*\falt ??};}{\f128\froman\fcharset129\fprq2{\*\panose 02030600000101010101}@Batang;}\r
+{\f129\fmodern\fcharset129\fprq1{\*\panose 02030609000101010101}BatangChe;}{\f130\fmodern\fcharset129\fprq1{\*\panose 02030609000101010101}@BatangChe;}{\f131\froman\fcharset129\fprq2{\*\panose 02030600000101010101}Gungsuh;}\r
+{\f132\froman\fcharset129\fprq2{\*\panose 02030600000101010101}@Gungsuh;}{\f133\fmodern\fcharset129\fprq1{\*\panose 02030609000101010101}GungsuhChe;}{\f134\fmodern\fcharset129\fprq1{\*\panose 02030609000101010101}@GungsuhChe;}\r
+{\f135\fnil\fcharset134\fprq2{\*\panose 02010600030101010101}@SimSun;}{\f136\fmodern\fcharset134\fprq1{\*\panose 02010609030101010101}NSimSun;}{\f137\fmodern\fcharset134\fprq1{\*\panose 02010609030101010101}@NSimSun;}\r
+{\f138\fnil\fcharset134\fprq2{\*\panose 02010600030101010101}SimHei{\*\falt ??};}{\f139\fnil\fcharset134\fprq2{\*\panose 02010600030101010101}@SimHei;}{\f140\fmodern\fcharset136\fprq1{\*\panose 02020309000000000000}MingLiU{\*\falt ???};}\r
+{\f141\fmodern\fcharset136\fprq1{\*\panose 02020309000000000000}@MingLiU;}{\f142\froman\fcharset136\fprq2{\*\panose 02020300000000000000}PMingLiU{\*\falt ????};}{\f143\froman\fcharset136\fprq2{\*\panose 02020300000000000000}@PMingLiU;}\r
+{\f144\froman\fcharset128\fprq1{\*\panose 00000000000000000000}Mincho{\*\falt ??};}{\f145\froman\fcharset0\fprq2{\*\panose 00000000000000000000}Century;}{\f146\froman\fcharset222\fprq2{\*\panose 00000000000000000000}Angsana New;}\r
+{\f147\froman\fcharset222\fprq2{\*\panose 00000000000000000000}Cordia New;}{\f148\froman\fcharset0\fprq2{\*\panose 00000000000000000000}Sendnya;}{\f149\froman\fcharset0\fprq2{\*\panose 00000000000000000000}Estrangella Edessa;}\r
+{\f150\fswiss\fcharset128\fprq2{\*\panose 00000000000000000000}Arial Unicode MS;}{\f151\fswiss\fcharset0\fprq0{\*\panose 00000000000000000000}Univers (WN);}{\f152\froman\fcharset0\fprq0{\*\panose 00000000000000000000}CG Times (WN);}\r
+{\f153\fswiss\fcharset128\fprq2{\*\panose 00000000000000000000}@Arial Unicode MS;}{\f154\froman\fcharset0\fprq2{\*\panose 00000000000000000000}Book Antiqua;}{\f155\fscript\fcharset0\fprq2{\*\panose 00000000000000000000}Monotype Corsiva;}\r
+{\f156\fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}CA Chess;}{\f157\fswiss\fcharset2\fprq2{\*\panose 00000000000000000000}ISDiagram;}{\f158\fswiss\fcharset2\fprq2{\*\panose 00000000000000000000}CADiagram;}\r
+{\f159\fswiss\fcharset2\fprq2{\*\panose 00000000000000000000}Chess Alfonso-X;}{\f160\fnil\fcharset0\fprq2{\*\panose 00000000000000000000}Chess Adventurer;}{\f161\fnil\fcharset0\fprq2{\*\panose 00000000000000000000}Chess Cases;}\r
+{\f162\fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}Chess Marroquin;}{\f163\fswiss\fcharset2\fprq2{\*\panose 00000000000000000000}Chess Condal;}{\f164\fswiss\fcharset2\fprq2{\*\panose 00000000000000000000}Chess Harlequin;}\r
+{\f165\fswiss\fcharset2\fprq2{\*\panose 00000000000000000000}Chess Kingdom;}{\f166\fswiss\fcharset2\fprq2{\*\panose 00000000000000000000}Chess Leipzig;}{\f167\fswiss\fcharset2\fprq2{\*\panose 00000000000000000000}Chess Line;}\r
+{\f168\fnil\fcharset0\fprq2{\*\panose 00000000000000000000}Chess Lucena;}{\f169\fswiss\fcharset2\fprq2{\*\panose 00000000000000000000}Chess Magnetic;}{\f170\fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}Chess Maya;}\r
+{\f171\fswiss\fcharset2\fprq2{\*\panose 00000000000000000000}Chess Merida Fatx;}{\f172\fswiss\fcharset2\fprq2{\*\panose 00000000000000000000}Chess Merida;}{\f173\fswiss\fcharset2\fprq2{\*\panose 00000000000000000000}Chess Millennia-D;}\r
+{\f174\fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}Chess Miscel;}{\f175\fswiss\fcharset2\fprq2{\*\panose 00000000000000000000}Chess Motif;}{\f176\fswiss\fcharset2\fprq2{\*\panose 00000000000000000000}Chess Mediaeval;}\r
+{\f177\fnil\fcharset0\fprq2{\*\panose 00000000000000000000}Smart;}{\f178\fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}Traveller Standard;}{\f179\fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}Chess;}\r
+{\f180\fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}Chess Usual;}{\f181\fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}Chess Utrecht;}{\f182\fnil\fcharset2\fprq2{\*\panose 00000000000000000000}Mathematica1;}\r
+{\f183\froman\fcharset2\fprq2{\*\panose 00000000000000000000}Mathematica1Mono;}{\f184\fnil\fcharset2\fprq2{\*\panose 00000000000000000000}Mathematica2;}{\f185\fnil\fcharset2\fprq2{\*\panose 00000000000000000000}Mathematica2Mono;}\r
+{\f186\fnil\fcharset2\fprq2{\*\panose 00000000000000000000}Mathematica3;}{\f187\fnil\fcharset2\fprq2{\*\panose 00000000000000000000}Mathematica3Mono;}{\f188\fnil\fcharset2\fprq2{\*\panose 00000000000000000000}Mathematica4;}\r
+{\f189\fnil\fcharset2\fprq2{\*\panose 00000000000000000000}Mathematica4Mono;}{\f190\fnil\fcharset2\fprq2{\*\panose 00000000000000000000}Mathematica5;}{\f191\fnil\fcharset2\fprq2{\*\panose 00000000000000000000}Mathematica5Mono;}\r
+{\f192\fnil\fcharset2\fprq2{\*\panose 00000000000000000000}Mathematica6;}{\f193\fnil\fcharset2\fprq2{\*\panose 00000000000000000000}Mathematica6Mono;}{\f194\fnil\fcharset2\fprq2{\*\panose 00000000000000000000}Mathematica7;}\r
+{\f195\fnil\fcharset2\fprq2{\*\panose 00000000000000000000}Mathematica7Mono;}{\f196\fnil\fcharset0\fprq2{\*\panose 00000000000000000000}Bookup;}{\f197\fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}Chessmaster9000;}\r
+{\f198\fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}FigurineCB AriesSP;}{\f199\fnil\fcharset0\fprq1{\*\panose 00000000000000000000}FigurineCB LetterSP;}{\f200\froman\fcharset0\fprq2{\*\panose 00000000000000000000}FigurineCB TimeSP;}\r
+{\f201\fnil\fcharset0\fprq2{\*\panose 00000000000000000000}DiagramTTFritz;}{\f202\fmodern\fcharset2\fprq1{\*\panose 00000000000000000000}FigurineCrrCB;}{\f203\froman\fcharset2\fprq2{\*\panose 00000000000000000000}FigurineTmsCB;}\r
+{\f204\fmodern\fcharset0\fprq1{\*\panose 00000000000000000000}HE_TERMINAL;}{\f205\fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}Digiface;}{\f206\fnil\fcharset0\fprq2{\*\panose 00000000000000000000}Sydnie;}\r
+{\f207\froman\fcharset177\fprq2{\*\panose 00000000000000000000}Times New Roman (Hebrew);}{\f208\froman\fcharset178\fprq2{\*\panose 00000000000000000000}Times New Roman (Arabic);}\r
+{\f209\froman\fcharset163\fprq2{\*\panose 00000000000000000000}Times New Roman (Vietnamese);}{\f210\fswiss\fcharset177\fprq2{\*\panose 00000000000000000000}Arial (Hebrew);}{\f211\fswiss\fcharset178\fprq2{\*\panose 00000000000000000000}Arial (Arabic);}\r
+{\f212\fswiss\fcharset163\fprq2{\*\panose 00000000000000000000}Arial (Vietnamese);}{\f213\fmodern\fcharset177\fprq1{\*\panose 00000000000000000000}Courier New (Hebrew);}{\f214\fmodern\fcharset178\fprq1{\*\panose 00000000000000000000}Courier New (Arabic);}\r
+{\f215\fmodern\fcharset163\fprq1{\*\panose 00000000000000000000}Courier New (Vietnamese);}{\f216\fswiss\fcharset177\fprq2{\*\panose 00000000000000000000}Helvetica (Hebrew){\*\falt Arial};}\r
+{\f217\fswiss\fcharset178\fprq2{\*\panose 00000000000000000000}Helvetica (Arabic){\*\falt Arial};}{\f218\fswiss\fcharset163\fprq2{\*\panose 00000000000000000000}Helvetica (Vietnamese){\*\falt Arial};}\r
+{\f219\froman\fcharset238\fprq2{\*\panose 00000000000000000000}Century CE;}{\f220\froman\fcharset204\fprq2{\*\panose 00000000000000000000}Century Cyr;}{\f221\froman\fcharset161\fprq2{\*\panose 00000000000000000000}Century Greek;}\r
+{\f222\froman\fcharset162\fprq2{\*\panose 00000000000000000000}Century Tur;}{\f223\froman\fcharset186\fprq2{\*\panose 00000000000000000000}Century Baltic;}{\f224\fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}Arial Unicode MS Western;}\r
+{\f225\fswiss\fcharset238\fprq2{\*\panose 00000000000000000000}Arial Unicode MS CE;}{\f226\fswiss\fcharset204\fprq2{\*\panose 00000000000000000000}Arial Unicode MS Cyr;}\r
+{\f227\fswiss\fcharset161\fprq2{\*\panose 00000000000000000000}Arial Unicode MS Greek;}{\f228\fswiss\fcharset162\fprq2{\*\panose 00000000000000000000}Arial Unicode MS Tur;}\r
+{\f229\fswiss\fcharset177\fprq2{\*\panose 00000000000000000000}Arial Unicode MS (Hebrew);}{\f230\fswiss\fcharset178\fprq2{\*\panose 00000000000000000000}Arial Unicode MS (Arabic);}\r
+{\f231\fswiss\fcharset186\fprq2{\*\panose 00000000000000000000}Arial Unicode MS Baltic;}{\f232\fswiss\fcharset163\fprq2{\*\panose 00000000000000000000}Arial Unicode MS (Vietnamese);}\r
+{\f233\fswiss\fcharset222\fprq2{\*\panose 00000000000000000000}Arial Unicode MS (Thai);}{\f234\fswiss\fcharset177\fprq2{\*\panose 00000000000000000000}Tahoma (Hebrew);}{\f235\fswiss\fcharset178\fprq2{\*\panose 00000000000000000000}Tahoma (Arabic);}\r
+{\f236\fswiss\fcharset163\fprq2{\*\panose 00000000000000000000}Tahoma (Vietnamese);}{\f237\fswiss\fcharset222\fprq2{\*\panose 00000000000000000000}Tahoma (Thai);}{\f238\fswiss\fcharset177\fprq2{\*\panose 00000000000000000000}Lucida Sans Unicode (Hebrew);}\r
+{\f239\fswiss\fcharset163\fprq2{\*\panose 00000000000000000000}Verdana (Vietnamese);}{\f240\froman\fcharset163\fprq2{\*\panose 00000000000000000000}Palatino Linotype (Vietnamese);}\r
+{\f241\fswiss\fcharset177\fprq2{\*\panose 00000000000000000000}Microsoft Sans Serif (Hebrew);}{\f242\fswiss\fcharset178\fprq2{\*\panose 00000000000000000000}Microsoft Sans Serif (Arabic);}\r
+{\f243\fswiss\fcharset163\fprq2{\*\panose 00000000000000000000}Microsoft Sans Serif (Vietnames;}{\f244\fswiss\fcharset222\fprq2{\*\panose 00000000000000000000}Microsoft Sans Serif (Thai);}\r
+{\f245\fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}@Arial Unicode MS Western;}{\f246\fswiss\fcharset238\fprq2{\*\panose 00000000000000000000}@Arial Unicode MS CE;}\r
+{\f247\fswiss\fcharset204\fprq2{\*\panose 00000000000000000000}@Arial Unicode MS Cyr;}{\f248\fswiss\fcharset161\fprq2{\*\panose 00000000000000000000}@Arial Unicode MS Greek;}\r
+{\f249\fswiss\fcharset162\fprq2{\*\panose 00000000000000000000}@Arial Unicode MS Tur;}{\f250\fswiss\fcharset177\fprq2{\*\panose 00000000000000000000}@Arial Unicode MS (Hebrew);}\r
+{\f251\fswiss\fcharset178\fprq2{\*\panose 00000000000000000000}@Arial Unicode MS (Arabic);}{\f252\fswiss\fcharset186\fprq2{\*\panose 00000000000000000000}@Arial Unicode MS Baltic;}\r
+{\f253\fswiss\fcharset163\fprq2{\*\panose 00000000000000000000}@Arial Unicode MS (Vietnamese);}{\f254\fswiss\fcharset222\fprq2{\*\panose 00000000000000000000}@Arial Unicode MS (Thai);}\r
+{\f255\froman\fcharset238\fprq2{\*\panose 00000000000000000000}Book Antiqua CE;}{\f256\froman\fcharset204\fprq2{\*\panose 00000000000000000000}Book Antiqua Cyr;}{\f257\froman\fcharset161\fprq2{\*\panose 00000000000000000000}Book Antiqua Greek;}\r
+{\f258\froman\fcharset162\fprq2{\*\panose 00000000000000000000}Book Antiqua Tur;}{\f259\froman\fcharset186\fprq2{\*\panose 00000000000000000000}Book Antiqua Baltic;}{\f260\fswiss\fcharset238\fprq2{\*\panose 00000000000000000000}Haettenschweiler CE;}\r
+{\f261\fswiss\fcharset204\fprq2{\*\panose 00000000000000000000}Haettenschweiler Cyr;}{\f262\fswiss\fcharset161\fprq2{\*\panose 00000000000000000000}Haettenschweiler Greek;}\r
+{\f263\fswiss\fcharset162\fprq2{\*\panose 00000000000000000000}Haettenschweiler Tur;}{\f264\fswiss\fcharset186\fprq2{\*\panose 00000000000000000000}Haettenschweiler Baltic;}\r
+{\f265\fscript\fcharset238\fprq2{\*\panose 00000000000000000000}Monotype Corsiva CE;}{\f266\fscript\fcharset204\fprq2{\*\panose 00000000000000000000}Monotype Corsiva Cyr;}\r
+{\f267\fscript\fcharset161\fprq2{\*\panose 00000000000000000000}Monotype Corsiva Greek;}{\f268\fscript\fcharset162\fprq2{\*\panose 00000000000000000000}Monotype Corsiva Tur;}\r
+{\f269\fscript\fcharset186\fprq2{\*\panose 00000000000000000000}Monotype Corsiva Baltic;}{\f270\fswiss\fcharset204\fprq2{\*\panose 00000000000000000000}CA Chess Cyr;}{\f271\fswiss\fcharset162\fprq2{\*\panose 00000000000000000000}CA Chess Tur;}\r
+{\f272\fmodern\fcharset238\fprq1{\*\panose 00000000000000000000}HE_TERMINAL CE;}{\f273\fmodern\fcharset204\fprq1{\*\panose 00000000000000000000}HE_TERMINAL Cyr;}{\f274\fmodern\fcharset161\fprq1{\*\panose 00000000000000000000}HE_TERMINAL Greek;}\r
+{\f275\fmodern\fcharset162\fprq1{\*\panose 00000000000000000000}HE_TERMINAL Tur;}{\f276\fmodern\fcharset186\fprq1{\*\panose 00000000000000000000}HE_TERMINAL Baltic;}{\f277\fnil\fcharset161\fprq2{\*\panose 00000000000000000000}Sydnie Greek;}\r
+{\f278\fmodern\fcharset128\fprq1{\*\panose 00000000000000000000}Gothic{\*\falt ?????};}{\f279\fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}News Gothic MT;}{\f280\fscript\fcharset0\fprq2{\*\panose 00000000000000000000}Lucida Handwriting;}\r
+{\f281\froman\fcharset0\fprq2{\*\panose 00000000000000000000}Calisto MT;}{\f282\fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}Abadi MT Condensed Light;}{\f283\fdecor\fcharset0\fprq2{\*\panose 00000000000000000000}Westminster;}\r
+{\f284\fmodern\fcharset0\fprq1{\*\panose 00000000000000000000}OCR-A II;}{\f285\fmodern\fcharset0\fprq1{\*\panose 00000000000000000000}OCR B MT;}{\f286\fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}QuickType II;}\r
+{\f287\fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}QuickType II Condensed;}{\f288\fmodern\fcharset0\fprq1{\*\panose 00000000000000000000}QuickType II Mono;}{\f289\fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}QuickType II Pi;}\r
+{\f290\fswiss\fcharset161\fprq2{\*\panose 00000000000000000000}Franklin Gothic Medium Cond Gre;}{\f291\fswiss\fcharset186\fprq2{\*\panose 00000000000000000000}Franklin Gothic Medium Cond Bal;}\r
+{\f292\fswiss\fcharset186\fprq2{\*\panose 00000000000000000000}Franklin Gothic Demi Cond Balti;}{\f293\froman\fcharset238\fprq0{\*\panose 00000000000000000000}?? CE;}{\f294\froman\fcharset162\fprq0{\*\panose 00000000000000000000}?? Tur;}\r
+{\f295\fswiss\fcharset238\fprq2{\*\panose 00000000000000000000}Calibri CE;}{\f296\fswiss\fcharset204\fprq2{\*\panose 00000000000000000000}Calibri Cyr;}{\f297\fswiss\fcharset161\fprq2{\*\panose 00000000000000000000}Calibri Greek;}\r
+{\f298\fswiss\fcharset162\fprq2{\*\panose 00000000000000000000}Calibri Tur;}{\f299\fswiss\fcharset186\fprq2{\*\panose 00000000000000000000}Calibri Baltic;}{\f300\froman\fcharset238\fprq2{\*\panose 00000000000000000000}Cambria Math CE;}\r
+{\f301\froman\fcharset204\fprq2{\*\panose 00000000000000000000}Cambria Math Cyr;}{\f302\froman\fcharset161\fprq2{\*\panose 00000000000000000000}Cambria Math Greek;}{\f303\froman\fcharset162\fprq2{\*\panose 00000000000000000000}Cambria Math Tur;}\r
+{\f304\froman\fcharset186\fprq2{\*\panose 00000000000000000000}Cambria Math Baltic;}{\f305\froman\fcharset238\fprq2 Times New Roman CE;}{\f306\froman\fcharset204\fprq2 Times New Roman Cyr;}{\f308\froman\fcharset161\fprq2 Times New Roman Greek;}\r
+{\f309\froman\fcharset162\fprq2 Times New Roman Tur;}{\f310\froman\fcharset186\fprq2 Times New Roman Baltic;}{\f311\fswiss\fcharset238\fprq2 Arial CE;}{\f312\fswiss\fcharset204\fprq2 Arial Cyr;}{\f314\fswiss\fcharset161\fprq2 Arial Greek;}\r
+{\f315\fswiss\fcharset162\fprq2 Arial Tur;}{\f316\fswiss\fcharset186\fprq2 Arial Baltic;}{\f317\fmodern\fcharset238\fprq1 Courier New CE;}{\f318\fmodern\fcharset204\fprq1 Courier New Cyr;}{\f320\fmodern\fcharset161\fprq1 Courier New Greek;}\r
+{\f321\fmodern\fcharset162\fprq1 Courier New Tur;}{\f322\fmodern\fcharset186\fprq1 Courier New Baltic;}{\f329\froman\fcharset238\fprq2 Times CE;}{\f330\froman\fcharset204\fprq2 Times Cyr;}{\f332\froman\fcharset161\fprq2 Times Greek;}\r
+{\f333\froman\fcharset162\fprq2 Times Tur;}{\f334\froman\fcharset186\fprq2 Times Baltic;}{\f335\fswiss\fcharset238\fprq2 Helvetica CE{\*\falt Arial};}{\f336\fswiss\fcharset204\fprq2 Helvetica Cyr{\*\falt Arial};}\r
+{\f338\fswiss\fcharset161\fprq2 Helvetica Greek{\*\falt Arial};}{\f339\fswiss\fcharset162\fprq2 Helvetica Tur{\*\falt Arial};}{\f340\fswiss\fcharset186\fprq2 Helvetica Baltic{\*\falt Arial};}{\f395\fswiss\fcharset238\fprq2 Tahoma CE;}\r
+{\f396\fswiss\fcharset204\fprq2 Tahoma Cyr;}{\f398\fswiss\fcharset161\fprq2 Tahoma Greek;}{\f399\fswiss\fcharset162\fprq2 Tahoma Tur;}{\f400\fswiss\fcharset186\fprq2 Tahoma Baltic;}{\f403\fnil\fcharset0\fprq2 SimSun{\*\falt ??};}\r
+{\f521\fmodern\fcharset238\fprq1 Lucida Console CE;}{\f522\fmodern\fcharset204\fprq1 Lucida Console Cyr;}{\f524\fmodern\fcharset161\fprq1 Lucida Console Greek;}{\f525\fmodern\fcharset162\fprq1 Lucida Console Tur;}\r
+{\f527\fswiss\fcharset238\fprq2 Lucida Sans Unicode CE;}{\f528\fswiss\fcharset204\fprq2 Lucida Sans Unicode Cyr;}{\f530\fswiss\fcharset161\fprq2 Lucida Sans Unicode Greek;}{\f531\fswiss\fcharset162\fprq2 Lucida Sans Unicode Tur;}\r
+{\f533\fswiss\fcharset238\fprq2 Verdana CE;}{\f534\fswiss\fcharset204\fprq2 Verdana Cyr;}{\f536\fswiss\fcharset161\fprq2 Verdana Greek;}{\f537\fswiss\fcharset162\fprq2 Verdana Tur;}{\f538\fswiss\fcharset186\fprq2 Verdana Baltic;}\r
+{\f539\fswiss\fcharset238\fprq2 Arial Black CE;}{\f540\fswiss\fcharset204\fprq2 Arial Black Cyr;}{\f542\fswiss\fcharset161\fprq2 Arial Black Greek;}{\f543\fswiss\fcharset162\fprq2 Arial Black Tur;}{\f544\fswiss\fcharset186\fprq2 Arial Black Baltic;}\r
+{\f545\fscript\fcharset238\fprq2 Comic Sans MS CE;}{\f546\fscript\fcharset204\fprq2 Comic Sans MS Cyr;}{\f548\fscript\fcharset161\fprq2 Comic Sans MS Greek;}{\f549\fscript\fcharset162\fprq2 Comic Sans MS Tur;}\r
+{\f550\fscript\fcharset186\fprq2 Comic Sans MS Baltic;}{\f551\fswiss\fcharset238\fprq2 Impact CE;}{\f552\fswiss\fcharset204\fprq2 Impact Cyr;}{\f554\fswiss\fcharset161\fprq2 Impact Greek;}{\f555\fswiss\fcharset162\fprq2 Impact Tur;}\r
+{\f556\fswiss\fcharset186\fprq2 Impact Baltic;}{\f557\froman\fcharset238\fprq2 Georgia CE;}{\f558\froman\fcharset204\fprq2 Georgia Cyr;}{\f560\froman\fcharset161\fprq2 Georgia Greek;}{\f561\froman\fcharset162\fprq2 Georgia Tur;}\r
+{\f562\froman\fcharset186\fprq2 Georgia Baltic;}{\f563\fswiss\fcharset238\fprq2 Franklin Gothic Medium CE;}{\f564\fswiss\fcharset204\fprq2 Franklin Gothic Medium Cyr;}{\f566\fswiss\fcharset161\fprq2 Franklin Gothic Medium Greek;}\r
+{\f567\fswiss\fcharset162\fprq2 Franklin Gothic Medium Tur;}{\f568\fswiss\fcharset186\fprq2 Franklin Gothic Medium Baltic;}{\f569\froman\fcharset238\fprq2 Palatino Linotype CE;}{\f570\froman\fcharset204\fprq2 Palatino Linotype Cyr;}\r
+{\f572\froman\fcharset161\fprq2 Palatino Linotype Greek;}{\f573\froman\fcharset162\fprq2 Palatino Linotype Tur;}{\f574\froman\fcharset186\fprq2 Palatino Linotype Baltic;}{\f575\fswiss\fcharset238\fprq2 Trebuchet MS CE;}\r
+{\f576\fswiss\fcharset204\fprq2 Trebuchet MS Cyr;}{\f578\fswiss\fcharset161\fprq2 Trebuchet MS Greek;}{\f579\fswiss\fcharset162\fprq2 Trebuchet MS Tur;}{\f580\fswiss\fcharset186\fprq2 Trebuchet MS Baltic;}{\f635\froman\fcharset238\fprq2 Sylfaen CE;}\r
+{\f636\froman\fcharset204\fprq2 Sylfaen Cyr;}{\f638\froman\fcharset161\fprq2 Sylfaen Greek;}{\f639\froman\fcharset162\fprq2 Sylfaen Tur;}{\f640\froman\fcharset186\fprq2 Sylfaen Baltic;}{\f641\fswiss\fcharset238\fprq2 Microsoft Sans Serif CE;}\r
+{\f642\fswiss\fcharset204\fprq2 Microsoft Sans Serif Cyr;}{\f644\fswiss\fcharset161\fprq2 Microsoft Sans Serif Greek;}{\f645\fswiss\fcharset162\fprq2 Microsoft Sans Serif Tur;}{\f646\fswiss\fcharset186\fprq2 Microsoft Sans Serif Baltic;}\r
+{\f647\fswiss\fcharset238\fprq2 Arial Narrow CE;}{\f648\fswiss\fcharset204\fprq2 Arial Narrow Cyr;}{\f650\fswiss\fcharset161\fprq2 Arial Narrow Greek;}{\f651\fswiss\fcharset162\fprq2 Arial Narrow Tur;}{\f652\fswiss\fcharset186\fprq2 Arial Narrow Baltic;}\r
+{\f653\froman\fcharset238\fprq2 Rockwell CE;}{\f665\fscript\fcharset238\fprq2 Mistral CE;}{\f666\fscript\fcharset204\fprq2 Mistral Cyr;}{\f668\fscript\fcharset161\fprq2 Mistral Greek;}{\f669\fscript\fcharset162\fprq2 Mistral Tur;}\r
+{\f670\fscript\fcharset186\fprq2 Mistral Baltic;}{\f737\fswiss\fcharset238\fprq2 Franklin Gothic Book CE;}{\f738\fswiss\fcharset204\fprq2 Franklin Gothic Book Cyr;}{\f740\fswiss\fcharset161\fprq2 Franklin Gothic Book Greek;}\r
+{\f741\fswiss\fcharset162\fprq2 Franklin Gothic Book Tur;}{\f742\fswiss\fcharset186\fprq2 Franklin Gothic Book Baltic;}{\f743\fswiss\fcharset238\fprq2 Franklin Gothic Demi CE;}{\f744\fswiss\fcharset204\fprq2 Franklin Gothic Demi Cyr;}\r
+{\f746\fswiss\fcharset161\fprq2 Franklin Gothic Demi Greek;}{\f747\fswiss\fcharset162\fprq2 Franklin Gothic Demi Tur;}{\f748\fswiss\fcharset186\fprq2 Franklin Gothic Demi Baltic;}{\f749\fswiss\fcharset238\fprq2 Franklin Gothic Medium Cond CE;}\r
+{\f750\fswiss\fcharset204\fprq2 Franklin Gothic Medium Cond Cyr;}{\f752\fswiss\fcharset161\fprq2 Franklin Gothic Medium Cond Greek;}{\f753\fswiss\fcharset162\fprq2 Franklin Gothic Medium Cond Tur;}\r
+{\f754\fswiss\fcharset186\fprq2 Franklin Gothic Medium Cond Baltic;}{\f755\fswiss\fcharset238\fprq2 Franklin Gothic Heavy CE;}{\f756\fswiss\fcharset204\fprq2 Franklin Gothic Heavy Cyr;}{\f758\fswiss\fcharset161\fprq2 Franklin Gothic Heavy Greek;}\r
+{\f759\fswiss\fcharset162\fprq2 Franklin Gothic Heavy Tur;}{\f760\fswiss\fcharset186\fprq2 Franklin Gothic Heavy Baltic;}{\f761\fswiss\fcharset238\fprq2 Franklin Gothic Demi Cond CE;}{\f762\fswiss\fcharset204\fprq2 Franklin Gothic Demi Cond Cyr;}\r
+{\f764\fswiss\fcharset161\fprq2 Franklin Gothic Demi Cond Greek;}{\f765\fswiss\fcharset162\fprq2 Franklin Gothic Demi Cond Tur;}{\f766\fswiss\fcharset186\fprq2 Franklin Gothic Demi Cond Baltic;}{\f773\fswiss\fcharset238\fprq2 Century Gothic CE;}\r
+{\f774\fswiss\fcharset204\fprq2 Century Gothic Cyr;}{\f776\fswiss\fcharset161\fprq2 Century Gothic Greek;}{\f777\fswiss\fcharset162\fprq2 Century Gothic Tur;}{\f778\fswiss\fcharset186\fprq2 Century Gothic Baltic;}\r
+{\f869\fswiss\fcharset238\fprq2 MS Reference Sans Serif CE;}{\f870\fswiss\fcharset204\fprq2 MS Reference Sans Serif Cyr;}{\f872\fswiss\fcharset161\fprq2 MS Reference Sans Serif Greek;}{\f873\fswiss\fcharset162\fprq2 MS Reference Sans Serif Tur;}\r
+{\f874\fswiss\fcharset186\fprq2 MS Reference Sans Serif Baltic;}{\f893\froman\fcharset238\fprq2 Bookman Old Style CE;}{\f894\froman\fcharset204\fprq2 Bookman Old Style Cyr;}{\f896\froman\fcharset161\fprq2 Bookman Old Style Greek;}\r
+{\f897\froman\fcharset162\fprq2 Bookman Old Style Tur;}{\f898\froman\fcharset186\fprq2 Bookman Old Style Baltic;}{\f905\froman\fcharset238\fprq2 Garamond CE;}{\f906\froman\fcharset204\fprq2 Garamond Cyr;}{\f908\froman\fcharset161\fprq2 Garamond Greek;}\r
+{\f909\froman\fcharset162\fprq2 Garamond Tur;}{\f910\froman\fcharset186\fprq2 Garamond Baltic;}{\f945\fnil\fcharset162\fprq2 Superchess Tur;}{\f961\fmodern\fcharset0\fprq1 MS Mincho{\*\falt ?? ??};}\r
+{\f959\fmodern\fcharset238\fprq1 MS Mincho CE{\*\falt ?? ??};}{\f960\fmodern\fcharset204\fprq1 MS Mincho Cyr{\*\falt ?? ??};}{\f962\fmodern\fcharset161\fprq1 MS Mincho Greek{\*\falt ?? ??};}{\f963\fmodern\fcharset162\fprq1 MS Mincho Tur{\*\falt ?? ??};}\r
+{\f964\fmodern\fcharset186\fprq1 MS Mincho Baltic{\*\falt ?? ??};}{\f967\fmodern\fcharset0\fprq1 @MS Mincho;}{\f965\fmodern\fcharset238\fprq1 @MS Mincho CE;}{\f966\fmodern\fcharset204\fprq1 @MS Mincho Cyr;}\r
+{\f968\fmodern\fcharset161\fprq1 @MS Mincho Greek;}{\f969\fmodern\fcharset162\fprq1 @MS Mincho Tur;}{\f970\fmodern\fcharset186\fprq1 @MS Mincho Baltic;}{\f973\froman\fcharset0\fprq2 MS PMincho;}{\f971\froman\fcharset238\fprq2 MS PMincho CE;}\r
+{\f972\froman\fcharset204\fprq2 MS PMincho Cyr;}{\f974\froman\fcharset161\fprq2 MS PMincho Greek;}{\f975\froman\fcharset162\fprq2 MS PMincho Tur;}{\f976\froman\fcharset186\fprq2 MS PMincho Baltic;}{\f979\froman\fcharset0\fprq2 @MS PMincho;}\r
+{\f977\froman\fcharset238\fprq2 @MS PMincho CE;}{\f978\froman\fcharset204\fprq2 @MS PMincho Cyr;}{\f980\froman\fcharset161\fprq2 @MS PMincho Greek;}{\f981\froman\fcharset162\fprq2 @MS PMincho Tur;}{\f982\froman\fcharset186\fprq2 @MS PMincho Baltic;}\r
+{\f985\fmodern\fcharset0\fprq1 MS Gothic{\*\falt ?? ????};}{\f983\fmodern\fcharset238\fprq1 MS Gothic CE{\*\falt ?? ????};}{\f984\fmodern\fcharset204\fprq1 MS Gothic Cyr{\*\falt ?? ????};}{\f986\fmodern\fcharset161\fprq1 MS Gothic Greek{\*\falt ?? ????};}\r
+{\f987\fmodern\fcharset162\fprq1 MS Gothic Tur{\*\falt ?? ????};}{\f988\fmodern\fcharset186\fprq1 MS Gothic Baltic{\*\falt ?? ????};}{\f991\fmodern\fcharset0\fprq1 @MS Gothic;}{\f989\fmodern\fcharset238\fprq1 @MS Gothic CE;}\r
+{\f990\fmodern\fcharset204\fprq1 @MS Gothic Cyr;}{\f992\fmodern\fcharset161\fprq1 @MS Gothic Greek;}{\f993\fmodern\fcharset162\fprq1 @MS Gothic Tur;}{\f994\fmodern\fcharset186\fprq1 @MS Gothic Baltic;}{\f997\fswiss\fcharset0\fprq2 MS PGothic;}\r
+{\f995\fswiss\fcharset238\fprq2 MS PGothic CE;}{\f996\fswiss\fcharset204\fprq2 MS PGothic Cyr;}{\f998\fswiss\fcharset161\fprq2 MS PGothic Greek;}{\f999\fswiss\fcharset162\fprq2 MS PGothic Tur;}{\f1000\fswiss\fcharset186\fprq2 MS PGothic Baltic;}\r
+{\f1003\fswiss\fcharset0\fprq2 @MS PGothic;}{\f1001\fswiss\fcharset238\fprq2 @MS PGothic CE;}{\f1002\fswiss\fcharset204\fprq2 @MS PGothic Cyr;}{\f1004\fswiss\fcharset161\fprq2 @MS PGothic Greek;}{\f1005\fswiss\fcharset162\fprq2 @MS PGothic Tur;}\r
+{\f1006\fswiss\fcharset186\fprq2 @MS PGothic Baltic;}{\f1009\fswiss\fcharset0\fprq2 MS UI Gothic;}{\f1007\fswiss\fcharset238\fprq2 MS UI Gothic CE;}{\f1008\fswiss\fcharset204\fprq2 MS UI Gothic Cyr;}{\f1010\fswiss\fcharset161\fprq2 MS UI Gothic Greek;}\r
+{\f1011\fswiss\fcharset162\fprq2 MS UI Gothic Tur;}{\f1012\fswiss\fcharset186\fprq2 MS UI Gothic Baltic;}{\f1015\fswiss\fcharset0\fprq2 @MS UI Gothic;}{\f1013\fswiss\fcharset238\fprq2 @MS UI Gothic CE;}{\f1014\fswiss\fcharset204\fprq2 @MS UI Gothic Cyr;}\r
+{\f1016\fswiss\fcharset161\fprq2 @MS UI Gothic Greek;}{\f1017\fswiss\fcharset162\fprq2 @MS UI Gothic Tur;}{\f1018\fswiss\fcharset186\fprq2 @MS UI Gothic Baltic;}{\f1021\fswiss\fcharset0\fprq2 Gulim{\*\falt ??};}\r
+{\f1019\fswiss\fcharset238\fprq2 Gulim CE{\*\falt ??};}{\f1020\fswiss\fcharset204\fprq2 Gulim Cyr{\*\falt ??};}{\f1022\fswiss\fcharset161\fprq2 Gulim Greek{\*\falt ??};}{\f1023\fswiss\fcharset162\fprq2 Gulim Tur{\*\falt ??};}\r
+{\f1024\fswiss\fcharset186\fprq2 Gulim Baltic{\*\falt ??};}{\f1027\fswiss\fcharset0\fprq2 @Gulim;}{\f1025\fswiss\fcharset238\fprq2 @Gulim CE;}{\f1026\fswiss\fcharset204\fprq2 @Gulim Cyr;}{\f1028\fswiss\fcharset161\fprq2 @Gulim Greek;}\r
+{\f1029\fswiss\fcharset162\fprq2 @Gulim Tur;}{\f1030\fswiss\fcharset186\fprq2 @Gulim Baltic;}{\f1033\fmodern\fcharset0\fprq1 GulimChe;}{\f1031\fmodern\fcharset238\fprq1 GulimChe CE;}{\f1032\fmodern\fcharset204\fprq1 GulimChe Cyr;}\r
+{\f1034\fmodern\fcharset161\fprq1 GulimChe Greek;}{\f1035\fmodern\fcharset162\fprq1 GulimChe Tur;}{\f1036\fmodern\fcharset186\fprq1 GulimChe Baltic;}{\f1039\fmodern\fcharset0\fprq1 @GulimChe;}{\f1037\fmodern\fcharset238\fprq1 @GulimChe CE;}\r
+{\f1038\fmodern\fcharset204\fprq1 @GulimChe Cyr;}{\f1040\fmodern\fcharset161\fprq1 @GulimChe Greek;}{\f1041\fmodern\fcharset162\fprq1 @GulimChe Tur;}{\f1042\fmodern\fcharset186\fprq1 @GulimChe Baltic;}{\f1045\fswiss\fcharset0\fprq2 Dotum{\*\falt ??};}\r
+{\f1043\fswiss\fcharset238\fprq2 Dotum CE{\*\falt ??};}{\f1044\fswiss\fcharset204\fprq2 Dotum Cyr{\*\falt ??};}{\f1046\fswiss\fcharset161\fprq2 Dotum Greek{\*\falt ??};}{\f1047\fswiss\fcharset162\fprq2 Dotum Tur{\*\falt ??};}\r
+{\f1048\fswiss\fcharset186\fprq2 Dotum Baltic{\*\falt ??};}{\f1051\fswiss\fcharset0\fprq2 @Dotum;}{\f1049\fswiss\fcharset238\fprq2 @Dotum CE;}{\f1050\fswiss\fcharset204\fprq2 @Dotum Cyr;}{\f1052\fswiss\fcharset161\fprq2 @Dotum Greek;}\r
+{\f1053\fswiss\fcharset162\fprq2 @Dotum Tur;}{\f1054\fswiss\fcharset186\fprq2 @Dotum Baltic;}{\f1057\fmodern\fcharset0\fprq1 DotumChe;}{\f1055\fmodern\fcharset238\fprq1 DotumChe CE;}{\f1056\fmodern\fcharset204\fprq1 DotumChe Cyr;}\r
+{\f1058\fmodern\fcharset161\fprq1 DotumChe Greek;}{\f1059\fmodern\fcharset162\fprq1 DotumChe Tur;}{\f1060\fmodern\fcharset186\fprq1 DotumChe Baltic;}{\f1063\fmodern\fcharset0\fprq1 @DotumChe;}{\f1061\fmodern\fcharset238\fprq1 @DotumChe CE;}\r
+{\f1062\fmodern\fcharset204\fprq1 @DotumChe Cyr;}{\f1064\fmodern\fcharset161\fprq1 @DotumChe Greek;}{\f1065\fmodern\fcharset162\fprq1 @DotumChe Tur;}{\f1066\fmodern\fcharset186\fprq1 @DotumChe Baltic;}{\f1069\froman\fcharset0\fprq2 Batang{\*\falt ??};}\r
+{\f1067\froman\fcharset238\fprq2 Batang CE{\*\falt ??};}{\f1068\froman\fcharset204\fprq2 Batang Cyr{\*\falt ??};}{\f1070\froman\fcharset161\fprq2 Batang Greek{\*\falt ??};}{\f1071\froman\fcharset162\fprq2 Batang Tur{\*\falt ??};}\r
+{\f1072\froman\fcharset186\fprq2 Batang Baltic{\*\falt ??};}{\f1075\froman\fcharset0\fprq2 @Batang;}{\f1073\froman\fcharset238\fprq2 @Batang CE;}{\f1074\froman\fcharset204\fprq2 @Batang Cyr;}{\f1076\froman\fcharset161\fprq2 @Batang Greek;}\r
+{\f1077\froman\fcharset162\fprq2 @Batang Tur;}{\f1078\froman\fcharset186\fprq2 @Batang Baltic;}{\f1081\fmodern\fcharset0\fprq1 BatangChe;}{\f1079\fmodern\fcharset238\fprq1 BatangChe CE;}{\f1080\fmodern\fcharset204\fprq1 BatangChe Cyr;}\r
+{\f1082\fmodern\fcharset161\fprq1 BatangChe Greek;}{\f1083\fmodern\fcharset162\fprq1 BatangChe Tur;}{\f1084\fmodern\fcharset186\fprq1 BatangChe Baltic;}{\f1087\fmodern\fcharset0\fprq1 @BatangChe;}{\f1085\fmodern\fcharset238\fprq1 @BatangChe CE;}\r
+{\f1086\fmodern\fcharset204\fprq1 @BatangChe Cyr;}{\f1088\fmodern\fcharset161\fprq1 @BatangChe Greek;}{\f1089\fmodern\fcharset162\fprq1 @BatangChe Tur;}{\f1090\fmodern\fcharset186\fprq1 @BatangChe Baltic;}{\f1093\froman\fcharset0\fprq2 Gungsuh;}\r
+{\f1091\froman\fcharset238\fprq2 Gungsuh CE;}{\f1092\froman\fcharset204\fprq2 Gungsuh Cyr;}{\f1094\froman\fcharset161\fprq2 Gungsuh Greek;}{\f1095\froman\fcharset162\fprq2 Gungsuh Tur;}{\f1096\froman\fcharset186\fprq2 Gungsuh Baltic;}\r
+{\f1099\froman\fcharset0\fprq2 @Gungsuh;}{\f1097\froman\fcharset238\fprq2 @Gungsuh CE;}{\f1098\froman\fcharset204\fprq2 @Gungsuh Cyr;}{\f1100\froman\fcharset161\fprq2 @Gungsuh Greek;}{\f1101\froman\fcharset162\fprq2 @Gungsuh Tur;}\r
+{\f1102\froman\fcharset186\fprq2 @Gungsuh Baltic;}{\f1105\fmodern\fcharset0\fprq1 GungsuhChe;}{\f1103\fmodern\fcharset238\fprq1 GungsuhChe CE;}{\f1104\fmodern\fcharset204\fprq1 GungsuhChe Cyr;}{\f1106\fmodern\fcharset161\fprq1 GungsuhChe Greek;}\r
+{\f1107\fmodern\fcharset162\fprq1 GungsuhChe Tur;}{\f1108\fmodern\fcharset186\fprq1 GungsuhChe Baltic;}{\f1111\fmodern\fcharset0\fprq1 @GungsuhChe;}{\f1109\fmodern\fcharset238\fprq1 @GungsuhChe CE;}{\f1110\fmodern\fcharset204\fprq1 @GungsuhChe Cyr;}\r
+{\f1112\fmodern\fcharset161\fprq1 @GungsuhChe Greek;}{\f1113\fmodern\fcharset162\fprq1 @GungsuhChe Tur;}{\f1114\fmodern\fcharset186\fprq1 @GungsuhChe Baltic;}{\f1117\fnil\fcharset0\fprq2 @SimSun;}{\f1123\fmodern\fcharset0\fprq1 NSimSun;}\r
+{\f1129\fmodern\fcharset0\fprq1 @NSimSun;}{\f1147\fmodern\fcharset0\fprq1 MingLiU{\*\falt ???};}{\f1153\fmodern\fcharset0\fprq1 @MingLiU;}{\f1159\froman\fcharset0\fprq2 PMingLiU{\*\falt ????};}{\f1165\froman\fcharset0\fprq2 @PMingLiU;}}\r
+{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\r
+\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;}{\stylesheet{\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid \snext0 Normal;}{\s1\li120\sb280\sa120\sl-320\slmult0\r
+\nowidctlpar\adjustright \b\f5\cgrid \sbasedon0 \snext26 heading 1;}{\s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\adjustright \b\f5\fs20\cgrid \sbasedon0 \snext0 heading 2;}{\s3\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid \r
+\sbasedon0 \snext0 heading 3;}{\s4\fi-245\li360\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \f11\fs20\cgrid \sbasedon2 \snext4 heading 4;}{\s5\li120\sb80\sl-240\slmult0\keepn\nowidctlpar\outlinelevel4\adjustright \f5\fs20\ul\cgrid \r
+\sbasedon0 \snext0 heading 5;}{\*\cs10 \additive Default Paragraph Font;}{\*\cs15 \additive \f5\fs18\up6\lang1033 \sbasedon10 footnote reference;}{\s16\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid \sbasedon0 \snext0 footnote text;}{\r
+\s17\li360\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid \sbasedon0 \snext0 Normal Indent;}{\s18\fi-240\li600\sb60\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid \snext18 Jli;}{\s19\li120\sb60\sl-240\slmult0\keep\nowidctlpar\r
 \tx520\tx920\tx1320\tx1720\tx2120\adjustright \f6\fs16\cgrid \snext19 Ex;}{\s20\li120\sb160\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid \snext29 Sa1;}{\s21\fi-240\li360\sl-240\slmult0\nowidctlpar\tx360\adjustright \f5\fs20\cgrid \snext22 Lb1;}{\r
 \s22\fi-240\li360\sb60\sl-240\slmult0\nowidctlpar\tx360\adjustright \f5\fs20\cgrid \snext22 Lb2;}{\s23\li360\sb60\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid \snext22 Lp1;}{\s24\fi-1800\li1920\sb120\sa40\sl-240\slmult0\nowidctlpar\brdrb\r
 \brdrs\brdrw15\brsp20 \brdrbtw\brdrs\brdrw15\brsp20 \tx1920\adjustright \b\f5\fs20\cgrid \snext25 Th;}{\s25\fi-1800\li1920\sb60\sl-240\slmult0\nowidctlpar\tx1920\adjustright \f5\fs20\cgrid \snext25 Tp;}{\s26\li120\sl-240\slmult0\nowidctlpar\adjustright \r
 \f5\fs20\cgrid \snext0 Normal 2;}{\s27\li120\sb120\sa120\nowidctlpar\adjustright \f5\fs20\cgrid \snext0 bitmap;}{\s28\li120\sb120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid \snext29 Sa2;}{\s29\fi-240\li360\sb60\sl-240\slmult0\r
-\nowidctlpar\adjustright \f5\fs20\cgrid \snext29 Jl;}{\s30\li120\sa60\nowidctlpar\adjustright \f28\fs20\cgrid \snext30 *body;}{\s31\li120\sa60\nowidctlpar\adjustright \b\f28\fs20\cgrid \snext31 *heading;}{\s32\li120\sa60\sl-240\slmult0\r
-\nowidctlpar\adjustright \f28\fs20\cgrid \sbasedon30 \snext32 para;}{\s33\fi-280\li400\sa60\nowidctlpar\adjustright \f28\fs20\cgrid \sbasedon30 \snext33 jump;}{\s34\fi-280\li400\sa60\nowidctlpar\tx400\adjustright \f28\fs20\cgrid \sbasedon30 \snext34 \r
-list bullet;}{\s35\fi-280\li600\sa60\nowidctlpar\adjustright \f28\fs20\cgrid \sbasedon30 \snext35 jump indent;}{\s36\li120\sa60\sl-40\slmult0\nowidctlpar\brdrb\brdrs\brdrw15\brsp20 \brdrbtw\brdrs\brdrw15\brsp20 \adjustright \f28\fs20\cgrid \r
-\sbasedon30 \snext36 table rule;}{\s37\fi-280\li400\sa60\nowidctlpar\tqr\tx280\tx400\adjustright \f28\fs20\cgrid \sbasedon30 \snext37 list number;}{\s38\li120\sb100\sa60\nowidctlpar\adjustright \b\f28\fs20\cgrid \sbasedon31 \snext33 see also;}{\r
-\s39\li400\sa60\nowidctlpar\adjustright \f28\fs20\cgrid \sbasedon30 \snext39 para indent;}{\s40\fi-1800\li1920\nowidctlpar\tx1920\adjustright \b\f28\fs20\cgrid \sbasedon31 \snext36 table head;}{\s41\fi-1800\li1920\sa60\nowidctlpar\tx1920\adjustright \r
-\f28\fs20\cgrid \sbasedon30 \snext41 table text;}{\s42\li120\sb120\sa60\nowidctlpar\adjustright \f28\fs20\cgrid \sbasedon30 \snext35 see also 2;}{\s43\li120\sa60\keep\nowidctlpar\tx520\tx920\tx1320\tx1720\tx2120\adjustright \f6\fs20\cgrid \r
-\sbasedon30 \snext43 code;}{\s44\sl-120\slmult0\nowidctlpar\adjustright \f29\fs20\cgrid \snext32 *spacing;}{\s45\sl-120\slmult0\nowidctlpar\adjustright \f29\fs20\cgrid \sbasedon44 \snext45 s6;}{\s46\qj\li360\nowidctlpar\adjustright \f5\cgrid \r
+\nowidctlpar\adjustright \f5\fs20\cgrid \snext29 Jl;}{\s30\li120\sa60\nowidctlpar\adjustright \f151\fs20\cgrid \snext30 *body;}{\s31\li120\sa60\nowidctlpar\adjustright \b\f151\fs20\cgrid \snext31 *heading;}{\s32\li120\sa60\sl-240\slmult0\r
+\nowidctlpar\adjustright \f151\fs20\cgrid \sbasedon30 \snext32 para;}{\s33\fi-280\li400\sa60\nowidctlpar\adjustright \f151\fs20\cgrid \sbasedon30 \snext33 jump;}{\s34\fi-280\li400\sa60\nowidctlpar\tx400\adjustright \f151\fs20\cgrid \sbasedon30 \snext34 \r
+list bullet;}{\s35\fi-280\li600\sa60\nowidctlpar\adjustright \f151\fs20\cgrid \sbasedon30 \snext35 jump indent;}{\s36\li120\sa60\sl-40\slmult0\nowidctlpar\brdrb\brdrs\brdrw15\brsp20 \brdrbtw\brdrs\brdrw15\brsp20 \adjustright \f151\fs20\cgrid \r
+\sbasedon30 \snext36 table rule;}{\s37\fi-280\li400\sa60\nowidctlpar\tqr\tx280\tx400\adjustright \f151\fs20\cgrid \sbasedon30 \snext37 list number;}{\s38\li120\sb100\sa60\nowidctlpar\adjustright \b\f151\fs20\cgrid \sbasedon31 \snext33 see also;}{\r
+\s39\li400\sa60\nowidctlpar\adjustright \f151\fs20\cgrid \sbasedon30 \snext39 para indent;}{\s40\fi-1800\li1920\nowidctlpar\tx1920\adjustright \b\f151\fs20\cgrid \sbasedon31 \snext36 table head;}{\s41\fi-1800\li1920\sa60\nowidctlpar\tx1920\adjustright \r
+\f151\fs20\cgrid \sbasedon30 \snext41 table text;}{\s42\li120\sb120\sa60\nowidctlpar\adjustright \f151\fs20\cgrid \sbasedon30 \snext35 see also 2;}{\s43\li120\sa60\keep\nowidctlpar\tx520\tx920\tx1320\tx1720\tx2120\adjustright \f6\fs20\cgrid \r
+\sbasedon30 \snext43 code;}{\s44\sl-120\slmult0\nowidctlpar\adjustright \f152\fs20\cgrid \snext32 *spacing;}{\s45\sl-120\slmult0\nowidctlpar\adjustright \f152\fs20\cgrid \sbasedon44 \snext45 s6;}{\s46\qj\li360\nowidctlpar\adjustright \f5\cgrid \r
 \sbasedon0 \snext46 Help Text;}{\s47\li115\sb120\sa40\sl-240\slmult0\nowidctlpar\brdrb\brdrs\brdrw15\brsp20 \brdrbtw\brdrs\brdrw15\brsp20 \adjustright \f11\fs20\cgrid \sbasedon24 \snext25 Th2;}{\s48\li115\sb120\sa40\sl-240\slmult0\nowidctlpar\brdrb\r
 \brdrs\brdrw15\brsp20 \brdrbtw\brdrs\brdrw15\brsp20 \adjustright \b\f11\fs16\cgrid \sbasedon24 \snext25 Th3;}{\s49\li115\sb200\sl-240\slmult0\nowidctlpar\adjustright \f11\fs20\cgrid \sbasedon0 \snext0 Normal 3;}{\r
 \s50\fi-1800\li1915\sb120\sa40\sl-240\slmult0\nowidctlpar\brdrb\brdrs\brdrw15\brsp20 \brdrbtw\brdrs\brdrw15\brsp20 \tx1915\adjustright \b\f11\fs20\cgrid \sbasedon0 \snext51 Thh;}{\s51\fi-1800\li1915\sb60\sl-240\slmult0\nowidctlpar\tx1915\adjustright \r
@@ -123,7 +218,7 @@ footer;}{\s66\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cf11\cg
 {\listoverride\listid470094698\listoverridecount0\ls3}{\listoverride\listid1099714113\listoverridecount0\ls4}{\listoverride\listid1358388700\listoverridecount0\ls5}{\listoverride\listid2044863907\listoverridecount0\ls6}{\listoverride\listid640160996\r
 \listoverridecount0\ls7}{\listoverride\listid768165129\listoverridecount0\ls8}{\listoverride\listid903878531\listoverridecount0\ls9}{\listoverride\listid781152802\listoverridecount0\ls10}{\listoverride\listid1240552867\listoverridecount0\ls11}\r
 {\listoverride\listid640160996\listoverridecount0\ls12}{\listoverride\listid349260549\listoverridecount0\ls13}{\listoverride\listid1021513731\listoverridecount0\ls14}{\listoverride\listid1405952460\listoverridecount0\ls15}{\listoverride\listid1332292840\r
-\listoverridecount0\ls16}}{\*\revtbl {Unknown;}{Tim Mann;}}{\info{\title + $ # KWinBoard: Chessboard for Windows}{\author TRIO}{\operator hgm}{\creatim\yr2003\mo10\dy25\hr23\min40}{\revtim\yr2008\mo8\dy11\hr19\min22}{\printim\yr1997\mo4\dy22\hr23\min5}{\version22}{\edmins659}\r
+\listoverridecount0\ls16}}{\*\revtbl {Unknown;}{Tim Mann;}}{\info{\title + $ # KWinBoard: Chessboard for Windows}{\author TRIO}{\operator hgm}{\creatim\yr2003\mo10\dy25\hr23\min40}{\revtim\yr2009\mo4\dy15\hr17\min22}{\printim\yr1997\mo4\dy22\hr23\min5}{\version26}{\edmins745}\r
 {\nofpages76}{\nofwords17127}{\nofchars-32766}{\*\company DEC SRC}{\nofcharsws0}{\vern73}}\margl1417\margr1417\margt1417\margb1417 \r
 \widowctrl\endnotes\aendnotes\hyphhotz425\ftnnrlc\aftnnar\noxlattoyen\expshrtn\noultrlspc\dntblnsbdb\nospaceforul\hyphcaps0\viewkind4\viewscale100 \fet1{\*\aftnsep \pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\chftnsep \r
 \r
@@ -136,35 +231,36 @@ footer;}{\s66\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cf11\cg
 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\r
 \par }\pard\plain \s2\li119\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\f1\cf11 An updated description with the release of version 4.3.14\r
 \par }\pard \s2\li119\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright {\f1\cf11 \tab \tab \tab \ldblquote For the ultimate WinBoard Experience\rdblquote \r
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 New features since WinBoard 4.2.7 that are implemented in Allessandro Scotti\rquote s WinBoard_x are highlighted in red. }{\f1\cf11 \r
-New features in the WinBoard 4.3.xx series by H.G. Muller are highlighted in green.}{\f1 \r
+\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 New features since WinBoard 4.2.7 that are implemented in Allessandro Scotti\rquote s WinBoard_x are highlighted in red. }{\f1\cf11 New \r
+features in the WinBoard 4.3.xx series by H.G. Muller are highlighted in green}{\f1\cf2 , that in the unified 4.4 series in blue}{\f1\cf11 .}{\f1 \r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 \r
  Description}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  Description}}}{\f1  Description\r
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\i\f1 WinBoard}{\f1  is a g\r
-raphical user interface for chess. It displays a chessboard on the screen, accepts moves made with the mouse, and loads and saves game files in standard chess notation. WinBoard serves as a front-end for many different services, including:\r
+\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\i\f1 WinBoard}{\f1  is a graphical user interface for chess. It displays a chessboard on the screen, accepts moves made with the mou\r
+se, and loads and saves game files in standard chess notation. WinBoard serves as a front-end for many different services, including:\r
 \par {\pntext\pard\plain\f3\fs20\lang1033\cgrid \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard\plain \fi-360\li480\sb80\sl-240\slmult0\nowidctlpar\jclisttab\tx480{\*\pn \pnlvlblt\ilvl0\ls3\pnrnot0\pnf3\pnstart1\pnindent360\pnhang{\pntxtb \'b7}}\ls3\adjustright \r
 \f5\fs20\cgrid {\b\i\f1 Chess engines}{\f1  that run on your PC. You can play a game against an engine, set up arbitrary positions, force variations, or watch a game between two engines. }{\i\f1\cf11 Fairy-Max}{\f1  is supplied with WinBoard }{\f1\cf11 \r
 4.3.14}{\f1 , and over 100 other free chess engines are available separately. Of these, Crafty is the most popular. See }{\f1\uldb Installing Chess Engines}{\v\f1 InstallingChessEngines}{\f1  for instructions on installing additional chess engines.\r
 \par {\pntext\pard\plain\f3\fs20\lang1033\cgrid \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \fi-360\li480\sb80\sl-240\slmult0\nowidctlpar\jclisttab\tx480{\*\pn \pnlvlblt\ilvl0\ls3\pnrnot0\pnf3\pnstart1\pnindent360\pnhang{\pntxtb \'b7}}\ls3\adjustright {\b\i\f1 \r
-Chess servers}{\b\f1  }{\f1 on the Internet. You can play against other Internet Chess Server (ICS) users, observe games they\r
- are playing, review games in the ICS libraries, chat, and more. WinBoard can also be used to run an automated computer player on the ICS, but this feature is for advanced users only and is subject to some caveats; see the separate file zippy.README for i\r
-nformation.\r
+Chess servers}{\b\f1  }{\f1 on the Internet. You can play against other Internet Chess Server (ICS) users, observe games they are playing, review games in the ICS libraries, chat, }{\f1\cf2 analyze observed games with a chess program}{\f1 , and more. Wi\r
+nBoard can also be used to run an automated computer player on the ICS, but this feature is for advanced users only and is subject to some caveats; see the separate file zippy.README for information.\r
 \par {\pntext\pard\plain\f3\fs20\lang1033\cgrid \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \fi-360\li480\sb80\sl-240\slmult0\nowidctlpar\jclisttab\tx480{\*\pn \pnlvlblt\ilvl0\ls3\pnrnot0\pnf3\pnstart1\pnindent360\pnhang{\pntxtb \'b7}}\ls3\adjustright {\b\i\f1 \r
 The Web}{\f1  and your own saved games. You can use WinBoard as a helper application to view files in your Web browser or the Explorer. You can use it to keep track of email postal games, browse games off the net, or review games you have saved.\r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super K}{ Getting Started}}\r
 #{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super #}{ GettingStarted}}}{\f1 Getting Started\r
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 \r
-WinBoard starts up in one of three major modes: chess engine mode, ICS client mode, or game viewer mode. You cannot change modes while WinBoard is running, but you can access all the game viewer features d\r
-irectly from the other two modes. Also, you can start WinBoard several times to get multiple chessboard windows running in any combination of modes.\r
-\par }\pard\plain \s20\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {You will usually run WinBoard by choosing an item from the Windows Start menu that runs it in the mode you \r
-want. If you just double-click on WinBoard.exe, you get a startup dialog asking which mode you want. If you choose chess engine mode, you can then select from the installed engines; if you choose ICS client mode, you can then select from a list of known c\r
-hess servers. More advanced users can }{\uldb customize}{\v icsNames}{ these lists or type in WinBoard }{\uldb command line options}{\v Options}{ directly.\r
+\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 WinBoard starts up in one of three major modes: chess \r
+engine mode, ICS client mode, or game viewer mode. You cannot change modes while WinBoard is running, but you can access all the game viewer features directly from the other two modes. Also, you can start WinBoard several times to get multiple chessboard \r
+windows running in any combination of modes.\r
+\par }\pard\plain \s20\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\r
+You will usually run WinBoard by choosing an item from the Windows Start menu that runs it in the mode you want. If you just double-click on WinBoard.exe, you get a startup dialog asking which mode you want. If y\r
+ou choose chess engine mode, you can then select from the installed engines; if you choose ICS client mode, you can then select from a list of known chess servers. More advanced users can }{\uldb customize}{\v icsNames}{ these lists or type in WinBoard }{\r
+\uldb command line options}{\v Options}{ directly.\r
 \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 After starting WinBoard, you can make }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\r
-\cs58\f1\super K}{\f1  move}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  move}}}{\f1 moves in several different ways. To move by dragging, press the left mouse bu\r
-tton while the cursor is on one of your pieces, move the cursor to another square, and release the button. You can also move by clicking the left mouse button once (press and release) over one of your pieces, moving the cursor to another square, and click\r
-i\r
-ng again. You drop new pieces on the board (when applicable) by selecting from a context menu. Press the right mouse button over a square to bring up the menu; no menu will come up in modes where dropping a new piece is not permitted. You can also make mo\r
-ves by typing them in standard algebraic chess notation. Either a dialog box will pop up for you to type into, or in ICS mode, your typing will be redirected into the ICS interaction window.\r
+\cs58\f1\super K}{\f1  move}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  move}}}{\f1 \r
+moves in several different ways. To move by dragging, press the left mouse button while the cursor is on one of your pieces, move the cursor to another square, and release the button. You can also\r
+ move by clicking the left mouse button once (press and release) over one of your pieces, moving the cursor to another square, and clicking again. You drop new pieces on the board (when applicable) by selecting from a context menu. Press the right mouse b\r
+u\r
+tton over a square to bring up the menu; no menu will come up in modes where dropping a new piece is not permitted. You can also make moves by typing them in standard algebraic chess notation. Either a dialog box will pop up for you to type into, or in IC\r
+S mode, your typing will be redirected into the ICS interaction window.\r
 \par When WinBoard}{\i\f1  }{\f1 is iconized, its }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  icon}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\r
 \nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  icon}}}{\f1 icon is a white knight if it is White's turn to move, a black knight if it is Black's turn.\r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\f1 Additional Information\r
@@ -193,36 +289,34 @@ K}{\f1 File Menu}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\
 \cs58\f1\super $}{\f1 File Menu}}+{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super +}{\f1  main}}}{\f1\fs18\up6  }{\f1\fs20 File Menu\r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{\r
 \f1\cf6 New Game}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf6 NewGame}}}{\f1\cf6  New Game (former }{\f1 Reset}{\f1\cf6 )\r
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 \r
-Resets WinBoard and the chess engine (if any) to the beginning of a new chess game. In Internet Chess Server mode, clears the current state of WinBoard, then resynchronizes with ICS by sending a }{\b\f1 refresh }{\f1 \r
+\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Resets WinBoard and the chess engine (if any) to the beginning of\r
+ a new chess game. In Internet Chess Server mode, clears the current state of WinBoard, then resynchronizes with ICS by sending a }{\b\f1 refresh }{\f1 \r
 command. If you want to stop playing, observing, or examining a game on ICS, use an appropriate command from the }{\f1\uldb Action}{\v\f1 ActionMenu}{\f1  menu, not }{\f1\cf6 New Game}{\f1 .\r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf11\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{\r
 \f1\cf11 New Shuffle Game}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf11 NewShuffleGame}}}{\f1\cf11  New Shuffle Game\r
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 Brings you to a dialog box where you can enter the number of an opening setup for shuffle variants like\r
- FRC, or ask for a random number. After pressing OK, a new game is set up, using this position. The chosen position will continue to be used on every subsequent \ldblquote New Game\rdblquote , }{\f1\cf11 \r
-even if you are playing a variant that normally is not shuffled, until you select a new variant through the \ldblquote New Variant\'85\rdblquote  menu.}{\f1\cf6  If you enter \ldblquote -1\rdblquote \r
- for the position number,  new random number is drawn before every game.\r
-\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cf11 The type of shuffling that is done in\r
- reaction to a given position number obeys restrictions that depend on the selected variant. In variants that allow castling, Kings remain on the central files, Rooks in the corners. In games with FRC-style castlings, the King starts between the Rooks, bu\r
-t\r
- apart from that they could be anywhere. In games without castling, there are no restrictions on King and Rook placement. Pairs of color-bound pieces (such as Bishops) will be placed on oppositely colored squares. In ICS mode this feature has no effect, a\r
-s the ICS determines the starting position.\r
+\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 \r
+Brings you to a dialog box where you can enter the number of an opening setup for shuffle variants like FRC, or ask for a random number. After pressing OK, a new game is set up, using this position. The c\r
+hosen position will continue to be used on every subsequent \ldblquote New Game\rdblquote , }{\f1\cf11 even if you are playing a variant that normally is not shuffled, until you select a new variant through the \ldblquote New Variant\'85\rdblquote  menu.}\r
+{\f1\cf6  If you enter \ldblquote -1\rdblquote  for the position number,  new random number is drawn before every game.\r
+\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cf11 \r
+The type of shuffling that is done in reaction to a given position number obeys restrictions that depend on the selected variant. In variants that allow castling, Kings remain on the central files, Rooks in the corners. I\r
+n games with FRC-style castlings, the King starts between the Rooks, but apart from that they could be anywhere. In games without castling, there are no restrictions on King and Rook placement. Pairs of color-bound pieces (such as Bishops) will be placed \r
+on oppositely colored squares. In ICS mode this feature has no effect, as the ICS determines the starting position.\r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf11\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{\r
 \f1\cf11 New Variant}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf11 NewVariant}}}{\f1\cf11  New Variant\r
 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf11 Select a new variant. There are controls to enter a board width, board height and holdings size, but normally you leave them at \lquote -1\rquote \r
-, which means the default value for the\r
- selected variant will be used (e.g. 8x8 for normal Chess, 9x10 for xiangqi, 10x8 for capablanca, holdings for 5 pieces in crazyhouse). You can set a deviating value for each of the three parameters (e.g. to play a crazyhouse version of xiangqi or capabla\r
-nca you would set the holdings to 6 or 7). If the board width deviates from the default, the game will start with an empty board. \r
+, which means the default value for the selected variant will be used (e.g. 8x8 for normal Chess, 9x10 for xiangqi, 10x8 for capablanca, holdings for 5 pieces in crazyhouse). You can set a deviating value for each of the three parameters (e.g. to pla\r
+y a crazyhouse version of xiangqi or capablanca you would set the holdings to 6 or 7). If the board width deviates from the default, the game will start with an empty board. \r
 \par The variant will remain in force until you select a new one; i.e. subsequent \ldblquote New Game\rdblquote  commands will start a new game of the same variant. In ICS mode this command has no effect, as the ICS determines which variant will be played.\r
 \r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  Load Game}\r
 }#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  LoadGame}}}{\f1  Load Game\r
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Plays a game from a record file. A popup dialog prompts you for the filename. If the file contains more than one g\r
-ame, a second popup dialog displays a list of games (with information drawn from their PGN tags, if any), and you can select the one you want.\r
+\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Plays a game from a record file. A popup dialog prompts you for the filename. If the file co\r
+ntains more than one game, a second popup dialog displays a list of games (with information drawn from their PGN tags, if any), and you can select the one you want.\r
 \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 The game file parser will accept PGN (portable game notation), or in fact almost any file that contains moves in algebraic notation. Notation of the form }{\i\f1 P@f7}{\r
-\f1  is accepted for piece-drops in bughouse games; this is a nonstandard extension to PGN. If the file includes a PGN position (FEN tag), or a WinBoard position diagram bracketed by "[--" and "--]" before the first\r
- move, the game starts from that position. Text enclosed in parentheses, square brackets, or curly braces is assumed to be commentary and is displayed in a pop-up window. Any other text in the file is ignored. PGN variations (enclosed in parentheses) are \r
-treated as comments; WinBoard is not able to walk variation trees. The nonstandard PGN tag }{\f2 [Variant "varname"]}{\f1  functions similarly to the }{\f1\uldb variant}{\v\f1 variant }{\f1 \r
+\f1  is accepted for piece-drops in bughouse games; this is a nonstandard extension to PGN. If the file includes a PGN position (FEN tag), or a WinBoard position diagram bracketed by "[--" and \r
+"--]" before the first move, the game starts from that position. Text enclosed in parentheses, square brackets, or curly braces is assumed to be commentary and is displayed in a pop-up window. Any other text in the file is ignored. PGN variations (enclose\r
+d in parentheses) are treated as comments; WinBoard is not able to walk variation trees. The nonstandard PGN tag }{\f2 [Variant "varname"]}{\f1  functions similarly to the }{\f1\uldb variant}{\v\f1 variant }{\f1 \r
 command-line option, allowing games in certain chess variants to be loaded. There is also a heuristic to recognize chess variants from the }{\f2 Event}{\f1 \r
  tag, by looking for the strings that the Internet Chess Servers put there when saving variant ("wild") games.\r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 \r
@@ -236,10 +330,10 @@ command-line option, allowing games in certain chess variants to be loaded. Ther
 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Reloads the last game you loaded. Not available if the last game was loaded from a pipe.\r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  Save Game}\r
 }#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  SaveGame}}}{\f1  Save Game\r
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Appends a record of the current game to a file. A popup dialog prompts you for the filename. If the game did not begin with the sta\r
-ndard starting position, the game file includes the starting position used. Game files are saved in the PGN (portable game notation) format, unless the }{\f1\uldb oldSaveStyle}{\v\f1 oldSaveStyle}{\f1 \r
- option is True, in which case they are saved in an older format that is specific to WinBoard}{\i\f1 .}{\f1  Both formats are human-readable, and both can be read back by the Load Game command. Notation of the form }{\i\f1 P@f7}{\f1 \r
- is generated for piece-drops in bughouse games; this is a nonstandard extension to PGN.\r
+\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 \r
+Appends a record of the current game to a file. A popup dialog prompts you for the filename. If the game did not begin with the standard starting position, the game file includes the starting position used. Game files are saved in the PGN (portable\r
+ game notation) format, unless the }{\f1\uldb oldSaveStyle}{\v\f1 oldSaveStyle}{\f1  option is True, in which case they are saved in an older format that is specific to WinBoard}{\i\f1 .}{\f1 \r
+ Both formats are human-readable, and both can be read back by the Load Game command. Notation of the form }{\i\f1 P@f7}{\f1  is generated for piece-drops in bughouse games; this is a nonstandard extension to PGN.\r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 \r
  Copy Game To Clipboard}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  CopyGameToClipboard}}}{\f1  Copy Game To Clipboard\r
 \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {Copies the record of the current game to the Windows clipboard in PGN (portable game notation) format.\r
@@ -250,11 +344,11 @@ ndard starting position, the game file includes the starting position used. Game
  Load Position}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  LoadPosition}}}{\f1  Load Position\r
 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Sets up a position from a position file. A popup dialog prompts you for the filename. Position files must be in FEN (Forsythe-Edwards notation), or in the format that the }\r
 {\f1\uldb Save Position}{\f1  command writes when }{\f1\uldb oldSaveStyle}{\v\f1 oldSaveStyle}{\f1  is turned on. }{\f1\cf11 \r
-Note that many variants require an extension of the original FEN standard. WinBoard tries to be as universal as possible in understanding F\r
-ENs when different standards are raound, but has to make a choice when writing them. In FRC is uses Shredder-FEN (Haha castling notation) , but it understands KQkq as the outermost Rook, so it also reads X-FEN. In Crazyhouse / Bughouse it appends the hold\r
-i\r
-ngs immediately behind the board info between brackets [], but on input it also understands bFEN (which puts it behind a slash / as if it were an extra board rank). It uses a tilde ~ behind a piece to indicate it is really a promoted Pawn (like bFEN). In \r
-Shogi the holdings are printed like in Crazyhouse, but promoted pieces are represented by a plus sign + before the letter of the original piece. Letters used for the pieces can be set with the /pieceToCharTable command-line option.}{\f1 \r
+Note that many variants require an extension of the original FEN standard. WinBoard tries to be as universal as possible in underst\r
+anding FENs when different standards are raound, but has to make a choice when writing them. In FRC is uses Shredder-FEN (Haha castling notation) , but it understands KQkq as the outermost Rook, so it also reads X-FEN. In Crazyhouse / Bughouse it appends \r
+t\r
+he holdings immediately behind the board info between brackets [], but on input it also understands bFEN (which puts it behind a slash / as if it were an extra board rank). It uses a tilde ~ behind a piece to indicate it is really a promoted Pawn (like bF\r
+EN). In Shogi the holdings are printed like in Crazyhouse, but promoted pieces are represented by a plus sign + before the letter of the original piece. Letters used for the pieces can be set with the /pieceToCharTable command-line option.}{\f1 \r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 \r
  Load Next Position}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  LoadNextPosition}}}{\f1  Load Next Position\r
 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Loads the next position from the last position file you loaded.\r
@@ -282,8 +376,8 @@ Shogi the holdings are printed like in Crazyhouse, but promoted pieces are repre
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  Exit}}#\r
 {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  Exit}}}{\f1  Exit\r
 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Exits from WinBoard.\r
-\par }\pard\plain \s1\li120\sb280\sa120\sl-320\slmult0\nowidctlpar\outlinelevel0\adjustright \b\f5\cgrid {\f1\fs20 \page }{\cs58\f1\fs20\super K{\footnote\ftnalt \pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\r
-\f1  Mode Menu}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  ModeMenu}}${\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\r
+\par }\pard\plain \s1\li120\sb280\sa120\sl-320\slmult0\nowidctlpar\outlinelevel0\adjustright \b\f5\cgrid {\f1\fs20 \page }{\cs58\f1\fs20\super K{\footnote\ftnalt \pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\b\f1\super K}\r
+{\f1  Mode Menu}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  ModeMenu}}${\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\r
 \cs58\f1\super $}{\f1  Mode Menu}}+{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super +}{\f1  main}}}{\f1\fs20  Mode Menu\r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 \r
  Machine White}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  MachineWhite}}}{\f1  Machine White\r
@@ -296,56 +390,61 @@ Shogi the holdings are printed like in Crazyhouse, but promoted pieces are repre
 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Starts a game between two chess engines.\r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf11\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{\r
 \f1\cf11 Machine Both}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf11 Machine Both}}}{\f1\cf11  Machine Both\r
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf11 \r
-A single chess engine plays itself. Mainly useful for pseudo-engines, that are in fact communication links to another machine, where you want to observe a game that is being played. (E.g. the gothic-chess.com server). This command is not implemented yet \r
-(version 4.3.14).\r
+\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf11 A single chess engine plays itself. Ma\r
+inly useful for pseudo-engines, that are in fact communication links to another machine, where you want to observe a game that is being played. (E.g. the gothic-chess.com server). This command is not implemented yet (version 4.3.14).\r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 \r
  Analysis Mode}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  AnalysisMode}}}{\f1  Analysis Mode\r
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 \r
-In this mode, you can make moves for both sides on the board. After each move, the chess engine will think about possible replies and display its analysis in a separate window. Crafty was th\r
-e first engine to support this feature, but by now there are many others that support it as well.\r
+\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 In th\r
+is mode, you can make moves for both sides on the board. After each move, the chess engine will think about possible replies and display its analysis in a separate window. Crafty was the first engine to support this feature, but by now there are many othe\r
+rs that support it as well.\r
+\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cf2 From WinBoard 4.4 on this function can also be invoked in \lquote zippy mode\rquote \r
+, i.e. when you are logged on to an ICS with an engine loaded. In that case it is not your own moves that the engine analyzes, but the moves that are played in\r
+ a game on the ICS that you are observing. You must start observing before you start the analysis mode! See the file zippy.README for how to connect to an ICS and a chess engine running on your local computer at the same time. (Basically this amounts to a\r
+dding the /zp command-line option in addition to all options you would need for connecting to the ICS, as well as those needed for running the chess engine.)\r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 \r
  Analyze File}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  AnalyzeFile}}}{\f1  Analyze File\r
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 In this mode, you can load a game from a file, and the chess engine will analyze each move as in Analysis Mode. C\r
-rafty was the first engine to support this feature, but by now there are many others that support it as well.\r
+\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 In this mode, you can load a game from a file, and the chess engine will analyze ea\r
+ch move as in Analysis Mode. Crafty was the first engine to support this feature, but by now there are many others that support it as well.\r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  ICS Client\r
 }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  ICSClient}}}{\f1  ICS Client\r
 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 This is the normal mode when WinBoard is connected to a chess server. If you have moved into Edit Game or Edit Position mode, you can select this option to get out.\r
-\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 When you run WinBoard in ICS mode, it starts up a console window in which you can type comm\r
-ands and receive text responses from the chess server. You can use the standard Windows editing keys to edit your command line before pressing Enter. The console window keeps a history of the last few commands you typed. Press the up-arrow key to go back \r
-to a previous command; press the down-arrow key to go forward again to a later command. Press the right mouse button in the output area for a }{\f1\uldb context menu}{\v\f1 ICSInteractionContextMenu}{\f1  of editing commands and ICS command shortcuts.\r
-\r
+\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 \r
+When you run WinBoard in ICS mode, it starts up a console window in which you can type commands and receive text responses from the chess server. You can use the standard Windows editing keys t\r
+o edit your command line before pressing Enter. The console window keeps a history of the last few commands you typed. Press the up-arrow key to go back to a previous command; press the down-arrow key to go forward again to a later command. Press the righ\r
+t mouse button in the output area for a }{\f1\uldb context menu}{\v\f1 ICSInteractionContextMenu}{\f1  of editing commands and ICS command shortcuts.\r
 \par Some useful ICS commands include }{\b\f1 who}{\f1  to see who is logged on, }{\b\f1 games}{\f1  to see what games are being played, }{\b\f1 match}{\f1  to challenge another player to a game, }{\b\f1 observe}{\f1  to observe an ongoing game, }{\b\f1 \r
 examine}{\f1  or }{\b\f1 smoves}{\f1  to review a recently completed game, and of course }{\b\f1 help}{\f1 . \r
 \par Whenever you ask to observe an ongoing game, review a completed game, or resume an adjourned game, WinBoard retrieves and parses the list of past moves from the ICS, so you can review them with }{\f1\uldb Forward}{\v\f1 Forward}{\f1  and }{\f1\uldb \r
 Backward}{\v\f1 Backward}{\f1  or save them with }{\f1\uldb Save Game}{\v\f1 SaveGame}{\f1 .\r
 \par Some special ICS Client features are activated when you are in }{\b\f1 examine}{\f1  or }{\b\f1 bsetup }{\f1 mode on ICS. See the descriptions of the menu commands }{\f1\uldb Forward}{\v\f1 Forward}{\f1 , }{\f1\uldb Backward}{\v\f1 Backward}{\f1 , }{\r
-\f1\uldb Pause}{\v\f1 Pause}{\f1 , and }{\f1\uldb Stop Examining}{\v\f1 StopExamining}{\f1  below. You can also issue the I\r
-CS position-editing commands with the mouse. Move pieces by dragging with the left mouse button, or by left-clicking once on the starting square and once on the ending square. Press the right mouse button over a square for a context menu that lets you dro\r
-p\r
- a new piece, empty the square, or clear the board. Click on the White or Black clock to set the side to play. You cannot set the side to play or drag pieces to arbitrary squares while examining on ICC, but you can do so in bsetup mode on FICS. You can al\r
-so make moves by typing them into the ICS window; you may have to do this occasionally if you are playing a chess variant whose rules WinBoard does not understand, such as Fischer Random.\r
-\par If you are playing a bughouse game on the ICS, a list of the offboard\r
- pieces that each player holds is shown in the window title bar. To drop an offboard piece, press the right mouse button over an empty square to bring up a context menu. To observe your partner's games, start a second copy of WinBoard, log in as a guest, \r
-and use the ICS }{\b\f1 follow}{\f1  or }{\b\f1 pfollow}{\f1  command in the new window.\r
+\f1\uldb Pause}{\v\f1 Pause}{\f1 , and }{\f1\uldb Stop Examining}{\v\f1 StopExamining}{\f1  below. You can also issue the ICS position-editing commands with the mouse. Move pieces by dragging with the left mouse button, or by left-clicking once on th\r
+e starting square and once on the ending square. Press the right mouse button over a square for a context menu that lets you drop a new piece, empty the square, or clear the board. Click on the White or Black clock to set the side to play. You cannot set \r
+t\r
+he side to play or drag pieces to arbitrary squares while examining on ICC, but you can do so in bsetup mode on FICS. You can also make moves by typing them into the ICS window; you may have to do this occasionally if you are playing a chess variant whose\r
+ rules WinBoard does not understand, such as Fischer Random.\r
+\par If you are playing a bughouse game on the ICS, a list of the offboard pieces that each player holds is shown in the window title bar. To drop an offboard piece, press the right mouse button over a\r
+n empty square to bring up a context menu. To observe your partner's games, start a second copy of WinBoard, log in as a guest, and use the ICS }{\b\f1 follow}{\f1  or }{\b\f1 pfollow}{\f1  command in the new window.\r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  Edit Game}\r
 }#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  EditGame}}}{\f1  Edit Game\r
 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Allows you to make moves for both Black and White, and to change moves after backing up with the }{\f1\uldb Backward}{\v\f1 Backward}{\f1 \r
  command. The clocks do not run, but you can adjust their reading by clicking on them. A left-click subtracts one minute, a right-click adds one minute.\r
-\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 In chess engine mode, the chess engine continues to check moves for legality but does not participate in the game. You can bring the chess engine back\r
- into the game by selecting }{\f1\uldb Machine White}{\v\f1 MachineWhite}{\f1 , }{\f1\uldb Machine Black}{\v\f1 MachineBlack}{\f1 , or }{\f1\uldb Two Machines}{\v\f1 TwoMachines}{\f1 .\r
+\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 In chess engine mode, the chess engine conti\r
+nues to check moves for legality but does not participate in the game. You can bring the chess engine back into the game by selecting }{\f1\uldb Machine White}{\v\f1 MachineWhite}{\f1 , }{\f1\uldb Machine Black}{\v\f1 MachineBlack}{\f1 , or }{\f1\uldb \r
+Two Machines}{\v\f1 TwoMachines}{\f1 .\r
 \par In ICS mode, the moves are not sent to the ICS: Edit Game takes WinBoard out of ICS Client mode and lets you edit games locally. If you want to edit a game on ICS in a way that other ICS users can see, use the ICS }{\b\f1 examine}{\f1 \r
  command or start an ICS match against yourself.\r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 \r
  Edit Position}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  EditPosition}}}{\f1  Edit Position\r
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Lets you set up an arbitrary board position. Use the left mouse button to drag piece\r
-s to new squares, or to delete a piece by dragging it off the board or dragging an empty square on top of it. To drop a new piece on a square, press the right mouse button over the square. This brings up a menu of pieces. Additional menu choices let you e\r
-mpty the square or clear the board. You can set the side to play next by clicking on the White or Black indicator at the top of the screen. }{\f1\cf11 The pop-up menu also contains options to \lquote promote\rquote  or \lquote demote\rquote \r
- the piece currently in the square. (In variants like C\r
-razyhouse a piece has a different representation when it is a promoted Pawn rater than an original piece.) This allows you to create some of the not-so-common pieces (e.g. a Unicorn is a promoted King, a Commoner is a demoted King).}{\f1 \r
+\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Lets you \r
+set up an arbitrary board position. Use the left mouse button to drag pieces to new squares, or to delete a piece by dragging it off the board or dragging an empty square on top of it. To drop a new piece on a square, press the right mouse button over the\r
+ square. This brings up a menu of pieces. Additional menu choices let you empty the square or clear the board. You can set the side to play next by clicking on the White or Black indicator at the top of the screen. }{\f1\cf11 \r
+The pop-up menu also contains options to \lquote promote\rquote  or \lquote demote\rquote \r
+ the piece currently in the square. (In variants like Crazyhouse a piece has a different representation when it is a promoted Pawn rater than an original piece.) This allows you to create some of the not-so-common pieces (e.g. a Unicorn\r
+ is a promoted King, a Commoner is a demoted King).}{\f1 \r
 \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Selecting Edit Position causes WinBoard}{\i\f1  }{\f1 to discard all remembered moves in the current game.\r
-\par In ICS mode, change made to the position by Edit Position are not sent to the ICS: Edit Position takes WinBoard out of ICS Client mode and lets you edit positions locally. If you want to\r
- edit positions on ICS in a way that other ICS users can see, use the ICS }{\b\f1 examine}{\f1  command, or start an ICS match against yourself. (See also }{\f1\uldb ICS Client}{\v\f1 ICSClient}{\f1  above.)\r
+\par In ICS mode, change made to the position by Edit Position are not sent to the ICS: Edit Position takes WinBoard\r
+ out of ICS Client mode and lets you edit positions locally. If you want to edit positions on ICS in a way that other ICS users can see, use the ICS }{\b\f1 examine}{\f1  command, or start an ICS match against yourself. (See also }{\f1\uldb ICS Client}{\r
+\v\f1 ICSClient}{\f1  above.)\r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{\r
 \f1\cf6 Show Engine Output}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf6 Show Engine Output}}}{\f1\cf6  Show Engine Output\r
 \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cf6 Open a new window dedicated to showing the thinking output of the engine(s), as controlled by \ldblquote Show Thinking\rdblquote .\r
@@ -361,9 +460,9 @@ razyhouse a piece has a different representation when it is a promoted Pawn rate
 \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cf6 Open a new window dedicated to showing the game currently in progress.\r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  Training}}\r
 #{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  Training}}}{\f1  Training\r
-\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {Training mode lets you interactively guess the moves of a game for one of the players. While \r
-in Training mode, the navigation buttons are disabled. You guess the next move of the game by playing the move on the board (or using the }{\uldb Type In Move}{\v\uldb TypeInMove}{\r
- command). If the move played matches the next move of the game, the move is accepted and the opponent\rquote s response is autoplayed.  If the move played is incorrect, an error message is displayed. \r
+\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\r
+Training mode lets you interactively guess the moves of a game for one of the players. While in Training mode, the navigation buttons are disabled. You guess the next move of the game by playing the move on the board (or using the }{\uldb Type In Move}{\r
+\v\uldb TypeInMove}{ command). If the move played matches the next move of the game, the move is accepted and the opponent\rquote s response is autoplayed.  If the move played is incorrect, an error message is displayed. \r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  Edit Tags}\r
 }#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  EditTags}}}{\f1  Edit Tags\r
 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Lets you edit the PGN (portable game notation) tags for the current game. After editing, the tags must still conform to the PGN tag syntax:\r
@@ -372,8 +471,9 @@ in Training mode, the navigation buttons are disabled. You guess the next move o
 \par }\pard\plain \s20\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 See the PGN Standard for full details. Here is an example:\r
 \par }\pard\plain \s43\li520\sa60\keep\nowidctlpar\tx520\tx920\tx1320\tx1720\tx2120\adjustright \f6\fs20\cgrid {\f2 \line [Event "Portoroz Interzonal"]\line [Site "Portoroz, Yugoslavia"]\line [Date "1958.08.16"]\line [Round "8"]\line \r
 [White "Robert J. Fischer"]\line [Black "Bent Larsen"]\line [Result "1-0"]\r
-\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Any characters that do not match this syntax are silently ignored. Note that the PGN standard requires \r
-all games to have at least the seven tags shown above. Any that you omit will be filled in by WinBoard with }{\f2 "?"}{\f1  (unknown value) or }{\f2 "-"}{\f1  (inapplicable value).\r
+\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Any \r
+characters that do not match this syntax are silently ignored. Note that the PGN standard requires all games to have at least the seven tags shown above. Any that you omit will be filled in by WinBoard with }{\f2 "?"}{\f1  (unknown value) or }{\f2 "-"}{\r
+\f1  (inapplicable value).\r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 \r
  Edit Comment}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  EditComment}}}{\f1  Edit Comment\r
 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Adds or modifies a comment on the current position. Comments are saved by }{\f1\uldb Save Game}{\v\f1 SaveGame}{\f1  and are displayed by }{\f1\uldb Load Game}{\v\f1 \r
@@ -383,14 +483,14 @@ LoadGame}{\f1 , }{\f1\uldb Forward}{\v\f1 Forward}{\f1 , and }{\f1\uldb Backward
 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cf11 Allows you to type the name of the human player, which will appear in the PGN header and in the window title.\r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  Pause}}#\r
 {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  Pause}}}{\f1  Pause\r
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Pauses updates to the board, and if you are playing against a local chess engine, also pauses your clock. To cont\r
-inue, select Pause again, and the display will automatically update to the latest position. The }{\b\f1 P}{\f1  (or }{\b\f1 C}{\f1 ) button is equivalent to selecting Pause.\r
-\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If you select Pause when you are playing{\*\bkmkstart WHATSelSavT}{\*\bkmkend WHATSelSavT} {\*\bkmkstart fWHATtopic}against{\*\bkmkend fWHATtopic} a chess engine and \r
-it is not your move, the chess engine\rquote \r
-s clock will continue to run and it will eventually make a move, at which point both clocks will stop. Since board updates are paused, however, you will not see the move until you exit from Pause mode (or select }{\f1\uldb Forward}{\v\f1 Forward}{\f1 \r
-). This behavior is meant to simulate adjournment with a sealed move.\r
-\par If you select Pause while you are in }{\b\f1 examine}{\f1  mode on ICS, you can step backward and forward in the current history of the examined game without affecting the other examiners or o\r
-bservers. Select Pause again to reconnect yourself to the current state of the game on ICS.\r
+\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 \r
+Pauses updates to the board, and if you are playing against a local chess engine, also pauses your clock. To continue, select Pause again, and the display will automatically update to the latest position. The }{\b\f1 P}{\f1  (or }{\b\f1 C}{\f1 \r
+) button is equivalent to selecting Pause.\r
+\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If you select Pause when you are playing{\*\bkmkstart WHATSelSavT}{\*\bkmkend WHATSelSavT} {\*\bkmkstart fWHATtopic}against{\*\bkmkend fWHATtopic}\r
+ a chess engine and it is not your move, the chess engine\rquote s clock will continue to run and it will eventually make a move, at which point \r
+both clocks will stop. Since board updates are paused, however, you will not see the move until you exit from Pause mode (or select }{\f1\uldb Forward}{\v\f1 Forward}{\f1 ). This behavior is meant to simulate adjournment with a sealed move.\r
+\par If you select Pause while you are in }{\b\f1 examine}{\f1 \r
+ mode on ICS, you can step backward and forward in the current history of the examined game without affecting the other examiners or observers. Select Pause again to reconnect yourself to the current state of the game on ICS.\r
 \par If you select Pause while you are loading a game, the game stops loading. You can load more moves one at a time by selecting }{\f1\uldb Forward}{\v\f1 Forward}{\f1 , or resume automatic loading by selecting Pause again.\r
 \par }\pard\plain \s1\li120\sb280\sa120\sl-320\slmult0\nowidctlpar\outlinelevel0\adjustright \b\f5\cgrid {\f1\fs20 \page }{\cs58\f1\fs20\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super \r
 K}{\f1  Action Menu}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  ActionMenu}}${\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \r
@@ -414,12 +514,12 @@ K}{\f1  Action Menu}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmul
 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Offers a draw to your opponent, accepts a pending draw offer from your opponent, or claims a draw by repetition or the 50-move rule, as appropriate.\r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  Adjourn}}#\r
 {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  Adjourn}}}{\f1  Adjourn\r
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Asks your opponent to agree to adjourning the current game, or agrees to a pending adjournment offer from your opponent. You continue an adjourne\r
-d ICS game by challenging the same player again with the ICS }{\b\f1 match}{\f1  command.\r
+\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 \r
+Asks your opponent to agree to adjourning the current game, or agrees to a pending adjournment offer from your opponent. You continue an adjourned ICS game by challenging the same player again with the ICS }{\b\f1 match}{\f1  command.\r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  Abort}}#\r
 {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  Abort}}}{\f1  Abort\r
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Asks your opponent to agree to abort the current game, or agrees to a pending abort offer from your opponent. An aborted ICS game ends immediately without \r
-affecting either player's rating.\r
+\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 \r
+Asks your opponent to agree to abort the current game, or agrees to a pending abort offer from your opponent. An aborted ICS game ends immediately without affecting either player's rating.\r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  Resign}}#\r
 {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  Resign}}}{\f1  Resign\r
 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Resigns the game to your opponent.\r
@@ -443,13 +543,15 @@ affecting either player's rating.
 \f5\fs20\cgrid {\cs58\f1\super $}{\f1  Step Menu}}+{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super +}{\f1  main}}}{\f1\fs20  Step Menu\r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 \r
  Type In Move}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  TypeInMove}}}{\f1  Type In Move\r
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Pops up a dialog box, into which you can type moves in standard algebraic chess notation. (You can also get this dialog box by simply starting to type over t\r
-he chessboard, except in ICS mode, where such typing is redirected into the ICS interaction window.)\r
+\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 \r
+Pops up a dialog box, into which you can type moves in standard algebraic chess notation. (You can also get this dialog box by simply starting to type over the chessboard, except in ICS mode, where such typing is redirected into the ICS interaction\r
+ window.)\r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  Backward}}\r
 #{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  Backward}}}{\f1  Backward\r
-\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Steps backward through a series of remembered moves. The }{\b\f1 <}{\f1  button is equivalent to selecting Backward.In most modes, Back\r
-ward only lets you look back at old positions; it does not retract moves. This is the case if you are playing against a chess engine, playing or observing a game on the ICS, or loading a game. If you select Backward in any of these situations, you will no\r
-t be allowed to make a different move. Use }{\f1\uldb Retract Move}{\v\f1 RetractMove}{\f1  or }{\f1\uldb Edit Game}{\v\f1 EditGame}{\f1  if you want to change past moves.\r
+\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Steps backward through a series of remembered moves. The }{\b\f1 <}{\f1 \r
+ button is equivalent to selecting Backward.In most modes, Backward only lets you look back at old positions; it does not retract moves. This is the case if you are playing aga\r
+inst a chess engine, playing or observing a game on the ICS, or loading a game. If you select Backward in any of these situations, you will not be allowed to make a different move. Use }{\f1\uldb Retract Move}{\v\f1 RetractMove}{\f1  or }{\f1\uldb \r
+Edit Game}{\v\f1 EditGame}{\f1  if you want to change past moves.\r
 \par If you are examining a game on the ICS, the behavior of Backward depends on whether WinBoard}{\i\f1  }{\f1 is in }{\f1\uldb Pause}{\v\f1 Pause}{\f1  mode. If Pause mode is off, Backward issues the ICS command}{\b\f1  backward}{\f1 \r
 , which backs up everyone's view of the game and allows you to make a different move. If Pause mode is on, Backward only backs up your local view.\r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  Forward}}#\r
@@ -457,15 +559,14 @@ t be allowed to make a different move. Use }{\f1\uldb Retract Move}{\v\f1 Retrac
 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Steps forward through a series of remembered moves (undoing the effect of }{\f1\uldb Backward}{\v\f1\uldb Backward}{\f1 ) or through a game file. The }{\b\f1 >}{\f1 \r
  button is equivalent.\r
 \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If you are examining a game on the ICS, the behavior of Forward depends on whether WinBoard}{\i\f1  }{\f1 is in }{\f1\uldb Pause}{\v\f1 Pause}{\f1 \r
- mode. If Pause mode is off, Forward issues the ICS command}{\b\f1  forward}{\f1 \r
-, which moves everyone's view of the game forward along the current line. If Pause mode is on, Forward only moves your local view forward, and it will not go past the position the game was in when you paused.\r
+ mode. If Pause mode is off, Forward issues the ICS command}{\b\f1  forward}{\f1 , which moves everyone's view of the game forward along the current line. If Pause mode is on, Forward on\r
+ly moves your local view forward, and it will not go past the position the game was in when you paused.\r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 \r
  Back to Start}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  BacktoStart}}}{\f1  Back to Start\r
 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Jumps backward to the first remembered position in the game. The }{\b\f1 << }{\f1 button is equivalent.\r
-\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 In most mod\r
-es, Back to Start only lets you look back at old positions; it does not retract moves. This is the case if you are playing against a chess engine, playing or observing a game on the ICS, or loading a game. If you select Back to Start in any of these situa\r
-tions, you will not be allowed to make a different move. Use }{\f1\uldb Retract Move}{\v\f1 RetractMove}{\f1  or }{\f1\uldb Edit Game}{\v\f1 EditGame}{\f1  if you want to change past moves; or use }{\f1\uldb New Game}{\v\f1 NewGame}{\f1 \r
- to start a new game.\r
+\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 In most modes, Back to Start only lets you lo\r
+ok back at old positions; it does not retract moves. This is the case if you are playing against a chess engine, playing or observing a game on the ICS, or loading a game. If you select Back to Start in any of these situations, you will not be allowed to \r
+make a different move. Use }{\f1\uldb Retract Move}{\v\f1 RetractMove}{\f1  or }{\f1\uldb Edit Game}{\v\f1 EditGame}{\f1  if you want to change past moves; or use }{\f1\uldb New Game}{\v\f1 NewGame}{\f1  to start a new game.\r
 \par If you are examining a game on the ICS, the behavior of Back to Start depends on whether WinBoard}{\i\f1  }{\f1 is in }{\f1\uldb Pause}{\v\f1 Pause}{\f1  mode. If Pause mode is off, Backward issues the ICS command }{\b\f1 backward 999999}{\f1 \r
 , which backs up everyone's view of the game to the start and allows you to make different moves. If Pause mode is on, Back to Start only backs up your local view.\r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 \r
@@ -496,14 +597,13 @@ K}{\f1  Options Menu}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmu
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  Flip View}\r
 }#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  FlipView}}}{\f1  }{\f1\ul Flip View}{\f1 \r
 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Inverts your view of the chessboard.\r
-\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If you are pla\r
-ying a game on the ICS, the board is always oriented at the start of the game so that your pawns move from the bottom of the window towards the top. Otherwise, the starting position is determined by the }{\f1\uldb flipView}{\v\f1 flipViewOption}{\f1 \r
- command line option.\r
+\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If you are playing a game on the ICS, the b\r
+oard is always oriented at the start of the game so that your pawns move from the bottom of the window towards the top. Otherwise, the starting position is determined by the }{\f1\uldb flipView}{\v\f1 flipViewOption}{\f1  command line option.\r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf11\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{\r
 \f1\ul\cf11 Swap Clocks}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\ul\cf11 Swap Clocks}}}{\f1\cf11  }{\f1\ul\cf11 Swap Clocks}{\f1\cf11 \r
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf11 \r
-Interchanges the position of the white and black clocks on the screen. Intended for manually-operated computer-computer games, where the monitor is standing to the side of the playing board, to make sure that the operator \r
-sees the time of his own machine on his side of the table. Note that it is possible to adjust the clocks in steps of one minute, by left- (decrement) or right-clicking (increment) it with the mouse in \ldblquote Edit Game\rdblquote \r
+\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf11 Interchanges the positi\r
+on of the white and black clocks on the screen. Intended for manually-operated computer-computer games, where the monitor is standing to the side of the playing board, to make sure that the operator sees the time of his own machine on his side of the tabl\r
+e. Note that it is possible to adjust the clocks in steps of one minute, by left- (decrement) or right-clicking (increment) it with the mouse in \ldblquote Edit Game\rdblquote \r
  mode. (Clicking the clocks in other modes is interpreted as claiming the flag.)\r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\ul\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super K}{\r
  General Options}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super #}{ GeneralOptions}}}{\f1\ul General}{\f1 \r
@@ -512,24 +612,23 @@ sees the time of his own machine on his side of the table. Note that it is possi
 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If this option is on, WinBoard sets its chessboard to be a }{\i\f1 topmost}{\f1  window, meaning that it always appears on top of all ordinary windows on the screen.\r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 \r
  Always Queen}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  AlwaysQueen}}}{\f1  Always Queen\r
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 \r
-If Always Queen is off, WinBoard brings up a dialog box whenever you move a pawn to the last rank, asking what piece you want to promote it to. If the option is on, your pawns are always promoted to queens. Your opponent can still underpromote, however.\r
-\r
+\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If Always Queen is off, WinBoard brings up a dialog box whenever you move a pawn \r
+to the last rank, asking what piece you want to promote it to. If the option is on, your pawns are always promoted to queens. Your opponent can still underpromote, however.\r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 \r
  Animate Dragging}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  AnimateDragging}}}{\f1  Animate Dragging\r
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If Animate Dragging is on while yo\r
-u are dragging a piece with the mouse, an image of the piece follows the mouse cursor. If Animate Dragging is off, there is no visual feedback while you are\r
+\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If Animate Dragging is on while you are dragging a piece with t\r
+he mouse, an image of the piece follows the mouse cursor. If Animate Dragging is off, there is no visual feedback while you are\r
 \par dragging a piece, but if Animate Moving is on, the move will be animated when it is complete.\r
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  An\r
-imate Moving}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  AnimateMoving}}}{\f1  Animate Moving\r
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 \r
-If Animate Moving is on, all piece moves are animated.  An image of the piece is shown moving from the old square to the new square when the move is completed (unless the move was already animated by Animate Dr\r
-agging). If Animate Moving is off, a moved piece instantly disappears from its old square and reappears on its new square when the move is complete.\r
+\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 \r
+ Animate Moving}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  AnimateMoving}}}{\f1  Animate Moving\r
+\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If Animate Movin\r
+g is on, all piece moves are animated.  An image of the piece is shown moving from the old square to the new square when the move is completed (unless the move was already animated by Animate Dragging). If Animate Moving is off, a moved piece instantly di\r
+sappears from its old square and reappears on its new square when the move is complete.\r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  Auto Flag}\r
 }#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  AutoflagCmd}}}{\f1  Auto Flag\r
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If this option is on and one player runs out of time before the othe\r
-r, WinBoard will automatically call his flag, claiming a win on time. In ICS mode, Auto Flag will only call your opponent's flag, not yours, and the ICS may award you a draw instead of a win if you have insufficient mating material. On most chess servers,\r
- you can now do}{\b\f1  set autoflag 1 }{\f1 instead and have the server call the flag. In local chess engine mode, WinBoard may call either player's flag and will not take material into account.\r
+\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If this option is on and one player runs out of time before the other, WinBoard will automatically call his flag, claiming a win on time. In ICS mode, Auto \r
+Flag will only call your opponent's flag, not yours, and the ICS may award you a draw instead of a win if you have insufficient mating material. On most chess servers, you can now do}{\b\f1  set autoflag 1 }{\f1 \r
+instead and have the server call the flag. In local chess engine mode, WinBoard may call either player's flag and will not take material into account.\r
 \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\b\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super K}{ Auto Flip View}}#{\footnote\ftnalt \r
 \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super #}{ AutoFlipView}}}{\b  Auto Flip View\r
 \par }{If this option is on when you}{\f1  start a game, the board will be automatically oriented so that your pawns move from the bottom of the window towards the top.}{\r
@@ -538,17 +637,16 @@ r, WinBoard will automatically call his flag, claiming a win on time. In ICS mod
 \par }{If this}{\v autoFlipViewOption}{ option is on, whenever a new game begins, the chessboard window will be deiconized (if necessary) and raised to the top of the stack of windows on your screen.\r
 \par }\pard\plain \s2\li120\sb80\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super K}{ Blindfold}}#\r
 {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super #}{ BlindfoldCmd}}}{Blindfold\r
-\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {If Blindfold is on, WinBoard displays a blank board. Moves can still be entered with the mouse, eith\r
-er by dragging the (invisible) piece or clicking the starting and ending square. You can also enter your move by typing it on the keyboard}{\f1 .}{\r
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 \r
- Highlight Dragging}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  HighlightDragging}}}{\f1  Highlight Dragging\r
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If Highlight Dragging is on while you are dragging a \r
-piece with the mouse, the starting square and the square that the mouse cursor is over are highlighted. This option works even if Animate Dragging is off.\r
+\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {If Blindfold is on, WinBoar\r
+d displays a blank board. Moves can still be entered with the mouse, either by dragging the (invisible) piece or clicking the starting and ending square. You can also enter your move by typing it on the keyboard}{\f1 .}{\r
+\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  Highli\r
+ght Dragging}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  HighlightDragging}}}{\f1  Highlight Dragging\r
+\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If Highlight Dragging\r
+ is on while you are dragging a piece with the mouse, the starting square and the square that the mouse cursor is over are highlighted. This option works even if Animate Dragging is off.\r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{\r
 \f1\cf6 Extended PGN Info}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf6 ExtendedPGNInfo}}}{\f1\cf6  Extended PGN Info\r
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 The PGN will contai\r
-n the engine search depth, score and time for each move where the depth is non-zero, as a comment behind the move if this option is on. Works only when \ldblquote Show Thinking\rdblquote  is enabled. The recorded time is the time reported by the engine.\r
-\r
+\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 The PGN will contain the engine search depth, sc\r
+ore and time for each move where the depth is non-zero, as a comment behind the move if this option is on. Works only when \ldblquote Show Thinking\rdblquote  is enabled. The recorded time is the time reported by the engine.\r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{\r
 \f1\cf6 Extra Info In Move History}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf6 ExtraInfoInMoveHistory}}}{\f1\cf6  Extra Info In Move History\r
 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 Same as above, but in move-history window. \r
@@ -565,16 +663,16 @@ If Periodic Updates is on, the Analysis window is updated every two seconds. If
 \cs58\f1\revised\super\revauth1\revdttm-1506646559 K}{\f1\revised\revauth1\revdttm-1506646559  Ponder Next Move}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\pnrnot1\adjustright \f5\fs20\cgrid {\r
 \cs58\f1\revised\super\revauth1\revdttm-1506646559 #}{\f1\revised\revauth1\revdttm-1506646559  PonderNextMoveCmd}}}{\f1  Ponder Next Move\r
 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If this option is off, the chess engine will think only when it is on move. If the option is on, the engine will also think while waiting for you to make your move.\r
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 \r
- Popup Exit Message}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  PopupExitMessageCmd}}}{\f1  Popup Exit Message\r
+\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  Popup Ex\r
+it Message}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  PopupExitMessageCmd}}}{\f1  Popup Exit Message\r
 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 \r
 If this option is on, when WinBoard wants to display a message just before exiting, it brings up a modal dialog box and waits for you to click OK before exiting. If the option is off, WinBoard prints exits immediately without showing the message. If }{\r
 \f1\uldb debugMode}{\v\f1 debugMode}{\f1  is on, however, the message will appear in the debug log.\r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 \r
  Popup Move Errors}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  PopupMoveErrorsCmd}}}{\f1  Popup Move Errors\r
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If this option is off, when you make an error in moving (such as attempting an illegal move\r
- or moving the wrong color piece), the error message is displayed in the message area. If the option is on, move errors are displayed in small popup windows like other errors. You can dismiss an error popup either by clicking its OK button or by clicking \r
-anywhere on the board, including downclicking to start a move.\r
+\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If this option is off, when you make an error in moving (such as attempting an illegal move or moving the wrong color piece), the error message is d\r
+isplayed in the message area. If the option is on, move errors are displayed in small popup windows like other errors. You can dismiss an error popup either by clicking its OK button or by clicking anywhere on the board, including downclicking to start a \r
+move.\r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 \r
  Show Button Bar}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  ShowButtonBarCmd}}}{\f1  Show Button Bar\r
 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If Show Button Bar is on, WinBoard displays on-screen }{\f1\uldb buttons}{\v\f1 BUTTONS}{\f1 \r
@@ -585,16 +683,16 @@ anywhere on the board, including downclicking to start a move.
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 \r
  Show Thinking}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  ShowThinkingCmd}}}{\f1  Show Thinking\r
 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If this option is set, WinBoard displays the chess engine\rquote \r
-s current search depth and its notion of the score and best line of play from the current position as it is thinking. The score indicates \r
-how many pawns ahead (or if negative, behind) the engine thinks it is. In matches between two machines, the score is prefixed by W or B to indicate whether it is showing White's thinking or Black's.\r
+s current search depth and its notion of the score and best line of play from the current position as it is th\r
+inking. The score indicates how many pawns ahead (or if negative, behind) the engine thinks it is. In matches between two machines, the score is prefixed by W or B to indicate whether it is showing White's thinking or Black's.\r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 \r
  Test Legality}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  TestLegalityCmd}}}{\f1  Test Legality\r
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If Tes\r
-t Legality is on, WinBoard tests whether the moves you enter with the mouse or read from game files are legal, and displays an error if they are not. Turn this option off if you are playing a chess variant that WinBoard does not understand. (Bughouse, sui\r
-cide, and wild variants where the king may castle after starting on the }{\b\f1 d}{\f1  file are generally supported with Test Legality on. }{\f1\cf11 \r
-The same holds for variants with non-FIDE pieces, like shatranj, xangqi, shogi, gothic, capablanca, courier, knightmate: WinBoard k\r
-nows how all pieces occurring in those variants move. Falcon, cylinder and berolina are only partly supported, though, and the latter two should definitely be played with legality testing off, and falcon uses a wildcard piece for the Falcons, so it consid\r
-ers any move of them legal, but might miss checkmates that involve a Falcon. So you should not play it with claim verification switched on.}{\f1 )\r
+\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If Test Lega\r
+lity is on, WinBoard tests whether the moves you enter with the mouse or read from game files are legal, and displays an error if they are not. Turn this option off if you are playing a chess variant that WinBoard does not understand. (Bughouse, suicide, \r
+and wild variants where the king may castle after starting on the }{\b\f1 d}{\f1  file are generally supported with Test Legality on. }{\f1\cf11 \r
+The same holds for variants with non-FIDE pieces, like shatranj, xangqi, shogi, gothic, capablanca, courier, knightmate: WinBoard knows h\r
+ow all pieces occurring in those variants move. Falcon, cylinder and berolina are only partly supported, though, and the latter two should definitely be played with legality testing off, and falcon uses a wildcard piece for the Falcons, so it considers an\r
+y move of them legal, but might miss checkmates that involve a Falcon. So you should not play it with claim verification switched on.}{\f1 )\r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{\r
 \f1\cf6 Hide Thinking From Human}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf6 HideThinkingFromHuman}}}{\f1\cf6  Hide Thinking From Human\r
 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 An alternative to suppressing the Thinking Output in the display above the board by switching \ldblquote Show Thinking\rdblquote \r
@@ -606,20 +704,21 @@ ers any move of them legal, but might miss checkmates that involve a Falcon. So
 }#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super #}{ BoardOptions}}}{\f1\ul Board\r
 \par }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  Board Size}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid \r
 {\cs58\f1\super #}{\f1  BoardSizeCmd}}}{\f1  Board Size\r
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Determines how large the board will be and w\r
-hat fonts and piece bitmaps will be used. On a Titanic board the piece bitmaps are 129x129 pixels, on Colossal 116x116, Giant 108x108, Huge 95x95, Big 87x87, Large 80x80, Bulky 72x72, Medium 64x64, Moderate 58x58, Average 54x54, Middling 49x49, Mediocre 4\r
-5x45, Small 40x40, Slim 37x37, Petite 33x33, Dinky 29x29, Teeny 25x25, and Tiny 21x21. The smaller boards have no system menu, but you can minimize or close them from the File menu.\r
+\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 \r
+Determines how large the board will be and what fonts and piece bitmaps will be used. On a Titanic board the piece bitmaps are 129x129 pixels, on Colossal 116x116, Giant 108x108, Huge 95x95, Big 87x87, Large 80x80, Bulky 72x72, Medium 64x64, Moderate\r
+ 58x58, Average 54x54, Middling 49x49, Mediocre 45x45, Small 40x40, Slim 37x37, Petite 33x33, Dinky 29x29, Teeny 25x25, and Tiny 21x21. The smaller boards have no system menu, but you can minimize or close them from the File menu.\r
 \par }\pard\plain \s20\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 You can also change the board size by dragging the window edges or corners with the mouse. The board will snap to the largest size that fits into the area you outline.\r
 \r
-\par }{\cf11 Note that only sizes Bulky, Middling and to a lesser extent Petite have built-in bitmaps\r
- for the non-FIDE- pieces. Archbishop, Chancellor and the wildcard Lance exist in all sizes from Petite to Bulky, though. In size Moderate, variant shogi uses the traditional Japanese piece representation.}{\f1\cf11 \r
+\par }{\cf11 Note that only sizes Bulky, Middling and to a lesser extent Petite have built-in bitmaps for the non-FIDE- pieces\r
+. Archbishop, Chancellor and the wildcard Lance exist in all sizes from Petite to Bulky, though. In size Moderate, variant shogi uses the traditional Japanese piece representation.}{\f1\cf11 \r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 \r
  Board Colors}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  BoardColors}}}{\f1  Board Colors\r
 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Lets you change the colors WinBoard is using to draw the board and pieces.\r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf11\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{\r
 \f1\cf11 All White}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf11 AllWhite}}}{\f1\cf11  All White\r
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf11 Uses the representation of the white pieces (a filled-in black outline) also for the black pieces (where you can fill them with another color to disti\r
-nguish them). If you do not choose a very dark color for the black pieces, they look very ugly without outline, and using this option can fix that.\r
+\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf11 \r
+Uses the representation of the white pieces (a filled-in black outline) also for the black pieces (where you can fill them with another color to distinguish them). If you do not choose a very dark color for the black pieces, th\r
+ey look very ugly without outline, and using this option can fix that.\r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf11\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{\r
 \f1\cf11 Flip Black}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf11 FlipBlack}}}{\f1\cf11  Flip Black\r
 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf11 Displays the black pieces upside down (or the white pieces in \ldblquote Flip View\rdblquote \r
@@ -636,9 +735,8 @@ nguish them). If you do not choose a very dark color for the black pieces, they
 \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 Duplicates of the controls in the \ldblquote General\rdblquote  option menu.\r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{\r
 \f1\cf6 Adjudicate Draw Moves}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf6 AdjudicateDrawMoves}}}{\f1\cf6  Adjudicate Draw Moves\r
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 \r
-Adjudicate a draw after the given number of moves, to prevent games from dragging on forever if two engines in a dead-drawn position, conspire to avoid 50-move draws. This and the folowing options are only active in \ldblquote Two Machines\rdblquote  mo\r
-de.\r
+\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 Adjudicate a draw after the given number of moves, to prevent games\r
+ from dragging on forever if two engines in a dead-drawn position, conspire to avoid 50-move draws. This and the folowing options are only active in \ldblquote Two Machines\rdblquote  mode.\r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{\r
 \f1\cf6 Adjudicate Loss Threshold}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf6 AdjudicateLossThreshold}}}{\f1\cf6  Adjudicate Loss Threshold\r
 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 Adjudicate the game as a loss when both engines agree that the (negative) score is  below the given threshold for the duration of 6 consecutive plies.\r
@@ -656,19 +754,19 @@ Let WinBoard detect checkmate and stalemate, even before the engine gets the cha
 If this option is on, WinBoard will recognize KBKB positions with equally colored Bishops, KBK, KNK, and KK positions as draws, even before the engine can claim them. Needs \ldblquote Test Legality\rdblquote  to be on in order to work.\r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf11\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{\r
 \f1\cf11 Adjudicate Trivial Draws}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf11 AdjudicateTrivialDraws}}}{\f1\cf11  Adjudicate Trivial Draws\r
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf11 If this option is on, KBKB (with B on unlike color), KBKN, KNKN, KNNK, KRKR and KQKQ positions will be adjudicated draw after 6 ply. For KQKQ this is\r
- not really sound, and in the future it might be taken out of this option. But as long as tablebase adjudications are not implemented, it seems best to group this end-game with the trivial draws. Needs \ldblquote Test Legality\rdblquote \r
- to be on in order to work.\r
+\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf11 \r
+If this option is on, KBKB (with B on unlike color), KBKN, KNKN, KNNK, KRKR and KQKQ positions will be adjudicated draw after 6 ply. For KQKQ this is not really sound, and in the future it might be taken out of\r
+ this option. But as long as tablebase adjudications are not implemented, it seems best to group this end-game with the trivial draws. Needs \ldblquote Test Legality\rdblquote  to be on in order to work.\r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf11\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{\r
 \f1\cf11 N-Move Rule}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf11 N-MoveRule}}}{\f1\cf11  N-Move Rule\r
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf11 \r
-Here you can set the number of reversible moves (non-pawn, non-capture) after which WinBoard should adjudicate a game as draw. Engine draw claims are always consider ed valid after 50 moves (in the context of \ldblquote Verify Claims\rdblquote )\r
-, but you can set a different value here to either give the engine more leeway if it wants to play on, or test its claiming capabilities, or set it to a smaller value if you are impatient.\r
+\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf11 Here you can set the number of reversible moves (non-pawn\r
+, non-capture) after which WinBoard should adjudicate a game as draw. Engine draw claims are always consider ed valid after 50 moves (in the context of \ldblquote Verify Claims\rdblquote \r
+), but you can set a different value here to either give the engine more leeway if it wants to play on, or test its claiming capabilities, or set it to a smaller value if you are impatient.\r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf11\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{\r
 \f1\cf11 N-Fold Repetition Rule}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf11 N-FoldRepetitionRule}}}{\f1\cf11  N-Fold Repetition Rule\r
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf11 \r
-Here you can set the number of repetitions of the same position that should occur in order for WinBoard to adjudicate the game as draw. Engine draw claims are always consider ed valid after 3 repetitions (in the context of \ldblquote Verify Claims\r
-\rdblquote ) , but you can set a different value here to either give the engine more leeway if it wants to play on, or test its claiming capabilities, or set it to 2 if you are impatient. (Do not set it to 1!)\r
+\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf11 Here you can set the number of repetitions of the same position that should occur in order for WinBoard to adjudicate the game as\r
+ draw. Engine draw claims are always consider ed valid after 3 repetitions (in the context of \ldblquote Verify Claims\rdblquote \r
+) , but you can set a different value here to either give the engine more leeway if it wants to play on, or test its claiming capabilities, or set it to 2 if you are impatient. (Do not set it to 1!)\r
 \par }\pard\plain \s5\li115\sb80\sl-240\slmult0\nowidctlpar\outlinelevel4\adjustright \f5\fs20\ul\cgrid {\b \r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\ul\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super K}{ }{\r
 \f1\ul\cf6 UCI}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super #}{ }{\f1\ul\cf6 UCI}}}{\f1\ul\cf6 UCI\r
@@ -682,47 +780,48 @@ If WinBoard knows where to find Polyglot, you can install UCI engines as if they
 EGTBPath}}}{\f1\cf6  EGTB Path, }{\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{\f1\cf6 EGTB Cache Size}}#{\footnote\ftnalt \pard\plain \r
 \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf6 EGTBCacheSize}}}{\f1\cf6  EGTB Cache Size, }{\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \r
 \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{\f1\cf6 Opening Book}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf6 OpeningBook}}}{\f1\cf6  Opening Book\r
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 These are options that UCI engines expect to be specified. If future extensions of WinBoard protocol allow native WinBoard\r
- engines to request similar information, it might be used for these engines as well.\r
+\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 \r
+These are options that UCI engines expect to be specified. If future extensions of WinBoard protocol allow native WinBoard engines to request similar information, it might be used for these engines as well.\r
 \par }\pard\plain \s5\li115\sb80\sl-240\slmult0\nowidctlpar\outlinelevel4\adjustright \f5\fs20\ul\cgrid {\b \r
 \par }{\cs58\b\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super K}{ ICS Options}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\r
 \cs58\super #}{ ICSOptions}}}{\b ICS\r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 \r
  Auto Comment}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  AutoCommentCmd}}}{\f1  Auto Comment\r
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If Auto C\r
-omment is on, any remarks made on ICS while you are observing or playing a game are recorded as a comment on the current move. This includes remarks made with the ICS commands }{\b\f1 say, tell, whisper, }{\f1 and }{\b\f1 kibitz}{\f1 \r
+\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 \r
+If Auto Comment is on, any remarks made on ICS while you are observing or playing a game are recorded as a comment on the current move. This includes remarks made with the ICS commands }{\b\f1 say, tell, whisper, }{\f1 and }{\b\f1 kibitz}{\f1 \r
 . Limitation: remarks that you type yourself are not \r
 \par recognized; WinBoard scans only the output from ICS, not the input you type to it.\r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 \r
  Auto Observe}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  AutobsCmd}}}{\f1  Auto Observe\r
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If Auto Observe is on and you add a player to your }{\b\f1 gnotify}{\f1  list on ICS, WinBoard will automatically observe all of that player\r
-'s games, unless you are doing something else (such as observing or playing a game of your own) when one starts. On most chess servers, you can now do }{\b\f1 follow }{\b\i\f1 player}{\f1  instead, and the server will automatically observe all of }{\r
-\b\i\f1 player\rquote s}{\f1  games.\r
+\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If Auto Observe is on and you add a player to your }{\b\f1 gnotify}{\f1  list on ICS, WinBoard will automatically ob\r
+serve all of that player's games, unless you are doing something else (such as observing or playing a game of your own) when one starts. On most chess servers, you can now do }{\b\f1 follow }{\b\i\f1 player}{\f1 \r
+ instead, and the server will automatically observe all of }{\b\i\f1 player\rquote s}{\f1  games.\r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 \r
  Get Move List}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  GetMoveListCmd}}}{\f1  Get Move List\r
 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If Get Move List is on, whenever WinBoard}{\i\f1  }{\f1 \r
-receives the first board of a new ICS game (or a different ICS game from the one it is currently displaying), it retrieves the list of past moves from the server. You can then revie\r
-w the moves with the Forward and Backward commands or save them with Save Game. You might want to turn off this option if you are observing several blitz games at once, to keep from wasting time and network bandwidth fetching the move lists over and over.\r
- If you turn this option on while a game is in progress, WinBoard}{\i\f1  }{\f1 immediately fetches the current move list.\r
+receives the first board of a new ICS game (or a different ICS game from the one it is currently displaying), it retrieves the list of past moves from the server. You can then review the mov\r
+es with the Forward and Backward commands or save them with Save Game. You might want to turn off this option if you are observing several blitz games at once, to keep from wasting time and network bandwidth fetching the move lists over and over. If you t\r
+urn this option on while a game is in progress, WinBoard}{\i\f1  }{\f1 immediately fetches the current move list.\r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 \r
  Local Line Editing}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  LocalLineEditing}}}{\f1  Local Line Editing\r
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If Local Line Editing is }{\b\f1 on}{\f1 , your machine handles echoing, backspacing, etc., for the \r
-characters that you type into the ICS Interaction window. Output is forwarded to the ICS only when you hit Enter.The Enter key produces a newline character, also known as Ctrl+J, \\\r
+\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If Local Line Editing is }{\b\f1 on}{\f1 , your machine handles echoing, backspacing, etc., for the characters that you type into the ICS Interaction\r
+ window. Output is forwarded to the ICS only when you hit Enter.The Enter key produces a newline character, also known as Ctrl+J, \\\r
 n, LF, linefeed, or decimal ASCII code 10. In this mode you can force a control character into the edit buffer by preceding it with Ctrl+Q (\ldblquote quote\rdblquote \r
 ); however, the edit buffer will not accept certain control characters even when they are quoted in this way. You can force a control character to be sent immediately to ICS, bypassing the edit buffer, by preceding it with Ctrl+S (\ldblquote send\r
 \rdblquote ).\r
 \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 \r
 WinBoard keeps a history of lines you recently typed in Local Line Editing mode. You can bring back old lines by pressing the cursor up key in the text entry box. Press the cursor down key to go back down to newer lines.\r
-\par If Local Line Editing is }{\b\f1 off}{\f1 , all characters are sent to ICS as you type them. The Enter key produces a carriage return character, also known as Ctrl+M, \\r, CR, or decimal ASCII code 13. Use Ctrl+Backspace if you need the ASCII DEL char\r
-acter. You can enter any character code by holding down the Alt key and typing its decimal value (always beginning with 0) on the numeric keypad; this is a little-known standard feature of Windows.\r
+\par If Local Line Editing is }{\b\f1 off}{\f1 , all characters are sent to ICS as you type them. The Enter key produces a carriage return character, also known as Ctrl+M, \\\r
+r, CR, or decimal ASCII code 13. Use Ctrl+Backspace if you need the ASCII DEL character. You can enter any character code by holdin\r
+g down the Alt key and typing its decimal value (always beginning with 0) on the numeric keypad; this is a little-known standard feature of Windows.\r
 \par In both modes, if WinBoard}{\i\f1 \rquote s }{\f1 internal telnet protocol implementation is active, it translates all \\n characters to the standard telnet end-of-line sequence \\r\\n just before sending them out to ICS; see }{\f1\uldb telnetProgram}{\r
 \v\f1 telnetProgram}{\f1 .\r
 \par It is generally not a good idea to turn off this option while connected to ICS. If you are tempted to do so because everything you type is being echoed an extra time, see the paragraph about extra echoes under }{\f1\uldb LIMITATIONS}{\v\f1 LIMITATIONS}{\r
 \f1  below.\r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  Quiet Play\r
 }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  QuietPlayCmd}}}{\f1  Quiet Play\r
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If Quiet Play is on, WinBoard will automatically issue an ICS }{\b\f1 set shout 0}{\f1  command whenever you start a game and a }{\b\f1 set shout 1}{\f1 \r
- command whenever you finish one. Thus you will not be distracted by shouts from other ICS users while playing.\r
+\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If Quiet Play is on, WinBoard will automatically issue an ICS }{\b\f1 set shout 0}{\f1  command whenever you start a game and a }{\b\f1 set shout 1}{\f1  command w\r
+henever you finish one. Thus you will not be distracted by shouts from other ICS users while playing.\r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  Premove}}#\r
 {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  PremoveCmd}}}{\f1  Premove\r
 \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {Premove allows you to play a move on the board before you have received your opponent\rquote s move.  This move is highlighted on the board using the }{\uldb Premove Highlight\r
@@ -735,23 +834,23 @@ premoveBlackText}{.
  seconds.  For ICS games with time controls that include an increment, the alarm will sound each time the clock counts down to the }{\uldb icsAlarmTime}{\v icsAlarmTime}{.\r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 \r
  ICS Interaction Colors}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  ICSInteractionColors}}}{\f1  ICS Interaction Colors\r
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Lets you change the colors and type styles that WinBoard uses to distinguish \r
-between different types of messages in the ICS Interaction window. The types distinguished are: shout, sshout, channel 1 tell, other channel tell, kibitz (or whisper), personal tell (or new message notification), challenge, request (including abort, adjou\r
-rn, draw, pause, and takeback), seek, and normal (all other messages).\r
+\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Lets you change the colors and type \r
+styles that WinBoard uses to distinguish between different types of messages in the ICS Interaction window. The types distinguished are: shout, sshout, channel 1 tell, other channel tell, kibitz (or whisper), personal tell (or new message notification), c\r
+hallenge, request (including abort, adjourn, draw, pause, and takeback), seek, and normal (all other messages).\r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  Fonts}}#\r
 {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  Fonts}}}{\f1  }{\f1\ul Fonts}{\f1 \r
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Lets you change the fonts WinBoard is using.  The clock font, message font and coordinates font are specific to each board size.  The tags font, comments font an\r
-d ICS Interaction font are not dependent on the current size of the board.  The \ldblquote Revert to Defaults\rdblquote \r
+\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Lets you change the fonts WinBoard is using.  The clock font, message font and coordinates font are specific to each board size.  The ta\r
+gs font, comments font and ICS Interaction font are not dependent on the current size of the board.  The \ldblquote Revert to Defaults\rdblquote \r
  button will reset the clock font, message font and coordinates font for the current board size, and will set the tags font, message font and Ics Interaction font for all board sizes.\r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  Sounds}}#\r
 {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  Sounds}}}{\f1  }{\f1\ul Sounds}{\f1 \r
 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Lets you change the sounds that WinBoard plays for various events.\r
 \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  Move Sound}}#{\footnote\ftnalt \r
-\pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  MoveSound}}}{\f1 If the Move sound is on, WinBoard alerts you by playing a sound after each of your opponent's moves (or af\r
-ter every move if you are observing a game on the Internet Chess Server). The sound is not played after moves you make or moves read from a saved game file. If you turn on the Move sound when using WinBoard with the Internet Chess Server, you will probabl\r
-y want to give the }{\b\f1 set bell 0}{\f1 \r
- command to the ICS. Otherwise the ICS will send a bell character after every move (not just yours), causing WinBoard to play the ICS Bell sound too. Alternatively, you could turn off the ICS Bell sound in WinBoard, but that mig\r
-ht cause you to miss ICS alerts for other interesting events.\r
+\pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  MoveSound}}}{\f1 If the Move sound is on, WinBoard alerts you by playing a sound after each of your opponent's moves (or after every move if \r
+you are observing a game on the Internet Chess Server). The sound is not played after moves you make or moves read from a saved game file. If you turn on the Move sound when using WinBoard with the Internet Chess Server, you will probably want to give the\r
+ }{\b\f1 set bell 0}{\f1 \r
+ command to the ICS. Otherwise the ICS will send a bell character after every move (not just yours), causing WinBoard to play the ICS Bell sound too. Alternatively, you could turn off the ICS Bell sound in WinBoard, but that might cause you to mi\r
+ss ICS alerts for other interesting events.\r
 \par The other sound events correspond directly to the types of messages that the }{\f1\uldb ICS Interaction Colors}{\v\f1 ICSInteractionColors}{\f1  option knows how to colorize.\r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  Sounds}}#\r
 {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  Sounds}}}{\f1  }{\f1\ul Game List}{\f1 \r
@@ -771,12 +870,12 @@ saveGameFile}{\v\f1 saveGameFile}{\f1  options).
 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Lets you change the time control to be used in games against a chess engine. Two types of timing are available.\r
 \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 With conventional chess clocks, each player begins with his clock set to the }{\f1\uldb timeControl}{\v\f1 timeControl}{\f1  period. When both players have made }{\r
 \f1\uldb movesPerSession}{\v\f1 movesPerSession}{\f1  moves, a new time control period begins. The time in the new period is added to whatever time the players have left on their clocks.\r
-\par With incremental clocks, each player is given an initial time allotment, and a }{\f1\uldb timeIncrement}{\v\f1 timeIncrement}{\f1 \r
- is added to his clock after every move. The increment may be zero, in which case the entire game must be finished within the initial time allotment.\r
+\par With incremental clocks, each player is given an initial time allotment, and a }{\f1\uldb timeIncrement}{\v\f1 timeIncrement}{\f1  is added to his clock after every move. The increment may be zero, in which\r
+ case the entire game must be finished within the initial time allotment.\r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 \r
  Save Settings Now}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  SaveSettings}}}{\f1  }{\f1\ul Save Settings Now}{\f1 \r
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Save the current option settings to a file, along with the current window sizes and positions, to be automatically reloaded next time WinBoard is run. See }{\f1\uldb \r
-Settings}{\v\f1 Settings}{\f1  for the fine points.\r
+\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Save the current option settings to a file, along with the current window sizes and positions, to be automatically reloaded next time WinBoard is run. See }{\f1\uldb Settin\r
+gs}{\v\f1 Settings}{\f1  for the fine points.\r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 \r
  Save Settings on Exit}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  SaveSettingsOnExit}}}{\f1  }{\f1\ul Save Settings on Exit}{\f1 \r
 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If this option is on, the current settings are automatically saved when WinBoard exits, as with Save Settings Now.\r
@@ -798,9 +897,9 @@ K}{\f1  Help Menu}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0
 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Displays a move hint from the chess engine.\r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  Book}}#\r
 {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  Book}}}{\f1  Book\r
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Displays a list of possible moves from the chess engine\rquote s opening book. The first column gives moves, the sec\r
-ond column gives one possible response for each move, and the third column shows the number of lines in the book that include the move from the first column. If you select this option and nothing happens, the engine is out of its book or does not support \r
-the book command.\r
+\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Displays a list of possible moves from the chess engine\rquote \r
+s opening book. The first column gives moves, the second column gives one possible response for each move, and the third column shows the number of lines in the book that include the move from the first column. If you selec\r
+t this option and nothing happens, the engine is out of its book or does not support the book command.\r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 \r
  About WinBoard}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  AboutWinBoard}}}{\f1  About WinBoard\r
 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Displays the WinBoard version number.\r
@@ -808,15 +907,14 @@ the book command.
 K}{\f1  ICS Interaction Context Menu}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  ICSInteractionContextMenu}}}{\b0\f1\fs18\up6  }{\cs58\f1\fs20\super ${\footnote\ftnalt \r
 \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super $}{\f1  ICS Interaction Context Menu}}+{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super +}\r
 {\f1  main}}}{\f1\fs20 ICS Interaction Context Menu\r
-\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 \r
-To see this menu, press the right mouse button anywhere in the output (upper) pane of the ICS Interaction window. Pressing the right mouse button in the input (lower) pane gives a standard editing context menu, not described here. Use the }{\b\f1 help}{\r
-\f1  command on ICS to learn what these commands mean.\r
+\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 To see this menu, press the right mouse button anywhere in the\r
+ output (upper) pane of the ICS Interaction window. Pressing the right mouse button in the input (lower) pane gives a standard editing context menu, not described here. Use the }{\b\f1 help}{\f1  command on ICS to learn what these commands mean.\r
 \par You can customize the lower part of this menu (below the Paste option) by setting the }{\f1\uldb icsMenu}{\v\f1 icsMenu}{\f1  option. The easiest way to accomplish this is to edit your }{\f1\uldb settings file}{\v\f1 settings}{\f1 \r
  with Notepad or another plain text editor. Sorry, there is no graphical user interface for customizing the menu.\r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 \r
  Copy and Paste}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  CopyAndPaste}}}{\f1  Copy and Paste\r
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Copies the current selection to the clipboard, then pastes it to the input box. As a shortcut to this function, you can press the\r
- middle mouse button (if you have one), or Shift plus the right mouse button.\r
+\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 \r
+Copies the current selection to the clipboard, then pastes it to the input box. As a shortcut to this function, you can press the middle mouse button (if you have one), or Shift plus the right mouse button.\r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  Copy}}#\r
 {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  Copy}}}{\f1  Copy\r
 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Copies the current selection to the clipboard.\r
@@ -886,19 +984,20 @@ K}{\f1  Buttons}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\n
 K}{\f1  Command Line Options}}K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  Options}}}{\f1\fs20  }{\cs58\f1\fs20\super #{\footnote\ftnalt \pard\plain \r
 \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  Options}}}{\f1\fs20  }{\cs58\f1\fs20\super ${\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super $\r
 }{\f1  Command Line Options}}}{\f1\fs20  }{\cs58\f1\fs20\super +{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super +}{\f1  main}}}{\f1\fs20  COMMAND LINE OPTIONS\r
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 All WinBoard options can be set either on \r
-the command line (if you start WinBoard by typing into an MSDOS Prompt box), in the Properties/Shortcut/Target box of a Windows shortcut, in a }{\f1\uldb settings file}{\v\f1 settings}{\f1 \r
+\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 All WinBoard options can be set either on the command line (if you star\r
+t WinBoard by typing into an MSDOS Prompt box), in the Properties/Shortcut/Target box of a Windows shortcut, in a }{\f1\uldb settings file}{\v\f1 settings}{\f1 \r
 , or in the Additional Options box of the WinBoard startup dialog. Exactly the same syntax is used in all four places. Most options can also be set from the menus and saved using }{\f1\uldb Save Settings Now}{\v\f1 SaveSettings}{\f1  or }{\f1\uldb \r
 Save Settings on Exit}{\v\f1 SaveSettingsOnExit}{\f1 , so most people will not need to read this section.\r
 \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Most options have two names, a long one that is easy to read and a short one that is easy to type. To turn on a boolean (true/false) option }{\i\f1 opt}{\f1 \r
 , you can just give its short name preceded by a minus sign or slash (-}{\i\f1 opt}{\f1  or /}{\i\f1 opt}{\f1 ); to turn one off, prefix the short name by an \ldblquote x\rdblquote  or an extra minus sign (-x}{\i\f1 opt}{\f1  or /-}{\i\f1 opt}{\f1 \r
-). To set any other kind of option, or to set a boolean option using its long name, give the value after the name, separated by a space, colon, or equal sign. (-}{\i\f1 opt}{\f1  23 or /}{\i\f1 option}{\f1 :true). If a string\r
- option contains spaces or special characters, enclose it in double quotes and use the \\ quoting convention of C to name the special characters. Alternatively, you can enclose a string value in curly braces (/opt=\{string\}\r
+). To set any other kind of option, or to set a boolean option using its long name, give the value after the name, separated by a space, colon, or equal sign. (-}{\i\f1 opt}{\f1  23 or /}{\i\f1 option}{\f1 \r
+:true). If a string option contains spaces or special characters, enclose it in double quotes and use the \\ quoting convention of C to name the special characters. Alternatively, you can enclose a string value in curly braces (/opt=\{string\}\r
 ), as long as the value does not contain a closing curly brace. If a filename option contains spaces, enclose it in either single or double quotes. In filename options, the \\\r
  character is not treated specially, so use single quotes around the outside of the value if it has double quotes inside (and vice versa).\r
-\par When you start WinBoard, it will pop up the Startup dialog box unless you provide sufficient options on the command line for WinBoard to determine which major mode to be in and what engines to use or chess server to connect to. To byp\r
-ass this box, you must at minimum give one of the three options }{\f1\uldb /cp}{\v\f1 cp}{\f1 , /}{\f1\uldb ics}{\v\f1 ics}{\f1 , or /}{\f1\uldb ncp}{\v\f1 ncp}{\f1 .  If you give the /cp option, you must also give the /}{\f1\uldb fcp}{\v\f1 fcp}{\f1 \r
- and /}{\f1\uldb scp}{\v\f1 scp}{\f1  options. If you give the /ics option, you must also give the /}{\f1\uldb icshost}{\v\f1 icshost}{\f1  option.\r
+\par When you start WinBoard, it will pop up the Startup\r
+ dialog box unless you provide sufficient options on the command line for WinBoard to determine which major mode to be in and what engines to use or chess server to connect to. To bypass this box, you must at minimum give one of the three options }{\r
+\f1\uldb /cp}{\v\f1 cp}{\f1 , /}{\f1\uldb ics}{\v\f1 ics}{\f1 , or /}{\f1\uldb ncp}{\v\f1 ncp}{\f1 .  If you give the /cp option, you must also give the /}{\f1\uldb fcp}{\v\f1 fcp}{\f1  and /}{\f1\uldb scp}{\v\f1 scp}{\f1 \r
+ options. If you give the /ics option, you must also give the /}{\f1\uldb icshost}{\v\f1 icshost}{\f1  option.\r
 \par }\pard\plain \s29\fi-240\li360\sb60\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\uldb Chess Engine Options}{\v\f1 ChessEngineOptions}{\f1 \r
 \par }{\f1\uldb UCI Engine Support                  !NEW!}{\v\f1 UCIEngineSupport}{\f1 \r
 \par }{\f1\uldb Internet Chess Server Options}{\v\f1 InternetChessServerOptions}{\f1 \r
@@ -928,50 +1027,48 @@ moves}{\f1
 {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  inc}}}{\f1 /inc }{\b0\f1 or}{\f1  }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\r
 \nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  timeIncrement}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  timeIncrement}}}{\f1 /timeIncrement }{\i\f1 seconds\r
 \r
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If this option is specified, movesPerSession is ignored. Instead, a\r
-fter each player's move, timeIncrement seconds are added to his clock. Use -timeIncrement 0 if you want to require the entire game to be played in one timeControl period, with no increment. Default: -1, which specifies movesPerSession mode.\r
+\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If this option is specified, movesPerSession is ignored. Instead, after each player's move, timeIncrement seconds are added to his clock. Use -timeIncrement 0 \r
+if you want to require the entire game to be played in one timeControl period, with no increment. Default: -1, which specifies movesPerSession mode.\r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  clock }}#\r
 {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  clock }}}{\f1  /clock }{\b0\f1 or }{\f1 /xclock}{\b0\f1 , or}{\f1  }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \r
 \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  clockMode}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  clockMode}}}{\f1 \r
  /clockMode }{\i\f1 true|false\r
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 \r
-Determines whether or not to display the chess clocks. If clockMode is False, the clocks are not shown, but the side that is to play next is still highlighted. Also, unless search\r
-Time is set, the chess engine still keeps track of the clock time and uses it to determine how fast to make its moves.\r
+\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Determines whether or not to display the chess clocks. If\r
+ clockMode is False, the clocks are not shown, but the side that is to play next is still highlighted. Also, unless searchTime is set, the chess engine still keeps track of the clock time and uses it to determine how fast to make its moves.\r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  st}}#\r
 {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  st}}}{\f1  /st }{\b0\f1 or}{\f1  }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\r
 \nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  searchTime }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  searchTime }}}{\f1  /searchTime }{\i\f1 \r
 minutes[:seconds]}{\f1 \r
 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 \r
-Tells the chess engine to spend at most the given amount of time searching for each of its moves. Without this option, the engine chooses its search time based on the number of moves and amount of time remaining until the next time control. Setting this o\r
-ption also sets clockMode to False.\r
+Tells the chess engine to spend at most the given amount of time searching for each of its moves. Without this option, the engine chooses its search time based on the number of moves and amount of time remaining until the next t\r
+ime control. Setting this option also sets clockMode to False.\r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  sd}}#\r
 {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  sd}}}{\f1  /depth }{\b0\f1 or}{\f1  }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\r
 \nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  searchDepth}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  searchDepth}}}{\f1  /searchDepth }{\i\f1 number}{\f1 \r
 \r
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Tells the chess engine to look ahead at most the given number of moves when searching for a move to make. Without this option, the engine chooses i\r
-ts search depth based on the number of moves and amount of time remaining until the next time control. With the option, the engine will cut off its search early if it reaches the specified depth.\r
+\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Tells the chess engine to look ahead at most the given number of moves when searching for a move to make. Without this option, the engine chooses its search \r
+depth based on the number of moves and amount of time remaining until the next time control. With the option, the engine will cut off its search early if it reaches the specified depth.\r
 \par }\pard\plain \s2\li119\sb120\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf11\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{\r
 \f1\cf11 firstNPS}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf11 firstNPS}}}{\f1\cf11  /firstNPS }{\i\f1\cf11 number}{\f1\cf11 \r
 \par }\pard \s2\li119\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright {\cs58\f1\cf11\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{\f1\cf11 secondNPS}}#\r
 {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf11 secondNPS}}}{\f1\cf11  /secondNPS }{\i\f1\cf11 number}{\f1\cf11 \r
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf11 \r
-Tells the chess engine to use an internal time standard based on its node count, rather then wall-clock time, to make its time decisions. The time in virtual seconds should be obtained by dividing the node count through the given }{\i\f1\cf11 number}{\r
-\f1\cf11 , like the number was a rate in nodes per second. WinBoard will manage the clocks in accordance with this, relying on the number of nodes reported by the engine in its thinking output. If }{\i\f1\cf11 number}{\f1\cf11 \r
- equals zero, it can obviously bnot be used to conver\r
-t nodes to seconds, and the time reported by the engine is used to decrement the WinBoard clock. The engine is supposed to report in CPU time it uses, rather than wall-clock time in this mode. Tis option can provide fairer conditions fo engine-engine matc\r
-hes on heavily loaded machines, or with very fast games (where the wall clock is too inaccurate). \ldblquote Show Thinking\rdblquote  must be on for this option to work. Not many engines might support this yet!\r
+\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf11 Tells the chess engine to use\r
+ an internal time standard based on its node count, rather then wall-clock time, to make its time decisions. The time in virtual seconds should be obtained by dividing the node count through the given }{\i\f1\cf11 number}{\f1\cf11 \r
+, like the number was a rate in nodes per second. WinBoard will manage the clocks in accordance with this, relying on the number of nodes reported by the engine in its thinking output. If }{\i\f1\cf11 number}{\f1\cf11 \r
+ equals zero, it can obviously bnot be used to convert nodes to seconds, and the time reported by the engine is\r
+ used to decrement the WinBoard clock. The engine is supposed to report in CPU time it uses, rather than wall-clock time in this mode. Tis option can provide fairer conditions fo engine-engine matches on heavily loaded machines, or with very fast games (w\r
+here the wall clock is too inaccurate). \ldblquote Show Thinking\rdblquote  must be on for this option to work. Not many engines might support this yet!\r
 \par }\pard\plain \s2\li119\sb120\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf11\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{\r
 \f1\cf11 firstTimeOdds}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf11 firstTimeOdds}}}{\f1\cf11  /firstTimeOdds }{\i\f1\cf11 factor}{\f1\cf11 \r
 \par }\pard \s2\li119\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright {\cs58\f1\cf11\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{\f1\cf11 secondTimeOdds}}#\r
 {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf11 secondTimeOdds}}}{\f1\cf11  /secondTimeOdds }{\i\f1\cf11 factor}{\f1\cf11 \r
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf11 Reduces the time given to the mentioned engine by the given }{\i\f1\cf11 factor}{\f1\cf11 \r
-. If pondering is off, the effect is indistinguishable from what would happen if the engine was running on a }{\i\f1\cf11 factor}{\f1\cf11  times slower machine.\r
+\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf11 Reduces the time given to the mentioned engine by the given }{\i\f1\cf11 factor}{\f1\cf11 . If po\r
+ndering is off, the effect is indistinguishable from what would happen if the engine was running on a }{\i\f1\cf11 factor}{\f1\cf11  times slower machine.\r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf11\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\pnrnot1\adjustright \f5\fs20\cgrid {\r
 \cs58\f1\revised\super\revauth1\revdttm-1506646559 K}{\f1\revised\revauth1\revdttm-1506646559  }{\f1\cf11 timeOddsMode}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\pnrnot1\adjustright \f5\fs20\cgrid {\r
 \cs58\f1\revised\super\revauth1\revdttm-1506646559 #}{\f1\revised\revauth1\revdttm-1506646559  }{\f1\cf11 timeOddsMode}}}{\f1\cf11  /timeOddsMode }{\i\f1\cf11 mode\r
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf11 \r
-This option determines how the case is handled when both engines have a time-odds handicap. If mode=1, the engine that gets the most time will always get the nominal time, as specified by the time-control options, and its opponent\rquote \r
-s time is normalized similarly. If mode=0, both play with reduced time.\r
+\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf11 This option determines how the case is handled when both engines have a time-odds handicap. If mode=1, \r
+the engine that gets the most time will always get the nominal time, as specified by the time-control options, and its opponent\rquote s time is normalized similarly. If mode=0, both play with reduced time.\r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\pnrnot1\adjustright \f5\fs20\cgrid {\r
 \cs58\f1\revised\super\revauth1\revdttm-1506646559 K}{\f1\revised\revauth1\revdttm-1506646559  ponder}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\pnrnot1\adjustright \f5\fs20\cgrid {\r
 \cs58\f1\revised\super\revauth1\revdttm-1506646559 #}{\f1\revised\revauth1\revdttm-1506646559  ponder}}}{\f1  /ponder}{\b0\f1  or }{\f1 /xponder}{\b0\f1 ,}{\f1  }{\b0\f1 or}{\f1  }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \r
@@ -1002,8 +1099,9 @@ saveGameFile}{\v\f1 saveGameFile}{\f1  option is set, a move record for the matc
 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Provided for backward compatibility. If true and matchGames=0, sets matchGames=1.\r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf11\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{\r
 \f1\cf11 matchPause}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf11 matchPause}}}{\f1\cf11  /matchPause }{\i\f1\cf11 number}{\f1\cf11 \r
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf11 Sets the length of the pause between games in match mode to }{\i\f1\cf11 number}{\f1\cf11  msec. Default value is 10000, i.e. 10 sec. (If this pause i\r
-s too short, engines not implementing \lquote ping\rquote  will sometimes send the last move of their previous game only when a new game has started, at which time the move is illegal, and causes them to forfeit the game.)\r
+\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf11 Sets the length of the pause between games in match mode to }{\i\f1\cf11 number}{\f1\cf11  msec. Default value is 1000\r
+0, i.e. 10 sec. (If this pause is too short, engines not implementing \lquote ping\rquote  will sometimes send the last move of their previous game only when a new game has started, at which time the move is illegal, and causes them to forfeit the game.)\r
+\r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  fd}}#\r
 {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  fd }}}{\f1  /fd }{\b0\f1 or}{\f1  }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\r
 \nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  firstDirectory}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  firstDirectory}}}{\f1  /firstDirectory }{\i\f1 dir\r
@@ -1016,26 +1114,25 @@ s too short, engines not implementing \lquote ping\rquote  will sometimes send t
 \f5\fs20\cgrid {\cs58\f1\cf11\super K}{\f1\cf11  scp }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\cf11\super #}{\f1\cf11  scp }}}{\f1  /scp }{\b0\f1 or}{\f1  }{\cs58\f1\super K\r
 {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\cf11\super K}{\f1\cf11  secondChessProgram }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \r
 \f5\fs20\cgrid {\cs58\f1\cf11\super #}{\f1\cf11  secondChessProgram}{\f1  }}}{\f1  /secondChessProgram }{\i\f1 command}{\cs58\f1\super  }{\f1 \r
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 \r
-Names of the chess engines and working directories in which they are to be run. The second chess engine is started only in Two Machines (match) mode. These arguments are parsed as filenames; that is, the \\\r
- character is interpreted literally, not as a C-style escape.\r
-\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 The }{\i\f1 dir}{\f1 \r
- argument specifies the initial working directory for the chess engine. It should usually be the directory where the engine and its working files are installed. If }{\i\f1 dir}{\f1 \r
- is not an absolute pathname, it is interpreted relative to the directory from which WinBoard.exe itself was loaded. The }{\i\f1 dir}{\f1 \r
+\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Names of the chess engines and working directories in which they are to be run. The second chess engine is started only\r
+ in Two Machines (match) mode. These arguments are parsed as filenames; that is, the \\ character is interpreted literally, not as a C-style escape.\r
+\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 The }{\i\f1 dir}{\f1  argument specifies the initial working directory for the chess engine. It should usually be the dire\r
+ctory where the engine and its working files are installed. If }{\i\f1 dir}{\f1  is not an absolute pathname, it is interpreted relative to the directory from which WinBoard.exe itself was loaded. The }{\i\f1 dir}{\f1 \r
  argument is ignored if the chess engine is being run on a remote machine (see firstHost and secondHost below). The default value for }{\i\f1 dir }{\f1 "", meaning that the chess engine is expected to be installed in the same directory as WinBoard.\r
 \par The }{\i\f1 command}{\f1  argument is actually the command line to the chess engine, so if the engine itself needs command line arguments, you can include them by enclosing }{\i\f1 command}{\f1 \r
- in single or double quotes. If the engine name or an engine argument has a space in it, use single quotes around the whole }{\i\f1 command, }{\f1 and inside them use double quotes around each item that contains spaces. If the engine name has more than o\r
-ne period in it (for example, }{\f2 QChess1.5.exe}{\f1 ), you must include the "}{\f2 .exe}{\f1 " extension; otherwise you can leave it out. The default value for }{\i\f1 command}{\f1 \r
+ in single or double quotes. If the engine name or an engine argument has a space in it, use single quotes around the whole }{\i\f1 command, }{\f1 and inside them use double quotes around eac\r
+h item that contains spaces. If the engine name has more than one period in it (for example, }{\f2 QChess1.5.exe}{\f1 ), you must include the "}{\f2 .exe}{\f1 " extension; otherwise you can leave it out. The default value for }{\i\f1 command}{\f1 \r
  is "", which brings up the startup dialog to ask which engines you want.\r
 \par Examples:\r
 \par }\pard\plain \s19\fi-518\li1036\sb60\sl-240\slmult0\keep\nowidctlpar\tx520\tx920\tx1320\tx1720\tx2120\adjustright \f6\fs16\cgrid {\f2 WinBoard /cp /fd="C:\\Program Files\\Crafty" /fcp=WCrafty-15.12.exe /scp=GNUChess\r
 \par WinBoard /cp /fd="C:\\Miracle Games" /fcp='"Miracle Chess.exe" /wow' /scp=GNUChess\r
-\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf11 The basic rule is thus that what is inside the quotes delimiting the argument to /fcp and /scp, all goes to the engine, \r
-and is ignored by WinBoard. WinBoard 4.3.13 and later, however, knows an exception to this: If, within the quotes, the word WBopt appears, everything that follows this word will be interpreted as a WinBoard argument, in stead of being passed to the engine\r
+\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf11 The basic rule is thus that what is inside the quotes del\r
+imiting the argument to /fcp and /scp, all goes to the engine, and is ignored by WinBoard. WinBoard 4.3.13 and later, however, knows an exception to this: If, within the quotes, the word WBopt appears, everything that follows this word will be interpreted\r
  \r
-on startup of the latter. (The WBopt itself is also not passed to the engine.) This possibility of hiding WinBoard arguments in the engine command is provided in order to create options that follow the engine in a tournament, when a tournament manager lik\r
-e PSWBTM is used to invoke WinBoard. Because, in order to apply to a given engine, some options need to know if they apply to first or second engine, which might vary during the tournament, options hidden inside the engine command-line can contain \r
-\lquote %s\rquote  which will be replaced at the time the option is used by \lquote first\rquote  or \lquote second\rquote , as applicable.\r
+as a WinBoard argument, in stead of being passed to the engine on startup of the latter. (The WBopt itself is also not passed to the engine.) This possibility of hiding WinBoard arguments in the engine command is provided in order to create options that f\r
+o\r
+llow the engine in a tournament, when a tournament manager like PSWBTM is used to invoke WinBoard. Because, in order to apply to a given engine, some options need to know if they apply to first or second engine, which might vary during the tournament, opt\r
+ions hidden inside the engine command-line can contain \lquote %s\rquote  which will be replaced at the time the option is used by \lquote first\rquote  or \lquote second\rquote , as applicable.\r
 \par Examples:\r
 \par }\pard\plain \s19\fi-518\li1036\sb60\sl-240\slmult0\keep\nowidctlpar\tx520\tx920\tx1320\tx1720\tx2120\adjustright \f6\fs16\cgrid {\f2\cf11 WinBoard /cp /fd="C:\\Engines\\Crafty" /fcp=\rdblquote WCrafty-15.12 WBopt /%sTimeOdds=2\rdblquote  /scp=GNUChess\r
 \r
@@ -1048,55 +1145,68 @@ e PSWBTM is used to invoke WinBoard. Because, in order to apply to a given engin
 \cs58\f1\super #}{\f1  sh }}}{\f1  /sh }{\b0\f1 or}{\f1  }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  secondHost }}#{\footnote\ftnalt \pard\plain \r
 \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  secondHost }}}{\f1  /secondHost }{\i\f1 host}{\f1 \r
 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Hosts on which the chess engines are to run. The default for each is "localhost". If you specify another host, WinBoard}{\i\f1  }{\f1 uses }{\f1\uldb rsh}{\v\f1 rsh}{\f1 \r
- to run the chess program there. The /fd and /sd flags do not work in conjunction wi\r
-th these flags; if you need a remote chess engine to run somewhere other than your default login directory on the remote machine, you will have to include a "cd" command in the argument to /fcp or /scp.\r
+ to run the chess program there. The /fd and /sd flags do not work in conjunction with these flags; if you need a remote chess engine to run somewhere other than your default login directory on the remote machine, you will have to include a "cd" c\r
+ommand in the argument to /fcp or /scp.\r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  initString\r
 }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  initString}}}{\f1  /firstInitString }{\b0\f1 or }{\f1 /initString }{\i\f1 string\line }{\cs58\f1\super K{\footnote\ftnalt \r
 \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  secondInitString}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 \r
  secondInitString}}}{\f1  /secondInitString }{\i\f1 string}{\f1 \r
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 The strings that are sent to initialize the chess engines. Default: "new\\nrandom\\n". The "\\n" sequences represent newlines. You can type "\\\r
-n" on the command line or in a }{\f1\uldb settings file}{\v\f1 settings}{\f1 , and WinBoard will convert it to a newline.\r
+\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 The strings that are sent to initialize the chess engines. Default: "new\\nrandom\\n". The "\\n" sequences represent newlines. You can type "\\n" on t\r
+he command line or in a }{\f1\uldb settings file}{\v\f1 settings}{\f1 , and WinBoard will convert it to a newline.\r
 \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 All chess engines require the "new" command to start a new game.\r
-\par You can remove the "random" command if you like; including it causes GNU Chess to randomize its move selection slightly so that it\r
- doesn't play the same moves in every game. Even without "random", GNU Chess randomizes its choice of moves from its opening book. You can also try adding other commands to the initString; see the GNU Chess documentati{\*\bkmkstart _Hlt386545814}o\r
-{\*\bkmkstart _Hlt386567280}{\*\bkmkend _Hlt386545814}n{\*\bkmkend _Hlt386567280} (gnuchess.txt) for details. Crafty ignores the "random" command; see its documentation for the commands it accepts.\r
+\par You can remove the "random" command if you like; including it causes GNU Chess to randomize its move \r
+selection slightly so that it doesn't play the same moves in every game. Even without "random", GNU Chess randomizes its choice of moves from its opening book. You can also try adding other commands to the initString; see the GNU Chess documentati\r
+{\*\bkmkstart _Hlt386545814}o{\*\bkmkstart _Hlt386567280}{\*\bkmkend _Hlt386545814}n{\*\bkmkend _Hlt386567280} (gnuchess.txt) for details. Crafty ignores the "random" command; see its documentation for the commands it accepts.\r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  initString\r
 }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  initString}}}{\f1  /firstComputerString }{\i\f1 string\line }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \r
 \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  secondInitString}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  secondInitString}}\r
 }{\f1  /secondComputerString }{\i\f1 string}{\f1 \r
 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If the chess engine is playing against another computer program (whether locally or on a chess server), by default the command "computer\\\r
 n" is sent to it. Some chess engines change their playing style when they receive this command. If you do not want the engine to know when it is playing another computer, you can set the string to "".\r
-\par }\pard\plain \s66\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cf11\cgrid {\r
-Note that the computer string is sent to the engine after most other initialization commands, and is thus ideal for hiding a WinBoard-protocol command in that should be s\r
-ent only to one engine, when the WinBoard option that normally specifies this command cannot be differentiated by engine, but s always sent to both engines. E.g. if you want one of the engines to ponder, and the other not. Because it is sent last, in can \r
-overrule earlier commands.\r
+\par }\pard\plain \s66\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cf11\cgrid {N\r
+ote that the computer string is sent to the engine after most other initialization commands, and is thus ideal for hiding a WinBoard-protocol command in that should be sent only to one engine, when the WinBoard option that normally specifies this command \r
+cannot be differentiated by engine, but s always sent to both engines. E.g. if you want one of the engines to ponder, and the other not. Because it is sent last, in can overrule earlier commands.\r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  fb }}#\r
 {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  fb }}}{\f1  /fb }{\b0\f1 or }{\f1 /xfb}{\b0\f1 , or}{\f1  }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \r
 \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  firstPlaysBlack }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  firstPlaysBlack}}}\r
 {\f1  /firstPlaysBlack }{\i\f1 true|false\r
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 In games between two chess programs, the firstChessProgram normally plays white. (This is a change from earlier versions of WinBoar\r
-d.) If this option is True, firstChessProgram plays black. In a multi-game match, this option affects the colors only for the first game; they still alternate in subsequent games.\r
+\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 In games be\r
+tween two chess programs, the firstChessProgram normally plays white. (This is a change from earlier versions of WinBoard.) If this option is True, firstChessProgram plays black. In a multi-game match, this option affects the colors only for the first gam\r
+e; they still alternate in subsequent games.\r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  reuse}}#\r
 {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  reuse}}}{\f1 /reuse}{\cs58\f1\super  }{\b0\f1 or }{\f1 /xreuse}{\b0\f1 , or }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \r
 \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  reuseFirst}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  reuseFirst}}}{\f1 \r
 /reuseFirst}{\i\f1  true|false\line }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  reuse2}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\r
 \nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  reuse2}}}{\f1 /reuse2}{\cs58\f1\super  }{\b0\f1 or }{\f1 /xreuse2}{\b0\f1 , or }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \r
 \f5\fs20\cgrid {\cs58\f1\super K}{\f1  reuseSecond}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  reuseSecond}}}{\f1 /reuseSecond}{\i\f1  true|false}{\f1 \r
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If this option is True (the default), WinBoard}{\i\f1  }{\f1 uses the same chess engine process repeatedly when playing multipl\r
-e games. If the option is False, WinBoard kills off the chess engine after every game and starts a fresh one for the next game. Starting a fresh chess engine can be slow, so it is not recommended. However, some chess engines may not work properly when reu\r
-sed, such as versions of Crafty earlier than 12.0.\r
+\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If this option is True (the default), WinBoard}{\i\f1  }{\f1 uses the same chess engine process repeatedly when playing multi\r
+ple games. If the option is False, WinBoard kills off the chess engine after every game and starts a fresh one for the next game. Starting a fresh chess engine can be slow, so it is not recommended. However, some chess engines may not work properly when r\r
+eused, such as versions of Crafty earlier than 12.0.\r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 \r
  firstProtocolVersion}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  firstProtocolVersion}}}{\f1 /firstProtocolVersion }{\i\f1 ver\line }{\cs58\f1\super K{\footnote\ftnalt \r
 \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  secondProtocolVersion}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 \r
  secondProtocolVersion}}}{\f1 /secondProtocolVersion }{\i\f1 ver}{\f1 \r
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 This option specifies which version of the chess engine\r
- communication protocol to use. By default, version-number is 2. In version 1, the "protover" command is not sent to the engine; since version 1 is a subset of version 2, nothing else changes. Other values for version-number are not supported.\r
+\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 This option specifies which version of the chess engine communication protocol to use. By default, version-number is 2. In version 1, the "protover\r
+" command is not sent to the engine; since version 1 is a subset of version 2, nothing else changes. Other values for version-number are not supported.\r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{\r
 \f1\cf6 firstScoreAbs}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf6 firstScoreAbs}}}{\f1\cf6 /firstScoreAbs}{\i\f1\cf6  true|false\line }{\cs58\f1\cf6\super K\r
 {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{\f1\cf6 secondScoreAbs}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\r
 \cs58\f1\super #}{\f1  }{\f1\cf6 secondScoreAbs}}}{\f1\cf6 /secondScoreAbs}{\i\f1\cf6  true|false\r
-\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 If this option is true, the score reported by the engine is taken to be that in favor of white, even when the engine plays black. Important when \r
-winboard uses the score for adjudications, or in PGN reporting. This can be a useful option in combination with WBopt in the engine command-line, see under /fcp.}{\cf6 \r
+\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 If this option is true, the score reported by t\r
+he engine is taken to be that in favor of white, even when the engine plays black. Important when winboard uses the score for adjudications, or in PGN reporting. This can be a useful option in combination with WBopt in the engine command-line, see under /\r
+fcp.}{\cf6 \r
+\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf2\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{\r
+\f1\cf6 niceEngines}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf6 niceEngines}}}{\f1\cf2 /niceEngines}{\i\f1\cf2  priority\r
+\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf2 \r
+This option allows you to lower the priority of the engine processes, so that the generally insatiable hunger for CPU time of chess engines does not interfere so much with smooth operation of WinBoard (or the rest of your system\r
+). Try priority = 10 or even 20 to lower the priority of the engines. Negative values could increase the engine priority, which is not recommended.}{\cf6 \r
+\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf2\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{\r
+\f1\cf6 firstOptions}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf6 firstOptions}}}{\f1\cf2 /firstOptions}{\i\f1\cf2  string\line }{\cs58\f1\cf2\super K\r
+{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{\f1\cf6 secondOptions}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\r
+\cs58\f1\super #}{\f1  }{\f1\cf6 secondOptions}}}{\f1\cf2 /secondOptions}{\i\f1\cf2  string\r
+\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf2 The given string is a comma-separated list of (option name, option value) pairs, like for instance like: \ldblquote style Karpov, blunder rate 0\rdblquote \r
+. If the options announced by the engine at startup through the feature commands of WinBoard protocol matches one of the option names (i.e. \ldblquote style\rdblquote  or \ldblquote blunder rate\rdblquote , it would be set to the given value (i.e. \r
+\ldblquote Karpov\rdblquote  or 0) through a corresponding option command to the engine. This provided that the type of the value (text or numeric) matches as well.}{\cf6 \r
 \par }{\r
 \par }\pard\plain \s1\li120\sb280\sa120\sl-320\slmult0\nowidctlpar\outlinelevel0\adjustright \b\f5\cgrid {\f1\fs20 \page }{\cs58\f1\fs20\cf6\super +{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\r
 \cs58\f1\super +}{\f1  main}}K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{\f1\cf6 UCI Engine Support}}${\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\r
@@ -1110,8 +1220,8 @@ firstIsUCI}}}{\f1\cf6  /firstIsUCI}{\i\f1\cf6  true|false}{\f1\cf6
 {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf6 sUCI}{\f1  }}}{\f1\cf6  /sUCI }{\b0\f1\cf6 or}{\f1\cf6  }{\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \r
 \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{\f1\cf6 secondIsUCI}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf6 \r
 secondIsUCI}}}{\f1\cf6  /secondIsUCI}{\i\f1\cf6  true|false}{\f1\cf6 \r
-\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 Indicates if the mentioned engine executable file is an UCI engine,}{\v\cf6  ICSLogon}{\cf6  and should be run\r
- with the aid of the Polyglot adapter rather than directly. WinBoard will then pass the other UCI options and engine name to Polyglot through a .ini temporary file ceated for the purpose.\r
+\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 Indicates if the mentioned engine executable file is an UCI engine,}{\v\cf6  ICSLogon}{\cf6 \r
+ and should be run with the aid of the Polyglot adapter rather than directly. WinBoard will then pass the other UCI options and engine name to Polyglot through a .ini temporary file ceated for the purpose.\r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{\r
 \f1\cf6 PolyglotDir}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf6 PolyglotDir}{\f1  }}}{\f1\cf6  /PolyglotDir }{\i\f1\cf6 filename}{\f1\cf6 \r
 \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 Gives the name of the folder in which Polyglot is installed}{\v\f1\cf6 ICSLogon}{\f1\cf6 .\r
@@ -1159,8 +1269,8 @@ ICS Client}{\v\f1 ICSClient}{\f1  Default: False.
 #{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  icshost }}}{\f1  /icshost }{\b0\f1 or}{\f1  }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\r
 \nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  internetChessServerHost }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  internetChessServerHost }}}{\f1 \r
  /internetChessServerHost }{\i\f1 hostname}{\f1 \r
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 \r
-The host name or numeric address of the Internet Chess Server to connect to when in ICS mode. The default is the empty string, which causes WinBoard to pop up a menu of known ICS sites. The file ics-address{\*\bkmkstart _Hlt386546221}e\r
+\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 The \r
+host name or numeric address of the Internet Chess Server to connect to when in ICS mode. The default is the empty string, which causes WinBoard to pop up a menu of known ICS sites. The file ics-address{\*\bkmkstart _Hlt386546221}e\r
 {\*\bkmkend _Hlt386546221}s.txt in the WinBoard distribution gives slightly more information on these sites. It includes their numeric addresses, which you can use if your site does not have a working name server.\r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  icsport }}\r
 #{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  icsport }}}{\f1  /icsport }{\b0\f1 or}{\f1  }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\r
@@ -1176,26 +1286,25 @@ The host name or numeric address of the Internet Chess Server to connect to when
 {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  telnet}}}{\f1 /telnet}{\b0\f1  or }{\f1 /xtelnet}{\b0\f1 ,}{\f1  }{\b0\f1 or}{\f1  }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \r
 \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  useTelnet}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  useTelnet}}}{\f1 \r
 /useTelnet}{\i\f1  true|false}{\f1 \r
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 This option is poorly named; it should be called }{\b\f1 /useHelper}{\f1 . If set to True, it instructs WinBo\r
-ard to use an external helper program to communicate with the ICS, as specified by the telnetProgram option. The external program must be a pure console application that can communicate with WinBoard through pipes; the Windows telnet application is not su\r
-itable. If the option is False (the default), WinBoard communicates with the ICS by opening a Winsock TCP socket and using its own internal implementation of the telnet protocol.\r
+\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 This option is poorly named; it should be called }{\b\f1 /useHelper}{\f1 \r
+. If set to True, it instructs WinBoard to use an external helper program to communicate with the ICS, as specified\r
+ by the telnetProgram option. The external program must be a pure console application that can communicate with WinBoard through pipes; the Windows telnet application is not suitable. If the option is False (the default), WinBoard communicates with the IC\r
+S by opening a Winsock TCP socket and using its own internal implementation of the telnet protocol.\r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  gateway}}#\r
 {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  gateway}}}{\f1 /gateway }{\i\f1 hostname}{\f1 \r
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If this option is set to a host name, WinBoard uses }{\f1\uldb rsh}{\v\f1 rsh}{\f1 \r
- to run the telnetProgram remotely on the given host to communicate with the Internet Chess Server instead of using its own internal implementation of the telnet protocol. See the }{\f1\uldb FIREWALLS}{\v\f1 FIREWALLS}{\f1 \r
- section below for an explanation of when this option is useful.\r
+\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If this option is set to a host name, WinBoard uses }{\f1\uldb rsh}{\v\f1 rsh}{\f1  to run the telnetProgram remotely on the given host to communicate with the In\r
+ternet Chess Server instead of using its own internal implementation of the telnet protocol. See the }{\f1\uldb FIREWALLS}{\v\f1 FIREWALLS}{\f1  section below for an explanation of when this option is useful.\r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 \r
  telnetProgram}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  telnetProgram}}}{\f1 /telnetProgram }{\i\f1 program}{\f1 \r
 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 This option is poorly named; it should be called }{\b\f1 /helperProgram}{\f1 \r
-. It gives the name of the remote or external helper program to be used with the gateway or useTelnet option.\r
- The default is "telnet". The telnet program is invoked with the value of internetChessServer as the first argument and the value of internetChessServerPort as the second argument on its command line.\r
+. It gives the name of the remote or external helper program to be used with the gateway or useTelnet option. The default is "telnet". The telnet program is invoked with the value of internetChessServer as the first argument and the value o\r
+f internetChessServerPort as the second argument on its command line.\r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  icscom }}#\r
 {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  icscom }}}{\f1 /icscom }{\b0\f1 or}{\f1  }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\r
 \nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  internetChessServerComPort }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  internetChessServerComPort }}}{\f1 \r
 /internetChessServerComPort }{\i\f1 name}{\f1 \r
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 \r
-If this option is set, WinBoard communicates with the Internet Chess Server using a serial communication port instead of a network connection. Use this option if your machine is not c\r
-onnected to a network (not even via SLIP or PPP), but you do have Internet access through another machine by dialing in using a modem or by connecting directly to a serial terminal port. Example:\r
+\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If this option is set, WinBoard communicates with the Internet Chess Server using a serial communication port instead of a network connect\r
+ion. Use this option if your machine is not connected to a network (not even via SLIP or PPP), but you do have Internet access through another machine by dialing in using a modem or by connecting directly to a serial terminal port. Example:\r
 \par }\pard\plain \s19\li120\sb60\sl-240\slmult0\keep\nowidctlpar\tx520\tx920\tx1320\tx1720\tx2120\adjustright \f6\fs16\cgrid {\f2 WinBoard /ics /icscom:com1\r
 \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 After you start WinBoard in this way, type whatever modem commands are necessary to dial out to your Internet provider and log in. You may need to turn off }{\f1\uldb \r
 Local Line Editing}{\v\f1 LocalLineEditing}{\f1  on the Options menu while typing commands to the modem, but turn it on again afterwards. Then telnet to the ICS, using a command like "telnet chessclub.com 5000". Important: See the paragraph in the }{\r
@@ -1228,7 +1337,8 @@ Communications}{\f1  dialog.
 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Sets the }{\f1\uldb Auto Observe}{\v\f1 autoObserveCmd}{\f1  option. Default: False.\r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf11\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{\r
 \f1\cf11 autoKibitz}{\f1  }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf11 autoKibitz}{\f1  }}}{\f1\cf11  /autoKibitz\r
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf11 Kibitzes the engines last thinking output (depth, score, time, speed, PV) to the ICS in zippy mode. Show Thinking must be on for this option to work.\r
+\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf11 Kibitzes the engines last thinking output (depth, score, time, speed, PV) to the ICS in zippy mode. Show Thinking must be on for this option to work. }{\f1\cf2 \r
+Also diverts similar kibitz information of an opponent engine that is playing you through the ICS to the engine-output window, as if the engine was playing locally.}{\f1\cf11 \r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  moves }}#\r
 {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  moves }}}{\f1  /moves}{\b0\f1  or }{\f1 /xmoves}{\b0\f1 ,}{\f1  }{\b0\f1 or}{\f1  }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \r
 \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  getMoveList }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  getMoveList }}}{\f1 \r
@@ -1293,10 +1403,10 @@ Load and Save Options
 filename}{\f1 \line }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  lgi }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \r
 \f5\fs20\cgrid {\cs58\f1\super #}{\f1  lgi }}}{\f1  /lgi }{\b0\f1 or}{\f1  }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  loadGameIndex }}#{\footnote\ftnalt \r
 \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  loadGameIndex }}}{\f1  /loadGameIndex }{\i\f1 N}{\f1 \r
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If loadGameFile is set, WinBoard reads the specified game file at startup. You can leave out the name of this option and \r
-give just the file name, which is handy if you want to configure WinBoard as a game viewer with a browser such as the Windows Explorer or Netscape. The filename is interpreted relative to WinBoard's initial working directory. The filename "-" specifies th\r
-e standard input. If there is more than one game in the file, WinBoard pops up a menu of the available games, with entries based on their PGN tags. If loadGameIndex is set to }{\i\f1 N, }{\f1 the menu is suppressed and the }{\i\f1 N}{\f1 \r
-th game found in the file is loaded immediately.\r
+\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If loadGameFile is set, WinBoard reads the specified game file at startup. Yo\r
+u can leave out the name of this option and give just the file name, which is handy if you want to configure WinBoard as a game viewer with a browser such as the Windows Explorer or Netscape. The filename is interpreted relative to WinBoard's initial work\r
+ing directory. The filename "-" specifies the standard input. If there is more than one game in the file, WinBoard pops up a menu of the available games, with entries based on their PGN tags. If loadGameIndex is set to }{\i\f1 N, }{\f1 \r
+the menu is suppressed and the }{\i\f1 N}{\f1 th game found in the file is loaded immediately.\r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  td }}#\r
 {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  td }}}{\f1  /td }{\b0\f1 or}{\f1  }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\r
 \nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  timeDelay }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  timeDelay }}}{\f1  /timeDelay }{\i\f1 seconds}{\f1 \r
@@ -1307,29 +1417,28 @@ th game found in the file is loaded immediately.
 {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  sgf }}}{\f1  /sgf }{\b0\f1 or}{\f1  }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\r
 \nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  saveGameFile }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  saveGameFile }}}{\f1  /saveGameFile }{\i\f1 \r
 filename}{\f1 \r
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If this option is set, WinBoard appends a record of every game played to the specified file. The filename is interpre\r
-ted relative to WinBoard's initial working directory. The filename "-" specifies the standard output.\r
+\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 \r
+If this option is set, WinBoard appends a record of every game played to the specified file. The filename is interpreted relative to WinBoard's initial working directory. The filename "-" specifies the standard output.\r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  autosave }\r
 }#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  autosave }}}{\f1  /autosave}{\b0\f1  or }{\f1 /xautosave}{\b0\f1 ,}{\f1  }{\b0\f1 or}{\f1  }{\cs58\f1\super K{\footnote\ftnalt \r
 \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  autoSaveGames }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 \r
  autoSaveGames }}}{\f1  /autoSaveGames}{\i\f1  true|false}{\f1 \r
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If this option is True, at the end o\r
-f every game WinBoard prompts you for a filename and appends a record of the game to the file you specify. Ignored if saveGameFile is set. Default: False.\r
+\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 \r
+If this option is True, at the end of every game WinBoard prompts you for a filename and appends a record of the game to the file you specify. Ignored if saveGameFile is set. Default: False.\r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  lpf}}#\r
 {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  lpf}}}{\f1  /lpf }{\b0\f1 or}{\f1  }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\r
 \nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  loadPositionFile }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  loadPositionFile }}}{\f1  /loadPositionFile }{\r
 \i\f1 filename}{\f1 \line }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  lpi }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\r
 \nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  lpi }}}{\f1  /lpi }{\b0\f1 or}{\f1  }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 \r
  loadPositionIndex }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  loadPositionIndex }}}{\f1  /loadPositionIndex }{\i\f1 N}{\f1 \r
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 \r
-If loadPositionFile is set, WinBoard loads the specified position file at startup. The filename is interpreted relative to WinBoard's initial working directory. The filename "-" specifies the standard input. If loadPositionIndex is set to }{\i\f1 N}{\f1 \r
-, the }{\i\f1 N}{\f1 th position found in the file is loaded; otherwise the first is loaded.\r
+\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If loadPositionFile is set, WinBoard loads the specified position file at startup. The filename is interpreted relative to WinBoard's initial working directory. The f\r
+ilename "-" specifies the standard input. If loadPositionIndex is set to }{\i\f1 N}{\f1 , the }{\i\f1 N}{\f1 th position found in the file is loaded; otherwise the first is loaded.\r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  spf }}#\r
 {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  spf }}}{\f1  /spf }{\b0\f1 or}{\f1  }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\r
 \nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  savePositionFile }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  savePositionFile }}}{\f1  /savePositionFile }{\r
 \i\f1 filename}{\f1 \r
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If this option \r
-is set, WinBoard appends the final position reached in every game played to the specified file. The filename is interpreted relative to WinBoard's initial working directory. The file name "-" specifies the standard output.\r
+\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If this option is set, WinBoard appends the final position rea\r
+ched in every game played to the specified file. The filename is interpreted relative to WinBoard's initial working directory. The file name "-" specifies the standard output.\r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{\r
 \f1\cf6 pgnExtendedInfo}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf6 pgnExtendedInfo}{\f1  }}}{\f1\cf6  /pgnExtendedInfo }{\i\f1\cf6 true|false}{\f1\cf6 \r
 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 If this option is set, WinBoard saves depth, score and time used for each move that the engine found as a comment in the PGN file.\r
@@ -1344,15 +1453,14 @@ is set, WinBoard appends the final position reached in every game played to the
 #{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  oldsave }}}{\f1  /oldsave }{\b0\f1 or }{\f1 /xoldsave}{\b0\f1 , or}{\f1  }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \r
 \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  oldSaveStyle }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  oldSaveStyle }}}{\f1 \r
  /oldSaveStyle}{\i\f1  true|false}{\f1 \r
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If this option is False (the default), WinBoard saves games in PGN (portable game notation) and positions in FEN (Forsythe-Edwards notation). If the optio\r
-n is True, a save style that is compatible with older versions of WinBoard (and of xboard) is used instead.\r
+\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If this option is False (the default), WinBoard saves games in PGN (portable game notation) and positions in FEN (Forsythe-Edwards notation).\r
+ If the option is True, a save style that is compatible with older versions of WinBoard (and of xboard) is used instead.\r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  debug}}#\r
 {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  debug}}}{\f1  /debug}{\b0\f1  or }{\f1 /xdebug}{\b0\f1 ,}{\f1  }{\b0\f1 or}{\f1  }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \r
 \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  debugMode}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  debugMode}}}{\f1 \r
  /debugMode}{\i\f1  true|false}{\f1 \r
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Writes debugging information to the file \ldblquote WinBoard.debug\rdblquote \r
-, including all commands sent to the chess engine, all output received from it, and all commands sent to ICS. You can press Ctrl+Alt+F12 to turn this option on or off while WinBoard is running. Each time you turn it on, any existing debug file is overwrit\r
-ten.\r
+\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Writes debugging information to the file \ldblquote WinBoard.debug\rdblquote , including all commands sen\r
+t to the chess engine, all output received from it, and all commands sent to ICS. You can press Ctrl+Alt+F12 to turn this option on or off while WinBoard is running. Each time you turn it on, any existing debug file is overwritten.\r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{\r
 \f1\cf6 debugFile}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf6 debugFile}{\f1  }}}{\f1\cf6  /debugFile}{\cs58\f1\cf6\super  }{\f1\cf6  }{\i\f1\cf6 filename}{\r
 \f1\cf6  }{\b0\f1\cf6 or}{\f1\cf6  }{\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{\f1\cf6 nameOfDebugFile}{\f1  }}#{\footnote\ftnalt \pard\plain \r
@@ -1362,21 +1470,31 @@ ten.
 \f1\cf11 engineDebugOutput}{\f1  }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf11 engineDebugOutput}{\f1  }}}{\f1\cf11  /engineDebugOutput}{\cs58\f1\cf11\super  }{\r
 \f1\cf11  }{\i\f1\cf11 number}{\f1\cf11 \r
 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf11 Specifies how WinBoard should handle unsollicited output from the engine, with respect to saing it in the debug file. The output is further (hopefully) ignored. If }{\r
-\i\f1\cf11 numbe}{\f1\cf11 r=0, WinBoard rfrains from writing such spurious output to the debug file. If}{\i\f1\cf11  numbe}{\f1\cf11 r=1, all engine output is written faithfully to the debug file. If }{\i\f1\cf11  numbe}{\f1\cf11 \r
-r=2, any protocol-violating line is prefixed with a \lquote #\rquote  character, as the engine itself should have done if it wanted to submit info for inclusion in the debug file.\r
-\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cf11 \r
-This option is provided for the benefit of applications that use the debug file as a source of informtion, such as the broadcater of live games TLCV / TLCS. Such applications can be protected from spurious engine output that might otherwise confuse them.\r
-\r
+\i\f1\cf11 numbe}{\f1\cf11 r=0, WinBoard rfrains from writing such spurious output to the debug file. If}{\i\f1\cf11  numbe}{\f1\cf11 r=1, all engine output is written faithfully to the debug file. If }{\i\f1\cf11  numbe}{\f1\cf11 r=\r
+2, any protocol-violating line is prefixed with a \lquote #\rquote  character, as the engine itself should have done if it wanted to submit info for inclusion in the debug file.\r
+\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cf11 This option is provided for the benefit of applications that use the debug file as a source \r
+of informtion, such as the broadcater of live games TLCV / TLCS. Such applications can be protected from spurious engine output that might otherwise confuse them.\r
 \par }{\r
 \par }\pard\plain \s1\li120\sb280\sa120\sl-320\slmult0\nowidctlpar\outlinelevel0\adjustright \b\f5\cgrid {\f1\fs20 \page }{\cs58\f1\fs20\super +{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super \r
 +}{\f1  main}}K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  User Interface Options}}${\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \r
 \f5\fs20\cgrid {\cs58\f1\super $}{\f1  User Interface Options}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  UserInterfaceOptions}}}{\b0\f1\fs18\up6  }{\f1\fs20 \r
 User Interface Options\r
+\par }\pard\plain \s2\li119\sb120\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf2\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\cf2\super K}{\f1\cf2  \r
+firstLogo}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\cf2\super #}{\f1\cf2  firstLogo}}}{\f1\cf2  /firstLogo }{\i\f1\cf2 filename}{\f1\cf2 \r
+\par }\pard \s2\li119\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright {\cs58\f1\cf2\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\cf2\super K}{\f1\cf2  secondLogo}}#\r
+{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\cf2\super #}{\f1\cf2  secondLogo}}}{\f1\cf2  /secondLogo }{\i\f1\cf2 filename}{\f1\cf2 \r
+\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf2 The appearence o\r
+f either of these options causes WinBoard to reserve space for displaying logos on both sides of the clocks. Normally the first logo goes left, the second right, unless the option \lquote swap clocks\rquote  is in effect. The }{\i\f1\cf2 filename}{\r
+\f1\cf2  must refer to a bitmap file (.bmp) containing a logo for the particular player (usually a 130x65 or 100x50 bitmap, which will be scaled to the height of two clock lines.)\r
+\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf2\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\cf2\super K}{\r
+\f1\cf2  autoLogo}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\cf2\super #}{\f1\cf2  autoLogo}}}{\f1\cf2  /autoLogo}{\i\f1\cf2  true|false}{\f1\cf2 \r
+\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf2 When true, causes WinBoard to automatically supply a logo for the first and second chess program, by looking for a fie named logo.bmp in the engine directory (spe\r
+cified by the /fd or /sd option), and then displays it ike this file was given as an argument to the /firstLog or /secondLogo option.\r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{\r
 \f1\cf6 hideThinkingFromHuman}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf6 hideThinkingFromHuman}}}{\f1\cf6  /hideThinkingFromHuman}{\i\f1\cf6  true|false}{\f1\cf6 \r
 \r
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 \r
-Prevents the engine thinking output to appear in the display, without necessitating to suppress the sending of this information altogether (so it can still appear in the PGN).\r
+\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 Preven\r
+ts the engine thinking output to appear in the display, without necessitating to suppress the sending of this information altogether (so it can still appear in the PGN).\r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  top}}#\r
 {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  top}}}{\f1  /top }{\b0\f1 or }{\f1 /xtop}{\b0\f1 , or}{\f1  }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \r
 \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  alwaysOnTop}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  alwaysOnTopOpt}}}{\f1 \r
@@ -1401,9 +1519,9 @@ Prevents the engine thinking output to appear in the display, without necessitat
 {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  flip}}}{\f1  /flip }{\b0\f1 or }{\f1 /xflip}{\b0\f1 , or}{\f1  }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \r
 \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  flipView}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  flipViewOption}}}{\f1 \r
  /flipView}{\i\f1  true|false}{\f1 \r
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If Auto Flip View is not set, or if you are observing but not participating in a \r
-game, then the positioning of the board at the start of each game depends on the flipView option.  If flipView is False (the default), the board is positioned so that the white pawns move from the bottom to the top; if True, the black pawns move from the \r
-bottom to the top. In any case, the }{\f1\uldb Flip View}{\v\f1 FlipView}{\f1  menu command can be used to flip the board after the game starts\r
+\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If Auto Flip View is not set, or if you are observing but not participating in a game, then the\r
+ positioning of the board at the start of each game depends on the flipView option.  If flipView is False (the default), the board is positioned so that the white pawns move from the bottom to the top; if True, the black pawns move from the bottom to the \r
+top. In any case, the }{\f1\uldb Flip View}{\v\f1 FlipView}{\f1  menu command can be used to flip the board after the game starts\r
 \par }\pard\plain \li115\sb120\sa60\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\b\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super K}{ autoflip}}#{\footnote\ftnalt \r
 \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super #}{ autoflip}}}{\b /autoflip}{ or }{\b /xautoflip}{, or }{\cs58\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \r
 \f5\fs20\cgrid {\cs58\super K}{ autoFlipView}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super #}{ autoFlipViewOption}}}{\b /autoFlipView }{\b\i true|false\r
@@ -1446,8 +1564,8 @@ bottom to the top. In any case, the }{\f1\uldb Flip View}{\v\f1 FlipView}{\f1  m
 {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  size }}}{\f1  /size }{\b0\f1 or}{\f1  }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\r
 \nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  boardSize }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  boardSize }}}{\f1  /boardSize }{\i\f1 sizename}{\f1 \r
 \r
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Sets the }{\f1\uldb Board Size}{\v\f1 BoardSizeCmd}{\f1  option. Also chooses which board size any following Font options will affect. The defa\r
-ult is the largest size that will fit on your screen.\r
+\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Sets the }{\f1\uldb Board Size}{\v\f1 BoardSizeCmd}{\f1 \r
+ option. Also chooses which board size any following Font options will affect. The default is the largest size that will fit on your screen.\r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super K}{ wpc}}#\r
 {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super #}{ wpc}}}{\f1 /wpc}{\b0\f1  or }{\cs58\b0\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \r
 \f5\fs20\cgrid {\cs58\f1\super K}{\f1  whitePieceColor}}}{\cs58\f1\super #{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  whitePieceColor}}}{\f1  /whitePieceColor }{\i\f1 color\r
@@ -1460,9 +1578,8 @@ ult is the largest size that will fit on your screen.
 \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super #}{ dsc}}}{\f1 /dsc }{\b0\f1 or}{\f1  }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\r
 \cs58\f1\super K}{\f1  darkSquareColor}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  darkSquareColor}}}{\f1  /darkSquareColor }{\i\f1 color}{\cs58\f1\super  }{\f1 \r
 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Color specifications for white pieces, black pieces, light squares, and dark squares. Colors can be specified only by red/green/blue intensity, either in hexadecimal (as }{\r
-\i\f1 #rrggbb}{\f1 ) or in decimal (as }{\i\f1 rrr,ggg,bbb}{\f1 ). In the latter format, you must enclose the st\r
-ring in quotation marks if you leave spaces after the commas. The defaults are respectively #FFFFCC, #202020, #C8C365, and #77A26D. Available on the }{\f1\uldb Board Colors}{\v\f1 BoardColors}{\f1  section of the }{\f1\uldb Board Options}{\v\f1 \r
-BoardOptions}{\f1  dialog.\r
+\i\f1 #rrggbb}{\f1 ) or in decimal (as }{\i\f1 rrr,ggg,bbb}{\f1 ). In the latter format, you must enclose the string in quotation marks if you leave spaces after the commas. The defaults are respective\r
+ly #FFFFCC, #202020, #C8C365, and #77A26D. Available on the }{\f1\uldb Board Colors}{\v\f1 BoardColors}{\f1  section of the }{\f1\uldb Board Options}{\v\f1 BoardOptions}{\f1  dialog.\r
 \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If you are using a }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  grayscale}\r
 }#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  grayscale}}}{\f1  grayscale monitor, try setting the colors to:\r
 \par }\pard\plain \s19\li520\sb60\sl-240\slmult0\keep\nowidctlpar\tx520\tx920\tx1320\tx1720\tx2120\adjustright \f6\fs16\cgrid {\f2\fs20 -whitePieceColor:#FFFFFF\line -blackPieceColor:#000000\line -lightSquareColor:#CCCCCC\line -darkSquareColor:#999999\r
@@ -1472,8 +1589,8 @@ BoardOptions}{\f1  dialog.
 \cs58\f1\super  }{\f1 \line }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super K}{ phc}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \r
 \f5\fs20\cgrid {\cs58\super #}{ phc}}}{\f1 /phc }{\b0\f1 or }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  premoveHighlightColor}}#{\footnote\ftnalt \r
 \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  premoveHighlightColor}}}{\f1  /premoveHighlightColor }{\i\f1 color}{\cs58\f1\super  }{\f1 \r
-\par }{\b0\f1 Color specifications for the }{\b0\f1\uldb Highlight Last Move}{\b0\v\f1 HighlightLastMove}{\b0\f1  and }{\b0\f1\uldb Premove}{\b0\v\f1 PremoveCmd}{\b0\f1  options, respectively. Colors can be sp\r
-ecified only by red/green/blue intensity, either in hexadecimal (as }{\b0\i\f1 #rrggbb}{\b0\f1 ) or in decimal (as }{\b0\i\f1 rrr,ggg,bbb}{\b0\f1 \r
+\par }{\b0\f1 Color specifications for the }{\b0\f1\uldb Highlight Last Move}{\b0\v\f1 HighlightLastMove}{\b0\f1  and }{\b0\f1\uldb Premove}{\b0\v\f1 PremoveCmd}{\b0\f1  options, respectively. Colors can be \r
+specified only by red/green/blue intensity, either in hexadecimal (as }{\b0\i\f1 #rrggbb}{\b0\f1 ) or in decimal (as }{\b0\i\f1 rrr,ggg,bbb}{\b0\f1 \r
 ). In the latter format, you must enclose the string in quotation marks if you leave spaces after the commas. The defaults are respectively #FFFF00 and #FF0000, respectively.\r
 \par }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  mono }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\r
 \cs58\f1\super #}{\f1  mono }}}{\f1  /mono}{\b0\f1  or }{\f1 /xmono}{\b0\f1 ,}{\f1  }{\b0\f1 or}{\f1  }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  monoMode}}#\r
@@ -1482,12 +1599,12 @@ ecified only by red/green/blue intensity, either in hexadecimal (as }{\b0\i\f1 #
 BoardColors}{\f1  section of the }{\f1\uldb Board Options}{\v\f1 BoardOptions}{\f1  dialog.\r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf11\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{\r
 \f1\cf11 flipBlack}{\f1  }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf11 flipBlack}{\f1  }}}{\f1\cf11  /flipBlack}{\i\f1\cf11  true|false}{\f1\cf11 \r
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf11 Determines whether WinBoard displays the black pieces upside down (or the white pieces in Flip View). Useful with Shogi with the traditional Jap\r
-anese pieces, which are not distinguished by color but by orientation.\r
+\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf11 \r
+Determines whether WinBoard displays the black pieces upside down (or the white pieces in Flip View). Useful with Shogi with the traditional Japanese pieces, which are not distinguished by color but by orientation.\r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf11\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{\r
 \f1\cf11 allWhite}{\f1  }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf11 allWhite}{\f1  }}}{\f1\cf11  /allWhite}{\i\f1\cf11  true|false}{\f1\cf11 \r
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf11 Determines whether the white piece bitmaps will be used to display black pieces. The white pieces have a dark outline, which the black pi\r
-eces lack. This makes the latter look vague if the color you give them is not very dark.\r
+\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf11 \r
+Determines whether the white piece bitmaps will be used to display black pieces. The white pieces have a dark outline, which the black pieces lack. This makes the latter look vague if the color you give them is not very dark.\r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{\r
 \f1\cf6 renderPiecesWithFont}{\f1  }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf6 renderPiecesWithFont}{\f1  }}}{\f1\cf6  /renderPiecesWithFont }{\i\f1\cf6 fontname}\r
 {\f1\cf6 \r
@@ -1515,21 +1632,21 @@ liteBackTextureFile}{\f1  }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-24
 \r
 \par }\pard \s2\li119\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{\f1\cf6 darkBackTextureFile}{\f1 \r
  }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf6 darkBackTextureFile}{\f1  }}}{\f1\cf6  /darkBackTextureFile }{\i\f1\cf6 filename}{\f1\cf6 \r
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 \r
-The filename indicates a bitmap file that should be used to display the light or dark squares, allowing you to make boards that look like wood, marble, etc. A filename starting with * is ignored.\r
+\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 The filename indicates a bitmap file that should be used to displ\r
+ay the light or dark squares, allowing you to make boards that look like wood, marble, etc. A filename starting with * is ignored.\r
 \par }\pard\plain \s2\li119\sb120\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{\f1\cf6 \r
 liteBackTextureMode}{\f1  }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf6 liteBackTextureMode}{\f1  }}}{\f1\cf6  /liteBackTextureMode }{\i\f1\cf6 number}{\f1\cf6 \r
 \r
 \par }\pard \s2\li119\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{\f1\cf6 darkBackTextureMode}{\f1 \r
  }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf6 darkBackTextureMode}{\f1  }}}{\f1\cf6  /darkBackTextureMode }{\i\f1\cf6 number}{\f1\cf6 \r
-\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cf6 The number indicates the way the files given in the background-texture options should be used to fill in the squares.}{\cf6\lang1043\cgrid0  Valid textu\r
-re modes are 1 (default) and 2. In mode 1 the squares are taken from portions of the texture bitmap and copied without further processing. In mode 2, squares can also be rotated, mirrored and so on in order to provide a little more variety to the texture.\r
- The operations are selected at random so the board will look slightly different every time the program is run.\line }{\cf6 \r
+\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cf6 The number indicates the way the files given in the background-texture options should be used to fill in the squares.}{\cf6\lang1043\cgrid0 \r
+ Valid texture modes are 1 (default) and 2. In mode 1 the squares are taken from portions of the texture bitmap and copied without further processing. In mode 2, squares can also be rotated, mirrored an\r
+d so on in order to provide a little more variety to the texture. The operations are selected at random so the board will look slightly different every time the program is run.\line }{\cf6 \r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{\r
 \f1\cf6 overideLineGap}{\f1  }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf6 overideLineGap}{\f1  }}}{\f1\cf6  /overideLineGap }{\i\f1\cf6 number}{\f1\cf6 \r
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 \r
-The number specifies the width, in pixels, of the grid lines used to separate the squares. If it is very small (like a single pixel), it becomes vey hard to see which squares are highlighted (to indicate the last move), as this highlighting is a color cha\r
-nge of these grid lines. Highlighting the moves with an arrow is then recommended.\r
+\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 The number specifies the width, in pixels, of the gr\r
+id lines used to separate the squares. If it is very small (like a single pixel), it becomes vey hard to see which squares are highlighted (to indicate the last move), as this highlighting is a color change of these grid lines. Highlighting the moves with\r
+ an arrow is then recommended.\r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{\r
 \f1\cf6 highlightMovesWithArrow}{\f1  }} #{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf6 highlightMovesWithArrow}{\f1  }}}{\f1\cf6  /highlightMovesWithArrow }{\r
 \i\f1\cf6 true|false}{\f1\cf6 \r
@@ -1561,8 +1678,8 @@ evalHistoColorWhite}{\f1  }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-24
 \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  colorNormal}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  colorNormal}}}{\f1 \r
  /colorNormal }{\i\f1 \ldblquote effects color\rdblquote \r
 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Select colors and effects to colorize messages in the ICS Interaction window. The effects may be any combination of }{\b\f1 b}{\f1 old, }{\b\f1 i}{\f1 talic, }{\b\f1 u}{\r
-\f1 nderline, and }{\b\f1 s}{\f1 trikeout. Colors are specified as for squares and pieces. Available on the }{\f1\uldb ICS Interaction Colors}{\v\f1 ICSInteractionColors}{\f1  section of the }{\f1\uldb ICS Options}{\v\f1 ICSOptions}{\f1 \r
- dialog. Limitation: On 256 color displays, Windows chooses the nearest solid color from the system palette, which will not always be close to the color you selected.\r
+\f1 nderline, and }{\b\f1 s}{\f1 trikeout. Colors are specified as for squares and pieces. Available on the }{\f1\uldb ICS Interaction Colors}{\v\f1 ICSInteractionColors}{\f1  section of the }{\f1\uldb ICS Options}{\v\f1 ICSOptions}{\f1  dialog. Li\r
+mitation: On 256 color displays, Windows chooses the nearest solid color from the system palette, which will not always be close to the color you selected.\r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 \r
  colorBackground}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  colorBackground}}}{\f1  /colorBackground }{\i\f1 color\r
 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Sets the background color for the ICS Interaction window. Available on the }{\f1\uldb ICS Interaction Colors}{\v\f1 ICSInteractionColors}{\f1  section of the }{\f1\uldb \r
@@ -1583,10 +1700,10 @@ ICSInteractionColors}{\f1  section of the }{\f1\uldb ICS Options}{\v\f1 ICSOptio
 \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  commentFont}}}{\f1  /commentFont \ldblquote }{\i\f1 fontname:size effects}{\f1 \rdblquote \line }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \r
 \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  icsFont}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  icsFont}}}{\f1  /icsFont \r
 \ldblquote }{\i\f1 fontname:size effects}{\f1 \rdblquote \r
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 The fonts used respectively for the clocks, the message display line, rank and file coordinate labels, the \r
-Edit Tags dialog, the Edit Comment dialog, and the ICS Interaction window. These options may be given more than once. Each occurrence affects the fonts for the current board size; that is, the size given in the last preceding /boardSize option, if any, or\r
- else the default size. The font size may contain a decimal point, and the effects may be any combination of }{\b\f1 b}{\f1 old, }{\b\f1 i}{\f1 talic, }{\b\f1 u}{\f1 nderline, and }{\b\f1 s}{\f1 trikeout. Example: }{\f2\fs16 /clockFont="Arial:20.0 bi".}{\r
-\f1  Available on the }{\f1\uldb Fonts}{\v\f1 Fonts}{\f1  menu.}{\f2\fs16 \r
+\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 The fonts used respectively for the clocks, the message display line, rank and file coordinate labels, the Edit Tags dialog, the Edit Comment dialog, and the ICS Interact\r
+ion window. These options may be given more than once. Each occurrence affects the fonts for the current board size; that is, the size given in the last preceding /boardSize option, if any, or else the default size. The font size may contain a decimal poi\r
+nt, and the effects may be any combination of }{\b\f1 b}{\f1 old, }{\b\f1 i}{\f1 talic, }{\b\f1 u}{\f1 nderline, and }{\b\f1 s}{\f1 trikeout. Example: }{\f2\fs16 /clockFont="Arial:20.0 bi".}{\f1  Available on the }{\f1\uldb Fonts}{\v\f1 Fonts}{\f1  menu.}\r
+{\f2\fs16 \r
 \par }\pard\plain \s2\li115\sb120\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  soundShout}}#\r
 {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  soundShout}}}{ /soundShout}{\i  sound\line }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\r
 \nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  soundSShout}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  soundSShout}}}{ /soundSShout }{\i sound\line }{\r
@@ -1627,8 +1744,8 @@ The name of a }{\f2 .wav}{\f1  file. The filename is interpreted relative to Win
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  icsMenu}}#\r
 {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  icsMenu}}}{\f1 /icsMenu=\{}{\i\f1 entries}{\f1 \} }{\b0\f1 or }{\f1 /icsMenu=@}{\i\f1 filename\r
 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 This option lets you customize the right-button }{\f1\uldb context menu}{\v\f1 ICSInteractionContextMenu}{\f1 \r
- that is available in the upper (output) pane of the ICS Interaction window. It consists of a list of menu ent\r
-ries, one per line. If the option value starts with an @ sign, it is the name of a file that contains the entries. Each entry contains either four fields separated by commas or the single character }{\f2 "-"}{\f1 . The fields are:\r
+ that is available in the upper (output) pane of the ICS Interaction window. It consists of a list of menu entries, one per line. If the option value starts with an @ sign, it is th\r
+e name of a file that contains the entries. Each entry contains either four fields separated by commas or the single character }{\f2 "-"}{\f1 . The fields are:\r
 \par {\pntext\pard\plain\f5\fs20\lang1033\cgrid \hich\af5\dbch\af0\loch\f5 1.\tab}}\pard\plain \fi-360\li480\sb80\sl-240\slmult0\nowidctlpar\jclisttab\tx480{\*\pn \pnlvlbody\ilvl0\ls14\pnrnot0\pndec\pnstart1\pnindent360\pnhang{\pntxta .}}\ls14\adjustright \r
 \f5\fs20\cgrid {The menu text. If this field begins with }{\f2 "|"}{, the item begins a new column in the menu and the }{\f2 "|"}{ is not shown. If this field contains an }{\f2 "&"}{\r
 , the character after the ampersand is underlined in the menu and acts as a keyboard shortcut for the item when the menu is displayed. Do not assign the same shortcut key to two different menu items.\r
@@ -1641,22 +1758,23 @@ A flag (1 or 0) saying whether the result should be sent immediately to ICS or l
 \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {The entry }{\f2 "-"}{ produces a separator line in the menu. The top three menu entries are always }{\b Copy and Paste}{, }{\b Copy}{, and }{\b Paste}{\r
 , but you have full control over the rest of the menu.\r
 \par }{\f1 The default menu is:\r
-\par }\pard\plain \s19\li520\sb60\sl-240\slmult0\keep\nowidctlpar\tx520\tx920\tx1320\tx1720\tx2120\adjustright \f6\fs16\cgrid {\f2\fs20 \endash \line &Who,who,0,1\line Playe&rs,players,0,1\line &Games,games,0,1\line &Sought,sought,0,1\line |&\r
-Tell (name),tell,1,0\line M&essage (name),message,1,0\line \endash \line &Finger (name),finger,1,1\line &Vars (name),vars,1,1\line &Observe (name),observe,1,1\line &Match (name),match,1,1\line Pl&ay (name),play,1,1\r
+\par }\pard\plain \s19\li520\sb60\sl-240\slmult0\keep\nowidctlpar\tx520\tx920\tx1320\tx1720\tx2120\adjustright \f6\fs16\cgrid {\f2\fs20 \endash \line &Who,who,0,1\line Playe&rs,players,0,1\line &Games,games,0,1\line &Sought,sought,0,1\line \r
+|&Tell (name),tell,1,0\line M&essage (name),message,1,0\line \endash \line &Finger (name),finger,1,1\line &Vars (name),vars,1,1\line &Observe (name),observe,1,1\line &Match (name),match,1,1\line Pl&ay (name),play,1,1\r
 \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 There is no graphical user interface to set this option. To change it, edit your }{\f1\uldb settings}{\v\f1 settings}{\f1  file with a plain text editor such as Notepad.\r
 \r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  icsNames}}\r
 #{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  icsNames}}}{\f1 /icsNames=\{}{\i\f1 names}{\f1 \} }{\b0\f1 or }{\f1 /icsNames=@}{\i\f1 filename\r
-\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 This option lets you customize the drop-down list of ICS names that appears in the WinBoard startup dialog. It consists of a li\r
-st of strings, one per line. If the option value starts with an @ sign, it is the name of a file that contains the strings. When you select a string from the drop-down list, WinBoard prepends the text \rdblquote /ics /icsHost=\rdblquote \r
+\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 \r
+This option lets you customize the drop-down list of ICS names that appears in the WinBoard startup dialog. It consists of a list of strings, one per line. If the option value starts with an @ sign, it is the name of a file that contains \r
+the strings. When you select a string from the drop-down list, WinBoard prepends the text \rdblquote /ics /icsHost=\rdblquote \r
  and adds the result to the command-line options. There is no graphical user interface to set this option. To change it, edit your }{\f1\uldb settings}{\v\f1 settings}{\f1  file with a plain text editor such as Notepad.\r
 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 \r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 \r
  firstChessProgramNames}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  firstChessProgramNames}}}{\f1 /firstChessProgramNames=\{}{\i\f1 names}{\f1 \} }{\b0\f1 or }{\f1 \r
 /firstChessProgramNames="@}{\i\f1 filename}{\f1 "\r
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 This option lets you customize the first drop-down list of chess engine na\r
-mes that appears in the WinBoard startup dialog. It consists of a list of strings, one per line. If the option value starts with an @ sign, it is the name of a file that contains the strings. When you select a string from the drop-down list, WinBoard prep\r
-ends the text \rdblquote /cp /firstChessProgram=\rdblquote  and adds the result to the command-line options. \r
+\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 This option lets you customize the first drop-down list of chess engine names that appears in the WinBoard startup dialog. It consists of\r
+ a list of strings, one per line. If the option value starts with an @ sign, it is the name of a file that contains the strings. When you select a string from the drop-down list, WinBoard prepends the text \rdblquote /cp /firstChessProgram=\rdblquote \r
+ and adds the result to the command-line options. \r
 \par \r
 \par There is no graphical user interface to set this option. To change it, edit your }{\f1\uldb settings}{\v\f1 settings}{\f1  file with a plain text editor such as Notepad. Example:\r
 \par }\pard\plain \s19\li520\sb60\sl-240\slmult0\keep\nowidctlpar\tx520\tx920\tx1320\tx1720\tx2120\adjustright \f6\fs16\cgrid {\f2 /firstChessProgramNames=\{GNUChess\line WCrafty-15_11 /fd="C:\\Program Files\\Crafty"\line ArasanX /fd="C:\\Program Files\\Arasan\r
@@ -1664,9 +1782,9 @@ ends the text \rdblquote /cp /firstChessProgram=\rdblquote  and adds the result
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 \r
  secondChessProgramNames}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  secondChessProgramNames}}}{\f1 /secondChessProgramNames=\{}{\i\f1 names}{\f1 \}}{\b0\f1  or }{\f1 \r
 /secondChessProgramNames="@}{\i\f1 filename}{\f1 "}{\i\f1 \r
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 \r
-This option lets you customize the second drop-down list of chess engine names that appears in the WinBoard startup dialog. It consists of a list of strings, one per line. If the option value starts with an @ sign, it \r
-is the name of a file that contains the strings. When you select a string from the drop-down list, WinBoard prepends the text \rdblquote /cp /secondChessProgram=\rdblquote  and adds the result to the command-line options.\r
+\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 This option lets you customize the second drop-down list of chess engine name\r
+s that appears in the WinBoard startup dialog. It consists of a list of strings, one per line. If the option value starts with an @ sign, it is the name of a file that contains the strings. When you select a string from the drop-down list, WinBoard prepen\r
+ds the text \rdblquote /cp /secondChessProgram=\rdblquote  and adds the result to the command-line options.\r
 \par \r
 \par There is no graphical user interface to set this option. To change it, edit your }{\f1\uldb settings}{\v\f1 settings}{\f1  file with a plain text editor such as Notepad. Example:\r
 \par }\pard\plain \s19\li520\sb60\sl-240\slmult0\keep\nowidctlpar\tx520\tx920\tx1320\tx1720\tx2120\adjustright \f6\fs16\cgrid {/secondChessProgramNames=\{GNUChess\line WCrafty-15_11 /sd="C:\\\\Program Files\\\\Crafty\\"\line ArasanX /sd="C:\\Program Files\\\r
@@ -1677,44 +1795,44 @@ Arasan\\Arasan 4.1"\line "EXchess xb" /sd=C:\\EXchess\line Comet-WB /sd=C:\\Come
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 \r
  xywh coordinates of Analysis window}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  xywh}}}{\f1 /analysisX=}{\i\f1 xcoord  }{\f1 /analysisY=}{\i\f1 ycoord}{\f1   /analysisW=}{\r
 \i\f1 width}{\f1   /analysisH=}{\i\f1 height\r
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Sets the initial location and size\r
- of the Analysis window, giving the screen coordinates of the upper left-hand corner, the width, and the height. All four arguments must be given together.\r
+\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Sets the initial location and size of the Analysis window, giving the screen coordinates of the u\r
+pper left-hand corner, the width, and the height. All four arguments must be given together.\r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 \r
  xywh coordinates of Comment window}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  xywh}}}{\f1 /commentX=}{\i\f1 xcoord  }{\f1 /commentY=}{\i\f1 ycoord}{\f1   /commentW=}{\r
 \i\f1 width}{\f1   /commentH=}{\i\f1 height\r
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 \r
-Sets the initial location and size of the Comment window, giving the screen coordinates of the upper left-hand corner, the width, and the height. All four arguments must be given together.\r
+\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Sets the initial location and size of the Comment window, giving the screen coordinates of \r
+the upper left-hand corner, the width, and the height. All four arguments must be given together.\r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 \r
  xywh coordinates of Game List window}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  xywh}}}{\f1 /gameListX=}{\i\f1 xcoord  }{\f1 /gameListY=}{\i\f1 ycoord}{\f1   /gameListW=}{\r
 \i\f1 width}{\f1   /gameListH=}{\i\f1 height\r
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 \r
-Sets the initial location and size of the Game List window, giving the screen coordinates of the upper left-hand corner, the width, and the height. All four arguments must be given together.\r
+\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Sets the initial location and size of the Game List window, giving the screen coor\r
+dinates of the upper left-hand corner, the width, and the height. All four arguments must be given together.\r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 \r
  xywh coordinates of ICS Interaction window}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  xywh}}}{\f1 /icsX=}{\i\f1 xcoord  }{\f1 /icsY=}{\i\f1 ycoord}{\f1   /icsW=}{\i\f1 \r
 width}{\f1   /icsH=}{\i\f1 height\r
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Sets the initial location an\r
-d size of the ICS Interaction window, giving the screen coordinates of the upper left-hand corner, the width, and the height. All four arguments must be given together.\r
-\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 \r
- xywh coordinates of Tags window}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  xywh}}}{\f1 /tagsX=}{\i\f1 xcoord  }{\f1 /tagsY=}{\i\f1 ycoord}{\f1   /tagsW=}{\i\f1 width}{\f1 \r
+\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Sets the initial location and size of the ICS Interaction window, giving the screen coordin\r
+ates of the upper left-hand corner, the width, and the height. All four arguments must be given together.\r
+\par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  xy\r
+wh coordinates of Tags window}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  xywh}}}{\f1 /tagsX=}{\i\f1 xcoord  }{\f1 /tagsY=}{\i\f1 ycoord}{\f1   /tagsW=}{\i\f1 width}{\f1 \r
   /tagsH=}{\i\f1 height\r
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 \r
-Sets the initial location and size of the Tags window, giving the screen coordinates of the upper left-hand corner, the width, and the height. All four arguments must be given together.\r
+\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Sets the initial location and size of the Tags window, giving the screen coordinates of th\r
+e upper left-hand corner, the width, and the height. All four arguments must be given together.\r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 \r
  xywh coordinates of Move History window}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  xywh}}}{\f1\cf6 /moveHistoryX=}{\i\f1\cf6 xcoord  }{\f1\cf6 moveHistoryY=}{\i\f1\cf6 \r
 ycoord}{\f1\cf6   /moveHistoryW=}{\i\f1\cf6 width}{\f1\cf6   /moveHistoryH=}{\i\f1\cf6 height\r
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 \r
-Sets the initial location and size of the move-history window, giving the screen coordinates of the upper left-hand corner, the width, and the height. All four arguments must be given together.\r
+\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 Sets the initial location and size of the move-history window, giving the\r
+ screen coordinates of the upper left-hand corner, the width, and the height. All four arguments must be given together.\r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 \r
  xywh coordinates of Evaluation Graph window}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  xywh}}}{\f1\cf6 /evalGraphX=}{\i\f1\cf6 xcoord  }{\f1\cf6 /evalGraphY=}{\i\f1\cf6 \r
 ycoord}{\f1\cf6   /evalGraphW=}{\i\f1\cf6 width}{\f1\cf6   /evalGraphH=}{\i\f1\cf6 height\r
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 \r
-Sets the initial location and size of the evaluation-graph window, giving the screen coordinates of the upper left-hand corner, the width, and the height. All four arguments must be given together.\r
+\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 Sets the initial location and size of the evaluation-gr\r
+aph window, giving the screen coordinates of the upper left-hand corner, the width, and the height. All four arguments must be given together.\r
 \par }\pard\plain \s2\li119\sb120\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 \r
  xywh coordinates of Engine Output window}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  xywh}}}{\f1\cf6 /engineOutputX=}{\i\f1\cf6 xcoord  }{\f1\cf6 /engineOutputY=}{\r
 \i\f1\cf6 ycoord}{\f1\cf6   \r
 \par }\pard \s2\li119\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright {\f1\cf6   /engineOutputW=}{\i\f1\cf6 width}{\f1\cf6   /engineOutputH=}{\i\f1\cf6 height\r
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 \r
-Sets the initial location and size of the engine-output window, giving the screen coordinates of the upper left-hand corner, the width, and the height. All four arguments must be given together.\r
+\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 Sets the initial l\r
+ocation and size of the engine-output window, giving the screen coordinates of the upper left-hand corner, the width, and the height. All four arguments must be given together.\r
 \par }\pard\plain \s2\li119\sb120\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{\f1\cf6 \r
 engineOutputUp}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf6 Window Up}}}{\f1\cf6 /engineOutputUp }{\i\f1\cf6 true|false \r
 \par }\pard \s2\li119\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{\f1\cf6 evalGraphUp}}#\r
@@ -1729,8 +1847,8 @@ engineOutputUp}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\no
 autoDisplayComments}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf6 autoDisplayComments}}}{\f1\cf6 /autoDisplayComments }{\i\f1\cf6 true|false\r
 \par }\pard \s2\li119\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{\f1\cf6 autoDisplayTags}}#\r
 {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf6 autoDisplayTags}}}{\f1\cf6 /autoDisplayTags }{\i\f1\cf6 true|false\r
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 \r
-If set to True, these options cause the window with the move comments, and the window with PGN tags, respectively, to pop up automatically when such tags or comments are encountered during the replaying a stored or loaded game.\r
+\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 If set to True, these options cause \r
+the window with the move comments, and the window with PGN tags, respectively, to pop up automatically when such tags or comments are encountered during the replaying a stored or loaded game.\r
 \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\r
 \par }\pard\plain \s1\li120\sb280\sa120\sl-320\slmult0\nowidctlpar\outlinelevel0\adjustright \b\f5\cgrid {\f1\fs20 \page }{\cs58\f1\fs20\cf6\super +{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\r
 \cs58\f1\super +}{\f1  main}}K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{\f1\cf6 Adjudication Options}}${\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\r
@@ -1739,9 +1857,9 @@ If set to True, these options cause the window with the move comments, and the w
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{\r
 \f1\cf6 adjudicateLossThreshold}{\f1  }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf6 adjudicateLossThreshold}{\f1  }}}{\f1\cf6  /adjudicateLossThreshold }{\i\f1\cf6 \r
 scorethreshold}{\f1\cf6 \r
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 If the \r
-given value is non-zero, WinBoard adjudicates the game as a loss if both engines agree for a duration of 6 consecutive ply that the score is below the given score threshold for that engine. Make sure the score is interpreted properly by WinBoard, using /f\r
-irstScoreAbs and /secondScoreAbs if needed.}{\cf6 \r
+\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 \r
+If the given value is non-zero, WinBoard adjudicates the game as a loss if both engines agree for a duration of 6 consecutive ply that the score is below the given score threshold for that engine. Make sure the score is interpreted properly by WinBo\r
+ard, using /firstScoreAbs and /secondScoreAbs if needed.}{\cf6 \r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{\r
 \f1\cf6 adjudicateDrawMoves}{\f1  }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf6 adjudicateDrawMoves}{\f1  }}}{\f1\cf6  /adjudicateDrawMoves }{\i\f1\cf6 number}{\r
 \f1\cf6 \r
@@ -1752,20 +1870,18 @@ irstScoreAbs and /secondScoreAbs if needed.}{\cf6
 {\r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf11\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{\r
 \f1\cf11 testClaims}{\f1  }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf11 testClaims}{\f1  }}}{\f1\cf11  /testClaims}{\i\f1\cf11  true|false}{\f1\cf11 \r
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf11 \r
-If this option is True, WinBoard verifies all result claims made by engines, and those who send false claims will forfeit the game because of it. Legality-testing must be on for this option to work.}{\cf11 \r
+\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf11 If this option is True, WinBoard verifies all result claims made by engines\r
+, and those who send false claims will forfeit the game because of it. Legality-testing must be on for this option to work.}{\cf11 \r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf11\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{\r
 \f1\cf11 materialDraws}{\f1  }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf11 materialDraws}{\f1  }}}{\f1\cf11  /materialDraws}{\i\f1\cf11  true|false}{\f1\cf11 \r
 \r
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf11 \r
-If this option is True, WinBoard adjudicates games as draws when there is no sufficient material left to create a checkmate. This applies to KBKB with like bishops, and to KBK, KNK and KK. Legality-testing must be on for this option to work.}{\cf11 \r
-\r
+\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf11 If this option is True, WinBoard adjudicates games as draws when there is no sufficient material left t\r
+o create a checkmate. This applies to KBKB with like bishops, and to KBK, KNK and KK. Legality-testing must be on for this option to work.}{\cf11 \r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf11\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{\r
 \f1\cf11 trivialDraws}{\f1  }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf11 trivialDraws}{\f1  }}}{\f1\cf11  /trivialDraws}{\i\f1\cf11  true|false}{\f1\cf11 \r
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf11 \r
-If this option is True, WinBoard adjudicates games as draws that cannot be usualy won without opponent assistance. This applies to KBKB with unlike bishops, and to KBKN, KNKN, KNNK, KRKR an\r
-d KQKQ. The draw is called after 6 ply into these end-games, to allow quick mates that can occur in some positions. KQKQ does not really belong in this category, and might be taken out in the future. (When bitbase-based adjudications are implemented.) Leg\r
-ality-testing must be on for this option to work.}{\cf11 \r
+\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf11 If this option is True, WinBoard adjudicates games as draws that cannot be usualy won wit\r
+hout opponent assistance. This applies to KBKB with unlike bishops, and to KBKN, KNKN, KNNK, KRKR and KQKQ. The draw is called after 6 ply into these end-games, to allow quick mates that can occur in some positions. KQKQ does not really belong in this cat\r
+egory, and might be taken out in the future. (When bitbase-based adjudications are implemented.) Legality-testing must be on for this option to work.}{\cf11 \r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf11\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{\r
 \f1\cf11 ruleMoves}{\f1  }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf11 ruleMoves}{\f1  }}}{\f1\cf11  /ruleMoves }{\i\f1\cf11 number}{\f1\cf11 \r
 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf11 If the given value is non-zero, WinBoard adjudicates the game as a draw after the given }{\i\f1\cf11 number}{\f1\cf11 \r
@@ -1789,12 +1905,12 @@ If this option is True, WinBoard acts as a passive chessboard; it does not start
 \nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  initialMode}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  initialMode}}}{\f1  /initialMode }{\i\f1 modename\r
 \r
 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If this option is given, WinBoard selects the given }{\i\f1 modename}{\f1  from the }{\f1\uldb Mode menu}{\v\f1 ModeMenu }{\f1 \r
-after starting and (if applicable) processing the }{\f1\uldb loadGameFile}{\v\f1 loadGameFile }{\f1 or }{\f1\uldb loadPositionFile}{\v\f1 loadPositionFile }{\f1 option. Default: "". Other supported values are TwoMachin\r
-es, AnalyzeFile, Analysis, MachineWhite, MachineBlack, EditGame, EditPosition, and Training.\r
+after starting and (if applicable) processing the }{\f1\uldb loadGameFile}{\v\f1 loadGameFile }{\f1 or }{\f1\uldb loadPositionFile}{\v\f1 loadPositionFile }{\f1 option. Default: "". \r
+Other supported values are TwoMachines, AnalyzeFile, Analysis, MachineWhite, MachineBlack, EditGame, EditPosition, and Training.\r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{\r
 \f1\cf11 variant}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  variant}}}{\f1  /variant}{\b0\f1  }{\i\f1  varname}{\f1 \r
-\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {Activates preliminary, partial support for playing chess variants against a local engine or editing variant games. This fl\r
-ag is not needed in ICS mode. Recognized variant names are:\r
+\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {Activates preliminary, partial support for playing chess variants against a local engine or editing varian\r
+t games. This flag is not needed in ICS mode. Recognized variant names are:\r
 \par }\pard\plain \s20\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {normal\tab \tab Normal chess\line wildcastle\tab Shuffle chess, king can castle from d file\line nocastle\tab Shuffle chess, no castling allowed\line fischerandom\tab \r
 Fischer Random shuffle chess\line bughouse\tab Bughouse, ICC/FICS rules\line crazyhouse\tab Crazyhouse, ICC/FICS rules\line losers  \tab Lose all pieces or get mated (ICC wild 17)\line suicide\tab Lose all pieces including king (FICS)\line giveaway\tab \r
 Try to have no legal moves (ICC wild 26)\line twokings\tab Weird ICC wild 9\line kriegspiel\tab Opponent's pieces are invisible\line atomic   \tab Capturing piece explodes (ICC wild 27)\line 3check\tab Win by giving check 3 times (ICC wild 25)\r
@@ -1804,19 +1920,19 @@ A game with two Archbishops (10x8 board)\line shatranj\tab Ancient Arabic Chess,
 A patented Chess variant with two Falcon pieces (10x8) board \line berolina\tab Pawns capture straight ahead, and move diagonal (legality testing off!)\line cylinder\tab Pieces wrap around the board, as if it were a cylinder (legality testing off!) \line \r
 fairy\tab \tab A variant in which all pieces known to WinBoard can participate\line knightmate\tab King moves a Knight, and vice versa\r
 \par In the shuffle variants, WinBoard does now shuffle the pieces, although you can still do it by hand using Edit Position. }{\cf0 Some variants are supported only in ICS mode, including bughouse, and kriegspiel.}{ }{\cf0 \r
-The winning/drawing conditions in crazyhouse (offboard interposition on mate), losers, suicide, giveaway, atomic, and 3check are not fully understood. In crazyhouse,}{ WinBoard now does keep track of offboard pieces.I\r
-n shatranj it does implement the baring rule when mate detection is switched on.\r
+The winning/drawing conditions in crazyhouse (offboard interposition on mate), losers, suicide, giveaway, atomic, and 3check are not fully understood. In crazyhouse,}{\r
+ WinBoard now does keep track of offboard pieces.In shatranj it does implement the baring rule when mate detection is switched on.\r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf11\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{\r
 \f1\cf11 boardHeight}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf11 boardHeight}}}{\f1\cf11  /boardHeight }{\i\f1\cf11 height}{\f1\cf11 \r
 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf11 Allows you to set a non-standard number of board ranks in any variant. If the height is given as \lquote -1\rquote , the default height for the variant is used.\r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf11\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{\r
 \f1\cf11 boardWidth}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf11 boardWidth}}}{\f1\cf11  /boardWidth }{\i\f1\cf11 width}{\f1\cf11 \r
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf11 Allows you to set a non-standard number of board files in any variant. If the width is given as \lquote -1\rquote , the default width for the variant is used. Widt\r
-h a non-standard width, the initial position will always be an empty board, as the usual opening array will not fit.\r
+\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf11 Allows you to set a non-standard number of board files in any variant. If the width is given as \lquote -1\rquote , the default width for the variant \r
+is used. Width a non-standard width, the initial position will always be an empty board, as the usual opening array will not fit.\r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf11\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{\r
 \f1\cf11 holdingsSize}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf11 holdingsSize}}}{\f1\cf11  /holdingsSize }{\i\f1\cf11 size}{\f1\cf11 \r
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf11 Allows you to set a non-standard size for the holdings in any variant. If the size is given as \lquote -1\rquote \r
-, the default holdings size for the variant is used. The first }{\i\f1\cf11 size}{\f1\cf11  piece types will go into the holdings on capture, and you will be able to drop them on the board in stead of making a normal move. If }{\i\f1\cf11 size}{\f1\cf11 \r
+\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf11 Allows you to set a non-standard size for the holdings in any variant. If the size is given as \lquote -1\rquote , the\r
+ default holdings size for the variant is used. The first }{\i\f1\cf11 size}{\f1\cf11  piece types will go into the holdings on capture, and you will be able to drop them on the board in stead of making a normal move. If }{\i\f1\cf11 size}{\f1\cf11 \r
  equals 0, there will be no holdings.\r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{\r
 \f1\cf6 defaultFrcPosition}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf6 defaultFrcPosition}}}{\f1\cf6  /defaultFrcPosition }{\i\f1\cf6 number}{\f1\cf6 \r
@@ -1824,14 +1940,15 @@ h a non-standard width, the initial position will always be an empty board, as t
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf11\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  }{\r
 \f1\cf11 pieceToSquareTable}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  }{\f1\cf11 pieceToSquareTable}}}{\f1\cf11  /pieceToSquareTable }{\i\f1\cf11 characterstring}{\r
 \f1\cf11 \r
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf11 \r
-The characters that are used to represent the piece types WinBoard knows in FEN diagrams and SAN moves. The string argument has to have an even length (or it will be ignored), as white and black pieces have to be give\r
-n separately (in that order). The last letter for each color will be the King. The letters before that will be PNBRQ and then a whole host of fairy pieces in an order that has not fully crystallized yet (currently FEACWMOHIJGDVSLU, F=Ferz, Elephant, A=Arc\r
-h\r
-bishop, C=Chancellor, W=Wazir, M=Commoner, O=Cannon, H=Nightrider). You should list at least all pieces that occur in the variant you are playing. If you have less than 44 characters in the string, the pieces not mentioned will get assigned a period, and \r
-you will not be able to distinguish them in FENs. You can also explicitly assign pieces a period, in which case they will not be counted in deciding which captured pieces can go into the holdings.\r
-\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cf11 A tilde as a piece name does mean this piece is used to repr\r
-esent a promoted Pawn in Crazyhouse-like games, i.e. on capture it turns back onto a Pawn. A + similarly indicate the piece is a Shogi-style promoted piece, that should revert to its non-promoted version on capture (rather than to a Pawn).\r
+\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf11 The characters that are used to represent the piece types WinB\r
+oard knows in FEN diagrams and SAN moves. The string argument has to have an even length (or it will be ignored), as white and black pieces have to be given separately (in that order). The last letter for each color will be the King. The letters before th\r
+a\r
+t will be PNBRQ and then a whole host of fairy pieces in an order that has not fully crystallized yet (currently FEACWMOHIJGDVSLU, F=Ferz, Elephant, A=Archbishop, C=Chancellor, W=Wazir, M=Commoner, O=Cannon, H=Nightrider). You should list at least all pie\r
+c\r
+es that occur in the variant you are playing. If you have less than 44 characters in the string, the pieces not mentioned will get assigned a period, and you will not be able to distinguish them in FENs. You can also explicitly assign pieces a period, in \r
+which case they will not be counted in deciding which captured pieces can go into the holdings.\r
+\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cf11 A tilde as a piece name does mean this piece is used to represent a promoted Pawn in Crazyhouse-like games, i.e. on capture it turns back onto a Pawn. A + simila\r
+rly indicate the piece is a Shogi-style promoted piece, that should revert to its non-promoted version on capture (rather than to a Pawn).\r
 \par Note that promoted pieces are represented by pieces 11 further in the list.\r
 \par You should not have to use this option often: each variant has its own default setting for the piece representation in FEN, which should be sufficient in normal use.\r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  rsh }}#\r
@@ -1867,18 +1984,18 @@ K}{\f1  Initialization files}}K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  Settings }\r
 }}{\f1\fs18\up6  }{\cs58\f1\super #{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  Settings }}}{\f1  Settings\r
 \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {When WinBoard starts up, it reads option settings from a file named }{\i WinBoard.ini }{\r
-in its installation directory (the directory containing WinBoard.exe). Options in this file have the same format as }{\uldb command line options}{\v Options}{, except that they do not all ha\r
-ve to be on a single line. You can put a comment in a settings file by preceding it with a semicolon (}{\f2 ;}{).\r
+in its installation directory (the directory containing WinBoard.exe). Options in this file have the same format as }{\uldb command line options}{\v Options}{, except t\r
+hat they do not all have to be on a single line. You can put a comment in a settings file by preceding it with a semicolon (}{\f2 ;}{).\r
 \par The WinBoard.ini file is read before the command line is processed, so any options you give on the command line override options in the file.\r
 \par }{\f1 If WinBoard encounters a /}{\f1\uldb settingsFile}{\v\f1 settingsFile}{\f1  }{\i\f1 filename }{\f1 or }{\f1\uldb @}{\v\f1 atsign}{\i\f1 filename }{\f1 \r
 option while reading settings (whether from the command line or a file), it reads more settings from the given file before reading the next option.\r
 \par The }{\f1\uldb Save Settings Now}{\v\f1 SaveSettings}{\f1  menu command writes the current values of most options to a file. In addition, settings are saved automatically when WinBoard exits if }{\f1\uldb Save Settings on Exit}{\v\f1 SaveSettingsOnExit}{\r
 \f1  is checked. The settings are written to the last file named in a /settingsFile command, if any; otherwise to WinBoard.ini}{\i\f1 .}{\f1  The @ option does not affect which file settings are saved to.\r
-\par Warning: Because Save Settings overwrites the last settings file (usually WinBoard.ini) and only saves a subset of WinBoard's options, you should not add \r
-settings of more options to such a file with a text editor. If you do this, your additional options will be lost on the next Save Settings. You can change the values of existing settings freely, using Notepad or any plain text editor. Be careful not to do\r
- this while WinBoard is running, however, unless you know that Save Settings on Exit is off. Otherwise all your changes will be overwritten and lost when WinBoard exits.\r
-\par }\pard\plain \s66\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cf11\cgrid {\f1 Notice that tournament managers, like PSWBTM, usually call WinBoard with the option not\r
- to save settings on exit, so that the entire tournament uses the same settings. So it does make sense to edit \lquote volatile\rquote  options, such as /variant, into the settings file.\r
+\par Warning: Because Save Settings overwrites the last settings file (usually WinBoard.ini) and only saves a subset of WinBoard's option\r
+s, you should not add settings of more options to such a file with a text editor. If you do this, your additional options will be lost on the next Save Settings. You can change the values of existing settings freely, using Notepad or any plain text editor\r
+. Be careful not to do this while WinBoard is running, however, unless you know that Save Settings on Exit is off. Otherwise all your changes will be overwritten and lost when WinBoard exits.\r
+\par }\pard\plain \s66\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cf11\cgrid {\f1 Notice that tournament managers, like PSWBTM, usually call WinBoa\r
+rd with the option not to save settings on exit, so that the entire tournament uses the same settings. So it does make sense to edit \lquote volatile\rquote  options, such as /variant, into the settings file.\r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1  ICS Logon}\r
 }#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  ICSLogon}}}{\f1  ICS Logon\r
 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Whenever WinBoard connects to the Internet Chess Server, if it finds a file called }{\i\f1 ICS.ini }{\f1 in its installation directory}{\i\f1 ,}{\f1 \r
@@ -1889,86 +2006,87 @@ K}{\f1  Installing Chess Engines}}${\footnote\ftnalt \pard\plain \s57\li120\sb80
 \nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  InstallingChessEngines}}+{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super +}{\f1  main}}}{\f1\fs20  INSTALLING CHESS ENGINES\r
 \r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\f1 Introduction\r
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 WinBoard is capable of operating with many differe\r
-nt chess engines. You can play chess against a compatible engine, set up matches between two engines, or (advanced users only) run an automated computer player on an ICS.\r
-\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Typically, the main difficulty in installing a new chess engine for use by WinBoard c\r
-omes in getting the engine itself running and setting its options appropriately. The connection to WinBoard is relatively straightforward.\r
-\par WinBoard-compatible chess engines are Win32 command line programs that you can run by hand in an MS-DOS Prompt box an\r
-d type human-readable commands to. WinBoard connects to an engine simply by starting the engine up in the background and communicating with it through a pair of pipes. Therefore the basic procedure for installing an engine is:\r
-\par }\pard\plain \s20\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 1. Get a copy of the engine and any supporting files it needs.\r
+\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 WinBoard is capable of operating with many different chess engines. You can play chess against a compatible engine, set up matches between two engines, or \r
+(advanced users only) run an automated computer player on an ICS.\r
 \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 \r
-2. Install and configure the engine as a command-line program by following the instructions that come with it. Try it out by running it from the command line in an MS-DOS Prompt box and make sure it works.\r
+Typically, the main difficulty in installing a new chess engine for use by WinBoard comes in getting the engine itself running and setting its options appropriately. The connection to WinBoard is relatively straightforward.\r
+\par WinBoard-compatible chess engines are Win32 command line programs that you can run by hand in an MS-DOS Prompt box and type human-readable commands to. WinBoard connects to an engine simply by starting the engine up in the\r
+ background and communicating with it through a pair of pipes. Therefore the basic procedure for installing an engine is:\r
+\par }\pard\plain \s20\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 1. Get a copy of the engine and any supporting files it needs.\r
+\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 2. Install and configure the engine as a command-line program by follow\r
+ing the instructions that come with it. Try it out by running it from the command line in an MS-DOS Prompt box and make sure it works.\r
 \par 3. Optional, but recommended: Try out the WinBoard plus engine combination by running WinBoard with the proper command line arguments in an MS-DOS Prompt box.\r
 \par 4. Create a shortcut on your desktop or Start menu to run the engine with WinBoard.\r
 \par 5. Optionally edit your WinBoard.ini file to add the engine to the drop-down lists on WinBoard's startup dialog.\r
 \par This document cannot explain steps 1 and 2 in detail for all engines, but we will take you through all five steps in outline, using Crafty as an example.\r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\f1 Example: Crafty\r
-\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 1. Choose a directory to put Crafty in. We'll use }{\f2 C:\\Program Files\\Crafty}{\f1 \r
- in this example. Download your copy of Crafty into this directory from its author's FTP site, }{\f2 ftp://ftp.cis.uab.edu/pub/hyatt}{\f1 . At this writing, you will need at least the following files:\r
+\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 1. Choose a directory to put Crafty in. We'll use }{\f2 C:\\Program Files\\Crafty}{\f1  in this example. Download your co\r
+py of Crafty into this directory from its author's FTP site, }{\f2 ftp://ftp.cis.uab.edu/pub/hyatt}{\f1 . At this writing, you will need at least the following files:\r
 \par }\pard\plain \s19\li520\sb60\sl-240\slmult0\keep\nowidctlpar\tx520\tx920\tx1320\tx1720\tx2120\adjustright \f6\fs16\cgrid {\f2\fs20 read.me\line v15/crafty.doc\line v15/crafty.faq\line v15/wcrafty-15.*.exe}{\f1\fs20 \r
  (where * is replaced by the largest number there)\line }{\f2\fs20 common/start.zip}{\fs20 \line }{\f2\fs20 common/medium.zip}{\fs20  }{\f1\fs20 (or another book).\r
-\par }\pard\plain \s16\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 2. The first three files are documentation that you can read with\r
- a text editor. Read the read.me file first and follow the instructions carefully. This will take some time. Do not write to the author of WinBoard if you have trouble with the instructions in the Crafty read.me. Try running Crafty from an MS-DOS Prompt b\r
-ox and make sure it works before you go on.\r
+\par }\pard\plain \s16\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 \r
+2. The first three files are documentation that you can read with a text editor. Read the read.me file first and follow the instructions carefully. This will take some time. Do not write to the \r
+author of WinBoard if you have trouble with the instructions in the Crafty read.me. Try running Crafty from an MS-DOS Prompt box and make sure it works before you go on.\r
 \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 3. Optional, but recommended: In an MS-DOS Prompt box,}{ }{\f2 cd }{\f1 to the directory where WinBoard is installed, typically }{\f2 "C:\\Program Files\\WinBoard"}{\f1 \r
 . Then type the following command line. Use the actual name of the wcrafty file you downloaded, not an }{\f2 *}{\f1 , and if your browser changed the first period to an underscore when you downloaded the file, make that change in the command line too.\r
 \r
 \par }\pard\plain \s63\fi-720\li1440\sb80\sl-240\slmult0\nowidctlpar\adjustright \f2\fs20\cgrid {WinBoard /cp /fcp=WCrafty-15.* /fd="C:\\Program Files\\Crafty" /scp=WCrafty-15.* /sd="C:\\Program Files\\Crafty"\r
 \par }\pard\plain \s16\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 WinBoard should start up, with Crafty running as its chess engine. Check that you can play chess against Crafty.\r
-\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 4. To make a shortcut or Start menu entry for Crafty: Right-click on the desktop and select New/Shortcut. Use the Browse b\r
-utton to find your winboard.exe file and get its name into the Command Line box. (It usually will be "C:\\Program Files\\WinBoard\\\r
-winboard.exe".) Click in the Command Line box and hit the End key to go to the end. Add the following to the end of the command line, }{\i\f1 after}{\f1  the closing quotation mark. Use the actual name of the wcrafty file you downloaded, not an }{\f2 *}{\r
+\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 \r
+4. To make a shortcut or Start menu entry for Crafty: Right-click on the desktop and select New/Shortcut. Use the Browse button to find your winboard.exe file and get its name into the Command Line box. (It usually will be "C:\\Program Files\\WinBoard\\w\r
+inboard.exe".) Click in the Command Line box and hit the End key to go to the end. Add the following to the end of the command line, }{\i\f1 after}{\f1  the closing quotation mark. Use the actual name of the wcrafty file you downloaded, not an }{\f2 *}{\r
 \f1 , and if your browser changed the first period to an underscore when you downloaded the file, make that change in the command line too.\r
 \par }\pard\plain \s63\fi-720\li1440\sb80\sl-240\slmult0\nowidctlpar\adjustright \f2\fs20\cgrid {/cp /fcp=WCrafty-15.* /fd="C:\\Program Files\\Crafty" \line /scp=WCrafty-15.* /sd="C:\\Program Files\\Crafty"\r
-\par }\pard\plain \s62\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 \r
-Press Next, choose a name for the shortcut, and press Finish. You can now use this shortcut to run WinBoard with Crafty. Double-click it to check that it works. You can drag or copy the shortcut into your Start menu if you like.\r
+\par }\pard\plain \s62\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Press Next, choose a name for the shortcut, \r
+and press Finish. You can now use this shortcut to run WinBoard with Crafty. Double-click it to check that it works. You can drag or copy the shortcut into your Start menu if you like.\r
 \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 5. To add Crafty as an option in the WinBoard Startup dialog, edit your }{\f1\uldb WinBoard.ini file}{\v\f1 Settings}{\f1 \r
  with Notepad or another plain text editor, carefully following the example shown under }{\f1\uldb /firstChessProgramNames}{\v\f1 firstChessProgramNames}{\f1  above.\r
 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\f1 For more information\r
 \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If you would like to run an automated computer player on the ICS, see the separate file }{\f2 zippy.README}{\f1 \r
-. If you would like to write your own engine to interface to WinBoard, see the separate file }{\f2 engine-intf.html}{\f1 \r
-, and join the mailing list mentioned there. Both files are included in the WinBoard distribution. You might also want to get the source code for WinBoard. It is available from the author's Web page, http://www.tim-mann.org/chess.html}{\f2 .}{\f1 \r
+. If you would like to write your own engine to interface to WinBoard, see the separate file }{\f2 engine-intf.html}{\f1 , and join the mailing list mentioned there. Both files are included in the WinBoard distribution. You might also w\r
+ant to get the source code for WinBoard. It is available from the author's Web page, http://www.tim-mann.org/chess.html}{\f2 .}{\f1 \r
 \par }\pard\plain \s1\li120\sb280\sa120\sl-320\slmult0\nowidctlpar\outlinelevel0\adjustright \b\f5\cgrid {\f1\fs20 \page }{\cs58\f1\fs20\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super \r
 K}{\f1  Firewalls}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  Firewalls}}${\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \r
 \f5\fs20\cgrid {\cs58\f1\super $}{\f1  Firewalls}}+{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super +}{\f1  main}}}{\f1\fs18\up6  }{\f1\fs20 FIREWALLS\r
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 By default, "WinBoard /ics"}{\i\f1  }{\f1 communicates with an Internet Chess Server by opening a TCP socket directly from the machine it is runni\r
-ng on to the ICS. If there is a firewall between your machine and the ICS, this won't work. Here are some recipes for getting around common kinds of firewalls using special options to WinBoard}{\i\f1 .}{\f1  Important: See the paragraph in the }{\f1\uldb \r
-LIMITATIONS}{\v\f1 LIMITATIONS}{\f1  section below about extra echoes.\r
+\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 By default, "WinBoard /ics"}{\i\f1  }{\f1 communicates with an Internet Chess Server by opening a TCP socket directly from the machin\r
+e it is running on to the ICS. If there is a firewall between your machine and the ICS, this won't work. Here are some recipes for getting around common kinds of firewalls using special options to WinBoard}{\i\f1 .}{\f1 \r
+ Important: See the paragraph in the }{\f1\uldb LIMITATIONS}{\v\f1 LIMITATIONS}{\f1  section below about extra echoes.\r
 \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 \r
 Suppose that you can't telnet directly to ICS, but you can telnet to a firewall host, log in, and then telnet from there to ICS. Let's say the firewall is called fire.wall.com. Set command-line options as follows: \r
 \par }\pard\plain \s19\li520\sb60\sl-240\slmult0\keep\nowidctlpar\tx520\tx920\tx1320\tx1720\tx2120\adjustright \f6\fs16\cgrid {\f2\fs20 WinBoard -ics -icshost fire.wall.com -icsport 23\r
 \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Then when you run WinBoard}{\i\f1  }{\f1 \r
-in ICS mode, you will be prompted to log in to the firewall host. (This works because port 23 is the standard telnet login service.) Do so, then telnet to ICS, using a command like "telnet c\r
-hessclub.com 5000", or whatever command the firewall provides for telnetting to port 5000.\r
-\par If your firewall lets you telnet (or rlogin) to remote hosts, but doesn't let you telnet to port 5000, you will have to find some other host outside the firewall tha\r
-t does let you do this, and hop through it. For instance, suppose you have an account at foo.edu. Follow the recipe above, but instead of typing "telnet chessclub.com 5000" to the firewall, type "telnet foo.edu" (or "rlogin foo.edu"), log in there, and th\r
-en type "telnet chessclub.com 5000".\r
+in ICS mode, you will be prompted to log in to the firewall host. (This works because port 23 is the standard telnet login service.) Do so, then telnet to ICS, using a command l\r
+ike "telnet chessclub.com 5000", or whatever command the firewall provides for telnetting to port 5000.\r
+\par If your firewall lets you telnet (or rlogin) to remote hosts, but doesn't let you telnet to port 5000, you will have to find some other host outside the\r
+ firewall that does let you do this, and hop through it. For instance, suppose you have an account at foo.edu. Follow the recipe above, but instead of typing "telnet chessclub.com 5000" to the firewall, type "telnet foo.edu" (or "rlogin foo.edu"), log in \r
+there, and then type "telnet chessclub.com 5000".\r
 \par Exception: chessclub.com itself lets you connect to the chess server on the default telnet port (23), which is what you get if you don\rquote t specify a port to the telnet program. But the other chess servers don\rquote t allow this.\r
 \par Suppose that you can't telnet directly to ICS, but you can use rsh to run programs on a firewall host, and that host can telnet to ICS. Let's say the firewall is called rsh.wall.com. Set command-line options as follows: \r
 \par }\pard\plain \s19\li520\sb60\sl-240\slmult0\keep\nowidctlpar\tx520\tx920\tx1320\tx1720\tx2120\adjustright \f6\fs16\cgrid {\f2\fs20 WinBoard -ics -gateway rsh.wall.com -icshost chessclub.com\r
 \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Then when you run WinBoard}{\i\f1  }{\f1 in ICS mode, it will connect to the ICS by using rsh to run the command "telnet chessclub.com 5000" on host rsh.wall.com.\r
-\par ICC timestamp and FICS timeseal do not work through many}{\b\f1  }{\f1 \r
-firewalls. You can use them only if your firewall gives a clean TCP connection with a full 8-bit wide path. If your firewall allows you to get out only by running a special telnet program, you can't use timestamp or timeseal across it. But if you \r
-have access to a computer just outside your firewall, and you have much lower netlag when talking to that computer than to the ICS, it might be worthwhile running timestamp there. Follow the instructions above for hopping through a host outside the firewa\r
-ll (foo.edu in the example), but run timestamp or timeseal on that host instead of telnet.\r
-\par }\pard\plain \s20\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Suppose that you have a SOCKS firewall that requires you to go through some extra level of authentication, but after that will give you a clean 8-bit wide TCP connect\r
-ion to the chess server. In that case, if you are using timestamp or timeseal, you need to somehow socksify it; if not, you need to socksify WinBoard itself. Socksification is beyond the scope of this document, but see the SOCKS Web site at http://www.soc\r
-ks.nec.com/how2socksify.html.\r
+\par ICC timestamp and FICS timeseal do not work through many}{\b\f1  }{\f1 firewalls. Y\r
+ou can use them only if your firewall gives a clean TCP connection with a full 8-bit wide path. If your firewall allows you to get out only by running a special telnet program, you can't use timestamp or timeseal across it. But if you have access to a com\r
+p\r
+uter just outside your firewall, and you have much lower netlag when talking to that computer than to the ICS, it might be worthwhile running timestamp there. Follow the instructions above for hopping through a host outside the firewall (foo.edu in the ex\r
+ample), but run timestamp or timeseal on that host instead of telnet.\r
+\par }\pard\plain \s20\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 \r
+Suppose that you have a SOCKS firewall that requires you to go through some extra level of authentication, but after that will give you a clean 8-bit wide TCP connection to the chess serv\r
+er. In that case, if you are using timestamp or timeseal, you need to somehow socksify it; if not, you need to socksify WinBoard itself. Socksification is beyond the scope of this document, but see the SOCKS Web site at http://www.socks.nec.com/how2socksi\r
+fy.html.\r
 \par }\pard\plain \s1\li120\sb280\sa120\sl-320\slmult0\nowidctlpar\outlinelevel0\adjustright \b\f5\cgrid {\f1\fs20 \page }{\cs58\f1\fs20\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super \r
 K}{\f1  Limitations}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  Limitations}}${\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \r
 \f5\fs20\cgrid {\cs58\f1\super $}{\f1  Limitations}}+{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super +}{\f1  main}}}{\f1\fs18\up6  }{\f1\fs20 LIMITATIONS }{\f1\fs20\cf11 \r
 AND NON-LIMITATIONS}{\f1\fs20 \r
-\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 WinBoard}{\i\f1  }{\f1 is a Win32 application. It runs only on Windows NT and Windows 95. It does not work on Windows 3.11 or earlier, even with the Win32\r
-s compatibility package.\r
+\par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 WinBoard}{\i\f1  }{\f1 \r
+is a Win32 application. It runs only on Windows NT and Windows 95. It does not work on Windows 3.11 or earlier, even with the Win32s compatibility package.\r
 \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\i\f1 CMail, }{\f1 the companion program to xboard for playing electronic mail correspondence chess, has not been ported to Win32.\r
 \par There is no way for two people running copies of WinBoard}{\i\f1  }{\f1 to play each other without going through the Internet Chess Server.\r
 \par Under some circumstances, your ICS password may be echoed when you log on.\r
-\par If you are connecting to the ICS by running telnet, timestamp, or timeseal on an Internet provider host, you may find that each line you type is echoed back an extra t\r
-ime after you hit Enter. You can probably turn this echo off. If your Internet provider is a Unix system, type "}{\f2 stty -echo}{\f1 \r
-" after you log in to the provider but before you run telnet, timestamp, or timeseal. In addition, you may need to type the sequence \ldblquote }{\f2 Ctrl+Q Ctrl+E Enter}{\f1 \ldblquote  after you have finished logging in to ICS. On VMS, type \ldblquote }\r
-{\f2 set terminal /noecho /nowrap}{\f1 \rdblquote , and after you telnet to the ICS, type \ldblquote }{\f2 Ctrl+Q Ctrl+] Enter set mode char Enter Enter}{\f1 \rdblquote . It is a good idea to turn off the extra remote echo if you c\r
-an, because otherwise it can get interleaved with output from the ICS and confuse WinBoard's parsing routines. Don\rquote t just turn off }{\f1\uldb Local Line Editing}{\v\f1 localLineEditing}{\f1 \r
- so that you see only the remote echo and not the local one; that will make the interleaving problem worse.\r
+\par If you are connecting to the ICS by running telnet, timestamp, or timeseal on an Internet provider host, you may find that each line you type is echoed back an extra time after you hit Enter. You can probably turn this echo off. If your \r
+Internet provider is a Unix system, type "}{\f2 stty -echo}{\f1 " after you log in to the provider but before you run telnet, timestamp, or timeseal. In addition, you may need to type the sequence \ldblquote }{\f2 Ctrl+Q Ctrl+E Enter}{\f1 \ldblquote \r
+ after you have finished logging in to ICS. On VMS, type \ldblquote }{\f2 set terminal /noecho /nowrap}{\f1 \rdblquote , and after you telnet to the ICS, type \ldblquote }{\f2 Ctrl+Q Ctrl+] Enter set mode char Enter Enter}{\f1 \rdblquote \r
+. It is a good idea to turn off the extra remote echo if you can, because otherwise it can get interleaved with output from the ICS and confuse WinBoard's parsing routines. Don\rquote t just turn off }{\f1\uldb Local Line Editing}{\v\f1 localLineEditing}{\r
+\f1  so that you see only the remote echo and not the local one; that will make the interleaving problem worse.\r
 \par The game parser recognizes only algebraic notation (SAN).\r
 \par The }{\f1\uldb ICS logon}{\v\f1 ICSLogon}{\f1  file does not work properly when you connect to ICS through a Unix gateway host by setting }{\f1\uldb icsPort}{\v\f1 icsPort}{\f1  to 23. The Unix login process apparently discards type-ahead.\r
 \par Some WinBoard functions may not work with versions of GNU Chess earlier than 4.0, patchlevel 77. The current version of WinBoard}{\i\f1  }{\f1 works best with Crafty version 15.11 or later.\r
@@ -1978,14 +2096,13 @@ an, because otherwise it can get interleaved with output from the ICS and confus
  But this way of dropping pieces should be considered an obsolete feature, now that pieces can be dropped by dragging them from the holdings to the board. }{\f1 Anyway, if you would attempt an illegal move when using a chess engine or the ICS,}{\f1\cf11  \r
 }{\f1 WinBoard will accept the error message that comes back, undo the move, and let you try another.\r
 \par }{\f1\cf11 FEN positions saved by WinBoard}{\i\f1\cf11  }{\f1\cf11 do include correct information about whether castling or en passant are legal, and also handle the 50-move counter.\r
-\par }\pard\plain \s20\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 The mate detector does not understand that non-contact mate is not really mate in bughouse.}{\f1\cf11  }{\f1 The only pro\r
-blem this causes while playing is minor: a "#" (mate indicator) character will show up after a non-contact mating move in the move list. WinBoard will not assume the game is over at that point,}{\f1\cf11  not even when the option Detect Mates is on.\r
-\r
-\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf11 Edit Game mode al\r
-ways uses the rules of the selected variant, which can be a variant that uses piece drops.  You can load and edit games that contain piece drops. The (obsolete) piece menus are not active, but you can perform piece drops by dragging pieces from the holdin\r
-gs.\r
-\par Edit Position mode does not allow you to edit the Crazyhouse holdings properly. You cannot drag pieces to the holding, and using the popup menu to put pieces there does not adapt the holding counts and leads to an inconsistent state. Set up Crazyhouse p\r
-ositions by loading / pasting a bFEN, from there you can set the holdings.\r
+\par }\pard\plain \s20\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 The mate detector does not understand that non-contact mate is not really mate in bughouse.}{\f1\cf11  }{\f1 \r
+The only problem this causes while playing is minor: a "#" (mate indicator) character will show up after a non-contact mating move in the move list. WinBoard will not assume the game is over at that point,}{\f1\cf11 \r
+ not even when the option Detect Mates is on.\r
+\par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf11 Edit Game mode always uses the rules of the selected variant, which can be a variant that uses piece drops.  You can load and\r
+ edit games that contain piece drops. The (obsolete) piece menus are not active, but you can perform piece drops by dragging pieces from the holdings.\r
+\par Edit Position mode does not allow you to edit the Crazyhouse holdings properly. You cannot drag pieces to\r
+ the holding, and using the popup menu to put pieces there does not adapt the holding counts and leads to an inconsistent state. Set up Crazyhouse positions by loading / pasting a bFEN, from there you can set the holdings.\r
 \par Fischer Random castling is fully understood. You can enter castlings by dragging the King on top of your Rook. You can probably also play Fischer Random successfully on ICS by typing castling moves into the ICS Interaction window.\r
 \par }{\f1 Also see the ToDo file included with the distribution for many other possible bugs, limitations, and ideas for improvement that have been suggested.\r
 \par }\pard\plain \s1\li120\sb280\sa120\sl-320\slmult0\nowidctlpar\outlinelevel0\adjustright \b\f5\cgrid {\f1\fs20 \page }{\cs58\f1\fs20\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super \r
@@ -1993,30 +2110,32 @@ K}{\f1  Authors}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\n
 \cs58\f1\super $}{\f1  Authors}}+{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super +}{\f1  main}}}{\f1\fs18\up6  }{\f1\fs20 AUTHORS AND CONTRIBUTORS\r
 \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 WinBoard is partly based on }{\i\f1 xboard}{\f1 , a chessboard program for Unix and the X Window System. Tim Mann has been responsible for all versions of WinBoard,}{\r
 \i\f1  }{\f1 and for xboard versions 1.3 and beyond. }{\f1\cf11 H.G.Muller is responsible for version 4.3.}{\f1 \r
-\par Mark Williams added many features to WinBoard 4.1.0, including copy/paste, premove, icsAlarm, autoFlipView, training mode, auto raise, and blindfold. Hugh Fischer added piece animation to xboard, and Henrik Gram added it to WinBoard. Frank McIngvale con\r
-tributed many xboard}{\i\f1  }{\f1 user interface improvements and improved Crafty support. Jochen Wiedmann ported xboard}{\i\f1  }{\f1 to the Amiga, creating }{\i\f1 AmyBoard}{\f1 \r
-, and converted the documentation to texinfo. Elmar Bartel contributed the new piece bitmaps for version 3.2. Evan Welsh wrote }{\i\f1 CMail. }{\f1 \r
+\par Mark Williams added many features to WinBoard 4.1.0, including copy/paste, premove, icsAlarm, autoFlipView, training mode, auto raise, and blindfold. Hugh F\r
+ischer added piece animation to xboard, and Henrik Gram added it to WinBoard. Frank McIngvale contributed many xboard}{\i\f1  }{\f1 user interface improvements and improved Crafty support. Jochen Wiedmann ported xboard}{\i\f1  }{\f1 \r
+to the Amiga, creating }{\i\f1 AmyBoard}{\f1 , and converted the documentation to texinfo. Elmar Bartel contributed the new piece bitmaps for version 3.2. Evan Welsh wrote }{\i\f1 CMail. }{\f1 \r
 John Chanak contributed the initial implementation of ICS mode. The default color scheme was adapted from Wayne Christopher's }{\i\f1 XChess }{\f1 program. Chris Sears and Dan Sears wrote the original xboard}{\i\f1 . }{\f1 They were responsible for xboard\r
-}{\i\f1  }{\f1 versions 1.0 through 1.2. }{\f1\cf6 \r
-Allessandro Scotti added many elements to the user interface, including the board textures and font-based rendering, the evaluation-graph, move-history and engine-output window. He was also responsible for adding the UCI support.}{\f1  }{\f1\cf11 \r
-H.G. Muller\r
- made WinBoard castling- and e.p.-aware, added variant support with adjustable board sizes, the Crazyhouse holdings, and the fairy pieces. In addition he added most of the adjudication options, made WinBoard ore robust in dealing with buggy and crashing e\r
-ngines, and extended time control with a time-odds and node-count-based modes.}{\f1 \r
+}{\i\f1  }{\f1 versions 1.0 through 1.2. }{\f1\cf6 Allessandro Scotti added many elements to the user interface, including the board textures and font-based rendering, the evaluation-graph, move-\r
+history and engine-output window. He was also responsible for adding the UCI support.}{\f1  }{\f1\cf11 \r
+H.G. Muller made WinBoard castling- and e.p.-aware, added variant support with adjustable board sizes, the Crazyhouse holdings, and the fairy pieces. In addition he added\r
+ most of the adjudication options, made WinBoard ore robust in dealing with buggy and crashing engines, and extended time control with a time-odds and node-count-based modes.}{\f1 \r
 \par Send bug reports to <bug-xboard@gnu.org>. Please run WinBoard with the /debug option and include the output from the resulting WinBoard.debug file in your message.\r
-\par }\pard\plain \s66\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cf11\cgrid {\f1 The WinBoard 4\r
-.3.xx line is being developed by H.G. Muller independently of the GNU Savannah xboard project. Bug reports on this version, and suggestions for improvements and additions, are best posted in the WinBoard forum, development section (http://www.open-aurec.c\r
-om/wbforum).\r
+\par }\pard\plain \s66\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cf11\cgrid {\f1 \r
+The WinBoard 4.3.xx line is being developed by H.G. Muller independently of the GNU Savannah xboard project. Bug reports on this version, and suggestions for improvements an\r
+d additions, are best posted in the WinBoard forum, development section (http://www.open-aurec.com/wbforum).\r
+\par }{\f1\cf2 Arun Persaud worked with H.G. Muller to combine all the features of the never-released WinBoard 4.2.8 of the Savannah project (mainly by Daniel Meh\r
+rmann), and the never-released 4.3.16 into a unified WinBoard 4.4, which is now available both from the Savannah web site and the WinBoard forum.\r
 \par }\pard\plain \s1\li120\sb280\sa120\sl-320\slmult0\nowidctlpar\outlinelevel0\adjustright \b\f5\cgrid {\f1\fs20 \page }{\cs58\f1\fs20\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super \r
 K}{\f1  Copyright}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1  Copyright}}${\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \r
 \f5\fs20\cgrid {\cs58\f1\super $}{\f1  Copyright}}+{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super +}{\f1  main}}}{\f1\fs18\up6  }{\f1\fs20 COPYRIGHT\r
 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Copyright 1991 by Digital Equipment Corporation, Maynard, Massachusetts. \line Enhancements Copyright 1992-2003 Free Software Foundation, Inc.\r
 \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 The following terms apply to Digital Equipment Corporation's copyright interest in WinBoard:\r
 \par All Rights Reserved\r
-\par Permission to use, copy, modify, and distribute this software and its documentation for any purpose and without fee is hereby granted, provided\r
- that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation, and that the name of Digital not be used in advertising or publicity pertaining to distribution of the\r
- software without specific, written prior permission.\r
-\par DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENT\r
-IAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\r
+\par Permission to use, copy, modify, and distribute this software and its documentation for any purpose\r
+ and without fee is hereby granted, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation, and that the name of Digital not be used in advertising or\r
+ publicity pertaining to distribution of the software without specific, written prior permission.\r
+\par DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL DIGITAL BE LI\r
+ABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMAN\r
+CE OF THIS SOFTWARE.\r
 \par The following terms apply to the enhanced version of WinBoard distributed by the Free Software Foundation:\r
 \par This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\r
 \par This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more details.\r
index 54c457e..1f17046 100644 (file)
--- a/xboard.c
+++ b/xboard.c
@@ -192,11 +192,14 @@ extern char *getenv();
 #include "childio.h"\r
 #include "xgamelist.h"\r
 #include "xhistory.h"\r
-#include "xedittags.h"
-
-// must be moved to xengineoutput.h
-void EngineOutputProc P((Widget w, XEvent *event,
-                       String *prms, Cardinal *nprms));
+#include "xedittags.h"\r
+#include "gettext.h"\r
+\r
+// must be moved to xengineoutput.h\r
+\r
+void EngineOutputProc P((Widget w, XEvent *event,\r
+ String *prms, Cardinal *nprms));\r
+\r
 void EngineOutputPopDown();\r
 \r
 \r
@@ -207,6 +210,14 @@ void EngineOutputPopDown();
 #define usleep(t)   _sleep2(((t)+500)/1000)\r
 #endif\r
 \r
+#ifdef ENABLE_NLS\r
+# define  _(s) gettext (s)\r
+# define N_(s) gettext_noop (s)\r
+#else\r
+# define  _(s) (s)\r
+# define N_(s)  s\r
+#endif\r
+\r
 typedef struct {\r
     String string;\r
     XtActionProc proc;\r
@@ -459,13 +470,13 @@ char *layoutName;
 char *oldICSInteractionTitle;\r
 \r
 FileProc fileProc;\r
-char *fileOpenMode;
+char *fileOpenMode;\r
 char installDir[] = "."; // [HGM] UCI: needed for UCI; probably needs run-time initializtion\r
 \r
 Position commentX = -1, commentY = -1;\r
 Dimension commentW, commentH;\r
 \r
-int squareSize, smallLayout = 0, tinyLayout = 0,
+int squareSize, smallLayout = 0, tinyLayout = 0,\r
   marginW, marginH, // [HGM] for run-time resizing\r
   fromX = -1, fromY = -1, toX, toY, commentUp = False, analysisUp = False,\r
   ICSInputBoxUp = False, askQuestionUp = False,\r
@@ -524,149 +535,149 @@ static Pixmap xpmMask[BlackKing + 1];
 SizeDefaults sizeDefaults[] = SIZE_DEFAULTS;\r
 \r
 MenuItem fileMenu[] = {\r
-    {"New Game", ResetProc},\r
-    {"New Shuffle Game ...", ShuffleMenuProc},\r
-    {"New Variant ...", NewVariantProc},      // [HGM] variant: not functional yet\r
+    {N_("New Game"), ResetProc},\r
+    {N_("New Shuffle Game ..."), ShuffleMenuProc},\r
+    {N_("New Variant ..."), NewVariantProc},      // [HGM] variant: not functional yet\r
     {"----", NothingProc},\r
-    {"Load Game", LoadGameProc},\r
-    {"Load Next Game", LoadNextGameProc},\r
-    {"Load Previous Game", LoadPrevGameProc},\r
-    {"Reload Same Game", ReloadGameProc},\r
-    {"Save Game", SaveGameProc},\r
+    {N_("Load Game"), LoadGameProc},\r
+    {N_("Load Next Game"), LoadNextGameProc},\r
+    {N_("Load Previous Game"), LoadPrevGameProc},\r
+    {N_("Reload Same Game"), ReloadGameProc},\r
+    {N_("Save Game"), SaveGameProc},\r
     {"----", NothingProc},\r
-    {"Copy Game", CopyGameProc},\r
-    {"Paste Game", PasteGameProc},\r
+    {N_("Copy Game"), CopyGameProc},\r
+    {N_("Paste Game"), PasteGameProc},\r
     {"----", NothingProc},\r
-    {"Load Position", LoadPositionProc},\r
-    {"Load Next Position", LoadNextPositionProc},\r
-    {"Load Previous Position", LoadPrevPositionProc},\r
-    {"Reload Same Position", ReloadPositionProc},\r
-    {"Save Position", SavePositionProc},\r
+    {N_("Load Position"), LoadPositionProc},\r
+    {N_("Load Next Position"), LoadNextPositionProc},\r
+    {N_("Load Previous Position"), LoadPrevPositionProc},\r
+    {N_("Reload Same Position"), ReloadPositionProc},\r
+    {N_("Save Position"), SavePositionProc},\r
     {"----", NothingProc},\r
-    {"Copy Position", CopyPositionProc},\r
-    {"Paste Position", PastePositionProc},\r
+    {N_("Copy Position"), CopyPositionProc},\r
+    {N_("Paste Position"), PastePositionProc},\r
     {"----", NothingProc},\r
-    {"Mail Move", MailMoveProc},\r
-    {"Reload CMail Message", ReloadCmailMsgProc},\r
+    {N_("Mail Move"), MailMoveProc},\r
+    {N_("Reload CMail Message"), ReloadCmailMsgProc},\r
     {"----", NothingProc},\r
-    {"Exit", QuitProc},\r
+    {N_("Exit"), QuitProc},\r
     {NULL, NULL}\r
 };\r
 \r
 MenuItem modeMenu[] = {\r
-    {"Machine White", MachineWhiteProc},\r
-    {"Machine Black", MachineBlackProc},\r
-    {"Two Machines", TwoMachinesProc},\r
-    {"Analysis Mode", AnalyzeModeProc},\r
-    {"Analyze File", AnalyzeFileProc },\r
-    {"ICS Client", IcsClientProc},\r
-    {"Edit Game", EditGameProc},\r
-    {"Edit Position", EditPositionProc},\r
-    {"Training", TrainingProc},\r
+    {N_("Machine White"), MachineWhiteProc},\r
+    {N_("Machine Black"), MachineBlackProc},\r
+    {N_("Two Machines"), TwoMachinesProc},\r
+    {N_("Analysis Mode"), AnalyzeModeProc},\r
+    {N_("Analyze File"), AnalyzeFileProc },\r
+    {N_("ICS Client"), IcsClientProc},\r
+    {N_("Edit Game"), EditGameProc},\r
+    {N_("Edit Position"), EditPositionProc},\r
+    {N_("Training"), TrainingProc},\r
     {"----", NothingProc},\r
-    {"Show Engine Output", EngineOutputProc},\r
-    {"Show Evaluation Graph", NothingProc}, // [HGM] evalgr: not functional yet\r
-    {"Show Game List", ShowGameListProc},\r
+    {N_("Show Engine Output"), EngineOutputProc},\r
+    {N_("Show Evaluation Graph"), NothingProc}, // [HGM] evalgr: not functional yet\r
+    {N_("Show Game List"), ShowGameListProc},\r
     {"Show Move History", HistoryShowProc}, // [HGM] hist: activate 4.2.7 code\r
     {"----", NothingProc},\r
-    {"Edit Tags", EditTagsProc},\r
-    {"Edit Comment", EditCommentProc},\r
-    {"ICS Input Box", IcsInputBoxProc},\r
-    {"Pause", PauseProc},\r
+    {N_("Edit Tags"), EditTagsProc},\r
+    {N_("Edit Comment"), EditCommentProc},\r
+    {N_("ICS Input Box"), IcsInputBoxProc},\r
+    {N_("Pause"), PauseProc},\r
     {NULL, NULL}\r
 };\r
 \r
 MenuItem actionMenu[] = {\r
-    {"Accept", AcceptProc},\r
-    {"Decline", DeclineProc},\r
-    {"Rematch", RematchProc},\r
+    {N_("Accept"), AcceptProc},\r
+    {N_("Decline"), DeclineProc},\r
+    {N_("Rematch"), RematchProc},\r
     {"----", NothingProc},    \r
-    {"Call Flag", CallFlagProc},\r
-    {"Draw", DrawProc},\r
-    {"Adjourn", AdjournProc},\r
-    {"Abort", AbortProc},\r
-    {"Resign", ResignProc},\r
+    {N_("Call Flag"), CallFlagProc},\r
+    {N_("Draw"), DrawProc},\r
+    {N_("Adjourn"), AdjournProc},\r
+    {N_("Abort"), AbortProc},\r
+    {N_("Resign"), ResignProc},\r
     {"----", NothingProc},    \r
-    {"Stop Observing", StopObservingProc},\r
-    {"Stop Examining", StopExaminingProc},\r
+    {N_("Stop Observing"), StopObservingProc},\r
+    {N_("Stop Examining"), StopExaminingProc},\r
     {NULL, NULL}\r
 };\r
 \r
 MenuItem stepMenu[] = {\r
-    {"Backward", BackwardProc},\r
-    {"Forward", ForwardProc},\r
-    {"Back to Start", ToStartProc},\r
-    {"Forward to End", ToEndProc},\r
-    {"Revert", RevertProc},\r
-    {"Truncate Game", TruncateGameProc},\r
+    {N_("Backward"), BackwardProc},\r
+    {N_("Forward"), ForwardProc},\r
+    {N_("Back to Start"), ToStartProc},\r
+    {N_("Forward to End"), ToEndProc},\r
+    {N_("Revert"), RevertProc},\r
+    {N_("Truncate Game"), TruncateGameProc},\r
     {"----", NothingProc},    \r
-    {"Move Now", MoveNowProc},\r
-    {"Retract Move", RetractMoveProc},\r
+    {N_("Move Now"), MoveNowProc},\r
+    {N_("Retract Move"), RetractMoveProc},\r
     {NULL, NULL}\r
 };    \r
 \r
-MenuItem optionsMenu[] = {
-    {"Flip View", FlipViewProc},\r
+MenuItem optionsMenu[] = {\r
+    {N_("Flip View"), FlipViewProc},\r
     {"----", NothingProc},    \r
-    {"Adjudications ...", EngineMenuProc},    \r
-    {"General Settings ...", UciMenuProc},    \r
-    {"Engine #1 Settings ...", FirstSettingsProc},    \r
-    {"Engine #2 Settings ...", SecondSettingsProc},    \r
-    {"Time Control ...", TimeControlProc},    \r
+    {N_("Adjudications ..."), EngineMenuProc},    \r
+    {N_("General Settings ..."), UciMenuProc},    \r
+    {N_("Engine #1 Settings ..."), FirstSettingsProc},    \r
+    {N_("Engine #2 Settings ..."), SecondSettingsProc},    \r
+    {N_("Time Control ..."), TimeControlProc},    \r
     {"----", NothingProc},    \r
-    {"Always Queen", AlwaysQueenProc},\r
-    {"Animate Dragging", AnimateDraggingProc},\r
-    {"Animate Moving", AnimateMovingProc},\r
-    {"Auto Comment", AutocommProc},\r
-    {"Auto Flag", AutoflagProc},\r
-    {"Auto Flip View", AutoflipProc},\r
-    {"Auto Observe", AutobsProc},\r
-    {"Auto Raise Board", AutoraiseProc},\r
-    {"Auto Save", AutosaveProc},\r
-    {"Blindfold", BlindfoldProc},\r
-    {"Flash Moves", FlashMovesProc},\r
-    {"Get Move List", GetMoveListProc},\r
+    {N_("Always Queen"), AlwaysQueenProc},\r
+    {N_("Animate Dragging"), AnimateDraggingProc},\r
+    {N_("Animate Moving"), AnimateMovingProc},\r
+    {N_("Auto Comment"), AutocommProc},\r
+    {N_("Auto Flag"), AutoflagProc},\r
+    {N_("Auto Flip View"), AutoflipProc},\r
+    {N_("Auto Observe"), AutobsProc},\r
+    {N_("Auto Raise Board"), AutoraiseProc},\r
+    {N_("Auto Save"), AutosaveProc},\r
+    {N_("Blindfold"), BlindfoldProc},\r
+    {N_("Flash Moves"), FlashMovesProc},\r
+    {N_("Get Move List"), GetMoveListProc},\r
 #if HIGHDRAG\r
-    {"Highlight Dragging", HighlightDraggingProc},\r
+    {N_("Highlight Dragging"), HighlightDraggingProc},\r
 #endif\r
-    {"Highlight Last Move", HighlightLastMoveProc},\r
-    {"Move Sound", MoveSoundProc},\r
-    {"ICS Alarm", IcsAlarmProc},\r
-    {"Old Save Style", OldSaveStyleProc},\r
-    {"Periodic Updates", PeriodicUpdatesProc}, \r
-    {"Ponder Next Move", PonderNextMoveProc},\r
-    {"Popup Exit Message", PopupExitMessageProc},      \r
-    {"Popup Move Errors", PopupMoveErrorsProc},        \r
-    {"Premove", PremoveProc},\r
-    {"Quiet Play", QuietPlayProc},\r
-    {"Show Coords", ShowCoordsProc},\r
-    {"Hide Thinking", HideThinkingProc},\r
-    {"Test Legality", TestLegalityProc},\r
+    {N_("Highlight Last Move"), HighlightLastMoveProc},\r
+    {N_("Move Sound"), MoveSoundProc},\r
+    {N_("ICS Alarm"), IcsAlarmProc},\r
+    {N_("Old Save Style"), OldSaveStyleProc},\r
+    {N_("Periodic Updates"), PeriodicUpdatesProc},     \r
+    {N_("Ponder Next Move"), PonderNextMoveProc},\r
+    {N_("Popup Exit Message"), PopupExitMessageProc},  \r
+    {N_("Popup Move Errors"), PopupMoveErrorsProc},    \r
+    {N_("Premove"), PremoveProc},\r
+    {N_("Quiet Play"), QuietPlayProc},\r
+    {N_("Show Coords"), ShowCoordsProc},\r
+    {N_("Hide Thinking"), HideThinkingProc},\r
+    {N_("Test Legality"), TestLegalityProc},\r
     {NULL, NULL}\r
 };\r
 \r
 MenuItem helpMenu[] = {\r
-    {"Info XBoard", InfoProc},\r
-    {"Man XBoard", ManProc},\r
+    {N_("Info XBoard"), InfoProc},\r
+    {N_("Man XBoard"), ManProc},\r
     {"----", NothingProc},\r
-    {"Hint", HintProc},\r
-    {"Book", BookProc},\r
+    {N_("Hint"), HintProc},\r
+    {N_("Book"), BookProc},\r
     {"----", NothingProc},\r
-    {"About XBoard", AboutProc},\r
+    {N_("About XBoard"), AboutProc},\r
     {NULL, NULL}\r
 };\r
 \r
 Menu menuBar[] = {\r
-    {"File", fileMenu},\r
-    {"Mode", modeMenu},\r
-    {"Action", actionMenu},\r
-    {"Step", stepMenu},\r
-    {"Options", optionsMenu},\r
-    {"Help", helpMenu},\r
+    {N_("File"), fileMenu},\r
+    {N_("Mode"), modeMenu},\r
+    {N_("Action"), actionMenu},\r
+    {N_("Step"), stepMenu},\r
+    {N_("Options"), optionsMenu},\r
+    {N_("Help"), helpMenu},\r
     {NULL, NULL}\r
 };\r
 \r
-#define PAUSE_BUTTON "P"\r
+#define PAUSE_BUTTON N_("P")\r
 MenuItem buttonBar[] = {\r
     {"<<", ToStartProc},\r
     {"<", BackwardProc},\r
@@ -678,11 +689,11 @@ MenuItem buttonBar[] = {
 \r
 #define PIECE_MENU_SIZE 11\r
 String pieceMenuStrings[2][PIECE_MENU_SIZE] = {\r
-    { "White", "----", "Pawn", "Knight", "Bishop", "Rook", "Queen", "King",\r
-      "----", "Empty square", "Clear board" },\r
-    { "Black", "----", "Pawn", "Knight", "Bishop", "Rook", "Queen", "King",\r
-      "----", "Empty square", "Clear board" },\r
-  };\r
+    { N_("White"), "----", N_("Pawn"), N_("Knight"), N_("Bishop"), N_("Rook"),\r
+      N_("Queen"), N_("King"), "----", N_("Empty square"), N_("Clear board") },\r
+    { N_("Black"), "----", N_("Pawn"), N_("Knight"), N_("Bishop"), N_("Rook"),\r
+      N_("Queen"), N_("King"), "----", N_("Empty square"), N_("Clear board") },  \r
+};\r
 /* must be in same order as PieceMenuStrings! */\r
 ChessSquare pieceMenuTranslation[2][PIECE_MENU_SIZE] = {\r
     { WhitePlay, (ChessSquare) 0, WhitePawn, WhiteKnight, WhiteBishop,\r
@@ -695,7 +706,7 @@ ChessSquare pieceMenuTranslation[2][PIECE_MENU_SIZE] = {
 \r
 #define DROP_MENU_SIZE 6\r
 String dropMenuStrings[DROP_MENU_SIZE] = {\r
-    "----", "Pawn", "Knight", "Bishop", "Rook", "Queen"\r
+    "----", N_("Pawn"), N_("Knight"), N_("Bishop"), N_("Rook"), N_("Queen")\r
   };\r
 /* must be in same order as PieceMenuStrings! */\r
 ChessSquare dropMenuTranslation[DROP_MENU_SIZE] = {\r
@@ -1173,6 +1184,9 @@ XtResource clientResources[] = {
     { "showButtonBar", "showButtonBar", XtRBoolean,\r
        sizeof(Boolean), XtOffset(AppDataPtr, showButtonBar),\r
        XtRImmediate, (XtPointer) True },\r
+    {"icsEngineAnalyze", "icsEngineAnalyze", XtRBoolean,        /* [DM] icsEngineAnalyze */\r
+        sizeof(Boolean), XtOffset(AppDataPtr, icsEngineAnalyze),\r
+        XtRImmediate, (XtPointer) False },\r
     { "firstScoreAbs", "firstScoreAbs", XtRBoolean,\r
        sizeof(Boolean), XtOffset(AppDataPtr, firstScoreIsAbsolute),\r
        XtRImmediate, (XtPointer) False },\r
@@ -1276,7 +1290,7 @@ XtResource clientResources[] = {
        XtRImmediate, (XtPointer) 0},\r
     { "suppressLoadMoves", "suppressLoadMoves", XtRBoolean,\r
        sizeof(Boolean), XtOffset(AppDataPtr, suppressLoadMoves),\r
-       XtRImmediate, (XtPointer) False},
+       XtRImmediate, (XtPointer) False},\r
     { "userName", "userName", XtRString,\r
        sizeof(String), XtOffset(AppDataPtr, userName),\r
        XtRImmediate, (XtPointer) 0},\r
@@ -1295,7 +1309,7 @@ XtResource clientResources[] = {
     { "niceEngines", "niceEngines", XtRInt,\r
        sizeof(int), XtOffset(AppDataPtr, niceEngines),\r
        XtRImmediate, (XtPointer) 0},\r
-
+\r
     // [HGM] Winboard_x UCI options\r
     { "firstIsUCI", "firstIsUCI", XtRBoolean,\r
        sizeof(Boolean), XtOffset(AppDataPtr, firstIsUCI),\r
@@ -1333,6 +1347,12 @@ XtResource clientResources[] = {
     { "delayAfterQuit", "delayAfterQuit", XtRInt,\r
        sizeof(int), XtOffset(AppDataPtr, delayAfterQuit),\r
        XtRImmediate, (XtPointer) 0},\r
+    { "nameOfDebugFile", "nameOfDebugFile", XtRString,\r
+       sizeof(String), XtOffset(AppDataPtr, nameOfDebugFile),\r
+       XtRImmediate, (XtPointer) "xboard.debug"},\r
+    { "noGUI", "noGUI", XtRBoolean,\r
+       sizeof(Boolean), XtOffset(AppDataPtr, noGUI),\r
+       XtRImmediate, (XtPointer) 0},\r
 };\r
 \r
 XrmOptionDescRec shellOptions[] = {\r
@@ -1685,6 +1705,8 @@ XrmOptionDescRec shellOptions[] = {
     { "-niceEngines", "niceEngines", XrmoptionSepArg, NULL }, \r
     { "-delayBeforeQuit", "delayBeforeQuit", XrmoptionSepArg, NULL }, \r
     { "-delayAfterQuit", "delayAfterQuit", XrmoptionSepArg, NULL }, \r
+    { "-nameOfDebugFile", "nameOfDebugFile", XrmoptionSepArg, NULL }, \r
+    { "-noGUI", "noGUI", XrmoptionNoArg, "True" }, \r
 };\r
 \r
 \r
@@ -1917,7 +1939,7 @@ xpm_getavail(dirname, ext)
     dir = opendir(dirname);\r
     if (!dir)\r
       {\r
-         fprintf(stderr, "%s: Can't access XPM directory %s\n", \r
+         fprintf(stderr, _("%s: Can't access XPM directory %s\n"), \r
                  programName, dirname);\r
          exit(1);\r
       }\r
@@ -1940,7 +1962,7 @@ xpm_print_avail(fp, ext)
 {\r
     int i;\r
 \r
-    fprintf(fp, "Available `%s' sizes:\n", ext);\r
+    fprintf(fp, _("Available `%s' sizes:\n"), ext);\r
     for (i=1; i<MAXSQSIZE; ++i) {\r
        if (xpm_avail[i])\r
          printf("%d\n", i);\r
@@ -1976,7 +1998,7 @@ xpm_closest_to(dirname, size, ext)
     }\r
 \r
     if (!sm_index) {\r
-       fprintf(stderr, "Error: No `%s' files!\n", ext);\r
+       fprintf(stderr, _("Error: No `%s' files!\n"), ext);\r
        exit(1);\r
     }\r
 \r
@@ -1992,10 +2014,11 @@ xpm_closest_to(dirname, size, ext)
      int size;\r
      char *ext;\r
 {\r
-    fprintf(stderr, "Warning: No DIR structure found on this system --\n");\r
-    fprintf(stderr, "         Unable to autosize for XPM/XIM pieces.\n");\r
-    fprintf(stderr, "   Please report this error to frankm@hiwaay.net.\n");\r
-    fprintf(stderr, "   Include system type & operating system in message.\n");\r
+    fprintf(stderr, _("\\r
+Warning: No DIR structure found on this system --\n\\r
+         Unable to autosize for XPM/XIM pieces.\n\\r
+   Please report this error to frankm@hiwaay.net.\n\\r
+   Include system type & operating system in message.\n"));\r
     return size;\r
 }\r
 #endif /* HAVE_DIR_STRUCT */\r
@@ -2052,7 +2075,7 @@ parse_color(str, which)
     }\r
     if (!StrCaseCmp(buf, "default")) return -1;\r
 \r
-    fprintf(stderr, "%s: unrecognized color %s\n", programName, buf);\r
+    fprintf(stderr, _("%s: unrecognized color %s\n"), programName, buf);\r
     return -2;\r
 }\r
 \r
@@ -2062,7 +2085,7 @@ parse_cpair(cc, str)
      char *str;\r
 {\r
     if ((textColors[(int)cc].fg=parse_color(str, 0)) == -2) {\r
-       fprintf(stderr, "%s: can't parse foreground color in `%s'\n",\r
+       fprintf(stderr, _("%s: can't parse foreground color in `%s'\n"),\r
                programName, str);\r
        return -1;\r
     }\r
@@ -2099,34 +2122,35 @@ BoardToTop()
 \r
 #ifdef IDSIZES\r
   // eventually, all layout determining code should go into a subroutine, but until then IDSIZE remains undefined\r
-#else
+#else\r
 #define BoardSize int\r
 void InitDrawingSizes(BoardSize boardSize, int flags)\r
 {   // [HGM] resize is functional now, but for board format changes only (nr of ranks, files)\r
-    Dimension timerWidth, boardWidth, boardHeight, w, h, sep, bor, wr, hr;
-    Arg args[16];
+    Dimension timerWidth, boardWidth, boardHeight, w, h, sep, bor, wr, hr;\r
+    Arg args[16];\r
     XtGeometryResult gres;\r
-    int i;
-
+    int i;\r
+\r
     if(!formWidget) return;\r
-
+\r
     /*\r
      * Enable shell resizing.\r
      */\r
     shellArgs[0].value = (XtArgVal) &w;\r
     shellArgs[1].value = (XtArgVal) &h;\r
     XtGetValues(shellWidget, shellArgs, 2);\r
-
+\r
     shellArgs[4].value = 2*w; shellArgs[2].value = 10;\r
     shellArgs[5].value = 2*h; shellArgs[3].value = 10;\r
-    XtSetValues(shellWidget, &shellArgs[2], 4);
+    XtSetValues(shellWidget, &shellArgs[2], 4);\r
 \r
-    XtSetArg(args[0], XtNdefaultDistance, &sep);\r    XtGetValues(formWidget, args, 1);
+    XtSetArg(args[0], XtNdefaultDistance, &sep);\r
+    XtGetValues(formWidget, args, 1);\r
 \r
     boardWidth = lineGap + BOARD_WIDTH * (squareSize + lineGap);\r
-    boardHeight = lineGap + BOARD_HEIGHT * (squareSize + lineGap);
+    boardHeight = lineGap + BOARD_HEIGHT * (squareSize + lineGap);\r
     CreateGrid();\r
-
+\r
     XtSetArg(args[0], XtNwidth, boardWidth);\r
     XtSetArg(args[1], XtNheight, boardHeight);\r
     XtSetValues(boardWidget, args, 2);\r
@@ -2137,7 +2161,7 @@ void InitDrawingSizes(BoardSize boardSize, int flags)
     XtSetValues(blackTimerWidget, args, 1);\r
 \r
     XawFormDoLayout(formWidget, False);\r
-
+\r
     if (appData.titleInWindow) {\r
        i = 0;\r
        XtSetArg(args[i], XtNborderWidth, &bor); i++;\r
@@ -2154,16 +2178,16 @@ void InitDrawingSizes(BoardSize boardSize, int flags)
        gres = XtMakeResizeRequest(titleWidget, w, h, &wr, &hr);\r
        if (gres != XtGeometryYes && appData.debugMode) {\r
            fprintf(stderr,\r
-                   "%s: titleWidget geometry error %d %d %d %d %d\n",\r
+                   _("%s: titleWidget geometry error %d %d %d %d %d\n"),\r
                    programName, gres, w, h, wr, hr);\r
        }\r
     }\r
 \r
     XawFormDoLayout(formWidget, True);\r
-
+\r
     /*\r
      * Inhibit shell resizing.\r
-     */
+     */\r
     shellArgs[0].value = w = (XtArgVal) boardWidth + marginW;\r
     shellArgs[1].value = h = (XtArgVal) boardHeight + marginH;\r
     shellArgs[4].value = shellArgs[2].value = w;\r
@@ -2185,51 +2209,51 @@ main(argc, argv)
     XtGeometryResult gres;\r
     char *p;\r
     XrmDatabase xdb;\r
-    int forceMono = False;
+    int forceMono = False;\r
 #define INDIRECTION\r
-#ifdef INDIRECTION
-    // [HGM] before anything else, expand any indirection files amongst options
-    char *argvCopy[1000]; // 1000 seems enough
-    char newArgs[10000];  // holds actual characters
-    int k = 0;
-
-    srandom(time(0)); // [HGM] book: make random truly random
-
-    j = 0;
-    for(i=0; i<argc; i++) {
-       if(j >= 1000-2) { printf("too many arguments\n"); exit(-1); }
-//fprintf(stderr, "arg %s\n", argv[i]);
-       if(argv[i][0] != '@') argvCopy[j++] = argv[i]; else {
-           char c;
-           FILE *f = fopen(argv[i]+1, "rb");
-           if(f == NULL) { fprintf(stderr, "ignore %s\n", argv[i]); continue; } // do not expand non-existing
-           argvCopy[j++] = newArgs + k; // get ready for first argument from file
-           while((c = fgetc(f)) != EOF) { // each line of file inserts 1 argument in the list
-               if(c == '\n') {
-                   if(j >= 1000-2) { printf("too many arguments\n"); exit(-1); }
-                   newArgs[k++] = 0;  // terminate current arg
-                   if(k >= 10000-1) { printf("too long arguments\n"); exit(-1); }
-                   argvCopy[j++] = newArgs + k; // get ready for next
-               } else {
-                   if(k >= 10000-1) { printf("too long arguments\n"); exit(-1); }
-                   newArgs[k++] = c;
-               }
-           }
-           newArgs[k] = 0;
-           j--;
-           fclose(f);
-       }
-    }
-    argvCopy[j] = NULL;
-    argv = argvCopy;
-    argc = j;
-#if 0
-    if(appData.debugMode,1) { // OK, appData is not initialized here yet...
-       for(i=0; i<argc; i++) fprintf(stderr, "argv[%2d] = '%s'\n", i, argv[i]);
-    }
-#endif
-#endif
-
+#ifdef INDIRECTION\r
+    // [HGM] before anything else, expand any indirection files amongst options\r
+    char *argvCopy[1000]; // 1000 seems enough\r
+    char newArgs[10000];  // holds actual characters\r
+    int k = 0;\r
+\r
+    srandom(time(0)); // [HGM] book: make random truly random\r
+\r
+    j = 0;\r
+    for(i=0; i<argc; i++) {\r
+       if(j >= 1000-2) { printf(_("too many arguments\n")); exit(-1); }\r
+//fprintf(stderr, "arg %s\n", argv[i]);\r
+       if(argv[i][0] != '@') argvCopy[j++] = argv[i]; else {\r
+           char c;\r
+           FILE *f = fopen(argv[i]+1, "rb");\r
+           if(f == NULL) { fprintf(stderr, _("ignore %s\n"), argv[i]); continue; } // do not expand non-existing\r
+           argvCopy[j++] = newArgs + k; // get ready for first argument from file\r
+           while((c = fgetc(f)) != EOF) { // each line of file inserts 1 argument in the list\r
+               if(c == '\n') {\r
+                   if(j >= 1000-2) { printf(_("too many arguments\n")); exit(-1); }\r
+                   newArgs[k++] = 0;  // terminate current arg\r
+                   if(k >= 10000-1) { printf(_("too long arguments\n")); exit(-1); }\r
+                   argvCopy[j++] = newArgs + k; // get ready for next\r
+               } else {\r
+                   if(k >= 10000-1) { printf(_("too long arguments\n")); exit(-1); }\r
+                   newArgs[k++] = c;\r
+               }\r
+           }\r
+           newArgs[k] = 0;\r
+           j--;\r
+           fclose(f);\r
+       }\r
+    }\r
+    argvCopy[j] = NULL;\r
+    argv = argvCopy;\r
+    argc = j;\r
+#if 0\r
+    if(appData.debugMode,1) { // OK, appData is not initialized here yet...\r
+       for(i=0; i<argc; i++) fprintf(stderr, "argv[%2d] = '%s'\n", i, argv[i]);\r
+    }\r
+#endif\r
+#endif\r
+\r
 \r
     setbuf(stdout, NULL);\r
     setbuf(stderr, NULL);\r
@@ -2241,12 +2265,19 @@ main(argc, argv)
     else\r
       programName++;\r
 \r
+#ifdef ENABLE_NLS\r
+    XtSetLanguageProc(NULL, NULL, NULL);\r
+    bindtextdomain(PRODUCT, LOCALEDIR);\r
+    bind_textdomain_codeset(PRODUCT, "UTF-8");\r
+    textdomain(PRODUCT);\r
+#endif\r
+\r
     shellWidget =\r
       XtAppInitialize(&appContext, "XBoard", shellOptions,\r
                      XtNumber(shellOptions),\r
                      &argc, argv, xboardResources, NULL, 0);\r
     if (argc > 1) {\r
-       fprintf(stderr, "%s: unrecognized argument %s\n",\r
+       fprintf(stderr, _("%s: unrecognized argument %s\n"),\r
                programName, argv[1]);\r
        exit(2);\r
     }\r
@@ -2255,7 +2286,7 @@ main(argc, argv)
        chessDir = ".";\r
     } else {\r
        if (chdir(chessDir) != 0) {\r
-           fprintf(stderr, "%s: can't cd to CHESSDIR: ", programName);\r
+           fprintf(stderr, _("%s: can't cd to CHESSDIR: "), programName);\r
            perror(chessDir);\r
            exit(1);\r
        }\r
@@ -2273,10 +2304,19 @@ main(argc, argv)
                              clientResources, XtNumber(clientResources),\r
                              NULL, 0);\r
 \r
+    if (appData.debugMode && appData.nameOfDebugFile && strcmp(appData.nameOfDebugFile, "stderr")) {\r
+       /* [DM] debug info to file [HGM] make the filename a command-line option, and allow it to remain stderr */\r
+        if ((debugFP = fopen(appData.nameOfDebugFile, "w")) == NULL)  {\r
+           printf(_("Failed to open file '%s'\n"), appData.nameOfDebugFile);\r
+           exit(errno);\r
+        }\r
+        setbuf(debugFP, NULL);\r
+    }\r
+    \r
     /* [HGM,HR] make sure board size is acceptable */\r
     if(appData.NrFiles > BOARD_SIZE ||\r
        appData.NrRanks > BOARD_SIZE   )\r
-        DisplayFatalError("Recompile with BOARD_SIZE > 12, to support this size", 0, 2);\r
+        DisplayFatalError(_("Recompile with BOARD_SIZE > 12, to support this size"), 0, 2);\r
 \r
 #if !HIGHDRAG\r
     /* This feature does not work; animation needs a rewrite */\r
@@ -2312,7 +2352,7 @@ main(argc, argv)
                   &lineGap, &clockFontPxlSize, &coordFontPxlSize,\r
                   &fontPxlSize, &smallLayout, &tinyLayout);\r
         if (i == 0) {\r
-           fprintf(stderr, "%s: bad boardSize syntax %s\n",\r
+           fprintf(stderr, _("%s: bad boardSize syntax %s\n"),\r
                    programName, appData.boardSize);\r
            exit(2);\r
        }\r
@@ -2348,7 +2388,7 @@ main(argc, argv)
            while (szd->name != NULL &&\r
                   StrCaseCmp(szd->name, appData.boardSize) != 0) szd++;\r
            if (szd->name == NULL) {\r
-               fprintf(stderr, "%s: unrecognized boardSize name %s\n",\r
+               fprintf(stderr, _("%s: unrecognized boardSize name %s\n"),\r
                        programName, appData.boardSize);\r
                exit(2);\r
            }\r
@@ -2366,17 +2406,18 @@ main(argc, argv)
     if (strlen(appData.pixmapDirectory) > 0) {\r
        p = ExpandPathName(appData.pixmapDirectory);\r
        if (!p) {\r
-           fprintf(stderr, "Error expanding path name \"%s\"\n",\r
+           fprintf(stderr, _("Error expanding path name \"%s\"\n"),\r
                   appData.pixmapDirectory);\r
            exit(1);\r
        }\r
        if (appData.debugMode) {\r
-           fprintf(stderr, "XBoard square size (hint): %d\n", squareSize);\r
-           fprintf(stderr, "%s fulldir:%s:\n", IMAGE_EXT, p);\r
+          fprintf(stderr, _("\\r
+XBoard square size (hint): %d\n\\r
+%s fulldir:%s:\n"), squareSize, IMAGE_EXT, p);\r
        }\r
        squareSize = xpm_closest_to(p, squareSize, IMAGE_EXT);\r
        if (appData.debugMode) {\r
-           fprintf(stderr, "Closest %s size: %d\n", IMAGE_EXT, squareSize);\r
+           fprintf(stderr, _("Closest %s size: %d\n"), IMAGE_EXT, squareSize);\r
        }\r
     }\r
                \r
@@ -2493,12 +2534,12 @@ main(argc, argv)
     }\r
 \r
     if (forceMono) {\r
-      fprintf(stderr, "%s: too few colors available; trying monochrome mode\n",\r
+      fprintf(stderr, _("%s: too few colors available; trying monochrome mode\n"),\r
              programName);\r
     }\r
 \r
     if (appData.monoMode && appData.debugMode) {\r
-       fprintf(stderr, "white pixel = 0x%lx, black pixel = 0x%lx\n",\r
+       fprintf(stderr, _("white pixel = 0x%lx, black pixel = 0x%lx\n"),\r
                (unsigned long) XWhitePixel(xDisplay, xScreen),\r
                (unsigned long) XBlackPixel(xDisplay, xScreen));\r
     }\r
@@ -2516,7 +2557,7 @@ main(argc, argv)
       {\r
          if (appData.colorize) {\r
              fprintf(stderr,\r
-                     "%s: can't parse color names; disabling colorization\n",\r
+                     _("%s: can't parse color names; disabling colorization\n"),\r
                      programName);\r
          }\r
          appData.colorize = FALSE;\r
@@ -2550,7 +2591,7 @@ main(argc, argv)
     j = 0;\r
     widgetList[j++] = menuBarWidget = CreateMenuBar(menuBar);\r
     XtSetArg(args[0], XtNtop,    XtChainTop);\r
-    XtSetArg(args[1], XtNbottom, XtChainTop);
+    XtSetArg(args[1], XtNbottom, XtChainTop);\r
     XtSetValues(menuBarWidget, args, 2);\r
 \r
     widgetList[j++] = whiteTimerWidget =\r
@@ -2558,7 +2599,7 @@ main(argc, argv)
                     formWidget, timerArgs, XtNumber(timerArgs));\r
     XtSetArg(args[0], XtNfont, clockFontStruct);\r
     XtSetArg(args[1], XtNtop,    XtChainTop);\r
-    XtSetArg(args[2], XtNbottom, XtChainTop);
+    XtSetArg(args[2], XtNbottom, XtChainTop);\r
     XtSetValues(whiteTimerWidget, args, 3);\r
     \r
     widgetList[j++] = blackTimerWidget =\r
@@ -2566,7 +2607,7 @@ main(argc, argv)
                     formWidget, timerArgs, XtNumber(timerArgs));\r
     XtSetArg(args[0], XtNfont, clockFontStruct);\r
     XtSetArg(args[1], XtNtop,    XtChainTop);\r
-    XtSetArg(args[2], XtNbottom, XtChainTop);
+    XtSetArg(args[2], XtNbottom, XtChainTop);\r
     XtSetValues(blackTimerWidget, args, 3);\r
     \r
     if (appData.titleInWindow) {\r
@@ -2574,24 +2615,24 @@ main(argc, argv)
          XtCreateWidget("title", labelWidgetClass, formWidget,\r
                         titleArgs, XtNumber(titleArgs));\r
        XtSetArg(args[0], XtNtop,    XtChainTop);\r
-       XtSetArg(args[1], XtNbottom, XtChainTop);
+       XtSetArg(args[1], XtNbottom, XtChainTop);\r
        XtSetValues(titleWidget, args, 2);\r
     }\r
 \r
     if (appData.showButtonBar) {\r
       widgetList[j++] = buttonBarWidget = CreateButtonBar(buttonBar);\r
       XtSetArg(args[0], XtNleft,  XtChainRight); // [HGM] glue to right window edge\r
-      XtSetArg(args[1], XtNright, XtChainRight); //       for good run-time sizing
+      XtSetArg(args[1], XtNright, XtChainRight); //       for good run-time sizing\r
       XtSetArg(args[2], XtNtop,    XtChainTop);\r
-      XtSetArg(args[3], XtNbottom, XtChainTop);
+      XtSetArg(args[3], XtNbottom, XtChainTop);\r
       XtSetValues(buttonBarWidget, args, 4);\r
     }\r
 \r
     widgetList[j++] = messageWidget =\r
       XtCreateWidget("message", labelWidgetClass, formWidget,\r
-                    messageArgs, XtNumber(messageArgs));
+                    messageArgs, XtNumber(messageArgs));\r
     XtSetArg(args[0], XtNtop,    XtChainTop);\r
-    XtSetArg(args[1], XtNbottom, XtChainTop);
+    XtSetArg(args[1], XtNbottom, XtChainTop);\r
     XtSetValues(messageWidget, args, 2);\r
 \r
     widgetList[j++] = boardWidget =\r
@@ -2689,9 +2730,9 @@ main(argc, argv)
     i = 0;\r
     XtSetArg(args[0], XtNfromVert, messageWidget);\r
     XtSetArg(args[1], XtNtop,    XtChainTop);\r
-    XtSetArg(args[2], XtNbottom, XtChainBottom);
+    XtSetArg(args[2], XtNbottom, XtChainBottom);\r
     XtSetArg(args[3], XtNleft,   XtChainLeft);\r
-    XtSetArg(args[4], XtNright,  XtChainRight);
+    XtSetArg(args[4], XtNright,  XtChainRight);\r
     XtSetValues(boardWidget, args, 5);\r
 \r
     XtRealizeWidget(shellWidget);\r
@@ -2702,7 +2743,7 @@ main(argc, argv)
      * The value "2" is probably larger than needed.\r
      */\r
     XawFormDoLayout(formWidget, False);\r
-
+\r
 #define WIDTH_FUDGE 2\r
     i = 0;\r
     XtSetArg(args[i], XtNborderWidth, &bor);  i++;\r
@@ -2719,7 +2760,7 @@ main(argc, argv)
 \r
     gres = XtMakeResizeRequest(messageWidget, w, h, &wr, &hr);\r
     if (gres != XtGeometryYes && appData.debugMode) {\r
-      fprintf(stderr, "%s: messageWidget geometry error %d %d %d %d %d\n",\r
+      fprintf(stderr, _("%s: messageWidget geometry error %d %d %d %d %d\n"),\r
              programName, gres, w, h, wr, hr);\r
     }\r
     \r
@@ -2729,12 +2770,12 @@ main(argc, argv)
     w--;\r
     gres = XtMakeResizeRequest(messageWidget, w, h, &wr, &hr);\r
     if (gres != XtGeometryYes && appData.debugMode) {\r
-      fprintf(stderr, "%s: messageWidget geometry error %d %d %d %d %d\n",\r
+      fprintf(stderr, _("%s: messageWidget geometry error %d %d %d %d %d\n"),\r
              programName, gres, w, h, wr, hr);\r
     }\r
     /* !! end hack */\r
     XtSetArg(args[0], XtNleft,  XtChainLeft);  // [HGM] glue ends for good run-time sizing\r
-    XtSetArg(args[1], XtNright, XtChainRight);
+    XtSetArg(args[1], XtNright, XtChainRight);\r
     XtSetValues(messageWidget, args, 2);\r
 \r
     if (appData.titleInWindow) {\r
@@ -2753,7 +2794,7 @@ main(argc, argv)
        gres = XtMakeResizeRequest(titleWidget, w, h, &wr, &hr);\r
        if (gres != XtGeometryYes && appData.debugMode) {\r
            fprintf(stderr,\r
-                   "%s: titleWidget geometry error %d %d %d %d %d\n",\r
+                   _("%s: titleWidget geometry error %d %d %d %d %d\n"),\r
                    programName, gres, w, h, wr, hr);\r
        }\r
     }\r
@@ -2917,7 +2958,7 @@ main(argc, argv)
     XtGetValues(shellWidget, shellArgs, 2);\r
     shellArgs[4].value = shellArgs[2].value = w;\r
     shellArgs[5].value = shellArgs[3].value = h;\r
-    XtSetValues(shellWidget, &shellArgs[2], 4);
+    XtSetValues(shellWidget, &shellArgs[2], 4);\r
     marginW =  w - boardWidth; // [HGM] needed to set new shellWidget size when we resize board\r
     marginH =  h - boardHeight;\r
 \r
@@ -2976,6 +3017,7 @@ main(argc, argv)
        InitPosition(TRUE);\r
 \r
     XtAppMainLoop(appContext);\r
+    if (appData.debugMode) fclose(debugFP); // [DM] debug\r
     return 0;\r
 }\r
 \r
@@ -3229,6 +3271,11 @@ Enables userThinkingEnables[] = {
 void SetICSMode()\r
 {\r
   SetMenuEnables(icsEnables);\r
+\r
+#ifdef ZIPPY\r
+  if (appData.zippyPlay && !appData.noChessProgram)   /* [DM] icsEngineAnalyze */\r
+     XtSetSensitive(XtNameToWidget(menuBarWidget, "menuMode.Analysis Mode"), True);\r
+#endif\r
 }\r
 \r
 void\r
@@ -3310,12 +3357,40 @@ char *FindFont(pattern, targetPxlSize)
     char **fonts, *p, *best, *scalable, *scalableTail;\r
     int i, j, nfonts, minerr, err, pxlSize;\r
 \r
+#ifdef ENABLE_NLS\r
+    char **missing_list;\r
+    int missing_count;\r
+    char *def_string, *base_fnt_lst, strInt[3];\r
+    XFontSet fntSet;\r
+    XFontStruct **fnt_list;\r
+\r
+    base_fnt_lst = calloc(1, strlen(pattern) + 3);\r
+    sprintf(strInt, "%d", targetPxlSize);\r
+    p = strstr(pattern, "--");\r
+    strncpy(base_fnt_lst, pattern, p - pattern + 2);\r
+    strcat(base_fnt_lst, strInt);\r
+    strcat(base_fnt_lst, strchr(p + 2, '-'));\r
+\r
+    if ((fntSet = XCreateFontSet(xDisplay, \r
+                                 base_fnt_lst, \r
+                                 &missing_list, \r
+                                 &missing_count, \r
+                                 &def_string)) == NULL) {\r
+\r
+       fprintf(stderr, _("Unable to create font set.\n"));\r
+       exit (2);\r
+    }\r
+\r
+    nfonts = XFontsOfFontSet(fntSet, &fnt_list, &fonts);\r
+#else\r
     fonts = XListFonts(xDisplay, pattern, 999999, &nfonts);\r
     if (nfonts < 1) {\r
-       fprintf(stderr, "%s: no fonts match pattern %s\n",\r
+       fprintf(stderr, _("%s: no fonts match pattern %s\n"),\r
                programName, pattern);\r
        exit(2);\r
     }\r
+#endif\r
+\r
     best = fonts[0];\r
     scalable = NULL;\r
     minerr = 999999;\r
@@ -3353,10 +3428,16 @@ char *FindFont(pattern, targetPxlSize)
         strcpy(p, best);\r
     }\r
     if (appData.debugMode) {\r
-        fprintf(debugFP, "resolved %s at pixel size %d\n  to %s\n",\r
+        fprintf(debugFP, _("resolved %s at pixel size %d\n  to %s\n"),\r
                pattern, targetPxlSize, p);\r
     }\r
-    XFreeFontNames(fonts);\r
+#ifdef ENABLE_NLS\r
+    if (missing_count > 0)\r
+       XFreeStringList(missing_list);\r
+    XFreeFontSet(xDisplay, fntSet);\r
+#else\r
+     XFreeFontNames(fonts);\r
+#endif\r
     return p;\r
 }\r
 \r
@@ -3381,7 +3462,7 @@ void CreateGCs()
     coordGC = XtGetGC(shellWidget, value_mask, &gc_values);\r
     XSetFont(xDisplay, coordGC, coordFontID);\r
     \r
-    // [HGM] make font for holdings counts (white on black0
+    // [HGM] make font for holdings counts (white on black0\r
     gc_values.foreground = XWhitePixel(xDisplay, xScreen);\r
     gc_values.background = XBlackPixel(xDisplay, xScreen);\r
     countGC = XtGetGC(shellWidget, value_mask, &gc_values);\r
@@ -3477,7 +3558,7 @@ void loadXIM(xim, xmask, filename, dest, mask)
 \r
     fp = fopen(filename, "rb");\r
     if (!fp) {\r
-       fprintf(stderr, "%s: error loading XIM!\n", programName);\r
+       fprintf(stderr, _("%s: error loading XIM!\n"), programName);\r
        exit(1);\r
     }\r
          \r
@@ -3569,11 +3650,11 @@ void CreateXIMPieces()
     } else {\r
        useImages = 1;\r
        if (appData.monoMode) {\r
-         DisplayFatalError("XIM pieces cannot be used in monochrome mode",\r
+         DisplayFatalError(_("XIM pieces cannot be used in monochrome mode"),\r
                            0, 2);\r
          ExitEvent(2);\r
        }\r
-       fprintf(stderr, "\nLoading XIMs...\n");\r
+       fprintf(stderr, _("\nLoading XIMs...\n"));\r
        /* Load pieces */\r
        for (piece = (int) WhitePawn; piece <= (int) WhiteKing; piece++) {\r
            fprintf(stderr, "%d", piece+1);\r
@@ -3587,7 +3668,7 @@ void CreateXIMPieces()
                  XGetImage(xDisplay, DefaultRootWindow(xDisplay),\r
                            0, 0, ss, ss, AllPlanes, XYPixmap);\r
                if (appData.debugMode)\r
-                 fprintf(stderr, "(File:%s:) ", buf);\r
+                 fprintf(stderr, _("(File:%s:) "), buf);\r
                loadXIM(ximPieceBitmap[kind][piece], \r
                        ximtemp, buf,\r
                        &(xpmPieceBitmap[kind][piece]),\r
@@ -3603,26 +3684,26 @@ void CreateXIMPieces()
            useImageSqs = 0;\r
        } else {\r
            useImageSqs = 1;\r
-           fprintf(stderr, "light square ");\r
+           fprintf(stderr, _("light square "));\r
            ximLightSquare= \r
              XGetImage(xDisplay, DefaultRootWindow(xDisplay),\r
                        0, 0, ss, ss, AllPlanes, XYPixmap);\r
            if (appData.debugMode)\r
-             fprintf(stderr, "(File:%s:) ", buf);\r
+             fprintf(stderr, _("(File:%s:) "), buf);\r
 \r
            loadXIM(ximLightSquare, NULL, buf, &xpmLightSquare, NULL);\r
-           fprintf(stderr, "dark square ");\r
+           fprintf(stderr, _("dark square "));\r
            sprintf(buf, "%s/dsq%u.xim",\r
                    ExpandPathName(appData.pixmapDirectory), ss);\r
            if (appData.debugMode)\r
-             fprintf(stderr, "(File:%s:) ", buf);\r
+             fprintf(stderr, _("(File:%s:) "), buf);\r
            ximDarkSquare= \r
              XGetImage(xDisplay, DefaultRootWindow(xDisplay),\r
                        0, 0, ss, ss, AllPlanes, XYPixmap);\r
            loadXIM(ximDarkSquare, NULL, buf, &xpmDarkSquare, NULL);\r
            xpmJailSquare = xpmLightSquare;\r
        }\r
-       fprintf(stderr, "Done.\n");\r
+       fprintf(stderr, _("Done.\n"));\r
     }\r
     XSynchronize(xDisplay, False); /* Work-around for xlib/xt buffering bug */\r
 }\r
@@ -3664,7 +3745,7 @@ void CreateXPMPieces()
     attr.numsymbols = 4;\r
 \r
     if (appData.monoMode) {\r
-      DisplayFatalError("XPM pieces cannot be used in monochrome mode",\r
+      DisplayFatalError(_("XPM pieces cannot be used in monochrome mode"),\r
                        0, 2);\r
       ExitEvent(2);\r
     }\r
@@ -3674,7 +3755,7 @@ void CreateXPMPieces()
        /* Load pieces */\r
        while (pieces->size != squareSize && pieces->size) pieces++;\r
        if (!pieces->size) {\r
-         fprintf(stderr, "No builtin XPM pieces of size %d\n", squareSize);\r
+         fprintf(stderr, _("No builtin XPM pieces of size %d\n"), squareSize);\r
          exit(1);\r
        }\r
        for (piece = (int) WhitePawn; piece <= (int) WhiteKing; piece++) {\r
@@ -3684,7 +3765,7 @@ void CreateXPMPieces()
                                               pieces->xpm[piece][kind],\r
                                               &(xpmPieceBitmap[kind][piece]),\r
                                               NULL, &attr)) != 0) {\r
-                 fprintf(stderr, "Error %d loading XPM image \"%s\"\n",\r
+                 fprintf(stderr, _("Error %d loading XPM image \"%s\"\n"),\r
                          r, buf);\r
                  exit(1); \r
                }       \r
@@ -3695,7 +3776,7 @@ void CreateXPMPieces()
     } else {\r
        useImages = 1;\r
        \r
-       fprintf(stderr, "\nLoading XPMs...\n");\r
+       fprintf(stderr, _("\nLoading XPMs...\n"));\r
 \r
        /* Load pieces */\r
        for (piece = (int) WhitePawn; piece <= (int) WhiteKing; piece++) {\r
@@ -3706,12 +3787,12 @@ void CreateXPMPieces()
                        ToLower(PieceToChar((ChessSquare)piece)),\r
                        xpmkind[kind], ss);\r
                if (appData.debugMode) {\r
-                   fprintf(stderr, "(File:%s:) ", buf);\r
+                   fprintf(stderr, _("(File:%s:) "), buf);\r
                }\r
                if ((r=XpmReadFileToPixmap(xDisplay, xBoardWindow, buf,\r
                                           &(xpmPieceBitmap[kind][piece]),\r
                                           NULL, &attr)) != 0) {\r
-                   fprintf(stderr, "Error %d loading XPM file \"%s\"\n",\r
+                   fprintf(stderr, _("Error %d loading XPM file \"%s\"\n"),\r
                            r, buf);\r
                    exit(1); \r
                }       \r
@@ -3720,34 +3801,34 @@ void CreateXPMPieces()
        /* Load light and dark squares */\r
        /* If the LSQ and DSQ pieces don't exist, we will \r
           draw them with solid squares. */\r
-       fprintf(stderr, "light square ");\r
+       fprintf(stderr, _("light square "));\r
        sprintf(buf, "%s/lsq%u.xpm", ExpandPathName(appData.pixmapDirectory), ss);\r
        if (access(buf, 0) != 0) {\r
            useImageSqs = 0;\r
        } else {\r
            useImageSqs = 1;\r
            if (appData.debugMode)\r
-             fprintf(stderr, "(File:%s:) ", buf);\r
+             fprintf(stderr, _("(File:%s:) "), buf);\r
 \r
            if ((r=XpmReadFileToPixmap(xDisplay, xBoardWindow, buf,\r
                                       &xpmLightSquare, NULL, &attr)) != 0) {\r
-               fprintf(stderr, "Error %d loading XPM file \"%s\"\n", r, buf);\r
+               fprintf(stderr, _("Error %d loading XPM file \"%s\"\n"), r, buf);\r
                exit(1);\r
            }\r
-           fprintf(stderr, "dark square ");\r
+           fprintf(stderr, _("dark square "));\r
            sprintf(buf, "%s/dsq%u.xpm",\r
                    ExpandPathName(appData.pixmapDirectory), ss);\r
            if (appData.debugMode) {\r
-               fprintf(stderr, "(File:%s:) ", buf);\r
+               fprintf(stderr, _("(File:%s:) "), buf);\r
            }\r
            if ((r=XpmReadFileToPixmap(xDisplay, xBoardWindow, buf,\r
                                       &xpmDarkSquare, NULL, &attr)) != 0) {\r
-               fprintf(stderr, "Error %d loading XPM file \"%s\"\n", r, buf);\r
+               fprintf(stderr, _("Error %d loading XPM file \"%s\"\n"), r, buf);\r
                exit(1);\r
            }\r
        }\r
        xpmJailSquare = xpmLightSquare;\r
-       fprintf(stderr, "Done.\n");\r
+       fprintf(stderr, _("Done.\n"));\r
     }\r
     XSynchronize(xDisplay, False); /* Work-around for xlib/xt\r
                                      buffering bug */  \r
@@ -3824,25 +3905,25 @@ void ReadBitmap(pm, name, bits, wreq, hreq)
        if (errcode != BitmapSuccess) {\r
            switch (errcode) {\r
              case BitmapOpenFailed:\r
-               sprintf(msg, "Can't open bitmap file %s", fullname);\r
+               sprintf(msg, _("Can't open bitmap file %s"), fullname);\r
                break;\r
              case BitmapFileInvalid:\r
-               sprintf(msg, "Invalid bitmap in file %s", fullname);\r
+               sprintf(msg, _("Invalid bitmap in file %s"), fullname);\r
                break;\r
              case BitmapNoMemory:\r
-               sprintf(msg, "Ran out of memory reading bitmap file %s",\r
+               sprintf(msg, _("Ran out of memory reading bitmap file %s"),\r
                        fullname);\r
                break;\r
              default:\r
-               sprintf(msg, "Unknown XReadBitmapFile error %d on file %s",\r
+               sprintf(msg, _("Unknown XReadBitmapFile error %d on file %s"),\r
                        errcode, fullname);\r
                break;\r
            }\r
-           fprintf(stderr, "%s: %s...using built-in\n",\r
+           fprintf(stderr, _("%s: %s...using built-in\n"),\r
                    programName, msg);\r
        } else if (w != wreq || h != hreq) {\r
            fprintf(stderr,\r
-                   "%s: Bitmap %s is %dx%d, not %dx%d...using built-in\n",\r
+                   _("%s: Bitmap %s is %dx%d, not %dx%d...using built-in\n"),\r
                    programName, fullname, w, h, wreq, hreq);\r
        } else {\r
            return;\r
@@ -3850,7 +3931,7 @@ void ReadBitmap(pm, name, bits, wreq, hreq)
     }\r
     if (bits == NULL) {\r
 #if 0\r
-       fprintf(stderr, "%s: No built-in bitmap for %s; giving up\n",\r
+       fprintf(stderr, _("%s: No built-in bitmap for %s; giving up\n"),\r
                programName, name);\r
        exit(1);\r
 #endif\r
@@ -3917,8 +3998,9 @@ void CreateMenuBarPopup(parent, name, mb)
            entry = XtCreateManagedWidget(mi->string, smeLineObjectClass,\r
                                          menu, args, j);\r
        } else {\r
+          XtSetArg(args[j], XtNlabel, XtNewString(_(mi->string)));\r
            entry = XtCreateManagedWidget(mi->string, smeBSBObjectClass,\r
-                                         menu, args, j);\r
+                                         menu, args, j+1);\r
            XtAddCallback(entry, XtNcallback,\r
                          (XtCallbackProc) MenuBarSelect,\r
                          (caddr_t) mi->proc);\r
@@ -3949,10 +4031,14 @@ Widget CreateMenuBar(mb)
        XtSetArg(args[j], XtNmenuName, XtNewString(menuName));  j++;\r
        if (tinyLayout) {\r
            char shortName[2];\r
-           shortName[0] = mb->name[0];\r
+            shortName[0] = _(mb->name)[0];\r
            shortName[1] = NULLCHAR;\r
            XtSetArg(args[j], XtNlabel, XtNewString(shortName)); j++;\r
        }\r
+      else {\r
+          XtSetArg(args[j], XtNlabel, XtNewString(_(mb->name))); j++;\r
+      }\r
+\r
        XtSetArg(args[j], XtNborderWidth, 0);                   j++;\r
        anchor = XtCreateManagedWidget(mb->name, menuButtonWidgetClass,\r
                                       menuBar, args, j);\r
@@ -3985,6 +4071,7 @@ Widget CreateButtonBar(mi)
            XtSetArg(args[j], XtNinternalWidth, 2); j++;\r
            XtSetArg(args[j], XtNborderWidth, 0); j++;\r
        }\r
+      XtSetArg(args[j], XtNlabel, XtNewString(_(mi->string))); j++;\r
        button = XtCreateManagedWidget(mi->string, commandWidgetClass,\r
                                       buttonBar, args, j);\r
        XtAddCallback(button, XtNcallback,\r
@@ -4015,8 +4102,9 @@ CreatePieceMenu(name, color)
            entry = XtCreateManagedWidget(item, smeLineObjectClass,\r
                                          menu, NULL, 0);\r
        } else {\r
+          XtSetArg(args[0], XtNlabel, XtNewString(_(item))); \r
            entry = XtCreateManagedWidget(item, smeBSBObjectClass,\r
-                                         menu, NULL, 0);\r
+                                menu, args, 1);\r
            selection = pieceMenuTranslation[color][i];\r
            XtAddCallback(entry, XtNcallback,\r
                          (XtCallbackProc) PieceMenuSelect,\r
@@ -4045,7 +4133,7 @@ CreatePieceMenus()
                         (unsigned)(ButtonPressMask|ButtonReleaseMask),\r
                         GrabModeAsync, GrabModeAsync);\r
 \r
-    XtSetArg(args[0], XtNlabel, "Drop");\r
+    XtSetArg(args[0], XtNlabel, _("Drop"));\r
     dropMenu = XtCreatePopupShell("menuD", simpleMenuWidgetClass,\r
                                  boardWidget, args, 1);\r
     for (i = 0; i < DROP_MENU_SIZE; i++) {\r
@@ -4055,8 +4143,9 @@ CreatePieceMenus()
            entry = XtCreateManagedWidget(item, smeLineObjectClass,\r
                                          dropMenu, NULL, 0);\r
        } else {\r
+          XtSetArg(args[0], XtNlabel, XtNewString(_(item))); \r
            entry = XtCreateManagedWidget(item, smeBSBObjectClass,\r
-                                         dropMenu, NULL, 0);\r
+                                dropMenu, args, 1);\r
            selection = dropMenuTranslation[i];\r
            XtAddCallback(entry, XtNcallback,\r
                          (XtCallbackProc) DropMenuSelect,\r
@@ -4502,17 +4591,17 @@ void DrawSquare(row, column, piece, do_flash)
     DrawFunc drawfunc;\r
     int flash_delay;\r
 \r
-    if(gameInfo.variant == VariantShogi) { // [HGM] shogi: in shogi Q is used for Lance
-       if(piece == WhiteQueen) piece = WhiteLance; else
-       if(piece == BlackQueen) piece = BlackLance;
-    }
-#ifdef GOTHIC
-    else if(gameInfo.variant == VariantGothic) { // [HGM] shogi: in Gothic Chancelor has alternative look
-       if(piece == WhiteMarshall) piece = WhiteSilver; else
-       if(piece == BlackMarshall) piece = BlackSilver;
-    }
-#endif
-
+    if(gameInfo.variant == VariantShogi) { // [HGM] shogi: in shogi Q is used for Lance\r
+       if(piece == WhiteQueen) piece = WhiteLance; else\r
+       if(piece == BlackQueen) piece = BlackLance;\r
+    }\r
+#ifdef GOTHIC\r
+    else if(gameInfo.variant == VariantGothic) { // [HGM] shogi: in Gothic Chancelor has alternative look\r
+       if(piece == WhiteMarshall) piece = WhiteSilver; else\r
+       if(piece == BlackMarshall) piece = BlackSilver;\r
+    }\r
+#endif\r
+\r
     /* Calculate delay in milliseconds (2-delays per complete flash) */\r
     flash_delay = 500 / appData.flashRate;\r
        \r
@@ -4532,9 +4621,9 @@ void DrawSquare(row, column, piece, do_flash)
                  column == BOARD_LEFT-1 ||  column == BOARD_RGHT\r
               || (column == BOARD_LEFT-2 && row < BOARD_HEIGHT-gameInfo.holdingsSize)\r
                  || (column == BOARD_RGHT+1 && row >= gameInfo.holdingsSize) ) {\r
-                       BlankSquare(x, y, 2, EmptySquare, xBoardWindow);
+                       BlankSquare(x, y, 2, EmptySquare, xBoardWindow);\r
 \r
-                       // [HGM] print piece counts next to holdings
+                       // [HGM] print piece counts next to holdings\r
                        string[1] = NULLCHAR;\r
                        if (column == (flipView ? BOARD_LEFT-1 : BOARD_RGHT) && piece > 1 ) {\r
                            string[0] = '0' + piece;\r
@@ -4584,7 +4673,7 @@ void DrawSquare(row, column, piece, do_flash)
        }\r
        \r
     string[1] = NULLCHAR;\r
-    if (appData.showCoords && row == (flipView ? BOARD_HEIGHT-1 : 0)
+    if (appData.showCoords && row == (flipView ? BOARD_HEIGHT-1 : 0)\r
                && column >= BOARD_LEFT && column < BOARD_RGHT) {\r
        string[0] = 'a' + column - BOARD_LEFT;\r
        XTextExtents(coordFontStruct, string, 1, &direction, \r
@@ -5055,7 +5144,7 @@ Widget CommentCreate(name, text, mutable, callback, lines)
        XtSetArg(args[j], XtNleft, XtChainLeft); j++;\r
        XtSetArg(args[j], XtNright, XtChainLeft); j++;\r
        b_ok =\r
-         XtCreateManagedWidget("ok", commandWidgetClass, form, args, j);\r
+         XtCreateManagedWidget(_("ok"), commandWidgetClass, form, args, j);\r
        XtAddCallback(b_ok, XtNcallback, callback, (XtPointer) 0);\r
 \r
        j = 0;\r
@@ -5066,7 +5155,7 @@ Widget CommentCreate(name, text, mutable, callback, lines)
        XtSetArg(args[j], XtNleft, XtChainLeft); j++;\r
        XtSetArg(args[j], XtNright, XtChainLeft); j++;\r
        b_cancel =\r
-         XtCreateManagedWidget("cancel", commandWidgetClass, form, args, j);\r
+         XtCreateManagedWidget(_("cancel"), commandWidgetClass, form, args, j);\r
        XtAddCallback(b_cancel, XtNcallback, callback, (XtPointer) 0);\r
 \r
        j = 0;\r
@@ -5077,7 +5166,7 @@ Widget CommentCreate(name, text, mutable, callback, lines)
        XtSetArg(args[j], XtNleft, XtChainLeft); j++;\r
        XtSetArg(args[j], XtNright, XtChainLeft); j++;\r
        b_clear =\r
-         XtCreateManagedWidget("clear", commandWidgetClass, form, args, j);\r
+         XtCreateManagedWidget(_("clear"), commandWidgetClass, form, args, j);\r
        XtAddCallback(b_clear, XtNcallback, callback, (XtPointer) 0);\r
     } else {\r
        j = 0;\r
@@ -5087,7 +5176,7 @@ Widget CommentCreate(name, text, mutable, callback, lines)
        XtSetArg(args[j], XtNleft, XtChainLeft); j++;\r
        XtSetArg(args[j], XtNright, XtChainLeft); j++;\r
        b_close =\r
-         XtCreateManagedWidget("close", commandWidgetClass, form, args, j);\r
+         XtCreateManagedWidget(_("close"), commandWidgetClass, form, args, j);\r
        XtAddCallback(b_close, XtNcallback, callback, (XtPointer) 0);\r
 \r
        j = 0;\r
@@ -5098,7 +5187,7 @@ Widget CommentCreate(name, text, mutable, callback, lines)
        XtSetArg(args[j], XtNleft, XtChainLeft); j++;\r
        XtSetArg(args[j], XtNright, XtChainLeft); j++;\r
        b_edit =\r
-         XtCreateManagedWidget("edit", commandWidgetClass, form, args, j);\r
+         XtCreateManagedWidget(_("edit"), commandWidgetClass, form, args, j);\r
        XtAddCallback(b_edit, XtNcallback, callback, (XtPointer) 0);\r
     }\r
 \r
@@ -5299,16 +5388,16 @@ void EditCommentCallback(w, client_data, call_data)
     XtSetArg(args[j], XtNlabel, &name);  j++;\r
     XtGetValues(w, args, j);\r
 \r
-    if (strcmp(name, "ok") == 0) {\r
+    if (strcmp(name, _("ok")) == 0) {\r
        edit = XtNameToWidget(editShell, "*form.text");\r
        j = 0;\r
        XtSetArg(args[j], XtNstring, &val); j++;\r
        XtGetValues(edit, args, j);\r
        ReplaceComment(savedIndex, val);\r
        EditCommentPopDown();\r
-    } else if (strcmp(name, "cancel") == 0) {\r
+    } else if (strcmp(name, _("cancel")) == 0) {\r
        EditCommentPopDown();\r
-    } else if (strcmp(name, "clear") == 0) {\r
+    } else if (strcmp(name, _("clear")) == 0) {\r
        edit = XtNameToWidget(editShell, "*form.text");\r
        XtCallActionProc(edit, "select-all", NULL, NULL, 0);\r
        XtCallActionProc(edit, "kill-selection", NULL, NULL, 0);\r
@@ -5340,7 +5429,7 @@ void ICSInputBoxPopUp()
     Widget edit;\r
     Arg args[16];\r
     int j;\r
-    char *title = "ICS Input";\r
+    char *title = _("ICS Input");\r
     XtTranslations tr;\r
        \r
     if (ICSInputShell == NULL) {\r
@@ -5475,9 +5564,9 @@ void CommentCallback(w, client_data, call_data)
     XtSetArg(args[j], XtNlabel, &name);  j++;\r
     XtGetValues(w, args, j);\r
 \r
-    if (strcmp(name, "close") == 0) {\r
+    if (strcmp(name, _("close")) == 0) {\r
        CommentPopDown();\r
-    } else if (strcmp(name, "edit") == 0) {\r
+    } else if (strcmp(name, _("edit")) == 0) {\r
        CommentPopDown();\r
        EditCommentEvent();\r
     }\r
@@ -5507,6 +5596,7 @@ void AnalysisPopDown()
     XtPopdown(analysisShell);\r
     XSync(xDisplay, False);\r
     analysisUp = False;\r
+    if (appData.icsEngineAnalyze) ExitAnalyzeMode();    /* [DM] icsEngineAnalyze */\r
 }\r
 \r
 \r
@@ -5529,6 +5619,7 @@ void FileNamePopUp(label, def, proc, openMode)
     i = 0;\r
     XtSetArg(args[i], XtNresizable, True); i++;\r
     XtSetArg(args[i], XtNwidth, DIALOG_SIZE); i++;\r
+    XtSetArg(args[i], XtNtitle, XtNewString(_("File name prompt"))); i++;\r
     fileNameShell = popup =\r
       XtCreatePopupShell("File name prompt", transientShellWidgetClass,\r
                         shellWidget, args, i);\r
@@ -5544,8 +5635,8 @@ void FileNamePopUp(label, def, proc, openMode)
     dialog = XtCreateManagedWidget("fileName", dialogWidgetClass,\r
                                   layout, args, i);\r
     \r
-    XawDialogAddButton(dialog, "ok", FileNameCallback, (XtPointer) dialog);\r
-    XawDialogAddButton(dialog, "cancel", FileNameCallback,\r
+    XawDialogAddButton(dialog, _("ok"), FileNameCallback, (XtPointer) dialog);\r
+    XawDialogAddButton(dialog, _("cancel"), FileNameCallback,\r
                       (XtPointer) dialog);\r
     \r
     XtRealizeWidget(popup);\r
@@ -5584,7 +5675,7 @@ void FileNameCallback(w, client_data, call_data)
     XtSetArg(args[0], XtNlabel, &name);\r
     XtGetValues(w, args, 1);\r
     \r
-    if (strcmp(name, "cancel") == 0) {\r
+    if (strcmp(name, _("cancel")) == 0) {\r
         FileNamePopDown();\r
         return;\r
     }\r
@@ -5621,12 +5712,12 @@ void FileNameAction(w, event, prms, nprms)
        }\r
        fullname = ExpandPathName(buf);\r
        if (!fullname) {\r
-           ErrorPopUp("Error", "Can't open file", FALSE);\r
+           ErrorPopUp(_("Error"), _("Can't open file"), FALSE);\r
        }\r
        else {\r
            f = fopen(fullname, fileOpenMode);\r
            if (f == NULL) {\r
-               DisplayError("Failed to open file", errno);\r
+               DisplayError(_("Failed to open file"), errno);\r
            } else {\r
                (void) (*fileProc)(f, index, buf);\r
            }\r
@@ -5655,6 +5746,7 @@ void PromotionPopUp()
     \r
     j = 0;\r
     XtSetArg(args[j], XtNresizable, True); j++;\r
+    XtSetArg(args[j], XtNtitle, XtNewString(_("Promotion"))); j++;\r
     promotionShell =\r
       XtCreatePopupShell("Promotion", transientShellWidgetClass,\r
                         shellWidget, args, j);\r
@@ -5663,25 +5755,25 @@ void PromotionPopUp()
                            layoutArgs, XtNumber(layoutArgs));\r
     \r
     j = 0;\r
-    XtSetArg(args[j], XtNlabel, "Promote pawn to what?"); j++;\r
+    XtSetArg(args[j], XtNlabel, _("Promote pawn to what?")); j++;\r
     XtSetArg(args[j], XtNborderWidth, 0); j++;\r
     dialog = XtCreateManagedWidget("promotion", dialogWidgetClass,\r
                                   layout, args, j);\r
     \r
-    XawDialogAddButton(dialog, "Queen", PromotionCallback, \r
+    XawDialogAddButton(dialog, _("Queen"), PromotionCallback, \r
                       (XtPointer) dialog);\r
-    XawDialogAddButton(dialog, "Rook", PromotionCallback, \r
+    XawDialogAddButton(dialog, _("Rook"), PromotionCallback, \r
                       (XtPointer) dialog);\r
-    XawDialogAddButton(dialog, "Bishop", PromotionCallback, \r
+    XawDialogAddButton(dialog, _("Bishop"), PromotionCallback, \r
                       (XtPointer) dialog);\r
-    XawDialogAddButton(dialog, "Knight", PromotionCallback, \r
+    XawDialogAddButton(dialog, _("Knight"), PromotionCallback, \r
                       (XtPointer) dialog);\r
     if (!appData.testLegality || gameInfo.variant == VariantSuicide ||\r
         gameInfo.variant == VariantGiveaway) {\r
-      XawDialogAddButton(dialog, "King", PromotionCallback, \r
+      XawDialogAddButton(dialog, _("King"), PromotionCallback, \r
                         (XtPointer) dialog);\r
     }\r
-    XawDialogAddButton(dialog, "cancel", PromotionCallback, \r
+    XawDialogAddButton(dialog, _("cancel"), PromotionCallback, \r
                       (XtPointer) dialog);\r
     \r
     XtRealizeWidget(promotionShell);\r
@@ -5729,11 +5821,11 @@ void PromotionCallback(w, client_data, call_data)
     \r
     if (fromX == -1) return;\r
     \r
-    if (strcmp(name, "cancel") == 0) {\r
+    if (strcmp(name, _("cancel")) == 0) {\r
        fromX = fromY = -1;\r
        ClearHighlights();\r
        return;\r
-    } else if (strcmp(name, "Knight") == 0) {\r
+    } else if (strcmp(name, _("Knight")) == 0) {\r
        promoChar = 'n';\r
     } else {\r
        promoChar = ToLower(name[0]);\r
@@ -5796,7 +5888,7 @@ void ErrorPopUp(title, label, modal)
     dialog = XtCreateManagedWidget("dialog", dialogWidgetClass,\r
                                   layout, args, i);\r
     \r
-    XawDialogAddButton(dialog, "ok", ErrorCallback, (XtPointer) dialog);\r
+    XawDialogAddButton(dialog, _("ok"), ErrorCallback, (XtPointer) dialog);\r
     \r
     XtRealizeWidget(errorShell);\r
     CatchDeleteWindow(errorShell, "ErrorPopDown");\r
@@ -5981,7 +6073,7 @@ int LoadGamePopUp(f, gameNumber, title)
     if (gameNumber == 0) {\r
        int error = GameListBuild(f);\r
        if (error) {\r
-           DisplayError("Cannot build game list", error);\r
+           DisplayError(_("Cannot build game list"), error);\r
        } else if (!ListEmpty(&gameList) &&\r
                   ((ListGame *) gameList.tailPred)->number > 1) {\r
            GameListPopUp(f, title);\r
@@ -6002,7 +6094,7 @@ void LoadGameProc(w, event, prms, nprms)
     if (gameMode == AnalyzeMode || gameMode == AnalyzeFile) {\r
        Reset(FALSE, TRUE);\r
     }\r
-    FileNamePopUp("Load game file name?", "", LoadGamePopUp, "rb");\r
+    FileNamePopUp(_("Load game file name?"), "", LoadGamePopUp, "rb");\r
 }\r
 \r
 void LoadNextGameProc(w, event, prms, nprms)\r
@@ -6068,7 +6160,7 @@ void LoadPositionProc(w, event, prms, nprms)
     if (gameMode == AnalyzeMode || gameMode == AnalyzeFile) {\r
        Reset(FALSE, TRUE);\r
     }\r
-    FileNamePopUp("Load position file name?", "", LoadPosition, "rb");\r
+    FileNamePopUp(_("Load position file name?"), "", LoadPosition, "rb");\r
 }\r
 \r
 void SaveGameProc(w, event, prms, nprms)\r
@@ -6077,7 +6169,7 @@ void SaveGameProc(w, event, prms, nprms)
      String *prms;\r
      Cardinal *nprms;\r
 {\r
-    FileNamePopUp("Save game file name?",\r
+    FileNamePopUp(_("Save game file name?"),\r
                  DefaultFileName(appData.oldSaveStyle ? "game" : "pgn"),\r
                  SaveGame, "a");\r
 }\r
@@ -6088,7 +6180,7 @@ void SavePositionProc(w, event, prms, nprms)
      String *prms;\r
      Cardinal *nprms;\r
 {\r
-    FileNamePopUp("Save position file name?",\r
+    FileNamePopUp(_("Save position file name?"),\r
                  DefaultFileName(appData.oldSaveStyle ? "pos" : "fen"),\r
                  SavePosition, "a");\r
 }\r
@@ -6260,7 +6352,7 @@ PasteGameCB(Widget w, XtPointer client_data, Atom *selection,
   }\r
   f = fopen(gamePasteFilename, "w");\r
   if (f == NULL) {\r
-    DisplayError("Can't open temp file", errno);\r
+    DisplayError(_("Can't open temp file"), errno);\r
     return;\r
   }\r
   fwrite(value, 1, *len, f);\r
@@ -6339,12 +6431,37 @@ void AnalyzeModeProc(w, event, prms, nprms)
      String *prms;\r
      Cardinal *nprms;\r
 {\r
+    char buf[MSG_SIZ];\r
+    \r
     if (!first.analysisSupport) {\r
-      char buf[MSG_SIZ];\r
-      sprintf(buf, "%s does not support analysis", first.tidy);\r
+      sprintf(buf, _("%s does not support analysis"), first.tidy);\r
       DisplayError(buf, 0);\r
       return;\r
     }\r
+    /* [DM] icsEngineAnalyze [HGM] This is horrible code; reverse the gameMode and isEngineAnalyze tests! */\r
+    if (appData.icsActive) {\r
+        if (gameMode != IcsObserving) {\r
+            sprintf(buf,_("You are not observing a game"));\r
+            DisplayError(buf, 0);\r
+            /* secure check */\r
+            if (appData.icsEngineAnalyze) {\r
+                if (appData.debugMode)\r
+                    fprintf(debugFP, _("Found unexpected active ICS engine analyze \n"));\r
+                ExitAnalyzeMode();\r
+                ModeHighlight();\r
+            }\r
+            return;\r
+        }\r
+        /* if enable, use want disable icsEngineAnalyze */\r
+        if (appData.icsEngineAnalyze) {\r
+                ExitAnalyzeMode();\r
+                ModeHighlight();\r
+                return;\r
+        }\r
+        appData.icsEngineAnalyze = TRUE;\r
+        if (appData.debugMode)\r
+            fprintf(debugFP, _("ICS engine analyze starting... \n"));\r
+    }   \r
     if (!appData.showThinking)\r
       ShowThinkingProc(w,event,prms,nprms);\r
 \r
@@ -6359,7 +6476,7 @@ void AnalyzeFileProc(w, event, prms, nprms)
 {\r
     if (!first.analysisSupport) {\r
       char buf[MSG_SIZ];\r
-      sprintf(buf, "%s does not support analysis", first.tidy);\r
+      sprintf(buf, _("%s does not support analysis"), first.tidy);\r
       DisplayError(buf, 0);\r
       return;\r
     }\r
@@ -6369,7 +6486,7 @@ void AnalyzeFileProc(w, event, prms, nprms)
       ShowThinkingProc(w,event,prms,nprms);\r
 \r
     AnalyzeFileEvent();\r
-    FileNamePopUp("File to analyze", "", LoadGamePopUp, "rb");\r
+    FileNamePopUp(_("File to analyze"), "", LoadGamePopUp, "rb");\r
     AnalysisPeriodicEvent(1);\r
 }\r
 \r
@@ -7127,9 +7244,9 @@ void ShowThinkingProc(w, event, prms, nprms)
 {\r
     Arg args[16];\r
 \r
-    appData.showThinking = !appData.showThinking; // [HGM] thinking: tken out of ShowThinkingEvent
+    appData.showThinking = !appData.showThinking; // [HGM] thinking: tken out of ShowThinkingEvent\r
     ShowThinkingEvent();\r
-#if 0
+#if 0\r
     // [HGM] thinking: currently no suc menu item; replaced by Hide Thinking (From Human)\r
     if (appData.showThinking) {\r
        XtSetArg(args[0], XtNleftBitmap, xMarkPixmap);\r
@@ -7137,7 +7254,7 @@ void ShowThinkingProc(w, event, prms, nprms)
        XtSetArg(args[0], XtNleftBitmap, None);\r
     }\r
     XtSetValues(XtNameToWidget(menuBarWidget, "menuOptions.Show Thinking"),\r
-               args, 1);
+               args, 1);\r
 #endif\r
 }\r
 \r
@@ -7149,7 +7266,7 @@ void HideThinkingProc(w, event, prms, nprms)
 {\r
     Arg args[16];\r
 \r
-    appData.hideThinkingFromHuman = !appData.hideThinkingFromHuman; // [HGM] thinking: tken out of ShowThinkingEvent
+    appData.hideThinkingFromHuman = !appData.hideThinkingFromHuman; // [HGM] thinking: tken out of ShowThinkingEvent\r
     ShowThinkingEvent();\r
 \r
     if (appData.hideThinkingFromHuman) {\r
@@ -7222,12 +7339,12 @@ void AboutProc(w, event, prms, nprms)
     sprintf(buf, "%s%s\n\n%s\n%s\n%s\n%s\n\n%s%s\n%s",\r
            programVersion, zippy,\r
            "Copyright 1991 Digital Equipment Corporation",\r
-           "Enhancements Copyright 1992-2001 Free Software Foundation",
+           "Enhancements Copyright 1992-2001 Free Software Foundation",\r
            "Enhancements Copyright 2005 Alessandro Scotti",\r
            "Enhancements Copyright 2007-2008 H.G.Muller",\r
            PRODUCT, " is free software and carries NO WARRANTY;",\r
            "see the file COPYING for more information.");\r
-    ErrorPopUp("About XBoard", buf, FALSE);\r
+    ErrorPopUp(_("About XBoard"), buf, FALSE);\r
 }\r
 \r
 void DebugProc(w, event, prms, nprms)\r
@@ -7313,17 +7430,17 @@ void DisplayTitle(text)
     } else if (appData.cmailGameName[0] != NULLCHAR) {\r
        sprintf(icon, "%s", "CMail");\r
        sprintf(title, "%s: %s", programName, "CMail");\r
-#ifdef GOTHIC
-    // [HGM] license: This stuff should really be done in back-end, but WinBoard already had a pop-up for it
+#ifdef GOTHIC\r
+    // [HGM] license: This stuff should really be done in back-end, but WinBoard already had a pop-up for it\r
     } else if (gameInfo.variant == VariantGothic) {\r
        strcpy(icon, programName);\r
        strcpy(title, GOTHIC);\r
-#endif
-#ifdef FALCON
+#endif\r
+#ifdef FALCON\r
     } else if (gameInfo.variant == VariantFalcon) {\r
        strcpy(icon, programName);\r
        strcpy(title, FALCON);\r
-#endif
+#endif\r
     } else if (appData.noChessProgram) {\r
        strcpy(icon, programName);\r
        strcpy(title, programName);\r
@@ -7356,7 +7473,7 @@ void DisplayError(message, error)
        sprintf(buf, "%s: %s", message, strerror(error));\r
        message = buf;\r
     }  \r
-    ErrorPopUp("Error", message, FALSE);\r
+    ErrorPopUp(_("Error"), message, FALSE);\r
 }\r
 \r
 \r
@@ -7370,7 +7487,7 @@ void DisplayMoveError(message)
        fprintf(stderr, "%s: %s\n", programName, message);\r
     }\r
     if (appData.popupMoveErrors) {\r
-       ErrorPopUp("Error", message, FALSE);\r
+       ErrorPopUp(_("Error"), message, FALSE);\r
     } else {\r
        DisplayMessage(message, "");\r
     }\r
@@ -7393,7 +7510,7 @@ void DisplayFatalError(message, error, status)
        message = buf;\r
     }\r
     if (appData.popupExitMessage && boardWidget && XtIsRealized(boardWidget)) {\r
-      ErrorPopUp(status ? "Fatal Error" : "Exiting", message, TRUE);\r
+      ErrorPopUp(status ? _("Fatal Error") : _("Exiting"), message, TRUE);\r
     } else {\r
       ExitEvent(status);\r
     }\r
@@ -7403,14 +7520,14 @@ void DisplayInformation(message)
      String message;\r
 {\r
     ErrorPopDown();\r
-    ErrorPopUp("Information", message, TRUE);\r
+    ErrorPopUp(_("Information"), message, TRUE);\r
 }\r
 \r
 void DisplayNote(message)\r
      String message;\r
 {\r
     ErrorPopDown();\r
-    ErrorPopUp("Note", message, FALSE);\r
+    ErrorPopUp(_("Note"), message, FALSE);\r
 }\r
 \r
 static int\r
@@ -7460,7 +7577,7 @@ void AskQuestionProc(w, event, prms, nprms)
      Cardinal *nprms;\r
 {\r
     if (*nprms != 4) {\r
-       fprintf(stderr, "AskQuestionProc needed 4 parameters, got %d\n",\r
+       fprintf(stderr, _("AskQuestionProc needed 4 parameters, got %d\n"),\r
                *nprms);\r
        return;\r
     }\r
@@ -7493,7 +7610,7 @@ void AskQuestionReplyAction(w, event, prms, nprms)
     OutputToProcess(pendingReplyPR, buf, strlen(buf), &err);\r
     AskQuestionPopDown();\r
 \r
-    if (err) DisplayFatalError("Error writing to chess program", err, 0);\r
+    if (err) DisplayFatalError(_("Error writing to chess program"), err, 0);\r
 }\r
 \r
 void AskQuestionCallback(w, client_data, call_data)\r
@@ -7506,7 +7623,7 @@ void AskQuestionCallback(w, client_data, call_data)
     XtSetArg(args[0], XtNlabel, &name);\r
     XtGetValues(w, args, 1);\r
     \r
-    if (strcmp(name, "cancel") == 0) {\r
+    if (strcmp(name, _("cancel")) == 0) {\r
         AskQuestionPopDown();\r
     } else {\r
        AskQuestionReplyAction(w, NULL, NULL, NULL);\r
@@ -7545,9 +7662,9 @@ void AskQuestion(title, question, replyPrefix, pr)
     dialog = XtCreateManagedWidget("question", dialogWidgetClass,\r
                                   layout, args, i);\r
     \r
-    XawDialogAddButton(dialog, "enter", AskQuestionCallback,\r
+    XawDialogAddButton(dialog, _("enter"), AskQuestionCallback,\r
                       (XtPointer) dialog);\r
-    XawDialogAddButton(dialog, "cancel", AskQuestionCallback,\r
+    XawDialogAddButton(dialog, _("cancel"), AskQuestionCallback,\r
                       (XtPointer) dialog);\r
 \r
     XtRealizeWidget(popup);\r
@@ -7658,7 +7775,7 @@ Colorize(cc, continuation)
     count = strlen(buf);\r
     outCount = OutputToProcess(NoProc, buf, count, &error);\r
     if (outCount < count) {\r
-       DisplayFatalError("Error writing to display", error, 1);\r
+       DisplayFatalError(_("Error writing to display"), error, 1);\r
     }\r
 \r
     if (continuation) return;\r
@@ -7731,7 +7848,7 @@ static char *ExpandPathName(path)
            pwd = getpwnam(buf);\r
            if (!pwd)\r
              {\r
-                 fprintf(stderr, "ERROR: Unknown user %s (in path %s)\n",\r
+                 fprintf(stderr, _("ERROR: Unknown user %s (in path %s)\n"),\r
                          buf, path);\r
                  return NULL;\r
              }\r
@@ -7845,7 +7962,8 @@ AnalysisClockCallback(arg, id)
      XtPointer arg;\r
      XtIntervalId *id;\r
 {\r
-    if (gameMode == AnalyzeMode || gameMode == AnalyzeFile) {\r
+    if (gameMode == AnalyzeMode || gameMode == AnalyzeFile \r
+         || appData.icsEngineAnalyze) { // [DM]\r
        AnalysisPeriodicEvent(0);\r
        StartAnalysisClock();\r
     }\r
@@ -7932,7 +8050,9 @@ DisplayWhiteClock(timeRemaining, highlight)
      int highlight;\r
 {\r
     Arg args[16];\r
-    DisplayTimerLabel(whiteTimerWidget, "White", timeRemaining, highlight);\r
+\r
+    if(appData.noGUI) return;\r
+    DisplayTimerLabel(whiteTimerWidget, _("White"), timeRemaining, highlight);\r
     if (highlight && iconPixmap == bIconPixmap) {\r
        iconPixmap = wIconPixmap;\r
        XtSetArg(args[0], XtNiconPixmap, iconPixmap);\r
@@ -7946,7 +8066,9 @@ DisplayBlackClock(timeRemaining, highlight)
      int highlight;\r
 {\r
     Arg args[16];\r
-    DisplayTimerLabel(blackTimerWidget, "Black", timeRemaining, highlight);\r
+\r
+    if(appData.noGUI) return;\r
+    DisplayTimerLabel(blackTimerWidget, _("Black"), timeRemaining, highlight);\r
     if (highlight && iconPixmap == wIconPixmap) {\r
        iconPixmap = bIconPixmap;\r
        XtSetArg(args[0], XtNiconPixmap, iconPixmap);\r
@@ -8001,7 +8123,7 @@ int StartChildProcess(cmdLine, dir, pr)
     SetUpChildIO(to_prog, from_prog);\r
 \r
     if ((pid = fork()) == 0) {\r
-       /* Child process */
+       /* Child process */\r
        // [HGM] PSWBTM: made order resistant against case where fd of created pipe was 0 or 1\r
        close(to_prog[1]);     // first close the unused pipe ends\r
        close(from_prog[0]);\r
@@ -8009,14 +8131,14 @@ int StartChildProcess(cmdLine, dir, pr)
        dup2(from_prog[1], 1);\r
        if(to_prog[0] >= 2) close(to_prog[0]); // if 0 or 1, the dup2 already cosed the original\r
        close(from_prog[1]);                   // and closing again loses one of the pipes!\r
-       if(fileno(stderr) >= 2) // better safe than sorry...
+       if(fileno(stderr) >= 2) // better safe than sorry...\r
                dup2(1, fileno(stderr)); /* force stderr to the pipe */\r
 \r
        if (dir[0] != NULLCHAR && chdir(dir) != 0) {\r
            perror(dir);\r
            exit(1);\r
-       }
-
+       }\r
+\r
        nice(appData.niceEngines); // [HGM] nice: adjust priority of engine proc\r
 \r
         execvp(argv[0], argv);\r
@@ -8105,7 +8227,7 @@ int OpenTCP(host, port, pr)
      ProcRef *pr;\r
 {\r
 #if OMIT_SOCKETS\r
-    DisplayFatalError("Socket support is not configured in", 0, 2);\r
+    DisplayFatalError(_("Socket support is not configured in"), 0, 2);\r
 #else  /* !OMIT_SOCKETS */\r
     int s;\r
     struct sockaddr_in sa;\r
@@ -8207,7 +8329,7 @@ int OpenRcmd(host, user, cmd, pr)
      char *host, *user, *cmd;\r
      ProcRef *pr;\r
 {\r
-    DisplayFatalError("internal rcmd not implemented for Unix", 0, 1);\r
+    DisplayFatalError(_("internal rcmd not implemented for Unix"), 0, 1);\r
     return -1;\r
 }    \r
 \r
@@ -8933,9 +9055,9 @@ AnimateMove(board, fromX, fromY, toX, toY)
 #endif\r
 \r
   if (appData.debugMode) {\r
-      printf("AnimateMove: piece %d %s from %d,%d to %d,%d \n",\r
-            piece, hop ? "hops" : "slides", fromX, fromY, toX, toY);\r
-  }\r
+      fprintf(debugFP, hop ? _("AnimateMove: piece %d hops from %d,%d to %d,%d \n") :\r
+                             _("AnimateMove: piece %d slides from %d,%d to %d,%d \n"),\r
+             piece, fromX, fromY, toX, toY);  }\r
 \r
   ScreenSquare(fromX, fromY, &start, &startColor);\r
   ScreenSquare(toX, toY, &finish, &endColor);\r
@@ -9089,7 +9211,7 @@ DrawDragPiece ()
 void\r
 SetProgramStats( FrontEndProgramStats * stats )\r
 {\r
-  // [HR] TODO
+  // [HR] TODO\r
   // [HGM] done, but perhaps backend should call this directly?\r
     EngineOutputUpdate( stats );\r
 }\r
index 0e0c270..4fde563 100644 (file)
@@ -950,7 +950,7 @@ instructions on how to report this problem.
 
 You can add or remove shortcut keys using the X resources
 @code{form.translations}. Here is an example of what would go in your
-@file{.Xdefaults} file:
+@file{.Xresources} file:
 
 @example
 XBoard*form.translations: \
@@ -996,7 +996,7 @@ ToStartProc, TrainingProc, TruncateGameProc, and TwoMachinesProc.
 This section documents the command-line options to XBoard.  You can
 set these options in two ways: by typing them on the shell command
 line you use to start XBoard, or by setting them as X resources
-(typically in your @file{.Xdefaults} file).  Many of the options
+(typically in your @file{.Xresources} file).  Many of the options
 cannot be changed while XBoard is running; others set the initial
 state of items that can be changed with the @ref{Options} menu.
 
@@ -1010,7 +1010,7 @@ numbers as values, you can use the long or short option names
 interchangeably.
 
 Each option corresponds to an X resource with the same name, so
-if you like, you can set options in your @file{.Xdefaults} file
+if you like, you can set options in your @file{.Xresources} file
 or in a file named @file{XBoard} in your home directory.
 For options that have two names, the longer one is the name of
 the corresponding X resource; the short name is not recognized.
@@ -1214,7 +1214,7 @@ Setting this option from the command line is tricky, because you must
 type in real newline characters, including one at the very end.
 In most shells you can do this by
 entering a @samp{\} character followed by a newline. It is easier to set
-the option from your @file{.Xdefaults} file; in that case you can
+the option from your @file{.Xresources} file; in that case you can
 include the character sequence @samp{\n} in the string, and it will
 be converted to a newline.
 
@@ -1554,7 +1554,7 @@ Here ``default'' means the default foreground or background color of
 your xterm.  Bold can be 1 or 0.  If background is omitted, ``default''
 is assumed; if bold is omitted, 0 is assumed.
 
-Here is an example of how to set the colors in your @file{.Xdefaults} file.
+Here is an example of how to set the colors in your @file{.Xresources} file.
 The colors shown here are the default values; you will get
 them if you turn @code{-colorize} on without specifying your own colors.
 
@@ -1621,7 +1621,7 @@ This sound is played when an ICS game that you are participating in is
 aborted, adjourned, or otherwise ends inconclusively.  Default: "" (no
 sound).
 
-Here is an example of how to set the sounds in your .Xdefaults file:
+Here is an example of how to set the sounds in your @file{.Xresources} file:
 
 @example
 xboard*soundShout: shout.wav
@@ -2338,7 +2338,7 @@ command-line options as follows:
 xboard -ics -icshost firewall.example.com -icsport 23
 @end example
 @noindent
-Or in your @file{.Xdefaults} file:
+Or in your @file{.Xresources} file:
 
 @example
 XBoard*internetChessServerHost: firewall.example.com
@@ -2376,7 +2376,7 @@ xboard -ics -gateway rsh.example.com -icshost chessclub.com
 @end example
 
 @noindent
-Or in your @file{.Xdefaults} file:
+Or in your @file{.Xresources} file:
 
 @example
 XBoard*gateway: rsh.example.com
@@ -2399,7 +2399,7 @@ xboard -ics -telnet -telnetProgram ptelnet
 @end example
 
 @noindent
-Or in your @file{.Xdefaults} file:
+Or in your @file{.Xresources} file:
 
 @example
 XBoard*useTelnet: true
@@ -2415,7 +2415,7 @@ that is, your @file{ptelnet} program doesn't let you connect to
 alternative ports. As noted above, your chess server may allow you to
 connect on port 23 instead.  In that case, just add the option
 @samp{-icsport ""} to the above command, or add
-@samp{XBoard*internetChessServerPort:} to your @file{.Xdefaults} file.
+@samp{XBoard*internetChessServerPort:} to your @file{.Xresources} file.
 But if your chess server doesn't let you connect on port 23, you will have
 to find some other host outside the firewall and hop through it. For
 instance, suppose you have a shell account at @samp{foo.edu}. Set
@@ -2426,7 +2426,7 @@ xboard -ics -telnet -telnetProgram ptelnet -icshost foo.edu -icsport ""
 @end example
 
 @noindent
-Or in your @file{.Xdefaults} file:
+Or in your @file{.Xresources} file:
 
 @example
 XBoard*useTelnet: true
@@ -2912,7 +2912,7 @@ zic2xpm ~/ziics/fritz4.*
 xboard -pixmap ~/fritz4
 @end example
 
-Alternatively, you can add this line to your .Xdefaults file:
+Alternatively, you can add this line to your @file{.Xresources} file:
 
 @example
 xboard*pixmapDirectory: ~/fritz4
index d7d0751..db046d8 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * xedittags.c -- Tags edit window, part of X front end for XBoard
- * $Id: xedittags.c,v 2.1 2003/10/27 19:21:00 mann Exp $
+ * $Id$
  *
  * Copyright 1995 Free Software Foundation, Inc.
  *
@@ -85,6 +85,15 @@ extern char *getenv();
 #include "backend.h"
 #include "xboard.h"
 #include "xedittags.h"
+#include "gettext.h"
+
+#ifdef ENABLE_NLS
+# define  _(s) gettext (s)
+# define N_(s) gettext_noop (s)
+#else
+# define  _(s) (s)
+# define N_(s)  s
+#endif
 
 extern Widget formWidget, shellWidget, boardWidget, menuBarWidget;
 extern Display *xDisplay;
@@ -113,9 +122,9 @@ void TagsCallback(w, client_data, call_data)
     XtSetArg(args[j], XtNlabel, &name);  j++;
     XtGetValues(w, args, j);
 
-    if (strcmp(name, "close") == 0) {
+    if (strcmp(name, _("close")) == 0) {
        TagsPopDown();
-    } else if (strcmp(name, "edit") == 0) {
+    } else if (strcmp(name, _("edit")) == 0) {
        TagsPopDown();
        EditTagsEvent();
     }
@@ -135,16 +144,16 @@ void EditTagsCallback(w, client_data, call_data)
     XtSetArg(args[j], XtNlabel, &name);  j++;
     XtGetValues(w, args, j);
 
-    if (strcmp(name, "ok") == 0) {
+    if (strcmp(name, _("ok")) == 0) {
        textw = XtNameToWidget(editTagsShell, "*form.text");
        j = 0;
        XtSetArg(args[j], XtNstring, &val); j++;
        XtGetValues(textw, args, j);
        ReplaceTags(val, &gameInfo);
        TagsPopDown();
-    } else if (strcmp(name, "cancel") == 0) {
+    } else if (strcmp(name, _("cancel")) == 0) {
        TagsPopDown();
-    } else if (strcmp(name, "clear") == 0) {
+    } else if (strcmp(name, _("clear")) == 0) {
        textw = XtNameToWidget(editTagsShell, "*form.text");
        XtCallActionProc(textw, "select-all", NULL, NULL, 0);
        XtCallActionProc(textw, "kill-selection", NULL, NULL, 0);
@@ -233,7 +242,7 @@ Widget TagsCreate(name, text, msg, mutable, callback)
        XtSetArg(args[j], XtNleft, XtChainLeft); j++;
        XtSetArg(args[j], XtNright, XtChainLeft); j++;
        b_ok = b =
-         XtCreateManagedWidget("ok", commandWidgetClass, form, args, j);
+         XtCreateManagedWidget(_("ok"), commandWidgetClass, form, args, j);
        XtAddCallback(b_ok, XtNcallback, callback, (XtPointer) 0);
 
        j = 0;
@@ -244,7 +253,7 @@ Widget TagsCreate(name, text, msg, mutable, callback)
        XtSetArg(args[j], XtNleft, XtChainLeft); j++;
        XtSetArg(args[j], XtNright, XtChainLeft); j++;
        b_cancel = b =
-         XtCreateManagedWidget("cancel", commandWidgetClass, form, args, j);
+         XtCreateManagedWidget(_("cancel"), commandWidgetClass, form, args, j);
        XtAddCallback(b_cancel, XtNcallback, callback, (XtPointer) 0);
 
 #if 0
@@ -267,7 +276,7 @@ Widget TagsCreate(name, text, msg, mutable, callback)
        XtSetArg(args[j], XtNleft, XtChainLeft); j++;
        XtSetArg(args[j], XtNright, XtChainLeft); j++;
        b_close = b =
-         XtCreateManagedWidget("close", commandWidgetClass, form, args, j);
+         XtCreateManagedWidget(_("close"), commandWidgetClass, form, args, j);
        XtAddCallback(b_close, XtNcallback, callback, (XtPointer) 0);
 
        j = 0;
@@ -278,7 +287,7 @@ Widget TagsCreate(name, text, msg, mutable, callback)
        XtSetArg(args[j], XtNleft, XtChainLeft); j++;
        XtSetArg(args[j], XtNright, XtChainLeft); j++;
        b_edit = b =
-         XtCreateManagedWidget("edit", commandWidgetClass, form, args, j);
+         XtCreateManagedWidget(_("edit"), commandWidgetClass, form, args, j);
        XtAddCallback(b_edit, XtNcallback, callback, (XtPointer) 0);
     }
 
@@ -331,7 +340,7 @@ void TagsPopUp(tags, msg)
     if (editTagsUp) TagsPopDown();
     if (tagsShell == NULL) {
        tagsShell =
-         TagsCreate("Tags", tags, msg, False, TagsCallback);
+         TagsCreate(_("Tags"), tags, msg, False, TagsCallback);
     } else {
        textw = XtNameToWidget(tagsShell, "*form.text");
        j = 0;
@@ -339,7 +348,7 @@ void TagsPopUp(tags, msg)
        XtSetValues(textw, args, j);
        j = 0;
        XtSetArg(args[j], XtNiconName, (XtArgVal) "Tags");  j++;
-       XtSetArg(args[j], XtNtitle, (XtArgVal) "Tags");  j++;
+       XtSetArg(args[j], XtNtitle, (XtArgVal) _("Tags"));  j++;
        XtSetValues(tagsShell, args, j);
        msgw = XtNameToWidget(tagsShell, "*form.msg");
        if (msgw) {
@@ -370,7 +379,7 @@ void EditTagsPopUp(tags)
     if (tagsUp) TagsPopDown();
     if (editTagsShell == NULL) {
        editTagsShell =
-         TagsCreate("Edit tags", tags, NULL, True, EditTagsCallback); 
+         TagsCreate(_("Edit tags"), tags, NULL, True, EditTagsCallback); 
     } else {
        textw = XtNameToWidget(editTagsShell, "*form.text");
        j = 0;
@@ -378,7 +387,7 @@ void EditTagsPopUp(tags)
        XtSetValues(textw, args, j);
        j = 0;
        XtSetArg(args[j], XtNiconName, (XtArgVal) "Edit Tags");  j++;
-       XtSetArg(args[j], XtNtitle, (XtArgVal) "Edit Tags");  j++;
+       XtSetArg(args[j], XtNtitle, (XtArgVal) _("Edit Tags"));  j++;
        XtSetValues(editTagsShell, args, j);
     }
 
index a7d595d..6fe9931 100644 (file)
  * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.\r
  * ------------------------------------------------------------------------\r
  */\r
-#include "config.h"
-
-#include <stdio.h>
-#include <ctype.h>
-#include <errno.h>
-#include <sys/types.h>
-
-#if STDC_HEADERS
-# include <stdlib.h>
-# include <string.h>
-#else /* not STDC_HEADERS */
-extern char *getenv();
-# if HAVE_STRING_H
-#  include <string.h>
-# else /* not HAVE_STRING_H */
-#  include <strings.h>
-# endif /* not HAVE_STRING_H */
-#endif /* not STDC_HEADERS */
-
-#if HAVE_UNISTD_H
-# include <unistd.h>
-#endif
-
-#include <X11/Intrinsic.h>
-#include <X11/StringDefs.h>
-#include <X11/Shell.h>
-#include <X11/Xaw/Dialog.h>
-#include <X11/Xaw/Form.h>
-#include <X11/Xaw/List.h>
-#include <X11/Xaw/Label.h>
-#include <X11/Xaw/SimpleMenu.h>
-#include <X11/Xaw/SmeBSB.h>
-#include <X11/Xaw/SmeLine.h>
-#include <X11/Xaw/Box.h>
-#include <X11/Xaw/Paned.h>
-#include <X11/Xaw/MenuButton.h>
-#include <X11/cursorfont.h>
-#include <X11/Xaw/Text.h>
-#include <X11/Xaw/AsciiText.h>
-#include <X11/Xaw/Viewport.h>
-
-#include "common.h"
-#include "frontend.h"
-#include "backend.h"
-#include "xboard.h"
-// Add xengineo.h later
-
+#include "config.h"\r
+\r
+#include <stdio.h>\r
+#include <ctype.h>\r
+#include <errno.h>\r
+#include <sys/types.h>\r
+\r
+#if STDC_HEADERS\r
+# include <stdlib.h>\r
+# include <string.h>\r
+#else /* not STDC_HEADERS */\r
+extern char *getenv();\r
+# if HAVE_STRING_H\r
+#  include <string.h>\r
+# else /* not HAVE_STRING_H */\r
+#  include <strings.h>\r
+# endif /* not HAVE_STRING_H */\r
+#endif /* not STDC_HEADERS */\r
+\r
+#if HAVE_UNISTD_H\r
+# include <unistd.h>\r
+#endif\r
+\r
+#include <X11/Intrinsic.h>\r
+#include <X11/StringDefs.h>\r
+#include <X11/Shell.h>\r
+#include <X11/Xaw/Dialog.h>\r
+#include <X11/Xaw/Form.h>\r
+#include <X11/Xaw/List.h>\r
+#include <X11/Xaw/Label.h>\r
+#include <X11/Xaw/SimpleMenu.h>\r
+#include <X11/Xaw/SmeBSB.h>\r
+#include <X11/Xaw/SmeLine.h>\r
+#include <X11/Xaw/Box.h>\r
+#include <X11/Xaw/Paned.h>\r
+#include <X11/Xaw/MenuButton.h>\r
+#include <X11/cursorfont.h>\r
+#include <X11/Xaw/Text.h>\r
+#include <X11/Xaw/AsciiText.h>\r
+#include <X11/Xaw/Viewport.h>\r
+\r
+#include "common.h"\r
+#include "frontend.h"\r
+#include "backend.h"\r
+#include "xboard.h"\r
+// Add xengineo.h later\r
+#include "gettext.h"\r
+\r
+#ifdef ENABLE_NLS\r
+# define  _(s) gettext (s)\r
+# define N_(s) gettext_noop (s)\r
+#else\r
+# define  _(s) (s)\r
+# define N_(s)  s\r
+#endif\r
+\r
 #include <X11/xpm.h>\r
-
-// [HGM] pixmaps of some ICONS used in the engine-outut window
-#include "pixmaps/WHITE_14.xpm"
-#include "pixmaps/BLACK_14.xpm"
-#include "pixmaps/CLEAR_14.xpm"
-#include "pixmaps/UNKNOWN_14.xpm"
-#include "pixmaps/THINKING_14.xpm"
-#include "pixmaps/PONDER_14.xpm"
-#include "pixmaps/ANALYZING_14.xpm"
-
+\r
+// [HGM] pixmaps of some ICONS used in the engine-outut window\r
+#include "pixmaps/WHITE_14.xpm"\r
+#include "pixmaps/BLACK_14.xpm"\r
+#include "pixmaps/CLEAR_14.xpm"\r
+#include "pixmaps/UNKNOWN_14.xpm"\r
+#include "pixmaps/THINKING_14.xpm"\r
+#include "pixmaps/PONDER_14.xpm"\r
+#include "pixmaps/ANALYZING_14.xpm"\r
+\r
 #ifdef SNAP\r
 #include "wsnap.h"\r
-#endif
-
-#define _LL_ 100
-
-// imports from xboard.c
-extern Widget formWidget, shellWidget, boardWidget, menuBarWidget;
-extern Display *xDisplay;
-extern Window xBoardWindow;
-extern int squareSize;
-extern Pixmap xMarkPixmap, wIconPixmap, bIconPixmap;
-extern char *layoutName;
-
-// temporary kludge to avoid compile errors untill all Windows code has been replaced
-#define HICON int *
-#define HWND  int *
+#endif\r
+\r
+#define _LL_ 100\r
+\r
+// imports from xboard.c\r
+extern Widget formWidget, shellWidget, boardWidget, menuBarWidget;\r
+extern Display *xDisplay;\r
+extern Window xBoardWindow;\r
+extern int squareSize;\r
+extern Pixmap xMarkPixmap, wIconPixmap, bIconPixmap;\r
+extern char *layoutName;\r
+\r
+// temporary kludge to avoid compile errors untill all Windows code has been replaced\r
+#define HICON int *\r
+#define HWND  int *\r
 \r
 // [HGM] define numbers to indicate icons, for referring to them in platform-independent way\r
 #define nColorBlack   1\r
@@ -124,7 +133,7 @@ static void SetEngineColorIcon( int which );
 #define SHOW_PONDERING\r
 \r
 /* Imports from backend.c */\r
-char * SavePart(char *str);
+char * SavePart(char *str);\r
 extern int opponentKibitzes;\r
 \r
 /* Imports from winboard.c */\r
@@ -132,12 +141,12 @@ extern int opponentKibitzes;
 extern Arg layoutArgs[2], formArgs[2], messageArgs[4];\r
 \r
 //extern WindowPlacement wpEngineOutput;\r
-
-Position engineOutputX = -1, engineOutputY = -1;
-Dimension engineOutputW, engineOutputH;
-Widget engineOutputShell;
-int engineOutputDialogUp;
-
+\r
+Position engineOutputX = -1, engineOutputY = -1;\r
+Dimension engineOutputW, engineOutputH;\r
+Widget engineOutputShell;\r
+int engineOutputDialogUp;\r
+\r
 /* Module variables */\r
 #define H_MARGIN            2\r
 #define V_MARGIN            2\r
@@ -164,7 +173,7 @@ typedef struct {
     char * name;\r
     int which;\r
     int depth;\r
-    unsigned long nodes;\r
+    u64 nodes;\r
     int score;\r
     int time;\r
     char * pv;\r
@@ -176,241 +185,33 @@ typedef struct {
 static int VerifyDisplayMode();\r
 static void UpdateControls( EngineOutputData * ed );\r
 static SetEngineState( int which, int state, char * state_data );\r
-
-void ReadIcon(char *pixData[], int iconNr)
-{
-    int r;
-
+\r
+void ReadIcon(char *pixData[], int iconNr)\r
+{\r
+    int r;\r
+\r
        if ((r=XpmCreatePixmapFromData(xDisplay, XtWindow(outputField[0][nColorIcon]),\r
                                       pixData,\r
                                       &(icons[iconNr]),\r
                                       NULL, NULL /*&attr*/)) != 0) {\r
-         fprintf(stderr, "Error %d loading icon image\n", r);\r
+         fprintf(stderr, _("Error %d loading icon image\n"), r);\r
          exit(1); \r
        }       \r
-}
-
+}\r
+\r
 static void InitializeEngineOutput()\r
-{ int i;
-
+{ int i;\r
+\r
         ReadIcon(WHITE_14,   nColorWhite);\r
         ReadIcon(BLACK_14,   nColorBlack);\r
         ReadIcon(UNKNOWN_14, nColorUnknown);\r
-
+\r
         ReadIcon(CLEAR_14,   nClear);\r
         ReadIcon(PONDER_14,  nPondering);\r
         ReadIcon(THINK_14,   nThinking);\r
         ReadIcon(ANALYZE_14, nAnalyzing);\r
-//        icons[nClear]       = wIconPixmap;\r
-//        icons[nPondering]   = bIconPixmap;\r//        icons[nThinking]    = wIconPixmap;\r
-//        icons[nAnalyzing]   = bIconPixmap;\r}
-
-#if 0
-// Windows routines commented out
-\r
-// front end\r
-static HICON LoadIconEx( int id )\r
-{\r
-    return LoadImage( hInst, MAKEINTRESOURCE(id), IMAGE_ICON, ICON_SIZE, ICON_SIZE, 0 );\r
-}\r
-\r
-// [HGM] the platform-dependent way of indicating where output should go is now all\r
-// concentrated here, where a table of platform-dependent handles are initialized.\r
-// This cleanses most other routines of front-end stuff, so they can go into the back end.\r
-static void InitializeEngineOutput()\r
-{\r
- //   if( needInit ) { // needInit was already tested before call\r
-       // [HGM] made this into a table, rather than separate global variables\r
-        icons[nColorBlack]   = LoadIconEx( IDI_BLACK_14 );\r
-        icons[nColorWhite]   = LoadIconEx( IDI_WHITE_14 );\r
-        icons[nColorUnknown] = LoadIconEx( IDI_UNKNOWN_14 );\r
-        icons[nClear]        = LoadIconEx( IDI_TRANS_14 );\r
-        icons[nPondering]    = LoadIconEx( IDI_PONDER_14 );\r
-        icons[nThinking]     = LoadIconEx( IDI_CLOCK_14 );\r
-        icons[nAnalyzing]    = LoadIconEx( IDI_ANALYZE2_14 );\r
-\r
-       // [HGM] also make a table of handles to output controls\r
-       // Note that engineOutputDialog must be defined first!\r
-        outputField[0][nColorIcon] = GetDlgItem( engineOutputDialog, IDC_Color1 );\r
-        outputField[0][nLabel]     = GetDlgItem( engineOutputDialog, IDC_EngineLabel1 );\r
-        outputField[0][nStateIcon] = GetDlgItem( engineOutputDialog, IDC_StateIcon1 );\r
-        outputField[0][nStateData] = GetDlgItem( engineOutputDialog, IDC_StateData1 );\r
-        outputField[0][nLabelNPS]  = GetDlgItem( engineOutputDialog, IDC_Engine1_NPS );\r
-        outputField[0][nMemo]      = GetDlgItem( engineOutputDialog, IDC_EngineMemo1 );\r
-\r
-        outputField[1][nColorIcon] = GetDlgItem( engineOutputDialog, IDC_Color2 );\r
-        outputField[1][nLabel]     = GetDlgItem( engineOutputDialog, IDC_EngineLabel2 );\r
-        outputField[1][nStateIcon] = GetDlgItem( engineOutputDialog, IDC_StateIcon2 );\r
-        outputField[1][nStateData] = GetDlgItem( engineOutputDialog, IDC_StateData2 );\r
-        outputField[1][nLabelNPS]  = GetDlgItem( engineOutputDialog, IDC_Engine2_NPS );\r
-        outputField[1][nMemo]      = GetDlgItem( engineOutputDialog, IDC_EngineMemo2 );\r
-//        needInit = FALSE;\r
-//    }\r
 }\r
 \r
-// front end\r
-static void SetControlPos( HWND hDlg, int id, int x, int y, int width, int height )\r
-{\r
-    HWND hControl = GetDlgItem( hDlg, id );\r
-\r
-    SetWindowPos( hControl, HWND_TOP, x, y, width, height, SWP_NOZORDER );\r
-}\r
-\r
-#define HIDDEN_X    20000\r
-#define HIDDEN_Y    20000\r
-\r
-// front end\r
-static void HideControl( HWND hDlg, int id )\r
-{\r
-    HWND hControl = GetDlgItem( hDlg, id );\r
-    RECT rc;\r
-\r
-    GetWindowRect( hControl, &rc );\r
-\r
-    /* \r
-        Avoid hiding an already hidden control, because that causes many\r
-        unnecessary WM_ERASEBKGND messages!\r
-    */\r
-    if( rc.left != HIDDEN_X || rc.top != HIDDEN_Y ) {\r
-        SetControlPos( hDlg, id, 20000, 20000, 100, 100 );\r
-    }\r
-}\r
-\r
-// front end, although we might make GetWindowRect front end instead\r
-static int GetControlWidth( HWND hDlg, int id )\r
-{\r
-    RECT rc;\r
-\r
-    GetWindowRect( GetDlgItem( hDlg, id ), &rc );\r
-\r
-    return rc.right - rc.left;\r
-}\r
-\r
-// front end?\r
-static int GetControlHeight( HWND hDlg, int id )\r
-{\r
-    RECT rc;\r
-\r
-    GetWindowRect( GetDlgItem( hDlg, id ), &rc );\r
-\r
-    return rc.bottom - rc.top;\r
-}\r
-\r
-static int GetHeaderHeight()\r
-{\r
-    int result = GetControlHeight( engineOutputDialog, IDC_EngineLabel1 );\r
-\r
-    if( result < ICON_SIZE ) result = ICON_SIZE;\r
-\r
-    return result;\r
-}\r
-\r
-// The size calculations should be backend? If setControlPos is a platform-dependent way of doing things,\r
-// a platform-independent wrapper for it should be supplied.\r
-static void PositionControlSet( HWND hDlg, int x, int y, int clientWidth, int memoHeight, int idColor, int idEngineLabel, int idNPS, int idMemo, int idStateIcon, int idStateData )\r
-{\r
-    int label_x = x + ICON_SIZE + H_MARGIN;\r
-    int label_h = GetControlHeight( hDlg, IDC_EngineLabel1 );\r
-    int label_y = y + ICON_SIZE - label_h;\r
-    int nps_w = GetControlWidth( hDlg, IDC_Engine1_NPS );\r
-    int nps_x = clientWidth - H_MARGIN - nps_w;\r
-    int state_data_w = GetControlWidth( hDlg, IDC_StateData1 );\r
-    int state_data_x = nps_x - H_MARGIN - state_data_w;\r
-    int state_icon_x = state_data_x - ICON_SIZE - 2;\r
-    int max_w = clientWidth - 2*H_MARGIN;\r
-    int memo_y = y + ICON_SIZE + LABEL_V_DISTANCE;\r
-\r
-    SetControlPos( hDlg, idColor, x, y, ICON_SIZE, ICON_SIZE );\r
-    SetControlPos( hDlg, idEngineLabel, label_x, label_y, state_icon_x - label_x, label_h );\r
-    SetControlPos( hDlg, idStateIcon, state_icon_x, y, ICON_SIZE, ICON_SIZE );\r
-    SetControlPos( hDlg, idStateData, state_data_x, label_y, state_data_w, label_h );\r
-    SetControlPos( hDlg, idNPS, nps_x, label_y, nps_w, label_h );\r
-    SetControlPos( hDlg, idMemo, x, memo_y, max_w, memoHeight );\r
-}\r
-\r
-// Also here some of the size calculations should go to the back end, and their actual application to a front-end routine\r
-static void ResizeWindowControls( HWND hDlg, int mode )\r
-{\r
-    RECT rc;\r
-    int headerHeight = GetHeaderHeight();\r
-    int labelHeight = GetControlHeight( hDlg, IDC_EngineLabel1 );\r
-    int labelOffset = H_MARGIN + ICON_SIZE + H_MARGIN;\r
-    int labelDeltaY = ICON_SIZE - labelHeight;\r
-    int clientWidth;\r
-    int clientHeight;\r
-    int maxControlWidth;\r
-    int npsWidth;\r
-\r
-    /* Initialize variables */\r
-    GetClientRect( hDlg, &rc );\r
-\r
-    clientWidth = rc.right - rc.left;\r
-    clientHeight = rc.bottom - rc.top;\r
-\r
-    maxControlWidth = clientWidth - 2*H_MARGIN;\r
-\r
-    npsWidth = GetControlWidth( hDlg, IDC_Engine1_NPS );\r
-\r
-    /* Resize controls */\r
-    if( mode == 0 ) {\r
-        /* One engine */\r
-        PositionControlSet( hDlg, H_MARGIN, V_MARGIN, \r
-            clientWidth, \r
-            clientHeight - V_MARGIN - LABEL_V_DISTANCE - headerHeight- V_MARGIN,\r
-            IDC_Color1, IDC_EngineLabel1, IDC_Engine1_NPS, IDC_EngineMemo1, IDC_StateIcon1, IDC_StateData1 );\r
-\r
-        /* Hide controls for the second engine */\r
-        HideControl( hDlg, IDC_Color2 );\r
-        HideControl( hDlg, IDC_EngineLabel2 );\r
-        HideControl( hDlg, IDC_StateIcon2 );\r
-        HideControl( hDlg, IDC_StateData2 );\r
-        HideControl( hDlg, IDC_Engine2_NPS );\r
-        HideControl( hDlg, IDC_EngineMemo2 );\r
-        SendDlgItemMessage( hDlg, IDC_EngineMemo2, WM_SETTEXT, 0, (LPARAM) "" );\r
-        /* TODO: we should also hide/disable them!!! what about tab stops?!?! */\r
-    }\r
-    else {\r
-        /* Two engines */\r
-        int memo_h = (clientHeight - headerHeight*2 - V_MARGIN*2 - LABEL_V_DISTANCE*2 - SPLITTER_SIZE) / 2;\r
-        int header1_y = V_MARGIN;\r
-        int header2_y = V_MARGIN + headerHeight + LABEL_V_DISTANCE + memo_h + SPLITTER_SIZE;\r
-\r
-        PositionControlSet( hDlg, H_MARGIN, header1_y, clientWidth, memo_h,\r
-            IDC_Color1, IDC_EngineLabel1, IDC_Engine1_NPS, IDC_EngineMemo1, IDC_StateIcon1, IDC_StateData1 );\r
-\r
-        PositionControlSet( hDlg, H_MARGIN, header2_y, clientWidth, memo_h,\r
-            IDC_Color2, IDC_EngineLabel2, IDC_Engine2_NPS, IDC_EngineMemo2, IDC_StateIcon2, IDC_StateData2 );\r
-    }\r
-\r
-    InvalidateRect( GetDlgItem(hDlg,IDC_EngineMemo1), NULL, FALSE );\r
-    InvalidateRect( GetDlgItem(hDlg,IDC_EngineMemo2), NULL, FALSE );\r
-}\r
-\r
-// front end. Actual printing of PV lines into the output field\r
-static void InsertIntoMemo( int which, char * text )\r
-{\r
-    SendMessage( outputField[which][nMemo], EM_SETSEL, 0, 0 );\r
-\r
-    SendMessage( outputField[which][nMemo], EM_REPLACESEL, (WPARAM) FALSE, (LPARAM) text );\r
-}\r
-\r
-// front end. Associates an icon with an output field ("control" in Windows jargon).\r
-// [HGM] let it find out the output field from the 'which' number by itself\r
-static void SetIcon( int which, int field, int nIcon )\r
-{\r
-\r
-    if( nIcon != 0 ) {\r
-        SendMessage( outputField[which][field], STM_SETICON, (WPARAM) icons[nIcon], 0 );\r
-    }\r
-}\r
-\r
-// front end wrapper for SetWindowText, taking control number in stead of handle\r
-void DoSetWindowText(int which, int field, char *s_label)\r
-{\r
-    SetWindowText( outputField[which][field], s_label );\r
-}\r
-#endif
-
 void DoSetWindowText(int which, int field, char *s_label)\r
 { \r
        Arg arg;\r
@@ -418,108 +219,117 @@ void DoSetWindowText(int which, int field, char *s_label)
        XtSetArg(arg, XtNlabel, (XtArgVal) s_label);\r
        XtSetValues(outputField[which][field], &arg, 1);\r
 }\r
-
+\r
 static void InsertIntoMemo( int which, char * text )\r
-{
-       Arg arg; XawTextBlock t; Widget edit;
-
+{\r
+       Arg arg; XawTextBlock t; Widget edit;\r
+\r
        t.ptr = text; t.firstPos = 0; t.length = strlen(text); t.format = XawFmt8Bit;\r
        edit = XtNameToWidget(engineOutputShell, which ? "*form2.text" : "*form.text");\r
-       XawTextReplace(edit, 0, 0, &t);
+       XawTextReplace(edit, 0, 0, &t);\r
 //     XtSetArg(arg, XtNstring, (XtArgVal) text);\r
 //     XtSetValues(outputField[which][nMemo], &arg, 1);\r
 }\r
-
-static void SetIcon( int which, int field, int nIcon )
-{
-    Arg arg;
+\r
+static void SetIcon( int which, int field, int nIcon )\r
+{\r
+    Arg arg;\r
 \r
     if( nIcon != 0 ) {\r
        XtSetArg(arg, XtNleftBitmap, (XtArgVal) icons[nIcon]);\r
        XtSetValues(outputField[which][field], &arg, 1);\r
     }\r
-}
-
-void DoClearMemo(int which)\r\r    Arg args[16];\r
+}\r
+\r
+void DoClearMemo(int which)\r
+{ \r
+    Arg args[16];\r
     int j;\r
     Widget edit;\r
-
+\r
        edit = XtNameToWidget(engineOutputShell, which ? "*form2.text" : "*form.text");\r
        XtCallActionProc(edit, "select-all", NULL, NULL, 0);\r
        XtCallActionProc(edit, "kill-selection", NULL, NULL, 0);\r
-}
+}\r
 \r
 // The following routines are mutated clones of the commentPopUp routines\r
 \r
 void PositionControlSet(which, form, bw_width)\r
      int which;\r
      Widget form;\r
-     Dimension bw_width;\r{\r
+     Dimension bw_width;\r
+{\r
     Arg args[16];\r
     Widget edit, NameWidget, ColorWidget, ModeWidget, MoveWidget, NodesWidget;\r
     int j, mutable=1;\r
     j = 0;\r
-    XtSetArg(args[j], XtNborderWidth, (XtArgVal) 0); j++;
+    XtSetArg(args[j], XtNborderWidth, (XtArgVal) 0); j++;\r
     XtSetArg(args[j], XtNlabel,     (XtArgVal) ""); j++;\r
     XtSetArg(args[j], XtNtop,       XtChainTop); j++;\r
     XtSetArg(args[j], XtNbottom,    XtChainTop); j++;\r
-    XtSetArg(args[j], XtNleft,      XtChainLeft); j++;\r    XtSetArg(args[j], XtNright,     XtChainLeft); j++;\r    XtSetArg(args[j], XtNheight,    (XtArgVal) 16); j++;\r
+    XtSetArg(args[j], XtNleft,      XtChainLeft); j++;\r
+    XtSetArg(args[j], XtNright,     XtChainLeft); j++;\r
+    XtSetArg(args[j], XtNheight,    (XtArgVal) 16); j++;\r
     XtSetArg(args[j], XtNwidth,     (XtArgVal) 17); j++;\r
-    outputField[which][nColorIcon] = ColorWidget =
+    outputField[which][nColorIcon] = ColorWidget =\r
       XtCreateManagedWidget("Color", labelWidgetClass,\r
                     form, args, j);\r
-
+\r
     j = 0;\r
-    XtSetArg(args[j], XtNborderWidth, (XtArgVal) 0); j++;
-    XtSetArg(args[j], XtNjustify,   (XtArgVal) XtJustifyLeft); j++;
+    XtSetArg(args[j], XtNborderWidth, (XtArgVal) 0); j++;\r
+    XtSetArg(args[j], XtNjustify,   (XtArgVal) XtJustifyLeft); j++;\r
     XtSetArg(args[j], XtNfromHoriz, (XtArgVal) ColorWidget); j++;\r
     XtSetArg(args[j], XtNtop,       XtChainTop); j++;\r
     XtSetArg(args[j], XtNbottom,    XtChainTop); j++;\r
-    XtSetArg(args[j], XtNleft,      XtChainLeft); j++;\r    XtSetArg(args[j], XtNheight,    (XtArgVal) 16); j++;\r
+    XtSetArg(args[j], XtNleft,      XtChainLeft); j++;\r
+    XtSetArg(args[j], XtNheight,    (XtArgVal) 16); j++;\r
     XtSetArg(args[j], XtNwidth,     (XtArgVal) bw_width/2 - 57); j++;\r
-    outputField[which][nLabel] = NameWidget =
+    outputField[which][nLabel] = NameWidget =\r
       XtCreateManagedWidget("Engine", labelWidgetClass,\r
                     form, args, j);\r
-
+\r
     j = 0;\r
-    XtSetArg(args[j], XtNborderWidth, (XtArgVal) 0); j++;
+    XtSetArg(args[j], XtNborderWidth, (XtArgVal) 0); j++;\r
     XtSetArg(args[j], XtNlabel,     (XtArgVal) ""); j++;\r
     XtSetArg(args[j], XtNfromHoriz, (XtArgVal) NameWidget); j++;\r
     XtSetArg(args[j], XtNtop,       XtChainTop); j++;\r
     XtSetArg(args[j], XtNbottom,    XtChainTop); j++;\r
     XtSetArg(args[j], XtNheight,    (XtArgVal) 16); j++;\r
     XtSetArg(args[j], XtNwidth,     (XtArgVal) 20); j++;\r
-    outputField[which][nStateIcon] = ModeWidget =
+    outputField[which][nStateIcon] = ModeWidget =\r
       XtCreateManagedWidget("Mode", labelWidgetClass,\r
                     form, args, j);\r
-
+\r
     j = 0;\r
-    XtSetArg(args[j], XtNborderWidth, (XtArgVal) 0); j++;
-    XtSetArg(args[j], XtNjustify,   (XtArgVal) XtJustifyLeft); j++;
+    XtSetArg(args[j], XtNborderWidth, (XtArgVal) 0); j++;\r
+    XtSetArg(args[j], XtNjustify,   (XtArgVal) XtJustifyLeft); j++;\r
     XtSetArg(args[j], XtNlabel,     (XtArgVal) ""); j++;\r
     XtSetArg(args[j], XtNfromHoriz, (XtArgVal) ModeWidget); j++;\r
     XtSetArg(args[j], XtNtop,       XtChainTop); j++;\r
     XtSetArg(args[j], XtNbottom,    XtChainTop); j++;\r
-    XtSetArg(args[j], XtNright,     XtChainRight); j++;\r    XtSetArg(args[j], XtNheight,    (XtArgVal) 16); j++;\r
+    XtSetArg(args[j], XtNright,     XtChainRight); j++;\r
+    XtSetArg(args[j], XtNheight,    (XtArgVal) 16); j++;\r
     XtSetArg(args[j], XtNwidth,     (XtArgVal) bw_width/2 - 102); j++;\r
-    outputField[which][nStateData] = MoveWidget =
+    outputField[which][nStateData] = MoveWidget =\r
       XtCreateManagedWidget("Move", labelWidgetClass,\r
                     form, args, j);\r
-
+\r
     j = 0;\r
-    XtSetArg(args[j], XtNborderWidth, (XtArgVal) 0); j++;
+    XtSetArg(args[j], XtNborderWidth, (XtArgVal) 0); j++;\r
     XtSetArg(args[j], XtNjustify,   (XtArgVal) XtJustifyRight); j++;\r
-    XtSetArg(args[j], XtNlabel,     (XtArgVal) "NPS"); j++;\r
+    XtSetArg(args[j], XtNlabel,     (XtArgVal) _("NPS")); j++;\r
     XtSetArg(args[j], XtNfromHoriz, (XtArgVal) MoveWidget); j++;\r
     XtSetArg(args[j], XtNtop,       XtChainTop); j++;\r
     XtSetArg(args[j], XtNbottom,    XtChainTop); j++;\r
-    XtSetArg(args[j], XtNleft,      XtChainRight); j++;\r    XtSetArg(args[j], XtNright,     XtChainRight); j++;\r    XtSetArg(args[j], XtNheight,    (XtArgVal) 16); j++;\r
+    XtSetArg(args[j], XtNleft,      XtChainRight); j++;\r
+    XtSetArg(args[j], XtNright,     XtChainRight); j++;\r
+    XtSetArg(args[j], XtNheight,    (XtArgVal) 16); j++;\r
     XtSetArg(args[j], XtNwidth,     (XtArgVal) 100); j++;\r
-    outputField[which][nLabelNPS] = NodesWidget =
+    outputField[which][nLabelNPS] = NodesWidget =\r
       XtCreateManagedWidget("Nodes", labelWidgetClass,\r
                     form, args, j);\r
-
-    // create "text" within "form"
+\r
+    // create "text" within "form"\r
     j = 0;\r
     if (mutable) {\r
        XtSetArg(args[j], XtNeditType, XawtextEdit);  j++;\r
@@ -538,7 +348,8 @@ void PositionControlSet(which, form, bw_width)
 #else\r
     /* !!Work around an apparent bug in XFree86 4.0.1 (X11R6.4.3) */\r
     XtSetArg(args[j], XtNscrollVertical, XawtextScrollAlways);  j++;\r
-    XtSetArg(args[j], XtNscrollHorizontal, XawtextScrollWhenNeeded);  j++;\r#endif\r
+    XtSetArg(args[j], XtNscrollHorizontal, XawtextScrollWhenNeeded);  j++;\r
+#endif\r
 //    XtSetArg(args[j], XtNautoFill, True);  j++;\r
 //    XtSetArg(args[j], XtNwrap, XawtextWrapWord); j++;\r
     outputField[which][nMemo] = edit =\r
@@ -554,15 +365,17 @@ Widget EngineOutputCreate(name, text)
      char *name, *text;\r
 {\r
     Arg args[16];\r
-    Widget shell, layout, form, form2, edit;
+    Widget shell, layout, form, form2, edit;\r
     Dimension bw_width, bw_height;\r
     int j;\r
 \r
-    // get board width
+    // get board width\r
     j = 0;\r
-    XtSetArg(args[j], XtNwidth,  &bw_width);  j++;\r    XtSetArg(args[j], XtNheight, &bw_height);  j++;\r    XtGetValues(boardWidget, args, j);\r
+    XtSetArg(args[j], XtNwidth,  &bw_width);  j++;\r
+    XtSetArg(args[j], XtNheight, &bw_height);  j++;\r
+    XtGetValues(boardWidget, args, j);\r
 \r
-    // define form within layout within shell.
+    // define form within layout within shell.\r
     j = 0;\r
     XtSetArg(args[j], XtNresizable, True);  j++;\r
     shell =\r
@@ -571,23 +384,28 @@ Widget EngineOutputCreate(name, text)
     layout =\r
       XtCreateManagedWidget(layoutName, formWidgetClass, shell,\r
                            layoutArgs, XtNumber(layoutArgs));\r
-    // divide window vertically into two equal parts, by creating two forms
+    // divide window vertically into two equal parts, by creating two forms\r
     form =\r
       XtCreateManagedWidget("form", formWidgetClass, layout,\r
                            formArgs, XtNumber(formArgs));\r
     form2 =\r
       XtCreateManagedWidget("form2", formWidgetClass, layout,\r
                            formArgs, XtNumber(formArgs));\r
-    j = 0;\r    XtSetArg(args[j], XtNfromVert,  (XtArgVal) form); j++;\r    XtSetValues(form2, args, j);\r
-    // make sure width is known in advance, for better placement of child widgets
-    j = 0;\r    XtSetArg(args[j], XtNwidth,     (XtArgVal) bw_width-16); j++;\r    XtSetArg(args[j], XtNheight,    (XtArgVal) bw_height/2); j++;\r    XtSetValues(shell, args, j);\r
-
-    // fill up both forms with control elements
-    PositionControlSet(0, form,  bw_width);
-    PositionControlSet(1, form2, bw_width);
+    j = 0;\r
+    XtSetArg(args[j], XtNfromVert,  (XtArgVal) form); j++;\r
+    XtSetValues(form2, args, j);\r
+    // make sure width is known in advance, for better placement of child widgets\r
+    j = 0;\r
+    XtSetArg(args[j], XtNwidth,     (XtArgVal) bw_width-16); j++;\r
+    XtSetArg(args[j], XtNheight,    (XtArgVal) bw_height/2); j++;\r
+    XtSetValues(shell, args, j);\r
+\r
+    // fill up both forms with control elements\r
+    PositionControlSet(0, form,  bw_width);\r
+    PositionControlSet(1, form2, bw_width);\r
 \r
     XtRealizeWidget(shell);\r
-
+\r
     if (engineOutputX == -1) {\r
        int xx, yy;\r
        Window junk;\r
@@ -602,9 +420,11 @@ Widget EngineOutputCreate(name, text)
        XtSetArg(args[j], XtNheight, &pw_height);  j++;\r
        XtGetValues(shell, args, j);\r
        engineOutputH = pw_height + (lines - 1) * ew_height;\r
-       engineOutputW = bw_width - 16;
-#else
-       engineOutputH = bw_height/2;\r   engineOutputW = bw_width-16;\r#endif
+       engineOutputW = bw_width - 16;\r
+#else\r
+       engineOutputH = bw_height/2;\r
+       engineOutputW = bw_width-16;\r
+#endif\r
 \r
        XSync(xDisplay, False);\r
 #ifdef NOTDEF\r
@@ -626,7 +446,8 @@ Widget EngineOutputCreate(name, text)
        if (engineOutputY < 0) engineOutputY = 0; /*avoid positioning top offscreen*/\r
     }\r
     j = 0;\r
-    XtSetArg(args[j], XtNheight, engineOutputH);  j++;\r    XtSetArg(args[j], XtNwidth, engineOutputW);  j++;\r
+    XtSetArg(args[j], XtNheight, engineOutputH);  j++;\r
+    XtSetArg(args[j], XtNwidth, engineOutputW);  j++;\r
     XtSetArg(args[j], XtNx, engineOutputX);  j++;\r
     XtSetArg(args[j], XtNy, engineOutputY);  j++;\r
     XtSetValues(shell, args, j);\r
@@ -635,133 +456,42 @@ Widget EngineOutputCreate(name, text)
     return shell;\r
 }\r
 \r
-void ResizeWindowControls(shell, mode)
-       Widget shell;
-       int mode;
-{
-    Widget form1, form2;
-    Arg args[16];
-    int j;
-    Dimension ew_height, tmp;
-
+void ResizeWindowControls(shell, mode)\r
+       Widget shell;\r
+       int mode;\r
+{\r
+    Widget form1, form2;\r
+    Arg args[16];\r
+    int j;\r
+    Dimension ew_height, tmp;\r
+\r
     form1 = XtNameToWidget(shell, "*form");\r
-    form2 = XtNameToWidget(shell, "*form2");
-
-    j = 0;
-    XtSetArg(args[j], XtNheight, (XtArgVal) &ew_height); j++;\r    XtGetValues(form1, args, j);
-    j = 0;
-    XtSetArg(args[j], XtNheight, (XtArgVal) &tmp); j++;\r    XtGetValues(form2, args, j);
-    ew_height += tmp; // total height
+    form2 = XtNameToWidget(shell, "*form2");\r
+\r
+    j = 0;\r
+    XtSetArg(args[j], XtNheight, (XtArgVal) &ew_height); j++;\r
+    XtGetValues(form1, args, j);\r
+    j = 0;\r
+    XtSetArg(args[j], XtNheight, (XtArgVal) &tmp); j++;\r
+    XtGetValues(form2, args, j);\r
+    ew_height += tmp; // total height\r
 \r
     if(mode==0) {\r
-       j = 0;
+       j = 0;\r
        XtSetArg(args[j], XtNheight, (XtArgVal) 5); j++;\r
-       XtSetValues(form2, args, j);
-       j = 0;
+       XtSetValues(form2, args, j);\r
+       j = 0;\r
        XtSetArg(args[j], XtNheight, (XtArgVal) (ew_height-5)); j++;\r
-       XtSetValues(form1, args, j);
-    } else {
-       j = 0;
+       XtSetValues(form1, args, j);\r
+    } else {\r
+       j = 0;\r
        XtSetArg(args[j], XtNheight, (XtArgVal) (ew_height/2)); j++;\r
-       XtSetValues(form1, args, j);
-       j = 0;
+       XtSetValues(form1, args, j);\r
+       j = 0;\r
        XtSetArg(args[j], XtNheight, (XtArgVal) (ew_height/2)); j++;\r
-       XtSetValues(form2, args, j);
-    }\r
-}
-
-#if 0\r
-void EngineOutputCallback(w, client_data, call_data)\r
-     Widget w;\r
-     XtPointer client_data, call_data;\r
-{\r
-    String name;\r
-    Arg args[16];\r
-    int j;\r
-\r
-    j = 0;\r
-    XtSetArg(args[j], XtNlabel, &name);  j++;\r
-    XtGetValues(w, args, j);\r
-\r
-    if (strcmp(name, "close") == 0) {\r
-       EngineOutputPopDown();\r
-    } else if (strcmp(name, "edit") == 0) {\r
-       EngineOutputPopDown();\r
-       EditCommentEvent();\r
-    }\r
-}\r
-#endif
-\r
-#if 0\r
-// This seems pure front end\r
-LRESULT CALLBACK EngineOutputProc( HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam )\r
-{\r
-    static SnapData sd;\r
-\r
-    switch (message) {\r
-    case WM_INITDIALOG:\r
-        if( engineOutputDialog == NULL ) {\r
-            engineOutputDialog = hDlg;\r
-\r
-            RestoreWindowPlacement( hDlg, &wpEngineOutput ); /* Restore window placement */\r
-\r
-            ResizeWindowControls( hDlg, windowMode );\r
-\r
-            SetEngineState( 0, STATE_IDLE, "" );\r
-            SetEngineState( 1, STATE_IDLE, "" );\r
-        }\r
-\r
-        return FALSE;\r
-\r
-    case WM_COMMAND:\r
-        switch (LOWORD(wParam)) {\r
-        case IDOK:\r
-          EndDialog(hDlg, TRUE);\r
-          return TRUE;\r
-\r
-        case IDCANCEL:\r
-          EndDialog(hDlg, FALSE);\r
-          return TRUE;\r
-\r
-        default:\r
-          break;\r
-        }\r
-\r
-        break;\r
-\r
-    case WM_GETMINMAXINFO:\r
-        {\r
-            MINMAXINFO * mmi = (MINMAXINFO *) lParam;\r
-        \r
-            mmi->ptMinTrackSize.x = 100;\r
-            mmi->ptMinTrackSize.y = 160;\r
-        }\r
-        break;\r
-\r
-    case WM_CLOSE:\r
-        EngineOutputPopDown();\r
-        break;\r
-\r
-    case WM_SIZE:\r
-        ResizeWindowControls( hDlg, windowMode );\r
-        break;\r
-\r
-    case WM_ENTERSIZEMOVE:\r
-        return OnEnterSizeMove( &sd, hDlg, wParam, lParam );\r
-\r
-    case WM_SIZING:\r
-        return OnSizing( &sd, hDlg, wParam, lParam );\r
-\r
-    case WM_MOVING:\r
-        return OnMoving( &sd, hDlg, wParam, lParam );\r
-\r
-    case WM_EXITSIZEMOVE:\r
-        return OnExitSizeMove( &sd, hDlg, wParam, lParam );\r
+       XtSetValues(form2, args, j);\r
     }\r
-\r
-    return FALSE;\r
 }\r
-#endif
 \r
 void EngineOutputPopUp(title, text)\r
      char *title, *text;\r
@@ -777,12 +507,13 @@ void EngineOutputPopUp(title, text)
        CatchDeleteWindow(engineOutputShell, "EngineOutputPopDown");\r
        if( needInit ) {\r
            InitializeEngineOutput();\r
-           needInit = FALSE;\r  }\r
+           needInit = FALSE;\r
+       }\r
         SetEngineColorIcon( 0 );\r
         SetEngineColorIcon( 1 );\r
         SetEngineState( 0, STATE_IDLE, "" );\r
         SetEngineState( 1, STATE_IDLE, "" );\r
-    } else {
+    } else {\r
        edit = XtNameToWidget(engineOutputShell, "*form.text");\r
        j = 0;\r
        XtSetArg(args[j], XtNstring, text); j++;\r
@@ -796,48 +527,14 @@ void EngineOutputPopUp(title, text)
     XtPopup(engineOutputShell, XtGrabNone);\r
     XSync(xDisplay, False);\r
 \r
-    j=0;
-    XtSetArg(args[j], XtNleftBitmap, xMarkPixmap); j++;
-    XtSetValues(XtNameToWidget(menuBarWidget, "menuMode.Show Engine Output"),
-               args, j);
-
-    engineOutputDialogUp = True;\r
-    ShowThinkingEvent(); // [HGM] thinking: might need to prompt engine for thinking output
-}\r
-
-#if 0\r
-// front end\r
-void EngineOutputPopUp()\r
-{\r
-  FARPROC lpProc;\r
-  \r
-  CheckMenuItem(GetMenu(hwndMain), IDM_ShowEngineOutput, MF_CHECKED);\r
-\r
-  if( engineOutputDialog ) {\r
-    SendMessage( engineOutputDialog, WM_INITDIALOG, 0, 0 );\r
-\r
-    if( ! engineOutputDialogUp ) {\r
-        ShowWindow(engineOutputDialog, SW_SHOW);\r
-    }\r
-  }\r
-  else {\r
-    lpProc = MakeProcInstance( (FARPROC) EngineOutputProc, hInst );\r
-\r
-    /* Note to self: dialog must have the WS_VISIBLE style set, otherwise it's not shown! */\r
-    CreateDialog( hInst, MAKEINTRESOURCE(DLG_EngineOutput), hwndMain, (DLGPROC)lpProc );\r
-\r
-    FreeProcInstance(lpProc);\r
-  }\r
-\r
-  // [HGM] displaced to after creation of dialog, to allow initialization of output fields\r
-  if( needInit ) {\r
-      InitializeEngineOutput();\r
-      needInit = FALSE;\r
-  }\r
+    j=0;\r
+    XtSetArg(args[j], XtNleftBitmap, xMarkPixmap); j++;\r
+    XtSetValues(XtNameToWidget(menuBarWidget, "menuMode.Show Engine Output"),\r
+               args, j);\r
 \r
-  engineOutputDialogUp = TRUE;\r
+    engineOutputDialogUp = True;\r
+    ShowThinkingEvent(); // [HGM] thinking: might need to prompt engine for thinking output\r
 }\r
-#endif
 \r
 void EngineOutputPopDown()\r
 {\r
@@ -845,7 +542,7 @@ void EngineOutputPopDown()
     int j;\r
 \r
     if (!engineOutputDialogUp) return;\r
-    DoClearMemo(1);
+    DoClearMemo(1);\r
     j = 0;\r
     XtSetArg(args[j], XtNx, &engineOutputX); j++;\r
     XtSetArg(args[j], XtNy, &engineOutputY); j++;\r
@@ -853,36 +550,16 @@ void EngineOutputPopDown()
     XtSetArg(args[j], XtNheight, &engineOutputH); j++;\r
     XtGetValues(engineOutputShell, args, j);\r
     XtPopdown(engineOutputShell);\r
-    XSync(xDisplay, False);
-    j=0;
-    XtSetArg(args[j], XtNleftBitmap, None); j++;
-    XtSetValues(XtNameToWidget(menuBarWidget, "menuMode.Show Engine Output"),
-               args, j);
+    XSync(xDisplay, False);\r
+    j=0;\r
+    XtSetArg(args[j], XtNleftBitmap, None); j++;\r
+    XtSetValues(XtNameToWidget(menuBarWidget, "menuMode.Show Engine Output"),\r
+               args, j);\r
 \r
     engineOutputDialogUp = False;\r
-    ShowThinkingEvent(); // [HGM] thinking: might need to shut off thinking output
-}\r
-\r
-#if 0
-// front end\r
-void EngineOutputPopDown()\r
-{\r
-  CheckMenuItem(GetMenu(hwndMain), IDM_ShowEngineOutput, MF_UNCHECKED);\r
-\r
-  if( engineOutputDialog ) {\r
-      ShowWindow(engineOutputDialog, SW_HIDE);\r
-  }\r
-\r
-  engineOutputDialogUp = FALSE;\r
+    ShowThinkingEvent(); // [HGM] thinking: might need to shut off thinking output\r
 }\r
 \r
-// front end. [HGM] Takes handle of output control from table, so only number is passed\r
-void DoClearMemo(int which)\r
-{\r
-        SendMessage( outputField[which][nMemo], WM_SETTEXT, 0, (LPARAM) "" );\r
-}\r
-#endif
-
 //------------------------ pure back-end routines -------------------------------\r
 \r
 \r
@@ -932,8 +609,9 @@ void EngineOutputUpdate( FrontEndProgramStats * stats )
         return;\r
     }\r
 \r
-    if(gameMode == IcsObserving) return; // [HGM] kibitz: shut up engine if we are observing an ICS game
-
+    if(gameMode == IcsObserving && !appData.icsEngineAnalyze)\r
+       return; // [HGM] kibitz: shut up engine if we are observing an ICS game\r
+\r
     which = stats->which;\r
     depth = stats->depth;\r
 \r
@@ -1078,6 +756,8 @@ int VerifyDisplayMode()
 \r
     /* Get proper mode for current game */\r
     switch( gameMode ) {\r
+    case IcsObserving:    // [HGM] ICS analyze\r
+       if(!appData.icsEngineAnalyze) return;\r
     case AnalyzeMode:\r
     case AnalyzeFile:\r
     case MachinePlaysWhite:\r
@@ -1162,7 +842,8 @@ static void UpdateControls( EngineOutputData * ed )
     else if( gameMode == TwoMachinesPlay ) {\r
         SetEngineState( ed->which, STATE_THINKING, "" );\r
     }\r
-    else if( gameMode == AnalyzeMode || gameMode == AnalyzeFile ) {\r
+    else if( gameMode == AnalyzeMode || gameMode == AnalyzeFile \r
+         || gameMode == IcsObserving && appData.icsEngineAnalyze) { // [HGM] ICS-analyze\r
         char buf[64];\r
         int time_secs = ed->time / 100;\r
         int time_mins = time_secs / 60;\r
@@ -1193,10 +874,10 @@ static void UpdateControls( EngineOutputData * ed )
         unsigned long nps_100 = ed->nodes / ed->time;\r
 \r
         if( nps_100 < 100000 ) {\r
-            sprintf( s_label, "NPS: %lu", nps_100 * 100 );\r
+            sprintf( s_label, _("NPS: %lu"), nps_100 * 100 );\r
         }\r
         else {\r
-            sprintf( s_label, "NPS: %.1fk", nps_100 / 10.0 );\r
+            sprintf( s_label, _("NPS: %.1fk"), nps_100 / 10.0 );\r
         }\r
     }\r
 \r
@@ -1214,10 +895,10 @@ static void UpdateControls( EngineOutputData * ed )
 \r
         /* Nodes */\r
         if( ed->nodes < 1000000 ) {\r
-            sprintf( s_nodes, "%lu", ed->nodes );\r
+            sprintf( s_nodes, u64Display, ed->nodes );\r
         }\r
         else {\r
-            sprintf( s_nodes, "%.1fM", ed->nodes / 1000000.0 );\r
+            sprintf( s_nodes, "%.1fM", u64ToDouble(ed->nodes) / 1000000.0 );\r
         }\r
 \r
         /* Score */\r
@@ -1254,40 +935,30 @@ int EngineOutputIsUp()
 {\r
     return engineOutputDialogUp;\r
 }\r
-
-void
-EngineOutputProc(w, event, prms, nprms)
-     Widget w;
-     XEvent *event;
-     String *prms;
-     Cardinal *nprms;
-{
-  if (engineOutputDialogUp) {
-    EngineOutputPopDown();
-  } else {
-    EngineOutputPopUp("engine output","This feature is experimental");
-  }
-//  ToNrEvent(currentMove);
-}
-
-// [HGM] kibitz: write kibitz line; split window for it if necessary
-void OutputKibitz(int window, char *text)
-{
-       if(!EngineOutputIsUp()) return;
-       if(!opponentKibitzes) { // on first kibitz of game, clear memos
-           DoClearMemo(1);
-           if(gameMode == IcsObserving) DoClearMemo(0);
-       }
-       opponentKibitzes = TRUE; // this causes split window DisplayMode in ICS modes.
-       VerifyDisplayMode();
-       if(gameMode == IcsObserving) {
-           DoSetWindowText(0, nLabel, gameInfo.white);
-           SetIcon( 0, nColorIcon,  nColorWhite);
-           SetIcon( 0, nStateIcon,  nClear);
-       }
-       DoSetWindowText(1, nLabel, gameMode == IcsPlayingBlack ? gameInfo.white : gameInfo.black); // opponent name
-       SetIcon( 1, nColorIcon,  gameMode == IcsPlayingBlack ? nColorWhite : nColorBlack);
-       SetIcon( 1, nStateIcon,  nClear);
-       InsertIntoMemo(window-1, text);
-}
-
+\r
+void\r
+EngineOutputProc(w, event, prms, nprms)\r
+     Widget w;\r
+     XEvent *event;\r
+     String *prms;\r
+     Cardinal *nprms;\r
+{\r
+  if (engineOutputDialogUp) {\r
+    EngineOutputPopDown();\r
+  } else {\r
+    EngineOutputPopUp(_("engine output"),_("This feature is experimental"));\r
+  }\r
+//  ToNrEvent(currentMove);\r
+}\r
+\r
+// [HGM] kibitz: write kibitz line; split window for it if necessary\r
+void OutputKibitz(char *text)\r
+{\r
+       if(!EngineOutputIsUp()) return;\r
+       if(!opponentKibitzes) DoClearMemo(1);\r
+       opponentKibitzes = TRUE; // thas causes split window DisplayMode in ICS modes.\r
+       VerifyDisplayMode();\r
+       DoSetWindowText(1, nLabel, gameMode == IcsPlayingWhite ? gameInfo.black : gameInfo.white); // opponent name\r
+       SetIcon( 1, nColorIcon,  gameMode == IcsPlayingWhite ? nColorBlack : nColorWhite);\r
+       InsertIntoMemo(1, text);\r
+}\r
index 4f4812e..9ce424b 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * xgamelist.c -- Game list window, part of X front end for XBoard
- * $Id: xgamelist.c,v 2.1 2003/10/27 19:21:00 mann Exp $
+ * $Id$
  *
  * Copyright 1995 Free Software Foundation, Inc.
  *
@@ -85,6 +85,16 @@ extern char *getenv();
 #include "backend.h"
 #include "xboard.h"
 #include "xgamelist.h"
+#include "gettext.h"
+
+#ifdef ENABLE_NLS
+# define  _(s) gettext (s)
+# define N_(s) gettext_noop (s)
+#else
+# define  _(s) (s)
+# define N_(s)  s
+#endif
+
 
 extern Widget formWidget, shellWidget, boardWidget, menuBarWidget;
 extern Display *xDisplay;
@@ -177,7 +187,7 @@ GameListCreate(name, callback, client_data)
     XtSetArg(args[j], XtNleft, XtChainLeft); j++;
     XtSetArg(args[j], XtNright, XtChainLeft); j++;
     b_load =
-      XtCreateManagedWidget("load", commandWidgetClass, form, args, j);
+      XtCreateManagedWidget(_("load"), commandWidgetClass, form, args, j);
     XtAddCallback(b_load, XtNcallback, callback, client_data);
 
     j = 0;
@@ -188,7 +198,7 @@ GameListCreate(name, callback, client_data)
     XtSetArg(args[j], XtNleft, XtChainLeft); j++;
     XtSetArg(args[j], XtNright, XtChainLeft); j++;
     b_loadprev =
-      XtCreateManagedWidget("prev", commandWidgetClass, form, args, j);
+      XtCreateManagedWidget(_("prev"), commandWidgetClass, form, args, j);
     XtAddCallback(b_loadprev, XtNcallback, callback, client_data);
 
     j = 0;
@@ -199,7 +209,7 @@ GameListCreate(name, callback, client_data)
     XtSetArg(args[j], XtNleft, XtChainLeft); j++;
     XtSetArg(args[j], XtNright, XtChainLeft); j++;
     b_loadnext =
-      XtCreateManagedWidget("next", commandWidgetClass, form, args, j);
+      XtCreateManagedWidget(_("next"), commandWidgetClass, form, args, j);
     XtAddCallback(b_loadnext, XtNcallback, callback, client_data);
 
     j = 0;
@@ -210,7 +220,7 @@ GameListCreate(name, callback, client_data)
     XtSetArg(args[j], XtNleft, XtChainLeft); j++;
     XtSetArg(args[j], XtNright, XtChainLeft); j++;
     b_close =
-      XtCreateManagedWidget("close", commandWidgetClass, form, args, j);
+      XtCreateManagedWidget(_("close"), commandWidgetClass, form, args, j);
     XtAddCallback(b_close, XtNcallback, callback, client_data);
 
     if (glc->x == -1) {
@@ -276,29 +286,29 @@ GameListCallback(w, client_data, call_data)
     XtSetArg(args[j], XtNlabel, &name);  j++;
     XtGetValues(w, args, j);
 
-    if (strcmp(name, "close") == 0) {
+    if (strcmp(name, _("close")) == 0) {
        GameListPopDown();
        return;
     }
     listwidg = XtNameToWidget(glc->shell, "*form.viewport.list");
     rs = XawListShowCurrent(listwidg);
-    if (strcmp(name, "load") == 0) {
+    if (strcmp(name, _("load")) == 0) {
        index = rs->list_index;
        if (index < 0) {
-           DisplayError("No game selected", 0);
+           DisplayError(_("No game selected"), 0);
            return;
        }
-    } else if (strcmp(name, "next") == 0) {
+    } else if (strcmp(name, _("next")) == 0) {
        index = rs->list_index + 1;
        if (index >= ((ListGame *) gameList.tailPred)->number) {
-           DisplayError("Can't go forward any further", 0);
+           DisplayError(_("Can't go forward any further"), 0);
            return;
        }
        XawListHighlight(listwidg, index);
-    } else if (strcmp(name, "prev") == 0) {
+    } else if (strcmp(name, _("prev")) == 0) {
        index = rs->list_index - 1;
        if (index < 0) {
-           DisplayError("Can't back up any further", 0);
+           DisplayError(_("Can't back up any further"), 0);
            return;
        }
        XawListHighlight(listwidg, index);
@@ -399,7 +409,7 @@ ShowGameListProc(w, event, prms, nprms)
     int j;
 
     if (glc == NULL) {
-       DisplayError("There is no game list", 0);
+       DisplayError(_("There is no game list"), 0);
        return;
     }
     if (glc->up) {
index 5640fee..6fe5b92 100644 (file)
-/*
- * xhistory.c -- Move list window, part of X front end for XBoard
- * $Id: xhistory.c,v 2.1 2003/10/27 19:21:00 mann Exp $
- *
- * Copyright 2000 Free Software Foundation, Inc.
- *
- * The following terms apply to the enhanced version of XBoard distributed
- * by the Free Software Foundation:
- * ------------------------------------------------------------------------
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- * ------------------------------------------------------------------------
- *
- * See the file ChangeLog for a revision history.
- */
-
-#include "config.h"
-
-#include <stdio.h>
-#include <ctype.h>
-#include <errno.h>
-#include <sys/types.h>
-
-#if STDC_HEADERS
-# include <stdlib.h>
-# include <string.h>
-#else /* not STDC_HEADERS */
-extern char *getenv();
-# if HAVE_STRING_H
-#  include <string.h>
-# else /* not HAVE_STRING_H */
-#  include <strings.h>
-# endif /* not HAVE_STRING_H */
-#endif /* not STDC_HEADERS */
-
-#if HAVE_UNISTD_H
-# include <unistd.h>
-#endif
-
-#include <X11/Intrinsic.h>
-#include <X11/StringDefs.h>
-#include <X11/Shell.h>
-#include <X11/Xaw/Dialog.h>
-#include <X11/Xaw/Form.h>
-#include <X11/Xaw/List.h>
-#include <X11/Xaw/Label.h>
-#include <X11/Xaw/SimpleMenu.h>
-#include <X11/Xaw/SmeBSB.h>
-#include <X11/Xaw/SmeLine.h>
-#include <X11/Xaw/Box.h>
-#include <X11/Xaw/Paned.h>
-#include <X11/Xaw/MenuButton.h>
-#include <X11/cursorfont.h>
-#include <X11/Xaw/Text.h>
-#include <X11/Xaw/AsciiText.h>
-#include <X11/Xaw/Viewport.h>
-
-#include "common.h"
-#include "frontend.h"
-#include "backend.h"
-#include "xboard.h"
-#include "xhistory.h"
-
-
-#define _LL_ 100
-
-extern Widget formWidget, shellWidget, boardWidget, menuBarWidget;
-extern Display *xDisplay;
-extern int squareSize;
-extern Pixmap xMarkPixmap;
-extern char *layoutName;
-
-struct History{
-  String *Nr,*white,*black;
-  int     aNr;  /* space actually alocated */  
-  Widget mvn,mvw,mvb,vbox,viewport,sh;
-  char Up;
-};
-
-struct History *hist=0;
-String dots=" ... ";
-Position gameHistoryX, gameHistoryY;
-void
-HistoryPopDown(w, client_data, call_data)
-     Widget w;
-     XtPointer client_data, call_data;
-{
-  Arg args[16];
-  int j;
-  if(hist) {
-    // [HGM] remember old position
-    j = 0;
+/*\r
+ * xhistory.c -- Move list window, part of X front end for XBoard\r
+ * $Id$\r
+ *\r
+ * Copyright 2000 Free Software Foundation, Inc.\r
+ *\r
+ * The following terms apply to the enhanced version of XBoard distributed\r
+ * by the Free Software Foundation:\r
+ * ------------------------------------------------------------------------\r
+ * This program is free software; you can redistribute it and/or modify\r
+ * it under the terms of the GNU General Public License as published by\r
+ * the Free Software Foundation; either version 2 of the License, or\r
+ * (at your option) any later version.\r
+ *\r
+ * This program is distributed in the hope that it will be useful,\r
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
+ * GNU General Public License for more details.\r
+ *\r
+ * You should have received a copy of the GNU General Public License\r
+ * along with this program; if not, write to the Free Software\r
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\r
+ * ------------------------------------------------------------------------\r
+ *\r
+ * See the file ChangeLog for a revision history.\r
+ */\r
+\r
+#include "config.h"\r
+\r
+#include <stdio.h>\r
+#include <ctype.h>\r
+#include <errno.h>\r
+#include <sys/types.h>\r
+\r
+#if STDC_HEADERS\r
+# include <stdlib.h>\r
+# include <string.h>\r
+#else /* not STDC_HEADERS */\r
+extern char *getenv();\r
+# if HAVE_STRING_H\r
+#  include <string.h>\r
+# else /* not HAVE_STRING_H */\r
+#  include <strings.h>\r
+# endif /* not HAVE_STRING_H */\r
+#endif /* not STDC_HEADERS */\r
+\r
+#if HAVE_UNISTD_H\r
+# include <unistd.h>\r
+#endif\r
+\r
+#include <X11/Intrinsic.h>\r
+#include <X11/StringDefs.h>\r
+#include <X11/Shell.h>\r
+#include <X11/Xaw/Dialog.h>\r
+#include <X11/Xaw/Form.h>\r
+#include <X11/Xaw/List.h>\r
+#include <X11/Xaw/Label.h>\r
+#include <X11/Xaw/SimpleMenu.h>\r
+#include <X11/Xaw/SmeBSB.h>\r
+#include <X11/Xaw/SmeLine.h>\r
+#include <X11/Xaw/Box.h>\r
+#include <X11/Xaw/Paned.h>\r
+#include <X11/Xaw/MenuButton.h>\r
+#include <X11/cursorfont.h>\r
+#include <X11/Xaw/Text.h>\r
+#include <X11/Xaw/AsciiText.h>\r
+#include <X11/Xaw/Viewport.h>\r
+\r
+#include "common.h"\r
+#include "frontend.h"\r
+#include "backend.h"\r
+#include "xboard.h"\r
+#include "xhistory.h"\r
+#include "gettext.h"\r
+\r
+#ifdef ENABLE_NLS\r
+# define  _(s) gettext (s)\r
+# define N_(s) gettext_noop (s)\r
+#else\r
+# define  _(s) (s)\r
+# define N_(s)  s\r
+#endif\r
+\r
+#define _LL_ 100\r
+\r
+extern Widget formWidget, shellWidget, boardWidget, menuBarWidget;\r
+extern Display *xDisplay;\r
+extern int squareSize;\r
+extern Pixmap xMarkPixmap;\r
+extern char *layoutName;\r
+\r
+struct History{\r
+  String *Nr,*white,*black;\r
+  int     aNr;  /* space actually alocated */  \r
+  Widget mvn,mvw,mvb,vbox,viewport,sh;\r
+  char Up;\r
+};\r
+\r
+struct History *hist=0;\r
+String dots=" ... ";\r
+Position gameHistoryX, gameHistoryY;\r
+\r
+void\r
+HistoryPopDown(w, client_data, call_data)\r
+     Widget w;\r
+     XtPointer client_data, call_data;\r
+{\r
+  Arg args[16];\r
+  int j;\r
+  if(hist) {\r
+    // [HGM] remember old position\r
+    j = 0;\r
     XtSetArg(args[j], XtNx, &gameHistoryX);  j++;\r
     XtSetArg(args[j], XtNy, &gameHistoryY);  j++;\r
     XtGetValues(hist->sh, args, j);\r
-
-    XtPopdown(hist->sh);
-    hist->Up=False;
-  }
-  j=0;
-  XtSetArg(args[j], XtNleftBitmap, None); j++;
-  XtSetValues(XtNameToWidget(menuBarWidget, "menuMode.Show Move History"),
-               args, j);
-}
-
-void HistoryMoveProc(Widget w, XtPointer closure, XtPointer call_data)
-{
-    int to;
-
-    XawListReturnStruct *R = (XawListReturnStruct *) call_data;
-    if (w == hist->mvn || w == hist->mvw) {
-      to=2*R->list_index-1;
-      ToNrEvent(to);
-    }
-    else if (w == hist->mvb) {
-      to=2*R->list_index;
-      ToNrEvent(to);
-    }
-}
-
-void HistoryAlloc(int len){
-  int i;
-  if(hist){
-    free(hist->Nr[0]);free(hist->white[0]);free(hist->black[0]);
-    free(hist->Nr);free(hist->white);free(hist->black);
-  }
-  else{
-    hist=(struct History*)malloc(sizeof(struct History)); 
-  }
-    hist->aNr=len;
-    hist->Nr=(String*)malloc(hist->aNr*sizeof(String*));
-    hist->white=(String*)malloc(hist->aNr*sizeof(String*));
-    hist->black=(String*)malloc(hist->aNr*sizeof(String*));
-    
-    hist->Nr[0]=(String)malloc(hist->aNr*6);
-    hist->white[0]=(String)malloc(hist->aNr*MOVE_LEN);
-    hist->black[0]=(String)malloc(hist->aNr*MOVE_LEN);
-
-      sprintf(hist->Nr[0],"    ");
-      sprintf(hist->white[0],"White ");
-      sprintf(hist->black[0],"Black ");
-    for(i=1;i<hist->aNr;i++){
-      hist->Nr[i]= hist->Nr[i-1]+6;
-      hist->white[i]= hist->white[i-1]+MOVE_LEN;
-      hist->black[i]= hist->black[i-1]+MOVE_LEN;
-      sprintf(hist->Nr[i],"%i.",i);
-      sprintf(hist->white[i],"-----");
-      sprintf(hist->black[i],"-----");
-     }
-}
-
-
-#if 1
-/* Find empty space inside vbox form widget and redistribute it amongst
-   the list widgets inside it. */
-/* This version sort of works */
-void
-HistoryFill()
-{
-  Dimension w, bw;
-  long extra;
-  Position x, x1, x2;
-  int j, dd;
-  Arg args[16];
-
-  j = 0;
-  XtSetArg(args[j], XtNx, &x);  j++;
-  XtSetArg(args[j], XtNwidth, &w);  j++;
-  XtSetArg(args[j], XtNborderWidth, &bw);  j++;
-  XtGetValues(hist->mvb, args, j);
-  x1 = x + w + 2*bw;
-
-  j = 0;
-  XtSetArg(args[j], XtNwidth, &w);  j++;
-  XtSetArg(args[j], XtNdefaultDistance, &dd);  j++;
-  XtGetValues(hist->vbox, args, j);
-  x2 = w - dd;
-
-  extra = x2 - x1;
-  if (extra < 0) {
-    extra = -((-extra)/2);
-  } else {
-    extra = extra/2;
-  }
-  j = 0;
-  XtSetArg(args[j], XtNwidth, &w);  j++;
-  XtGetValues(hist->mvw, args, j);
-  w += extra;
-  j = 0;
-  XtSetArg(args[j], XtNwidth, w);  j++;
-  XtSetValues(hist->mvw, args, j);
-
-  j = 0;
-  XtSetArg(args[j], XtNwidth, &w);  j++;
-  XtGetValues(hist->mvb, args, j);
-  w += extra;
-  j = 0;
-  XtSetArg(args[j], XtNwidth, w);  j++;
-  XtSetValues(hist->mvb, args, j);
-}
-#else
-/* Find empty space inside vbox form widget and redistribute it amongst
-   the list widgets inside it. */
-/* This version doesn't work */
-void
-HistoryFill()
-{
-  Arg args[16];
-  Dimension fw, niw, wiw, biw, nbw, wbw, bbw;
-  int j, nl, wl, bl, fdd;
-  long extra;
-
-  j = 0;
-  XtSetArg(args[j], XtNwidth, &fw);  j++;
-  XtSetArg(args[j], XtNdefaultDistance, &fdd);  j++;
-  XtGetValues(hist->vbox, args, j);
-
-  j = 0;
-  XtSetArg(args[j], XtNlongest, &nl);  j++;
-  XtSetArg(args[j], XtNinternalWidth, &niw);  j++;
-  XtSetArg(args[j], XtNborderWidth, &nbw);  j++;
-  XtGetValues(hist->mvn, args, j);
-
-  j = 0;
-  XtSetArg(args[j], XtNlongest, &wl);  j++;
-  XtSetArg(args[j], XtNinternalWidth, &wiw);  j++;
-  XtSetArg(args[j], XtNborderWidth, &wbw);  j++;
-  XtGetValues(hist->mvw, args, j);
-
-  j = 0;
-  XtSetArg(args[j], XtNlongest, &bl);  j++;
-  XtSetArg(args[j], XtNinternalWidth, &biw);  j++;
-  XtSetArg(args[j], XtNborderWidth, &bbw);  j++;
-  XtGetValues(hist->mvb, args, j);
-
-  extra = fw - 4*fdd -
-    nl - 1 - 2*niw - 2*nbw - wl - 2*wiw - 2*wbw - bl - 2*biw - 2*bbw;
-  if (extra < 0) extra = 0;
-
-  j = 0;
-  XtSetArg(args[j], XtNwidth, nl + 1 + 2*niw);  j++;
-  XtSetValues(hist->mvn, args, j);
-
-  j = 0;
-  XtSetArg(args[j], XtNwidth, wl + 2*wiw + extra/2);  j++;
-  XtSetValues(hist->mvw, args, j);
-
-  j = 0;
-  XtSetArg(args[j], XtNwidth, bl + 2*biw + extra/2);  j++;
-  XtSetValues(hist->mvb, args, j);
-}
-#endif
-
-void HistorySet(char movelist[][2*MOVE_LEN],int first,int last,int current){
-  int i,b,m;
-  if(hist){
-    if(last >= hist->aNr) HistoryAlloc(last+_LL_);
-    for(i=0;i<last;i++) {
-      if((i%2)==0) { 
-       if(movelist[i][0]) {
-         char* p = strchr(movelist[i], ' ');
-         if (p) {
-           strncpy(hist->white[i/2+1], movelist[i], p-movelist[i]);
-           hist->white[i/2+1][p-movelist[i]] = NULLCHAR;
-         } else {
-           strcpy(hist->white[i/2+1],movelist[i]);
-         }         
-       } else {
-         strcpy(hist->white[i/2+1],dots);
-       }
-      } else {
-       if(movelist[i][0]) {
-         char* p = strchr(movelist[i], ' ');
-         if (p) {
-           strncpy(hist->black[i/2+1], movelist[i], p-movelist[i]);
-           hist->black[i/2+1][p-movelist[i]] = NULLCHAR;
-         } else {
-           strcpy(hist->black[i/2+1],movelist[i]);
-         }         
-       } else {
-         strcpy(hist->black[i/2+1],"");
-       }
-      }
-    }
-    strcpy(hist->black[last/2+1],"");
-    b=first/2;
-    m=(last+3)/2-b;
-    XawFormDoLayout(hist->vbox, False);
-    XawListChange(hist->mvn,hist->Nr+b,m,0,True);
-    XawListChange(hist->mvw,hist->white+b,m,0,True);
-    XawListChange(hist->mvb,hist->black+b,m,0,True);
-    HistoryFill();
-    XawFormDoLayout(hist->vbox, True);
-    if(current<0){
-      XawListUnhighlight(hist->mvw);
-      XawListUnhighlight(hist->mvb);
-    }
-    else if((current%2)==0){
-      XawListHighlight(hist->mvw, current/2+1);
-      XawListUnhighlight(hist->mvb);
-    }
-    else{
-      XawListUnhighlight(hist->mvw);
-      if(current) XawListHighlight(hist->mvb, current/2+1);
-      else XawListUnhighlight(hist->mvb);
-    }
-  }
-}
-
-Widget HistoryCreate()
-{
-    Arg args[16];
-    int i,j;
-
-    Widget layout,form,b_close;
-    String trstr=
-             "<Key>Up: BackwardProc() \n \
-             <Key>Left: BackwardProc() \n \
-             <Key>Down: ForwardProc() \n \
-             <Key>Right: ForwardProc() \n";
-    /*--- allocate memory for move-strings ---*/
-    HistoryAlloc(_LL_);
-   
-    /*-------- create the widgets ---------------*/
-    j = 0;
-    XtSetArg(args[j], XtNresizable, True);  j++;
-    XtSetArg(args[j], XtNallowShellResize, True);  j++;   
-#if TOPLEVEL
-    hist->sh =
-      XtCreatePopupShell("Move list", topLevelShellWidgetClass,
-                        shellWidget, args, j);
-#else
-    hist->sh =
-      XtCreatePopupShell("Move list", transientShellWidgetClass,
-                        shellWidget, args, j);
-#endif        
-    j = 0;
-    XtSetArg(args[j], XtNborderWidth, 0); j++;
-    XtSetArg(args[j], XtNdefaultDistance, 0);  j++;
-      layout =
-      XtCreateManagedWidget(layoutName, formWidgetClass, hist->sh,
-                           args, j);
-    
-    j = 0;
-    XtSetArg(args[j], XtNborderWidth, 0); j++;
-    XtSetArg(args[j], XtNresizable, True);  j++;
-  
-    form =
-      XtCreateManagedWidget("form", formWidgetClass, layout, args, j);
-     j=0;
-
-    j = 0;
-
-    XtSetArg(args[j], XtNtop, XtChainTop);  j++;
-    XtSetArg(args[j], XtNbottom, XtChainBottom);  j++;
-    XtSetArg(args[j], XtNleft, XtChainLeft);  j++;
-    XtSetArg(args[j], XtNright, XtChainRight);  j++;
-
-    XtSetArg(args[j], XtNborderWidth, 1); j++;
-    XtSetArg(args[j], XtNresizable, False);  j++;
-    XtSetArg(args[j], XtNallowVert, True); j++;
-    XtSetArg(args[j], XtNallowHoriz, True);  j++;
-    XtSetArg(args[j], XtNforceBars, False); j++;
-    XtSetArg(args[j], XtNheight, 280); j++;
-    hist->viewport =
-      XtCreateManagedWidget("viewport", viewportWidgetClass,
-                           form, args, j);
-    j=0;
-    XtSetArg(args[j], XtNborderWidth, 0); j++;
-    XtSetArg(args[j], XtNorientation,XtorientHorizontal);j++;
-    hist->vbox =
-      XtCreateManagedWidget("vbox", formWidgetClass, hist->viewport, args, j);
-    
-    j=0;
-    XtSetArg(args[j], XtNtop, XtChainTop);  j++;
-    XtSetArg(args[j], XtNbottom, XtChainTop);  j++;
-    XtSetArg(args[j], XtNleft, XtChainLeft);  j++;
-    XtSetArg(args[j], XtNright, XtChainLeft);  j++;    
-     
-    XtSetArg(args[j], XtNdefaultColumns, 1);  j++;
-    XtSetArg(args[j], XtNforceColumns, True);  j++;
-    XtSetArg(args[j], XtNverticalList, True);  j++;
-    XtSetArg(args[j], XtNborderWidth, 0); j++;
-    XtSetArg(args[j], XtNresizable,True);j++;
-    XtSetArg(args[j], XtNleft, XtChainLeft);  j++;
-    hist->mvn = XtCreateManagedWidget("movesn", listWidgetClass,
-                                     hist->vbox, args, j);
-    XtAddCallback(hist->mvn, XtNcallback, HistoryMoveProc, (XtPointer) hist);
-
-    j=0;
-    XtSetArg(args[j], XtNtop, XtChainTop);  j++;
-    XtSetArg(args[j], XtNbottom, XtChainTop);  j++;
-    XtSetArg(args[j], XtNleft, XtChainLeft);  j++;
-    XtSetArg(args[j], XtNright, XtRubber);  j++;    
-    
-    XtSetArg(args[j], XtNdefaultColumns, 1);  j++;
-    XtSetArg(args[j], XtNforceColumns, True);  j++;
-    XtSetArg(args[j], XtNverticalList, True);  j++;
-    XtSetArg(args[j], XtNborderWidth, 0); j++;
-    XtSetArg(args[j], XtNresizable,True);j++;
-    XtSetArg(args[j], XtNfromHoriz, hist->mvn);  j++;
-    hist->mvw = XtCreateManagedWidget("movesw", listWidgetClass,
-                                     hist->vbox, args, j);
-    XtAddCallback(hist->mvw, XtNcallback, HistoryMoveProc, (XtPointer) hist);
-
-    j=0;
-    XtSetArg(args[j], XtNtop, XtChainTop);  j++;
-    XtSetArg(args[j], XtNbottom, XtChainTop);  j++;
-    XtSetArg(args[j], XtNleft, XtRubber);  j++;
-    XtSetArg(args[j], XtNright,  XtRubber);  j++;
-    
-    XtSetArg(args[j], XtNdefaultColumns, 1);  j++;
-    XtSetArg(args[j], XtNforceColumns, True);  j++;
-    XtSetArg(args[j], XtNverticalList, True);  j++;
-    XtSetArg(args[j], XtNborderWidth, 0); j++;
-    XtSetArg(args[j], XtNresizable,True);j++;
-    XtSetArg(args[j], XtNfromHoriz, hist->mvw);  j++;
-    hist->mvb = XtCreateManagedWidget("movesb", listWidgetClass,
-                                     hist->vbox, args, j);
-    XtAddCallback(hist->mvb, XtNcallback, HistoryMoveProc, (XtPointer) hist);
-
-    j=0;
-    XtSetArg(args[j], XtNbottom, XtChainBottom);  j++;
-    XtSetArg(args[j], XtNtop, XtChainBottom);  j++;
-    XtSetArg(args[j], XtNleft, XtChainLeft);  j++;
-    XtSetArg(args[j], XtNright, XtChainLeft);  j++;
-    XtSetArg(args[j], XtNfromVert, hist->viewport);  j++;
-    b_close= XtCreateManagedWidget("Close", commandWidgetClass,
-                                  form, args, j);   
-    XtAddCallback(b_close, XtNcallback, HistoryPopDown, (XtPointer) 0);
-
-    XtAugmentTranslations(hist->sh,XtParseTranslationTable (trstr)); 
-
-    XtRealizeWidget(hist->sh);
-    CatchDeleteWindow(hist->sh, "HistoryPopDown");
-
-    for(i=1;i<hist->aNr;i++){
-      strcpy(hist->white[i],dots);
-      strcpy(hist->black[i],"");
-     }
-   
-  // [HGM] remember old position
-  j = 0;
-  XtSetArg(args[j], XtNx, &gameHistoryX);  j++;\r
-  XtSetArg(args[j], XtNy, &gameHistoryY);  j++;\r
-  XtGetValues(hist->sh, args, j);\r
-
-    return hist->sh;
-}
-
-void
-HistoryPopUp()
-{
-  Arg args[16];
-  int j;
-
-  if(!hist) HistoryCreate();
-  XtPopup(hist->sh, XtGrabNone);
-
-  // [HGM] restore old position
-  j = 0;
+\r
+    XtPopdown(hist->sh);\r
+    hist->Up=False;\r
+  }\r
+  j=0;\r
+  XtSetArg(args[j], XtNleftBitmap, None); j++;\r
+  XtSetValues(XtNameToWidget(menuBarWidget, "menuMode.Show Move List"),\r
+               args, j);\r
+}\r
+\r
+void HistoryMoveProc(Widget w, XtPointer closure, XtPointer call_data)\r
+{\r
+    int to;\r
+    XawListReturnStruct *R = (XawListReturnStruct *) call_data;\r
+    if (w == hist->mvn || w == hist->mvw) {\r
+      to=2*R->list_index-1;\r
+      ToNrEvent(to);\r
+    }\r
+    else if (w == hist->mvb) {\r
+      to=2*R->list_index;\r
+      ToNrEvent(to);\r
+    }\r
+}\r
+\r
+void HistoryAlloc(int len){\r
+  int i;\r
+  if(hist){\r
+    free(hist->Nr[0]);free(hist->white[0]);free(hist->black[0]);\r
+    free(hist->Nr);free(hist->white);free(hist->black);\r
+  }\r
+  else{\r
+    hist=(struct History*)malloc(sizeof(struct History)); \r
+  }\r
+    hist->aNr=len;\r
+    hist->Nr=(String*)malloc(hist->aNr*sizeof(String*));\r
+    hist->white=(String*)malloc(hist->aNr*sizeof(String*));\r
+    hist->black=(String*)malloc(hist->aNr*sizeof(String*));\r
+    \r
+    hist->Nr[0]=(String)malloc(hist->aNr*6);\r
+    hist->white[0]=(String)malloc(hist->aNr*MOVE_LEN);\r
+    hist->black[0]=(String)malloc(hist->aNr*MOVE_LEN);\r
+\r
+      sprintf(hist->Nr[0],"    ");\r
+      sprintf(hist->white[0],_("White "));\r
+      sprintf(hist->black[0],_("Black "));\r
+    for(i=1;i<hist->aNr;i++){\r
+      hist->Nr[i]= hist->Nr[i-1]+6;\r
+      hist->white[i]= hist->white[i-1]+MOVE_LEN;\r
+      hist->black[i]= hist->black[i-1]+MOVE_LEN;\r
+      sprintf(hist->Nr[i],"%i.",i);\r
+      sprintf(hist->white[i],"-----");\r
+      sprintf(hist->black[i],"-----");\r
+     }\r
+}\r
+\r
+\r
+#if 1\r
+/* Find empty space inside vbox form widget and redistribute it amongst\r
+   the list widgets inside it. */\r
+/* This version sort of works */\r
+void\r
+HistoryFill()\r
+{\r
+  Dimension w, bw;\r
+  long extra;\r
+  Position x, x1, x2;\r
+  int j, dd;\r
+  Arg args[16];\r
+\r
+  j = 0;\r
+  XtSetArg(args[j], XtNx, &x);  j++;\r
+  XtSetArg(args[j], XtNwidth, &w);  j++;\r
+  XtSetArg(args[j], XtNborderWidth, &bw);  j++;\r
+  XtGetValues(hist->mvb, args, j);\r
+  x1 = x + w + 2*bw;\r
+\r
+  j = 0;\r
+  XtSetArg(args[j], XtNwidth, &w);  j++;\r
+  XtSetArg(args[j], XtNdefaultDistance, &dd);  j++;\r
+  XtGetValues(hist->vbox, args, j);\r
+  x2 = w - dd;\r
+\r
+  extra = x2 - x1;\r
+  if (extra < 0) {\r
+    extra = -((-extra)/2);\r
+  } else {\r
+    extra = extra/2;\r
+  }\r
\r
+  j = 0;\r
+  XtSetArg(args[j], XtNwidth, &w);  j++;\r
+  XtGetValues(hist->mvw, args, j);\r
+  w += extra;\r
+  j = 0;\r
+  XtSetArg(args[j], XtNwidth, w);  j++;\r
+  XtSetValues(hist->mvw, args, j);\r
+\r
+  j = 0;\r
+  XtSetArg(args[j], XtNwidth, &w);  j++;\r
+  XtGetValues(hist->mvb, args, j);\r
+  w += extra;\r
+  j = 0;\r
+  XtSetArg(args[j], XtNwidth, w);  j++;\r
+  XtSetValues(hist->mvb, args, j);\r
+}\r
+#else\r
+/* Find empty space inside vbox form widget and redistribute it amongst\r
+   the list widgets inside it. */\r
+/* This version doesn't work */\r
+void\r
+HistoryFill()\r
+{\r
+  Arg args[16];\r
+  Dimension fw, niw, wiw, biw, nbw, wbw, bbw;\r
+  int j, nl, wl, bl, fdd;\r
+  long extra;\r
+\r
+  j = 0;\r
+  XtSetArg(args[j], XtNwidth, &fw);  j++;\r
+  XtSetArg(args[j], XtNdefaultDistance, &fdd);  j++;\r
+  XtGetValues(hist->vbox, args, j);\r
+\r
+  j = 0;\r
+  XtSetArg(args[j], XtNlongest, &nl);  j++;\r
+  XtSetArg(args[j], XtNinternalWidth, &niw);  j++;\r
+  XtSetArg(args[j], XtNborderWidth, &nbw);  j++;\r
+  XtGetValues(hist->mvn, args, j);\r
+\r
+  j = 0;\r
+  XtSetArg(args[j], XtNlongest, &wl);  j++;\r
+  XtSetArg(args[j], XtNinternalWidth, &wiw);  j++;\r
+  XtSetArg(args[j], XtNborderWidth, &wbw);  j++;\r
+  XtGetValues(hist->mvw, args, j);\r
+\r
+  j = 0;\r
+  XtSetArg(args[j], XtNlongest, &bl);  j++;\r
+  XtSetArg(args[j], XtNinternalWidth, &biw);  j++;\r
+  XtSetArg(args[j], XtNborderWidth, &bbw);  j++;\r
+  XtGetValues(hist->mvb, args, j);\r
+\r
+  extra = fw - 4*fdd -\r
+    nl - 1 - 2*niw - 2*nbw - wl - 2*wiw - 2*wbw - bl - 2*biw - 2*bbw;\r
+  if (extra < 0) extra = 0;\r
+\r
+  j = 0;\r
+  XtSetArg(args[j], XtNwidth, nl + 1 + 2*niw);  j++;\r
+  XtSetValues(hist->mvn, args, j);\r
+\r
+  j = 0;\r
+  XtSetArg(args[j], XtNwidth, wl + 2*wiw + extra/2);  j++;\r
+  XtSetValues(hist->mvw, args, j);\r
+\r
+  j = 0;\r
+  XtSetArg(args[j], XtNwidth, bl + 2*biw + extra/2);  j++;\r
+  XtSetValues(hist->mvb, args, j);\r
+}\r
+#endif\r
+\r
+void HistorySet(char movelist[][2*MOVE_LEN],int first,int last,int current){\r
+  int i,b,m;\r
+  if(hist){\r
+    if(last >= hist->aNr) HistoryAlloc(last+_LL_);\r
+    for(i=0;i<last;i++) {\r
+      if((i%2)==0) { \r
+       if(movelist[i][0]) {\r
+         char* p = strchr(movelist[i], ' ');\r
+         if (p) {\r
+           strncpy(hist->white[i/2+1], movelist[i], p-movelist[i]);\r
+           hist->white[i/2+1][p-movelist[i]] = NULLCHAR;\r
+         } else {\r
+           strcpy(hist->white[i/2+1],movelist[i]);\r
+         }         \r
+       } else {\r
+         strcpy(hist->white[i/2+1],dots);\r
+       }\r
+      } else {\r
+       if(movelist[i][0]) {\r
+         char* p = strchr(movelist[i], ' ');\r
+         if (p) {\r
+           strncpy(hist->black[i/2+1], movelist[i], p-movelist[i]);\r
+           hist->black[i/2+1][p-movelist[i]] = NULLCHAR;\r
+         } else {\r
+           strcpy(hist->black[i/2+1],movelist[i]);\r
+         }         \r
+       } else {\r
+         strcpy(hist->black[i/2+1],"");\r
+       }\r
+      }\r
+    }\r
+    strcpy(hist->black[last/2+1],"");\r
+    b=first/2;\r
+    m=(last+3)/2-b;\r
+    XawFormDoLayout(hist->vbox, False);\r
+    XawListChange(hist->mvn,hist->Nr+b,m,0,True);\r
+    XawListChange(hist->mvw,hist->white+b,m,0,True);\r
+    XawListChange(hist->mvb,hist->black+b,m,0,True);\r
+    HistoryFill();\r
+    XawFormDoLayout(hist->vbox, True);\r
+    if(current<0){\r
+      XawListUnhighlight(hist->mvw);\r
+      XawListUnhighlight(hist->mvb);\r
+    }\r
+    else if((current%2)==0){\r
+      XawListHighlight(hist->mvw, current/2+1);\r
+      XawListUnhighlight(hist->mvb);\r
+    }\r
+    else{\r
+      XawListUnhighlight(hist->mvw);\r
+      if(current) XawListHighlight(hist->mvb, current/2+1);\r
+      else XawListUnhighlight(hist->mvb);\r
+    }\r
+  }\r
+}\r
+\r
+Widget HistoryCreate()\r
+{\r
+    Arg args[16];\r
+    int i,j;\r
+\r
+    Widget layout,form,b_close;\r
+    String trstr=\r
+             "<Key>Up: BackwardProc() \n \\r
+             <Key>Left: BackwardProc() \n \\r
+             <Key>Down: ForwardProc() \n \\r
+             <Key>Right: ForwardProc() \n";\r
+    /*--- allocate memory for move-strings ---*/\r
+    HistoryAlloc(_LL_);\r
+   \r
+    /*-------- create the widgets ---------------*/\r
+    j = 0;\r
+    XtSetArg(args[j], XtNresizable, True);  j++;\r
+    XtSetArg(args[j], XtNallowShellResize, True);  j++;   \r
+#if TOPLEVEL\r
+    hist->sh =\r
+      XtCreatePopupShell(_("Move list"), topLevelShellWidgetClass,\r
+                        shellWidget, args, j);\r
+#else\r
+    hist->sh =\r
+      XtCreatePopupShell(_("Move list"), transientShellWidgetClass,\r
+                        shellWidget, args, j);\r
+#endif        \r
+    j = 0;\r
+    XtSetArg(args[j], XtNborderWidth, 0); j++;\r
+    XtSetArg(args[j], XtNdefaultDistance, 0);  j++;\r
+      layout =\r
+      XtCreateManagedWidget(layoutName, formWidgetClass, hist->sh,\r
+                           args, j);\r
+    \r
+    j = 0;\r
+    XtSetArg(args[j], XtNborderWidth, 0); j++;\r
+    XtSetArg(args[j], XtNresizable, True);  j++;\r
+  \r
+    form =\r
+      XtCreateManagedWidget("form", formWidgetClass, layout, args, j);\r
+     j=0;\r
+\r
+    j = 0;\r
+\r
+    XtSetArg(args[j], XtNtop, XtChainTop);  j++;\r
+    XtSetArg(args[j], XtNbottom, XtChainBottom);  j++;\r
+    XtSetArg(args[j], XtNleft, XtChainLeft);  j++;\r
+    XtSetArg(args[j], XtNright, XtChainRight);  j++;\r
+\r
+    XtSetArg(args[j], XtNborderWidth, 1); j++;\r
+    XtSetArg(args[j], XtNresizable, False);  j++;\r
+    XtSetArg(args[j], XtNallowVert, True); j++;\r
+    XtSetArg(args[j], XtNallowHoriz, True);  j++;\r
+    XtSetArg(args[j], XtNforceBars, False); j++;\r
+    XtSetArg(args[j], XtNheight, 280); j++;\r
+    hist->viewport =\r
+      XtCreateManagedWidget("viewport", viewportWidgetClass,\r
+                           form, args, j);\r
+    j=0;\r
+    XtSetArg(args[j], XtNborderWidth, 0); j++;\r
+    XtSetArg(args[j], XtNorientation,XtorientHorizontal);j++;\r
+    hist->vbox =\r
+      XtCreateManagedWidget("vbox", formWidgetClass, hist->viewport, args, j);\r
+    \r
+    j=0;\r
+    XtSetArg(args[j], XtNtop, XtChainTop);  j++;\r
+    XtSetArg(args[j], XtNbottom, XtChainTop);  j++;\r
+    XtSetArg(args[j], XtNleft, XtChainLeft);  j++;\r
+    XtSetArg(args[j], XtNright, XtChainLeft);  j++;    \r
+     \r
+    XtSetArg(args[j], XtNdefaultColumns, 1);  j++;\r
+    XtSetArg(args[j], XtNforceColumns, True);  j++;\r
+    XtSetArg(args[j], XtNverticalList, True);  j++;\r
+    XtSetArg(args[j], XtNborderWidth, 0); j++;\r
+    XtSetArg(args[j], XtNresizable,True);j++;\r
+    XtSetArg(args[j], XtNleft, XtChainLeft);  j++;\r
+    hist->mvn = XtCreateManagedWidget("movesn", listWidgetClass,\r
+                                     hist->vbox, args, j);\r
+    XtAddCallback(hist->mvn, XtNcallback, HistoryMoveProc, (XtPointer) hist);\r
+\r
+    j=0;\r
+    XtSetArg(args[j], XtNtop, XtChainTop);  j++;\r
+    XtSetArg(args[j], XtNbottom, XtChainTop);  j++;\r
+    XtSetArg(args[j], XtNleft, XtChainLeft);  j++;\r
+    XtSetArg(args[j], XtNright, XtRubber);  j++;    \r
+    \r
+    XtSetArg(args[j], XtNdefaultColumns, 1);  j++;\r
+    XtSetArg(args[j], XtNforceColumns, True);  j++;\r
+    XtSetArg(args[j], XtNverticalList, True);  j++;\r
+    XtSetArg(args[j], XtNborderWidth, 0); j++;\r
+    XtSetArg(args[j], XtNresizable,True);j++;\r
+    XtSetArg(args[j], XtNfromHoriz, hist->mvn);  j++;\r
+    hist->mvw = XtCreateManagedWidget("movesw", listWidgetClass,\r
+                                     hist->vbox, args, j);\r
+    XtAddCallback(hist->mvw, XtNcallback, HistoryMoveProc, (XtPointer) hist);\r
+\r
+    j=0;\r
+    XtSetArg(args[j], XtNtop, XtChainTop);  j++;\r
+    XtSetArg(args[j], XtNbottom, XtChainTop);  j++;\r
+    XtSetArg(args[j], XtNleft, XtRubber);  j++;\r
+    XtSetArg(args[j], XtNright,  XtRubber);  j++;\r
+    \r
+    XtSetArg(args[j], XtNdefaultColumns, 1);  j++;\r
+    XtSetArg(args[j], XtNforceColumns, True);  j++;\r
+    XtSetArg(args[j], XtNverticalList, True);  j++;\r
+    XtSetArg(args[j], XtNborderWidth, 0); j++;\r
+    XtSetArg(args[j], XtNresizable,True);j++;\r
+    XtSetArg(args[j], XtNfromHoriz, hist->mvw);  j++;\r
+    hist->mvb = XtCreateManagedWidget("movesb", listWidgetClass,\r
+                                     hist->vbox, args, j);\r
+    XtAddCallback(hist->mvb, XtNcallback, HistoryMoveProc, (XtPointer) hist);\r
+\r
+    j=0;\r
+    XtSetArg(args[j], XtNbottom, XtChainBottom);  j++;\r
+    XtSetArg(args[j], XtNtop, XtChainBottom);  j++;\r
+    XtSetArg(args[j], XtNleft, XtChainLeft);  j++;\r
+    XtSetArg(args[j], XtNright, XtChainLeft);  j++;\r
+    XtSetArg(args[j], XtNfromVert, hist->viewport);  j++;\r
+    b_close= XtCreateManagedWidget(_("Close"), commandWidgetClass,\r
+                                  form, args, j);   \r
+    XtAddCallback(b_close, XtNcallback, HistoryPopDown, (XtPointer) 0);\r
+\r
+    XtAugmentTranslations(hist->sh,XtParseTranslationTable (trstr)); \r
+\r
+    XtRealizeWidget(hist->sh);\r
+    CatchDeleteWindow(hist->sh, "HistoryPopDown");\r
+\r
+    for(i=1;i<hist->aNr;i++){\r
+      strcpy(hist->white[i],dots);\r
+      strcpy(hist->black[i],"");\r
+     }\r
+   \r
+    return hist->sh;\r
+}\r
+\r
+void\r
+HistoryPopUp()\r
+{\r
+  Arg args[16];\r
+  int j;\r
+\r
+  if(!hist) HistoryCreate();\r
+  XtPopup(hist->sh, XtGrabNone);\r
+\r
+  // [HGM] restore old position\r
+  j = 0;\r
   XtSetArg(args[j], XtNx, gameHistoryX);  j++;\r
   XtSetArg(args[j], XtNy, gameHistoryY);  j++;\r
   XtSetValues(hist->sh, args, j);\r
-
-  j=0;
-  XtSetArg(args[j], XtNleftBitmap, xMarkPixmap); j++;
-  XtSetValues(XtNameToWidget(menuBarWidget, "menuMode.Show Move History"),
-               args, j);
-  hist->Up=True;
-}
-
-void
-HistoryShowProc(w, event, prms, nprms)
-     Widget w;
-     XEvent *event;
-     String *prms;
-     Cardinal *nprms;
-{
-  if (!hist) {
-    HistoryCreate();
-    HistoryPopUp();
-  } else if (hist->Up) {
-    HistoryPopDown(0,0,0);
-  } else {
-    HistoryPopUp();
-  }
-  ToNrEvent(currentMove);
-}
+\r
+  j=0;\r
+  XtSetArg(args[j], XtNleftBitmap, xMarkPixmap); j++;\r
+  XtSetValues(XtNameToWidget(menuBarWidget, "menuMode.Show Move List"),\r
+               args, j);\r
+  hist->Up=True;\r
+}\r
+\r
\r
+void\r
+HistoryShowProc(w, event, prms, nprms)\r
+     Widget w;\r
+     XEvent *event;\r
+     String *prms;\r
+     Cardinal *nprms;\r
+{\r
+  if (!hist) {\r
+    HistoryCreate();\r
+    HistoryPopUp();\r
+  } else if (hist->Up) {\r
+    HistoryPopDown(0,0,0);\r
+  } else {\r
+    HistoryPopUp();\r
+  }\r
+  ToNrEvent(currentMove);\r
+}\r
\r
index 5e4fac8..6dc6e6d 100644 (file)
-/*
- * xoptions.c -- Move list window, part of X front end for XBoard
- *
- * Copyright 2000 Free Software Foundation, Inc.
- *
- * The following terms apply to the enhanced version of XBoard distributed
- * by the Free Software Foundation:
- * ------------------------------------------------------------------------
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- * ------------------------------------------------------------------------
- *
- * See the file ChangeLog for a revision history.
- */
-
-// [HGM] this file is the counterpart of woptions.c, containing xboard popup menus
-// similar to those of WinBoard, to set the most common options interactively.
-
-#include "config.h"
-
-#include <stdio.h>
-#include <ctype.h>
-#include <errno.h>
-#include <sys/types.h>
-
-#if STDC_HEADERS
-# include <stdlib.h>
-# include <string.h>
-#else /* not STDC_HEADERS */
-extern char *getenv();
-# if HAVE_STRING_H
-#  include <string.h>
-# else /* not HAVE_STRING_H */
-#  include <strings.h>
-# endif /* not HAVE_STRING_H */
-#endif /* not STDC_HEADERS */
-
-#if HAVE_UNISTD_H
-# include <unistd.h>
-#endif
-
-#include <X11/Intrinsic.h>
-#include <X11/StringDefs.h>
-#include <X11/Shell.h>
-#include <X11/Xaw/Dialog.h>
-#include <X11/Xaw/Form.h>
-#include <X11/Xaw/List.h>
-#include <X11/Xaw/Label.h>
-#include <X11/Xaw/SimpleMenu.h>
-#include <X11/Xaw/SmeBSB.h>
-#include <X11/Xaw/SmeLine.h>
-#include <X11/Xaw/Box.h>
-#include <X11/Xaw/Paned.h>
-#include <X11/Xaw/MenuButton.h>
-#include <X11/cursorfont.h>
-#include <X11/Xaw/Text.h>
-#include <X11/Xaw/AsciiText.h>
-#include <X11/Xaw/Viewport.h>
-#include <X11/Xaw/Toggle.h>
-
-#include "common.h"
-#include "backend.h"
-#include "xboard.h"
-
-extern Widget formWidget, shellWidget, boardWidget, menuBarWidget;
-extern Display *xDisplay;
-extern int squareSize;
-extern Pixmap xMarkPixmap;
-extern char *layoutName;
-extern Window xBoardWindow;
-extern Arg layoutArgs[2], formArgs[2];
-Pixel timerForegroundPixel, timerBackgroundPixel;
-
-// [HGM] the following code for makng menu popups was cloned from the FileNamePopUp routines
-
-static Widget previous = NULL;
-
-void SetFocus(Widget w, XtPointer data, XEvent *event, Boolean *b)
-{
-    Arg args;
-
-    if(previous) {
-       XtSetArg(args, XtNdisplayCaret, False);
-       XtSetValues(previous, &args, 1);
-    }
-    XtSetArg(args, XtNdisplayCaret, True);
-    XtSetValues(w, &args, 1);
-    XtSetKeyboardFocus((Widget) data, w);
-    previous = w;
-}
-
-//--------------------------- New Shuffle Game --------------------------------------------
-extern int shuffleOpenings;
-extern int startedFromPositionFile;
-int shuffleUp;
-Widget shuffleShell;
-
-void ShufflePopDown()
-{
-    if (!shuffleUp) return;
-    XtPopdown(shuffleShell);
-    XtDestroyWidget(shuffleShell);
-    shuffleUp = False;
-    ModeHighlight();
-}
-
-void ShuffleCallback(w, client_data, call_data)
-     Widget w;
-     XtPointer client_data, call_data;
-{
-    String name;
-    Widget w2;
-    Arg args[16];
-    char buf[80];
-    
-    XtSetArg(args[0], XtNlabel, &name);
-    XtGetValues(w, args, 1);
-    
-    if (strcmp(name, "cancel") == 0) {
-        ShufflePopDown();
-        return;
-    }
-    if (strcmp(name, "off") == 0) {
-        ShufflePopDown();
-       shuffleOpenings = False; // [HGM] should be moved to New Variant menu, once we have it!
-       ResetGameEvent();
-       AnalysisPopDown();
-        return;
-    }
-    if (strcmp(name, "random") == 0) {
-       sprintf(buf, "%d", rand());
-       XtSetArg(args[0],XtNvalue, buf); // erase bad (non-numeric) value
-       XtSetValues(XtParent(w), args, 1);
-        return;
-    }
-    if (strcmp(name, "ok") == 0) {
-       int nr; String name;
-        name = XawDialogGetValueString(w2 = XtParent(w));
-       if(sscanf(name ,"%d",&nr) != 1) {
-           sprintf(buf, "%d", appData.defaultFrcPosition);
-           XtSetArg(args[0],XtNvalue, buf); // erase bad (non-numeric) value
-           XtSetValues(w2, args, 1);
-           return;
-       }
-       appData.defaultFrcPosition = nr;
-       shuffleOpenings = True;
-        ShufflePopDown();
-       ResetGameEvent();
-       AnalysisPopDown();
-        return;
-    }
-}
-
-void ShufflePopUp()
-{
-    Arg args[16];
-    Widget popup, layout, dialog, edit;
-    Window root, child;
-    int x, y, i;
-    int win_x, win_y;
-    unsigned int mask;
-    char def[80];
-    
-    i = 0;
-    XtSetArg(args[i], XtNresizable, True); i++;
-    XtSetArg(args[i], XtNwidth, DIALOG_SIZE); i++;
-    shuffleShell = popup =
-      XtCreatePopupShell("New Shuffle Game", transientShellWidgetClass,
-                        shellWidget, args, i);
-    
-    layout =
-      XtCreateManagedWidget(layoutName, formWidgetClass, popup,
-                           layoutArgs, XtNumber(layoutArgs));
-  
-    sprintf(def, "%d\n", appData.defaultFrcPosition);
-    i = 0;
-    XtSetArg(args[i], XtNlabel, "Start-position number:"); i++;
-    XtSetArg(args[i], XtNvalue, def); i++;
-    XtSetArg(args[i], XtNborderWidth, 0); i++;
-    dialog = XtCreateManagedWidget("Shuffle", dialogWidgetClass,
-                                  layout, args, i);
-    
-//    XtSetArg(args[0], XtNeditType, XawtextEdit);  // [HGM] can't get edit to work decently
-//    XtSetArg(args[1], XtNuseStringInPlace, False);
-//    XtSetValues(dialog, args, 2);
-
-    XawDialogAddButton(dialog, "ok", ShuffleCallback, (XtPointer) dialog);
-    XawDialogAddButton(dialog, "cancel", ShuffleCallback, (XtPointer) dialog);
-    XawDialogAddButton(dialog, "random", ShuffleCallback, (XtPointer) dialog);
-    XawDialogAddButton(dialog, "off", ShuffleCallback, (XtPointer) dialog);
-    
-    XtRealizeWidget(popup);
-    CatchDeleteWindow(popup, "ShufflePopDown");
-    
-    XQueryPointer(xDisplay, xBoardWindow, &root, &child,
-                 &x, &y, &win_x, &win_y, &mask);
-    
-    XtSetArg(args[0], XtNx, x - 10);
-    XtSetArg(args[1], XtNy, y - 30);
-    XtSetValues(popup, args, 2);
-    
-    XtPopup(popup, XtGrabExclusive);
-    shuffleUp = True;
-    
-    edit = XtNameToWidget(dialog, "*value");
-
-    XtSetKeyboardFocus(popup, edit);
-}
-
-void ShuffleMenuProc(w, event, prms, nprms)
-     Widget w;
-     XEvent *event;
-     String *prms;
-     Cardinal *nprms;
-{
-//    if (gameMode == AnalyzeMode || gameMode == AnalyzeFile) {
-//     Reset(FALSE, TRUE);
-//    }
-    ShufflePopUp();
-}
-
-//--------------------------- Time-Control Menu Popup ----------------------------------
-int TimeControlUp;
-Widget TimeControlShell;
-int tcInc;
-Widget tcMess1, tcMess2, tcData, tcTime, tcOdds1, tcOdds2;
-int tcIncrement, tcMoves;
-
-void TimeControlPopDown()
-{
-    if (!TimeControlUp) return;
-    XtPopdown(TimeControlShell);
-    XtDestroyWidget(TimeControlShell);
-    TimeControlUp = False;
-    ModeHighlight();
-}
-
-void TimeControlCallback(w, client_data, call_data)
-     Widget w;
-     XtPointer client_data, call_data;
-{
-    String name, txt;
-    Widget w2;
-    Arg args[16];
-    char buf[80];
-    int j;
-
-    XtSetArg(args[0], XtNlabel, &name);
-    XtGetValues(w, args, 1);
-    
-    if (strcmp(name, "classical") == 0) {
-       if(!tcInc) return;
-       j=0;
-       XtSetArg(args[j], XtNlabel, "minutes for each"); j++;
-       XtSetValues(tcMess1, args, j);
-       j=0;
-       XtSetArg(args[j], XtNlabel, "moves"); j++;
-       XtSetValues(tcMess2, args, j);
-       j=0;
-       XtSetArg(args[j], XtNstring, &name); j++;
-       XtGetValues(tcData, args, j);
-       tcIncrement = 0; sscanf(name, "%d", &tcIncrement);
-       sprintf(buf, "%d", tcMoves);
-       j=0;
-       XtSetArg(args[j], XtNstring, buf); j++;
-       XtSetValues(tcData, args, j);
-       tcInc = False;
-        return;
-    }
-    if (strcmp(name, "incremental") == 0) {
-       if(tcInc) return;
-       j=0;
-       XtSetArg(args[j], XtNlabel, "minutes, plus"); j++;
-       XtSetValues(tcMess1, args, j);
-       j=0;
-       XtSetArg(args[j], XtNlabel, "sec/move"); j++;
-       XtSetValues(tcMess2, args, j);
-       j=0;
-       XtSetArg(args[j], XtNstring, &name); j++;
-       XtGetValues(tcData, args, j);
-       tcMoves = appData.movesPerSession; sscanf(name, "%d", &tcMoves);
-       sprintf(buf, "%d", tcIncrement);
-       j=0;
-       XtSetArg(args[j], XtNstring, buf); j++;
-       XtSetValues(tcData, args, j);
-       tcInc = True;
-        return;
-    }
-    if (strcmp(name, " OK ") == 0) {
-       int inc, mps, tc, ok;
-       XtSetArg(args[0], XtNstring, &txt);
-       XtGetValues(tcData, args, 1);
-       if(tcInc) {
-           ok = sscanf(txt, "%d", &inc); mps = 0;
-           if(!ok && txt[0] == 0) { inc = 0; ok = 1; } // accept empty string as zero
-           ok &= (inc >= 0);
-       } else {
-           ok = sscanf(txt, "%d", &mps); inc = -1;
-           ok &= (mps > 0);
-       }
-       if(ok != 1) {
-           XtSetArg(args[0], XtNstring, ""); // erase any offending input
-           XtSetValues(tcData, args, 1);
-           return;
-       }
-       XtSetArg(args[0], XtNstring, &txt);
-       XtGetValues(tcTime, args, 1);
-       if(!ParseTimeControl(txt, inc, mps)) {
-           XtSetArg(args[0], XtNstring, ""); // erase any offending input
-           XtSetValues(tcTime, args, 1);
-           DisplayError("Bad Time-Control String", 0);
-           return;
-       }
-       appData.movesPerSession = mps;
-       appData.timeIncrement = inc;
-       appData.timeControl = strdup(txt);
-       XtSetArg(args[0], XtNstring, &txt);
-       XtGetValues(tcOdds1, args, 1);
-       appData.firstTimeOdds = first.timeOdds 
-               = (sscanf(txt, "%d", &j) == 1 && j > 0) ? j : 1;
-       XtGetValues(tcOdds2, args, 1);
-       appData.secondTimeOdds = second.timeOdds 
-               = (sscanf(txt, "%d", &j) == 1 && j > 0) ? j : 1;
-
-       Reset(True, True);
-        TimeControlPopDown();
-        return;
-    }
-}
-
-void TimeControlPopUp()
-{
-    Arg args[16];
-    Widget popup, layout, form, edit, b_ok, b_cancel, b_clas, b_inc, mess;
-    Window root, child;
-    int x, y, i, j;
-    int win_x, win_y;
-    unsigned int mask;
-    char def[80];
-    
-    tcInc = (appData.timeIncrement >= 0);
-    tcMoves = appData.movesPerSession; tcIncrement = appData.timeIncrement;
-    if(!tcInc) tcIncrement = 0;
-    sprintf(def, "%d", tcInc ? tcIncrement : tcMoves);
-
-    i = 0;
-    XtSetArg(args[i], XtNresizable, True); i++;
-//    XtSetArg(args[i], XtNwidth, DIALOG_SIZE); i++;
-    TimeControlShell = popup =
-      XtCreatePopupShell("TimeControl Menu", transientShellWidgetClass,
-                        shellWidget, args, i);
-    
-    layout =
-      XtCreateManagedWidget(layoutName, formWidgetClass, popup,
-                           layoutArgs, XtNumber(layoutArgs));
-  
-    form =
-      XtCreateManagedWidget(layoutName, formWidgetClass, layout,
-                           formArgs, XtNumber(formArgs));
-  
-    j = 0;
-//    XtSetArg(args[j], XtNwidth,     (XtArgVal) 300); j++;
-//    XtSetArg(args[j], XtNheight,    (XtArgVal) 85); j++;
-    XtSetValues(popup, args, j);
-
-    j= 0;
-    XtSetArg(args[j], XtNborderWidth, 1); j++;
-    XtSetArg(args[j], XtNeditType, XawtextEdit);  j++;
-    XtSetArg(args[j], XtNuseStringInPlace, False);  j++;
-    XtSetArg(args[j], XtNstring, appData.timeControl);  j++;
-    XtSetArg(args[j], XtNdisplayCaret, False);  j++;
-    XtSetArg(args[j], XtNtop, XtChainTop);  j++;
-    XtSetArg(args[j], XtNbottom, XtChainTop);  j++;
-    XtSetArg(args[j], XtNleft, XtChainLeft);  j++;
-    XtSetArg(args[j], XtNright, XtChainRight);  j++;
-    XtSetArg(args[j], XtNresizable, True);  j++;
-    XtSetArg(args[j], XtNwidth,  85);  j++;
-//    XtSetArg(args[j], XtNheight, 20);  j++;
-    tcTime = XtCreateManagedWidget("TC", asciiTextWidgetClass, form, args, j);
-    XtAddEventHandler(tcTime, ButtonPressMask, False, SetFocus, (XtPointer) popup);
-
-    j= 0;
-    XtSetArg(args[j], XtNlabel, tcInc ? "   minutes, plus   " : "minutes for each"); j++;
-    XtSetArg(args[j], XtNborderWidth, 0); j++;
-    XtSetArg(args[j], XtNfromHoriz, tcTime); j++;
-    XtSetArg(args[j], XtNtop, XtChainTop);  j++;
-    XtSetArg(args[j], XtNbottom, XtChainTop);  j++;
-    XtSetArg(args[j], XtNleft, XtChainRight);  j++;
-    XtSetArg(args[j], XtNright, XtChainRight);  j++;
-  //  XtSetArg(args[j], XtNwidth,  100);  j++;
-  //  XtSetArg(args[j], XtNheight, 20);  j++;
-    tcMess1 = XtCreateManagedWidget("TCtext", labelWidgetClass, form, args, j);
-
-    j= 0;
-    XtSetArg(args[j], XtNborderWidth, 1); j++;
-    XtSetArg(args[j], XtNfromHoriz, tcMess1); j++;
-    XtSetArg(args[j], XtNeditType, XawtextEdit);  j++;
-    XtSetArg(args[j], XtNuseStringInPlace, False);  j++;
-    XtSetArg(args[j], XtNstring, def);  j++;
-    XtSetArg(args[j], XtNdisplayCaret, False);  j++;
-    XtSetArg(args[j], XtNtop, XtChainTop);  j++;
-    XtSetArg(args[j], XtNbottom, XtChainTop);  j++;
-    XtSetArg(args[j], XtNleft, XtChainRight);  j++;
-    XtSetArg(args[j], XtNright, XtChainRight);  j++;
-    XtSetArg(args[j], XtNresizable, True);  j++;
-    XtSetArg(args[j], XtNwidth,  40);  j++;
-//    XtSetArg(args[j], XtNheight, 20);  j++;
-    tcData = XtCreateManagedWidget("MPS", asciiTextWidgetClass, form, args, j);
-    XtAddEventHandler(tcData, ButtonPressMask, False, SetFocus, (XtPointer) popup);
-
-    j= 0;
-    XtSetArg(args[j], XtNlabel, tcInc ? "sec/move" : "moves     "); j++;
-    XtSetArg(args[j], XtNjustify, XtJustifyLeft); j++;
-    XtSetArg(args[j], XtNborderWidth, 0); j++;
-    XtSetArg(args[j], XtNfromHoriz, tcData); j++;
-    XtSetArg(args[j], XtNtop, XtChainTop);  j++;
-    XtSetArg(args[j], XtNbottom, XtChainTop);  j++;
-    XtSetArg(args[j], XtNleft, XtChainRight);  j++;
-    XtSetArg(args[j], XtNright, XtChainRight);  j++;
-//    XtSetArg(args[j], XtNwidth,  80);  j++;
-//    XtSetArg(args[j], XtNheight, 20);  j++;
-    tcMess2 = XtCreateManagedWidget("MPStext", labelWidgetClass,
-                                  form, args, j);
-
-    j= 0;
-    XtSetArg(args[j], XtNborderWidth, 1); j++;
-    XtSetArg(args[j], XtNfromVert, tcTime); j++;
-    XtSetArg(args[j], XtNeditType, XawtextEdit);  j++;
-    XtSetArg(args[j], XtNuseStringInPlace, False);  j++;
-    XtSetArg(args[j], XtNstring, "1");  j++;
-    XtSetArg(args[j], XtNdisplayCaret, False);  j++;
-    XtSetArg(args[j], XtNtop, XtChainTop);  j++;
-    XtSetArg(args[j], XtNbottom, XtChainTop);  j++;
-    XtSetArg(args[j], XtNleft, XtChainLeft);  j++;
-    XtSetArg(args[j], XtNright, XtChainLeft);  j++;
-    XtSetArg(args[j], XtNresizable, True);  j++;
-    XtSetArg(args[j], XtNwidth,  40);  j++;
-//    XtSetArg(args[j], XtNheight, 20);  j++;
-    tcOdds1 = XtCreateManagedWidget("Odds1", asciiTextWidgetClass, form, args, j);
-    XtAddEventHandler(tcOdds1, ButtonPressMask, False, SetFocus, (XtPointer) popup);
-
-    j= 0;
-    XtSetArg(args[j], XtNborderWidth, 1); j++;
-    XtSetArg(args[j], XtNfromVert, tcTime); j++;
-    XtSetArg(args[j], XtNfromHoriz, tcOdds1); j++;
-    XtSetArg(args[j], XtNeditType, XawtextEdit);  j++;
-    XtSetArg(args[j], XtNuseStringInPlace, False);  j++;
-    XtSetArg(args[j], XtNstring, "1");  j++;
-    XtSetArg(args[j], XtNdisplayCaret, False);  j++;
-    XtSetArg(args[j], XtNtop, XtChainTop);  j++;
-    XtSetArg(args[j], XtNbottom, XtChainTop);  j++;
-    XtSetArg(args[j], XtNleft, XtChainLeft);  j++;
-    XtSetArg(args[j], XtNright, XtChainLeft);  j++;
-    XtSetArg(args[j], XtNresizable, True);  j++;
-    XtSetArg(args[j], XtNwidth,  40);  j++;
-//    XtSetArg(args[j], XtNheight, 20);  j++;
-    tcOdds2 = XtCreateManagedWidget("Odds2", asciiTextWidgetClass, form, args, j);
-    XtAddEventHandler(tcOdds2, ButtonPressMask, False, SetFocus, (XtPointer) popup);
-
-    j= 0;
-    XtSetArg(args[j], XtNlabel, "Engine #1 and #2 Time-Odds Factors"); j++;
-    XtSetArg(args[j], XtNjustify, XtJustifyLeft); j++;
-    XtSetArg(args[j], XtNborderWidth, 0); j++;
-    XtSetArg(args[j], XtNfromVert, tcTime); j++;
-    XtSetArg(args[j], XtNfromHoriz, tcOdds2); j++;
-    XtSetArg(args[j], XtNtop, XtChainTop);  j++;
-    XtSetArg(args[j], XtNbottom, XtChainTop);  j++;
-    XtSetArg(args[j], XtNleft, XtChainLeft);  j++;
-    XtSetArg(args[j], XtNright, XtChainRight);  j++;
-//    XtSetArg(args[j], XtNwidth,  200);  j++;
-//    XtSetArg(args[j], XtNheight, 20);  j++;
-    mess = XtCreateManagedWidget("Oddstext", labelWidgetClass,
-                                  form, args, j);
-    j=0;
-    XtSetArg(args[j], XtNfromVert, tcOdds1);  j++;
-    XtSetArg(args[j], XtNbottom, XtChainBottom);  j++;
-    XtSetArg(args[j], XtNtop, XtChainBottom);  j++;
-    XtSetArg(args[j], XtNleft, XtChainLeft);  j++;
-    XtSetArg(args[j], XtNright, XtChainLeft);  j++;
-    b_clas= XtCreateManagedWidget("classical", commandWidgetClass,
-                                  form, args, j);   
-    XtAddCallback(b_clas, XtNcallback, TimeControlCallback, (XtPointer) 0);
-
-    j=0;
-    XtSetArg(args[j], XtNfromVert, tcOdds1);  j++;
-    XtSetArg(args[j], XtNfromHoriz, b_clas);  j++;
-    XtSetArg(args[j], XtNbottom, XtChainBottom);  j++;
-    XtSetArg(args[j], XtNtop, XtChainBottom);  j++;
-    XtSetArg(args[j], XtNleft, XtChainLeft);  j++;
-    XtSetArg(args[j], XtNright, XtChainLeft);  j++;
-    b_inc = XtCreateManagedWidget("incremental", commandWidgetClass,
-                                  form, args, j);   
-    XtAddCallback(b_inc, XtNcallback, TimeControlCallback, (XtPointer) 0);
-
-    j=0;
-    XtSetArg(args[j], XtNfromVert, tcOdds1);  j++;
-    XtSetArg(args[j], XtNfromHoriz, tcData);  j++;
-    XtSetArg(args[j], XtNbottom, XtChainBottom);  j++;
-    XtSetArg(args[j], XtNtop, XtChainBottom);  j++;
-    XtSetArg(args[j], XtNleft, XtChainRight);  j++;
-    XtSetArg(args[j], XtNright, XtChainRight);  j++;
-    b_ok= XtCreateManagedWidget(" OK ", commandWidgetClass,
-                                  form, args, j);   
-    XtAddCallback(b_ok, XtNcallback, TimeControlCallback, (XtPointer) 0);
-
-    j=0;
-    XtSetArg(args[j], XtNfromVert, tcOdds1);  j++;
-    XtSetArg(args[j], XtNfromHoriz, b_ok);  j++;
-    XtSetArg(args[j], XtNbottom, XtChainBottom);  j++;
-    XtSetArg(args[j], XtNtop, XtChainBottom);  j++;
-    XtSetArg(args[j], XtNleft, XtChainRight);  j++;
-    XtSetArg(args[j], XtNright, XtChainRight);  j++;
-    b_cancel= XtCreateManagedWidget("cancel", commandWidgetClass,
-                                  form, args, j);   
-    XtAddCallback(b_cancel, XtNcallback, TimeControlPopDown, (XtPointer) 0);
-
-    XtRealizeWidget(popup);
-    CatchDeleteWindow(popup, "TimeControlPopDown");
-    
-    XQueryPointer(xDisplay, xBoardWindow, &root, &child,
-                 &x, &y, &win_x, &win_y, &mask);
-    
-    XtSetArg(args[0], XtNx, x - 10);
-    XtSetArg(args[1], XtNy, y - 30);
-    XtSetValues(popup, args, 2);
-    
-    XtPopup(popup, XtGrabExclusive);
-    TimeControlUp = True;
-    
-    previous = NULL;
-    SetFocus(tcTime, popup, (XEvent*) NULL, False);
-//    XtSetKeyboardFocus(popup, tcTime);
-}
-
-void TimeControlProc(w, event, prms, nprms)
-     Widget w;
-     XEvent *event;
-     String *prms;
-     Cardinal *nprms;
-{
-   TimeControlPopUp();
-}
-
-//--------------------------- Engine-Options Menu Popup ----------------------------------
-int EngineUp;
-Widget EngineShell;
-extern int adjudicateLossThreshold;
-
-Widget engDrawMoves, engThreshold, engRule, engRepeat;
-
-void EnginePopDown()
-{
-    if (!EngineUp) return;
-    XtPopdown(EngineShell);
-    XtDestroyWidget(EngineShell);
-    EngineUp = False;
-    ModeHighlight();
-}
-
-int ReadToggle(Widget w)
-{
-    Arg args; Boolean res;
-
-    XtSetArg(args, XtNstate, &res);
-    XtGetValues(w, &args, 1);
-
-    return res;
-}
-
-Widget w1, w2, w3, w4, w5, w6, w7, w8;
-
-void EngineCallback(w, client_data, call_data)
-     Widget w;
-     XtPointer client_data, call_data;
-{
-    String name;
-    Widget s2;
-    Arg args[16];
-    char buf[80];
-    int j;
-    
-    XtSetArg(args[0], XtNlabel, &name);
-    XtGetValues(w, args, 1);
-    
-    if (strcmp(name, "OK") == 0) {
-       // read all switches
-       appData.periodicUpdates = ReadToggle(w1);
-//     appData.hideThinkingFromHuman = ReadToggle(w2);
-       appData.firstScoreIsAbsolute  = ReadToggle(w3);
-       appData.secondScoreIsAbsolute = ReadToggle(w4);
-       appData.testClaims    = ReadToggle(w5);
-       appData.checkMates    = ReadToggle(w6);
-       appData.materialDraws = ReadToggle(w7);
-       appData.trivialDraws  = ReadToggle(w8);
-
-       // adjust setting in other menu for duplicates 
-       // (perhaps duplicates should be removed from general Option Menu?)
-//     XtSetArg(args[0], XtNleftBitmap, appData.showThinking ? xMarkPixmap : None);
-//     XtSetValues(XtNameToWidget(menuBarWidget,
-//                                "menuOptions.Show Thinking"), args, 1);
-
-       // read out numeric controls, simply ignore bad formats for now
-       XtSetArg(args[0], XtNstring, &name);
-       XtGetValues(engDrawMoves, args, 1);
-       if(sscanf(name, "%d", &j) == 1) appData.adjudicateDrawMoves = j;
-       XtGetValues(engThreshold, args, 1);
-       if(sscanf(name, "%d", &j) == 1) 
-               adjudicateLossThreshold = appData.adjudicateLossThreshold = -j; // inverted!
-       XtGetValues(engRule, args, 1);
-       if(sscanf(name, "%d", &j) == 1) appData.ruleMoves = j;
-       XtGetValues(engRepeat, args, 1);
-       if(sscanf(name, "%d", &j) == 1) appData.drawRepeats = j;
-
-        EnginePopDown();
-       ShowThinkingEvent(); // [HGM] thinking: score adjudication might need thinking output
-        return;
-    }
-}
-
-void EnginePopUp()
-{
-    Arg args[16];
-    Widget popup, layout, form, edit, b_ok, b_cancel, b_clas, b_inc, s1; 
-    Window root, child;
-    int x, y, i, j, width;
-    int win_x, win_y;
-    unsigned int mask;
-    char def[80];
-    
-    tcInc = (appData.timeIncrement >= 0);
-    tcMoves = appData.movesPerSession; tcIncrement = appData.timeIncrement;
-    if(!tcInc) tcIncrement = 0;
-    sprintf(def, "%d", tcInc ? tcIncrement : tcMoves);
-
-    i = 0;
-    XtSetArg(args[i], XtNresizable, True); i++;
-//    XtSetArg(args[i], XtNwidth, DIALOG_SIZE); i++;
-    EngineShell = popup =
-      XtCreatePopupShell("Adjudications", transientShellWidgetClass,
-                        shellWidget, args, i);
-    
-    layout =
-      XtCreateManagedWidget(layoutName, formWidgetClass, popup,
-                           layoutArgs, XtNumber(layoutArgs));
-  
-    form =
-      XtCreateManagedWidget(layoutName, formWidgetClass, layout,
-                           formArgs, XtNumber(formArgs));
-  
-    j = 0;
-//    XtSetArg(args[j], XtNwidth,     (XtArgVal) 250); j++;
-//    XtSetArg(args[j], XtNheight,    (XtArgVal) 400); j++;
-//    XtSetValues(popup, args, j);
-
-    j = 0;
-//    XtSetArg(args[j], XtNwidth,       (XtArgVal) 250); j++;
-//    XtSetArg(args[j], XtNheight,      (XtArgVal) 20); j++;
-    XtSetArg(args[j], XtNleft,        (XtArgVal) XtChainLeft); j++;
-    XtSetArg(args[j], XtNright,       (XtArgVal) XtChainRight); j++;
-    XtSetArg(args[j], XtNstate,       appData.periodicUpdates); j++;
-//    XtSetArg(args[j], XtNjustify,     (XtArgVal) XtJustifyLeft); j++;
-    w1 = XtCreateManagedWidget("Periodic Updates (Analysis Mode)", toggleWidgetClass, form, args, j);
-
-    XtSetArg(args[j], XtNwidth,       (XtArgVal) &width);
-    XtGetValues(w1, &args[j], 1);
-
-//    XtSetArg(args[j-1], XtNfromVert,  (XtArgVal) w1);
-//    XtSetArg(args[j-3], XtNstate,       appData.hideThinkingFromHuman);
-//    w2 = XtCreateManagedWidget("Hide Thinking from Human", toggleWidgetClass, form, args, j);
-
-    XtSetArg(args[j], XtNwidth,       (XtArgVal) width); j++;
-    XtSetArg(args[j-2], XtNstate,     appData.firstScoreIsAbsolute);
-    XtSetArg(args[j], XtNfromVert,    (XtArgVal) w1); j++;
-    w3 = XtCreateManagedWidget("Engine #1 Score is Absolute", toggleWidgetClass, form, args, j);
-
-    XtSetArg(args[j-1], XtNfromVert,  (XtArgVal) w3);
-    XtSetArg(args[j-3], XtNstate,       appData.secondScoreIsAbsolute);
-    w4 = XtCreateManagedWidget("Engine #2 Score is Absolute", toggleWidgetClass, form, args, j);
-
-    s1 = XtCreateManagedWidget("\nEngine-Engine Adjudications:", labelWidgetClass, form, args, 3);
-
-    XtSetArg(args[j-1], XtNfromVert,  (XtArgVal) s1);
-    XtSetArg(args[j-3], XtNstate,       appData.testClaims);
-    w5 = XtCreateManagedWidget("Verify Engine Result Claims", toggleWidgetClass, form, args, j);
-
-    XtSetArg(args[j-1], XtNfromVert,  (XtArgVal) w5);
-    XtSetArg(args[j-3], XtNstate,       appData.checkMates);
-    w6 = XtCreateManagedWidget("Detect All Mates", toggleWidgetClass, form, args, j);
-
-    XtSetArg(args[j-1], XtNfromVert,  (XtArgVal) w6);
-    XtSetArg(args[j-3], XtNstate,       appData.materialDraws);
-    w7 = XtCreateManagedWidget("Draw when Insuff. Mating Material", toggleWidgetClass, form, args, j);
-
-    XtSetArg(args[j-1], XtNfromVert,  (XtArgVal) w7);
-    XtSetArg(args[j-3], XtNstate,       appData.trivialDraws);
-    w8 = XtCreateManagedWidget("Adjudicate Trivial Draws", toggleWidgetClass, form, args, j);
-
-    XtSetArg(args[0], XtNfromVert,  (XtArgVal) w4);
-    XtSetArg(args[1], XtNborderWidth, (XtArgVal) 0);
-    XtSetValues(s1, args, 2);
-
-    sprintf(def, "%d", appData.adjudicateDrawMoves);
-    j= 0;
-    XtSetArg(args[j], XtNborderWidth, 1); j++;
-    XtSetArg(args[j], XtNfromVert, w8); j++;
-    XtSetArg(args[j], XtNeditType, XawtextEdit);  j++;
-    XtSetArg(args[j], XtNuseStringInPlace, False);  j++;
-    XtSetArg(args[j], XtNstring, def);  j++;
-    XtSetArg(args[j], XtNdisplayCaret, False);  j++;
-    XtSetArg(args[j], XtNtop, XtChainBottom);  j++;
-    XtSetArg(args[j], XtNbottom, XtChainBottom);  j++;
-    XtSetArg(args[j], XtNleft, XtChainLeft);  j++;
-    XtSetArg(args[j], XtNright, XtChainLeft);  j++;
-    XtSetArg(args[j], XtNresizable, True);  j++;
-    XtSetArg(args[j], XtNwidth,  60);  j++;
-//    XtSetArg(args[j], XtNheight, 20);  j++;
-    engDrawMoves = XtCreateManagedWidget("Length", asciiTextWidgetClass, form, args, j);
-    XtAddEventHandler(engDrawMoves, ButtonPressMask, False, SetFocus, (XtPointer) popup);
-
-    j= 0;
-    XtSetArg(args[j], XtNlabel, " moves maximum, then draw"); j++;
-    XtSetArg(args[j], XtNjustify,     (XtArgVal) XtJustifyLeft); j++;
-    XtSetArg(args[j], XtNborderWidth, 0); j++;
-    XtSetArg(args[j], XtNfromVert, w8); j++;
-    XtSetArg(args[j], XtNfromHoriz, engDrawMoves); j++;
-    XtSetArg(args[j], XtNtop, XtChainBottom);  j++;
-    XtSetArg(args[j], XtNbottom, XtChainBottom);  j++;
-    XtSetArg(args[j], XtNleft, XtChainLeft);  j++;
-    XtSetArg(args[j], XtNright, XtChainLeft);  j++;
-//    XtSetArg(args[j], XtNwidth,  170);  j++;
-//    XtSetArg(args[j], XtNheight, 20);  j++;
-    tcMess1 = XtCreateManagedWidget("TCtext", labelWidgetClass, form, args, j);
-
-    sprintf(def, "%d", -appData.adjudicateLossThreshold); // inverted!
-    j= 0;
-    XtSetArg(args[j], XtNborderWidth, 1); j++;
-    XtSetArg(args[j], XtNfromVert, engDrawMoves); j++;
-    XtSetArg(args[j], XtNeditType, XawtextEdit);  j++;
-    XtSetArg(args[j], XtNuseStringInPlace, False);  j++;
-    XtSetArg(args[j], XtNstring, def);  j++;
-    XtSetArg(args[j], XtNdisplayCaret, False);  j++;
-    XtSetArg(args[j], XtNtop, XtChainBottom);  j++;
-    XtSetArg(args[j], XtNbottom, XtChainBottom);  j++;
-    XtSetArg(args[j], XtNleft, XtChainLeft);  j++;
-    XtSetArg(args[j], XtNright, XtChainLeft);  j++;
-    XtSetArg(args[j], XtNresizable, True);  j++;
-    XtSetArg(args[j], XtNwidth,  60);  j++;
-//    XtSetArg(args[j], XtNheight, 20);  j++;
-    engThreshold = XtCreateManagedWidget("Threshold", asciiTextWidgetClass, form, args, j);
-    XtAddEventHandler(engThreshold, ButtonPressMask, False, SetFocus, (XtPointer) popup);
-
-    j= 0;
-    XtSetArg(args[j], XtNlabel, "-centiPawn lead is win"); j++;
-    XtSetArg(args[j], XtNjustify, XtJustifyLeft); j++;
-    XtSetArg(args[j], XtNborderWidth, 0); j++;
-    XtSetArg(args[j], XtNfromVert, engDrawMoves); j++;
-    XtSetArg(args[j], XtNfromHoriz, engThreshold); j++;
-    XtSetArg(args[j], XtNtop, XtChainBottom);  j++;
-    XtSetArg(args[j], XtNbottom, XtChainBottom);  j++;
-    XtSetArg(args[j], XtNleft, XtChainLeft);  j++;
-    XtSetArg(args[j], XtNright, XtChainLeft);  j++;
-//    XtSetArg(args[j], XtNwidth,  150);  j++;
-//    XtSetArg(args[j], XtNheight, 20);  j++;
-    tcMess2 = XtCreateManagedWidget("MPStext", labelWidgetClass, form, args, j);
-
-    sprintf(def, "%d", appData.ruleMoves);
-    j= 0;
-    XtSetArg(args[j], XtNborderWidth, 1); j++;
-    XtSetArg(args[j], XtNfromVert, engThreshold); j++;
-    XtSetArg(args[j], XtNeditType, XawtextEdit);  j++;
-    XtSetArg(args[j], XtNuseStringInPlace, False);  j++;
-    XtSetArg(args[j], XtNstring, def);  j++;
-    XtSetArg(args[j], XtNdisplayCaret, False);  j++;
-    XtSetArg(args[j], XtNtop, XtChainBottom);  j++;
-    XtSetArg(args[j], XtNbottom, XtChainBottom);  j++;
-    XtSetArg(args[j], XtNleft, XtChainLeft);  j++;
-    XtSetArg(args[j], XtNright, XtChainLeft);  j++;
-    XtSetArg(args[j], XtNresizable, True);  j++;
-    XtSetArg(args[j], XtNwidth,  30);  j++;
-//    XtSetArg(args[j], XtNheight, 20);  j++;
-    engRule = XtCreateManagedWidget("Rule", asciiTextWidgetClass, form, args, j);
-    XtAddEventHandler(engRule, ButtonPressMask, False, SetFocus, (XtPointer) popup);
-
-    j= 0;
-    XtSetArg(args[j], XtNlabel, "-move rule applied"); j++;
-    XtSetArg(args[j], XtNjustify,     (XtArgVal) XtJustifyLeft); j++;
-    XtSetArg(args[j], XtNborderWidth, 0); j++;
-    XtSetArg(args[j], XtNfromVert, engThreshold); j++;
-    XtSetArg(args[j], XtNfromHoriz, engRule); j++;
-    XtSetArg(args[j], XtNtop, XtChainBottom);  j++;
-    XtSetArg(args[j], XtNbottom, XtChainBottom);  j++;
-    XtSetArg(args[j], XtNleft, XtChainLeft);  j++;
-    XtSetArg(args[j], XtNright, XtChainLeft);  j++;
-//    XtSetArg(args[j], XtNwidth,  130);  j++;
-//    XtSetArg(args[j], XtNheight, 20);  j++;
-    tcMess1 = XtCreateManagedWidget("TCtext", labelWidgetClass, form, args, j);
-
-    sprintf(def, "%d", appData.drawRepeats);
-    j= 0;
-    XtSetArg(args[j], XtNborderWidth, 1); j++;
-    XtSetArg(args[j], XtNfromVert, engRule); j++;
-    XtSetArg(args[j], XtNeditType, XawtextEdit);  j++;
-    XtSetArg(args[j], XtNuseStringInPlace, False);  j++;
-    XtSetArg(args[j], XtNstring, def);  j++;
-    XtSetArg(args[j], XtNdisplayCaret, False);  j++;
-    XtSetArg(args[j], XtNtop, XtChainBottom);  j++;
-    XtSetArg(args[j], XtNbottom, XtChainBottom);  j++;
-    XtSetArg(args[j], XtNleft, XtChainLeft);  j++;
-    XtSetArg(args[j], XtNright, XtChainLeft);  j++;
-    XtSetArg(args[j], XtNresizable, True);  j++;
-    XtSetArg(args[j], XtNwidth,  30);  j++;
-//    XtSetArg(args[j], XtNheight, 20);  j++;
-    engRepeat = XtCreateManagedWidget("Repeats", asciiTextWidgetClass, form, args, j);
-    XtAddEventHandler(engRepeat, ButtonPressMask, False, SetFocus, (XtPointer) popup);
-
-    j= 0;
-    XtSetArg(args[j], XtNlabel, "-fold repeat is draw"); j++;
-    XtSetArg(args[j], XtNjustify, XtJustifyLeft); j++;
-    XtSetArg(args[j], XtNborderWidth, 0); j++;
-    XtSetArg(args[j], XtNfromVert, engRule); j++;
-    XtSetArg(args[j], XtNfromHoriz, engRepeat); j++;
-    XtSetArg(args[j], XtNtop, XtChainBottom);  j++;
-    XtSetArg(args[j], XtNbottom, XtChainBottom);  j++;
-    XtSetArg(args[j], XtNleft, XtChainLeft);  j++;
-    XtSetArg(args[j], XtNright, XtChainLeft);  j++;
-//    XtSetArg(args[j], XtNwidth,  130);  j++;
-//    XtSetArg(args[j], XtNheight, 20);  j++;
-    tcMess2 = XtCreateManagedWidget("MPStext", labelWidgetClass, form, args, j);
-
-    j=0;
-    XtSetArg(args[j], XtNfromVert, engRepeat);  j++;
-    XtSetArg(args[j], XtNfromHoriz, tcMess2);  j++;
-    XtSetArg(args[j], XtNbottom, XtChainBottom);  j++;
-    XtSetArg(args[j], XtNtop, XtChainBottom);  j++;
-    XtSetArg(args[j], XtNleft, XtChainRight);  j++;
-    XtSetArg(args[j], XtNright, XtChainRight);  j++;
-    b_ok= XtCreateManagedWidget("OK", commandWidgetClass, form, args, j);   
-    XtAddCallback(b_ok, XtNcallback, EngineCallback, (XtPointer) 0);
-
-    j=0;
-    XtSetArg(args[j], XtNfromVert, engRepeat);  j++;
-    XtSetArg(args[j], XtNfromHoriz, b_ok);  j++;
-    XtSetArg(args[j], XtNbottom, XtChainBottom);  j++;
-    XtSetArg(args[j], XtNtop, XtChainBottom);  j++;
-    XtSetArg(args[j], XtNleft, XtChainRight);  j++;
-    XtSetArg(args[j], XtNright, XtChainRight);  j++;
-    b_cancel= XtCreateManagedWidget("cancel", commandWidgetClass,
-                                  form, args, j);   
-    XtAddCallback(b_cancel, XtNcallback, EnginePopDown, (XtPointer) 0);
-
-    XtRealizeWidget(popup);
-    CatchDeleteWindow(popup, "EnginePopDown");
-    
-    XQueryPointer(xDisplay, xBoardWindow, &root, &child,
-                 &x, &y, &win_x, &win_y, &mask);
-    
-    XtSetArg(args[0], XtNx, x - 10);
-    XtSetArg(args[1], XtNy, y - 30);
-    XtSetValues(popup, args, 2);
-    
-    XtPopup(popup, XtGrabExclusive);
-    EngineUp = True;
-    
-    previous = NULL;
-    SetFocus(engThreshold, popup, (XEvent*) NULL, False);
-}
-
-void EngineMenuProc(w, event, prms, nprms)
-     Widget w;
-     XEvent *event;
-     String *prms;
-     Cardinal *nprms;
-{
-   EnginePopUp();
-}
-
-//--------------------------- New-Variant Menu PopUp -----------------------------------
-struct NewVarButton {
-  char   *name;
-  char *color;
-  Widget handle;
-  VariantClass variant;
-};
-
-struct NewVarButton buttonDesc[] = {
-    {"normal",            "#FFFFFF", 0, VariantNormal},
-    {"FRC",               "#FFFFFF", 0, VariantFischeRandom},
-    {"wild castle",       "#FFFFFF", 0, VariantWildCastle},
-    {"no castle",         "#FFFFFF", 0, VariantNoCastle},
-    {"knightmate",        "#FFFFFF", 0, VariantKnightmate},
-    {"berolina",          "#FFFFFF", 0, VariantBerolina},
-    {"cylinder",          "#FFFFFF", 0, VariantCylinder},
-    {"shatranj",          "#FFFFFF", 0, VariantShatranj},
-    {"atomic",            "#FFFFFF", 0, VariantAtomic},
-    {"two kings",         "#FFFFFF", 0, VariantTwoKings},
-    {"3-checks",          "#FFFFFF", 0, Variant3Check},
-    {"suicide",           "#FFFFBF", 0, VariantSuicide},
-    {"give-away",         "#FFFFBF", 0, VariantGiveaway},
-    {"losers",            "#FFFFBF", 0, VariantLosers},
-    {"fairy",             "#BFBFBF", 0, VariantFairy},
-    {"Superchess",        "#FFBFBF", 0, VariantSuper},
-    {"crazyhouse",        "#FFBFBF", 0, VariantCrazyhouse},
-    {"bughouse",          "#FFBFBF", 0, VariantBughouse},
-    {"shogi (9x9)",       "#BFFFFF", 0, VariantShogi},
-    {"xiangqi (9x10)",    "#BFFFFF", 0, VariantXiangqi},
-    {"courier (12x8)",    "#BFFFBF", 0, VariantCourier},
-    {"janus (10x8)",      "#BFBFFF", 0, VariantJanus},
-    {"Capablanca (10x8)", "#BFBFFF", 0, VariantCapablanca},
-    {"CRC (10x8)",        "#BFBFFF", 0, VariantCapaRandom},
-#ifdef GOTHIC
-    {"Gothic (10x8)",     "#BFBFFF", 0, VariantGothic},
-#endif
-#ifdef FALCON
-    {"Falcon (10x8)",     "#BFBFFF", 0, VariantFalcon},
-#endif
-    {NULL,                0, 0, (VariantClass) 0}
-};
-
-int NewVariantUp;
-Widget NewVariantShell;
-
-void NewVariantPopDown()
-{
-    if (!NewVariantUp) return;
-    XtPopdown(NewVariantShell);
-    XtDestroyWidget(NewVariantShell);
-    NewVariantUp = False;
-    ModeHighlight();
-}
-
-void NewVariantCallback(w, client_data, call_data)
-     Widget w;
-     XtPointer client_data, call_data;
-{
-    String name;
-    Widget w2;
-    Arg args[16];
-    char buf[80];
-    VariantClass v;
-    
-    XtSetArg(args[0], XtNlabel, &name);
-    XtGetValues(w, args, 1);
-    
-    if (strcmp(name, "  OK  ") == 0) {
-       int nr = (int) XawToggleGetCurrent(buttonDesc[0].handle) - 1;
-       if(nr < 0) return;
-       v = buttonDesc[nr].variant;
-       if(!appData.noChessProgram) { 
-           char *name = VariantName(v), buf[MSG_SIZ];
-           if (first.protocolVersion > 1 && StrStr(first.variants, name) == NULL) {
-               /* [HGM] in protocol 2 we check if variant is suported by engine */
-               sprintf(buf, "Variant %s not supported by %s", name, first.tidy);
-               DisplayError(buf, 0);
-//             NewVariantPopDown();
-               return; /* ignore OK if first engine does not support it */
-           } else
-           if (second.initDone && second.protocolVersion > 1 && StrStr(second.variants, name) == NULL) {
-               sprintf(buf, "Warning: second engine (%s) does not support this!", second.tidy);
-               DisplayError(buf, 0);   /* use of second engine is optional; only warn user */
-           }
-       }
-
-       gameInfo.variant = v;
-       appData.variant = VariantName(v);
-
-       shuffleOpenings = FALSE; /* [HGM] shuffle: possible shuffle reset when we switch */
-       startedFromPositionFile = FALSE; /* [HGM] loadPos: no longer valid in new variant */
-       appData.pieceToCharTable = NULL;
-       Reset(True, True);
-        NewVariantPopDown();
-        return;
-    }
-}
-
-void NewVariantPopUp()
-{
-    Arg args[16];
-    Widget popup, layout, dialog, edit, form, last = NULL, b_ok, b_cancel;
-    Window root, child;
-    int x, y, i, j;
-    int win_x, win_y;
-    unsigned int mask;
-    char def[80];
-    XrmValue vFrom, vTo;
-
-    i = 0;
-    XtSetArg(args[i], XtNresizable, True); i++;
-//    XtSetArg(args[i], XtNwidth, 250); i++;
-//    XtSetArg(args[i], XtNheight, 300); i++;
-    NewVariantShell = popup =
-      XtCreatePopupShell("NewVariant Menu", transientShellWidgetClass,
-                        shellWidget, args, i);
-    
-    layout =
-      XtCreateManagedWidget(layoutName, formWidgetClass, popup,
-                           layoutArgs, XtNumber(layoutArgs));
-  
-    form =
-      XtCreateManagedWidget("form", formWidgetClass, layout,
-                           formArgs, XtNumber(formArgs));
-  
-    for(i = 0; buttonDesc[i].name != NULL; i++) {
-       Pixel buttonColor;
-       if (!appData.monoMode) {
-           vFrom.addr = (caddr_t) buttonDesc[i].color;
-           vFrom.size = strlen(buttonDesc[i].color);
-           XtConvert(shellWidget, XtRString, &vFrom, XtRPixel, &vTo);
-           if (vTo.addr == NULL) {
-               buttonColor = (Pixel) -1;
-           } else {
-               buttonColor = *(Pixel *) vTo.addr;
-           }
-       }
-    
-       j = 0;
-       XtSetArg(args[j], XtNradioGroup, last); j++;
-       XtSetArg(args[j], XtNwidth, 125); j++;
-//     XtSetArg(args[j], XtNheight, 16); j++;
-       XtSetArg(args[j], XtNfromVert, i == 15 ? NULL : last); j++;
-       XtSetArg(args[j], XtNfromHoriz, i < 15 ? NULL : buttonDesc[i-15].handle); j++;
-       XtSetArg(args[j], XtNradioData, i+1); j++;
-       XtSetArg(args[j], XtNbackground, buttonColor); j++;
-       XtSetArg(args[j], XtNstate, gameInfo.variant == buttonDesc[i].variant); j++;
-       buttonDesc[i].handle = last =
-           XtCreateManagedWidget(buttonDesc[i].name, toggleWidgetClass, form, args, j);
-    }
-
-    j=0;
-    XtSetArg(args[j], XtNfromVert, buttonDesc[12].handle);  j++;
-    XtSetArg(args[j], XtNfromHoriz, buttonDesc[12].handle);  j++;
-    XtSetArg(args[j], XtNheight, 35); j++;
-//    XtSetArg(args[j], XtNwidth, 60); j++;
-    XtSetArg(args[j], XtNbottom, XtChainBottom);  j++;
-    XtSetArg(args[j], XtNtop, XtChainBottom);  j++;
-    XtSetArg(args[j], XtNleft, XtChainRight);  j++;
-    XtSetArg(args[j], XtNright, XtChainRight);  j++;
-    b_cancel= XtCreateManagedWidget("CANCEL", commandWidgetClass, form, args, j);   
-    XtAddCallback(b_cancel, XtNcallback, NewVariantPopDown, (XtPointer) 0);
-
-    j=0;
-    XtSetArg(args[j], XtNfromHoriz, b_cancel);  j++;
-    XtSetArg(args[j], XtNfromVert, buttonDesc[12].handle);  j++;
-    XtSetArg(args[j], XtNheight, 35); j++;
-//    XtSetArg(args[j], XtNwidth, 60); j++;
-    XtSetArg(args[j], XtNbottom, XtChainBottom);  j++;
-    XtSetArg(args[j], XtNtop, XtChainBottom);  j++;
-    XtSetArg(args[j], XtNleft, XtChainRight);  j++;
-    XtSetArg(args[j], XtNright, XtChainRight);  j++;
-    b_ok= XtCreateManagedWidget("  OK  ", commandWidgetClass, form, args, j);   
-    XtAddCallback(b_ok, XtNcallback, NewVariantCallback, (XtPointer) 0);
-
-    XtRealizeWidget(popup);
-    CatchDeleteWindow(popup, "NewVariantPopDown");
-    
-    XQueryPointer(xDisplay, xBoardWindow, &root, &child,
-                 &x, &y, &win_x, &win_y, &mask);
-    
-    XtSetArg(args[0], XtNx, x - 10);
-    XtSetArg(args[1], XtNy, y - 30);
-    XtSetValues(popup, args, 2);
-    
-    XtPopup(popup, XtGrabExclusive);
-    NewVariantUp = True;
-}
-
-void NewVariantProc(w, event, prms, nprms)
-     Widget w;
-     XEvent *event;
-     String *prms;
-     Cardinal *nprms;
-{
-   NewVariantPopUp();
-}
-
-//--------------------------- UCI Menu Popup ------------------------------------------
-int UciUp;
-Widget UciShell;
-
-struct UciControl {
-  char *name;
-  Widget handle;
-  void *ptr;
-};
-
-struct UciControl controlDesc[] = {
-  {"maximum nr of CPUs:", 0, &appData.smpCores},
-  {"Polyglot Directory:", 0, &appData.polyglotDir},
-  {"Hash Size (MB):",     0, &appData.defaultHashSize},
-  {"EGTB Path:",          0, &appData.defaultPathEGTB},
-  {"EGTB Cache (MB):",    0, &appData.defaultCacheSizeEGTB},
-  {"Polyglot Book:",      0, &appData.polyglotBook},
-  {NULL, 0, NULL},
-};
-
-void UciPopDown()
-{
-    if (!UciUp) return;
-    XtPopdown(UciShell);
-    XtDestroyWidget(UciShell);
-    UciUp = False;
-    ModeHighlight();
-}
-
-void UciCallback(w, client_data, call_data)
-     Widget w;
-     XtPointer client_data, call_data;
-{
-    String name;
-    Arg args[16];
-    char buf[80];
-    int oldCores = appData.smpCores, ponder = 0;
-    
-    XtSetArg(args[0], XtNlabel, &name);
-    XtGetValues(w, args, 1);
-    
-    if (strcmp(name, "OK") == 0) {
-       int nr, i, j; String name;
-       for(i=0; i<6; i++) {
-           XtSetArg(args[0], XtNstring, &name);
-           XtGetValues(controlDesc[i].handle, args, 1);
-           if(i&1) {
-               if(name)
-                   *(char**) controlDesc[i].ptr = strdup(name);
-           } else {
-               if(sscanf(name, "%d", &j) == 1) 
-                   *(int*) controlDesc[i].ptr = j;
-           }
-       }
-       XtSetArg(args[0], XtNstate, &appData.usePolyglotBook);
-       XtGetValues(w1, args, 1);
-       XtSetArg(args[0], XtNstate, &appData.firstHasOwnBookUCI);
-       XtGetValues(w2, args, 1);
-       XtSetArg(args[0], XtNstate, &appData.secondHasOwnBookUCI);
-       XtGetValues(w3, args, 1);
-       XtSetArg(args[0], XtNstate, &ponder);
-       XtGetValues(w4, args, 1);
-
-       // adjust setting in other menu for duplicates 
-       // (perhaps duplicates should be removed from general Option Menu?)
-       XtSetArg(args[0], XtNleftBitmap, ponder ? xMarkPixmap : None);
-       XtSetValues(XtNameToWidget(menuBarWidget,
-                                  "menuOptions.Ponder Next Move"), args, 1);
-
-       // make sure changes are sent to first engine by re-initializing it
-       // if it was already started pre-emptively at end of previous game
-       if(gameMode == BeginningOfGame) Reset(True, True); else {
-           // Some changed setting need immediate sending always.
-           PonderNextMoveEvent(ponder);
-           if(oldCores != appData.smpCores)
-               NewSettingEvent(False, "cores", appData.smpCores);
-      }
-      UciPopDown();
-      return;
-    }
-}
-
-void UciPopUp()
-{
-    Arg args[16];
-    Widget popup, layout, dialog, edit, form, b_ok, b_cancel, last = NULL, new, upperLeft;
-    Window root, child;
-    int x, y, i, j;
-    int win_x, win_y;
-    unsigned int mask;
-    char def[80];
-    
-    i = 0;
-    XtSetArg(args[i], XtNresizable, True); i++;
-//    XtSetArg(args[i], XtNwidth, 300); i++;
-    UciShell = popup =
-      XtCreatePopupShell("Engine Settings", transientShellWidgetClass,
-                        shellWidget, args, i);
-    
-    layout =
-      XtCreateManagedWidget(layoutName, formWidgetClass, popup,
-                           layoutArgs, XtNumber(layoutArgs));
-  
-    
-    form =
-      XtCreateManagedWidget("form", formWidgetClass, layout,
-                           formArgs, XtNumber(formArgs));
-  
-    j = 0;
-    XtSetArg(args[j], XtNtop, XtChainTop);  j++;
-    XtSetArg(args[j], XtNbottom, XtChainTop);  j++;
-    XtSetArg(args[j], XtNleft, XtChainLeft);  j++;
-//    XtSetArg(args[j], XtNheight, 20); j++;
-    for(i = 0; controlDesc[i].name != NULL; i++) {
-       j = 3;
-       XtSetArg(args[j], XtNfromVert, last); j++;
-//     XtSetArg(args[j], XtNwidth, 130); j++;
-       XtSetArg(args[j], XtNjustify, XtJustifyLeft); j++;
-       XtSetArg(args[j], XtNright, XtChainLeft);  j++;
-       XtSetArg(args[j], XtNborderWidth, 0); j++;
-       new = XtCreateManagedWidget(controlDesc[i].name, labelWidgetClass, form, args, j);
-       if(i==0) upperLeft = new;
-
-       j = 4;
-       XtSetArg(args[j], XtNborderWidth, 1); j++;
-       XtSetArg(args[j], XtNeditType, XawtextEdit);  j++;
-       XtSetArg(args[j], XtNuseStringInPlace, False);  j++;
-       XtSetArg(args[j], XtNdisplayCaret, False);  j++;
-       XtSetArg(args[j], XtNright, XtChainRight);  j++;
-       XtSetArg(args[j], XtNresizable, True);  j++;
-       XtSetArg(args[j], XtNwidth, i&1 ? 245 : 50); j++;
-       if(i&1) {
-           XtSetArg(args[j], XtNstring, * (char**) controlDesc[i].ptr ? 
-                                        * (char**) controlDesc[i].ptr : ""); j++;
-       } else {
-           sprintf(def, "%d", * (int*) controlDesc[i].ptr);
-           XtSetArg(args[j], XtNstring, def); j++;
-       }
-       XtSetArg(args[j], XtNfromHoriz, upperLeft); j++;
-       controlDesc[i].handle = last =
-           XtCreateManagedWidget("text", asciiTextWidgetClass, form, args, j);
-       XtAddEventHandler(last, ButtonPressMask, False, SetFocus, (XtPointer) popup);
-    }
-
-    j=0;
-    XtSetArg(args[j], XtNfromHoriz, controlDesc[0].handle);  j++;
-    XtSetArg(args[j], XtNbottom, XtChainTop);  j++;
-    XtSetArg(args[j], XtNtop, XtChainTop);  j++;
-    XtSetArg(args[j], XtNleft, XtChainRight);  j++;
-    XtSetArg(args[j], XtNright, XtChainRight);  j++;
-    XtSetArg(args[j], XtNstate, appData.ponderNextMove);  j++;
-    w4 = XtCreateManagedWidget("Ponder", toggleWidgetClass, form, args, j);   
-
-    j=0;
-    XtSetArg(args[j], XtNfromVert, last);  j++;
-    XtSetArg(args[j], XtNbottom, XtChainBottom);  j++;
-    XtSetArg(args[j], XtNtop, XtChainBottom);  j++;
-    XtSetArg(args[j], XtNleft, XtChainLeft);  j++;
-    XtSetArg(args[j], XtNright, XtChainLeft);  j++;
-    b_ok = XtCreateManagedWidget("OK", commandWidgetClass, form, args, j);   
-    XtAddCallback(b_ok, XtNcallback, UciCallback, (XtPointer) 0);
-
-    XtSetArg(args[j], XtNfromHoriz, b_ok);  j++;
-    b_cancel = XtCreateManagedWidget("cancel", commandWidgetClass, form, args, j);   
-    XtAddCallback(b_cancel, XtNcallback, UciPopDown, (XtPointer) 0);
-
-    j = 5;
-    XtSetArg(args[j], XtNfromHoriz, upperLeft);  j++;
-    XtSetArg(args[j], XtNstate, appData.usePolyglotBook);  j++;
-    w1 = XtCreateManagedWidget(" use book ", toggleWidgetClass, form, args, j);   
-//    XtAddCallback(w1, XtNcallback, UciCallback, (XtPointer) 0);
-
-    j = 5;
-    XtSetArg(args[j], XtNfromHoriz, w1);  j++;
-    XtSetArg(args[j], XtNstate, appData.firstHasOwnBookUCI);  j++;
-    w2 = XtCreateManagedWidget("own book 1", toggleWidgetClass, form, args, j);   
-//    XtAddCallback(w2, XtNcallback, UciCallback, (XtPointer) 0);
-
-    j = 5;
-    XtSetArg(args[j], XtNfromHoriz, w2);  j++;
-    XtSetArg(args[j], XtNstate, appData.secondHasOwnBookUCI);  j++;
-    w3 = XtCreateManagedWidget("own book 2", toggleWidgetClass, form, args, j);   
-//    XtAddCallback(w3, XtNcallback, UciCallback, (XtPointer) 0);
-
-    XtRealizeWidget(popup);
-    CatchDeleteWindow(popup, "UciPopDown");
-    
-    XQueryPointer(xDisplay, xBoardWindow, &root, &child,
-                 &x, &y, &win_x, &win_y, &mask);
-    
-    XtSetArg(args[0], XtNx, x - 10);
-    XtSetArg(args[1], XtNy, y - 30);
-    XtSetValues(popup, args, 2);
-    
-    XtPopup(popup, XtGrabExclusive);
-    UciUp = True;
-
-    previous = NULL;
-    SetFocus(controlDesc[2].handle, popup, (XEvent*) NULL, False);
-//    XtSetKeyboardFocus(popup, controlDesc[1].handle);
-}
-
-void UciMenuProc(w, event, prms, nprms)
-     Widget w;
-     XEvent *event;
-     String *prms;
-     Cardinal *nprms;
-{
-   UciPopUp();
-}
-
-//--------------------------- Engine-specific options menu ----------------------------------
-
-int SettingsUp;
-Widget SettingsShell;
-int values[MAX_OPTIONS];
-ChessProgramState *currentCps;
-
-void SettingsPopDown()
-{
-    if (!SettingsUp) return;
-    XtPopdown(SettingsShell);
-    XtDestroyWidget(SettingsShell);
-    SettingsUp = False;
-    ModeHighlight();
-}
-
-void SpinCallback(w, client_data, call_data)
-     Widget w;
-     XtPointer client_data, call_data;
-{
-    String name, val;
-    Widget w2;
-    Arg args[16];
-    char buf[MSG_SIZ];
-    int i, j;
-    
-    XtSetArg(args[0], XtNlabel, &name);
-    XtGetValues(w, args, 1);
-    
-    j = 0;
-    XtSetArg(args[0], XtNstring, &val);
-    XtGetValues(currentCps->option[(int)client_data].handle, args, 1);
-    sscanf(val, "%d", &j);
-    if (strcmp(name, "+") == 0) {
-       if(++j > currentCps->option[(int)client_data].max) return;
-    } else
-    if (strcmp(name, "-") == 0) {
-       if(--j < currentCps->option[(int)client_data].min) return;
-    } else return;
-    sprintf(buf, "%d", j);
-    XtSetArg(args[0], XtNstring, buf);
-    XtSetValues(currentCps->option[(int)client_data].handle, args, 1);
-}
-
-void SettingsCallback(w, client_data, call_data)
-     Widget w;
-     XtPointer client_data, call_data;
-{
-    String name, val;
-    Widget w2;
-    Arg args[16];
-    char buf[MSG_SIZ];
-    int i, j;
-    
-    XtSetArg(args[0], XtNlabel, &name);
-    XtGetValues(w, args, 1);
-    
-    if (strcmp(name, "cancel") == 0) {
-        SettingsPopDown();
-        return;
-    }
-    if (strcmp(name, "OK") == 0 || (int)client_data) { // save buttons imply OK
-       int nr;
-
-       for(i=0; i<currentCps->nrOptions; i++) { // send all options that had to be OK-ed to engine
-           switch(currentCps->option[i].type) {
-               case TextBox:
-                   XtSetArg(args[0], XtNstring, &val);
-                   XtGetValues(currentCps->option[i].handle, args, 1);
-                   if(strcmp(currentCps->option[i].textValue, val)) {
-                       strcpy(currentCps->option[i].textValue, val);
-                       sprintf(buf, "option %s %s\n", currentCps->option[i].name, val);
-                       SendToProgram(buf, currentCps);
-                   }
-                   break;
-               case Spin:
-                   XtSetArg(args[0], XtNstring, &val);
-                   XtGetValues(currentCps->option[i].handle, args, 1);
-                   sscanf(val, "%d", &j);
-                   if(j > currentCps->option[i].max) j = currentCps->option[i].max;
-                   if(j < currentCps->option[i].min) j = currentCps->option[i].min;
-                   if(currentCps->option[i].value != j) {
-                       currentCps->option[i].value = j;
-                       sprintf(buf, "option %s %d\n", currentCps->option[i].name, j);
-                       SendToProgram(buf, currentCps);
-                   }
-                   break;
-               case CheckBox:
-                   j = 0;
-                   XtSetArg(args[0], XtNstate, &j);
-                   XtGetValues(currentCps->option[i].handle, args, 1);
-                   if(currentCps->option[i].value != j) {
-                       currentCps->option[i].value = j;
-                       sprintf(buf, "option %s %d\n", currentCps->option[i].name, j);
-                       SendToProgram(buf, currentCps);
-                   }
-                   break;
-               case ComboBox:
-                   if(currentCps->option[i].value != values[i]) {
-                       currentCps->option[i].value = values[i];
-                       sprintf(buf, "option %s %s\n", currentCps->option[i].name, 
-                               ((char**)currentCps->option[i].textValue)[values[i]]);
-                       SendToProgram(buf, currentCps);
-                   }
-                   break;
-           }
-       }
-       if((int)client_data) { // send save-button command to engine
-           sprintf(buf, "option %s\n", name);
-           SendToProgram(buf, currentCps);
-       }
-        SettingsPopDown();
-        return;
-    }
-    sprintf(buf, "option %s\n", name);
-    SendToProgram(buf, currentCps);
-}
-
-void ComboSelect(w, addr, index) // callback for all combo items
+/*\r
+ * xoptions.c -- Move list window, part of X front end for XBoard\r
+ *\r
+ * Copyright 2000 Free Software Foundation, Inc.\r
+ *\r
+ * The following terms apply to the enhanced version of XBoard distributed\r
+ * by the Free Software Foundation:\r
+ * ------------------------------------------------------------------------\r
+ * This program is free software; you can redistribute it and/or modify\r
+ * it under the terms of the GNU General Public License as published by\r
+ * the Free Software Foundation; either version 2 of the License, or\r
+ * (at your option) any later version.\r
+ *\r
+ * This program is distributed in the hope that it will be useful,\r
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
+ * GNU General Public License for more details.\r
+ *\r
+ * You should have received a copy of the GNU General Public License\r
+ * along with this program; if not, write to the Free Software\r
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\r
+ * ------------------------------------------------------------------------\r
+ *\r
+ * See the file ChangeLog for a revision history.\r
+ */\r
+\r
+// [HGM] this file is the counterpart of woptions.c, containing xboard popup menus\r
+// similar to those of WinBoard, to set the most common options interactively.\r
+\r
+#include "config.h"\r
+\r
+#include <stdio.h>\r
+#include <ctype.h>\r
+#include <errno.h>\r
+#include <sys/types.h>\r
+\r
+#if STDC_HEADERS\r
+# include <stdlib.h>\r
+# include <string.h>\r
+#else /* not STDC_HEADERS */\r
+extern char *getenv();\r
+# if HAVE_STRING_H\r
+#  include <string.h>\r
+# else /* not HAVE_STRING_H */\r
+#  include <strings.h>\r
+# endif /* not HAVE_STRING_H */\r
+#endif /* not STDC_HEADERS */\r
+\r
+#if HAVE_UNISTD_H\r
+# include <unistd.h>\r
+#endif\r
+\r
+#include <X11/Intrinsic.h>\r
+#include <X11/StringDefs.h>\r
+#include <X11/Shell.h>\r
+#include <X11/Xaw/Dialog.h>\r
+#include <X11/Xaw/Form.h>\r
+#include <X11/Xaw/List.h>\r
+#include <X11/Xaw/Label.h>\r
+#include <X11/Xaw/SimpleMenu.h>\r
+#include <X11/Xaw/SmeBSB.h>\r
+#include <X11/Xaw/SmeLine.h>\r
+#include <X11/Xaw/Box.h>\r
+#include <X11/Xaw/Paned.h>\r
+#include <X11/Xaw/MenuButton.h>\r
+#include <X11/cursorfont.h>\r
+#include <X11/Xaw/Text.h>\r
+#include <X11/Xaw/AsciiText.h>\r
+#include <X11/Xaw/Viewport.h>\r
+#include <X11/Xaw/Toggle.h>\r
+\r
+#include "common.h"\r
+#include "backend.h"\r
+#include "xboard.h"\r
+#include "gettext.h"\r
+\r
+#ifdef ENABLE_NLS\r
+# define  _(s) gettext (s)\r
+# define N_(s) gettext_noop (s)\r
+#else\r
+# define  _(s) (s)\r
+# define N_(s)  s\r
+#endif\r
+\r
+extern Widget formWidget, shellWidget, boardWidget, menuBarWidget;\r
+extern Display *xDisplay;\r
+extern int squareSize;\r
+extern Pixmap xMarkPixmap;\r
+extern char *layoutName;\r
+extern Window xBoardWindow;\r
+extern Arg layoutArgs[2], formArgs[2];\r
+Pixel timerForegroundPixel, timerBackgroundPixel;\r
+\r
+// [HGM] the following code for makng menu popups was cloned from the FileNamePopUp routines\r
+\r
+static Widget previous = NULL;\r
+\r
+void SetFocus(Widget w, XtPointer data, XEvent *event, Boolean *b)\r
+{\r
+    Arg args;\r
+\r
+    if(previous) {\r
+       XtSetArg(args, XtNdisplayCaret, False);\r
+       XtSetValues(previous, &args, 1);\r
+    }\r
+    XtSetArg(args, XtNdisplayCaret, True);\r
+    XtSetValues(w, &args, 1);\r
+    XtSetKeyboardFocus((Widget) data, w);\r
+    previous = w;\r
+}\r
+\r
+//--------------------------- New Shuffle Game --------------------------------------------\r
+extern int shuffleOpenings;\r
+extern int startedFromPositionFile;\r
+int shuffleUp;\r
+Widget shuffleShell;\r
+\r
+void ShufflePopDown()\r
+{\r
+    if (!shuffleUp) return;\r
+    XtPopdown(shuffleShell);\r
+    XtDestroyWidget(shuffleShell);\r
+    shuffleUp = False;\r
+    ModeHighlight();\r
+}\r
+\r
+void ShuffleCallback(w, client_data, call_data)\r
+     Widget w;\r
+     XtPointer client_data, call_data;\r
+{\r
+    String name;\r
+    Widget w2;\r
+    Arg args[16];\r
+    char buf[80];\r
+    \r
+    XtSetArg(args[0], XtNlabel, &name);\r
+    XtGetValues(w, args, 1);\r
+    \r
+    if (strcmp(name, _("cancel")) == 0) {\r
+        ShufflePopDown();\r
+        return;\r
+    }\r
+    if (strcmp(name, _("off")) == 0) {\r
+        ShufflePopDown();\r
+       shuffleOpenings = False; // [HGM] should be moved to New Variant menu, once we have it!\r
+       ResetGameEvent();\r
+       AnalysisPopDown();\r
+        return;\r
+    }\r
+    if (strcmp(name, _("random")) == 0) {\r
+       sprintf(buf, "%d", rand());\r
+       XtSetArg(args[0],XtNvalue, buf); // erase bad (non-numeric) value\r
+       XtSetValues(XtParent(w), args, 1);\r
+        return;\r
+    }\r
+    if (strcmp(name, _("ok")) == 0) {\r
+       int nr; String name;\r
+        name = XawDialogGetValueString(w2 = XtParent(w));\r
+       if(sscanf(name ,"%d",&nr) != 1) {\r
+           sprintf(buf, "%d", appData.defaultFrcPosition);\r
+           XtSetArg(args[0],XtNvalue, buf); // erase bad (non-numeric) value\r
+           XtSetValues(w2, args, 1);\r
+           return;\r
+       }\r
+       appData.defaultFrcPosition = nr;\r
+       shuffleOpenings = True;\r
+        ShufflePopDown();\r
+       ResetGameEvent();\r
+       AnalysisPopDown();\r
+        return;\r
+    }\r
+}\r
+\r
+void ShufflePopUp()\r
+{\r
+    Arg args[16];\r
+    Widget popup, layout, dialog, edit;\r
+    Window root, child;\r
+    int x, y, i;\r
+    int win_x, win_y;\r
+    unsigned int mask;\r
+    char def[80];\r
+    \r
+    i = 0;\r
+    XtSetArg(args[i], XtNresizable, True); i++;\r
+    XtSetArg(args[i], XtNwidth, DIALOG_SIZE); i++;\r
+    shuffleShell = popup =\r
+      XtCreatePopupShell(_("New Shuffle Game"), transientShellWidgetClass,\r
+                        shellWidget, args, i);\r
+    \r
+    layout =\r
+      XtCreateManagedWidget(layoutName, formWidgetClass, popup,\r
+                           layoutArgs, XtNumber(layoutArgs));\r
+  \r
+    sprintf(def, "%d\n", appData.defaultFrcPosition);\r
+    i = 0;\r
+    XtSetArg(args[i], XtNlabel, _("Start-position number:")); i++;\r
+    XtSetArg(args[i], XtNvalue, def); i++;\r
+    XtSetArg(args[i], XtNborderWidth, 0); i++;\r
+    dialog = XtCreateManagedWidget(_("Shuffle"), dialogWidgetClass,\r
+                                  layout, args, i);\r
+    \r
+//    XtSetArg(args[0], XtNeditType, XawtextEdit);  // [HGM] can't get edit to work decently\r
+//    XtSetArg(args[1], XtNuseStringInPlace, False);\r
+//    XtSetValues(dialog, args, 2);\r
+\r
+    XawDialogAddButton(dialog, _("ok"), ShuffleCallback, (XtPointer) dialog);\r
+    XawDialogAddButton(dialog, _("cancel"), ShuffleCallback, (XtPointer) dialog);\r
+    XawDialogAddButton(dialog, _("random"), ShuffleCallback, (XtPointer) dialog);\r
+    XawDialogAddButton(dialog, _("off"), ShuffleCallback, (XtPointer) dialog);\r
+    \r
+    XtRealizeWidget(popup);\r
+    CatchDeleteWindow(popup, "ShufflePopDown");\r
+    \r
+    XQueryPointer(xDisplay, xBoardWindow, &root, &child,\r
+                 &x, &y, &win_x, &win_y, &mask);\r
+    \r
+    XtSetArg(args[0], XtNx, x - 10);\r
+    XtSetArg(args[1], XtNy, y - 30);\r
+    XtSetValues(popup, args, 2);\r
+    \r
+    XtPopup(popup, XtGrabExclusive);\r
+    shuffleUp = True;\r
+    \r
+    edit = XtNameToWidget(dialog, "*value");\r
+\r
+    XtSetKeyboardFocus(popup, edit);\r
+}\r
+\r
+void ShuffleMenuProc(w, event, prms, nprms)\r
+     Widget w;\r
+     XEvent *event;\r
+     String *prms;\r
+     Cardinal *nprms;\r
+{\r
+//    if (gameMode == AnalyzeMode || gameMode == AnalyzeFile) {\r
+//     Reset(FALSE, TRUE);\r
+//    }\r
+    ShufflePopUp();\r
+}\r
+\r
+//--------------------------- Time-Control Menu Popup ----------------------------------\r
+int TimeControlUp;\r
+Widget TimeControlShell;\r
+int tcInc;\r
+Widget tcMess1, tcMess2, tcData, tcTime, tcOdds1, tcOdds2;\r
+int tcIncrement, tcMoves;\r
+\r
+void TimeControlPopDown()\r
+{\r
+    if (!TimeControlUp) return;\r
+    XtPopdown(TimeControlShell);\r
+    XtDestroyWidget(TimeControlShell);\r
+    TimeControlUp = False;\r
+    ModeHighlight();\r
+}\r
+\r
+void TimeControlCallback(w, client_data, call_data)\r
+     Widget w;\r
+     XtPointer client_data, call_data;\r
+{\r
+    String name, txt;\r
+    Widget w2;\r
+    Arg args[16];\r
+    char buf[80];\r
+    int j;\r
+\r
+    XtSetArg(args[0], XtNlabel, &name);\r
+    XtGetValues(w, args, 1);\r
+    \r
+    if (strcmp(name, _("classical")) == 0) {\r
+       if(!tcInc) return;\r
+       j=0;\r
+       XtSetArg(args[j], XtNlabel, _("minutes for each")); j++;\r
+       XtSetValues(tcMess1, args, j);\r
+       j=0;\r
+       XtSetArg(args[j], XtNlabel, _("moves")); j++;\r
+       XtSetValues(tcMess2, args, j);\r
+       j=0;\r
+       XtSetArg(args[j], XtNstring, &name); j++;\r
+       XtGetValues(tcData, args, j);\r
+       tcIncrement = 0; sscanf(name, "%d", &tcIncrement);\r
+       sprintf(buf, "%d", tcMoves);\r
+       j=0;\r
+       XtSetArg(args[j], XtNstring, buf); j++;\r
+       XtSetValues(tcData, args, j);\r
+       tcInc = False;\r
+        return;\r
+    }\r
+    if (strcmp(name, _("incremental")) == 0) {\r
+       if(tcInc) return;\r
+       j=0;\r
+       XtSetArg(args[j], XtNlabel, _("minutes, plus")); j++;\r
+       XtSetValues(tcMess1, args, j);\r
+       j=0;\r
+       XtSetArg(args[j], XtNlabel, _("sec/move")); j++;\r
+       XtSetValues(tcMess2, args, j);\r
+       j=0;\r
+       XtSetArg(args[j], XtNstring, &name); j++;\r
+       XtGetValues(tcData, args, j);\r
+       tcMoves = appData.movesPerSession; sscanf(name, "%d", &tcMoves);\r
+       sprintf(buf, "%d", tcIncrement);\r
+       j=0;\r
+       XtSetArg(args[j], XtNstring, buf); j++;\r
+       XtSetValues(tcData, args, j);\r
+       tcInc = True;\r
+        return;\r
+    }\r
+    if (strcmp(name, _(" OK ")) == 0) {\r
+       int inc, mps, tc, ok;\r
+       XtSetArg(args[0], XtNstring, &txt);\r
+       XtGetValues(tcData, args, 1);\r
+       if(tcInc) {\r
+           ok = sscanf(txt, "%d", &inc); mps = 0;\r
+           if(!ok && txt[0] == 0) { inc = 0; ok = 1; } // accept empty string as zero\r
+           ok &= (inc >= 0);\r
+       } else {\r
+           ok = sscanf(txt, "%d", &mps); inc = -1;\r
+           ok &= (mps > 0);\r
+       }\r
+       if(ok != 1) {\r
+           XtSetArg(args[0], XtNstring, ""); // erase any offending input\r
+           XtSetValues(tcData, args, 1);\r
+           return;\r
+       }\r
+       XtSetArg(args[0], XtNstring, &txt);\r
+       XtGetValues(tcTime, args, 1);\r
+       if(!ParseTimeControl(txt, inc, mps)) {\r
+           XtSetArg(args[0], XtNstring, ""); // erase any offending input\r
+           XtSetValues(tcTime, args, 1);\r
+           DisplayError(_("Bad Time-Control String"), 0);\r
+           return;\r
+       }\r
+       appData.movesPerSession = mps;\r
+       appData.timeIncrement = inc;\r
+       appData.timeControl = strdup(txt);\r
+       XtSetArg(args[0], XtNstring, &txt);\r
+       XtGetValues(tcOdds1, args, 1);\r
+       appData.firstTimeOdds = first.timeOdds \r
+               = (sscanf(txt, "%d", &j) == 1 && j > 0) ? j : 1;\r
+       XtGetValues(tcOdds2, args, 1);\r
+       appData.secondTimeOdds = second.timeOdds \r
+               = (sscanf(txt, "%d", &j) == 1 && j > 0) ? j : 1;\r
+\r
+       Reset(True, True);\r
+        TimeControlPopDown();\r
+        return;\r
+    }\r
+}\r
+\r
+void TimeControlPopUp()\r
+{\r
+    Arg args[16];\r
+    Widget popup, layout, form, edit, b_ok, b_cancel, b_clas, b_inc, mess;\r
+    Window root, child;\r
+    int x, y, i, j;\r
+    int win_x, win_y;\r
+    unsigned int mask;\r
+    char def[80];\r
+    \r
+    tcInc = (appData.timeIncrement >= 0);\r
+    tcMoves = appData.movesPerSession; tcIncrement = appData.timeIncrement;\r
+    if(!tcInc) tcIncrement = 0;\r
+    sprintf(def, "%d", tcInc ? tcIncrement : tcMoves);\r
+\r
+    i = 0;\r
+    XtSetArg(args[i], XtNresizable, True); i++;\r
+//    XtSetArg(args[i], XtNwidth, DIALOG_SIZE); i++;\r
+    TimeControlShell = popup =\r
+      XtCreatePopupShell(_("TimeControl Menu"), transientShellWidgetClass,\r
+                        shellWidget, args, i);\r
+    \r
+    layout =\r
+      XtCreateManagedWidget(layoutName, formWidgetClass, popup,\r
+                           layoutArgs, XtNumber(layoutArgs));\r
+  \r
+    form =\r
+      XtCreateManagedWidget(layoutName, formWidgetClass, layout,\r
+                           formArgs, XtNumber(formArgs));\r
+  \r
+    j = 0;\r
+//    XtSetArg(args[j], XtNwidth,     (XtArgVal) 300); j++;\r
+//    XtSetArg(args[j], XtNheight,    (XtArgVal) 85); j++;\r
+    XtSetValues(popup, args, j);\r
+\r
+    j= 0;\r
+    XtSetArg(args[j], XtNborderWidth, 1); j++;\r
+    XtSetArg(args[j], XtNeditType, XawtextEdit);  j++;\r
+    XtSetArg(args[j], XtNuseStringInPlace, False);  j++;\r
+    XtSetArg(args[j], XtNstring, appData.timeControl);  j++;\r
+    XtSetArg(args[j], XtNdisplayCaret, False);  j++;\r
+    XtSetArg(args[j], XtNtop, XtChainTop);  j++;\r
+    XtSetArg(args[j], XtNbottom, XtChainTop);  j++;\r
+    XtSetArg(args[j], XtNleft, XtChainLeft);  j++;\r
+    XtSetArg(args[j], XtNright, XtChainRight);  j++;\r
+    XtSetArg(args[j], XtNresizable, True);  j++;\r
+    XtSetArg(args[j], XtNwidth,  85);  j++;\r
+//    XtSetArg(args[j], XtNheight, 20);  j++;\r
+    tcTime = XtCreateManagedWidget("TC", asciiTextWidgetClass, form, args, j);\r
+    XtAddEventHandler(tcTime, ButtonPressMask, False, SetFocus, (XtPointer) popup);\r
+\r
+    j= 0;\r
+    XtSetArg(args[j], XtNlabel, tcInc ? _("   minutes, plus   ") : _("minutes for each")); j++;\r
+    XtSetArg(args[j], XtNborderWidth, 0); j++;\r
+    XtSetArg(args[j], XtNfromHoriz, tcTime); j++;\r
+    XtSetArg(args[j], XtNtop, XtChainTop);  j++;\r
+    XtSetArg(args[j], XtNbottom, XtChainTop);  j++;\r
+    XtSetArg(args[j], XtNleft, XtChainRight);  j++;\r
+    XtSetArg(args[j], XtNright, XtChainRight);  j++;\r
+  //  XtSetArg(args[j], XtNwidth,  100);  j++;\r
+  //  XtSetArg(args[j], XtNheight, 20);  j++;\r
+    tcMess1 = XtCreateManagedWidget("TCtext", labelWidgetClass, form, args, j);\r
+\r
+    j= 0;\r
+    XtSetArg(args[j], XtNborderWidth, 1); j++;\r
+    XtSetArg(args[j], XtNfromHoriz, tcMess1); j++;\r
+    XtSetArg(args[j], XtNeditType, XawtextEdit);  j++;\r
+    XtSetArg(args[j], XtNuseStringInPlace, False);  j++;\r
+    XtSetArg(args[j], XtNstring, def);  j++;\r
+    XtSetArg(args[j], XtNdisplayCaret, False);  j++;\r
+    XtSetArg(args[j], XtNtop, XtChainTop);  j++;\r
+    XtSetArg(args[j], XtNbottom, XtChainTop);  j++;\r
+    XtSetArg(args[j], XtNleft, XtChainRight);  j++;\r
+    XtSetArg(args[j], XtNright, XtChainRight);  j++;\r
+    XtSetArg(args[j], XtNresizable, True);  j++;\r
+    XtSetArg(args[j], XtNwidth,  40);  j++;\r
+//    XtSetArg(args[j], XtNheight, 20);  j++;\r
+    tcData = XtCreateManagedWidget("MPS", asciiTextWidgetClass, form, args, j);\r
+    XtAddEventHandler(tcData, ButtonPressMask, False, SetFocus, (XtPointer) popup);\r
+\r
+    j= 0;\r
+    XtSetArg(args[j], XtNlabel, tcInc ? _("sec/move") : _("moves     ")); j++;\r
+    XtSetArg(args[j], XtNjustify, XtJustifyLeft); j++;\r
+    XtSetArg(args[j], XtNborderWidth, 0); j++;\r
+    XtSetArg(args[j], XtNfromHoriz, tcData); j++;\r
+    XtSetArg(args[j], XtNtop, XtChainTop);  j++;\r
+    XtSetArg(args[j], XtNbottom, XtChainTop);  j++;\r
+    XtSetArg(args[j], XtNleft, XtChainRight);  j++;\r
+    XtSetArg(args[j], XtNright, XtChainRight);  j++;\r
+//    XtSetArg(args[j], XtNwidth,  80);  j++;\r
+//    XtSetArg(args[j], XtNheight, 20);  j++;\r
+    tcMess2 = XtCreateManagedWidget("MPStext", labelWidgetClass,\r
+                                  form, args, j);\r
+\r
+    j= 0;\r
+    XtSetArg(args[j], XtNborderWidth, 1); j++;\r
+    XtSetArg(args[j], XtNfromVert, tcTime); j++;\r
+    XtSetArg(args[j], XtNeditType, XawtextEdit);  j++;\r
+    XtSetArg(args[j], XtNuseStringInPlace, False);  j++;\r
+    XtSetArg(args[j], XtNstring, "1");  j++;\r
+    XtSetArg(args[j], XtNdisplayCaret, False);  j++;\r
+    XtSetArg(args[j], XtNtop, XtChainTop);  j++;\r
+    XtSetArg(args[j], XtNbottom, XtChainTop);  j++;\r
+    XtSetArg(args[j], XtNleft, XtChainLeft);  j++;\r
+    XtSetArg(args[j], XtNright, XtChainLeft);  j++;\r
+    XtSetArg(args[j], XtNresizable, True);  j++;\r
+    XtSetArg(args[j], XtNwidth,  40);  j++;\r
+//    XtSetArg(args[j], XtNheight, 20);  j++;\r
+    tcOdds1 = XtCreateManagedWidget("Odds1", asciiTextWidgetClass, form, args, j);\r
+    XtAddEventHandler(tcOdds1, ButtonPressMask, False, SetFocus, (XtPointer) popup);\r
+\r
+    j= 0;\r
+    XtSetArg(args[j], XtNborderWidth, 1); j++;\r
+    XtSetArg(args[j], XtNfromVert, tcTime); j++;\r
+    XtSetArg(args[j], XtNfromHoriz, tcOdds1); j++;\r
+    XtSetArg(args[j], XtNeditType, XawtextEdit);  j++;\r
+    XtSetArg(args[j], XtNuseStringInPlace, False);  j++;\r
+    XtSetArg(args[j], XtNstring, "1");  j++;\r
+    XtSetArg(args[j], XtNdisplayCaret, False);  j++;\r
+    XtSetArg(args[j], XtNtop, XtChainTop);  j++;\r
+    XtSetArg(args[j], XtNbottom, XtChainTop);  j++;\r
+    XtSetArg(args[j], XtNleft, XtChainLeft);  j++;\r
+    XtSetArg(args[j], XtNright, XtChainLeft);  j++;\r
+    XtSetArg(args[j], XtNresizable, True);  j++;\r
+    XtSetArg(args[j], XtNwidth,  40);  j++;\r
+//    XtSetArg(args[j], XtNheight, 20);  j++;\r
+    tcOdds2 = XtCreateManagedWidget("Odds2", asciiTextWidgetClass, form, args, j);\r
+    XtAddEventHandler(tcOdds2, ButtonPressMask, False, SetFocus, (XtPointer) popup);\r
+\r
+    j= 0;\r
+    XtSetArg(args[j], XtNlabel, _("Engine #1 and #2 Time-Odds Factors")); j++;\r
+    XtSetArg(args[j], XtNjustify, XtJustifyLeft); j++;\r
+    XtSetArg(args[j], XtNborderWidth, 0); j++;\r
+    XtSetArg(args[j], XtNfromVert, tcTime); j++;\r
+    XtSetArg(args[j], XtNfromHoriz, tcOdds2); j++;\r
+    XtSetArg(args[j], XtNtop, XtChainTop);  j++;\r
+    XtSetArg(args[j], XtNbottom, XtChainTop);  j++;\r
+    XtSetArg(args[j], XtNleft, XtChainLeft);  j++;\r
+    XtSetArg(args[j], XtNright, XtChainRight);  j++;\r
+//    XtSetArg(args[j], XtNwidth,  200);  j++;\r
+//    XtSetArg(args[j], XtNheight, 20);  j++;\r
+    mess = XtCreateManagedWidget("Oddstext", labelWidgetClass,\r
+                                  form, args, j);\r
+    j=0;\r
+    XtSetArg(args[j], XtNfromVert, tcOdds1);  j++;\r
+    XtSetArg(args[j], XtNbottom, XtChainBottom);  j++;\r
+    XtSetArg(args[j], XtNtop, XtChainBottom);  j++;\r
+    XtSetArg(args[j], XtNleft, XtChainLeft);  j++;\r
+    XtSetArg(args[j], XtNright, XtChainLeft);  j++;\r
+    b_clas= XtCreateManagedWidget(_("classical"), commandWidgetClass,\r
+                                  form, args, j);   \r
+    XtAddCallback(b_clas, XtNcallback, TimeControlCallback, (XtPointer) 0);\r
+\r
+    j=0;\r
+    XtSetArg(args[j], XtNfromVert, tcOdds1);  j++;\r
+    XtSetArg(args[j], XtNfromHoriz, b_clas);  j++;\r
+    XtSetArg(args[j], XtNbottom, XtChainBottom);  j++;\r
+    XtSetArg(args[j], XtNtop, XtChainBottom);  j++;\r
+    XtSetArg(args[j], XtNleft, XtChainLeft);  j++;\r
+    XtSetArg(args[j], XtNright, XtChainLeft);  j++;\r
+    b_inc = XtCreateManagedWidget(_("incremental"), commandWidgetClass,\r
+                                  form, args, j);   \r
+    XtAddCallback(b_inc, XtNcallback, TimeControlCallback, (XtPointer) 0);\r
+\r
+    j=0;\r
+    XtSetArg(args[j], XtNfromVert, tcOdds1);  j++;\r
+    XtSetArg(args[j], XtNfromHoriz, tcData);  j++;\r
+    XtSetArg(args[j], XtNbottom, XtChainBottom);  j++;\r
+    XtSetArg(args[j], XtNtop, XtChainBottom);  j++;\r
+    XtSetArg(args[j], XtNleft, XtChainRight);  j++;\r
+    XtSetArg(args[j], XtNright, XtChainRight);  j++;\r
+    b_ok= XtCreateManagedWidget(_(" OK "), commandWidgetClass,\r
+                                  form, args, j);   \r
+    XtAddCallback(b_ok, XtNcallback, TimeControlCallback, (XtPointer) 0);\r
+\r
+    j=0;\r
+    XtSetArg(args[j], XtNfromVert, tcOdds1);  j++;\r
+    XtSetArg(args[j], XtNfromHoriz, b_ok);  j++;\r
+    XtSetArg(args[j], XtNbottom, XtChainBottom);  j++;\r
+    XtSetArg(args[j], XtNtop, XtChainBottom);  j++;\r
+    XtSetArg(args[j], XtNleft, XtChainRight);  j++;\r
+    XtSetArg(args[j], XtNright, XtChainRight);  j++;\r
+    b_cancel= XtCreateManagedWidget(_("cancel"), commandWidgetClass,\r
+                                  form, args, j);   \r
+    XtAddCallback(b_cancel, XtNcallback, TimeControlPopDown, (XtPointer) 0);\r
+\r
+    XtRealizeWidget(popup);\r
+    CatchDeleteWindow(popup, "TimeControlPopDown");\r
+    \r
+    XQueryPointer(xDisplay, xBoardWindow, &root, &child,\r
+                 &x, &y, &win_x, &win_y, &mask);\r
+    \r
+    XtSetArg(args[0], XtNx, x - 10);\r
+    XtSetArg(args[1], XtNy, y - 30);\r
+    XtSetValues(popup, args, 2);\r
+    \r
+    XtPopup(popup, XtGrabExclusive);\r
+    TimeControlUp = True;\r
+    \r
+    previous = NULL;\r
+    SetFocus(tcTime, popup, (XEvent*) NULL, False);\r
+//    XtSetKeyboardFocus(popup, tcTime);\r
+}\r
+\r
+void TimeControlProc(w, event, prms, nprms)\r
+     Widget w;\r
+     XEvent *event;\r
+     String *prms;\r
+     Cardinal *nprms;\r
+{\r
+   TimeControlPopUp();\r
+}\r
+\r
+//--------------------------- Engine-Options Menu Popup ----------------------------------\r
+int EngineUp;\r
+Widget EngineShell;\r
+extern int adjudicateLossThreshold;\r
+\r
+Widget engDrawMoves, engThreshold, engRule, engRepeat;\r
+\r
+void EnginePopDown()\r
+{\r
+    if (!EngineUp) return;\r
+    XtPopdown(EngineShell);\r
+    XtDestroyWidget(EngineShell);\r
+    EngineUp = False;\r
+    ModeHighlight();\r
+}\r
+\r
+int ReadToggle(Widget w)\r
+{\r
+    Arg args; Boolean res;\r
+\r
+    XtSetArg(args, XtNstate, &res);\r
+    XtGetValues(w, &args, 1);\r
+\r
+    return res;\r
+}\r
+\r
+Widget w1, w2, w3, w4, w5, w6, w7, w8;\r
+\r
+void EngineCallback(w, client_data, call_data)\r
+     Widget w;\r
+     XtPointer client_data, call_data;\r
+{\r
+    String name;\r
+    Widget s2;\r
+    Arg args[16];\r
+    char buf[80];\r
+    int j;\r
+    \r
+    XtSetArg(args[0], XtNlabel, &name);\r
+    XtGetValues(w, args, 1);\r
+    \r
+    if (strcmp(name, _("OK")) == 0) {\r
+       // read all switches\r
+       appData.periodicUpdates = ReadToggle(w1);\r
+//     appData.hideThinkingFromHuman = ReadToggle(w2);\r
+       appData.firstScoreIsAbsolute  = ReadToggle(w3);\r
+       appData.secondScoreIsAbsolute = ReadToggle(w4);\r
+       appData.testClaims    = ReadToggle(w5);\r
+       appData.checkMates    = ReadToggle(w6);\r
+       appData.materialDraws = ReadToggle(w7);\r
+       appData.trivialDraws  = ReadToggle(w8);\r
+\r
+       // adjust setting in other menu for duplicates \r
+       // (perhaps duplicates should be removed from general Option Menu?)\r
+//     XtSetArg(args[0], XtNleftBitmap, appData.showThinking ? xMarkPixmap : None);\r
+//     XtSetValues(XtNameToWidget(menuBarWidget,\r
+//                                "menuOptions.Show Thinking"), args, 1);\r
+\r
+       // read out numeric controls, simply ignore bad formats for now\r
+       XtSetArg(args[0], XtNstring, &name);\r
+       XtGetValues(engDrawMoves, args, 1);\r
+       if(sscanf(name, "%d", &j) == 1) appData.adjudicateDrawMoves = j;\r
+       XtGetValues(engThreshold, args, 1);\r
+       if(sscanf(name, "%d", &j) == 1) \r
+               adjudicateLossThreshold = appData.adjudicateLossThreshold = -j; // inverted!\r
+       XtGetValues(engRule, args, 1);\r
+       if(sscanf(name, "%d", &j) == 1) appData.ruleMoves = j;\r
+       XtGetValues(engRepeat, args, 1);\r
+       if(sscanf(name, "%d", &j) == 1) appData.drawRepeats = j;\r
+\r
+        EnginePopDown();\r
+       ShowThinkingEvent(); // [HGM] thinking: score adjudication might need thinking output\r
+        return;\r
+    }\r
+}\r
+\r
+void EnginePopUp()\r
+{\r
+    Arg args[16];\r
+    Widget popup, layout, form, edit, b_ok, b_cancel, b_clas, b_inc, s1; \r
+    Window root, child;\r
+    int x, y, i, j, width;\r
+    int win_x, win_y;\r
+    unsigned int mask;\r
+    char def[80];\r
+    \r
+    tcInc = (appData.timeIncrement >= 0);\r
+    tcMoves = appData.movesPerSession; tcIncrement = appData.timeIncrement;\r
+    if(!tcInc) tcIncrement = 0;\r
+    sprintf(def, "%d", tcInc ? tcIncrement : tcMoves);\r
+\r
+    i = 0;\r
+    XtSetArg(args[i], XtNresizable, True); i++;\r
+//    XtSetArg(args[i], XtNwidth, DIALOG_SIZE); i++;\r
+    EngineShell = popup =\r
+      XtCreatePopupShell(_("Adjudications"), transientShellWidgetClass,\r
+                        shellWidget, args, i);\r
+    \r
+    layout =\r
+      XtCreateManagedWidget(layoutName, formWidgetClass, popup,\r
+                           layoutArgs, XtNumber(layoutArgs));\r
+  \r
+    form =\r
+      XtCreateManagedWidget(layoutName, formWidgetClass, layout,\r
+                           formArgs, XtNumber(formArgs));\r
+  \r
+    j = 0;\r
+//    XtSetArg(args[j], XtNwidth,     (XtArgVal) 250); j++;\r
+//    XtSetArg(args[j], XtNheight,    (XtArgVal) 400); j++;\r
+//    XtSetValues(popup, args, j);\r
+\r
+    j = 0;\r
+//    XtSetArg(args[j], XtNwidth,       (XtArgVal) 250); j++;\r
+//    XtSetArg(args[j], XtNheight,      (XtArgVal) 20); j++;\r
+    XtSetArg(args[j], XtNleft,        (XtArgVal) XtChainLeft); j++;\r
+    XtSetArg(args[j], XtNright,       (XtArgVal) XtChainRight); j++;\r
+    XtSetArg(args[j], XtNstate,       appData.periodicUpdates); j++;\r
+//    XtSetArg(args[j], XtNjustify,     (XtArgVal) XtJustifyLeft); j++;\r
+    w1 = XtCreateManagedWidget(_("Periodic Updates (Analysis Mode)"), toggleWidgetClass, form, args, j);\r
+\r
+    XtSetArg(args[j], XtNwidth,       (XtArgVal) &width);\r
+    XtGetValues(w1, &args[j], 1);\r
+\r
+//    XtSetArg(args[j-1], XtNfromVert,  (XtArgVal) w1);\r
+//    XtSetArg(args[j-3], XtNstate,       appData.hideThinkingFromHuman);\r
+//    w2 = XtCreateManagedWidget(_("Hide Thinking from Human"), toggleWidgetClass, form, args, j);\r
+\r
+    XtSetArg(args[j], XtNwidth,       (XtArgVal) width); j++;\r
+    XtSetArg(args[j-2], XtNstate,     appData.firstScoreIsAbsolute);\r
+    XtSetArg(args[j], XtNfromVert,    (XtArgVal) w1); j++;\r
+    w3 = XtCreateManagedWidget(_("Engine #1 Score is Absolute"), toggleWidgetClass, form, args, j);\r
+\r
+    XtSetArg(args[j-1], XtNfromVert,  (XtArgVal) w3);\r
+    XtSetArg(args[j-3], XtNstate,       appData.secondScoreIsAbsolute);\r
+    w4 = XtCreateManagedWidget(_("Engine #2 Score is Absolute"), toggleWidgetClass, form, args, j);\r
+\r
+    s1 = XtCreateManagedWidget(_("\nEngine-Engine Adjudications:"), labelWidgetClass, form, args, 3);\r
+\r
+    XtSetArg(args[j-1], XtNfromVert,  (XtArgVal) s1);\r
+    XtSetArg(args[j-3], XtNstate,       appData.testClaims);\r
+    w5 = XtCreateManagedWidget(_("Verify Engine Result Claims"), toggleWidgetClass, form, args, j);\r
+\r
+    XtSetArg(args[j-1], XtNfromVert,  (XtArgVal) w5);\r
+    XtSetArg(args[j-3], XtNstate,       appData.checkMates);\r
+    w6 = XtCreateManagedWidget(_("Detect All Mates"), toggleWidgetClass, form, args, j);\r
+\r
+    XtSetArg(args[j-1], XtNfromVert,  (XtArgVal) w6);\r
+    XtSetArg(args[j-3], XtNstate,       appData.materialDraws);\r
+    w7 = XtCreateManagedWidget(_("Draw when Insuff. Mating Material"), toggleWidgetClass, form, args, j);\r
+\r
+    XtSetArg(args[j-1], XtNfromVert,  (XtArgVal) w7);\r
+    XtSetArg(args[j-3], XtNstate,       appData.trivialDraws);\r
+    w8 = XtCreateManagedWidget(_("Adjudicate Trivial Draws"), toggleWidgetClass, form, args, j);\r
+\r
+    XtSetArg(args[0], XtNfromVert,  (XtArgVal) w4);\r
+    XtSetArg(args[1], XtNborderWidth, (XtArgVal) 0);\r
+    XtSetValues(s1, args, 2);\r
+\r
+    sprintf(def, "%d", appData.adjudicateDrawMoves);\r
+    j= 0;\r
+    XtSetArg(args[j], XtNborderWidth, 1); j++;\r
+    XtSetArg(args[j], XtNfromVert, w8); j++;\r
+    XtSetArg(args[j], XtNeditType, XawtextEdit);  j++;\r
+    XtSetArg(args[j], XtNuseStringInPlace, False);  j++;\r
+    XtSetArg(args[j], XtNstring, def);  j++;\r
+    XtSetArg(args[j], XtNdisplayCaret, False);  j++;\r
+    XtSetArg(args[j], XtNtop, XtChainBottom);  j++;\r
+    XtSetArg(args[j], XtNbottom, XtChainBottom);  j++;\r
+    XtSetArg(args[j], XtNleft, XtChainLeft);  j++;\r
+    XtSetArg(args[j], XtNright, XtChainLeft);  j++;\r
+    XtSetArg(args[j], XtNresizable, True);  j++;\r
+    XtSetArg(args[j], XtNwidth,  60);  j++;\r
+//    XtSetArg(args[j], XtNheight, 20);  j++;\r
+    engDrawMoves = XtCreateManagedWidget("Length", asciiTextWidgetClass, form, args, j);\r
+    XtAddEventHandler(engDrawMoves, ButtonPressMask, False, SetFocus, (XtPointer) popup);\r
+\r
+    j= 0;\r
+    XtSetArg(args[j], XtNlabel, _(" moves maximum, then draw")); j++;\r
+    XtSetArg(args[j], XtNjustify,     (XtArgVal) XtJustifyLeft); j++;\r
+    XtSetArg(args[j], XtNborderWidth, 0); j++;\r
+    XtSetArg(args[j], XtNfromVert, w8); j++;\r
+    XtSetArg(args[j], XtNfromHoriz, engDrawMoves); j++;\r
+    XtSetArg(args[j], XtNtop, XtChainBottom);  j++;\r
+    XtSetArg(args[j], XtNbottom, XtChainBottom);  j++;\r
+    XtSetArg(args[j], XtNleft, XtChainLeft);  j++;\r
+    XtSetArg(args[j], XtNright, XtChainLeft);  j++;\r
+//    XtSetArg(args[j], XtNwidth,  170);  j++;\r
+//    XtSetArg(args[j], XtNheight, 20);  j++;\r
+    tcMess1 = XtCreateManagedWidget("TCtext", labelWidgetClass, form, args, j);\r
+\r
+    sprintf(def, "%d", -appData.adjudicateLossThreshold); // inverted!\r
+    j= 0;\r
+    XtSetArg(args[j], XtNborderWidth, 1); j++;\r
+    XtSetArg(args[j], XtNfromVert, engDrawMoves); j++;\r
+    XtSetArg(args[j], XtNeditType, XawtextEdit);  j++;\r
+    XtSetArg(args[j], XtNuseStringInPlace, False);  j++;\r
+    XtSetArg(args[j], XtNstring, def);  j++;\r
+    XtSetArg(args[j], XtNdisplayCaret, False);  j++;\r
+    XtSetArg(args[j], XtNtop, XtChainBottom);  j++;\r
+    XtSetArg(args[j], XtNbottom, XtChainBottom);  j++;\r
+    XtSetArg(args[j], XtNleft, XtChainLeft);  j++;\r
+    XtSetArg(args[j], XtNright, XtChainLeft);  j++;\r
+    XtSetArg(args[j], XtNresizable, True);  j++;\r
+    XtSetArg(args[j], XtNwidth,  60);  j++;\r
+//    XtSetArg(args[j], XtNheight, 20);  j++;\r
+    engThreshold = XtCreateManagedWidget("Threshold", asciiTextWidgetClass, form, args, j);\r
+    XtAddEventHandler(engThreshold, ButtonPressMask, False, SetFocus, (XtPointer) popup);\r
+\r
+    j= 0;\r
+    XtSetArg(args[j], XtNlabel, _("-centiPawn lead is win")); j++;\r
+    XtSetArg(args[j], XtNjustify, XtJustifyLeft); j++;\r
+    XtSetArg(args[j], XtNborderWidth, 0); j++;\r
+    XtSetArg(args[j], XtNfromVert, engDrawMoves); j++;\r
+    XtSetArg(args[j], XtNfromHoriz, engThreshold); j++;\r
+    XtSetArg(args[j], XtNtop, XtChainBottom);  j++;\r
+    XtSetArg(args[j], XtNbottom, XtChainBottom);  j++;\r
+    XtSetArg(args[j], XtNleft, XtChainLeft);  j++;\r
+    XtSetArg(args[j], XtNright, XtChainLeft);  j++;\r
+//    XtSetArg(args[j], XtNwidth,  150);  j++;\r
+//    XtSetArg(args[j], XtNheight, 20);  j++;\r
+    tcMess2 = XtCreateManagedWidget("MPStext", labelWidgetClass, form, args, j);\r
+\r
+    sprintf(def, "%d", appData.ruleMoves);\r
+    j= 0;\r
+    XtSetArg(args[j], XtNborderWidth, 1); j++;\r
+    XtSetArg(args[j], XtNfromVert, engThreshold); j++;\r
+    XtSetArg(args[j], XtNeditType, XawtextEdit);  j++;\r
+    XtSetArg(args[j], XtNuseStringInPlace, False);  j++;\r
+    XtSetArg(args[j], XtNstring, def);  j++;\r
+    XtSetArg(args[j], XtNdisplayCaret, False);  j++;\r
+    XtSetArg(args[j], XtNtop, XtChainBottom);  j++;\r
+    XtSetArg(args[j], XtNbottom, XtChainBottom);  j++;\r
+    XtSetArg(args[j], XtNleft, XtChainLeft);  j++;\r
+    XtSetArg(args[j], XtNright, XtChainLeft);  j++;\r
+    XtSetArg(args[j], XtNresizable, True);  j++;\r
+    XtSetArg(args[j], XtNwidth,  30);  j++;\r
+//    XtSetArg(args[j], XtNheight, 20);  j++;\r
+    engRule = XtCreateManagedWidget("Rule", asciiTextWidgetClass, form, args, j);\r
+    XtAddEventHandler(engRule, ButtonPressMask, False, SetFocus, (XtPointer) popup);\r
+\r
+    j= 0;\r
+    XtSetArg(args[j], XtNlabel, _("-move rule applied")); j++;\r
+    XtSetArg(args[j], XtNjustify,     (XtArgVal) XtJustifyLeft); j++;\r
+    XtSetArg(args[j], XtNborderWidth, 0); j++;\r
+    XtSetArg(args[j], XtNfromVert, engThreshold); j++;\r
+    XtSetArg(args[j], XtNfromHoriz, engRule); j++;\r
+    XtSetArg(args[j], XtNtop, XtChainBottom);  j++;\r
+    XtSetArg(args[j], XtNbottom, XtChainBottom);  j++;\r
+    XtSetArg(args[j], XtNleft, XtChainLeft);  j++;\r
+    XtSetArg(args[j], XtNright, XtChainLeft);  j++;\r
+//    XtSetArg(args[j], XtNwidth,  130);  j++;\r
+//    XtSetArg(args[j], XtNheight, 20);  j++;\r
+    tcMess1 = XtCreateManagedWidget("TCtext", labelWidgetClass, form, args, j);\r
+\r
+    sprintf(def, "%d", appData.drawRepeats);\r
+    j= 0;\r
+    XtSetArg(args[j], XtNborderWidth, 1); j++;\r
+    XtSetArg(args[j], XtNfromVert, engRule); j++;\r
+    XtSetArg(args[j], XtNeditType, XawtextEdit);  j++;\r
+    XtSetArg(args[j], XtNuseStringInPlace, False);  j++;\r
+    XtSetArg(args[j], XtNstring, def);  j++;\r
+    XtSetArg(args[j], XtNdisplayCaret, False);  j++;\r
+    XtSetArg(args[j], XtNtop, XtChainBottom);  j++;\r
+    XtSetArg(args[j], XtNbottom, XtChainBottom);  j++;\r
+    XtSetArg(args[j], XtNleft, XtChainLeft);  j++;\r
+    XtSetArg(args[j], XtNright, XtChainLeft);  j++;\r
+    XtSetArg(args[j], XtNresizable, True);  j++;\r
+    XtSetArg(args[j], XtNwidth,  30);  j++;\r
+//    XtSetArg(args[j], XtNheight, 20);  j++;\r
+    engRepeat = XtCreateManagedWidget("Repeats", asciiTextWidgetClass, form, args, j);\r
+    XtAddEventHandler(engRepeat, ButtonPressMask, False, SetFocus, (XtPointer) popup);\r
+\r
+    j= 0;\r
+    XtSetArg(args[j], XtNlabel, _("-fold repeat is draw")); j++;\r
+    XtSetArg(args[j], XtNjustify, XtJustifyLeft); j++;\r
+    XtSetArg(args[j], XtNborderWidth, 0); j++;\r
+    XtSetArg(args[j], XtNfromVert, engRule); j++;\r
+    XtSetArg(args[j], XtNfromHoriz, engRepeat); j++;\r
+    XtSetArg(args[j], XtNtop, XtChainBottom);  j++;\r
+    XtSetArg(args[j], XtNbottom, XtChainBottom);  j++;\r
+    XtSetArg(args[j], XtNleft, XtChainLeft);  j++;\r
+    XtSetArg(args[j], XtNright, XtChainLeft);  j++;\r
+//    XtSetArg(args[j], XtNwidth,  130);  j++;\r
+//    XtSetArg(args[j], XtNheight, 20);  j++;\r
+    tcMess2 = XtCreateManagedWidget("MPStext", labelWidgetClass, form, args, j);\r
+\r
+    j=0;\r
+    XtSetArg(args[j], XtNfromVert, engRepeat);  j++;\r
+    XtSetArg(args[j], XtNfromHoriz, tcMess2);  j++;\r
+    XtSetArg(args[j], XtNbottom, XtChainBottom);  j++;\r
+    XtSetArg(args[j], XtNtop, XtChainBottom);  j++;\r
+    XtSetArg(args[j], XtNleft, XtChainRight);  j++;\r
+    XtSetArg(args[j], XtNright, XtChainRight);  j++;\r
+    b_ok= XtCreateManagedWidget(_("OK"), commandWidgetClass, form, args, j);   \r
+    XtAddCallback(b_ok, XtNcallback, EngineCallback, (XtPointer) 0);\r
+\r
+    j=0;\r
+    XtSetArg(args[j], XtNfromVert, engRepeat);  j++;\r
+    XtSetArg(args[j], XtNfromHoriz, b_ok);  j++;\r
+    XtSetArg(args[j], XtNbottom, XtChainBottom);  j++;\r
+    XtSetArg(args[j], XtNtop, XtChainBottom);  j++;\r
+    XtSetArg(args[j], XtNleft, XtChainRight);  j++;\r
+    XtSetArg(args[j], XtNright, XtChainRight);  j++;\r
+    b_cancel= XtCreateManagedWidget(_("cancel"), commandWidgetClass,\r
+                                  form, args, j);   \r
+    XtAddCallback(b_cancel, XtNcallback, EnginePopDown, (XtPointer) 0);\r
+\r
+    XtRealizeWidget(popup);\r
+    CatchDeleteWindow(popup, "EnginePopDown");\r
+    \r
+    XQueryPointer(xDisplay, xBoardWindow, &root, &child,\r
+                 &x, &y, &win_x, &win_y, &mask);\r
+    \r
+    XtSetArg(args[0], XtNx, x - 10);\r
+    XtSetArg(args[1], XtNy, y - 30);\r
+    XtSetValues(popup, args, 2);\r
+    \r
+    XtPopup(popup, XtGrabExclusive);\r
+    EngineUp = True;\r
+    \r
+    previous = NULL;\r
+    SetFocus(engThreshold, popup, (XEvent*) NULL, False);\r
+}\r
+\r
+void EngineMenuProc(w, event, prms, nprms)\r
+     Widget w;\r
+     XEvent *event;\r
+     String *prms;\r
+     Cardinal *nprms;\r
+{\r
+   EnginePopUp();\r
+}\r
+\r
+//--------------------------- New-Variant Menu PopUp -----------------------------------\r
+struct NewVarButton {\r
+  char   *name;\r
+  char *color;\r
+  Widget handle;\r
+  VariantClass variant;\r
+};\r
+\r
+struct NewVarButton buttonDesc[] = {\r
+    {N_("normal"),            "#FFFFFF", 0, VariantNormal},\r
+    {N_("FRC"),               "#FFFFFF", 0, VariantFischeRandom},\r
+    {N_("wild castle"),       "#FFFFFF", 0, VariantWildCastle},\r
+    {N_("no castle"),         "#FFFFFF", 0, VariantNoCastle},\r
+    {N_("knightmate"),        "#FFFFFF", 0, VariantKnightmate},\r
+    {N_("berolina"),          "#FFFFFF", 0, VariantBerolina},\r
+    {N_("cylinder"),          "#FFFFFF", 0, VariantCylinder},\r
+    {N_("shatranj"),          "#FFFFFF", 0, VariantShatranj},\r
+    {N_("atomic"),            "#FFFFFF", 0, VariantAtomic},\r
+    {N_("two kings"),         "#FFFFFF", 0, VariantTwoKings},\r
+    {N_("3-checks"),          "#FFFFFF", 0, Variant3Check},\r
+    {N_("suicide"),           "#FFFFBF", 0, VariantSuicide},\r
+    {N_("give-away"),         "#FFFFBF", 0, VariantGiveaway},\r
+    {N_("losers"),            "#FFFFBF", 0, VariantLosers},\r
+    {N_("fairy"),             "#BFBFBF", 0, VariantFairy},\r
+    {N_("Superchess"),        "#FFBFBF", 0, VariantSuper},\r
+    {N_("crazyhouse"),        "#FFBFBF", 0, VariantCrazyhouse},\r
+    {N_("bughouse"),          "#FFBFBF", 0, VariantBughouse},\r
+    {N_("shogi (9x9)"),       "#BFFFFF", 0, VariantShogi},\r
+    {N_("xiangqi (9x10)"),    "#BFFFFF", 0, VariantXiangqi},\r
+    {N_("courier (12x8)"),    "#BFFFBF", 0, VariantCourier},\r
+    {N_("janus (10x8)"),      "#BFBFFF", 0, VariantJanus},\r
+    {N_("Capablanca (10x8)"), "#BFBFFF", 0, VariantCapablanca},\r
+    {N_("CRC (10x8)"),        "#BFBFFF", 0, VariantCapaRandom},\r
+#ifdef GOTHIC\r
+    {N_("Gothic (10x8)"),     "#BFBFFF", 0, VariantGothic},\r
+#endif\r
+#ifdef FALCON\r
+    {N_("Falcon (10x8)"),     "#BFBFFF", 0, VariantFalcon},\r
+#endif\r
+    {NULL,                0, 0, (VariantClass) 0}\r
+};\r
+\r
+int NewVariantUp;\r
+Widget NewVariantShell;\r
+\r
+void NewVariantPopDown()\r
+{\r
+    if (!NewVariantUp) return;\r
+    XtPopdown(NewVariantShell);\r
+    XtDestroyWidget(NewVariantShell);\r
+    NewVariantUp = False;\r
+    ModeHighlight();\r
+}\r
+\r
+void NewVariantCallback(w, client_data, call_data)\r
+     Widget w;\r
+     XtPointer client_data, call_data;\r
+{\r
+    String name;\r
+    Widget w2;\r
+    Arg args[16];\r
+    char buf[80];\r
+    VariantClass v;\r
+    \r
+    XtSetArg(args[0], XtNlabel, &name);\r
+    XtGetValues(w, args, 1);\r
+    \r
+    if (strcmp(name, _("  OK  ")) == 0) {\r
+       int nr = (int) XawToggleGetCurrent(buttonDesc[0].handle) - 1;\r
+       if(nr < 0) return;\r
+       v = buttonDesc[nr].variant;\r
+       if(!appData.noChessProgram) { \r
+           char *name = VariantName(v), buf[MSG_SIZ];\r
+           if (first.protocolVersion > 1 && StrStr(first.variants, name) == NULL) {\r
+               /* [HGM] in protocol 2 we check if variant is suported by engine */\r
+               sprintf(buf, _("Variant %s not supported by %s"), name, first.tidy);\r
+               DisplayError(buf, 0);\r
+//             NewVariantPopDown();\r
+               return; /* ignore OK if first engine does not support it */\r
+           } else\r
+           if (second.initDone && second.protocolVersion > 1 && StrStr(second.variants, name) == NULL) {\r
+               sprintf(buf, _("Warning: second engine (%s) does not support this!"), second.tidy);\r
+               DisplayError(buf, 0);   /* use of second engine is optional; only warn user */\r
+           }\r
+       }\r
+\r
+       gameInfo.variant = v;\r
+       appData.variant = VariantName(v);\r
+\r
+       shuffleOpenings = FALSE; /* [HGM] shuffle: possible shuffle reset when we switch */\r
+       startedFromPositionFile = FALSE; /* [HGM] loadPos: no longer valid in new variant */\r
+       appData.pieceToCharTable = NULL;\r
+       Reset(True, True);\r
+        NewVariantPopDown();\r
+        return;\r
+    }\r
+}\r
+\r
+void NewVariantPopUp()\r
+{\r
+    Arg args[16];\r
+    Widget popup, layout, dialog, edit, form, last = NULL, b_ok, b_cancel;\r
+    Window root, child;\r
+    int x, y, i, j;\r
+    int win_x, win_y;\r
+    unsigned int mask;\r
+    char def[80];\r
+    XrmValue vFrom, vTo;\r
+\r
+    i = 0;\r
+    XtSetArg(args[i], XtNresizable, True); i++;\r
+//    XtSetArg(args[i], XtNwidth, 250); i++;\r
+//    XtSetArg(args[i], XtNheight, 300); i++;\r
+    NewVariantShell = popup =\r
+      XtCreatePopupShell(_("NewVariant Menu"), transientShellWidgetClass,\r
+                        shellWidget, args, i);\r
+    \r
+    layout =\r
+      XtCreateManagedWidget(layoutName, formWidgetClass, popup,\r
+                           layoutArgs, XtNumber(layoutArgs));\r
+  \r
+    form =\r
+      XtCreateManagedWidget("form", formWidgetClass, layout,\r
+                           formArgs, XtNumber(formArgs));\r
+  \r
+    for(i = 0; buttonDesc[i].name != NULL; i++) {\r
+       Pixel buttonColor;\r
+       if (!appData.monoMode) {\r
+           vFrom.addr = (caddr_t) buttonDesc[i].color;\r
+           vFrom.size = strlen(buttonDesc[i].color);\r
+           XtConvert(shellWidget, XtRString, &vFrom, XtRPixel, &vTo);\r
+           if (vTo.addr == NULL) {\r
+               buttonColor = (Pixel) -1;\r
+           } else {\r
+               buttonColor = *(Pixel *) vTo.addr;\r
+           }\r
+       }\r
+    \r
+       j = 0;\r
+       XtSetArg(args[j], XtNradioGroup, last); j++;\r
+       XtSetArg(args[j], XtNwidth, 125); j++;\r
+//     XtSetArg(args[j], XtNheight, 16); j++;\r
+       XtSetArg(args[j], XtNfromVert, i == 15 ? NULL : last); j++;\r
+       XtSetArg(args[j], XtNfromHoriz, i < 15 ? NULL : buttonDesc[i-15].handle); j++;\r
+       XtSetArg(args[j], XtNradioData, i+1); j++;\r
+       XtSetArg(args[j], XtNbackground, buttonColor); j++;\r
+       XtSetArg(args[j], XtNstate, gameInfo.variant == buttonDesc[i].variant); j++;\r
+       buttonDesc[i].handle = last =\r
+           XtCreateManagedWidget(buttonDesc[i].name, toggleWidgetClass, form, args, j);\r
+    }\r
+\r
+    j=0;\r
+    XtSetArg(args[j], XtNfromVert, buttonDesc[12].handle);  j++;\r
+    XtSetArg(args[j], XtNfromHoriz, buttonDesc[12].handle);  j++;\r
+    XtSetArg(args[j], XtNheight, 35); j++;\r
+//    XtSetArg(args[j], XtNwidth, 60); j++;\r
+    XtSetArg(args[j], XtNbottom, XtChainBottom);  j++;\r
+    XtSetArg(args[j], XtNtop, XtChainBottom);  j++;\r
+    XtSetArg(args[j], XtNleft, XtChainRight);  j++;\r
+    XtSetArg(args[j], XtNright, XtChainRight);  j++;\r
+    b_cancel= XtCreateManagedWidget(_("CANCEL"), commandWidgetClass, form, args, j);   \r
+    XtAddCallback(b_cancel, XtNcallback, NewVariantPopDown, (XtPointer) 0);\r
+\r
+    j=0;\r
+    XtSetArg(args[j], XtNfromHoriz, b_cancel);  j++;\r
+    XtSetArg(args[j], XtNfromVert, buttonDesc[12].handle);  j++;\r
+    XtSetArg(args[j], XtNheight, 35); j++;\r
+//    XtSetArg(args[j], XtNwidth, 60); j++;\r
+    XtSetArg(args[j], XtNbottom, XtChainBottom);  j++;\r
+    XtSetArg(args[j], XtNtop, XtChainBottom);  j++;\r
+    XtSetArg(args[j], XtNleft, XtChainRight);  j++;\r
+    XtSetArg(args[j], XtNright, XtChainRight);  j++;\r
+    b_ok= XtCreateManagedWidget(_("  OK  "), commandWidgetClass, form, args, j);   \r
+    XtAddCallback(b_ok, XtNcallback, NewVariantCallback, (XtPointer) 0);\r
+\r
+    XtRealizeWidget(popup);\r
+    CatchDeleteWindow(popup, "NewVariantPopDown");\r
+    \r
+    XQueryPointer(xDisplay, xBoardWindow, &root, &child,\r
+                 &x, &y, &win_x, &win_y, &mask);\r
+    \r
+    XtSetArg(args[0], XtNx, x - 10);\r
+    XtSetArg(args[1], XtNy, y - 30);\r
+    XtSetValues(popup, args, 2);\r
+    \r
+    XtPopup(popup, XtGrabExclusive);\r
+    NewVariantUp = True;\r
+}\r
+\r
+void NewVariantProc(w, event, prms, nprms)\r
+     Widget w;\r
+     XEvent *event;\r
+     String *prms;\r
+     Cardinal *nprms;\r
+{\r
+   NewVariantPopUp();\r
+}\r
+\r
+//--------------------------- UCI Menu Popup ------------------------------------------\r
+int UciUp;\r
+Widget UciShell;\r
+\r
+struct UciControl {\r
+  char *name;\r
+  Widget handle;\r
+  void *ptr;\r
+};\r
+\r
+struct UciControl controlDesc[] = {\r
+  {N_("maximum nr of CPUs:"), 0, &appData.smpCores},\r
+  {N_("Polyglot Directory:"), 0, &appData.polyglotDir},\r
+  {N_("Hash Size (MB):"),     0, &appData.defaultHashSize},\r
+  {N_("EGTB Path:"),          0, &appData.defaultPathEGTB},\r
+  {N_("EGTB Cache (MB):"),    0, &appData.defaultCacheSizeEGTB},\r
+  {N_("Polyglot Book:"),      0, &appData.polyglotBook},\r
+  {NULL, 0, NULL},\r
+};\r
+\r
+void UciPopDown()\r
+{\r
+    if (!UciUp) return;\r
+    XtPopdown(UciShell);\r
+    XtDestroyWidget(UciShell);\r
+    UciUp = False;\r
+    ModeHighlight();\r
+}\r
+\r
+void UciCallback(w, client_data, call_data)\r
+     Widget w;\r
+     XtPointer client_data, call_data;\r
+{\r
+    String name;\r
+    Arg args[16];\r
+    char buf[80];\r
+    int oldCores = appData.smpCores, ponder = 0;\r
+    \r
+    XtSetArg(args[0], XtNlabel, &name);\r
+    XtGetValues(w, args, 1);\r
+    \r
+    if (strcmp(name, _("OK")) == 0) {\r
+       int nr, i, j; String name;\r
+       for(i=0; i<6; i++) {\r
+           XtSetArg(args[0], XtNstring, &name);\r
+           XtGetValues(controlDesc[i].handle, args, 1);\r
+           if(i&1) {\r
+               if(name)\r
+                   *(char**) controlDesc[i].ptr = strdup(name);\r
+           } else {\r
+               if(sscanf(name, "%d", &j) == 1) \r
+                   *(int*) controlDesc[i].ptr = j;\r
+           }\r
+       }\r
+       XtSetArg(args[0], XtNstate, &appData.usePolyglotBook);\r
+       XtGetValues(w1, args, 1);\r
+       XtSetArg(args[0], XtNstate, &appData.firstHasOwnBookUCI);\r
+       XtGetValues(w2, args, 1);\r
+       XtSetArg(args[0], XtNstate, &appData.secondHasOwnBookUCI);\r
+       XtGetValues(w3, args, 1);\r
+       XtSetArg(args[0], XtNstate, &ponder);\r
+       XtGetValues(w4, args, 1);\r
+\r
+       // adjust setting in other menu for duplicates \r
+       // (perhaps duplicates should be removed from general Option Menu?)\r
+       XtSetArg(args[0], XtNleftBitmap, ponder ? xMarkPixmap : None);\r
+       XtSetValues(XtNameToWidget(menuBarWidget,\r
+                                  "menuOptions.Ponder Next Move"), args, 1);\r
+\r
+       // make sure changes are sent to first engine by re-initializing it\r
+       // if it was already started pre-emptively at end of previous game\r
+       if(gameMode == BeginningOfGame) Reset(True, True); else {\r
+           // Some changed setting need immediate sending always.\r
+           PonderNextMoveEvent(ponder);\r
+           if(oldCores != appData.smpCores)\r
+               NewSettingEvent(False, "cores", appData.smpCores);\r
+      }\r
+      UciPopDown();\r
+      return;\r
+    }\r
+}\r
+\r
+void UciPopUp()\r
+{\r
+    Arg args[16];\r
+    Widget popup, layout, dialog, edit, form, b_ok, b_cancel, last = NULL, new, upperLeft;\r
+    Window root, child;\r
+    int x, y, i, j;\r
+    int win_x, win_y;\r
+    unsigned int mask;\r
+    char def[80];\r
+    \r
+    i = 0;\r
+    XtSetArg(args[i], XtNresizable, True); i++;\r
+//    XtSetArg(args[i], XtNwidth, 300); i++;\r
+    UciShell = popup =\r
+      XtCreatePopupShell(_("Engine Settings"), transientShellWidgetClass,\r
+                        shellWidget, args, i);\r
+    \r
+    layout =\r
+      XtCreateManagedWidget(layoutName, formWidgetClass, popup,\r
+                           layoutArgs, XtNumber(layoutArgs));\r
+  \r
+    \r
+    form =\r
+      XtCreateManagedWidget("form", formWidgetClass, layout,\r
+                           formArgs, XtNumber(formArgs));\r
+  \r
+    j = 0;\r
+    XtSetArg(args[j], XtNtop, XtChainTop);  j++;\r
+    XtSetArg(args[j], XtNbottom, XtChainTop);  j++;\r
+    XtSetArg(args[j], XtNleft, XtChainLeft);  j++;\r
+//    XtSetArg(args[j], XtNheight, 20); j++;\r
+    for(i = 0; controlDesc[i].name != NULL; i++) {\r
+       j = 3;\r
+       XtSetArg(args[j], XtNfromVert, last); j++;\r
+//     XtSetArg(args[j], XtNwidth, 130); j++;\r
+       XtSetArg(args[j], XtNjustify, XtJustifyLeft); j++;\r
+       XtSetArg(args[j], XtNright, XtChainLeft);  j++;\r
+       XtSetArg(args[j], XtNborderWidth, 0); j++;\r
+       new = XtCreateManagedWidget(controlDesc[i].name, labelWidgetClass, form, args, j);\r
+       if(i==0) upperLeft = new;\r
+\r
+       j = 4;\r
+       XtSetArg(args[j], XtNborderWidth, 1); j++;\r
+       XtSetArg(args[j], XtNeditType, XawtextEdit);  j++;\r
+       XtSetArg(args[j], XtNuseStringInPlace, False);  j++;\r
+       XtSetArg(args[j], XtNdisplayCaret, False);  j++;\r
+       XtSetArg(args[j], XtNright, XtChainRight);  j++;\r
+       XtSetArg(args[j], XtNresizable, True);  j++;\r
+       XtSetArg(args[j], XtNwidth, i&1 ? 245 : 50); j++;\r
+       if(i&1) {\r
+           XtSetArg(args[j], XtNstring, * (char**) controlDesc[i].ptr ? \r
+                                        * (char**) controlDesc[i].ptr : ""); j++;\r
+       } else {\r
+           sprintf(def, "%d", * (int*) controlDesc[i].ptr);\r
+           XtSetArg(args[j], XtNstring, def); j++;\r
+       }\r
+       XtSetArg(args[j], XtNfromHoriz, upperLeft); j++;\r
+       controlDesc[i].handle = last =\r
+           XtCreateManagedWidget("text", asciiTextWidgetClass, form, args, j);\r
+       XtAddEventHandler(last, ButtonPressMask, False, SetFocus, (XtPointer) popup);\r
+    }\r
+\r
+    j=0;\r
+    XtSetArg(args[j], XtNfromHoriz, controlDesc[0].handle);  j++;\r
+    XtSetArg(args[j], XtNbottom, XtChainTop);  j++;\r
+    XtSetArg(args[j], XtNtop, XtChainTop);  j++;\r
+    XtSetArg(args[j], XtNleft, XtChainRight);  j++;\r
+    XtSetArg(args[j], XtNright, XtChainRight);  j++;\r
+    XtSetArg(args[j], XtNstate, appData.ponderNextMove);  j++;\r
+    w4 = XtCreateManagedWidget(_("Ponder"), toggleWidgetClass, form, args, j);   \r
+\r
+    j=0;\r
+    XtSetArg(args[j], XtNfromVert, last);  j++;\r
+    XtSetArg(args[j], XtNbottom, XtChainBottom);  j++;\r
+    XtSetArg(args[j], XtNtop, XtChainBottom);  j++;\r
+    XtSetArg(args[j], XtNleft, XtChainLeft);  j++;\r
+    XtSetArg(args[j], XtNright, XtChainLeft);  j++;\r
+    b_ok = XtCreateManagedWidget(_("OK"), commandWidgetClass, form, args, j);   \r
+    XtAddCallback(b_ok, XtNcallback, UciCallback, (XtPointer) 0);\r
+\r
+    XtSetArg(args[j], XtNfromHoriz, b_ok);  j++;\r
+    b_cancel = XtCreateManagedWidget(_("cancel"), commandWidgetClass, form, args, j);   \r
+    XtAddCallback(b_cancel, XtNcallback, UciPopDown, (XtPointer) 0);\r
+\r
+    j = 5;\r
+    XtSetArg(args[j], XtNfromHoriz, upperLeft);  j++;\r
+    XtSetArg(args[j], XtNstate, appData.usePolyglotBook);  j++;\r
+    w1 = XtCreateManagedWidget(_(" use book "), toggleWidgetClass, form, args, j);   \r
+//    XtAddCallback(w1, XtNcallback, UciCallback, (XtPointer) 0);\r
+\r
+    j = 5;\r
+    XtSetArg(args[j], XtNfromHoriz, w1);  j++;\r
+    XtSetArg(args[j], XtNstate, appData.firstHasOwnBookUCI);  j++;\r
+    w2 = XtCreateManagedWidget(_("own book 1"), toggleWidgetClass, form, args, j);   \r
+//    XtAddCallback(w2, XtNcallback, UciCallback, (XtPointer) 0);\r
+\r
+    j = 5;\r
+    XtSetArg(args[j], XtNfromHoriz, w2);  j++;\r
+    XtSetArg(args[j], XtNstate, appData.secondHasOwnBookUCI);  j++;\r
+    w3 = XtCreateManagedWidget(_("own book 2"), toggleWidgetClass, form, args, j);   \r
+//    XtAddCallback(w3, XtNcallback, UciCallback, (XtPointer) 0);\r
+\r
+    XtRealizeWidget(popup);\r
+    CatchDeleteWindow(popup, "UciPopDown");\r
+    \r
+    XQueryPointer(xDisplay, xBoardWindow, &root, &child,\r
+                 &x, &y, &win_x, &win_y, &mask);\r
+    \r
+    XtSetArg(args[0], XtNx, x - 10);\r
+    XtSetArg(args[1], XtNy, y - 30);\r
+    XtSetValues(popup, args, 2);\r
+    \r
+    XtPopup(popup, XtGrabExclusive);\r
+    UciUp = True;\r
+\r
+    previous = NULL;\r
+    SetFocus(controlDesc[2].handle, popup, (XEvent*) NULL, False);\r
+//    XtSetKeyboardFocus(popup, controlDesc[1].handle);\r
+}\r
+\r
+void UciMenuProc(w, event, prms, nprms)\r
+     Widget w;\r
+     XEvent *event;\r
+     String *prms;\r
+     Cardinal *nprms;\r
+{\r
+   UciPopUp();\r
+}\r
+\r
+//--------------------------- Engine-specific options menu ----------------------------------\r
+\r
+int SettingsUp;\r
+Widget SettingsShell;\r
+int values[MAX_OPTIONS];\r
+ChessProgramState *currentCps;\r
+\r
+void SettingsPopDown()\r
+{\r
+    if (!SettingsUp) return;\r
+    XtPopdown(SettingsShell);\r
+    XtDestroyWidget(SettingsShell);\r
+    SettingsUp = False;\r
+    ModeHighlight();\r
+}\r
+\r
+void SpinCallback(w, client_data, call_data)\r
+     Widget w;\r
+     XtPointer client_data, call_data;\r
+{\r
+    String name, val;\r
+    Widget w2;\r
+    Arg args[16];\r
+    char buf[MSG_SIZ];\r
+    int i, j;\r
+    \r
+    XtSetArg(args[0], XtNlabel, &name);\r
+    XtGetValues(w, args, 1);\r
+    \r
+    j = 0;\r
+    XtSetArg(args[0], XtNstring, &val);\r
+    XtGetValues(currentCps->option[(int)client_data].handle, args, 1);\r
+    sscanf(val, "%d", &j);\r
+    if (strcmp(name, "+") == 0) {\r
+       if(++j > currentCps->option[(int)client_data].max) return;\r
+    } else\r
+    if (strcmp(name, "-") == 0) {\r
+       if(--j < currentCps->option[(int)client_data].min) return;\r
+    } else return;\r
+    sprintf(buf, "%d", j);\r
+    XtSetArg(args[0], XtNstring, buf);\r
+    XtSetValues(currentCps->option[(int)client_data].handle, args, 1);\r
+}\r
+\r
+void SettingsCallback(w, client_data, call_data)\r
+     Widget w;\r
+     XtPointer client_data, call_data;\r
+{\r
+    String name, val;\r
+    Widget w2;\r
+    Arg args[16];\r
+    char buf[MSG_SIZ];\r
+    int i, j;\r
+    \r
+    XtSetArg(args[0], XtNlabel, &name);\r
+    XtGetValues(w, args, 1);\r
+    \r
+    if (strcmp(name, _("cancel")) == 0) {\r
+        SettingsPopDown();\r
+        return;\r
+    }\r
+    if (strcmp(name, _("OK")) == 0 || (int)client_data) { // save buttons imply OK\r
+       int nr;\r
+\r
+       for(i=0; i<currentCps->nrOptions; i++) { // send all options that had to be OK-ed to engine\r
+           switch(currentCps->option[i].type) {\r
+               case TextBox:\r
+                   XtSetArg(args[0], XtNstring, &val);\r
+                   XtGetValues(currentCps->option[i].handle, args, 1);\r
+                   if(strcmp(currentCps->option[i].textValue, val)) {\r
+                       strcpy(currentCps->option[i].textValue, val);\r
+                       sprintf(buf, _("option %s %s\n"), currentCps->option[i].name, val);\r
+                       SendToProgram(buf, currentCps);\r
+                   }\r
+                   break;\r
+               case Spin:\r
+                   XtSetArg(args[0], XtNstring, &val);\r
+                   XtGetValues(currentCps->option[i].handle, args, 1);\r
+                   sscanf(val, "%d", &j);\r
+                   if(j > currentCps->option[i].max) j = currentCps->option[i].max;\r
+                   if(j < currentCps->option[i].min) j = currentCps->option[i].min;\r
+                   if(currentCps->option[i].value != j) {\r
+                       currentCps->option[i].value = j;\r
+                       sprintf(buf, _("option %s %d\n"), currentCps->option[i].name, j);\r
+                       SendToProgram(buf, currentCps);\r
+                   }\r
+                   break;\r
+               case CheckBox:\r
+                   j = 0;\r
+                   XtSetArg(args[0], XtNstate, &j);\r
+                   XtGetValues(currentCps->option[i].handle, args, 1);\r
+                   if(currentCps->option[i].value != j) {\r
+                       currentCps->option[i].value = j;\r
+                       sprintf(buf, _("option %s %d\n"), currentCps->option[i].name, j);\r
+                       SendToProgram(buf, currentCps);\r
+                   }\r
+                   break;\r
+               case ComboBox:\r
+                   if(currentCps->option[i].value != values[i]) {\r
+                       currentCps->option[i].value = values[i];\r
+                       sprintf(buf, _("option %s %s\n"), currentCps->option[i].name, \r
+                               ((char**)currentCps->option[i].textValue)[values[i]]);\r
+                       SendToProgram(buf, currentCps);\r
+                   }\r
+                   break;\r
+           }\r
+       }\r
+       if((int)client_data) { // send save-button command to engine\r
+           sprintf(buf, _("option %s\n"), name);\r
+           SendToProgram(buf, currentCps);\r
+       }\r
+        SettingsPopDown();\r
+        return;\r
+    }\r
+    sprintf(buf, _("option %s\n"), name);\r
+    SendToProgram(buf, currentCps);\r
+}\r
+\r
+void ComboSelect(w, addr, index) // callback for all combo items\r
      Widget w;\r
      caddr_t addr;\r
      caddr_t index;\r
-{
-    Arg args[16];
-    int i = ((int)addr)>>8;
-    int j = 255 & (int) addr;
-
-    values[i] = j; // store in temporary, for transfer at OK
-    XtSetArg(args[0], XtNlabel, ((char**)currentCps->option[i].textValue)[j]);
+{\r
+    Arg args[16];\r
+    int i = ((int)addr)>>8;\r
+    int j = 255 & (int) addr;\r
+\r
+    values[i] = j; // store in temporary, for transfer at OK\r
+    XtSetArg(args[0], XtNlabel, ((char**)currentCps->option[i].textValue)[j]);\r
     XtSetValues(currentCps->option[i].handle, args, 1);\r
-}
-
+}\r
+\r
 void CreateComboPopup(parent, name, n, mb)\r
-     Widget parent;
-     String name;
+     Widget parent;\r
+     String name;\r
      int n;\r
      char *mb[];\r
 {\r
@@ -1439,9 +1448,9 @@ void CreateComboPopup(parent, name, n, mb)
     menu = XtCreatePopupShell(name, simpleMenuWidgetClass,\r
                              parent, NULL, 0);\r
     j = 0;\r
-    XtSetArg(args[j], XtNwidth, 100);  j++;
-//    XtSetArg(args[j], XtNright, XtChainRight);  j++;
-    while (mb[i] != NULL) {
+    XtSetArg(args[j], XtNwidth, 100);  j++;\r
+//    XtSetArg(args[j], XtNright, XtChainRight);  j++;\r
+    while (mb[i] != NULL) {\r
            entry = XtCreateManagedWidget(mb[i], smeBSBObjectClass,\r
                                          menu, args, j);\r
            XtAddCallback(entry, XtNcallback,\r
@@ -1451,273 +1460,273 @@ void CreateComboPopup(parent, name, n, mb)
     }\r
 }      \r
 \r
-void SettingsPopUp(ChessProgramState *cps)
-{
-    Arg args[16];
-    Widget popup, layout, dialog, edit, form, oldform, last, b_ok, b_cancel;
-    Window root, child;
-    int x, y, i, j;
-    int win_x, win_y;
-    unsigned int mask;
-    char def[80], *p, *q;
-
-    // to do: start up second engine if needed
-    if(!cps->initDone || !cps->nrOptions) return; // nothing to be done
-    currentCps = cps;
-
-    i = 0;
-    XtSetArg(args[i], XtNresizable, True); i++;
-    SettingsShell = popup =
-      XtCreatePopupShell("Settings Menu", transientShellWidgetClass,
-                        shellWidget, args, i);
-    
-    layout =
-      XtCreateManagedWidget(layoutName, formWidgetClass, popup,
-                           layoutArgs, XtNumber(layoutArgs));
-  
-    form =
-      XtCreateManagedWidget(layoutName, formWidgetClass, layout,
-                           formArgs, XtNumber(formArgs));
-  
-    last = NULL;
-    for(i=0; i<cps->nrOptions; i++) {
-       Widget box;
-       switch(cps->option[i].type) {
-         case Spin:
-           sprintf(def, "%d", cps->option[i].value);
-         case TextBox:
-           j=0;
-           XtSetArg(args[j], XtNfromVert, last);  j++;
-           XtSetArg(args[j], XtNborderWidth, 0);  j++;
-           XtSetArg(args[j], XtNjustify, XtJustifyLeft);  j++;
-           dialog = XtCreateManagedWidget(cps->option[i].name, labelWidgetClass, form, args, j);   
-           j=0;
-           XtSetArg(args[j], XtNfromVert, last);  j++;
-           XtSetArg(args[j], XtNfromHoriz, dialog);  j++;
-           XtSetArg(args[j], XtNborderWidth, 1); j++;
-           XtSetArg(args[j], XtNwidth, cps->option[i].type == Spin ? 40 : 100); j++;
-           XtSetArg(args[j], XtNeditType, XawtextEdit);  j++;
-           XtSetArg(args[j], XtNuseStringInPlace, False);  j++;
-           XtSetArg(args[j], XtNdisplayCaret, False);  j++;
-           XtSetArg(args[j], XtNright, XtChainRight);  j++;
-           XtSetArg(args[j], XtNresizable, True);  j++;
-           XtSetArg(args[j], XtNstring, cps->option[i].type==Spin ? def : cps->option[i].textValue);  j++;
-           edit = last;
-           cps->option[i].handle = (void*)
-               (last = XtCreateManagedWidget("text", asciiTextWidgetClass, form, args, j));   
-           XtAddEventHandler(box, ButtonPressMask, False, SetFocus, (XtPointer) popup);
-           if(cps->option[i].type == TextBox) break;
-           // add increment and decrement controls for spin
-           j=0;
-           XtSetArg(args[j], XtNfromVert, edit);  j++;
-           XtSetArg(args[j], XtNfromHoriz, box);  j++;
-           XtSetArg(args[j], XtNheight, 10);  j++;
-           XtSetArg(args[j], XtNwidth, 20);  j++;
-           edit = XtCreateManagedWidget("+", commandWidgetClass, form, args, j);
-           XtAddCallback(edit, XtNcallback, SpinCallback, (XtPointer) i);
-           j=0;
-           XtSetArg(args[j], XtNfromVert, edit);  j++;
-           XtSetArg(args[j], XtNfromHoriz, last);  j++;
-           XtSetArg(args[j], XtNheight, 10);  j++;
-           XtSetArg(args[j], XtNwidth, 20);  j++;
-           last = XtCreateManagedWidget("-", commandWidgetClass, form, args, j);
-           XtAddCallback(last, XtNcallback, SpinCallback, (XtPointer) i);
-           break;
-         case CheckBox:
-           j=0;
-           XtSetArg(args[j], XtNfromVert, last);  j++;
-           XtSetArg(args[j], XtNwidth, 10);  j++;
-           XtSetArg(args[j], XtNheight, 10);  j++;
-           XtSetArg(args[j], XtNstate, cps->option[i].value);  j++;
-           cps->option[i].handle = (void*) 
-               (dialog = XtCreateManagedWidget(" ", toggleWidgetClass, form, args, j));   
-           j=0;
-           XtSetArg(args[j], XtNfromVert, last);  j++;
-           XtSetArg(args[j], XtNfromHoriz, dialog);  j++;
-           XtSetArg(args[j], XtNborderWidth, 0);  j++;
-           XtSetArg(args[j], XtNjustify, XtJustifyLeft);  j++;
-           last = XtCreateManagedWidget(cps->option[i].name, labelWidgetClass, form, args, j);
-           break;
-         case SaveButton:
-         case Button:
-           j=0;
-           XtSetArg(args[j], XtNfromVert, last);  j++;
-           XtSetArg(args[j], XtNstate, cps->option[i].value);  j++;
-           cps->option[i].handle = (void*) 
-               (last = XtCreateManagedWidget(cps->option[i].name, commandWidgetClass, form, args, j));   
-           XtAddCallback(last, XtNcallback, SettingsCallback, (XtPointer) (cps->option[i].type == SaveButton));
-           break;
-         case ComboBox:
-           j=0;
-           XtSetArg(args[j], XtNfromVert, last);  j++;
-           XtSetArg(args[j], XtNborderWidth, 0);  j++;
-           XtSetArg(args[j], XtNjustify, XtJustifyLeft);  j++;
-           dialog = XtCreateManagedWidget(cps->option[i].name, labelWidgetClass, form, args, j);
-
-           j=0;
-           XtSetArg(args[j], XtNfromVert, last);  j++;
-           XtSetArg(args[j], XtNfromHoriz, dialog);  j++;
-           XtSetArg(args[j], XtNwidth, 100);  j++;
-           XtSetArg(args[j], XtNmenuName, XtNewString(cps->option[i].name));  j++;
-           XtSetArg(args[j], XtNlabel, ((char**)cps->option[i].textValue)[cps->option[i].value]);  j++;
-           cps->option[i].handle = (void*) 
-               (last = XtCreateManagedWidget(" ", menuButtonWidgetClass, form, args, j));   
-           CreateComboPopup(last, cps->option[i].name, i, (char **) cps->option[i].textValue);
-           values[i] = cps->option[i].value;
-           break;
-       }
-    }
-
-    j=0;
-    XtSetArg(args[j], XtNfromVert, last);  j++;
-    XtSetArg(args[j], XtNbottom, XtChainBottom);  j++;
-    XtSetArg(args[j], XtNtop, XtChainBottom);  j++;
-    XtSetArg(args[j], XtNleft, XtChainLeft);  j++;
-    XtSetArg(args[j], XtNright, XtChainLeft);  j++;
-    b_ok = XtCreateManagedWidget("OK", commandWidgetClass, form, args, j);   
-    XtAddCallback(b_ok, XtNcallback, SettingsCallback, (XtPointer) 0);
-
-    XtSetArg(args[j], XtNfromHoriz, b_ok);  j++;
-    b_cancel = XtCreateManagedWidget("cancel", commandWidgetClass, form, args, j);   
-    XtAddCallback(b_cancel, XtNcallback, SettingsPopDown, (XtPointer) 0);
-
-    XtRealizeWidget(popup);
-    CatchDeleteWindow(popup, "SettingsPopDown");
-    
-    XQueryPointer(xDisplay, xBoardWindow, &root, &child,
-                 &x, &y, &win_x, &win_y, &mask);
-    
-    XtSetArg(args[0], XtNx, x - 10);
-    XtSetArg(args[1], XtNy, y - 30);
-    XtSetValues(popup, args, 2);
-    
-    XtPopup(popup, XtGrabExclusive);
-    SettingsUp = True;
-
-    previous = NULL;
-    SetFocus(edit, popup, (XEvent*) NULL, False);
-}
-
-void FirstSettingsProc(w, event, prms, nprms)
-     Widget w;
-     XEvent *event;
-     String *prms;
-     Cardinal *nprms;
-{
-   SettingsPopUp(&first);
-}
-
-void SecondSettingsProc(w, event, prms, nprms)
-     Widget w;
-     XEvent *event;
-     String *prms;
-     Cardinal *nprms;
-{
-   SettingsPopUp(&second);
-}
-
-//--------------------------- General Popup for Cloning ----------------------------------
-#if 0
-int XXXUp;
-Widget XXXShell;
-
-void XXXPopDown()
-{
-    if (!XXXUp) return;
-    XtPopdown(XXXShell);
-    XtDestroyWidget(XXXShell);
-    XXXUp = False;
-    ModeHighlight();
-}
-
-void XXXCallback(w, client_data, call_data)
-     Widget w;
-     XtPointer client_data, call_data;
-{
-    String name;
-    Widget w2;
-    Arg args[16];
-    char buf[80];
-    
-    XtSetArg(args[0], XtNlabel, &name);
-    XtGetValues(w, args, 1);
-    
-    if (strcmp(name, "cancel") == 0) {
-        XXXPopDown();
-        return;
-    }
-    if (strcmp(name, "ok") == 0) {
-       int nr; String name;
-        name = XawDialogGetValueString(w2 = XtParent(w));
-       if(sscanf(name ,"%d",&nr) != 1) {
-           sprintf(buf, "%d", appData.defaultFrcPosition);
-           XtSetArg(args[0],XtNvalue, buf); // erase bad (non-numeric) value
-           XtSetValues(w2, args, 1);
-           return;
-       }
-        XXXPopDown();
-        return;
-    }
-}
-
-void XXXPopUp()
-{
-    Arg args[16];
-    Widget popup, layout, dialog, edit;
-    Window root, child;
-    int x, y, i;
-    int win_x, win_y;
-    unsigned int mask;
-    char def[80];
-    
-    i = 0;
-    XtSetArg(args[i], XtNresizable, True); i++;
-    XtSetArg(args[i], XtNwidth, DIALOG_SIZE); i++;
-    XXXShell = popup =
-      XtCreatePopupShell("XXX Menu", transientShellWidgetClass,
-                        shellWidget, args, i);
-    
-    layout =
-      XtCreateManagedWidget(layoutName, formWidgetClass, popup,
-                           layoutArgs, XtNumber(layoutArgs));
-  
-    sprintf(def, "%d\n", appData.defaultFrcPosition);
-    i = 0;
-    XtSetArg(args[i], XtNlabel, ""); i++;
-    XtSetArg(args[i], XtNvalue, def); i++;
-    XtSetArg(args[i], XtNborderWidth, 0); i++;
-    dialog = XtCreateManagedWidget("XXX", dialogWidgetClass,
-                                  layout, args, i);
-    
-    XawDialogAddButton(dialog, "ok", XXXCallback, (XtPointer) dialog);
-    XawDialogAddButton(dialog, "cancel", XXXCallback, (XtPointer) dialog);
-    
-    XtRealizeWidget(popup);
-    CatchDeleteWindow(popup, "XXXPopDown");
-    
-    XQueryPointer(xDisplay, xBoardWindow, &root, &child,
-                 &x, &y, &win_x, &win_y, &mask);
-    
-    XtSetArg(args[0], XtNx, x - 10);
-    XtSetArg(args[1], XtNy, y - 30);
-    XtSetValues(popup, args, 2);
-    
-    XtPopup(popup, XtGrabExclusive);
-    XXXUp = True;
-    
-    edit = XtNameToWidget(dialog, "*value");
-
-    previous = NULL;
-    SetFocus(engThreshold, popup, (XEvent*) NULL, False);
-}
-
-void XXXMenuProc(w, event, prms, nprms)
-     Widget w;
-     XEvent *event;
-     String *prms;
-     Cardinal *nprms;
-{
-   XXXPopUp();
-}
-#endif
-
+void SettingsPopUp(ChessProgramState *cps)\r
+{\r
+    Arg args[16];\r
+    Widget popup, layout, dialog, edit, form, oldform, last, b_ok, b_cancel;\r
+    Window root, child;\r
+    int x, y, i, j;\r
+    int win_x, win_y;\r
+    unsigned int mask;\r
+    char def[80], *p, *q;\r
+\r
+    // to do: start up second engine if needed\r
+    if(!cps->initDone || !cps->nrOptions) return; // nothing to be done\r
+    currentCps = cps;\r
+\r
+    i = 0;\r
+    XtSetArg(args[i], XtNresizable, True); i++;\r
+    SettingsShell = popup =\r
+      XtCreatePopupShell(_("Settings Menu"), transientShellWidgetClass,\r
+                        shellWidget, args, i);\r
+    \r
+    layout =\r
+      XtCreateManagedWidget(layoutName, formWidgetClass, popup,\r
+                           layoutArgs, XtNumber(layoutArgs));\r
+  \r
+    form =\r
+      XtCreateManagedWidget(layoutName, formWidgetClass, layout,\r
+                           formArgs, XtNumber(formArgs));\r
+  \r
+    last = NULL;\r
+    for(i=0; i<cps->nrOptions; i++) {\r
+       Widget box;\r
+       switch(cps->option[i].type) {\r
+         case Spin:\r
+           sprintf(def, "%d", cps->option[i].value);\r
+         case TextBox:\r
+           j=0;\r
+           XtSetArg(args[j], XtNfromVert, last);  j++;\r
+           XtSetArg(args[j], XtNborderWidth, 0);  j++;\r
+           XtSetArg(args[j], XtNjustify, XtJustifyLeft);  j++;\r
+           dialog = XtCreateManagedWidget(cps->option[i].name, labelWidgetClass, form, args, j);   \r
+           j=0;\r
+           XtSetArg(args[j], XtNfromVert, last);  j++;\r
+           XtSetArg(args[j], XtNfromHoriz, dialog);  j++;\r
+           XtSetArg(args[j], XtNborderWidth, 1); j++;\r
+           XtSetArg(args[j], XtNwidth, cps->option[i].type == Spin ? 40 : 100); j++;\r
+           XtSetArg(args[j], XtNeditType, XawtextEdit);  j++;\r
+           XtSetArg(args[j], XtNuseStringInPlace, False);  j++;\r
+           XtSetArg(args[j], XtNdisplayCaret, False);  j++;\r
+           XtSetArg(args[j], XtNright, XtChainRight);  j++;\r
+           XtSetArg(args[j], XtNresizable, True);  j++;\r
+           XtSetArg(args[j], XtNstring, cps->option[i].type==Spin ? def : cps->option[i].textValue);  j++;\r
+           edit = last;\r
+           cps->option[i].handle = (void*)\r
+               (last = XtCreateManagedWidget("text", asciiTextWidgetClass, form, args, j));   \r
+           XtAddEventHandler(box, ButtonPressMask, False, SetFocus, (XtPointer) popup);\r
+           if(cps->option[i].type == TextBox) break;\r
+           // add increment and decrement controls for spin\r
+           j=0;\r
+           XtSetArg(args[j], XtNfromVert, edit);  j++;\r
+           XtSetArg(args[j], XtNfromHoriz, box);  j++;\r
+           XtSetArg(args[j], XtNheight, 10);  j++;\r
+           XtSetArg(args[j], XtNwidth, 20);  j++;\r
+           edit = XtCreateManagedWidget("+", commandWidgetClass, form, args, j);\r
+           XtAddCallback(edit, XtNcallback, SpinCallback, (XtPointer) i);\r
+           j=0;\r
+           XtSetArg(args[j], XtNfromVert, edit);  j++;\r
+           XtSetArg(args[j], XtNfromHoriz, last);  j++;\r
+           XtSetArg(args[j], XtNheight, 10);  j++;\r
+           XtSetArg(args[j], XtNwidth, 20);  j++;\r
+           last = XtCreateManagedWidget("-", commandWidgetClass, form, args, j);\r
+           XtAddCallback(last, XtNcallback, SpinCallback, (XtPointer) i);\r
+           break;\r
+         case CheckBox:\r
+           j=0;\r
+           XtSetArg(args[j], XtNfromVert, last);  j++;\r
+           XtSetArg(args[j], XtNwidth, 10);  j++;\r
+           XtSetArg(args[j], XtNheight, 10);  j++;\r
+           XtSetArg(args[j], XtNstate, cps->option[i].value);  j++;\r
+           cps->option[i].handle = (void*) \r
+               (dialog = XtCreateManagedWidget(" ", toggleWidgetClass, form, args, j));   \r
+           j=0;\r
+           XtSetArg(args[j], XtNfromVert, last);  j++;\r
+           XtSetArg(args[j], XtNfromHoriz, dialog);  j++;\r
+           XtSetArg(args[j], XtNborderWidth, 0);  j++;\r
+           XtSetArg(args[j], XtNjustify, XtJustifyLeft);  j++;\r
+           last = XtCreateManagedWidget(cps->option[i].name, labelWidgetClass, form, args, j);\r
+           break;\r
+         case SaveButton:\r
+         case Button:\r
+           j=0;\r
+           XtSetArg(args[j], XtNfromVert, last);  j++;\r
+           XtSetArg(args[j], XtNstate, cps->option[i].value);  j++;\r
+           cps->option[i].handle = (void*) \r
+               (last = XtCreateManagedWidget(cps->option[i].name, commandWidgetClass, form, args, j));   \r
+           XtAddCallback(last, XtNcallback, SettingsCallback, (XtPointer) (cps->option[i].type == SaveButton));\r
+           break;\r
+         case ComboBox:\r
+           j=0;\r
+           XtSetArg(args[j], XtNfromVert, last);  j++;\r
+           XtSetArg(args[j], XtNborderWidth, 0);  j++;\r
+           XtSetArg(args[j], XtNjustify, XtJustifyLeft);  j++;\r
+           dialog = XtCreateManagedWidget(cps->option[i].name, labelWidgetClass, form, args, j);\r
+\r
+           j=0;\r
+           XtSetArg(args[j], XtNfromVert, last);  j++;\r
+           XtSetArg(args[j], XtNfromHoriz, dialog);  j++;\r
+           XtSetArg(args[j], XtNwidth, 100);  j++;\r
+           XtSetArg(args[j], XtNmenuName, XtNewString(cps->option[i].name));  j++;\r
+           XtSetArg(args[j], XtNlabel, ((char**)cps->option[i].textValue)[cps->option[i].value]);  j++;\r
+           cps->option[i].handle = (void*) \r
+               (last = XtCreateManagedWidget(" ", menuButtonWidgetClass, form, args, j));   \r
+           CreateComboPopup(last, cps->option[i].name, i, (char **) cps->option[i].textValue);\r
+           values[i] = cps->option[i].value;\r
+           break;\r
+       }\r
+    }\r
+\r
+    j=0;\r
+    XtSetArg(args[j], XtNfromVert, last);  j++;\r
+    XtSetArg(args[j], XtNbottom, XtChainBottom);  j++;\r
+    XtSetArg(args[j], XtNtop, XtChainBottom);  j++;\r
+    XtSetArg(args[j], XtNleft, XtChainLeft);  j++;\r
+    XtSetArg(args[j], XtNright, XtChainLeft);  j++;\r
+    b_ok = XtCreateManagedWidget(_("OK"), commandWidgetClass, form, args, j);   \r
+    XtAddCallback(b_ok, XtNcallback, SettingsCallback, (XtPointer) 0);\r
+\r
+    XtSetArg(args[j], XtNfromHoriz, b_ok);  j++;\r
+    b_cancel = XtCreateManagedWidget(_("cancel"), commandWidgetClass, form, args, j);   \r
+    XtAddCallback(b_cancel, XtNcallback, SettingsPopDown, (XtPointer) 0);\r
+\r
+    XtRealizeWidget(popup);\r
+    CatchDeleteWindow(popup, "SettingsPopDown");\r
+    \r
+    XQueryPointer(xDisplay, xBoardWindow, &root, &child,\r
+                 &x, &y, &win_x, &win_y, &mask);\r
+    \r
+    XtSetArg(args[0], XtNx, x - 10);\r
+    XtSetArg(args[1], XtNy, y - 30);\r
+    XtSetValues(popup, args, 2);\r
+    \r
+    XtPopup(popup, XtGrabExclusive);\r
+    SettingsUp = True;\r
+\r
+    previous = NULL;\r
+    SetFocus(edit, popup, (XEvent*) NULL, False);\r
+}\r
+\r
+void FirstSettingsProc(w, event, prms, nprms)\r
+     Widget w;\r
+     XEvent *event;\r
+     String *prms;\r
+     Cardinal *nprms;\r
+{\r
+   SettingsPopUp(&first);\r
+}\r
+\r
+void SecondSettingsProc(w, event, prms, nprms)\r
+     Widget w;\r
+     XEvent *event;\r
+     String *prms;\r
+     Cardinal *nprms;\r
+{\r
+   SettingsPopUp(&second);\r
+}\r
+\r
+//--------------------------- General Popup for Cloning ----------------------------------\r
+#if 0\r
+int XXXUp;\r
+Widget XXXShell;\r
+\r
+void XXXPopDown()\r
+{\r
+    if (!XXXUp) return;\r
+    XtPopdown(XXXShell);\r
+    XtDestroyWidget(XXXShell);\r
+    XXXUp = False;\r
+    ModeHighlight();\r
+}\r
+\r
+void XXXCallback(w, client_data, call_data)\r
+     Widget w;\r
+     XtPointer client_data, call_data;\r
+{\r
+    String name;\r
+    Widget w2;\r
+    Arg args[16];\r
+    char buf[80];\r
+    \r
+    XtSetArg(args[0], XtNlabel, &name);\r
+    XtGetValues(w, args, 1);\r
+    \r
+    if (strcmp(name, _("cancel")) == 0) {\r
+        XXXPopDown();\r
+        return;\r
+    }\r
+    if (strcmp(name, _("ok")) == 0) {\r
+       int nr; String name;\r
+        name = XawDialogGetValueString(w2 = XtParent(w));\r
+       if(sscanf(name ,"%d",&nr) != 1) {\r
+           sprintf(buf, "%d", appData.defaultFrcPosition);\r
+           XtSetArg(args[0],XtNvalue, buf); // erase bad (non-numeric) value\r
+           XtSetValues(w2, args, 1);\r
+           return;\r
+       }\r
+        XXXPopDown();\r
+        return;\r
+    }\r
+}\r
+\r
+void XXXPopUp()\r
+{\r
+    Arg args[16];\r
+    Widget popup, layout, dialog, edit;\r
+    Window root, child;\r
+    int x, y, i;\r
+    int win_x, win_y;\r
+    unsigned int mask;\r
+    char def[80];\r
+    \r
+    i = 0;\r
+    XtSetArg(args[i], XtNresizable, True); i++;\r
+    XtSetArg(args[i], XtNwidth, DIALOG_SIZE); i++;\r
+    XXXShell = popup =\r
+      XtCreatePopupShell(_("XXX Menu"), transientShellWidgetClass,\r
+                        shellWidget, args, i);\r
+    \r
+    layout =\r
+      XtCreateManagedWidget(layoutName, formWidgetClass, popup,\r
+                           layoutArgs, XtNumber(layoutArgs));\r
+  \r
+    sprintf(def, "%d\n", appData.defaultFrcPosition);\r
+    i = 0;\r
+    XtSetArg(args[i], XtNlabel, ""); i++;\r
+    XtSetArg(args[i], XtNvalue, def); i++;\r
+    XtSetArg(args[i], XtNborderWidth, 0); i++;\r
+    dialog = XtCreateManagedWidget("XXX", dialogWidgetClass,\r
+                                  layout, args, i);\r
+    \r
+    XawDialogAddButton(dialog, _("ok"), XXXCallback, (XtPointer) dialog);\r
+    XawDialogAddButton(dialog, _("cancel"), XXXCallback, (XtPointer) dialog);\r
+    \r
+    XtRealizeWidget(popup);\r
+    CatchDeleteWindow(popup, "XXXPopDown");\r
+    \r
+    XQueryPointer(xDisplay, xBoardWindow, &root, &child,\r
+                 &x, &y, &win_x, &win_y, &mask);\r
+    \r
+    XtSetArg(args[0], XtNx, x - 10);\r
+    XtSetArg(args[1], XtNy, y - 30);\r
+    XtSetValues(popup, args, 2);\r
+    \r
+    XtPopup(popup, XtGrabExclusive);\r
+    XXXUp = True;\r
+    \r
+    edit = XtNameToWidget(dialog, "*value");\r
+\r
+    previous = NULL;\r
+    SetFocus(engThreshold, popup, (XEvent*) NULL, False);\r
+}\r
+\r
+void XXXMenuProc(w, event, prms, nprms)\r
+     Widget w;\r
+     XEvent *event;\r
+     String *prms;\r
+     Cardinal *nprms;\r
+{\r
+   XXXPopUp();\r
+}\r
+#endif\r
+\r
diff --git a/zippy.c b/zippy.c
index c77276f..9170000 100644 (file)
--- a/zippy.c
+++ b/zippy.c
@@ -88,13 +88,16 @@ extern char *getenv();
 #include "backend.h"\r
 #include "backendz.h"\r
 \r
-char *SendMoveToBookUser P((int nr, ChessProgramState *cps, int initial)); // [HGM] book
-
+char *SendMoveToBookUser P((int nr, ChessProgramState *cps, int initial)); // [HGM] book\r
+\r
 static char zippyPartner[MSG_SIZ];\r
 static char zippyLastOpp[MSG_SIZ];\r
 static int zippyConsecGames;\r
 static time_t zippyLastGameEnd;\r
 \r
+extern void mysrandom(unsigned int seed);\r
+extern int myrandom(void);\r
+\r
 void ZippyInit()\r
 {\r
     char *p;\r
@@ -229,7 +232,8 @@ char *swifties[] = {
     "i enthuses:", "i entreats:", "i enunciates:", "i eulogizes:",\r
     "i exclaims:", "i execrates:", "i exhorts:", "i expatiates:",\r
     "i explains:", "i explicates:", "i explodes:", "i exposes:",\r
-    "i exposits:", "i expounds:", "i expresses:", "i extols:",\r
+    "i exposits:", "i expostulates: ",\r
+    "i expounds:", "i expresses:", "i extols:",\r
     "i exults:", "i fantasizes:", "i fibs:", "i filibusters:",\r
     "i flatters:", "i flutes:", "i fools:", "i free-associates:",\r
     "i fulminates:", "i gabbles:", "i gabs:", "i gasps:",\r
@@ -781,6 +785,9 @@ void ZippyHandleChallenge(srated, swild, sbase, sincrement, opponent)
     base = atoi(sbase);\r
     increment = atoi(sincrement);\r
 \r
+    /* [DM] If icsAnalyzeEngine active we don't accept automatic games */\r
+    if (appData.icsActive && appData.icsEngineAnalyze) return;\r
+\r
     /* If desired, you can insert more code here to decline matches\r
        based on rated, variant, base, and increment, but it is\r
        easier to use the ICS formula feature instead. */\r
@@ -877,8 +884,7 @@ int ZippyMatch(buf, i)
           before our own name. */\r
        if(star_match[8] == NULL || star_match[8][0] == 0) // [HGM] chessd: open-source ICS has file on next line\r
             ZippyHandleChallenge(star_match[4], star_match[5],\r
-                            star_match[6], star_match[7],\r
-                            StripHighlightAndTitle(star_match[0]));\r
+                            star_match[6], star_match[7],                           StripHighlightAndTitle(star_match[0]));\r
        else ZippyHandleChallenge(star_match[4], star_match[8],\r
                             star_match[6], star_match[7],\r
                             StripHighlightAndTitle(star_match[0]));\r
@@ -915,11 +921,20 @@ int ZippyMatch(buf, i)
        return TRUE;\r
     }\r
 \r
-    if (looking_at(buf, i, "offers you a draw")) {\r
-        if (first.sendDrawOffers && first.initDone) {\r
-           SendToProgram("draw\n", &first);\r
-       }\r
-       return TRUE;\r
+\r
+    if (ics_type == ICS_ICC) { // [DM]\r
+        if (looking_at(buf, i, "Your opponent offers you a draw")) {\r
+            if (first.sendDrawOffers && first.initDone)\r
+                SendToProgram("draw\n", &first);\r
+            return TRUE;\r
+        }\r
+    } else {\r
+        if (looking_at(buf, i, "offers you a draw")) {\r
+            if (first.sendDrawOffers && first.initDone) {\r
+                SendToProgram("draw\n", &first);\r
+            }\r
+            return TRUE;\r
+        }\r
     }\r
 \r
     if (looking_at(buf, i, "requests that the game be aborted") ||\r
@@ -966,7 +981,7 @@ void ZippyFirstBoard(moveNum, basetime, increment)
     char buf[MSG_SIZ];\r
     int w, b;\r
     char *opp = (gameMode==IcsPlayingWhite ? gameInfo.black : gameInfo.white);\r
-    Boolean sentPos = FALSE;
+    Boolean sentPos = FALSE;\r
     char *bookHit = NULL; // [HGM] book\r
 \r
     if (!first.initDone) {\r
@@ -1108,18 +1123,18 @@ void ZippyFirstBoard(moveNum, basetime, increment)
            /* Nothing needs to be done here */\r
        }       \r
     }\r
-
-    if(bookHit) { // [HGM] book: simulate book reply
-       static char bookMove[MSG_SIZ]; // a bit generous?
-
-       programStats.depth = programStats.nodes = programStats.time = 
-       programStats.score = programStats.got_only_move = 0;
-       sprintf(programStats.movelist, "%s (xbook)", bookHit);
-
-       strcpy(bookMove, "move ");
-       strcat(bookMove, bookHit);
-       HandleMachineMove(bookMove, &first);
-    }
+\r
+    if(bookHit) { // [HGM] book: simulate book reply\r
+       static char bookMove[MSG_SIZ]; // a bit generous?\r
+\r
+       programStats.depth = programStats.nodes = programStats.time = \r
+       programStats.score = programStats.got_only_move = 0;\r
+       sprintf(programStats.movelist, "%s (xbook)", bookHit);\r
+\r
+       strcpy(bookMove, "move ");\r
+       strcat(bookMove, bookHit);\r
+       HandleMachineMove(bookMove, &first);\r
+    }\r
 }\r
 \r
 \r