+
+#if USE_WIDEC_SUPPORT
+ numcols = 0;
+ while (*p != 0) {
+ mbstate_t state;
+ wchar_t wc;
+ size_t need;
+
+ init_mb(state);
+ need = mbrtowc(0, p, strlen(p), &state);
+ if (need == (size_t) -1)
+ break;
+ mbrtowc(&wc, p, need, &state);
+ if (!iswprint((wint_t) wc))
+ break;
+ if (wcwidth(wc) + numcols > limit)
+ break;
+ numcols += wcwidth(wc);
+ p += need;
+ }
+ numchrs = (int) (p - str);
+#else