login

<     >

2018-09-24 20:33:53 (UTC-03:00)

Marcel Rodrigues <marcelgmr@gmail.com>

Merge pull request #35 from ikji/master

Correctly handle CJK/double width characters.

diff --git a/rover.c b/rover.c
index 7b92438..eca6aeb 100644
--- a/rover.c
+++ b/rover.c
@@ -497,16 +497,17 @@ update_view()
         } else {
             char *suffix, *suffixes = "BKMGTPEZY";
             off_t human_size = ESIZE(j) * 10;
-            int length = mbstowcs(NULL, ENAME(j), 0);
+            int length = mbstowcs(WBUF, ENAME(j), PATH_MAX);
+            int namecols = wcswidth(WBUF, length);
             for (suffix = suffixes; human_size >= 10240; suffix++)
                 human_size = (human_size + 512) / 1024;
             if (*suffix == 'B')
-                swprintf(WBUF, PATH_MAX, L"%s%*d %c", ENAME(j),
-                         (int) (COLS - length - 6),
+                swprintf(WBUF + length, PATH_MAX - length, L"%*d %c",
+                         (int) (COLS - namecols - 6),
                          (int) human_size / 10, *suffix);
             else
-                swprintf(WBUF, PATH_MAX, L"%s%*d.%d %c", ENAME(j),
-                         (int) (COLS - length - 8),
+                swprintf(WBUF + length, PATH_MAX - length, L"%*d.%d %c",
+                         (int) (COLS - namecols - 8),
                          (int) human_size / 10, (int) human_size % 10, *suffix);
         }
         mvwhline(rover.window, i + 1, 1, ' ', COLS - 2);