use vsnprintf.