Mark more functions and vars static.
[gnushogi.git] / gnushogi / cursesdsp.c
index b32181b..bf37999 100644 (file)
@@ -6,6 +6,7 @@
  * ----------------------------------------------------------------------
  * Copyright (c) 1993, 1994, 1995 Matthias Mutz
  * Copyright (c) 1999 Michael Vanier and the Free Software Foundation
+ * Copyright (c) 2008, 2013, 2014 Yann Dirson and the Free Software Foundation
  *
  * GNU SHOGI is based on GNU CHESS
  *
  * ----------------------------------------------------------------------
  */
 
+/* request *snprintf prototypes*/
+#define _POSIX_C_SOURCE 200112L
 
 #include <ctype.h>
 #include <signal.h>
 #include <stdio.h>
+#include <stdarg.h>
 
 #include <sys/param.h>
 #include <sys/types.h>
@@ -41,7 +45,6 @@
 #include <curses.h>
 
 #include "gnushogi.h"
-#include "cursesdsp.h"
 
 #if HAVE_UNISTD_H
 #include <unistd.h>
 
 #define FLUSH_SCANW fflush(stdout), scanw
 
-int mycnt1, mycnt2;
-
 #define TAB (58)
 
 #define VIR_C(s)  ((flag.reverse) ? (NO_COLS - 1 - column(s)) : column(s))
 #define VIR_R(s)  ((flag.reverse) ? (NO_ROWS - 1 - row(s)) : row(s))
 
-unsigned short MV[MAXDEPTH];
-int MSCORE;
-char *DRAW;
+/****************************************
+ * forward declarations
+ ****************************************/
 
-/* Forward declarations. */
 /* FIXME: change this name, puh-leeze! */
-
 static void UpdateCatched(void);
 static void DrawPiece(short sq);
 static void ShowScore(short score);
+static void Curses_UpdateDisplay(short f, short t, short redraw, short isspec);
+static void Curses_Die(int sig);
+static void Curses_ShowSidetoMove(void);
 
 /****************************************
  * Trivial output functions.
@@ -89,7 +91,7 @@ ClearEoln(void)
 }
 
 
-void
+static void
 Curses_ClearScreen(void)
 {
     clear();
@@ -105,14 +107,6 @@ gotoXY(short x, short y)
 
 
 static void
-ClearMessage(void)
-{
-    gotoXY(TAB, 6);
-    ClearEoln();
-}
-
-
-void
 Curses_ShowCurrentMove(short pnt, short f, short t)
 {
     algbr(f, t, false);
@@ -121,7 +115,7 @@ Curses_ShowCurrentMove(short pnt, short f, short t)
 }
 
 
-void
+static void
 Curses_ShowDepth(char ch)
 {
     gotoXY(TAB, 4);
@@ -130,7 +124,7 @@ Curses_ShowDepth(char ch)
 }
 
 
-void
+static void
 Curses_ShowGameType(void)
 {
     if (flag.post)
@@ -141,7 +135,7 @@ Curses_ShowGameType(void)
 }
 
 
-void
+static void
 ShowHeader(void)
 {
     gotoXY(TAB, 2);
@@ -149,13 +143,13 @@ ShowHeader(void)
 }
 
 
-void
+static void
 Curses_ShowLine(unsigned short *bstline)
 {
 }
 
 
-void
+static void
 Curses_ShowMessage(char *s)
 {
     gotoXY(TAB, 6);
@@ -164,32 +158,38 @@ Curses_ShowMessage(char *s)
 }
 
 
-void
-Curses_AlwaysShowMessage(const char *format, va_list ap)
+static void
+Curses_AlwaysShowMessage(const char *format, ...)
 {
     static char buffer[60];
+    va_list ap;
+    va_start(ap, format);
     vsnprintf(buffer, sizeof(buffer), format, ap);
     Curses_ShowMessage(buffer);
+    va_end(ap);
 }
 
 
-void
-Curses_Printf(const char *format, va_list ap)
+static void
+Curses_Printf(const char *format, ...)
 {
     static char buffer[60];
+    va_list ap;
+    va_start(ap, format);
     vsnprintf(buffer, sizeof(buffer), format, ap);
     printw("%s", buffer);
+    va_end(ap);
 }
 
 
-void
+static void
 Curses_doRequestInputString(const char* fmt, char* buffer)
 {
     FLUSH_SCANW(fmt, buffer);
 }
 
 
-int
+static int
 Curses_GetString(char* sx)
 {
     fflush(stdout);
@@ -197,7 +197,7 @@ Curses_GetString(char* sx)
 }
 
 
-void
+static void
 Curses_ShowNodeCnt(long NodeCnt)
 {
     gotoXY(TAB, 22);
@@ -208,7 +208,7 @@ Curses_ShowNodeCnt(long NodeCnt)
 }
 
 
-void
+static void
 Curses_ShowPatternCount(short side, short n)
 {
     if (flag.post)
@@ -233,7 +233,7 @@ ShowPlayers(void)
 }
 
 
-void
+static void
 Curses_ShowPrompt(void)
 {
     Curses_ShowSidetoMove();
@@ -243,7 +243,7 @@ Curses_ShowPrompt(void)
 }
 
 
-void
+static void
 Curses_ShowResponseTime(void)
 {
     if (flag.post)
@@ -257,7 +257,7 @@ Curses_ShowResponseTime(void)
 }
 
 
-void
+static void
 Curses_ShowResults(short score, unsigned short *bstline, char ch)
 {
     unsigned char d, ply;
@@ -301,7 +301,7 @@ ShowScore(short score)
 }
 
 
-void
+static void
 Curses_ShowSidetoMove(void)
 {
     gotoXY(TAB, 14);
@@ -310,7 +310,7 @@ Curses_ShowSidetoMove(void)
 }
 
 
-void
+static void
 Curses_ShowStage(void)
 {
     gotoXY(TAB, 19);
@@ -323,7 +323,7 @@ Curses_ShowStage(void)
  * End of trivial output routines.
  ****************************************/
 
