* FILE: search.c
*
* ----------------------------------------------------------------------
- *
- * Copyright (c) 2012 Free Software Foundation
+ * Copyright (c) 1993, 1994, 1995 Matthias Mutz
+ * Copyright (c) 1999 Michael Vanier and the Free Software Foundation
*
* GNU SHOGI is based on GNU CHESS
*
+ * Copyright (c) 1988, 1989, 1990 John Stanback
+ * Copyright (c) 1992 Free Software Foundation
+ *
* This file is part of GNU SHOGI.
*
* GNU Shogi is free software; you can redistribute it and/or modify it
*/
#include "gnushogi.h"
-
-#if !defined OLDTIME && defined HAVE_GETTIMEOFDAY
-double pow(double x, double y);
-#endif
+#include <poll.h>
+#include <unistd.h>
short background = 0;
static short DepthBeyond;
}
else
{
+ background = false; /* [HGM] with ponder on we did not switch back to foreground mode??? */
player = side;
SetResponseTime(side);
}
short best = -(SCORE_LIMIT + 3000);
short bestwidth = 0;
short mustcut;
+ static struct pollfd pollfds[1] = { /* [0] = */ { /* .fd = */ STDIN_FILENO,
+ /* .events = */ POLLIN } };
#ifdef NULLMOVE
short PVsave;
{
ElapsedTime(COMPUTE_MODE);
+ if(background) {
+ int cnt = poll(pollfds, sizeof(pollfds)/sizeof(pollfds[0]), 0);
+ if (cnt < 0) {
+ perror("polling standard input");
+ ExitShogi();
+ }
+ if (cnt) { /* if anything to read, or error occured */
+ if (!flag.timeout)
+ flag.back = true; /* previous: flag.timeout = true; */
+ flag.bothsides = false;
+ }
+ }
+
if (flag.back)
{
flag.back = false;
MakeMove(side, node, &tempb, &tempc, &tempsf,
&tempst, &INCscore);
- CptrFlag[ply] = (node->flags & capture);
+ CptrFlag[ply] = ((node->flags & capture) != 0);
TesujiFlag[ply] = (node->flags & tesuji)
&& (node->flags & dropmask);
Tscore[ply] = node->score;