diff options
author | Denys Vlasenko <vda.linux@googlemail.com> | 2010-01-24 07:44:03 +0100 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2010-01-24 07:44:03 +0100 |
commit | 9f93d621925966c22ee51fdcb5def8e131596f9b (patch) | |
tree | c1024fa92d6f422df6cf0991d5c9c8a4977b8625 /coreutils/expand.c | |
parent | 5da9f96ad85a2d9119d92c7a3d89deca7d904210 (diff) | |
download | busybox-w32-9f93d621925966c22ee51fdcb5def8e131596f9b.tar.gz busybox-w32-9f93d621925966c22ee51fdcb5def8e131596f9b.tar.bz2 busybox-w32-9f93d621925966c22ee51fdcb5def8e131596f9b.zip |
libbb: better unicode width support. Hopefully fixes bug 839.
Also opens up a possibility to make other unicode stuff smaller
and more correct later. but:
function old new delta
static.combining - 516 +516
bb_wcwidth - 328 +328
unicode_cut_nchars - 141 +141
mbstowc_internal - 93 +93
in_table - 78 +78
cal_main 899 961 +62
static.combining0x10000 - 40 +40
unicode_strlen - 31 +31
bb_mbstrlen 31 - -31
bb_mbstowcs 173 102 -71
------------------------------------------------------------------------------
(add/remove: 7/1 grow/shrink: 1/1 up/down: 1289/-102) Total: 1187 bytes
Uses code of Markus Kuhn, which is in public domain:
http://www.cl.cam.ac.uk/~mgk25/ucs/wcwidth.c
"Permission to use, copy, modify, and distribute this software
for any purpose and without fee is hereby granted. The author
disclaims all warranties with regard to this software."
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'coreutils/expand.c')
-rw-r--r-- | coreutils/expand.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/coreutils/expand.c b/coreutils/expand.c index 649b4c175..2f6a708b5 100644 --- a/coreutils/expand.c +++ b/coreutils/expand.c | |||
@@ -49,7 +49,7 @@ static void expand(FILE *file, unsigned tab_size, unsigned opt) | |||
49 | unsigned len; | 49 | unsigned len; |
50 | *ptr = '\0'; | 50 | *ptr = '\0'; |
51 | # if ENABLE_FEATURE_ASSUME_UNICODE | 51 | # if ENABLE_FEATURE_ASSUME_UNICODE |
52 | len = bb_mbstrlen(ptr_strbeg); | 52 | len = unicode_strlen(ptr_strbeg); |
53 | # else | 53 | # else |
54 | len = ptr - ptr_strbeg; | 54 | len = ptr - ptr_strbeg; |
55 | # endif | 55 | # endif |
@@ -105,7 +105,7 @@ static void unexpand(FILE *file, unsigned tab_size, unsigned opt) | |||
105 | char c; | 105 | char c; |
106 | c = ptr[n]; | 106 | c = ptr[n]; |
107 | ptr[n] = '\0'; | 107 | ptr[n] = '\0'; |
108 | len = bb_mbstrlen(ptr); | 108 | len = unicode_strlen(ptr); |
109 | ptr[n] = c; | 109 | ptr[n] = c; |
110 | } | 110 | } |
111 | # else | 111 | # else |