home *** CD-ROM | disk | FTP | other *** search
/ Amiga MA Magazine 1998 #3 / amigamamagazinepolishissue1998.iso / szachy / gnu / amyboard-3.2.pl2 / amyboard.patch < prev    next >
Text File  |  1995-05-25  |  41KB  |  1,502 lines

  1. diff -c -b -r xboard-3.2.pl2/backend.c AmyBoard-3.2.pl2/backend.c
  2. *** xboard-3.2.pl2/backend.c    Thu Mar 09 02:02:43 1995
  3. --- AmyBoard-3.2.pl2/backend.c    Tue May 23 19:30:30 1995
  4. ***************
  5. *** 1,6 ****
  6.   /*
  7.    * backend.c -- Common back end for X and Windows NT versions of
  8. !  * XBoard $Id: backend.c,v 1.50 1995/03/09 00:43:28 mann Exp $
  9.    *
  10.    * Copyright 1991 by Digital Equipment Corporation, Maynard, Massachusetts.
  11.    * Enhancements Copyright 1992-95 Free Software Foundation, Inc.
  12. --- 1,6 ----
  13.   /*
  14.    * backend.c -- Common back end for X and Windows NT versions of
  15. !  * XBoard $Id: backend.c,v 1.1 1995/04/12 21:19:29 Joe Exp $
  16.    *
  17.    * Copyright 1991 by Digital Equipment Corporation, Maynard, Massachusetts.
  18.    * Enhancements Copyright 1992-95 Free Software Foundation, Inc.
  19. ***************
  20. *** 165,175 ****
  21.   void StopClocks P((void));
  22.   void ResetClocks P((void));
  23.   char *PGNDate P((void));
  24. - char *PGNResult P((ChessMove result));
  25. - char *PGNTags P((void));
  26. - void PrintPGNTags P((FILE *f));
  27. - void ParsePGNTag P((char *tag));
  28. - void ClearGameInfo P((void));
  29.   void SetGameInfo P((void));
  30.   char *PositionToFEN P((int move));
  31.   Boolean ParseFEN P((Board board, int *blackPlaysFirst, char *fen));
  32. --- 165,170 ----
  33. ***************
  34. *** 182,188 ****
  35.   char *SavePart P((char *));
  36.   int SaveGameOldStyle P((FILE *));
  37.   int SaveGamePGN P((FILE *));
  38. - char *PGNTagsStatic P((void));
  39.   char *StrSave P((char *));
  40.   void GetTimeMark P((TimeMark *));
  41.   long SubtractTimeMarks P((TimeMark *, TimeMark *));
  42. --- 177,182 ----
  43. ***************
  44. *** 189,196 ****
  45.   void CheckFlags(void);
  46.   long NextTickLength P((long));
  47.   void CheckTimeControl P((void));
  48.   
  49.   /* States for ics_getting_history */
  50.   #define H_FALSE 0
  51.   #define H_REQUESTED 1
  52. --- 183,190 ----
  53.   void CheckFlags(void);
  54.   long NextTickLength P((long));
  55.   void CheckTimeControl P((void));
  56. + void show_bytes P((FILE *, char *, int));
  57.   
  58.   /* States for ics_getting_history */
  59.   #define H_FALSE 0
  60.   #define H_REQUESTED 1
  61. ***************
  62. *** 284,289 ****
  63. --- 278,289 ----
  64.       int matched, min, sec;
  65.   
  66.       /*
  67. +      * Initialize game list
  68. +      */
  69. +     ListNew(&gameList);
  70. +     /*
  71.        * Internet chess server status
  72.        */
  73.       if (appData.icsActive) {
  74. ***************
  75. *** 484,490 ****
  76.        int count;
  77.   {
  78.       while (count--) {
  79. !     if (*buf < 040 || *buf > 0177) {
  80.           fprintf(fp, "\\%03o", *buf & 0xff);
  81.       } else {
  82.           putc(*buf, fp);
  83. --- 484,490 ----
  84.        int count;
  85.   {
  86.       while (count--) {
  87. !       if (*buf < 040 || ((unsigned char) *buf) > 0177) {
  88.         fprintf(fp, "\\%03o", *buf & 0xff);
  89.         } else {
  90.         putc(*buf, fp);
  91. ***************
  92. *** 642,647 ****
  93. --- 642,648 ----
  94.       i = 0;
  95.       while (i < buf_len) {
  96.   
  97.   #define TN_WILL '\373'
  98.   #define TN_WONT '\374'
  99.   #define TN_DO   '\375'
  100. ***************
  101. *** 666,672 ****
  102.           oldi = i;
  103.           reply[0] = TN_IAC;
  104.           reply[3] = NULLCHAR;
  105. !         switch (buf[++i]) {
  106.             case TN_WILL:
  107.               if (appData.debugMode)
  108.                 fprintf(debugFP, "\n<WILL ");
  109. --- 667,673 ----
  110.           oldi = i;
  111.           reply[0] = TN_IAC;
  112.           reply[3] = NULLCHAR;
  113. !         switch (((unsigned char) buf[++i])) {
  114.             case TN_WILL:
  115.               if (appData.debugMode)
  116.                 fprintf(debugFP, "\n<WILL ");
  117. ***************
  118. *** 1050,1056 ****
  119.           int gamenum = atoi(star_match[0]);
  120.           char *why = star_match[3];
  121.           char *endtoken = star_match[4];
  122. !         ChessMove endtype;
  123.   
  124.           if (gameMode == IcsIdle || gameMode == BeginningOfGame ||
  125.               ics_gamenum != gamenum) {
  126. --- 1051,1058 ----
  127.           int gamenum = atoi(star_match[0]);
  128.           char *why = star_match[3];
  129.           char *endtoken = star_match[4];
  130. !         ChessMove endtype = (ChessMove) 0;
  131. !         /*  Suppress warnings on uninitialized variables    */
  132.   
  133.           if (gameMode == IcsIdle || gameMode == BeginningOfGame ||
  134.               ics_gamenum != gamenum) {
  135. ***************
  136. *** 1385,1390 ****
  137. --- 1387,1393 ----
  138.          black or if the ICS flip flag is set, but let the user change
  139.          it with the Flip View button. */
  140.       flipView = (newGameMode == IcsPlayingBlack) || ics_flip;
  141. +     DrawPosition(FALSE, NULL);
  142.   
  143.       /* Done with values from previous mode; copy in new ones */
  144.       gameMode = newGameMode;
  145. ***************
  146. *** 1876,1881 ****
  147. --- 1879,1885 ----
  148.   
  149.   FILE *lastLoadGameFP = NULL;
  150.   int lastLoadGameNumber = 0;
  151. + int lastLoadGameUseList = FALSE;
  152.   char lastLoadGameTitle[MSG_SIZ];
  153.   
  154.   void UserMoveEvent(fromX, fromY, toX, toY, promoChar)
  155. ***************
  156. *** 2778,2784 ****
  157.       whiteFlag = blackFlag = FALSE;
  158.       maybePondering = FALSE;
  159.       thinkOutput[0] = NULLCHAR;
  160. !     ClearGameInfo();
  161.       ics_user_moved = FALSE;
  162.       ics_getting_history = H_FALSE;
  163.       ics_gamenum = -1;
  164. --- 2782,2788 ----
  165.       whiteFlag = blackFlag = FALSE;
  166.       maybePondering = FALSE;
  167.       thinkOutput[0] = NULLCHAR;
  168. !     ClearGameInfo(&gameInfo);
  169.       ics_user_moved = FALSE;
  170.       ics_getting_history = H_FALSE;
  171.       ics_gamenum = -1;
  172. ***************
  173. *** 2907,2912 ****
  174. --- 2911,2917 ----
  175.           appData.flipView = flipView;
  176.           if (appData.debugMode)
  177.             fprintf(debugFP, "Setting flipView to %d\n", flipView) ;
  178. +         DrawPosition(FALSE, NULL);
  179.       }
  180.       break;
  181.   
  182. ***************
  183. *** 3035,3041 ****
  184.       char buf[MSG_SIZ];
  185.   
  186.       if (strcmp(filename, "-") == 0) {
  187. !     return LoadGame(stdin, n, "stdin");
  188.       } else {
  189.       f = fopen(filename, "r");
  190.       if (f == NULL) {
  191. --- 3040,3046 ----
  192.       char buf[MSG_SIZ];
  193.   
  194.       if (strcmp(filename, "-") == 0) {
  195. !     return LoadGame(stdin, n, "stdin", FALSE);
  196.       } else {
  197.       f = fopen(filename, "r");
  198.       if (f == NULL) {
  199. ***************
  200. *** 3043,3049 ****
  201.           DisplayError(buf, errno);
  202.           return FALSE;
  203.       } else {
  204. !         return LoadGame(f, n, title);
  205.       }
  206.       }
  207.   }
  208. --- 3048,3054 ----
  209.           DisplayError(buf, errno);
  210.           return FALSE;
  211.       } else {
  212. !         return LoadGame(f, n, title, FALSE);
  213.       }
  214.       }
  215.   }
  216. ***************
  217. *** 3148,3156 ****
  218.       }
  219.       }
  220.       
  221.       rewind(lastLoadGameFP);
  222.       retVal = LoadGame(lastLoadGameFP, lastLoadGameNumber + offset,
  223. !               lastLoadGameTitle);
  224.   
  225.       if ((cmailMsgLoaded) && (offset != 0)) {
  226.       /* Make move registered during previous look at this game        */
  227. --- 3153,3163 ----
  228.       }
  229.       }
  230.   
  231. +     if (!lastLoadGameUseList) {
  232.       rewind(lastLoadGameFP);
  233. +     }
  234.       retVal = LoadGame(lastLoadGameFP, lastLoadGameNumber + offset,
  235. !               lastLoadGameTitle, lastLoadGameUseList);
  236.   
  237.       if ((cmailMsgLoaded) && (offset != 0)) {
  238.       /* Make move registered during previous look at this game        */
  239. ***************
  240. *** 3168,3180 ****
  241.   
  242.   /* Load the nth game from open file f, and cache the open file handle
  243.      for possible later use by ReloadGame */
  244. ! int LoadGame(f, gameNumber, title)
  245.        FILE *f;
  246.        int gameNumber;
  247.        char *title;
  248.   {
  249.       ChessMove cm, lastStart;
  250.       char buf[MSG_SIZ];
  251.   
  252.       if (gameMode != BeginningOfGame) {
  253.       Reset(FALSE);
  254. --- 3175,3189 ----
  255.   
  256.   /* Load the nth game from open file f, and cache the open file handle
  257.      for possible later use by ReloadGame */
  258. ! int LoadGame(f, gameNumber, title, useList)
  259.        FILE *f;
  260.        int gameNumber;
  261.        char *title;
  262. +      int useList;
  263.   {
  264.       ChessMove cm, lastStart;
  265.       char buf[MSG_SIZ];
  266. +     int seekPos;
  267.   
  268.       if (gameMode != BeginningOfGame) {
  269.       Reset(FALSE);
  270. ***************
  271. *** 3185,3206 ****
  272.       fclose(lastLoadGameFP);
  273.       }
  274.       lastLoadGameFP = f;
  275. -     if (gameNumber > 0)
  276. -       lastLoadGameNumber = gameNumber;
  277. -     else
  278. -       lastLoadGameNumber = 1;
  279. -     strcpy(lastLoadGameTitle, title);
  280.   
  281.       /* Negative game number means to seek to that byte position
  282.          and load the next game found. */
  283. !     if (gameNumber < 0) {
  284. !     fseek(f, -gameNumber, 0);
  285. !     gameNumber = 1;  /* do look for start marker, e.g. PGN tags */
  286.       }
  287.       yynewfile(f);
  288.   
  289. !     if (gameNumber > 1) {
  290. !     sprintf(buf, "%s %d", title, gameNumber);
  291.       DisplayTitle(buf);
  292.       } else {
  293.       DisplayTitle(title);
  294. --- 3194,3230 ----
  295.       fclose(lastLoadGameFP);
  296.       }
  297.       lastLoadGameFP = f;
  298.   
  299.       /* Negative game number means to seek to that byte position
  300.          and load the next game found. */  
  301. !     if (gameNumber > 0) {
  302. !     lastLoadGameNumber = gameNumber;
  303. !     seekPos = -1;
  304. !     if (useList) {
  305. !         ListGame *lg = (ListGame *) ListElem(&gameList, gameNumber-1);
  306. !         if (lg) {
  307. !         seekPos = lg->offset;
  308. !         gameNumber = 1;
  309. !         }
  310. !         else {
  311. !         seekPos = 0;
  312. !         }
  313. !     }
  314. !     } else {
  315. !     seekPos = -gameNumber;
  316. !     lastLoadGameNumber = gameNumber = 1;
  317.       }
  318. +     lastLoadGameUseList = useList;
  319. +     strcpy(lastLoadGameTitle, title);
  320. +     if (seekPos >= 0) {
  321. +     fseek(f, seekPos, 0);
  322. +     }
  323.       yynewfile(f);
  324.   
  325. !     if (lastLoadGameNumber > 1) {
  326. !     sprintf(buf, "%s %d", title, lastLoadGameNumber);
  327.       DisplayTitle(buf);
  328.       } else {
  329.       DisplayTitle(title);
  330. ***************
  331. *** 3340,3346 ****
  332.       while (cm == PGNTag) {
  333.       if (appData.debugMode) 
  334.         fprintf(debugFP, "Parsed PGNTag: %s\n", yy_text);
  335. !     ParsePGNTag(yy_text);
  336.       yyboardindex = forwardMostMove;
  337.       cm = (ChessMove) yylex();
  338.       /* Handle comments interspersed among the tags */
  339. --- 3364,3370 ----
  340.       while (cm == PGNTag) {
  341.       if (appData.debugMode)
  342.         fprintf(debugFP, "Parsed PGNTag: %s\n", yy_text);
  343. !     ParsePGNTag(yy_text, &gameInfo);
  344.       yyboardindex = forwardMostMove;
  345.       cm = (ChessMove) yylex();
  346.       /* Handle comments interspersed among the tags */
  347. ***************
  348. *** 3361,3367 ****
  349.       }
  350.   
  351.       if (gameInfo.event != NULL) {
  352. !     char *tags = PGNTags();
  353.       if (cmailMsgLoaded) {
  354.           tags = AppendCmailMsg(tags);
  355.       }
  356. --- 3385,3391 ----
  357.       }
  358.   
  359.       if (gameInfo.event != NULL) {
  360. !     char *tags = PGNTags(&gameInfo);
  361.       if (cmailMsgLoaded) {
  362.           tags = AppendCmailMsg(tags);
  363.       }
  364. ***************
  365. *** 3530,3536 ****
  366.       char buf[MSG_SIZ];
  367.   
  368.       if (strcmp(filename, "-") == 0) {
  369. !     return LoadPosition(stdin, n, "stdin");
  370.       } else {
  371.       f = fopen(filename, "r");
  372.       if (f == NULL) {
  373. --- 3554,3560 ----
  374.       char buf[MSG_SIZ];
  375.   
  376.       if (strcmp(filename, "-") == 0) {
  377. !     return LoadPosition(stdin, n, "stdin", FALSE);
  378.       } else {
  379.       f = fopen(filename, "r");
  380.       if (f == NULL) {
  381. ***************
  382. *** 3538,3553 ****
  383.           DisplayError(buf, errno);
  384.           return FALSE;
  385.       } else {
  386. !         return LoadPosition(f, n, title);
  387.       }
  388.       }
  389.   }
  390.   
  391.   /* Load the nth position from the given open file, and close it */
  392. ! int LoadPosition(fp, positionNumber, title)
  393.        FILE *fp;
  394.        int positionNumber;
  395.        char *title;
  396.   {
  397.       char *p, line[MSG_SIZ];
  398.       Board initial_position;
  399. --- 3562,3578 ----
  400.           DisplayError(buf, errno);
  401.           return FALSE;
  402.       } else {
  403. !         return LoadPosition(f, n, title, FALSE);
  404.       }
  405.       }
  406.   }
  407.   
  408.   /* Load the nth position from the given open file, and close it */
  409. ! int LoadPosition(fp, positionNumber, title, dummy)
  410.        FILE *fp;
  411.        int positionNumber;
  412.        char *title;
  413. +      int dummy;
  414.   {
  415.       char *p, line[MSG_SIZ];
  416.       Board initial_position;
  417. ***************
  418. *** 3703,3709 ****
  419.       char buf[MSG_SIZ];
  420.   
  421.       if (strcmp(filename, "-") == 0) {
  422. !     return SaveGame(toUserFP, 0, NULL);
  423.       } else {
  424.       f = fopen(filename, "a");
  425.       if (f == NULL) {
  426. --- 3728,3734 ----
  427.       char buf[MSG_SIZ];
  428.   
  429.       if (strcmp(filename, "-") == 0) {
  430. !     return SaveGame(toUserFP, 0, NULL, FALSE);
  431.       } else {
  432.       f = fopen(filename, "a");
  433.       if (f == NULL) {
  434. ***************
  435. *** 3711,3717 ****
  436.           DisplayError(buf, errno);
  437.           return FALSE;
  438.       } else {
  439. !         return SaveGame(f, 0, NULL);
  440.       }
  441.       }
  442.   }
  443. --- 3736,3742 ----
  444.           DisplayError(buf, errno);
  445.           return FALSE;
  446.       } else {
  447. !         return SaveGame(f, 0, NULL, FALSE);
  448.       }
  449.       }
  450.   }
  451. ***************
  452. *** 3742,3748 ****
  453.       
  454.       tm = time((time_t *) NULL);
  455.       
  456. !     PrintPGNTags(f);
  457.       
  458.       if (backwardMostMove > 0 || startedFromSetupPosition) {
  459.       fprintf(f, "[FEN \"%s\"]\n[SetUp \"1\"]\n",
  460. --- 3767,3773 ----
  461.   
  462.       tm = time((time_t *) NULL);
  463.   
  464. !     PrintPGNTags(f, &gameInfo);
  465.   
  466.       if (backwardMostMove > 0 || startedFromSetupPosition) {
  467.       fprintf(f, "[FEN \"%s\"]\n[SetUp \"1\"]\n",
  468. ***************
  469. *** 3902,3911 ****
  470.   }
  471.   
  472.   /* Save the current game to open file f and close the file */
  473. ! int SaveGame(f, dummy, dummy2)
  474.        FILE *f;
  475.        int dummy;
  476.        char *dummy2;
  477.   {
  478.       if (appData.oldSaveStyle)
  479.         return SaveGameOldStyle(f);
  480. --- 3927,3937 ----
  481.   }
  482.   
  483.   /* Save the current game to open file f and close the file */
  484. ! int SaveGame(f, dummy, dummy2, dummy3)
  485.        FILE *f;
  486.        int dummy;
  487.        char *dummy2;
  488. +      int dummy3;
  489.   {
  490.       if (appData.oldSaveStyle)
  491.         return SaveGameOldStyle(f);
  492. ***************
  493. *** 3921,3927 ****
  494.       char buf[MSG_SIZ];
  495.   
  496.       if (strcmp(filename, "-") == 0) {
  497. !     return SavePosition(toUserFP, 0, NULL);
  498.       } else {
  499.       f = fopen(filename, "a");
  500.       if (f == NULL) {
  501. --- 3947,3953 ----
  502.       char buf[MSG_SIZ];
  503.   
  504.       if (strcmp(filename, "-") == 0) {
  505. !     return SavePosition(toUserFP, 0, NULL, FALSE);
  506.       } else {
  507.       f = fopen(filename, "a");
  508.       if (f == NULL) {
  509. ***************
  510. *** 3929,3935 ****
  511.           DisplayError(buf, errno);
  512.           return FALSE;
  513.       } else {
  514. !         SavePosition(f, 0, NULL);
  515.           return TRUE;
  516.       }
  517.       }
  518. --- 3955,3961 ----
  519.           DisplayError(buf, errno);
  520.           return FALSE;
  521.       } else {
  522. !         SavePosition(f, 0, NULL, FALSE);
  523.           return TRUE;
  524.       }
  525.       }
  526. ***************
  527. *** 3936,3945 ****
  528.   }
  529.   
  530.   /* Save the current position to the given open file and close the file */
  531. ! int SavePosition(f, dummy, dummy2)
  532.        FILE *f;
  533.        int dummy;
  534.        char *dummy2;
  535.   {
  536.       time_t tm;
  537.       extern char *programName;
  538. --- 3962,3972 ----
  539.   }
  540.   
  541.   /* Save the current position to the given open file and close the file */
  542. ! int SavePosition(f, dummy, dummy2, dummy3)
  543.        FILE *f;
  544.        int dummy;
  545.        char *dummy2;
  546. +      int dummy3;
  547.   {
  548.       time_t tm;
  549.       extern char *programName;
  550. ***************
  551. *** 4095,4101 ****
  552.           
  553.           sprintf(string, "%s.pos.out", appData.cmailGameName);
  554.           f = fopen(string, "w");
  555. !         SavePosition(f, 0, NULL);
  556.           fclose(f);
  557.       } else {
  558.           fprintf(f, "{--------------\n");
  559. --- 4122,4128 ----
  560.   
  561.           sprintf(string, "%s.pos.out", appData.cmailGameName);
  562.           f = fopen(string, "w");
  563. !         SavePosition(f, 0, NULL, FALSE);
  564.           fclose(f);
  565.       } else {
  566.           fprintf(f, "{--------------\n");
  567. ***************
  568. *** 4102,4108 ****
  569.           PrintPosition(f, currentMove);
  570.           fprintf(f, "--------------}\n\n");
  571.           
  572. !         SaveGame(f, 0, NULL);
  573.           fclose(f);
  574.       }
  575.       
  576. --- 4129,4135 ----
  577.           PrintPosition(f, currentMove);
  578.           fprintf(f, "--------------}\n\n");
  579.   
  580. !         SaveGame(f, 0, NULL, FALSE);
  581.           fclose(f);
  582.       }
  583.   
  584. ***************
  585. *** 4121,4127 ****
  586.       static char *partCommandString = "cmail -xv%s -remail -game %s 2>&1";
  587.       FILE *commandOutput;
  588.       char buffer[MSG_SIZ], msg[MSG_SIZ], string[MSG_SIZ];
  589. !     int nBytes;
  590.       int nBuffers;
  591.       int i;
  592.       int archived;
  593. --- 4148,4154 ----
  594.       static char *partCommandString = "cmail -xv%s -remail -game %s 2>&1";
  595.       FILE *commandOutput;
  596.       char buffer[MSG_SIZ], msg[MSG_SIZ], string[MSG_SIZ];
  597. !     int nBytes = 0; /*  Suppress warnings on uninitialized variables    */
  598.       int nBuffers;
  599.       int i;
  600.       int archived;
  601. ***************
  602. *** 5180,5186 ****
  603.   void AboutGameEvent()
  604.   {
  605.       if (gameInfo.event != NULL) {
  606. !     char *tags = PGNTags();
  607.       if (cmailMsgLoaded) {
  608.           tags = AppendCmailMsg(tags);
  609.       }
  610. --- 5207,5213 ----
  611.   void AboutGameEvent()
  612.   {
  613.       if (gameInfo.event != NULL) {
  614. !     char *tags = PGNTags(&gameInfo);
  615.       if (cmailMsgLoaded) {
  616.           tags = AppendCmailMsg(tags);
  617.       }
  618. ***************
  619. *** 5221,5259 ****
  620.       }
  621.   }
  622.   
  623. - void ClearGameInfo()
  624. - {
  625. -     if (gameInfo.event != NULL) free(gameInfo.event);
  626. -     gameInfo.event = NULL;
  627. -     if (gameInfo.site != NULL) free(gameInfo.site);
  628. -     gameInfo.site = NULL;
  629. -     if (gameInfo.date != NULL) free(gameInfo.date);
  630. -     gameInfo.date = NULL;
  631. -     if (gameInfo.round != NULL) free(gameInfo.round);
  632. -     gameInfo.round = NULL;
  633. -     if (gameInfo.white != NULL) free(gameInfo.white);
  634. -     gameInfo.white = NULL;
  635. -     if (gameInfo.black != NULL) free(gameInfo.black);
  636. -     gameInfo.black = NULL;
  637. -     gameInfo.result = GameUnfinished;
  638. -     if (gameInfo.resultDetails != NULL) {
  639. -     free(gameInfo.resultDetails);
  640. -     gameInfo.resultDetails = NULL;
  641. -     }
  642. -     if (gameInfo.fen != NULL) free(gameInfo.fen);
  643. -     gameInfo.fen = NULL;
  644. -     if (gameInfo.timeControl != NULL) free(gameInfo.timeControl);
  645. -     gameInfo.timeControl = NULL;
  646. -     if (gameInfo.extraTags != NULL) free(gameInfo.extraTags);
  647. -     gameInfo.extraTags = NULL;
  648. - }
  649.   void SetGameInfo()
  650.   {
  651.       char buf[MSG_SIZ];
  652.   
  653.       /* This routine is used only for certain modes */
  654. !     ClearGameInfo();
  655.       switch (gameMode) {
  656.         case MachinePlaysWhite:
  657.       gameInfo.event = StrSave("GNU Chess game");
  658. --- 5248,5259 ----
  659.       }
  660.   }
  661.   
  662.   void SetGameInfo()
  663.   {
  664.       char buf[MSG_SIZ];
  665.   
  666.       /* This routine is used only for certain modes */
  667. !     ClearGameInfo(&gameInfo);
  668.       switch (gameMode) {
  669.         case MachinePlaysWhite:
  670.       gameInfo.event = StrSave("GNU Chess game");
  671. ***************
  672. *** 5344,5458 ****
  673.       }
  674.   }
  675.   
  676. - void ParsePGNTag(tag)
  677. -      char *tag;
  678. - {
  679. -     char *name, *value, *p, *oldTags;
  680. -     int len;
  681. -     name = tag;
  682. -     while (!isalpha(*name) && !isdigit(*name)) name++;
  683. -     p = name;
  684. -     while (*p != ' ' && *p != '\t' && *p != '\n') p++;
  685. -     *p = NULLCHAR;
  686. -     value = strchr(p + 1, '"') + 1;
  687. -     p = strrchr(value, '"');
  688. -     *p = NULLCHAR;
  689. -     if (strcmp(name, "Event") == 0) {
  690. -     gameInfo.event = StrSave(value);
  691. -     } else if (strcmp(name, "Site") == 0) {
  692. -     gameInfo.site = StrSave(value);
  693. -     } else if (strcmp(name, "Date") == 0) {
  694. -     gameInfo.date = StrSave(value);
  695. -     } else if (strcmp(name, "Round") == 0) {
  696. -     gameInfo.round = StrSave(value);
  697. -     } else if (strcmp(name, "White") == 0) {
  698. -     gameInfo.white = StrSave(value);
  699. -     } else if (strcmp(name, "Black") == 0) {
  700. -     gameInfo.black = StrSave(value);
  701. -     } else if (strcmp(name, "Result") == 0) {
  702. -     if (strcmp(value, "1-0") == 0)
  703. -       gameInfo.result = WhiteWins;
  704. -     else if (strcmp(value, "0-1") == 0)
  705. -       gameInfo.result = BlackWins;
  706. -     else if (strcmp(value, "1/2-1/2") == 0)
  707. -       gameInfo.result = GameIsDrawn;
  708. -     else
  709. -       gameInfo.result = GameUnfinished;
  710. -     } else if (strcmp(name, "FEN") == 0) {
  711. -     gameInfo.fen = StrSave(value);
  712. -     } else if (strcmp(name, "SetUp") == 0) {
  713. -     /* ignore on input; presence of FEN governs */
  714. -     } else {
  715. -     if (gameInfo.extraTags == NULL)
  716. -       oldTags = "";
  717. -     else
  718. -       oldTags = gameInfo.extraTags;
  719. -     /* Buffer size includes 7 bytes of space for [ ""]\n\0 */
  720. -     len = strlen(oldTags) + strlen(value) + strlen(name) + 7;
  721. -     p = (char *) malloc(len);
  722. -     sprintf(p, "%s[%s \"%s\"]\n", oldTags, name, value);
  723. -     if (gameInfo.extraTags != NULL) free(gameInfo.extraTags);
  724. -     gameInfo.extraTags = p;
  725. -     }
  726. - }
  727. - char *PGNTagsStatic()
  728. - {
  729. -     static char buf[8192];
  730. -     char buf1[MSG_SIZ];
  731. -     buf[0] = NULLCHAR;
  732. -     if (gameInfo.event != NULL) {
  733. -     sprintf(buf1, "[Event \"%s\"]\n", gameInfo.event);
  734. -     strcat(buf, buf1);
  735. -     }
  736. -     if (gameInfo.site != NULL) {
  737. -     sprintf(buf1, "[Site \"%s\"]\n", gameInfo.site);
  738. -     strcat(buf, buf1);
  739. -     }
  740. -     if (gameInfo.date != NULL) {
  741. -     sprintf(buf1, "[Date \"%s\"]\n", gameInfo.date);
  742. -     strcat(buf, buf1);
  743. -     }
  744. -     if (gameInfo.round != NULL) {
  745. -     sprintf(buf1, "[Round \"%s\"]\n", gameInfo.round);
  746. -     strcat(buf, buf1);
  747. -     }
  748. -     if (gameInfo.white != NULL) {
  749. -     sprintf(buf1, "[White \"%s\"]\n", gameInfo.white);
  750. -     strcat(buf, buf1);
  751. -     }
  752. -     if (gameInfo.black != NULL) {
  753. -     sprintf(buf1, "[Black \"%s\"]\n", gameInfo.black);
  754. -     strcat(buf, buf1);
  755. -     }
  756. -     sprintf(buf1, "[Result \"%s\"]\n", PGNResult(gameInfo.result));
  757. -     strcat(buf, buf1);
  758. -     if (gameInfo.timeControl != NULL) {
  759. -     sprintf(buf1, "[TimeControl \"%s\"]\n", gameInfo.timeControl);
  760. -     strcat(buf, buf1);
  761. -     }
  762. -     if (gameInfo.extraTags != NULL) {
  763. -     strcat(buf, gameInfo.extraTags);
  764. -     }
  765. -     return buf;
  766. - }
  767. - void PrintPGNTags(fp)
  768. -      FILE *fp;
  769. - {
  770. -     fprintf(fp, "%s", PGNTagsStatic());
  771. - }
  772. - char *PGNTags()
  773. - {
  774. -     return StrSave(PGNTagsStatic());
  775. - }
  776.   void ReplaceComment(index, text)
  777.        int index;
  778.        char *text;
  779. --- 5344,5349 ----
  780. ***************
  781. *** 6092,6102 ****
  782.   {
  783.       char *ret;
  784.   
  785. !     ret = (char *) malloc(strlen(s) + 1);
  786.       strcpy(ret, s);
  787.       return ret;
  788.   }
  789.   
  790.   char *PGNDate()
  791.   {
  792.       time_t clock;
  793. --- 5983,6007 ----
  794.   {
  795.       char *ret;
  796.   
  797. !     if ((ret = (char *) malloc(strlen(s) + 1))) {
  798.       strcpy(ret, s);
  799. +     }
  800.       return ret;
  801.   }
  802.   
  803. + char *StrSavePtr(s, savePtr)
  804. +     char *s, **savePtr;
  805. + {
  806. +     if (*savePtr) {
  807. +     free(*savePtr);
  808. +     }
  809. +     if ((*savePtr = (char *) malloc(strlen(s) + 1))) {
  810. +     strcpy(*savePtr, s);
  811. +     }
  812. +     return(*savePtr);
  813. + }
  814.   char *PGNDate()
  815.   {
  816.       time_t clock;
  817. ***************
  818. *** 6110,6130 ****
  819.       return StrSave(buf);
  820.   }
  821.   
  822. - char *PGNResult(result)
  823. -      ChessMove result;
  824. - {
  825. -     switch (result) {
  826. -       case GameUnfinished:
  827. -       default:
  828. -     return "*";
  829. -       case WhiteWins:
  830. -     return "1-0";
  831. -       case BlackWins:
  832. -     return "0-1";
  833. -       case GameIsDrawn:
  834. -     return "1/2-1/2";
  835. -     }
  836. - }
  837.   
  838.   char *PositionToFEN(move)
  839.        int move;
  840. --- 6015,6020 ----
  841. diff -c -b -r xboard-3.2.pl2/backend.h AmyBoard-3.2.pl2/backend.h
  842. *** xboard-3.2.pl2/backend.h    Thu Mar 09 02:02:43 1995
  843. --- AmyBoard-3.2.pl2/backend.h    Tue May 23 19:30:30 1995
  844. ***************
  845. *** 1,6 ****
  846.   /*
  847.    * backend.h -- Interface exported by XBoard back end
  848. !  * $Id: backend.h,v 1.19 1995/03/09 00:43:28 mann Exp $
  849.    *
  850.    * Copyright 1991 by Digital Equipment Corporation, Maynard, Massachusetts.
  851.    * Enhancements Copyright 1992-95 Free Software Foundation, Inc.
  852. --- 1,6 ----
  853.   /*
  854.    * backend.h -- Interface exported by XBoard back end
  855. !  * $Id: backend.h,v 1.1 1995/04/12 21:19:14 Joe Exp $
  856.    *
  857.    * Copyright 1991 by Digital Equipment Corporation, Maynard, Massachusetts.
  858.    * Enhancements Copyright 1992-95 Free Software Foundation, Inc.
  859. ***************
  860. *** 45,50 ****
  861. --- 45,52 ----
  862.    * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  863.    * ------------------------------------------------------------------------
  864.    */
  865. + #include "lists.h"
  866.   extern GameMode gameMode;
  867.   extern int pausing, cmailMsgLoaded, flipView;
  868.   extern FILE *fromUserFP, *toUserFP, *debugFP;
  869. ***************
  870. *** 57,67 ****
  871.   int OKToStartUserMove P((int x, int y));
  872.   void Reset P((int redraw));
  873.   void ResetGameEvent P((void));
  874. ! int LoadGame P((FILE *f, int n, char *title));
  875.   int ReloadGame P((int offset));
  876. ! int SaveGame P((FILE *f, int dummy, char *dummy2));
  877. ! int LoadPosition P((FILE *f, int n, char *title));
  878. ! int SavePosition P((FILE *f, int dummy, char *dummy2));
  879.   void EditPositionEvent P((void));
  880.   void FlipViewEvent P((void));
  881.   void MachineWhiteEvent P((void));
  882. --- 59,69 ----
  883.   int OKToStartUserMove P((int x, int y));
  884.   void Reset P((int redraw));
  885.   void ResetGameEvent P((void));
  886. ! int LoadGame P((FILE *f, int n, char *title, int useList));
  887.   int ReloadGame P((int offset));
  888. ! int SaveGame P((FILE *f, int dummy, char *dummy2, int dummy3));
  889. ! int LoadPosition P((FILE *f, int n, char *title, int dummy));
  890. ! int SavePosition P((FILE *f, int dummy, char *dummy2, int dummy3));
  891.   void EditPositionEvent P((void));
  892.   void FlipViewEvent P((void));
  893.   void MachineWhiteEvent P((void));
  894. ***************
  895. *** 107,114 ****
  896.   void ReloadCmailGameEvent P((int unregister));
  897.   void MailMoveEvent P((void));
  898.   
  899. - int StrCaseCmp P((char *s1, char *s2));
  900.   char *StrStr P((char *string, char *match));
  901.   int ToLower P((int c));
  902.   int ToUpper P((int c));
  903. ! char *StrSave P((char *s));
  904. --- 109,153 ----
  905.   void ReloadCmailGameEvent P((int unregister));
  906.   void MailMoveEvent P((void));
  907.   
  908.   char *StrStr P((char *string, char *match));
  909. + char *StrSave P((char *s));
  910. + char *StrSavePtr P((char *s, char **savePtr));
  911. + #ifndef _amigados
  912. + int StrCaseCmp P((char *s1, char *s2));
  913.   int ToLower P((int c));
  914.   int ToUpper P((int c));
  915. ! #else
  916. ! #define StrCaseCmp Stricmp  /*  Use utility.library functions   */
  917. ! #include <proto/utility.h>
  918. ! #endif
  919. ! extern GameInfo gameInfo;
  920. ! /* pgntags.c prototypes
  921. !  */
  922. ! char *PGNTags P((GameInfo *));
  923. ! void PrintPGNTags P((FILE *f, GameInfo *));
  924. ! int ParsePGNTag P((char *, GameInfo *));
  925. ! char *PGNResult P((ChessMove result));
  926. ! /* gamelist.c prototypes
  927. !  */
  928. ! /* A game node in the double linked list of games.
  929. !  */
  930. ! typedef struct _ListGame {
  931. !     ListNode node;
  932. !     int number;
  933. !     unsigned long offset;   /*  Byte offset of game within file.     */
  934. !     GameInfo gameInfo;      /*  Note, that some entries may be NULL, */
  935. !                 /*  except for event, black and white,   */
  936. !                 /*  which are initialized to "Unknown".  */
  937. ! } ListGame;
  938. !  
  939. ! extern List gameList;
  940. ! void ClearGameInfo P((GameInfo *));
  941. ! int GameListBuild P((FILE *));
  942. ! void GameListInitGameInfo P((GameInfo *));
  943. diff -c -b -r xboard-3.2.pl2/bitmaps.h AmyBoard-3.2.pl2/bitmaps.h
  944. *** xboard-3.2.pl2/bitmaps.h    Thu Mar 09 02:02:46 1995
  945. --- AmyBoard-3.2.pl2/bitmaps.h    Tue May 23 19:30:30 1995
  946. ***************
  947. *** 1,6 ****
  948.   /*
  949.    * bitmaps.h - Include bitmap files for pieces and icons
  950. !  * $Id: bitmaps.h,v 1.2 1995/03/09 00:43:28 mann Exp $
  951.    *
  952.    * Copyright 1991 by Digital Equipment Corporation, Maynard, Massachusetts.
  953.    * Enhancements Copyright 1992-95 Free Software Foundation, Inc.
  954. --- 1,6 ----
  955.   /*
  956.    * bitmaps.h - Include bitmap files for pieces and icons
  957. !  * $Id: bitmaps.h,v 1.1 1995/04/12 21:18:57 Joe Exp $
  958.    *
  959.    * Copyright 1991 by Digital Equipment Corporation, Maynard, Massachusetts.
  960.    * Enhancements Copyright 1992-95 Free Software Foundation, Inc.
  961. diff -c -b -r xboard-3.2.pl2/childio.h AmyBoard-3.2.pl2/childio.h
  962. *** xboard-3.2.pl2/childio.h    Thu Mar 09 02:02:50 1995
  963. --- AmyBoard-3.2.pl2/childio.h    Tue May 23 19:30:30 1995
  964. ***************
  965. *** 1,6 ****
  966.   /*
  967.    * childio.h -- set up communication with child processes
  968. !  * $Id: childio.h,v 1.3 1995/03/09 00:43:28 mann Exp $
  969.    *
  970.    * Copyright 1991 by Digital Equipment Corporation, Maynard, Massachusetts.
  971.    * Enhancements Copyright 1992-95 Free Software Foundation, Inc.
  972. --- 1,6 ----
  973.   /*
  974.    * childio.h -- set up communication with child processes
  975. !  * $Id: childio.h,v 1.1 1995/04/12 21:18:13 Joe Exp $
  976.    *
  977.    * Copyright 1991 by Digital Equipment Corporation, Maynard, Massachusetts.
  978.    * Enhancements Copyright 1992-95 Free Software Foundation, Inc.
  979. diff -c -b -r xboard-3.2.pl2/common.h AmyBoard-3.2.pl2/common.h
  980. *** xboard-3.2.pl2/common.h    Thu Mar 09 02:02:51 1995
  981. --- AmyBoard-3.2.pl2/common.h    Tue May 23 19:30:30 1995
  982. ***************
  983. *** 1,6 ****
  984.   /*
  985.    * common.h -- Common definitions for X and Windows NT versions of XBoard
  986. !  * $Id: common.h,v 1.24 1995/03/09 00:43:28 mann Exp $
  987.    *
  988.    * Copyright 1991 by Digital Equipment Corporation, Maynard, Massachusetts.
  989.    * Enhancements Copyright 1992-95 Free Software Foundation, Inc.
  990. --- 1,6 ----
  991.   /*
  992.    * common.h -- Common definitions for X and Windows NT versions of XBoard
  993. !  * $Id: common.h,v 1.1 1995/04/12 21:17:58 Joe Exp $
  994.    *
  995.    * Copyright 1991 by Digital Equipment Corporation, Maynard, Massachusetts.
  996.    * Enhancements Copyright 1992-95 Free Software Foundation, Inc.
  997. ***************
  998. *** 48,54 ****
  999.   
  1000.   /* Begin compatibility grunge  */
  1001.   
  1002. ! #if defined(__STDC__) || defined(WIN32)
  1003.   #define    P(args)    args
  1004.   typedef void *VOIDSTAR;
  1005.   #else
  1006. --- 48,54 ----
  1007.   
  1008.   /* Begin compatibility grunge  */
  1009.   
  1010. ! #if defined(__STDC__) || defined(WIN32) || defined(_amigados)
  1011.   #define P(args) args
  1012.   typedef void *VOIDSTAR;
  1013.   #else
  1014. ***************
  1015. *** 61,70 ****
  1016. --- 61,82 ----
  1017.   typedef char *String;
  1018.   #define popen _popen
  1019.   #define pclose _pclose
  1020. + #else
  1021. + #ifdef _amigados        /*  It is important, that these types have  */
  1022. + typedef int Boolean;    /*  a length of 4 bytes each, as we are     */
  1023. + typedef char *String;   /*  using ReadArgs() for argument parsing.  */
  1024. + #ifdef _DCC
  1025. + FILE *popen(const char *, const char *);
  1026. + int pclose(FILE *);
  1027. + #endif
  1028.   #else
  1029.   #include <X11/Intrinsic.h>
  1030.   #endif
  1031. + #endif
  1032.   
  1033.   #ifndef TRUE
  1034.   #define TRUE 1
  1035.   #define FALSE 0
  1036. ***************
  1037. *** 142,151 ****
  1038. --- 154,170 ----
  1039.     } ChessMove;
  1040.   
  1041.   typedef struct {
  1042. + #if !defined(_amigados)
  1043.       char *whitePieceColor;
  1044.       char *blackPieceColor;
  1045.       char *lightSquareColor;
  1046.       char *darkSquareColor;
  1047. + #else
  1048. +     int whitePieceColor;
  1049. +     int blackPieceColor;
  1050. +     int lightSquareColor;
  1051. +     int darkSquareColor;
  1052. + #endif
  1053.       int movesPerSession;
  1054.       char *initString;
  1055.       char *whiteString;
  1056. ***************
  1057. *** 206,211 ****
  1058. --- 225,234 ----
  1059.   /********************************************/
  1060.       Boolean zippyTalk;
  1061.       Boolean zippyPlay;
  1062. + /********************************************/
  1063. + /**** Currently used only by AmyBoard: ******/
  1064. +     Boolean useGameList;
  1065. + /********************************************/
  1066.   } AppData, *AppDataPtr;
  1067.   
  1068.   extern AppData appData;
  1069. diff -c -b -r xboard-3.2.pl2/frontend.h AmyBoard-3.2.pl2/frontend.h
  1070. *** xboard-3.2.pl2/frontend.h    Thu Mar 09 02:02:51 1995
  1071. --- AmyBoard-3.2.pl2/frontend.h    Tue May 23 19:30:32 1995
  1072. ***************
  1073. *** 1,6 ****
  1074.   /*
  1075.    * frontend.h -- Interface exported by all XBoard front ends
  1076. !  * $Id: frontend.h,v 1.12 1995/03/09 00:43:28 mann Exp $
  1077.    *
  1078.    * Copyright 1991 by Digital Equipment Corporation, Maynard, Massachusetts.
  1079.    * Enhancements Copyright 1992-95 Free Software Foundation, Inc.
  1080. --- 1,6 ----
  1081.   /*
  1082.    * frontend.h -- Interface exported by all XBoard front ends
  1083. !  * $Id: frontend.h,v 1.1 1995/04/12 21:16:21 Joe Exp $
  1084.    *
  1085.    * Copyright 1991 by Digital Equipment Corporation, Maynard, Massachusetts.
  1086.    * Enhancements Copyright 1992-95 Free Software Foundation, Inc.
  1087. ***************
  1088. *** 53,59 ****
  1089.   void SetNCPMode P((void));
  1090.   void SetCmailMode P((void));
  1091.   void DisplayTitle P((String title));
  1092. ! void DisplayMessage P((String message1, String message2));
  1093.   void DisplayError P((String message, int error));
  1094.   void DisplayFatalError P((String message, int error, int status));
  1095.   void DisplayInformation P((String message));
  1096. --- 53,59 ----
  1097.   void SetNCPMode P((void));
  1098.   void SetCmailMode P((void));
  1099.   void DisplayTitle P((String title));
  1100. ! void DisplayMessage P((String message, String extMessage));
  1101.   void DisplayError P((String message, int error));
  1102.   void DisplayFatalError P((String message, int error, int status));
  1103.   void DisplayInformation P((String message));
  1104. ***************
  1105. *** 102,106 ****
  1106. --- 102,109 ----
  1107.   int OutputToProcess P((ProcRef pr, char *message, int count, int *outError));
  1108.   
  1109.   void CmailSigHandlerCallBack P((InputSourceRef isr, char *buf, int count, int error));
  1110. + void EditPositionPopUp P((void));
  1111. + void EditPositionPopDown P((void));
  1112.   
  1113.   extern ProcRef cmailPR;
  1114. diff -c -b -r xboard-3.2.pl2/moves.c AmyBoard-3.2.pl2/moves.c
  1115. *** xboard-3.2.pl2/moves.c    Thu Mar 09 02:02:52 1995
  1116. --- AmyBoard-3.2.pl2/moves.c    Tue May 23 19:30:32 1995
  1117. ***************
  1118. *** 1,6 ****
  1119.   /*
  1120.    * moves.c - Move generation and checking
  1121. !  * $Id: moves.c,v 1.6 1995/03/09 00:43:28 mann Exp $
  1122.    *
  1123.    * Copyright 1991 by Digital Equipment Corporation, Maynard, Massachusetts.
  1124.    * Enhancements Copyright 1992-95 Free Software Foundation, Inc.
  1125. --- 1,6 ----
  1126.   /*
  1127.    * moves.c - Move generation and checking
  1128. !  * $Id: moves.c,v 1.1 1995/04/12 21:16:02 Joe Exp $
  1129.    *
  1130.    * Copyright 1991 by Digital Equipment Corporation, Maynard, Massachusetts.
  1131.    * Enhancements Copyright 1992-95 Free Software Foundation, Inc.
  1132. ***************
  1133. *** 57,62 ****
  1134. --- 57,67 ----
  1135.   #include "moves.h"
  1136.   #include "parser.h"
  1137.   
  1138. + int WhitePiece P((ChessSquare));
  1139. + int BlackPiece P((ChessSquare));
  1140. + int SameColor P((ChessSquare, ChessSquare));
  1141.   int WhitePiece(piece)
  1142.        ChessSquare piece;
  1143.   {
  1144. ***************
  1145. *** 514,520 ****
  1146.   {
  1147.       CheckTestClosure cl;
  1148.       ChessSquare king = flags & F_WHITE_ON_MOVE ? WhiteKing : BlackKing;
  1149. !     ChessSquare captured;
  1150.   
  1151.       if (rf >= 0) {
  1152.       if (enPassant) {
  1153. --- 519,526 ----
  1154.   {
  1155.       CheckTestClosure cl;
  1156.       ChessSquare king = flags & F_WHITE_ON_MOVE ? WhiteKing : BlackKing;
  1157. !     ChessSquare captured = EmptySquare;
  1158. !     /*  Suppress warnings on uninitialized variables    */
  1159.   
  1160.       if (rf >= 0) {
  1161.       if (enPassant) {
  1162. diff -c -b -r xboard-3.2.pl2/moves.h AmyBoard-3.2.pl2/moves.h
  1163. *** xboard-3.2.pl2/moves.h    Thu Mar 09 02:02:52 1995
  1164. --- AmyBoard-3.2.pl2/moves.h    Tue May 23 19:30:32 1995
  1165. ***************
  1166. *** 1,6 ****
  1167.   /*
  1168.    * moves.h - Move generation and checking
  1169. !  * $Id: moves.h,v 1.4 1995/03/09 00:43:28 mann Exp $
  1170.    *
  1171.    * Copyright 1991 by Digital Equipment Corporation, Maynard, Massachusetts.
  1172.    * Enhancements Copyright 1992-95 Free Software Foundation, Inc.
  1173. --- 1,6 ----
  1174.   /*
  1175.    * moves.h - Move generation and checking
  1176. !  * $Id: moves.h,v 1.1 1995/04/12 21:15:29 Joe Exp $
  1177.    *
  1178.    * Copyright 1991 by Digital Equipment Corporation, Maynard, Massachusetts.
  1179.    * Enhancements Copyright 1992-95 Free Software Foundation, Inc.
  1180. diff -c -b -r xboard-3.2.pl2/parser.c AmyBoard-3.2.pl2/parser.c
  1181. *** xboard-3.2.pl2/parser.c    Thu Mar 09 02:02:53 1995
  1182. --- AmyBoard-3.2.pl2/parser.c    Tue May 23 19:30:32 1995
  1183. ***************
  1184. *** 27,33 ****
  1185.   extern struct yysvf yysvec[], *yybgin;
  1186.   /*
  1187.    * parser.l -- lex parser of algebraic chess moves for XBoard
  1188. !  * $Id: parser.l,v 1.21 1995/03/09 00:43:28 mann Exp $
  1189.    *
  1190.    * Copyright 1991 by Digital Equipment Corporation, Maynard, Massachusetts.
  1191.    * Enhancements Copyright 1992-95 Free Software Foundation, Inc.
  1192. --- 27,33 ----
  1193.   extern struct yysvf yysvec[], *yybgin;
  1194.   /*
  1195.    * parser.l -- lex parser of algebraic chess moves for XBoard
  1196. !  * $Id: parser.c,v 1.1 1995/04/12 21:14:04 Joe Exp $
  1197.    *
  1198.    * Copyright 1991 by Digital Equipment Corporation, Maynard, Massachusetts.
  1199.    * Enhancements Copyright 1992-95 Free Software Foundation, Inc.
  1200. ***************
  1201. *** 131,136 ****
  1202. --- 131,138 ----
  1203.   static int input P((void));
  1204.   static void output P((int ch));
  1205.   static void unput P((int ch));
  1206. + int yylook P((void));
  1207. + int yyback P((int *, int));
  1208.   #endif
  1209.   #undef yywrap
  1210.   int yywrap P((void));
  1211. ***************
  1212. *** 782,787 ****
  1213. --- 784,799 ----
  1214.         return ret;
  1215.   }
  1216.   
  1217. + int yyoffset()
  1218. + {
  1219. +     int offset = ftell(lexFP) - unputCount;
  1220. +     if (offset < 0) {
  1221. +     offset = 0;
  1222. +     }
  1223. +     return(offset);
  1224. + }
  1225. +  
  1226.   static void output(ch)
  1227.        int ch;
  1228.   {
  1229. diff -c -b -r xboard-3.2.pl2/parser.h AmyBoard-3.2.pl2/parser.h
  1230. *** xboard-3.2.pl2/parser.h    Thu Mar 09 02:02:52 1995
  1231. --- AmyBoard-3.2.pl2/parser.h    Tue May 23 19:30:32 1995
  1232. ***************
  1233. *** 1,6 ****
  1234.   /*
  1235.    * parser.h -- Interface to XBoard move parser
  1236. !  * $Id: parser.h,v 1.4 1995/03/09 00:43:28 mann Exp $
  1237.    *
  1238.    * Copyright 1991 by Digital Equipment Corporation, Maynard, Massachusetts.
  1239.    * Enhancements Copyright 1992-95 Free Software Foundation, Inc.
  1240. --- 1,6 ----
  1241.   /*
  1242.    * parser.h -- Interface to XBoard move parser
  1243. !  * $Id: parser.h,v 1.1 1995/04/12 21:14:47 Joe Exp $
  1244.    *
  1245.    * Copyright 1991 by Digital Equipment Corporation, Maynard, Massachusetts.
  1246.    * Enhancements Copyright 1992-95 Free Software Foundation, Inc.
  1247. ***************
  1248. *** 54,56 ****
  1249. --- 54,57 ----
  1250.   extern int yyboardindex;
  1251.   extern char *yy_text;  /* needed because yytext is a char[] in lex
  1252.                 but a char* in flex */
  1253. + extern int yyoffset P((void));
  1254. diff -c -b -r xboard-3.2.pl2/parser.l AmyBoard-3.2.pl2/parser.l
  1255. *** xboard-3.2.pl2/parser.l    Thu Mar 09 02:02:52 1995
  1256. --- AmyBoard-3.2.pl2/parser.l    Tue May 23 19:30:32 1995
  1257. ***************
  1258. *** 67,72 ****
  1259. --- 67,83 ----
  1260.   /* This is flex */
  1261.   #undef YY_INPUT
  1262.   #define YY_INPUT(buf, result, max_size) my_yy_input(buf, &result, max_size)
  1263. + #ifdef _amigados    /*  AmigaDOS flex modifies yytext. Don't other?  */
  1264. + #define YY_DECL                     \
  1265. +     int _yylex YY_PROTO((void));    \
  1266. +     int yylex YY_PROTO((void))      \
  1267. +     {                               \
  1268. +     int result = _yylex();      \
  1269. +     yy_text = yytext;           \
  1270. +     return(result);             \
  1271. +     }                               \
  1272. +     int _yylex YY_PROTO((void))
  1273. + #endif
  1274.   #else
  1275.   /* This is lex */
  1276.   #undef input
  1277. ***************
  1278. *** 88,95 ****
  1279. --- 99,114 ----
  1280.   # include <unistd.h>
  1281.   #endif
  1282.   
  1283. + #if defined(_amigados)
  1284. + # include <errno.h>
  1285. + # if HAVE_FCNTL_H
  1286. + #  include <fcntl.h>    /*  isatty() prototype  */
  1287. + # endif /*  HAVE_FCNTL_H        */
  1288. + #endif  /*  defined(_amigados)  */
  1289.   #include "common.h"
  1290.   #include "backend.h"
  1291. + #include "frontend.h"
  1292.   #include "parser.h"
  1293.   #include "moves.h"
  1294.   
  1295. ***************
  1296. *** 111,116 ****
  1297. --- 130,137 ----
  1298.   static int input P((void));
  1299.   static void output P((int ch));
  1300.   static void unput P((int ch));
  1301. + int yylook P((void));
  1302. + int yyback P((int *, int));
  1303.   #endif
  1304.   #undef yywrap
  1305.   int yywrap P((void));
  1306. ***************
  1307. *** 709,714 ****
  1308. --- 730,748 ----
  1309.         return ret;
  1310.   }
  1311.   
  1312. + /*
  1313. +     Return offset of next pattern within current file.
  1314. + */
  1315. + int yyoffset()
  1316. + {
  1317. +     int offset = ftell(lexFP) - unputCount;
  1318. +     if (offset < 0) {
  1319. +     offset = 0;
  1320. +     }
  1321. +     return(offset);
  1322. + }
  1323.   static void output(ch)
  1324.        int ch;
  1325.   {
  1326. ***************
  1327. *** 785,812 ****
  1328.       }    
  1329.   }
  1330.   
  1331.   static YY_BUFFER_STATE my_file_buffer = NULL;
  1332.   
  1333.   void yynewstr(s)
  1334.        char *s;
  1335.   {
  1336. -     yy_text = (char *) yytext;
  1337.       if (my_file_buffer != NULL)
  1338.         yy_delete_buffer(my_file_buffer);
  1339.       StringToLex = s;
  1340.       my_file_buffer = yy_create_buffer(stdin, YY_BUF_SIZE);
  1341.       yy_switch_to_buffer(my_file_buffer);
  1342.   }
  1343.   
  1344.   void yynewfile(f)
  1345.        FILE *f;
  1346.   {
  1347. -     yy_text = (char *) yytext;
  1348.       if (my_file_buffer != NULL)
  1349.         yy_delete_buffer(my_file_buffer);
  1350.       StringToLex = NULL;
  1351.       my_file_buffer = yy_create_buffer(f, YY_BUF_SIZE);
  1352.       yy_switch_to_buffer(my_file_buffer);
  1353.   }
  1354.   #endif /*FLEX_SCANNER*/
  1355.   
  1356. --- 819,857 ----
  1357.       }
  1358.   }
  1359.   
  1360. + /*
  1361. +     Return offset of next pattern in the current file.
  1362. + */
  1363. + int yyoffset()
  1364. + {
  1365. +     int pos = yy_c_buf_p - yy_current_buffer->yy_ch_buf;
  1366. +     return(ftell(yy_current_buffer->yy_input_file) -
  1367. +        yy_n_chars + pos);
  1368. + }
  1369.   static YY_BUFFER_STATE my_file_buffer = NULL;
  1370.   
  1371.   void yynewstr(s)
  1372.        char *s;
  1373.   {
  1374.       if (my_file_buffer != NULL)
  1375.         yy_delete_buffer(my_file_buffer);
  1376.       StringToLex = s;
  1377.       my_file_buffer = yy_create_buffer(stdin, YY_BUF_SIZE);
  1378.       yy_switch_to_buffer(my_file_buffer);
  1379. +     yy_text = (char *) yytext;
  1380.   }
  1381.   
  1382.   void yynewfile(f)
  1383.        FILE *f;
  1384.   {
  1385.       if (my_file_buffer != NULL)
  1386.         yy_delete_buffer(my_file_buffer);
  1387.       StringToLex = NULL;
  1388.       my_file_buffer = yy_create_buffer(f, YY_BUF_SIZE);
  1389.       yy_switch_to_buffer(my_file_buffer);
  1390. +     yy_text = (char *) yytext;
  1391.   }
  1392.   #endif /*FLEX_SCANNER*/
  1393.   
  1394. diff -c -b -r xboard-3.2.pl2/xboard.c AmyBoard-3.2.pl2/xboard.c
  1395. *** xboard-3.2.pl2/xboard.c    Thu Mar 09 02:02:52 1995
  1396. --- AmyBoard-3.2.pl2/xboard.c    Tue May 23 19:30:34 1995
  1397. ***************
  1398. *** 1,6 ****
  1399.   /*
  1400.    * xboard.c -- X front end for XBoard
  1401. !  * $Id: xboard.c,v 1.42 1995/03/09 00:43:28 mann Exp $
  1402.    *
  1403.    * Copyright 1991 by Digital Equipment Corporation, Maynard, Massachusetts.
  1404.    * Enhancements Copyright 1992-95 Free Software Foundation, Inc.
  1405. --- 1,6 ----
  1406.   /*
  1407.    * xboard.c -- X front end for XBoard
  1408. !  * $Id: xboard.c,v 1.1 1995/04/12 21:13:30 Joe Exp $
  1409.    *
  1410.    * Copyright 1991 by Digital Equipment Corporation, Maynard, Massachusetts.
  1411.    * Enhancements Copyright 1992-95 Free Software Foundation, Inc.
  1412. ***************
  1413. *** 2895,2901 ****
  1414.        char *title;
  1415.   {
  1416.       cmailMsgLoaded = FALSE;
  1417. !     return LoadGame(f, gameNumber, title);
  1418.   }
  1419.   
  1420.   void LoadGameProc(w, event, prms, nprms)
  1421. --- 2895,2901 ----
  1422.        char *title;
  1423.   {
  1424.       cmailMsgLoaded = FALSE;
  1425. !     return LoadGame(f, gameNumber, title, FALSE);
  1426.   }
  1427.   
  1428.   void LoadGameProc(w, event, prms, nprms)
  1429. ***************
  1430. *** 3489,3495 ****
  1431.       Arg arg;
  1432.       
  1433.       if (extMessage) {
  1434. !     if (message) {
  1435.           sprintf(buf, "%s  %s", message, extMessage);
  1436.           message = buf;
  1437.       } else {
  1438. --- 3489,3495 ----
  1439.       Arg arg;
  1440.   
  1441.       if (extMessage) {
  1442. !     if (*message) {
  1443.           sprintf(buf, "%s  %s", message, extMessage);
  1444.           message = buf;
  1445.       } else {
  1446. diff -c -b -r xboard-3.2.pl2/xboard.h AmyBoard-3.2.pl2/xboard.h
  1447. *** xboard-3.2.pl2/xboard.h    Thu Mar 09 02:02:53 1995
  1448. --- AmyBoard-3.2.pl2/xboard.h    Tue May 23 19:30:34 1995
  1449. ***************
  1450. *** 1,6 ****
  1451.   /*
  1452.    * xboard.h -- Parameter definitions for X front end
  1453. !  * $Id: xboard.h,v 1.10 1995/03/09 00:43:28 mann Exp $
  1454.    *
  1455.    * Copyright 1991 by Digital Equipment Corporation, Maynard, Massachusetts.
  1456.    * Enhancements Copyright 1992-95 Free Software Foundation, Inc.
  1457. --- 1,6 ----
  1458.   /*
  1459.    * xboard.h -- Parameter definitions for X front end
  1460. !  * $Id: xboard.h,v 1.1 1995/04/12 21:13:03 Joe Exp $
  1461.    *
  1462.    * Copyright 1991 by Digital Equipment Corporation, Maynard, Massachusetts.
  1463.    * Enhancements Copyright 1992-95 Free Software Foundation, Inc.
  1464.