[6/7] Include wchar.h and wctype.h unconditionally

Message ID 1416057612-16155-7-git-send-email-yao@codesourcery.com
State New, archived
Headers

Commit Message

Yao Qi Nov. 15, 2014, 1:20 p.m. UTC
  As gnulib modules wchar and wctype is imported, we can include wchar.h
and wctype.h unconditionally.  This patch is also to remove HAVE_WCHAR_H
check.

gdb:

2014-11-15  Yao Qi  <yao@codesourcery.com>

	* gdb_wchar.h: Include wchar.h and wctype.h.
	[HAVE_ICONV && HAVE_BTOWC]: Don't check HAVE_WCHAR_T and don't
	include wchar.h and wctype.h.
	Don't check HAVE_WCHAR_H.
---
 gdb/gdb_wchar.h | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)
  

Comments

Pedro Alves Nov. 21, 2014, 12:48 p.m. UTC | #1
On 11/15/2014 01:20 PM, Yao Qi wrote:
> As gnulib modules wchar and wctype is imported, we can include wchar.h
> and wctype.h unconditionally.  This patch is also to remove HAVE_WCHAR_H
> check.
> 

> gdb:
> 
> 2014-11-15  Yao Qi  <yao@codesourcery.com>
> 
> 	* gdb_wchar.h: Include wchar.h and wctype.h.
> 	[HAVE_ICONV && HAVE_BTOWC]: Don't check HAVE_WCHAR_T and don't
> 	include wchar.h and wctype.h.
> 	Don't check HAVE_WCHAR_H.
> ---
>  gdb/gdb_wchar.h | 10 +++++-----
>  1 file changed, 5 insertions(+), 5 deletions(-)
> 
> diff --git a/gdb/gdb_wchar.h b/gdb/gdb_wchar.h
> index f88673b..c7a0f1e 100644
> --- a/gdb/gdb_wchar.h
> +++ b/gdb/gdb_wchar.h
> @@ -49,18 +49,18 @@
>  #define PHONY_ICONV
>  #endif
>  
> +#include <wchar.h>
> +#include <wctype.h>
> +
>  /* We use "btowc" as a sentinel to detect functioning wchar_t support.
>     We check for either __STDC_ISO_10646__ or a new-enough libiconv in
>     order to ensure we can convert to and from wchar_t.  We choose
>     libiconv version 0x108 because it is the first version with
>     iconvlist.  */
> -#if defined (HAVE_ICONV) && defined (HAVE_WCHAR_H) && defined (HAVE_BTOWC) \
> +#if defined (HAVE_ICONV) && defined (HAVE_BTOWC) \
>    && (defined (__STDC_ISO_10646__) \
>        || (defined (_LIBICONV_VERSION) && _LIBICONV_VERSION >= 0x108))
>  
> -#include <wchar.h>
> -#include <wctype.h>
> -
>  typedef wchar_t gdb_wchar_t;
>  typedef wint_t gdb_wint_t;
>  
> @@ -94,7 +94,7 @@ const char *intermediate_encoding (void);
>  
>  /* If we got here and have wchar_t support, we might be on a system
>     with some problem.  So, we just disable everything.  */
> -#if defined (HAVE_WCHAR_H) && defined (HAVE_BTOWC)
> +#if defined (HAVE_BTOWC)
>  #define PHONY_ICONV
>  #endif

It's hard to reason about all the modes supported here, but
I think this is OK.  Seems like the comment above about wchar_t
support should be updated though.

(I wonder whether if we pulled in the gnulib btowc module, we could
get rid of at least some of this fallback stuff.  We're already
pulling in mbrtowc...)

Thanks,
Pedro Alves
  
Yao Qi Nov. 21, 2014, 1:22 p.m. UTC | #2
Pedro Alves <palves@redhat.com> writes:

> It's hard to reason about all the modes supported here, but
> I think this is OK.  Seems like the comment above about wchar_t
> support should be updated though.
>

At the beginning, I tried to change more than what I did in this patch,
but I got myself in trouble in these different modes, which I don't
fully understand.  I'll revisit it once my gnulib patches queue is empty.

> (I wonder whether if we pulled in the gnulib btowc module, we could
> get rid of at least some of this fallback stuff.  We're already
> pulling in mbrtowc...)

Agreed, that is one thing we could do.
  

Patch

diff --git a/gdb/gdb_wchar.h b/gdb/gdb_wchar.h
index f88673b..c7a0f1e 100644
--- a/gdb/gdb_wchar.h
+++ b/gdb/gdb_wchar.h
@@ -49,18 +49,18 @@ 
 #define PHONY_ICONV
 #endif
 
+#include <wchar.h>
+#include <wctype.h>
+
 /* We use "btowc" as a sentinel to detect functioning wchar_t support.
    We check for either __STDC_ISO_10646__ or a new-enough libiconv in
    order to ensure we can convert to and from wchar_t.  We choose
    libiconv version 0x108 because it is the first version with
    iconvlist.  */
-#if defined (HAVE_ICONV) && defined (HAVE_WCHAR_H) && defined (HAVE_BTOWC) \
+#if defined (HAVE_ICONV) && defined (HAVE_BTOWC) \
   && (defined (__STDC_ISO_10646__) \
       || (defined (_LIBICONV_VERSION) && _LIBICONV_VERSION >= 0x108))
 
-#include <wchar.h>
-#include <wctype.h>
-
 typedef wchar_t gdb_wchar_t;
 typedef wint_t gdb_wint_t;
 
@@ -94,7 +94,7 @@  const char *intermediate_encoding (void);
 
 /* If we got here and have wchar_t support, we might be on a system
    with some problem.  So, we just disable everything.  */
-#if defined (HAVE_WCHAR_H) && defined (HAVE_BTOWC)
+#if defined (HAVE_BTOWC)
 #define PHONY_ICONV
 #endif