billr@saab.CNA.TEK.COM (Bill Randle) (12/19/90)
Submitted-by: Bill Randle <billr@saab.CNA.TEK.COM>
Posting-number: Volume 11, Issue 96
Archive-name: sdi/Patch1
Patch-To: sdi: Volume 1, Issue 54-59
Environment: SunView
[This is a games that has been around for quite awhile.
I received a bugfix from Brian Nakata last spring for
the duplicate printing of text. I made some changes to
get it to compile and run on a SparcStation (SunOS 4.1).
It is still a great game! -br]
#! /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: patches01
# Wrapped by billr@saab on Tue Dec 18 16:50:39 1990
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f 'patches01' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'patches01'\"
else
echo shar: Extracting \"'patches01'\" \(9196 characters\)
sed "s/^X//" >'patches01' <<'END_OF_FILE'
X*** control_procs.c.orig Tue Dec 18 11:55:45 1990
X--- control_procs.c Tue Dec 18 16:30:09 1990
X***************
X*** 147,158 ****
X * Proc called to display the scores from the score file in a popup window.
X */
X void
X! scores_proc(item, value, event)
X Panel_item item;
X Event *event;
X {
X- Menu m;
X- int id = event_id(event);
X char *a;
X a = (char *)build_scores();
X easy_pop(a);
X--- 147,156 ----
X * Proc called to display the scores from the score file in a popup window.
X */
X void
X! scores_proc(item, event)
X Panel_item item;
X Event *event;
X {
X char *a;
X a = (char *)build_scores();
X easy_pop(a);
X*** helpers.c.orig Tue Dec 18 11:55:36 1990
X--- helpers.c Tue Dec 18 12:02:30 1990
X***************
X*** 22,28 ****
X
X
X static short background_array[] = {
X! #include "/usr/include/images/square_17.pr"
X };
X mpr_static(background_pr, 16, 16, 1, background_array);
X
X--- 22,28 ----
X
X
X static short background_array[] = {
X! #include <images/square_17.pr>
X };
X mpr_static(background_pr, 16, 16, 1, background_array);
X
X***************
X*** 141,147 ****
X }
X suspend_proc();
X init_popup_msg(frame, msg, lines);
X- textsw_insert(popup_text, msg, strlen(msg));
X window_set(popup_frame, WIN_X, event_x(event),
X WIN_Y, event_y(event),
X WIN_SHOW, TRUE,
X--- 141,146 ----
X*** makefile.orig Tue Dec 18 16:36:49 1990
X--- makefile Tue Dec 18 16:38:17 1990
X***************
X*** 44,50 ****
X
X #If you are running SUNOS 3.0, use this: CFLAGS = -DSUNOS3_0
X
X! CFLAGS = -DSUNOS3_0
X
X LIBS = -lsuntool -lsunwindow -lpixrect -lm
X
X--- 44,50 ----
X
X #If you are running SUNOS 3.0, use this: CFLAGS = -DSUNOS3_0
X
X! CFLAGS =
X
X LIBS = -lsuntool -lsunwindow -lpixrect -lm
X
X*** menu.c.orig Tue Dec 18 11:55:58 1990
X--- menu.c Tue Dec 18 15:48:38 1990
X***************
X*** 1,5 ****
X--- 1,6 ----
X #include <suntool/sunview.h>
X #include <stdio.h>
X+ #include <varargs.h>
X #include "walkmenu_impl.h"
X #include "image_impl.h"
X
X***************
X*** 22,51 ****
X * Sun window library (at least a little bit).
X */
X
X
X void
X! pie_menu_set(m, arg)
X! struct menu *m;
X! int arg;
X {
X! char **argptr = &(char *)arg;
X pie_menu_set_internal(m, argptr);
X }
X
X! pie_menu_item_set(mi, arg)
X! struct menu_item *mi;
X! int arg;
X {
X! char **argptr = &(char *)arg;
X pie_menu_item_set_internal(mi, argptr);
X }
X
X struct menu *
X! pie_menu_create(arg)
X! int arg;
X {
X! char **argptr = &(char *)arg;
X struct menu *m;
X m = (struct menu *)calloc(sizeof(struct menu),1);
X m->item_list = (struct menu_item **)calloc(sizeof(struct menu_item *), MAX_ITEMS);
X m->max_nitems = MAX_ITEMS;
X--- 23,62 ----
X * Sun window library (at least a little bit).
X */
X
X+ /*
X+ * re-written to use varargs so that it would run on a Sparc
X+ * Bill Randle 12/18/90
X+ */
X
X void
X! pie_menu_set(va_alist)
X! va_dcl
X {
X! va_list argptr;
X! struct menu *m;
X! va_start(argptr);
X! m = va_arg(argptr, struct menu *);
X pie_menu_set_internal(m, argptr);
X }
X
X! void
X! pie_menu_item_set(va_alist)
X! va_dcl
X {
X! va_list argptr;
X! struct menu_item *mi;
X! va_start(argptr);
X! mi = va_arg(argptr, struct menu_item *);
X pie_menu_item_set_internal(mi, argptr);
X }
X
X struct menu *
X! pie_menu_create(va_alist)
X! va_dcl
X {
X! va_list argptr;
X struct menu *m;
X+ va_start(argptr);
X m = (struct menu *)calloc(sizeof(struct menu),1);
X m->item_list = (struct menu_item **)calloc(sizeof(struct menu_item *), MAX_ITEMS);
X m->max_nitems = MAX_ITEMS;
X***************
X*** 54,64 ****
X }
X
X struct menu_item *
X! pie_menu_create_item(arg)
X! int arg;
X {
X! char **argptr = &(char *)arg;
X struct menu_item *mi;
X mi = (struct menu_item *)calloc(sizeof(struct menu_item),1);
X mi->image = (struct image *)calloc(sizeof(struct image),1);
X pie_menu_item_set_internal(mi, argptr);
X--- 65,76 ----
X }
X
X struct menu_item *
X! pie_menu_create_item(va_alist)
X! va_dcl
X {
X! va_list argptr;
X struct menu_item *mi;
X+ va_start(argptr);
X mi = (struct menu_item *)calloc(sizeof(struct menu_item),1);
X mi->image = (struct image *)calloc(sizeof(struct image),1);
X pie_menu_item_set_internal(mi, argptr);
X***************
X*** 65,76 ****
X return mi;
X }
X
X! pie_menu_set_internal(m, argptr)
X struct menu *m;
X! char **argptr;
X {
X! while (*argptr != 0) {
X! switch(*argptr) {
X case MENU_APPEND_ITEM: {
X if (m->nitems >= (m->max_nitems-1))
X {
X--- 77,90 ----
X return mi;
X }
X
X! pie_menu_set_internal(m, ap)
X struct menu *m;
X! va_list ap;
X {
X! Menu_attribute arg;
X!
X! while (arg = va_arg(ap, int)) {
X! switch(arg) {
X case MENU_APPEND_ITEM: {
X if (m->nitems >= (m->max_nitems-1))
X {
X***************
X*** 77,90 ****
X fprintf("Too many items in a pie menu.\n");
X abort();
X }
X! m->item_list[m->nitems] = (struct menu_item *)(*(argptr+1));
X ((struct menu_item *)m->item_list[m->nitems])->parent = m;
X m->nitems += 1;
X! argptr += 2; break;
X }
X case MENU_NOTIFY_PROC: {
X! (caddr_t)m->notify_proc = (caddr_t)(*(argptr+1));
X! argptr += 2; break;
X }
X default: {
X fprintf(stderr, "Unexpected item in pie_menu_set_internal.\n");
X--- 91,104 ----
X fprintf("Too many items in a pie menu.\n");
X abort();
X }
X! m->item_list[m->nitems] = va_arg(ap, struct menu_item *);
X ((struct menu_item *)m->item_list[m->nitems])->parent = m;
X m->nitems += 1;
X! break;
X }
X case MENU_NOTIFY_PROC: {
X! (caddr_t)m->notify_proc = va_arg(ap, caddr_t);
X! break;
X }
X default: {
X fprintf(stderr, "Unexpected item in pie_menu_set_internal.\n");
X***************
X*** 93,131 ****
X }
X }
X }
X }
X
X! pie_menu_item_set_internal(mi, argptr)
X struct menu_item *mi;
X! char **argptr;
X {
X! while (*argptr != 0) {
X! switch(*argptr) {
X case MENU_IMAGE: {
X! mi->image->pr = (struct pixrect *)*(argptr+1);
X! argptr += 2; break;
X }
X case MENU_STRING: {
X! mi->image->string = (char *)*(argptr+1);
X! argptr += 2; break;
X }
X case MENU_PULLRIGHT: {
X mi->pullright = TRUE;
X! mi->value = (caddr_t)*(argptr+1);
X ((struct menu *)mi->value)->parent = mi;
X! argptr += 2; break;
X }
X case MENU_RELEASE: {
X mi->free_item = TRUE;
X! argptr += 1; break;
X }
X case MENU_RELEASE_IMAGE: {
X mi->image->free_image = TRUE;
X! argptr += 1; break;
X }
X case MENU_CLIENT_DATA: {
X! mi->client_data = (caddr_t)*(argptr+1);
X! argptr += 2; break;
X }
X default: {
X fprintf(stderr, "Unexpected item in pie_menu_item_set_internal.\n");
X--- 107,148 ----
X }
X }
X }
X+ va_end(ap);
X }
X
X! pie_menu_item_set_internal(mi, ap)
X struct menu_item *mi;
X! va_list ap;
X {
X! Menu_attribute arg;
X!
X! while (arg = va_arg(ap, int)) {
X! switch(arg) {
X case MENU_IMAGE: {
X! mi->image->pr = va_arg(ap, struct pixrect *);
X! break;
X }
X case MENU_STRING: {
X! mi->image->string = va_arg(ap, char *);
X! break;
X }
X case MENU_PULLRIGHT: {
X mi->pullright = TRUE;
X! mi->value = va_arg(ap, caddr_t);
X ((struct menu *)mi->value)->parent = mi;
X! break;
X }
X case MENU_RELEASE: {
X mi->free_item = TRUE;
X! break;
X }
X case MENU_RELEASE_IMAGE: {
X mi->image->free_image = TRUE;
X! break;
X }
X case MENU_CLIENT_DATA: {
X! mi->client_data = va_arg(ap, caddr_t);
X! break;
X }
X default: {
X fprintf(stderr, "Unexpected item in pie_menu_item_set_internal.\n");
X***************
X*** 134,139 ****
X--- 151,157 ----
X }
X }
X }
X+ va_end(ap);
X }
X
X pie_menu_destroy(m)
X*** scores.c.orig Tue Dec 18 11:55:49 1990
X--- scores.c Tue Dec 18 16:17:49 1990
X***************
X*** 104,110 ****
X FILE *f;
X if (scorefile) {
X tmpfile = scorefile;
X! } else if ((tmpfile = getenv("SDI_SCORES")) == NULL) {
X tmpfile = scorefile;
X } else {
X tmpfile = "/usr/games/lib/sdi_scores";
X--- 104,110 ----
X FILE *f;
X if (scorefile) {
X tmpfile = scorefile;
X! } else if ((tmpfile = getenv("SDI_SCORES")) != NULL) {
X tmpfile = scorefile;
X } else {
X tmpfile = "/usr/games/lib/sdi_scores";
X*** source_converter.c.orig Tue Dec 18 11:56:34 1990
X--- source_converter.c Tue Dec 18 16:37:13 1990
X***************
X*** 27,33 ****
X fprintf(stderr, "Need an argument.\n");
X exit(1);
X }
X! printf(" .even\n__start_of_text:\n");
X while (! feof(stdin)) {
X p = buff;
X for (i = 0; i < OUTSIZE; i += 1) {
X--- 27,33 ----
X fprintf(stderr, "Need an argument.\n");
X exit(1);
X }
X! printf(" .align 4\n__start_of_text:\n");
X while (! feof(stdin)) {
X p = buff;
X for (i = 0; i < OUTSIZE; i += 1) {
X***************
X*** 53,60 ****
X printf(" .ascii \"%s\"\n", buff);
X }
X printf(" .ascii \"\\0\"\n",'\\');
X! printf(" .even\n");
X printf(" .globl _%s\n", argv[1]);
X printf("_%s:\n", argv[1]);
X printf(" .long __start_of_text\n");
X }
X--- 53,65 ----
X printf(" .ascii \"%s\"\n", buff);
X }
X printf(" .ascii \"\\0\"\n",'\\');
X! printf(" .align 4\n");
X printf(" .globl _%s\n", argv[1]);
X printf("_%s:\n", argv[1]);
X+ #if defined(sparc)
X+ printf(" .word __start_of_text\n");
X+ #else
X printf(" .long __start_of_text\n");
X+ #endif
X+ exit(0);
X }
END_OF_FILE
if test 9196 -ne `wc -c <'patches01'`; then
echo shar: \"'patches01'\" unpacked with wrong size!
fi
# end of 'patches01'
fi
echo shar: End of shell archive.
exit 0