]> git.pond.sub.org Git - empserver/commitdiff
symbol: New symbol_set_fmt() parameter sep, use for show
authorMarkus Armbruster <armbru@pond.sub.org>
Sat, 10 Jan 2015 07:39:48 +0000 (08:39 +0100)
committerMarkus Armbruster <armbru@pond.sub.org>
Mon, 2 Mar 2015 07:20:49 +0000 (08:20 +0100)
Signed-off-by: Markus Armbruster <armbru@pond.sub.org>
include/nsc.h
src/lib/common/nstreval.c
src/lib/subs/actofgod.c
src/lib/subs/show.c

index 43bd4afa0f9e17b1493cbcb6a7cf5319f994d2c5..553e6b567b672301612e21fd952000301e595200 100644 (file)
@@ -298,7 +298,8 @@ extern struct valstr *nstr_eval(struct valstr *, natid, void *,
                                enum nsc_type);
 extern int nstr_promote(int);
 extern char *symbol_by_value(int, struct symbol *);
-extern int symbol_set_fmt(char *, size_t, int, struct symbol *, int);
+extern int symbol_set_fmt(char *, size_t, int, struct symbol *,
+                         char *, int);
 /* src/lib/global/nsc.c */
 extern void nsc_init(void);
 /* src/lib/subs/nxtitem.c */
index 3e49b4789f5b3dd24e4c6120bf44d325b1caba78..f7cdbec3f2eb30db2fb77a59266a34d482e312e8 100644 (file)
@@ -262,9 +262,9 @@ symbol_by_value(int key, struct symbol *table)
 
 int
 symbol_set_fmt(char *buf, size_t sz, int flags, struct symbol symtab[],
-              int all)
+              char *sep, int all)
 {
-    char *sep = "";
+    char *pfx = "";
     int n, i;
     char *p;
 
@@ -276,12 +276,12 @@ symbol_set_fmt(char *buf, size_t sz, int flags, struct symbol symtab[],
            continue;
        p = symbol_by_value(bit(i), symtab);
        if (p)
-           n += snprintf(buf + n, sz - n, "%s%s", sep, p);
+           n += snprintf(buf + n, sz - n, "%s%s", pfx, p);
        else if (all)
-           n += snprintf(buf + n, sz - n, "%s#%d", sep, i);
+           n += snprintf(buf + n, sz - n, "%s#%d", pfx, i);
        if ((size_t)n >= sz)
            sz = n;
-       sep = ", ";
+       pfx = sep;
     }
 
     CANT_HAPPEN((size_t)n >= sz && buf);
index b94ee296b73f57643cec4808988e5dd274040e15..24c5638fe2f9a94c4f08c59cdf0f1c5cd519d9a1 100644 (file)
@@ -214,16 +214,16 @@ divine_flag_change(struct empobj *unit, char *name,
        return;
     }
 
-    symbol_set_fmt(set, sizeof(set), new & ~old, sym, 1);
-    symbol_set_fmt(clr, sizeof(clr), old & ~new, sym, 1);
+    symbol_set_fmt(set, sizeof(set), new & ~old, sym, ", ", 1);
+    symbol_set_fmt(clr, sizeof(clr), old & ~new, sym, ", ", 1);
     pr("%s of %s changed: %s%s%s%s%s\n",
        name, unit_nameof(unit),
        set, set[0] ? " set" : "",
        set[0] && clr[0] ? ", and " : "",
        clr, clr[0] ? " cleared" : "");
 
-    if (symbol_set_fmt(set, sizeof(set), new & ~old, sym, 0)
-       + symbol_set_fmt(clr, sizeof(clr), old & ~new, sym, 0))
+    if (symbol_set_fmt(set, sizeof(set), new & ~old, sym, ", ", 0)
+       + symbol_set_fmt(clr, sizeof(clr), old & ~new, sym, ", ", 0))
        wu(0, unit->own, "%s of %s changed by an act of %s: %s%s%s%s%s\n",
           name, unit_nameof(unit), cname(player->cnum),
           set, set[0] ? " set" : "",
index 31fa44d00bd6ed502687d1c546b2219fdc57eef8..a550de8f33112018ab1a9fe045b71a94a30d9860 100644 (file)
@@ -31,7 +31,7 @@
  *     Jeff Bailey, 1990
  *     Steve McClure, 1996
  *     Ron Koenderink, 2005-2009
- *     Markus Armbruster, 2006-2011
+ *     Markus Armbruster, 2006-2015
  */
 
 #include <config.h>
@@ -658,14 +658,9 @@ show_load(short item[])
 static void
 show_capab(int flags, struct symbol *table)
 {
-    int i;
-    char *p;
+    char buf[1024];
 
-    for (i = 0; i < 32; i++) {
-       if (!(flags & bit(i)))
-           continue;
-       p = symbol_by_value(bit(i), table);
-       if (p)
-           pr(" %s", p);
-    }
+    symbol_set_fmt(buf, sizeof(buf), flags, table, " ", 0);
+    if (*buf)
+       pr(" %s", buf);
 }