- char *p;
- int ret = 0;
-
- mbtowc(NULL, NULL, 0);
- for(p = rl_line_buffer;(p - rl_line_buffer) < rl_point;) {
- int a, l;
- wchar_t wc;
-
- if((a = mbtowc(&wc, p, MB_CUR_MAX)) == 0)
- break;
- else if (a == -1)
- return rl_point; /* fall back */
- else
- p += a;
-
- l = wcwidth(wc);
- if(l > 0)
- ret += l;
- }
-
- return ret;