-void
+static void
 Curses_Initialize(void)
 {
     signal(SIGINT, Curses_Die);
@@ -333,7 +333,7 @@ Curses_Initialize(void)
 }
 
 
-void
+static void
 Curses_ExitShogi(void)
 { 
     if (!nolist)
@@ -349,7 +349,7 @@ Curses_ExitShogi(void)
 }
 
 
-void
+static void
 Curses_Die(int sig)
 {
     char s[80];
@@ -368,7 +368,7 @@ Curses_Die(int sig)
 }
 
 
-void
+static void
 Curses_TerminateSearch(int sig)
 {
     signal(SIGINT, SIG_IGN);
@@ -384,7 +384,7 @@ Curses_TerminateSearch(int sig)
 }
 
 
-void
+static void
 Curses_help(void)
 {
     Curses_ClearScreen();
@@ -452,7 +452,7 @@ static const short y0[2] = { 20, 4 };
  * P* will put a pawn to the captured pieces.
  */
 
-void
+static void
 Curses_EditBoard(void)
 {
     short a, c, sq, i;
@@ -601,7 +601,7 @@ UpdateCatched()
 }
 
 
-void
+static void
 Curses_SearchStartStuff(short side)
 {
     short i;
@@ -617,7 +617,7 @@ Curses_SearchStartStuff(short side)
 }
 
 
-void
+static void
 Curses_OutputMove(void)
 {
 
@@ -672,7 +672,7 @@ Curses_OutputMove(void)
             t = (l + h) >> 1;
         }
 
-        ShowNodeCnt(NodeCnt);
+        Curses_ShowNodeCnt(NodeCnt);
         gotoXY(TAB, 23);
         printw("Max Tree = %5d", t);
         ClearEoln();
@@ -682,7 +682,7 @@ Curses_OutputMove(void)
 }
 
 
-void
+static void
 Curses_UpdateClocks(void)
 {
     short m, s;
@@ -714,7 +714,7 @@ Curses_UpdateClocks(void)
     printw("%d:%02d  ", m, s); 
 
     if (flag.post)
-        ShowNodeCnt(NodeCnt);
+        Curses_ShowNodeCnt(NodeCnt);
 
     refresh();
 }
@@ -761,13 +761,11 @@ DrawPiece(short sq)
 /*
  * Curses_ShowPostnValue(): must have called ExaminePosition() first
  */
-void
+static void
 Curses_ShowPostnValue(short sq)
 {
-    short score;
-
     gotoXY(4 + 5 * VIR_C(sq), 5 + 2 * (7 - VIR_R(sq)));        /* CHECKME */
-    score = ScorePosition(color[sq]);
+    (void) ScorePosition(color[sq]);
 
     if (color[sq] != neutral)
 #if defined SAVE_SVALUE
@@ -786,7 +784,7 @@ Curses_ShowPostnValue(short sq)
 }
 
 
-void
+static void
 Curses_ShowPostnValues(void)
 {
     short sq, score;
@@ -806,7 +804,7 @@ Curses_ShowPostnValues(void)
 }
 
 
-void
+static void
 Curses_UpdateDisplay(short f, short t, short redraw, short isspec)
 {
     short i, sq, z;
@@ -854,10 +852,17 @@ Curses_UpdateDisplay(short f, short t, short redraw, short isspec)
         gotoXY(3, 4 + 2*NO_ROWS);
         printw("    ");
 
+#ifndef MINISHOGI
         if (flag.reverse)
             printw("  1    2    3    4    5    6    7    8    9");
         else
             printw("  9    8    7    6    5    4    3    2    1");
+#else
+        if (flag.reverse)
+            printw("  1    2    3    4    5");
+        else
+            printw("  1    2    3    4    5");
+#endif
 
         for (sq = 0; sq < NO_SQUARES; sq++)
             DrawPiece(sq);
@@ -917,7 +922,7 @@ Curses_UpdateDisplay(short f, short t, short redraw, short isspec)
 }
 
 
