int q_vsnprintf(char *str, size_t size, const char *format, va_list args) { int ret; ret = vsnprintf_func (str, size, format, args); if (ret < 0) ret = (int)size; if ((size_t)ret >= size) str[size - 1] = '\0'; return ret; }
static void xprintf (const char *fmt, ...) { char buf[1000]; va_list a; int size; va_start (a, fmt); size = vsnprintf_func (buf, 1000, fmt, a); va_end (a); if (size < 0) { size = sizeof(buf) - 1; buf[size] = 0; } size_t ignore = fwrite(buf, 1, size, stderr); }