From 199fc19d3aaaf57944ef036e15904febe877fc93 Mon Sep 17 00:00:00 2001 From: Zack Weinberg Date: Sun, 20 Nov 2016 23:00:02 -0500 Subject: Remove __need macros from stdio.h and wchar.h. wint_t is a little finicky because it might be defined by stddef.h, which belongs to the compiler. In addition to the _types_, a bunch of other declarations shared between wctype.h and wchar.h are factored out to their own header. * libio/bits/types/FILE.h, libio/bits/types/__FILE.h * wcsmbs/bits/types/mbstate_t.h, wcsmbs/bits/types/__mbstate_t.h * wcsmbs/bits/types/wint_t.h: New single-type definition files. * wctype/bits/wctype-wchar.h: New file holding declarations shared between wctype.h and wchar.h. * libio/Makefile, wcsmbs/Makefile, wctype/Makefile: Install them. * include/bits/types/FILE.h, include/bits/types/__FILE.h * include/bits/types/mbstate_t.h, include/bits/types/__mbstate_t.h * include/bits/types/wint_t.h, include/bits/wcsmbs-wchar.h: New wrappers. * include/stdio.h, include/wchar.h, include/wctype.h: No need to handle __need macros. * grp/grp.h, gshadow/gshadow.h, hurd/hurd.h, iconv/gconv.h * libio/stdio.h, mach/mach.h, misc/mntent.h, pwd/pwd.h * shadow/shadow.h, stdio-common/printf.h, wcsmbs/uchar.h * wcsmbs/wchar.h, wctype/wctype.h * sysdeps/generic/_G_config.h, sysdeps/unix/sysv/linux/_G_config.h Use the new files instead of __need macros. --- include/bits/types/FILE.h | 1 + include/bits/types/__FILE.h | 1 + include/bits/types/__mbstate_t.h | 1 + include/bits/types/mbstate_t.h | 1 + include/bits/types/wint_t.h | 1 + include/bits/wctype-wchar.h | 1 + include/stdio.h | 16 +++++++--------- include/wchar.h | 10 +--------- include/wctype.h | 29 +---------------------------- 9 files changed, 15 insertions(+), 46 deletions(-) create mode 100644 include/bits/types/FILE.h create mode 100644 include/bits/types/__FILE.h create mode 100644 include/bits/types/__mbstate_t.h create mode 100644 include/bits/types/mbstate_t.h create mode 100644 include/bits/types/wint_t.h create mode 100644 include/bits/wctype-wchar.h (limited to 'include') diff --git a/include/bits/types/FILE.h b/include/bits/types/FILE.h new file mode 100644 index 0000000..09b599b --- /dev/null +++ b/include/bits/types/FILE.h @@ -0,0 +1 @@ +#include diff --git a/include/bits/types/__FILE.h b/include/bits/types/__FILE.h new file mode 100644 index 0000000..236f60b --- /dev/null +++ b/include/bits/types/__FILE.h @@ -0,0 +1 @@ +#include diff --git a/include/bits/types/__mbstate_t.h b/include/bits/types/__mbstate_t.h new file mode 100644 index 0000000..13e764e --- /dev/null +++ b/include/bits/types/__mbstate_t.h @@ -0,0 +1 @@ +#include diff --git a/include/bits/types/mbstate_t.h b/include/bits/types/mbstate_t.h new file mode 100644 index 0000000..99ec08a --- /dev/null +++ b/include/bits/types/mbstate_t.h @@ -0,0 +1 @@ +#include diff --git a/include/bits/types/wint_t.h b/include/bits/types/wint_t.h new file mode 100644 index 0000000..f1e373d --- /dev/null +++ b/include/bits/types/wint_t.h @@ -0,0 +1 @@ +#include diff --git a/include/bits/wctype-wchar.h b/include/bits/wctype-wchar.h new file mode 100644 index 0000000..8273cd7 --- /dev/null +++ b/include/bits/wctype-wchar.h @@ -0,0 +1 @@ +#include diff --git a/include/stdio.h b/include/stdio.h index ed6593b..f68f633 100644 --- a/include/stdio.h +++ b/include/stdio.h @@ -1,8 +1,6 @@ #ifndef _STDIO_H -# if defined _ISOMAC || defined __need_FILE || defined __need___FILE -# include -# else -# include +# include +# ifndef _ISOMAC /* Now define the internal interfaces. */ @@ -71,11 +69,11 @@ libc_hidden_proto (__isoc99_vfscanf) extern FILE *__new_tmpfile (void); extern FILE *__old_tmpfile (void); - - # define __need_size_t -# define __need_wint_t # include + +# include + /* Generate a unique file name (and possibly open it). */ extern int __path_search (char *__tmpl, size_t __tmpl_len, const char *__dir, const char *__pfx, @@ -183,5 +181,5 @@ libc_hidden_proto (__obstack_vprintf_chk) extern FILE * __fmemopen (void *buf, size_t len, const char *mode); libc_hidden_proto (__fmemopen) -# endif -#endif +# endif /* not _ISOMAC */ +#endif /* stdio.h */ diff --git a/include/wchar.h b/include/wchar.h index a773d56..cf76709 100644 --- a/include/wchar.h +++ b/include/wchar.h @@ -1,8 +1,6 @@ #ifndef _WCHAR_H -#include - +# include # ifndef _ISOMAC -# ifdef _WCHAR_H extern __typeof (wcscasecmp_l) __wcscasecmp_l; extern __typeof (wcsncasecmp_l) __wcsncasecmp_l; @@ -219,10 +217,4 @@ extern size_t __mbsrtowcs_l (wchar_t *dst, const char **src, size_t len, # define __mbsinit(state) ((state)->__count == 0) # endif -# endif #endif - -/* Undefine all __need_* constants in case we are included to get those - constants but the whole file was already read. */ -#undef __need_mbstate_t -#undef __need_wint_t diff --git a/include/wctype.h b/include/wctype.h index a71b103..5fd3f86 100644 --- a/include/wctype.h +++ b/include/wctype.h @@ -1,30 +1,7 @@ #ifndef _WCTYPE_H +#include #ifndef _ISOMAC -/* We try to get wint_t from , but not all GCC versions define it - there. So define it ourselves if it remains undefined. */ -# define __need_wint_t -# include -# ifndef _WINT_T -/* Integral type unchanged by default argument promotions that can - hold any value corresponding to members of the extended character - set, as well as at least one value that does not correspond to any - member of the extended character set. */ -# define _WINT_T -typedef unsigned int wint_t; -# endif - -/* Need to repeat these prototypes here, as wctype/wctype.h defines all - these as macros and thus we couldn't add libc_hidden_proto. */ - -extern int iswalpha (wint_t __wc); -extern int iswalnum (wint_t __wc); -extern int iswdigit (wint_t __wc); -extern int iswlower (wint_t __wc); -extern int iswspace (wint_t __wc); -extern int iswxdigit (wint_t __wc); -extern wint_t towlower (wint_t __wc); -extern wint_t towupper (wint_t __wc); libc_hidden_proto (iswalpha) libc_hidden_proto (iswalnum) @@ -34,11 +11,7 @@ libc_hidden_proto (iswspace) libc_hidden_proto (iswxdigit) libc_hidden_proto (towlower) libc_hidden_proto (towupper) -#endif - -#include -#ifndef _ISOMAC /* Internal interfaces. */ extern int __iswspace (wint_t __wc); extern int __iswctype (wint_t __wc, wctype_t __desc); -- cgit v1.1