From f4daae620b393295187c8b710a00ade946ac8964 Mon Sep 17 00:00:00 2001 From: Michael Chastain Date: Wed, 17 Dec 2003 20:13:54 +0000 Subject: [PATCH] 2003-12-11 Michael Chastain * rlmbutil.h: Require HAVE_MBSTATE_T for HANDLE_MULTIBYTE. Revert requirement of HAVE_MBRTOWC. Delete macro definitions that attempted to fake mbstate_t if HAVE_MBSRTOCWS is defined and HAVE_MBSTATE_T is not defined. --- readline/ChangeLog.gdb | 7 +++++++ readline/rlmbutil.h | 26 +++++++++++++------------- 2 files changed, 20 insertions(+), 13 deletions(-) diff --git a/readline/ChangeLog.gdb b/readline/ChangeLog.gdb index affba35f7c1..adc733ca0d3 100644 --- a/readline/ChangeLog.gdb +++ b/readline/ChangeLog.gdb @@ -1,3 +1,10 @@ +2003-12-11 Michael Chastain + + * rlmbutil.h: Require HAVE_MBSTATE_T for HANDLE_MULTIBYTE. + Revert requirement of HAVE_MBRTOWC. Delete macro definitions + that attempted to fake mbstate_t if HAVE_MBSRTOCWS is defined + and HAVE_MBSTATE_T is not defined. + 2003-06-14 H.J. Lu * support/config.guess: Update to 2003-06-12 version. diff --git a/readline/rlmbutil.h b/readline/rlmbutil.h index 9b8464a07f5..dab954fad90 100644 --- a/readline/rlmbutil.h +++ b/readline/rlmbutil.h @@ -1,6 +1,6 @@ /* rlmbutil.h -- utility functions for multibyte characters. */ -/* Copyright (C) 2001 Free Software Foundation, Inc. +/* Copyright (C) 2001, 2003 Free Software Foundation, Inc. This file is part of the GNU Readline Library, a library for reading lines of text with interactive input and history editing. @@ -30,27 +30,27 @@ /************************************************/ /* For platforms which support the ISO C amendement 1 functionality we - support user defined character classes. */ + support user defined character classes. + + Some platforms have the multibyte functions such as mbsrtowcs but + are lacking the multitype type mbstate_t. BeOS (unknown version) + and HP/UX 11.23 without _XOPEN_SOURCE=500 are like this. + + We really need mbstate_t type to operate properly. For example, see + compute_lcd_of_matches, where two mbstate_t's are active at the same + time. So we require both the functions and the mbstate_t type in + order to enable multibyte support. */ + /* Solaris 2.5 has a bug: must be included before . */ #if defined (HAVE_WCTYPE_H) && defined (HAVE_WCHAR_H) # include # include -# if defined (HAVE_MBRTOWC) && defined (HAVE_MBSRTOWCS) +# if defined (HAVE_MBSTATE_T) && defined (HAVE_MBSRTOWCS) /* system is supposed to support XPG5 */ # define HANDLE_MULTIBYTE 1 # endif #endif -/* Some systems, like BeOS, have multibyte encodings but lack mbstate_t. */ -#if HANDLE_MULTIBYTE && !defined (HAVE_MBSTATE_T) -# define wcsrtombs(dest, src, len, ps) (wcsrtombs) (dest, src, len, 0) -# define mbsrtowcs(dest, src, len, ps) (mbsrtowcs) (dest, src, len, 0) -# define wcrtomb(s, wc, ps) (wcrtomb) (s, wc, 0) -# define mbrtowc(pwc, s, n, ps) (mbrtowc) (pwc, s, n, 0) -# define mbrlen(s, n, ps) (mbrlen) (s, n, 0) -# define mbstate_t int -#endif - /* Make sure MB_LEN_MAX is at least 16 on systems that claim to be able to handle multibyte chars (some systems define MB_LEN_MAX as 1) */ #ifdef HANDLE_MULTIBYTE -- 2.30.2