Implement fallback handler that looks at the raw command buffer.
This commit is contained in:
parent
74dc437a7e
commit
f286c3a327
3 changed files with 17 additions and 9 deletions
12
main.c
12
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;
|
||||
|
||||
|
|
2
main.h
2
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;
|
||||
|
|
12
misc.c
12
misc.c
|
@ -1,6 +1,7 @@
|
|||
#include <unistd.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#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;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue