diff options
author | Denys Vlasenko | 2011-01-10 16:10:29 +0100 |
---|---|---|
committer | Denys Vlasenko | 2011-01-10 16:10:29 +0100 |
commit | 0f44c08560a5287fb927c15a3cce54302a0b80e5 (patch) | |
tree | 705320b89bff14a1c1af28a55f4197ebd88ae85b | |
parent | 84dba9c5bbd99cb80c0e201bbffa27a51766c63f (diff) | |
download | busybox-0f44c08560a5287fb927c15a3cce54302a0b80e5.zip busybox-0f44c08560a5287fb927c15a3cce54302a0b80e5.tar.gz |
libbb: progress indicator: use unicode support funcs instead of open-coding it
function old new delta
bb_progress_update 729 641 -88
Signed-off-by: Denys Vlasenko <dvlasenk@redhat.com>
-rw-r--r-- | libbb/progress.c | 20 |
1 files changed, 4 insertions, 16 deletions
diff --git a/libbb/progress.c b/libbb/progress.c index 74e80a3..3c7355f 100644 --- a/libbb/progress.c +++ b/libbb/progress.c @@ -93,22 +93,9 @@ void FAST_FUNC bb_progress_update(bb_progress_t *p, #if ENABLE_UNICODE_SUPPORT init_unicode(); - /* libbb candidate? */ { - wchar_t wbuf21[21]; - char *buf = xstrdup(curfile); - unsigned len; - - /* trim to 20 wide chars max (sets wbuf21[20] to 0) - * also, in case mbstowcs fails, we at least - * dont get garbage */ - memset(wbuf21, 0, sizeof(wbuf21)); - /* convert to wide chars, no more than 20 */ - len = mbstowcs(wbuf21, curfile, 20); /* NB: may return -1 */ - /* back to multibyte; cant overflow */ - wcstombs(buf, wbuf21, INT_MAX); - len = (len > 20) ? 0 : 20 - len; - fprintf(stderr, "\r%s%*s%4u%% ", buf, len, "", ratio); + char *buf = unicode_conv_to_printable_fixedwidth(NULL, curfile, 20); + fprintf(stderr, "\r%s%4u%% ", buf, ratio); free(buf); } #else @@ -158,7 +145,8 @@ void FAST_FUNC bb_progress_update(bb_progress_t *p, /* (long long helps to have working ETA even if !LFS) */ unsigned eta = (unsigned long long)to_download*elapsed/(uoff_t)transferred - elapsed; unsigned secs = eta % 3600; - fprintf(stderr, "%02u:%02u:%02u ETA", eta / 3600, secs / 60, secs % 60); + unsigned hours = eta / 3600; + fprintf(stderr, "%02u:%02u:%02u ETA", hours, secs / 60, secs % 60); } } } |