/*
* seq_bits.c -- return the snprintb() string for a sequence
*
- * $Id$
- *
* This code is Copyright (c) 2002, by the authors of nmh. See the
* COPYRIGHT file in the root directory of the nmh distribution for
* complete copyright information.
char *
seq_bits (struct msgs *mp)
{
- int i;
+ size_t i;
size_t len;
static char buffer[BUFSIZ];
strncpy (buffer, MBITS, sizeof(buffer));
- for (i = 0; mp->msgattrs[i]; i++) {
+ for (i = 0; i < svector_size (mp->msgattrs); i++) {
len = strlen (buffer);
snprintf (buffer + len, sizeof(buffer) - len,
- "%c%s", FFATTRSLOT + 1 + i, mp->msgattrs[i]);
+ "%c%s", FFATTRSLOT + 1 + (int) i,
+ svector_at (mp->msgattrs, i));
+ /*
+ * seq_bits() is used by seq_printdebug(), which passes an
+ * unsigned int bit vector to snprintb(). So limit the
+ * size of the return value accordingly. Even worse,
+ * snprintb() only uses characters up through ASCII space
+ * as the delimiter (the %c character above). So limit
+ * based on that.
+ */
+ if ((int) i == ' ' - FFATTRSLOT - 1) break;
}
return buffer;