}
}
+void token_to_packed(char token[6], long* packed)
+{
+ *packed = 0;
+ for (size_t i = 0; i < 5; ++i)
+ {
+ if (token[4 - i] == '\0')
+ continue;
+ char mapped = ascii_to_advent[(int) token[4 - i]];
+ *packed |= (mapped << (6 * i));
+ }
+}
+
+/* Hide the fact that wods are corrently packed longs */
+
+bool wordeq(token_t a, token_t b)
+{
+ return a == b;
+}
+
+bool wordempty(token_t a)
+{
+ return a == 0;
+}
+
+void wordclear(token_t *v)
+{
+ *v = 0;
+}
+
/* I/O routines (SPEAK, PSPEAK, RSPEAK, SETPRM, GETIN, YES) */
void speak(const char* msg)
IGNORE(getline(&input, &n, stdin));
}
- if (input == NULL) // Got EOF; quit.
- exit(EXIT_SUCCESS);
+ if (input == NULL) // Got EOF; return with it.
+ return(input);
else if (input[0] == '#') // Ignore comments.
continue;
else // We have a 'normal' line; leave the loop.
speak(question);
reply = get_input();
+ if (reply == NULL) {
+ linenoiseFree(reply);
+ exit(EXIT_SUCCESS);
+ }
- char* firstword = (char*) xmalloc(strlen(reply));
+ char* firstword = (char*) xmalloc(strlen(reply)+1);
sscanf(reply, "%s", firstword);
for (int i = 0; i < (int)strlen(firstword); ++i)
from = game.fixed[object - NOBJECTS];
else
from = game.place[object];
- if (from != NOWHERE && from != CARRIED && !SPECIAL(from))
+ if (from != LOC_NOWHERE && from != CARRIED && !SPECIAL(from))
CARRY(object, from);
DROP(object, where);
}
* If the data file uses a character other than space (e.g., tab) to
* separate numbers, that character should also translate to 0.
*
- * This procedure may use the map1,map2 arrays to maintain static data for
- * the mapping. MAP2(1) is set to 0 when the program starts
- * and is not changed thereafter unless the routines on this page choose
- * to do so. */
+ * This procedure may use the map1,map2 arrays to maintain
+ * static data for he mapping. MAP2(1) is set to 0 when the
+ * program starts and is not changed thereafter unless the
+ * routines in this module choose to do so. */
LNLENG = 0;
for (long i = 1; i <= (long)sizeof(INLINE) && INLINE[i] != 0; i++) {
long val = INLINE[i];
void bug(enum bugtype num, const char *error_string)
{
- fprintf(stderr, "Fatal error %d, %s.\n", num, error_string);
- exit(EXIT_FAILURE);
+ fprintf(stderr, "Fatal error %d, %s.\n", num, error_string);
+ exit(EXIT_FAILURE);
}
/* end */