char *dup_zucs_string_to_utf8_string(z_ucs *src) { char *dst; z_ucs *src_ptr; size_t len = 0; src_ptr = src; while (*src_ptr != 0) { len += get_utf8_code_length(*src_ptr); src_ptr++; } if ((dst = malloc(len + 1)) == NULL) return NULL; src_ptr = src; if ((zucs_string_to_utf8_string(dst, &src_ptr, len + 1)) != (int)(len + 1)) { free(dst); return NULL; } return dst; }
int i18n_test_stream_output(z_ucs *output) { int len; char buf[STREAM_BUFSIZE]; while (*output != 0) { len = zucs_string_to_utf8_string(buf, &output, STREAM_BUFSIZE); fwrite(buf, 1, len-1, stdout); } return 0; }
void _trace_log_z_ucs(z_ucs *output) { char utf_8_output[80 * UTF_8_MB_LEN + 1]; if (stream_t != NULL) { while (*output != 0) { zucs_string_to_utf8_string(utf_8_output, &output, 80 * UTF_8_MB_LEN + 1); fsi->writestring(utf_8_output, stream_t); fsi->flushfile(stream_t); } } }