/*--- vex_printf ---*/
/*---------------------------------------------------------*/
-/* This should be the only <...> include in the entire VEX library.
- New code for vex_util.c should go above this point. */
-#include <stdarg.h>
-
SizeT vex_strlen ( const HChar* str )
{
SizeT i = 0;
*vg_sprintf_ptr++ = c;
}
-UInt vex_sprintf ( HChar* buf, const HChar *format, ... )
+UInt vex_vsprintf ( HChar* buf, const HChar* format, va_list vargs )
{
- Int ret;
- va_list vargs;
+ UInt ret;
vg_sprintf_ptr = buf;
+ ret = vprintf_wrk(add_to_vg_sprintf_buf, format, vargs);
+ add_to_vg_sprintf_buf('\0');
- va_start(vargs,format);
+ vassert(vex_strlen(buf) == ret);
+ return ret;
+}
- ret = vprintf_wrk ( add_to_vg_sprintf_buf, format, vargs );
- add_to_vg_sprintf_buf(0);
+UInt vex_sprintf ( HChar* buf, const HChar *format, ... )
+{
+ UInt ret;
+ va_list vargs;
+ va_start(vargs,format);
+ ret = vex_vsprintf(buf, format, vargs);
va_end(vargs);
vassert(vex_strlen(buf) == ret);
#ifndef __VEX_MAIN_UTIL_H
#define __VEX_MAIN_UTIL_H
+/* This should be the only <...> include in the entire VEX library. */
+#include <stdarg.h>
+
#include "libvex_basictypes.h"
#include "libvex_inner.h"
__attribute__ ((format (printf, 2, 3)))
extern UInt vex_sprintf ( HChar* buf, const HChar *format, ... );
+__attribute__ ((format (printf, 2, 0)))
+extern UInt vex_vsprintf ( HChar* buf, const HChar* format, va_list vargs );
+
/* String ops */