From: Eric S. Raymond Date: Thu, 25 May 2017 22:21:38 +0000 (-0400) Subject: Implement fallback handler that looks at the raw command buffer. X-Git-Url: https://jxself.org/git/?a=commitdiff_plain;h=f286c3a327f90c867edd5806098a90d1b4f10057;p=open-adventure.git Implement fallback handler that looks at the raw command buffer. --- diff --git a/main.c b/main.c index 616a57f..1288540 100644 --- a/main.c +++ b/main.c @@ -16,7 +16,7 @@ long ABB[186], ATAB[331], ATLOC[186], BLKLIN = true, DFLAG, KTAB[331], *LINES, LINK[201], LNLENG, LNPOSN, PARMS[26], PLACE[101], PTEXT[101], RTEXT[278], SETUP = 0, TABSIZ = 330; -signed char INLINE[LINESIZE+1], MAP1[129], MAP2[129]; +signed char rawbuf[LINESIZE], INLINE[LINESIZE+1], MAP1[129], MAP2[129]; long ABBNUM, ACTSPK[36], AMBER, ATTACK, AXE, BACK, BATTER, BEAR, BIRD, BLOOD, BONUS, BOTTLE, CAGE, CAVE, CAVITY, CHAIN, CHASM, CHEST, CHLOC, CHLOC2, @@ -137,8 +137,14 @@ L1: SETUP= -1; } } -static void do_command(FILE *cmdin) { +static bool fallback_handler(signed char *buf) +/* fallback handler for commands not handled by FORTRANish parser */ +{ + printf("Fallback handler sees: %s\n", buf); + return false; +} +static void do_command(FILE *cmdin) { /* Can't leave cave once it's closing (except by main office). */ L2: if(!OUTSID(NEWLOC) || NEWLOC == 0 || !CLOSNG) goto L71; @@ -448,6 +454,8 @@ L2800: WD1=WD2; /* Gee, I don't understand. */ L3000: SETPRM(1,WD1,WD1X); + if (fallback_handler(rawbuf)) + return; RSPEAK(254); goto L2600; diff --git a/main.h b/main.h index a71b9e3..184acee 100644 --- a/main.h +++ b/main.h @@ -10,7 +10,7 @@ typedef struct lcg_state extern long ABB[], ATAB[], ATLOC[], BLKLIN, DFLAG, DLOC[], FIXED[], HOLDNG, KTAB[], *LINES, LINK[], LNLENG, LNPOSN, PARMS[], PLACE[], PTEXT[], RTEXT[], TABSIZ; -extern signed char INLINE[LINESIZE+1], MAP1[], MAP2[]; +extern signed char rawbuf[LINESIZE], INLINE[LINESIZE+1], MAP1[], MAP2[]; extern FILE *logfp; extern bool oldstyle; extern lcg_state lcgstate; diff --git a/misc.c b/misc.c index 3bca473..b80d9b8 100644 --- a/misc.c +++ b/misc.c @@ -1,6 +1,7 @@ #include #include #include +#include #include "main.h" #include "misc.h" #include "funcs.h" @@ -885,7 +886,7 @@ long I, VAL; if (!oldstyle && OPENED == stdin) fputs("> ", stdout); do { - IGNORE(fgets(INLINE+1,sizeof(INLINE)-1,OPENED)); + IGNORE(fgets(rawbuf,sizeof(INLINE)-1,OPENED)); } while (!feof(OPENED) && INLINE[1] == '#'); if (feof(OPENED)) { @@ -893,11 +894,10 @@ long I, VAL; fclose(logfp); } else { if (logfp && OPENED == stdin) - IGNORE(fputs(INLINE+1, logfp)); - else if (!isatty(0)) { - IGNORE(fputs("> ", stdout)); - IGNORE(fputs(INLINE+1, stdout)); - } + IGNORE(fputs(rawbuf, logfp)); + else if (!isatty(0)) + IGNORE(fputs(rawbuf, stdout)); + strcpy(INLINE+1, rawbuf); LNLENG=0; for (I=1; I<=sizeof(INLINE) && INLINE[I]!=0; I++) { VAL=INLINE[I]+1;