+static
+void msg_verbose_filter_(unsigned int level, char *fmt, ...) {
+ static const char * const levels[] = { "error", "info", "debug" };
+ FILE *f = (level <= MSG_ERROR) ? stderr : stdout;
+ va_list ap;
+
+ if (level + 2 > opt_.verbose)
+ return;
+
+ if (level < sizeof levels / sizeof *levels)
+ fprintf(f, "[%s %s] ", "dcpu16", levels[level]);
+ else
+ fprintf(f, "[%s %u] ", "dcpu16", level);
+
+ va_start(ap, fmt);
+ vfprintf(f, fmt, ap);
+ va_end(ap);
+
+ fprintf(f, "\n");
+
+ fflush(f);
+}