+#ifdef HANDLE_MULTIBYTE
+static int
+rline_calc_point()
+{
+ 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;
+}
+#endif
+