X-Git-Url: http://winboard.nl/cgi-bin?a=blobdiff_plain;f=gnushogi%2Fcommondsp.c;h=a6f567d1ea86fda729df94d7e770b221d06bddbb;hb=1ad6c36feffec9aef9011a7585179f9e75b85600;hp=40bfd22e329e79f415c7086e9b06acd5dd1d700f;hpb=916e9d3b3acd6422ad21f8edbbe5da768737f2b8;p=gnushogi.git diff --git a/gnushogi/commondsp.c b/gnushogi/commondsp.c index 40bfd22..a6f567d 100644 --- a/gnushogi/commondsp.c +++ b/gnushogi/commondsp.c @@ -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 * @@ -31,6 +32,10 @@ * */ +/* request *snprintf prototypes */ +#define _POSIX_C_SOURCE 200112L +#include + #if defined HAVE_GETTIMEOFDAY #include #endif @@ -424,7 +429,7 @@ void RequestInputString(char* buffer, unsigned bufsize) } -void +static void GetGame(void) { FILE *fd; @@ -647,7 +652,7 @@ GetGame(void) } -void +static void SaveGame(void) { FILE *fd; @@ -799,7 +804,7 @@ SaveGame(void) * xshogi wasn't defined -- wonder why? */ -void +static void GetXGame(void) { FILE *fd; @@ -928,7 +933,7 @@ GetXGame(void) } -void +static void SaveXGame(void) { FILE *fd; @@ -1008,7 +1013,7 @@ SaveXGame(void) } -void +static void BookSave(void) { FILE *fd; @@ -1227,7 +1232,7 @@ ListGame(void) } -void +static void FlagMove(char c) { switch(c) @@ -1253,7 +1258,7 @@ FlagMove(char c) * Undo the most recent half-move. */ -void +static void Undo(void) { short f, t; @@ -1362,7 +1367,7 @@ FlagString(unsigned short flags, char *s) } -void +static void TestSpeed(void(*f)(short side, short ply, short in_check, short blockable), unsigned j) @@ -1416,7 +1421,7 @@ TestSpeed(void(*f)(short side, short ply, } -void +static void TestPSpeed(short(*f) (short side), unsigned j) { unsigned i; @@ -1453,14 +1458,12 @@ TestPSpeed(short(*f) (short side), unsigned j) } -void -SetOppTime(char *s) +static void +SetOppTime(char *time) { - char *time; int m, t, sec; sec = 0; - time = &s[strlen("otime")]; t = (int)strtol(time, &time, 10); if (*time == ':') @@ -1488,13 +1491,11 @@ SetOppTime(char *s) } -void -SetMachineTime(char *s) +static void +SetMachineTime(char *time) { - char *time; int m, t, sec; - time = &s[strlen("time")]; sec = 0; t = (int)strtol(time, &time, 10); @@ -1529,15 +1530,13 @@ SetMachineTime(char *s) * Process the user's command. If easy mode is OFF (the computer is thinking * on opponents time) and the program is out of book, then make the 'hint' * move on the board and call SelectMove() to find a response. The user - * terminates the search by entering ^C (quit siqnal) before entering a - * command. If the opponent does not make the hint move, then set Sdepth to - * zero. + * terminates the search by entering a command. If the opponent does not make + * the hint move, then set Sdepth to zero. */ void InputCommand(char *command) { - int eof = 0; short have_shown_prompt = false; short ok, done, is_move = false; unsigned short mv; @@ -1564,10 +1563,8 @@ InputCommand(char *command) algbr((short) hint >> 8, (short) hint & 0xff, false); strcpy(s, mvstr[0]); -#if !defined NOPOST if (flag.post) dsp->GiveHint(); -#endif /* do the hint move */ if (VerifyMove(s, VERIFY_AND_TRY_MODE, &mv)) @@ -1631,21 +1628,16 @@ InputCommand(char *command) #endif /* QUIETBACKGROUND */ if (command == NULL) { - if (NOT_CURSES) - s[0] = '\0'; - - eof = dsp->GetString(sx); + int eof = dsp->GetString(sx); + if (eof) + dsp->ExitShogi(); } else { strcpy(sx, command); done = true; } - sscanf(sx, "%s", s); - - if (eof) - dsp->ExitShogi(); - - if (s[0] == '\0') + /* extract first word */ + if (sscanf(sx, "%s", s) < 1) continue; if (strcmp(s, "bd") == 0) /* bd -- display board */ @@ -1668,25 +1660,19 @@ InputCommand(char *command) } else if (strcmp(s, "alg") == 0) { - /* noop */ ; /* alg */ + /* noop */ ; } else if ((strcmp(s, "quit") == 0) || (strcmp(s, "exit") == 0)) { flag.quit = true; } -#if !defined NOPOST - else if (strcmp(s, "post") == 0) - { - flag.post = !flag.post; - } -#endif else if ((strcmp(s, "set") == 0) || (strcmp(s, "edit") == 0)) { dsp->EditBoard(); } - else if ((strcmp(s, "setup") == 0)) + else if (strcmp(s, "setup") == 0) { dsp->SetupBoard(); } @@ -1744,10 +1730,13 @@ InputCommand(char *command) { ListGame(); } - else if ((strcmp(s, "level") == 0) - || (strcmp(s, "clock") == 0)) + else if (strcmp(s, "level") == 0) + { + dsp->SelectLevel(sx + strlen("level")); + } + else if (strcmp(s, "clock") == 0) { - dsp->SelectLevel(sx); + dsp->SelectLevel(sx + strlen("clock")); } else if (strcmp(s, "hash") == 0) { @@ -1763,11 +1752,11 @@ InputCommand(char *command) } else if (strcmp(s, "time") == 0) { - SetMachineTime(sx); + SetMachineTime(sx + strlen("time")); } else if (strcmp(s, "otime") == 0) { - SetOppTime(sx); + SetOppTime(sx + strlen("otime")); } else if (strcmp(s, "Awindow") == 0) { @@ -1876,7 +1865,11 @@ InputCommand(char *command) } else if (strcmp(s, "depth") == 0) { - dsp->ChangeSearchDepth(); + dsp->ChangeSearchDepth(sx + strlen("depth")); + } + else if (strcmp(s, "sd") == 0) + { + dsp->ChangeSearchDepth(sx + strlen("sd")); } else if (strcmp(s, "hashdepth") == 0) { @@ -2023,8 +2016,6 @@ InputCommand(char *command) } #ifdef notdef /* optional pass best line to frontend with move */ -# if !defined NOPOST - if (flag.post && !flag.mate) { int i; @@ -2037,7 +2028,6 @@ InputCommand(char *command) printf("%5s ", mvstr[0]); } } -# endif printf("\n"); #endif }