Upgrade get_vocab_id() to handle empty strings.
[open-adventure.git] / advent.h
index 085244067441c5de988a35ef3c3d57df88142b8b..72af32f58592371f62727ad96584e7fea9d307f9 100644 (file)
--- a/advent.h
+++ b/advent.h
@@ -20,6 +20,7 @@
 #define PANICTIME      15         // time left after closing
 #define BATTERYLIFE    2500       // turn limit increment from batteries
 #define WORD_NOT_FOUND -1         // "Word not found" flag value for the vocab hash functions.
+#define WORD_EMPTY     0          // "Word empty" flag value for the vocab hash functions
 #define CARRIED        -1         // Player is toting it
 #define READ_MODE      "rb"       // b is not needed for POSIX but harmless
 #define WRITE_MODE     "wb"       // b is not needed for POSIX but harmless
@@ -181,23 +182,23 @@ struct command_t {
     enum speechpart part;
     vocab_t verb;
     vocab_t obj;
-    token_t wd1, wd1x;
-    token_t wd2, wd2x;
+    token_t wd1;
+    token_t wd2;
+    char raw1[BUFSIZ], raw2[BUFSIZ];
 };
 
 extern struct game_t game;
 extern struct settings_t settings;
 
-extern char* xstrdup(const char* s);
-extern void* xmalloc(size_t size);
 extern void packed_to_token(long, char token[]);
-extern long token_to_packed(const char token[TOKLEN+1]);
-extern void tokenize(char*, long tokens[4]);
+extern long token_to_packed(const char token[]);
+extern void tokenize(char*, struct command_t *);
 extern void vspeak(const char*, bool, va_list);
 extern bool wordeq(token_t, token_t);
 extern bool wordempty(token_t);
 extern void wordclear(token_t *);
 extern void speak(const char*, ...);
+extern void sspeak(long msg, ...);
 extern void pspeak(vocab_t, enum speaktype, int, bool, ...);
 extern void rspeak(vocab_t, ...);
 extern void echo_input(FILE*, const char*, const char*);