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 */
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;
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);
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" : "",
* Jeff Bailey, 1990
* Steve McClure, 1996
* Ron Koenderink, 2005-2009
- * Markus Armbruster, 2006-2011
+ * Markus Armbruster, 2006-2015
*/
#include <config.h>
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);
}