X-Git-Url: http://winboard.nl/cgi-bin?a=blobdiff_plain;f=gnushogi%2Fcommondsp.c;h=603143c1482aa31d233cbd616d87fb1cae5b63eb;hb=b1b9616a3147b835beaabfaaa8f2de0db6d12ee9;hp=422dab660972823cdb64e3cbdb3fd1ac18557510;hpb=d382a9f843aa61ef352ce199823788f96d4912c3;p=gnushogi.git diff --git a/gnushogi/commondsp.c b/gnushogi/commondsp.c index 422dab6..603143c 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 @@ -46,7 +51,7 @@ char mvstr[4][6]; char *InPtr; -int InBackground = false; +int mycnt1, mycnt2; struct display *dsp = &raw_display; @@ -162,7 +167,7 @@ algbr(short f, short t, short flag) if ((f == t) && ((f != 0) || (t != 0))) { - if (!barebones) { + if (!XSHOGI) { dsp->Printf("error in algbr: FROM=TO=%d, flag=0x%4x\n", t, flag); } @@ -339,7 +344,7 @@ VerifyMove(char *s, VerifyMove_mode iop, unsigned short *mv) dsp->AlwaysShowMessage("Illegal move (no match) %s", s); - if (!barebones && (cnt > 1)) + if (!XSHOGI && (cnt > 1)) { sprintf(buffer, "Ambiguous Move %s!", s); dsp->ShowMessage(buffer); @@ -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; @@ -1310,59 +1315,7 @@ Undo(void) } -void -FlagString(unsigned short flags, char *s) -{ - short l, piece; - *s = '\0'; - - if (flags & promote) - strcat(s, " promote"); - - if (flags & dropmask) - strcat(s, " drop:"); - - if ((piece = (flags & pmask))) - { - l = strlen(s); - - if (is_promoted[piece]) - s[l++] = '+'; - - s[l++] = pxx[piece]; - s[l] = '\0'; - } - - if (flags & capture) - strcat(s, " capture"); - - if (flags & exact) - strcat(s, " exact"); - - if (flags & tesuji) - strcat(s, " tesuji"); - - if (flags & check) - strcat(s, " check"); - - if (flags & draw) - strcat(s, " draw"); - - if (flags & stupid) - strcat(s, " stupid"); - - if (flags & questionable) - strcat(s, " questionable"); - - if (flags & kingattack) - strcat(s, " kingattack"); - - if (flags & book) - strcat(s, " book"); -} - - -void +static void TestSpeed(void(*f)(short side, short ply, short in_check, short blockable), unsigned j) @@ -1416,7 +1369,7 @@ TestSpeed(void(*f)(short side, short ply, } -void +static void TestPSpeed(short(*f) (short side), unsigned j) { unsigned i; @@ -1453,14 +1406,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 +1439,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 +1478,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 +1511,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 +1576,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 +1608,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(); } @@ -1766,11 +1700,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) { @@ -1879,7 +1813,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) { @@ -2024,45 +1962,5 @@ InputCommand(char *command) printf("%d. %s %ld\n", ++mycnt2, s, TimeControl.clock[player] * 10); } - -#ifdef notdef /* optional pass best line to frontend with move */ -# if !defined NOPOST - - if (flag.post && !flag.mate) - { - int i; - - printf(" %6d ", MSCORE); - - for (i = 1; MV[i] > 0; i++) - { - algbr((short) (MV[i] >> 8), (short) (MV[i] & 0xFF), false); - printf("%5s ", mvstr[0]); - } - } -# endif - printf("\n"); -#endif - } -} - - -void -SetTimeControl(void) -{ - if (TCflag) - { - TimeControl.moves[black] = TimeControl.moves[white] = TCmoves; - TimeControl.clock[black] += 6000L * TCminutes + TCseconds * 100; - TimeControl.clock[white] += 6000L * TCminutes + TCseconds * 100; - } - else - { - TimeControl.moves[black] = TimeControl.moves[white] = 0; - TimeControl.clock[black] = TimeControl.clock[white] = 0; } - - flag.onemove = (TCmoves == 1); - et = 0; - ElapsedTime(COMPUTE_AND_INIT_MODE); }