diff options
author | Bruno Haible <bruno@clisp.org> | 2020-01-25 21:17:51 +0100 |
---|---|---|
committer | Bruno Haible <bruno@clisp.org> | 2020-01-25 21:17:51 +0100 |
commit | 756370637a184426d4834b47cd653fc7fee296f5 (patch) | |
tree | 3ccce07551ad3f87a114207f35618b37dfdd5535 /lib/wctype.in.h | |
parent | a51a5f5d24ce8e9be82c6a564576500d0f4d4428 (diff) | |
download | gnulib-756370637a184426d4834b47cd653fc7fee296f5.tar.gz |
iswxdigit: New module.
* m4/iswxdigit.m4: New file.
* lib/wctype.in.h (iswxdigit): Potentially override.
(iswxdigit, rpl_iswxdigit): Test REPLACE_ISWXDIGIT, not
REPLACE_ISWCNTRL. Rely on ISO C compliant definition.
* lib/iswxdigit.c: New file.
* m4/wctype_h.m4 (gl_WCTYPE_H_DEFAULTS): Initialize GNULIB_ISWXDIGIT,
REPLACE_ISWXDIGIT.
* modules/wctype-h (Makefile.am): Substitute GNULIB_ISWXDIGIT,
REPLACE_ISWXDIGIT.
* modules/iswxdigit: New file.
* doc/posix-functions/iswxdigit.texi: Mention the portability problem.
Diffstat (limited to 'lib/wctype.in.h')
-rw-r--r-- | lib/wctype.in.h | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/lib/wctype.in.h b/lib/wctype.in.h index 09dbb55c0c..5d266d9b83 100644 --- a/lib/wctype.in.h +++ b/lib/wctype.in.h @@ -210,7 +210,10 @@ rpl_iswupper (wint_t wc) _GL_WCTYPE_INLINE int rpl_iswxdigit (wint_t wc) { - return ((wchar_t) wc == wc ? iswxdigit ((wchar_t) wc) : 0); + return ((wchar_t) wc == wc + ? (wc >= '0' && wc <= '9') + || ((wc & ~0x20) >= 'A' && (wc & ~0x20) <= 'F') + : 0); } _GL_WCTYPE_INLINE wint_t @@ -428,7 +431,7 @@ iswupper } _GL_WCTYPE_INLINE int -# if @REPLACE_ISWCNTRL@ +# if @REPLACE_ISWXDIGIT@ rpl_iswxdigit # else iswxdigit @@ -488,6 +491,16 @@ _GL_FUNCDECL_RPL (iswdigit, int, (wint_t wc)); # endif # endif +# if @GNULIB_ISWXDIGIT@ +# if @REPLACE_ISWXDIGIT@ +# if !(defined __cplusplus && defined GNULIB_NAMESPACE) +# undef iswxdigit +# define iswxdigit rpl_iswxdigit +# endif +_GL_FUNCDECL_RPL (iswxdigit, int, (wint_t wc)); +# endif +# endif + # endif # if defined __MINGW32__ && !@GNULIB_OVERRIDES_WINT_T@ @@ -578,7 +591,7 @@ _GL_CXXALIAS_RPL (iswupper, int, (wint_t wc)); #else _GL_CXXALIAS_SYS (iswupper, int, (wint_t wc)); #endif -#if @REPLACE_ISWCNTRL@ +#if @REPLACE_ISWXDIGIT@ _GL_CXXALIAS_RPL (iswxdigit, int, (wint_t wc)); #else _GL_CXXALIAS_SYS (iswxdigit, int, (wint_t wc)); |