-void
+static void
 Curses_ChangeAlphaWindow(void)
 {
     Curses_ShowMessage("WAwindow = ");
@@ -927,7 +932,7 @@ Curses_ChangeAlphaWindow(void)
 }
 
 
-void
+static void
 Curses_ChangeBetaWindow(void)
 {
     Curses_ShowMessage("WBwindow = ");
@@ -937,7 +942,7 @@ Curses_ChangeBetaWindow(void)
 }
 
 
-void
+static void
 Curses_GiveHint(void)
 {
     char s[40];
@@ -956,8 +961,8 @@ Curses_GiveHint(void)
 }
 
 
-void
-Curses_ChangeSearchDepth(void)
+static void
+Curses_ChangeSearchDepth(char* sx)
 {
     Curses_ShowMessage("depth = ");
     FLUSH_SCANW("%hd", &MaxSearchDepth);
@@ -965,7 +970,7 @@ Curses_ChangeSearchDepth(void)
 }
 
 
-void
+static void
 Curses_ChangeHashDepth(void)
 {
     Curses_ShowMessage("hashdepth = ");
@@ -975,7 +980,7 @@ Curses_ChangeHashDepth(void)
 }
 
 
-void
+static void
 Curses_SetContempt(void)
 {
     Curses_ShowMessage("contempt = ");
@@ -983,7 +988,7 @@ Curses_SetContempt(void)
 }
 
 
-void
+static void
 Curses_ChangeXwindow(void)
 {
     Curses_ShowMessage("xwndw= ");
@@ -991,7 +996,7 @@ Curses_ChangeXwindow(void)
 }
 
 
-void
+static void
 Curses_SelectLevel(char *sx)
 {
     int item;
@@ -1101,7 +1106,7 @@ Curses_SelectLevel(char *sx)
 }
 
 
-void
+static void
 Curses_DoDebug(void)
 {
     short c, p, sq, tp, tc, tsq, score;
@@ -1148,7 +1153,7 @@ Curses_DoDebug(void)
 }
 
 
-void
+static void
 Curses_DoTable(short table[NO_SQUARES])
 {
     short  sq;
@@ -1162,7 +1167,7 @@ Curses_DoTable(short table[NO_SQUARES])
 } 
 
 
-void
+static void
 Curses_PollForInput(void)
 {
     int  i;
@@ -1188,8 +1193,53 @@ Curses_PollForInput(void)
 }
 
 
-void
+static void
 Curses_SetupBoard(void)
 {
     Curses_ShowMessage("'setup' command is not supported in Cursesmode");
 }
+
+
+struct display curses_display =
+{
+    .ChangeAlphaWindow    = Curses_ChangeAlphaWindow,
+    .ChangeBetaWindow     = Curses_ChangeBetaWindow,
+    .ChangeHashDepth      = Curses_ChangeHashDepth,
+    .ChangeSearchDepth    = Curses_ChangeSearchDepth,
+    .ChangeXwindow        = Curses_ChangeXwindow,
+    .ClearScreen          = Curses_ClearScreen,
+    .DoDebug              = Curses_DoDebug,
+    .DoTable              = Curses_DoTable,
+    .EditBoard            = Curses_EditBoard,
+    .ExitShogi            = Curses_ExitShogi,
+    .GiveHint             = Curses_GiveHint,
+    .Initialize           = Curses_Initialize,
+    .ShowNodeCnt          = Curses_ShowNodeCnt,
+    .OutputMove           = Curses_OutputMove,
+    .PollForInput         = Curses_PollForInput,
+    .SetContempt          = Curses_SetContempt,
+    .SearchStartStuff     = Curses_SearchStartStuff,
+    .SelectLevel          = Curses_SelectLevel,
+    .ShowCurrentMove      = Curses_ShowCurrentMove,
+    .ShowDepth            = Curses_ShowDepth,
+    .ShowGameType         = Curses_ShowGameType,
+    .ShowLine             = Curses_ShowLine,
+    .ShowMessage          = Curses_ShowMessage,
+    .AlwaysShowMessage    = Curses_AlwaysShowMessage,
+    .Printf               = Curses_Printf,
+    .doRequestInputString = Curses_doRequestInputString,
+    .GetString            = Curses_GetString,
+    .SetupBoard           = Curses_SetupBoard,
+    .ShowPatternCount     = Curses_ShowPatternCount,
+    .ShowPostnValue       = Curses_ShowPostnValue,
+    .ShowPostnValues      = Curses_ShowPostnValues,
+    .ShowPrompt           = Curses_ShowPrompt,
+    .ShowResponseTime     = Curses_ShowResponseTime,
+    .ShowResults          = Curses_ShowResults,
+    .ShowSidetoMove       = Curses_ShowSidetoMove,
+    .ShowStage            = Curses_ShowStage,
+    .TerminateSearch      = Curses_TerminateSearch,
+    .UpdateClocks         = Curses_UpdateClocks,
+    .UpdateDisplay        = Curses_UpdateDisplay,
+    .help                 = Curses_help,
+};