billr@saab.CNA.TEK.COM (Bill Randle) (05/10/90)
Submitted-by: Rich Burridge <rburridge@sun.COM> Posting-number: Volume 9, Issue 49 Archive-name: othello2/Patch4 Patch-To: othello2: Volume 9, Issue 37-40 [[This is official patch #4 for othello v1.3; please apply it. It makes the following changes. * From Alfred Nathaniel <nath%cernvax.cern.ch@munnari.oz> Linting the different versions has been separated out. Lint should receive the cc macro definitions as well. * From Alfred Nathaniel <nath%cernvax.cern.ch@munnari.oz> The x11 functions do_menu() and process_expose() do not (always) return a valid function value. There is also no window name specified. * From Alfred Nathaniel <nath%cernvax.cern.ch@munnari.oz> There is a name clash with the lock routine on a DECstation running Ultrix 3.1. It clashes with an external definition in Xlib which gives a linker warning. Othellos' lock routine has been renamed to lock_screen. * From Arnold Gill <ziffle@radopt.Phy.QueensU.CA> Martin Chudley <cs.qmw.ac.uk!martinc@munnari.oz> John Eras <jeras@hqsun2.oracle.com> [fix] With the tty version, the score gets displayed incorrectly. * From W Mat Waites <tekred!mailrus!gatech!emcard!mat@uunet.uu.net> The System V sprintf does not return the address of the buffer. * Images were being incorrectly stenciled/drawn on color screens for the X11 and XView versions.]] #! /bin/sh # This is a shell archive. Remove anything before this line, then unpack # it by saving it into a file and typing "sh file". To overwrite existing # files, type "sh file -c". You can also feed this as standard input via # unshar, or by typing "sh <file", e.g.. If this archive is complete, you # will see the following message at the end: # "End of shell archive." # Contents: patches04 # Wrapped by billr@saab on Wed May 9 12:20:27 1990 PATH=/bin:/usr/bin:/usr/ucb ; export PATH if test -f 'patches04' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'patches04'\" else echo shar: Extracting \"'patches04'\" \(14108 characters\) sed "s/^X//" >'patches04' <<'END_OF_FILE' X------- othello.c ------- X*** /tmp/da18676 Tue May 8 19:12:03 1990 X--- othello.c Tue May 8 18:46:31 1990 X*************** X*** 340,347 **** X draw_piece(board.square[i], x, CY+y, RSRC) ; X } X batch(IS_OFF) ; X! message(SCORE_MES, sprintf(line, "White: %2d, Black: %2d", X! count(&board, WHITE), count(&board, BLACK))) ; X } X X X--- 340,348 ---- X draw_piece(board.square[i], x, CY+y, RSRC) ; X } X batch(IS_OFF) ; X! SPRINTF(line, "White: %2d, Black: %2d", X! There a count(&board, WHITE), count(&board, BLACK)) ; X! message(SCORE_MES, line) ; X } X X X X------- sunview.c ------- X*** /tmp/da18679 Tue May 8 19:12:04 1990 X--- sunview.c Tue May 8 18:16:41 1990 X*************** X*** 264,270 **** X } X X X! lock(state) /* Turn graphics locking on or off. */ X enum bltype state ; X { X static struct rect r = { 0, 0, TOTAL_WIDTH+1, TOTAL_WIDTH+1 } ; X--- 264,270 ---- X } X X X! lock_screen(state) /* Turn graphics locking on or off. */ X enum bltype state ; X { X static struct rect r = { 0, 0, TOTAL_WIDTH+1, TOTAL_WIDTH+1 } ; X X------- othello.h ------- X*** /tmp/da18682 Tue May 8 19:12:05 1990 X--- othello.h Tue May 8 18:34:34 1990 X*************** X*** 37,43 **** X #define SELECT (void) select X #define SIGNAL (void) signal X #define SPRINTF (void) sprintf X- #define SSCANF (void) sscanf X #define STRCAT (void) strcat X #define STRCPY (void) strcpy X #define WRITE (void) write X--- 37,42 ---- X X------- patchlevel.h ------- X*** /tmp/da18685 Tue May 8 19:12:05 1990 X--- patchlevel.h Tue May 8 17:56:54 1990 X*************** X*** 19,22 **** X * to me, then an attempt will be made to fix them. X */ X X! #define PATCHLEVEL 3 X--- 19,22 ---- X * to me, then an attempt will be made to fix them. X */ X X! #define PATCHLEVEL 4 X X------- README ------- X*** /tmp/da18688 Tue May 8 19:12:06 1990 X--- README Tue May 8 18:32:16 1990 X*************** X*** 29,35 **** X Thanks go also to Valerie Haecky, Daniel Yang, Eric R. Jorgensen, X John Rosauer, Steve Misrack, Hugues Leroy, Linton Miller, Mike Stump, X D. Hugh Redelmeier, Scott W. Danielson, Gary D. Kline, Kjetil Torgrim X! Homme and Peter Johansson for bug reports and/or bug fixes plus suggested X enhancements. X X X--- 29,36 ---- X Thanks go also to Valerie Haecky, Daniel Yang, Eric R. Jorgensen, X John Rosauer, Steve Misrack, Hugues Leroy, Linton Miller, Mike Stump, X D. Hugh Redelmeier, Scott W. Danielson, Gary D. Kline, Kjetil Torgrim X! Homme, Peter Johansson, Alfred Nathaniel, Arnold Gill, Martin Chudley X! and W Mat Waites for bug reports and/or bug fixes plus suggested X enhancements. X X X X------- Makefile ------- X*** /tmp/da18691 Tue May 8 19:12:07 1990 X--- Makefile Tue May 8 19:10:35 1990 X*************** X*** 69,76 **** X # X # Compilation flags and standard macro definitions. X # X! CFLAGS = -g $(NO_USLEEP) $(REMNAME) $(SIGRET) \ X! $(X11INCDIR) $(XVIEWINCDIR) X # X #========================================================================== X X--- 69,77 ---- X # X # Compilation flags and standard macro definitions. X # X! CDEFS = $(NO_USLEEP) $(REMNAME) $(SIGRET) \ X! $(X11INCDIR) $(XVIEWINCDIR) X! CFLAGS = -g $(CDEFS) X # X #========================================================================== X X*************** X*** 143,152 **** X X clean:; rm -f *.o Part* *~ $(BINARIES) core X X! lint:; lint $(STDSRCS) sunview.c $(SVIEWLIBS) X! lint $(STDSRCS) tty.c $(TTYLIBS) X! lint $(STDSRCS) xview.c $(XVIEWLIBS) X! lint $(STDSRCS) x11.c $(X11LIBS) X X shar:; shar.script $(SFILES1) > Part1 X shar.script $(SFILES2) > Part2 X--- 144,154 ---- X X clean:; rm -f *.o Part* *~ $(BINARIES) core X X! lint: lint-sunview lint-tty lint-xview lint-x11 X! lint-sunview:; lint $(CDEFS) $(STDSRCS) sunview.c $(SVIEWLIBS) X! lint-tty:; lint $(CDEFS) $(STDSRCS) tty.c $(TTYLIBS) X! lint-xview:; lint $(CDEFS) $(STDSRCS) xview.c $(XVIEWLIBS) X! lint-x11:; lint $(CDEFS) $(STDSRCS) x11.c $(X11LIBS) X X shar:; shar.script $(SFILES1) > Part1 X shar.script $(SFILES2) > Part2 X X------- CHANGES ------- X*** /tmp/da18694 Tue May 8 19:12:07 1990 X--- CHANGES Tue May 8 19:11:25 1990 X*************** X*** 91,93 **** X--- 91,120 ---- X X * Release of the current version of makemove.c, because the changes X to this file at patch level #1 never made it out. X+ X+ v1.3 - patchlevel 4. 8th May 1990. X+ X+ * From Alfred Nathaniel <nath%cernvax.cern.ch@munnari.oz> X+ Linting the different versions has been separated out. Lint should X+ receive the cc macro definitions as well. X+ X+ * From Alfred Nathaniel <nath%cernvax.cern.ch@munnari.oz> X+ The x11 functions do_menu() and process_expose() do not (always) X+ return a valid function value. There is also no window name specified. X+ X+ * From Alfred Nathaniel <nath%cernvax.cern.ch@munnari.oz> X+ There is a name clash with the lock routine on a DECstation running X+ Ultrix 3.1. It clashes with an external definition in Xlib X+ which gives a linker warning. Othellos' lock routine has been X+ renamed to lock_screen. X+ X+ * From Arnold Gill <ziffle@radopt.Phy.QueensU.CA> X+ Martin Chudley <cs.qmw.ac.uk!martinc@munnari.oz> X+ John Eras <jeras@hqsun2.oracle.com> [fix] X+ With the tty version, the score gets displayed incorrectly. X+ X+ * From W Mat Waites <tekred!mailrus!gatech!emcard!mat@uunet.uu.net> X+ The System V sprintf does not return the address of the buffer. X+ X+ * Images were being incorrectly stenciled/drawn on color screens X+ for the X11 and XView versions. X X------- boardstuff.c ------- X*** /tmp/da18697 Tue May 8 19:12:08 1990 X--- boardstuff.c Tue May 8 18:45:45 1990 X*************** X*** 30,36 **** X { X int x0, y0, x1, y1, x, y, dx, dy, ctr ; X X! lock(IS_ON) ; X get_xy(move, &x1, &y1) ; X dx = x1 ; X dy = y1 ; X--- 30,36 ---- X { X int x0, y0, x1, y1, x, y, dx, dy, ctr ; X X! lock_screen(IS_ON) ; X get_xy(move, &x1, &y1) ; X dx = x1 ; X dy = y1 ; X*************** X*** 80,86 **** X } X draw_piece(WHITE, x, CY+y, RINV) ; X } X! lock(IS_OFF) ; X } X X X--- 80,86 ---- X } X draw_piece(WHITE, x, CY+y, RINV) ; X } X! lock_screen(IS_OFF) ; X } X X X*************** X*** 103,110 **** X } X if ((move = makemove(&board, player, 0)) == NOMOVE) X { X! message(PANEL_MES, sprintf(line,"%s %s forced to pass", X! who[(int) play_mode], be[(int) play_mode])) ; X if ((move = makemove(&board, OPPONENT(player), 0)) == NOMOVE) X { X who_wins() ; X--- 103,111 ---- X } X if ((move = makemove(&board, player, 0)) == NOMOVE) X { X! SPRINTF(line, "%s %s forced to pass", X! who[(int) play_mode], be[(int) play_mode]) ; X! message(PANEL_MES, line) ; X if ((move = makemove(&board, OPPONENT(player), 0)) == NOMOVE) X { X who_wins() ; X*************** X*** 139,148 **** X taken = formfliplist(move, player) ; X update_board_image() ; X if (taken == 1) X! message(PANEL_MES, sprintf(line, "%s took 1 piece", who[(int) play_mode])) ; X else X! message(PANEL_MES, sprintf(line, "%s took %d pieces", X! who[(int) play_mode],taken)) ; X } X X X--- 140,154 ---- X taken = formfliplist(move, player) ; X update_board_image() ; X if (taken == 1) X! { X! SPRINTF(line, "%s took 1 piece", who[(int) play_mode]) ; X! message(PANEL_MES, line) ; X! } X else X! { X! SPRINTF(line, "%s took %d pieces", who[(int) play_mode],taken) ; X! message(PANEL_MES, line) ; X! } X } X X X*************** X*** 267,274 **** X batch(IS_OFF) ; X PAUSE ; X } X! message(SCORE_MES, sprintf(line, "White: %2d, Black: %2d", X! count(&board, WHITE), count(&board, BLACK))) ; X } X X X--- 273,281 ---- X batch(IS_OFF) ; X PAUSE ; X } X! SPRINTF(line, "White: %2d, Black: %2d", X! count(&board, WHITE), count(&board, BLACK)) ; X! message(SCORE_MES, line) ; X } X X X*************** X*** 278,286 **** X X ps = count(&board, WHITE) ; X cs = count(&board, BLACK) ; X! if (ps > cs) message(SCORE_MES, sprintf(line, "White wins %d-%d", ps, cs)) ; X! else if (ps == cs) message(SCORE_MES, sprintf(line,"A tie %d-%d", ps, cs)) ; X! else message(SCORE_MES, sprintf(line,"Black wins %d-%d", cs, ps)) ; X if (cretin_flag) message(REMARK_MES, "*** CRETIN! ***") ; X else message(REMARK_MES, "") ; X } X--- 285,305 ---- X X ps = count(&board, WHITE) ; X cs = count(&board, BLACK) ; X! if (ps > cs) X! { X! SPRINTF(line, "White wins %d-%d", ps, cs) ; X! message(SCORE_MES, line) ; X! } X! else if (ps == cs) X! { X! SPRINTF(line,"A tie %d-%d", ps, cs) ; X! message(SCORE_MES, line) ; X! } X! else X! { X! SPRINTF(line, "Black wins %d-%d", cs, ps) ; X! message(SCORE_MES, line) ; X! } X if (cretin_flag) message(REMARK_MES, "*** CRETIN! ***") ; X else message(REMARK_MES, "") ; X } X X------- x11.c ------- X*** /tmp/da18700 Tue May 8 19:12:09 1990 X--- x11.c Tue May 8 19:05:59 1990 X*************** X*** 154,160 **** X X do_menu(mtype) /* Display popup menu for cyclic item. */ X enum item_type mtype ; X! {} X X X draw_image(x, y, width, height, image) X--- 154,162 ---- X X do_menu(mtype) /* Display popup menu for cyclic item. */ X enum item_type mtype ; X! { X! return(0) ; X! } X X X draw_image(x, y, width, height, image) X*************** X*** 360,366 **** X X X /*ARGSUSED*/ X! lock(state) /* Turn graphics locking on or off - null routine. */ X enum bltype state ; X {} X X--- 362,368 ---- X X X /*ARGSUSED*/ X! lock_screen(state) /* Turn graphics locking on or off - null routine. */ X enum bltype state ; X {} X X*************** X*** 416,422 **** X protocol_atom = XInternAtom(dpy, "WM_PROTOCOLS", False) ; X kill_atom = XInternAtom(dpy, "WM_DELETE_WINDOW", False) ; X X! XSetStandardProperties(dpy, frame, "", NULL, othello_icon, X argv, argc, &size) ; X X wm_hints.icon_x = ix ; X--- 418,424 ---- X protocol_atom = XInternAtom(dpy, "WM_PROTOCOLS", False) ; X kill_atom = XInternAtom(dpy, "WM_DELETE_WINDOW", False) ; X X! XSetStandardProperties(dpy, frame, "othello", NULL, othello_icon, X argv, argc, &size) ; X X wm_hints.icon_x = ix ; X*************** X*** 438,446 **** X gc = XCreateGC(dpy, root, gc_mask, &gc_val) ; X X ropgc = XCreateGC(dpy, root, gc_mask, &gc_val) ; X! gc_val.function = GXor ; X! gc_val.fill_style = FillOpaqueStippled ; X! XChangeGC(dpy, ropgc, GCFunction | GCFillStyle, &gc_val) ; X X stencilgc = XCreateGC(dpy, root, gc_mask, &gc_val) ; X XSetFillStyle(dpy, stencilgc, FillOpaqueStippled) ; X--- 440,446 ---- X gc = XCreateGC(dpy, root, gc_mask, &gc_val) ; X X ropgc = XCreateGC(dpy, root, gc_mask, &gc_val) ; X! XSetFillStyle(dpy, ropgc, FillStippled) ; X X stencilgc = XCreateGC(dpy, root, gc_mask, &gc_val) ; X XSetFillStyle(dpy, stencilgc, FillOpaqueStippled) ; X*************** X*** 531,537 **** X if (event->count == 0 && event->window == frame) doframe++ ; X while (XCheckMaskEvent(dpy, ExposureMask, event)) ; X X! if (doframe) return(FRAME_REPAINT) ; X } X X X--- 531,537 ---- X if (event->count == 0 && event->window == frame) doframe++ ; X while (XCheckMaskEvent(dpy, ExposureMask, event)) ; X X! return(doframe ? FRAME_REPAINT : IGNORE_EVENT) ; X } X X X X------- xview.c ------- X*** /tmp/da18703 Tue May 8 19:12:11 1990 X--- xview.c Tue May 8 19:01:09 1990 X*************** X*** 289,295 **** X } X X X! lock(state) /* Turn graphics locking on or off - null routine. */ X enum bltype state ; X {} X X--- 289,295 ---- X } X X X! lock_screen(state) /* Turn graphics locking on or off - null routine. */ X enum bltype state ; X {} X X*************** X*** 331,339 **** X gc = XCreateGC(dpy, root, gc_mask, &gc_val) ; X X ropgc = XCreateGC(dpy, root, gc_mask, &gc_val) ; X! gc_val.function = GXor ; X! gc_val.fill_style = FillOpaqueStippled ; X! XChangeGC(dpy, ropgc, GCFunction | GCFillStyle, &gc_val) ; X X stencilgc = XCreateGC(dpy, root, gc_mask, &gc_val) ; X XSetFillStyle(dpy, stencilgc, FillOpaqueStippled) ; X--- 331,337 ---- X gc = XCreateGC(dpy, root, gc_mask, &gc_val) ; X X ropgc = XCreateGC(dpy, root, gc_mask, &gc_val) ; X! XSetFillStyle(dpy, ropgc, FillStippled) ; X X stencilgc = XCreateGC(dpy, root, gc_mask, &gc_val) ; X XSetFillStyle(dpy, stencilgc, FillOpaqueStippled) ; X X------- tty.c ------- X*** /tmp/da18706 Tue May 8 19:12:12 1990 X--- tty.c Tue May 8 18:27:59 1990 X*************** X*** 299,306 **** X othervals[(int) REMARK_MES].row, str, TRUE) ; X else if (y == 237) /* Score message. */ X { X! SSCANF(str, "White: %1d, Black: %1d", &white, &black) ; X! SPRINTF(str, "White (O): %1d, Black (X): %1d", white, black) ; X draw_string(othervals[(int) SCORE_MES].column, X othervals[(int) SCORE_MES].row, str, TRUE) ; X } X--- 299,306 ---- X othervals[(int) REMARK_MES].row, str, TRUE) ; X else if (y == 237) /* Score message. */ X { X! if (sscanf(str, "White: %d, Black: %d", &white, &black) == 2) X! SPRINTF(str, "White (O): %d, Black (X): %d", white, black) ; X draw_string(othervals[(int) SCORE_MES].column, X othervals[(int) SCORE_MES].row, str, TRUE) ; X } X*************** X*** 385,391 **** X X X /*ARGSUSED*/ X! lock(state) /* Graphics locking - null routine. */ X enum bltype state ; X {} X X--- 385,391 ---- X X X /*ARGSUSED*/ X! lock_screen(state) /* Graphics locking - null routine. */ X enum bltype state ; X {} X X X X----- End Included Message ----- X X END_OF_FILE if test 14108 -ne `wc -c <'patches04'`; then echo shar: \"'patches04'\" unpacked with wrong size! fi # end of 'patches04' fi echo shar: End of shell archive. exit 0