X-Git-Url: http://winboard.nl/cgi-bin?a=blobdiff_plain;f=gnushogi%2Fmakepattern.c;h=c9d97adf8fc4ec8d13479fe43b0672a368fb127e;hb=8f8fd31fec3aa8ed18e98a86d938b917162c619b;hp=b2e618a1635a50c053e61a55e415ce856f7f67cc;hpb=8ae7e7d1b257ef36d8a9fd1cd88807954ef10764;p=gnushogi.git diff --git a/gnushogi/makepattern.c b/gnushogi/makepattern.c index b2e618a..c9d97ad 100644 --- a/gnushogi/makepattern.c +++ b/gnushogi/makepattern.c @@ -14,8 +14,8 @@ * * GNU Shogi is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the - * Free Software Foundation; either version 1, or (at your option) any - * later version. + * Free Software Foundation; either version 3 of the License, + * or (at your option) any later version. * * GNU Shogi is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or @@ -23,8 +23,8 @@ * for more details. * * You should have received a copy of the GNU General Public License along - * with GNU Shogi; see the file COPYING. If not, write to the Free - * Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * with GNU Shogi; see the file COPYING. If not, see + * . * ---------------------------------------------------------------------- * */ @@ -36,7 +36,19 @@ #define MAX_OPENING_SEQUENCE 20 #define MAX_PATTERN 200 -char *patternfile = PATTERNFILE; +static char *patternfile = PATTERNFILE; +small_short pattern_data[MAX_PATTERN_DATA]; + +/* minimal ShowMessage to avoid dependency on extraneous display code */ +static void +Dummy_ShowMessage(char *s) +{ + printf("%s\n", s); +} +static struct display dummydsp = { + .ShowMessage = Dummy_ShowMessage, +}; +struct display *dsp = &dummydsp; #define is_digit(c) (((c) >= '0') && ((c) <= '9')) #define is_alpha(c) ((((c) >= 'a') && ((c) <= 'z')) \ @@ -180,66 +192,63 @@ ScanPattern (char *s, short *pindex) void ReadOpeningSequences (short *pindex) - { FILE *fd; char s[256]; short max_pattern = 0; short max_opening_sequence = 0; - if ((fd = fopen (patternfile, "r")) == NULL) + fd = fopen (patternfile, "r"); + + if (fd == NULL) fd = fopen ("gnushogi.pat", "r"); - if (fd != NULL) - { - *pindex = 0; + if (fd == NULL) { + sprintf(s, "no pattern file '%s'", patternfile); + dsp->ShowMessage(s); + return; + } - while (fgets (s, 256, fd) != NULL) + *pindex = 0; + + while (fgets (s, 256, fd) != NULL) + { + if (*s == '#') { - if (*s == '#') + /* comment, skip line */ + } + else if (is_alpha(*s)) + { + if (max_opening_sequence++ > 0) { - /* comment, skip line */ + pattern_data[(*pindex)++] = END_OF_PATTERNS; } - else if (is_alpha(*s)) - { - if (max_opening_sequence++ > 0) - { - pattern_data[(*pindex)++] = END_OF_PATTERNS; - } - pattern_data[(*pindex)++] = ValueOfOpeningName(s); + pattern_data[(*pindex)++] = ValueOfOpeningName(s); + } + else + { + if (ScanPattern(s, pindex)) + { + dsp->ShowMessage("error in pattern sequence..."); + exit(1); } else { - if (ScanPattern(s, pindex)) - { - ShowMessage("error in pattern sequence..."); - exit(1); - } - else - { - max_pattern++; - } + max_pattern++; } } + } - pattern_data[(*pindex)++] = END_OF_PATTERNS; - pattern_data[(*pindex)++] = END_OF_SEQUENCES; + pattern_data[(*pindex)++] = END_OF_PATTERNS; + pattern_data[(*pindex)++] = END_OF_SEQUENCES; - if (NOT_CURSES) - { - sprintf(s, - "Pattern: %d bytes for %d sequences with %d patterns.\n", - *pindex, max_opening_sequence, max_pattern); - ShowMessage(s); - } - fclose(fd); - } - else if (NOT_CURSES) - { - sprintf(s, "no pattern file '%s'", patternfile); - ShowMessage(s); - } + sprintf(s, + "Pattern: %d bytes for %d sequences with %d patterns.\n", + *pindex, max_opening_sequence, max_pattern); + dsp->ShowMessage(s); + + fclose(fd); }