ACM Revision 4 Patch #1 Riley Rainey APPLYING THIS PATCH: cd to the top of the source tree (the directory that contains the "src" and "V" subdirectories) and type: $ patch -p -s < PatchFilename Then rebuild everything. $ ./configure $ make Summary of fixes: Ultrix and HP-UX make(1) was having problems with the $(MAKEFLAGS) directive in V/Makefile.in. It has been removed. It's removal should not affect the build process on other platforms. The Ultrix 4.3 shell was having problems with "./configure". The problem has been fixed. A problem in "./Makefile" that would cause a mis-identification of the default target has been fixed. ClipPoly.c was unused in ACM 4, but has been updated so that it compiles. A problem in inventory.c that was causing the nose-wheel steering mode to stay enabled at all times has been fixed. This problem was pointed-out by _ Mats Lofkvist (d87-mal@nada.kth.se). *** ./README@@/V4.0 Mon Oct 18 09:07:29 1993 --- ./README Tue Nov 16 10:10:00 1993 *************** *** 1,4 **** ! ACM Flight Simulator, revision 4.0 What is ACM? --- 1,4 ---- ! ACM Flight Simulator, revision 4.1 What is ACM? *************** *** 22,30 **** at client workstations can then invoke the acm program to begin play. ! Riley Rainey ! rainey@netcom.com OR riley@atria.com ! August 29, 1993 Building ACM: --- 22,30 ---- at client workstations can then invoke the acm program to begin play. ! Riley Rainey (rainey@netcom.com OR riley@atria.com) ! Dallas, Texas ! November 15, 1993 Building ACM: *************** *** 69,74 **** --- 69,95 ---- as a last resort in the case that `configure' fails to work properly. + What's different with revision 4.1: + ----------------------------------- + + Ultrix and HP-UX make(1) was having problems with the $(MAKEFLAGS) directive in + V/Makefile.in. It has been removed. It's removal should not affect the + build process. + + The Ultrix 4.3 shell was having problems with "./configure". The problem + has been fixed. + + A problem in "./Makefile" that would cause a mis-identification of the + default target has been fixed. + + ClipPoly.c was unused in ACM 4, but has been updated so that it compiles. + + A problem in inventory.c that was causing the nose-wheel steering mode to + stay enabled at all times has been fixed. This problem was pointed-out by + _ + Mats Lofkvist (d87-mal@nada.kth.se). + + What's different with revision 4.0: ----------------------------------- *************** *** 338,340 **** --- 359,363 ---- * you can fly through mountains. * engines do not flame-out. + + README: patchlevel-4.1 *** ./V/lib/ClipPoly.c@@/V4.0 Thu May 7 09:30:31 1992 --- ./V/lib/ClipPoly.c Mon Nov 8 16:27:08 1993 *************** *** 7,18 **** * A quick and dirty 2D polygon clipping algorithm. */ ! int Clip2DPolygon (w, pts, npts, clippedPts, nClippedPts) AWindow *w; Point *pts; int npts; Point *clippedPts; ! int *nClippedPts; { register int numPts, j, lastj, inside, lastInside; int x1, y1, x2, y2; --- 7,20 ---- * A quick and dirty 2D polygon clipping algorithm. */ ! void ! Clip2DPolygon (w, pts, npts, clippedPts, nClippedPts) AWindow *w; Point *pts; int npts; Point *clippedPts; ! int *nClippedPts; ! { register int numPts, j, lastj, inside, lastInside; int x1, y1, x2, y2; *************** *** 20,31 **** lastj = npts - 1; numPts = 0; ! lastInside = (IsInside (w, pts[lastj]) ? 1 : 0; ! for (j=0; j < *npts; ++j) { ! if (lastInside == 1) clippedPts[numPts++] = pts[lastj]; inside = (IsInside (w, pts[j])) ? 1 : 0; --- 22,34 ---- lastj = npts - 1; numPts = 0; ! lastInside = IsInside (w, pts[lastj]) ? 1 : 0; ! for (j=0; j < npts; ++j) { ! if (lastInside == 1) { clippedPts[numPts++] = pts[lastj]; + } inside = (IsInside (w, pts[j])) ? 1 : 0; *************** *** 54,60 **** lastj = j; } ! *nCLippedPts = numPts; ! } --- 57,62 ---- lastj = j; } ! *nClippedPts = numPts; } *** ./V/lib/VOpenVp.c@@/V4.0 Fri Oct 15 14:39:01 1993 --- ./V/lib/VOpenVp.c Tue Nov 16 14:30:44 1993 *************** *** 115,121 **** RootWindow(dpy, screen), width, height, planes); v->flags |= VPPixmap; } ! if (planes == 1) v->flags |= VPMono; v->mask = AllPlanes; } --- 115,121 ---- RootWindow(dpy, screen), width, height, planes); v->flags |= VPPixmap; } ! if (planes == 1 || usePixmaps != 0) v->flags |= VPMono; v->mask = AllPlanes; } *** ./V/Makefile.in@@/V4.0 Thu Sep 2 14:53:28 1993 --- ./V/Makefile.in Tue Nov 16 10:10:50 1993 *************** *** 4,11 **** # If you wish to debug or test Vlib, uncomment this definition ... #SUBDIRS = lib test ! all install uninstall clean distclean mostlyclean realclean tags info dvi dist check: @for i in $(SUBDIRS) ; do \ echo Making $@ in ./$${i} ... ; \ ! ( cd $$i ; $(MAKE) $(MAKEFLAGS) $@ ) ; \ done --- 4,20 ---- # If you wish to debug or test Vlib, uncomment this definition ... #SUBDIRS = lib test ! defaulttarget: all ! ! all install uninstall clean mostlyclean realclean tags info dvi dist check: @for i in $(SUBDIRS) ; do \ echo Making $@ in ./$${i} ... ; \ ! ( cd $$i ; $(MAKE) $@ ) ; \ done + + distclean: + @for i in $(SUBDIRS) ; do \ + echo Making $@ in ./$${i} ... ; \ + ( cd $$i ; $(MAKE) $@ ) ; \ + done + rm -f Makefile *** ./src/inventory.c@@/V4.0 Fri Oct 15 14:39:15 1993 --- ./src/inventory.c Tue Nov 16 10:00:04 1993 *************** *** 41,46 **** --- 41,47 ---- LONG, ANGLE, NMILES, + KNOTS, TABLE, POINT, STRING, *************** *** 227,233 **** { "MuBKinetic", DOUBLE, MuBKinetic, A(&c.muBKinetic) }, { "MaxNWDef", ANGLE, MaxNWDef, A(&c.maxNWDef) }, { "NWIncr", ANGLE, NWincr, A(&c.NWIncr) }, ! { "MaxNWS", NMILES, MaxNWS, A(&c.maxNWS) }, { "Rm", POINT, Rm, A(&c.rm) }, { "Rn", POINT, Rn, A(&c.rn) }, { "Dm", DOUBLE, Dm, A(&c.Dm) }, --- 228,234 ---- { "MuBKinetic", DOUBLE, MuBKinetic, A(&c.muBKinetic) }, { "MaxNWDef", ANGLE, MaxNWDef, A(&c.maxNWDef) }, { "NWIncr", ANGLE, NWincr, A(&c.NWIncr) }, ! { "MaxNWS", KNOTS, MaxNWS, A(&c.maxNWS) }, { "Rm", POINT, Rm, A(&c.rm) }, { "Rn", POINT, Rn, A(&c.rn) }, { "Dm", DOUBLE, Dm, A(&c.Dm) }, *************** *** 637,646 **** --- 638,650 ---- case DOUBLE: case NMILES: + case KNOTS: if ((n = ParseValue (p)) == 0) { d = pop_value (p, double_value); if (kw->type == NMILES) d *= NM; + else if (kw->type == KNOTS) + d *= NM / 3600; *((double *) kw->ptr) = d; } break; *** ./src/patchlevel.h@@/V4.0 Fri Oct 8 16:23:03 1993 --- ./src/patchlevel.h Tue Nov 9 17:19:58 1993 *************** *** 1,4 **** #define REVISION 4 ! #define PATCHLEVEL 0 ! #define REVISION_STRING "4.0" --- 1,4 ---- #define REVISION 4 ! #define PATCHLEVEL 1 ! #define REVISION_STRING "4.1" *** ./src/newPlayer.c@@/V4.0 Tue Nov 2 16:58:07 1993 --- ./src/newPlayer.c Tue Nov 16 15:21:42 1993 *************** *** 63,68 **** --- 63,69 ---- #define SW_DEFAULT_VISUAL 9 #define SW_PLANE 10 #define SW_LIST_PLAYER 11 + #define SW_MONOCHROME 12 struct { char *sw; *************** *** 77,82 **** --- 78,84 ---- "-chase", SW_CHASE, "-observe", SW_OBSERVE, "-cmap", SW_DEFAULT_VISUAL, + "-mono", SW_MONOCHROME, "-plane", SW_PLANE, "-list", SW_LIST_PLAYER, NULL, 0}, *swp; *************** *** 200,206 **** int chaser = -1; int width, height; /* dimensions of main window */ double scale; ! int depth; long win_attr_mask; Visual *theVisual; XSetWindowAttributes window_attributes; --- 202,208 ---- int chaser = -1; int width, height; /* dimensions of main window */ double scale; ! int depth, mono = 0; long win_attr_mask; Visual *theVisual; XSetWindowAttributes window_attributes; *************** *** 259,264 **** --- 261,270 ---- plane = *(++c); break; + case SW_MONOCHROME: + mono = 1; + break; + case SW_LIST_PLAYER: sprintf (err, "\nname\t\tnumber\n"); write (s, err, strlen(err)); *************** *** 592,597 **** --- 598,605 ---- if (depth != 1) usePixmaps = 1; #endif + + usePixmaps = mono ? 1 : 0; if (chaser == -1) { u->v = VOpenViewport (u->dpy, screen, u->win, cmap, theVisual, *** ./src/update.c@@/V4.0 Tue Oct 5 16:46:18 1993 --- ./src/update.c Tue Nov 16 15:03:43 1993 *************** *** 122,128 **** * make it one update interval. */ ! if (deltaT > (double)((UPDATE_INTERVAL / 1000000.0) * 16)) { deltaT = UPDATE_INTERVAL / 1000000.0; } --- 122,128 ---- * make it one update interval. */ ! if (deltaT > (double)((UPDATE_INTERVAL / 1000000.0) * 4)) { deltaT = UPDATE_INTERVAL / 1000000.0; } *** ./src/manifest.h@@/V4.0 Tue Nov 2 16:58:03 1993 --- ./src/manifest.h Tue Nov 16 15:07:46 1993 *************** *** 222,231 **** * at the acms server's tty. */ - #ifndef REAL_DELTA_T - #define REAL_DELTA_T /* #define WATCH_FRAME_RATE */ - #endif /* * MAX_GAME_IDLE_SECONDS defines the amount of time that a server is allowed --- 222,228 ---- *** ./src/server.c@@/V4.0 Fri Oct 15 14:39:21 1993 --- ./src/server.c Thu Nov 18 16:22:31 1993 *************** *** 16,22 **** * Foundation, Inc., 675 Mass Ave., Cambridge, MA 02139, USA. */ ! #ifdef SOLARIS #include "/usr/ucbinclude/sys/signal.h" #include #endif --- 16,22 ---- * Foundation, Inc., 675 Mass Ave., Cambridge, MA 02139, USA. */ ! #if defined(SVR4) #include "/usr/ucbinclude/sys/signal.h" #include #endif *** ./Makefile.in@@/V4.0 Thu Oct 21 09:45:58 1993 --- ./Makefile.in Thu Nov 18 15:34:38 1993 *************** *** 3,12 **** SHELL = /bin/sh SUBDIRS = V src objects all install uninstall clean mostlyclean realclean tags info dvi dist check: @for i in $(SUBDIRS) ; do \ echo Making $@ in ./$${i} ... ; \ ! ( cd $$i ; $(MAKE) $(MAKEFLAGS) $@ ) ; \ done Makefile: Makefile.in config.status --- 3,16 ---- SHELL = /bin/sh SUBDIRS = V src objects + # This line is needed to force BSD-style makes to do the right target + # by default -- they get confused by the following target. + defaulttarget: all + all install uninstall clean mostlyclean realclean tags info dvi dist check: @for i in $(SUBDIRS) ; do \ echo Making $@ in ./$${i} ... ; \ ! ( cd $$i ; $(MAKE) $@ ) ; \ done Makefile: Makefile.in config.status *************** *** 21,26 **** distclean: @for i in $(SUBDIRS) ; do \ echo Making $@ in ./$${i} ... ; \ ! ( cd $$i ; $(MAKE) $(MAKEFLAGS) $@ ) ; \ done rm -f Makefile config.status --- 25,30 ---- distclean: @for i in $(SUBDIRS) ; do \ echo Making $@ in ./$${i} ... ; \ ! ( cd $$i ; $(MAKE) $@ ) ; \ done rm -f Makefile config.status *** ./configure@@/V4.0 Fri Oct 15 14:38:51 1993 --- ./configure Thu Nov 18 16:22:48 1993 *************** *** 124,134 **** configure_args="$*" ! ow=${OPENWINHOME:-/usr/openwin} # Solaris special handling ... if uname -sr | grep '^SunOS 5' >/dev/null ; then - DEFS="$DEFS -DSOLARIS" LIBS="$LIBS -lnsl -lelf -L/usr/ucblib -lucb" fi --- 124,137 ---- configure_args="$*" ! if test "$OPENWINHOME" = "" ; then ! ow=/usr/openwin ! else ! ow=$OPENWINHOME ! fi # Solaris special handling ... if uname -sr | grep '^SunOS 5' >/dev/null ; then LIBS="$LIBS -lnsl -lelf -L/usr/ucblib -lucb" fi *************** *** 300,305 **** --- 303,324 ---- fi rm -f conftest* done + + echo checking for elf.h + cat > conftest.c < + EOF + err=`eval "($CPP \$DEFS conftest.c >/dev/null) 2>&1"` + if test -z "$err"; then + + { + test -n "$verbose" && \ + echo " defining SVR4" + DEFS="$DEFS -DSVR4=1" + } + LIBS="$LIBS -lelf" + fi + rm -f conftest* echo checking for return type of signal handlers cat > conftest.c </dev/null ; then - DEFS="$DEFS -DSOLARIS" LIBS="$LIBS -lnsl -lelf -L/usr/ucblib -lucb" fi --- 1,13 ---- AC_INIT(README) ! if test "$OPENWINHOME" = "" ; then ! ow=/usr/openwin ! else ! ow=$OPENWINHOME ! fi # Solaris special handling ... if uname -sr | grep '^SunOS 5' >/dev/null ; then LIBS="$LIBS -lnsl -lelf -L/usr/ucblib -lucb" fi *************** *** 15,20 **** --- 18,24 ---- AC_PROG_RANLIB AC_STDC_HEADERS AC_HAVE_HEADERS(stdlib.h malloc.h unistd.h) + AC_HEADER_CHECK(elf.h, AC_DEFINE(SVR4) LIBS="$LIBS -lelf") AC_RETSIGTYPE if test -z "$x_includes" ; then