U_CAPI int32_t U_EXPORT2 /* U_CAPI ... U_EXPORT2 added by Peter Kirk 17 Nov 2001 */ u_vsnprintf(UChar *buffer, int32_t count, const char *locale, const char *patternSpecification, va_list ap) { int32_t written; UChar *pattern; UChar patBuffer[UFMT_DEFAULT_BUFFER_SIZE]; int32_t size = (int32_t)strlen(patternSpecification) + 1; /* convert from the default codepage to Unicode */ if (size >= MAX_UCHAR_BUFFER_SIZE(patBuffer)) { pattern = (UChar *)uprv_malloc(size * sizeof(UChar)); if(pattern == 0) { return 0; } } else { pattern = patBuffer; } ufmt_defaultCPToUnicode(patternSpecification, size, pattern, size); /* do the work */ written = u_vsnprintf_u(buffer, count, locale, pattern, ap); /* clean up */ if (pattern != patBuffer) { uprv_free(pattern); } return written; }
U_CAPI int32_t U_EXPORT2 u_vsprintf_u(UChar *buffer, const UChar *patternSpecification, va_list ap) { return u_vsnprintf_u(buffer, INT32_MAX, patternSpecification, ap); }
U_CAPI int32_t U_EXPORT2 u_sprintf_u(UChar *buffer, const UChar *patternSpecification, ... ) { va_list ap; int32_t written; va_start(ap, patternSpecification); written = u_vsnprintf_u(buffer, INT32_MAX, patternSpecification, ap); va_end(ap); return written; }
U_CAPI int32_t U_EXPORT2 u_snprintf_u(UChar *buffer, int32_t count, const char *locale, const UChar *patternSpecification, ... ) { va_list ap; int32_t written; va_start(ap, patternSpecification); written = u_vsnprintf_u(buffer, count, locale, patternSpecification, ap); va_end(ap); return written; }