With the HP C compiler, mbstate_t is not defined. With their C++
compiler it is. This has the unfortunate side effect of defining
mbstate_t to 'int' in include/config.h which causes havoc when
building some of the .cc files:

aCC -DHAVE_CONFIG_H -I. -I. -I../include -I../include
-I/opt/TWWfsw/readline42/include  +O2 -AA -z +Onofltacc +ESlit
+DAportable +Oentrysched +Odataprefetch
-I/opt/TWWfsw/readline42/include -c -o FileSetOutput.o `test -f
FileSetOutput.cc || echo './'`FileSetOutput.cc
Error 161: "/opt/aCC/include_std/cwchar", line 91 # Bad type specifier
    combination; are you missing a ';' at the end of a class/union
definition?
          typedef struct {
          ^^^^^^^^^^^^^^^^

The offending code in /opt/aCC/include_std/cwchar looks like:
#  ifndef _MBSTATE_T
#     define _MBSTATE_T
      typedef struct {
         unsigned char __parse_size:3;
         unsigned char __dummy:4;
         unsigned char __shift_state:1;
         char __parse_buf[7];
      } mbstate_t;
#  endif
which gets cpp'd to:
#  ifndef _MBSTATE_T
#     define _MBSTATE_T
      typedef struct {
         unsigned char __parse_size:3;
         unsigned char __dummy:4;
         unsigned char __shift_state:1;
         char __parse_buf[7];
      } int;
#  endif

So, do we need a C and C++ check for mbstate_t?

Note that mbstate_t is usred in lib/fnmatch.c and lib/regex.c but in
2.4.4, there was no autoconf check for it. Any reason the autoconf
check was introduced?

-- 
albert chin ([EMAIL PROTECTED])

Reply via email to