On Thu, Feb 12, 2026 at 04:02:11PM +0100, Daniel Tameling wrote:
On Thu, Feb 12, 2026 at 01:20:18PM +0800, Kevin J. McCarthy wrote:

The ones in wchar.h include wcrtomb(), mbrtowc(), and wcwidth().

So, in this case, why are we only getting in trouble with wcwidth(), but
not the first two?


FreeBSD defines wcwidth as __wcwidth [1] and has in a different header the complete implementation of __wcwidth so that it can always be inlined [2]. An undef wcwidth solves the problem.

Thank you Daniel! Rene, let's try adding a undef inside mbyte.h and see if that solves the compile problem you saw:

 #ifdef iswupper
 # undef iswupper
 #endif
+#ifdef wcwidth
+# undef wcwidth
+#endif
 size_t wcrtomb (char *s, wchar_t wc, mbstate_t *ps);
 size_t mbrtowc (wchar_t *pwc, const char *s, size_t n, mbstate_t *ps);
 int iswprint (wint_t wc);

Honestly, wchar.h and wctype.h are nowadays part of POSIX and the C standard, and have been for a long time. The workaround isn't really needed anymore. If somebody disagrees, they should step up and maintain the code. Your limited time is better spend elsewhere.

That would nice. I wonder if we could mark --without-wc-funcs as deprecated in the 2.4.0 release and rip this stuff out in the 2.5.0 release? I hear Steffen's objection, but isn't it reasonable to expect a system to have the wc functions by now?

If there is general agreement, then, Rene, perhaps we shouldn't invest too much time on CI testing the --without-wc-funcs on sr.ht.

--
Kevin J. McCarthy
GPG Fingerprint: 8975 A9B3 3AA3 7910 385C  5308 ADEF 7684 8031 6BDA

Attachment: signature.asc
Description: PGP signature

Reply via email to