void dstr_catf(struct dstr *dst, const char *format, ...) { va_list args; va_start(args, format); dstr_vcatf(dst, format, args); va_end(args); }
static inline void do_log(int level, const char *msg, ...) { va_list args; struct dstr str = {0}; va_start(args, msg); dstr_copy(&str, "[GDI monitor capture]: "); dstr_vcatf(&str, msg, args); blog(level, "%s", str.array); dstr_free(&str); va_end(args); }
static inline void ca_warn(struct coreaudio_data *ca, const char *func, const char *format, ...) { va_list args; struct dstr str = {0}; va_start(args, format); dstr_printf(&str, "[%s]:[device '%s'] ", func, ca->device_name); dstr_vcatf(&str, format, args); blog(LOG_WARNING, "%s", str.array); dstr_free(&str); va_end(args); }