CJK characters take up two columns for each character; teach badblocks
to take this into account.
Addresses-Debian-Bug: #860926
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
Reported-by: "Mingye Wang (Arthur2e5)" <arthur200126@gmail.com>
#include <setjmp.h>
#include <time.h>
#include <limits.h>
+#ifdef HAVE_MBSTOWCS
+#include <wchar.h>
+#endif
#include <sys/time.h>
#include <sys/ioctl.h>
{
struct timeval time_end;
char diff_buf[32], line_buf[128];
+#ifdef HAVE_MBSTOWCS
+ wchar_t wline_buf[128];
+#endif
int len;
gettimeofday(&time_end, 0);
num_write_errors,
num_corruption_errors);
#ifdef HAVE_MBSTOWCS
- len = mbstowcs(NULL, line_buf, sizeof(line_buf));
+ mbstowcs(wline_buf, line_buf, sizeof(line_buf));
+ len = wcswidth(wline_buf, sizeof(line_buf));
+ if (len < 0)
+ len = strlen(line_buf); /* Should never happen... */
#endif
fputs(line_buf, stderr);
memset(line_buf, '\b', len);