* is a result of running the original Fortran IV source through a
* home-brew Fortran-to-C converter.)
*
- * Now that the code has been restructured into idiomatic C, the following
- * is more appropriate:
+ * Now that the code has been restructured into something much closer
+ * to idiomatic C, the following is more appropriate:
*
- * ESR apologizes for the remaing gotos (now confined to two functions in this
- * file - they used to be *everywhere*), and the offensive globals. Applying
- * the Structured Program Theorem can be hard.
+ * ESR apologizes for the remaing gotos (now confined to two functions
+ * in this file - there used to be hundreds of them, *everywhere*),
+ * and the offensive globals. Applying the Structured Program Theorem
+ * can be hard.
*/
#include <stdlib.h>
#include <stdio.h>
FILE *logfp;
bool oldstyle = false;
+bool editline = true;
+bool prompt = true;
lcg_state lcgstate;
extern void initialise();
/* Options. */
- while ((ch = getopt(argc, argv, "l:o")) != EOF) {
+ while ((ch = getopt(argc, argv, "l:os")) != EOF) {
switch (ch) {
-case 'l':
+ case 'l':
logfp = fopen(optarg, "w");
if (logfp == NULL)
fprintf(stderr,
break;
case 'o':
oldstyle = true;
+ editline = prompt = false;
+ break;
+ case 's':
+ editline = false;
break;
}
}
Laction:
switch (action(cmdin, part, VERB, obj)) {
- case 2:
+ case GO_TERMINATE:
return true;
- case 8:
+ case GO_MOVE:
playermove(cmdin, VERB, NUL);
return true;
- case 2000: continue; /* back to top of main interpreter loop */
- case 2012: goto L2012;
- case 2600: goto L2600;
- case 2607: goto L2607;
- case 2630: goto L2630;
- case 2800:
+ case GO_TOP: continue; /* back to top of main interpreter loop */
+ case GO_CLEAROBJ: goto L2012;
+ case GO_CHECKHINT: goto L2600;
+ case GO_CHECKFOO: goto L2607;
+ case GO_LOOKUP: goto L2630;
+ case GO_WORD2:
/* Get second word for analysis. */
WD1=WD2;
WD1X=WD2X;
WD2=0;
goto L2620;
- case 8000:
+ case GO_UNKNOWN:
/* Random intransitive verbs come here. Clear obj just in case
* (see attack()). */
SETPRM(1,WD1,WD1X);
RSPEAK(257);
obj=0;
goto L2600;
- case 19000:
+ case GO_DWARFWAKE:
/* Oh dear, he's disturbed the dwarves. */
RSPEAK(136);
score(0);