U_NAMESPACE_END U_NAMESPACE_USE U_CAPI int32_t u_formatMessage(const char *locale, const UChar *pattern, int32_t patternLength, UChar *result, int32_t resultLength, UErrorCode *status, ...) { va_list ap; int32_t actLen; //argument checking defered to subsequent method calls // start vararg processing va_start(ap, status); actLen = u_vformatMessage(locale,pattern,patternLength,result,resultLength,ap,status); // end vararg processing va_end(ap); return actLen; }
static int32_t CallFormatMessage(const char* locale, UChar* testCasePattern, int32_t patternLength, UChar* result, int32_t resultLength, UErrorCode *status, ...) { int32_t len = 0; va_list ap; va_start(ap, status); len = u_vformatMessage(locale, testCasePattern, patternLength, result, resultLength, ap, status); va_end(ap); return len; }
/* Format a message and print it's output to fp */ U_CFUNC int u_wmsg(FILE *fp, const char *tag, ... ) { const UChar *msg; int32_t msgLen; UErrorCode err = U_ZERO_ERROR; #if !UCONFIG_NO_FORMATTING va_list ap; #endif UChar result[4096]; int32_t resultLength = LENGTHOF(result); if(gBundle == NULL) { #if 0 fprintf(stderr, "u_wmsg: No path set!!\n"); /* FIXME: codepage?? */ #endif return -1; } msg = ures_getStringByKey(gBundle, tag, &msgLen, &err); if(U_FAILURE(err)) { return -1; } #if UCONFIG_NO_FORMATTING resultLength = sizeof(gNoFormatting) / U_SIZEOF_UCHAR; if((msgLen + resultLength) <= LENGTHOF(result)) { memcpy(result, msg, msgLen * U_SIZEOF_UCHAR); memcpy(result + msgLen, gNoFormatting, resultLength); resultLength += msgLen; uprint(result, resultLength, fp, &err); } else { uprint(msg,msgLen, fp, &err); } #else va_start(ap, tag); resultLength = u_vformatMessage(uloc_getDefault(), msg, msgLen, result, resultLength, ap, &err); va_end(ap); if(U_FAILURE(err)) { #if 0 fprintf(stderr, "u_wmsg: failed to format %s:%s, err %s\n", uloc_getDefault(), tag, u_errorName(err)); #endif err = U_ZERO_ERROR; uprint(msg,msgLen, fp, &err); return -1; } uprint(result, resultLength, fp, &err); #endif if(U_FAILURE(err)) { #if 0 fprintf(stderr, "u_wmsg: failed to print %s: %s, err %s\n", uloc_getDefault(), tag, u_errorName(err)); #endif return -1; } return 0; }