Missing check for mbsrtowc causes compilation failure on HP/UX 11.11

Joel Brobecker brobecker@gnat.com
Tue Jan 28 05:03:00 GMT 2003


Dear readline maintainers,

I noticed a compilation failure in the readline module of the current
sources of GDB (extracted from CVS). This is occuring on HP/UX 11.11,
using GCC 3.2.1. I think that the readline version number used in GDB
is 4.3.

The compilation fails inside _rl_vi_change_mbchar_case (vi_mode.c)
because the compiler could not find mbrtowc. I searched this function,
and found that it is not provided by this system, but I could find
mbrtowcs. I then saw that _rl_vi_change_mbchar_case is compiled only
if HANDLE_MULTIBYTE is set. In turn, HANDLE_MULTIBYTE is set only if
(see rlmbutil.h):

    #if defined (HAVE_WCTYPE_H) && defined (HAVE_WCHAR_H)
    #  include <wchar.h>
    #  include <wctype.h>
    #  if defined (HAVE_MBSRTOWCS) /* system is supposed to support XPG5 */
    #    define HANDLE_MULTIBYTE      1
    #  endif
    #endif

It seems that configure is only checking for mbsrtowcs, but not mbsrtowc.
This works on HP/UX 11.00 where neither of these functions are provided,
but not on HP/UX 11.11 where mbsrtowcs is defined.

I therefore made the following change, where I added a check for mbsrtowc.
config.h.in has been updated accordingly. I also updated the condition in
rlmbutil.h to make sure both mbsrtowcs and mbsrtowc are available before
enabling multibyte.

The patch is attached.

Concerning copyright assignments, I am not sure what will be needed. The
company I work for has an assignment on file with the FSF for GDB work.
I hope this will be sufficient.

Changelog:

aclocal.m4
        - add check for mbsrtowc.

config.h.in
        - regenerate.

rlmbutil.h
        - make sure mbsrtowc is available before enabling multibyte support.

-- 
Joel Brobecker,
Ada Core Technologies, Inc.



More information about the Gdb-patches mailing list