#include <ctype.h>
#include <signal.h>
+#include <stdio.h>
#include <sys/param.h>
#include <sys/types.h>
#include "gnushogi.h"
#include "cursesdsp.h"
+#if HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+
+#if HAVE_SYS_FILIO_H
+/* Definition of FIONREAD */
+#include <sys/filio.h>
+#endif
+
+#if HAVE_ERRNO_H
+/* Definition of errno(). */
+#include <errno.h>
+#endif
+
#define FLUSH_SCANW fflush(stdout), scanw
int mycnt1, mycnt2;
/* FIXME: change this name, puh-leeze! */
static void UpdateCatched(void);
-
+static void DrawPiece(short sq);
+static void ShowScore(short score);
/****************************************
* Trivial output functions.
****************************************/
-void
+static void
ClearEoln(void)
{
clrtoeol();
}
-void
-ClearMessage(void)
+static void
+gotoXY(short x, short y)
{
- gotoXY(TAB, 6);
- ClearEoln();
+ move(y - 1, x - 1);
}
-
-void
-gotoXY(short x, short y)
+static void
+ClearMessage(void)
{
- move(y - 1, x - 1);
+ gotoXY(TAB, 6);
+ ClearEoln();
}
void
-Curses_Printf(const char *format, ...)
+Curses_AlwaysShowMessage(const char *format, va_list ap)
+{
+ static char buffer[60];
+ vsnprintf(buffer, sizeof(buffer), format, ap);
+ Curses_ShowMessage(buffer);
+}
+
+
+void
+Curses_Printf(const char *format, va_list ap)
{
static char buffer[60];
- va_list ap;
- va_start(ap, format);
vsnprintf(buffer, sizeof(buffer), format, ap);
printw("%s", buffer);
- va_end(ap);
}
void
-Curses_RequestInputString(char* buffer)
+Curses_doRequestInputString(const char* fmt, char* buffer)
{
- FLUSH_SCANW("%s", buffer);
+ FLUSH_SCANW(fmt, buffer);
+}
+
+
+int
+Curses_GetString(char* sx)
+{
+ fflush(stdout);
+ return (getstr(sx) == ERR);
}
void
-ShowNodeCnt(long NodeCnt)
+Curses_ShowNodeCnt(long NodeCnt)
{
gotoXY(TAB, 22);
/* printw(CP[90], NodeCnt, (et > 100) ? NodeCnt / (et / 100) : 0); */
}
-void
+static void
ShowPlayers(void)
{
gotoXY(5, ((flag.reverse) ? (5 + 2*NO_ROWS) : 2));
void
-ShowPrompt(void)
+Curses_ShowPrompt(void)
{
+ Curses_ShowSidetoMove();
gotoXY(TAB, 17);
printw(CP[121]); /* Your move is? */
ClearEoln();
}
-void
+static void
ShowScore(short score)
{
gotoXY(TAB, 5);
ClearEoln();
}
-
/****************************************
* End of trivial output routines.
****************************************/
-
void
Curses_Initialize(void)
{
}
-
void
Curses_Die(int sig)
{
}
-
void
Curses_TerminateSearch(int sig)
{
}
-
void
Curses_help(void)
{
}
-
static void
UpdateCatched()
{
}
-
void
Curses_SearchStartStuff(short side)
{
}
-
void
Curses_OutputMove(void)
{
}
-
void
-UpdateClocks(void)
+Curses_UpdateClocks(void)
{
short m, s;
long dt;
}
-
-void
+static void
DrawPiece(short sq)
{
char y;
}
-
-
/*
* Curses_ShowPostnValue(): must have called ExaminePosition() first
*/
-
void
Curses_ShowPostnValue(short sq)
{
}
-
void
Curses_ShowPostnValues(void)
{
}
-
void
Curses_UpdateDisplay(short f, short t, short redraw, short isspec)
{
}
-extern char *InPtr;
-
-
void
Curses_ChangeAlphaWindow(void)
{
}
-
void
Curses_ChangeBetaWindow(void)
{
}
-
void
Curses_GiveHint(void)
{
}
-
void
Curses_ChangeSearchDepth(void)
{
}
-
void
Curses_ChangeXwindow(void)
{
}
-
void
Curses_SelectLevel(char *sx)
{
}
-
void
Curses_DoDebug(void)
{
}
-
void
Curses_DoTable(short table[NO_SQUARES])
{
}
+void
+Curses_PollForInput(void)
+{
+ int i;
+ int nchar;
+
+ if ((i = ioctl((int) 0, FIONREAD, &nchar)))
+ {
+ perror("FIONREAD");
+ fprintf(stderr,
+ "You probably have a non-ANSI <ioctl.h>; "
+ "see README. %d %d %x\n",
+ i, errno, FIONREAD);
+ exit(1);
+ }
+
+ if (nchar)
+ {
+ if (!flag.timeout)
+ flag.back = true;
+
+ flag.bothsides = false;
+ }
+}
+
+void
+Curses_SetupBoard(void)
+{
+ Curses_ShowMessage("'setup' command is not supported in Cursesmode");
+}