summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTomas Heinrich <heinrich.tomas@gmail.com>2010-03-26 08:40:47 (GMT)
committer Denys Vlasenko <vda.linux@googlemail.com>2010-03-26 08:40:47 (GMT)
commit1abc07dcca237e6b5c98fea740e59d59c801c9e2 (patch)
treebff281c1accc3877310fe09836e7ee0ad071f037
parent7724c766bdfba5f3af5cdf5d869bcf03f45149e3 (diff)
downloadbusybox-1abc07dcca237e6b5c98fea740e59d59c801c9e2.tar.gz
busybox-1abc07dcca237e6b5c98fea740e59d59c801c9e2.tar.bz2
[un]expand: account for different character widths. +16 bytes.
Signed-off-by: Tomas Heinrich <heinrich.tomas@gmail.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
-rw-r--r--coreutils/expand.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/coreutils/expand.c b/coreutils/expand.c
index 2f6a708..60ac9f5 100644
--- a/coreutils/expand.c
+++ b/coreutils/expand.c
@@ -49,7 +49,11 @@ static void expand(FILE *file, unsigned tab_size, unsigned opt)
unsigned len;
*ptr = '\0';
# if ENABLE_FEATURE_ASSUME_UNICODE
- len = unicode_strlen(ptr_strbeg);
+ {
+ uni_stat_t uni_stat;
+ printable_string(&uni_stat, ptr_strbeg);
+ len = uni_stat.unicode_width;
+ }
# else
len = ptr - ptr_strbeg;
# endif
@@ -103,9 +107,11 @@ static void unexpand(FILE *file, unsigned tab_size, unsigned opt)
# if ENABLE_FEATURE_ASSUME_UNICODE
{
char c;
+ uni_stat_t uni_stat;
c = ptr[n];
ptr[n] = '\0';
- len = unicode_strlen(ptr);
+ printable_string(&uni_stat, ptr);
+ len = uni_stat.unicode_width;
ptr[n] = c;
}
# else