1 /* vi: set sw=4 ts=4: */
3 * Unicode support routines.
5 * Copyright (C) 2010 Denys Vlasenko
7 * Licensed under GPLv2, see file LICENSE in this source tree.
12 const char* FAST_FUNC printable_string(uni_stat_t *stats, const char *str)
14 static char *saved[4];
15 static unsigned cur_saved; /* = 0 */
24 /* 99+% of inputs do not need conversion */
26 stats->byte_count = (s - str);
27 stats->unicode_count = (s - str);
28 stats->unicode_width = (s - str);
39 #if ENABLE_UNICODE_SUPPORT
40 dst = unicode_conv_to_printable(stats, str);
43 char *d = dst = xstrdup(str);
48 if (c < ' ' || c >= 0x7f)
53 stats->byte_count = (d - dst);
54 stats->unicode_count = (d - dst);
55 stats->unicode_width = (d - dst);
60 free(saved[cur_saved]);
61 saved[cur_saved] = dst;
62 cur_saved = (cur_saved + 1) & (ARRAY_SIZE(saved)-1);