]> git.pond.sub.org Git - empserver/commitdiff
(item_by_name): New, factored out of whatitem(). Use it to simplify
authorMarkus Armbruster <armbru@pond.sub.org>
Thu, 8 Apr 2004 19:26:55 +0000 (19:26 +0000)
committerMarkus Armbruster <armbru@pond.sub.org>
Thu, 8 Apr 2004 19:26:55 +0000 (19:26 +0000)
some uses of whatitem().

include/item.h
src/lib/commands/load.c
src/lib/commands/tend.c
src/lib/subs/whatitem.c

index a5525b0ee50d3e51f57aa6e88ae432eb875ca786..f8688d81ab5e3f87eb96337e2c739d8c95b6d621 100644 (file)
@@ -52,6 +52,7 @@ extern struct ichrstr ichr[];
 
 /* procedures using/returning this struct */
 
-extern struct ichrstr *whatitem(s_char *ptr, s_char *prompt);
+extern struct ichrstr *whatitem(char *, char *);
+extern struct ichrstr *item_by_name(char *);
 
 #endif /* _ITEM_H_ */
index 1668e1a3fcbf0323dc24dfbc8139e2300b28677f..e08a827da8f02d4a8a212d1a8e23e627ba5508d9 100644 (file)
@@ -94,10 +94,10 @@ load(void)
        type = EF_PLANE;
     else if (!strncmp(p, "land", 4))
        type = EF_LAND;
-    else if (NULL != (ich = whatitem(p, (s_char *)0)))
+    else if (NULL != (ich = item_by_name(p)))
        type = EF_SECTOR;
     else {
-       pr("Bad commodity.\n");
+       pr("Can't load '%s'\n", p);
        return RET_SYN;
     }
 
@@ -234,10 +234,10 @@ lload(void)
        type = EF_PLANE;
     else if (!strncmp(p, "land", 4))
        type = EF_LAND;
-    else if (NULL != (ich = whatitem(p, (s_char *)0)))
+    else if (NULL != (ich = item_by_name(p)))
        type = EF_SECTOR;
     else {
-       pr("Bad commodity.\n");
+       pr("Can't load '%s'\n", p);
        return RET_SYN;
     }
 
index 46a233c83d6e4bb4c4147e1409892031f4cdc05e..06e3c73b8b5ab29a4e512381432a6e154ed7aa38 100644 (file)
@@ -80,10 +80,10 @@ tend(void)
 
     if (!strncmp(p, "land", 4))
        type = EF_LAND;
-    else if (NULL != (ip = whatitem(p, (s_char *)0)))
+    else if (NULL != (ip = item_by_name(p)))
        type = EF_SECTOR;
     else {
-       pr("Bad commodity.\n");
+       pr("Can't tend '%s'\n", p);
        return RET_SYN;
     }
 
index 23e8a8de8bd89afcdb64d46b8ca7c39ffc35157b..428d64c36589f9ce0761a371f84be12e390db86f 100644 (file)
 #include "item.h"
 #include "prototypes.h"
 
+/*
+ * Get item type argument.
+ * If INPUT is not empty, use it, else prompt for more input using PROMPT.
+ * Return item characteristics on success, else NULL.
+ */
 struct ichrstr *
-whatitem(s_char *ptr, s_char *prompt)
+whatitem(char *input, char *prompt)
 {
-    register s_char *p;
-    register struct ichrstr *ip;
-    s_char buf[1024];
+    char *p;
+    struct ichrstr *ip;
+    char buf[1024];
 
-    p = getstarg(ptr, prompt, buf);
+    p = getstarg(input, prompt, buf);
     if (p == 0 || *p == 0)
        return 0;
+    ip = item_by_name(p);
+    if (!ip)
+       pr("Unrecognized item \"%c\"\n", *p);
+    return ip;
+}
+
+/*
+ * Map item type name STR to item characteristics, NULL if not found.
+ */
+struct ichrstr *
+item_by_name(char *str)
+{
+    struct ichrstr *ip;
+
     for (ip = &ichr[1]; ip->i_mnem != 0; ip++) {
-       if (*p == ip->i_mnem)
+       /* FIXME check i_name if str[2]? */
+       if (*str == ip->i_mnem)
            return ip;
     }
-    pr("Unrecognized item \"%c\"\n", *p);
     return 0;
 }