buffer [0] = 0;
- for (i = 0; table [i].str != NULL; i++)
- if (table [i].code & code) {
- if (buffer [0])
- strcat (buffer, " ");
- strcat (buffer, table [i].str);
- }
+ for (i = 0; code && table [i].str != NULL; i++) {
+ if (!(table [i].code & code))
+ continue;
+ code &= ~table [i].code;
+ if (!*table [i].str)
+ continue;
+ if (buffer [0])
+ strcat (buffer, " ");
+ strcat (buffer, table [i].str);
+ }
+
+ if (code)
+ sprintf (buffer + strlen (buffer), " unknown-flag-%2x", code);
return buffer;
}