void safevoid_vsnprintf(char* s, size_t n, const char *format, va_list ap) { int res; if(!s || n <= 0) return; // If the format string is empty, nothing to do. if(!format || !*format) { s[0]=0; return; } res = vsnprintf(s, n, format, ap); if(res < 0 || res >= n) s[n-1]=0; }