- msg_info_t *mi = mi_ptr;
- if(mi) {
- fprintf(mi->mod->file, mi->msg, filename, line, func);
- obstack_free(&dbg_obst, mi);
- }
+ msg_info_t *mi = (msg_info_t*)mi_ptr;
+ if (mi) {
+ fprintf(mi->mod->file, mi->msg, filename, line, func);
+ obstack_free(&dbg_obst, mi);
+ }
+}
+
+void _firm_dbg_print(const firm_dbg_module_t *mod, unsigned mask, const char *fmt, ...)
+{
+ if (mask == 0 || (mod->mask & mask)) {
+ va_list args;
+ char *res;
+ va_start(args, fmt);
+ ir_obst_vprintf(&dbg_obst, fmt, args);
+ obstack_1grow(&dbg_obst, '\0');
+ res = (char*)obstack_finish(&dbg_obst);
+ fprintf(mod->file, "%s", res);
+ obstack_free(&dbg_obst, res);
+ va_end(args);
+ }