diff options
34 files changed, 357 insertions, 382 deletions
@@ -1,3 +1,28 @@ +2017-06-08 Zack Weinberg <zackw@panix.com> + + * 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. + 2017-06-08 H.J. Lu <hongjiu.lu@intel.com> * string/test-memrchr.c (test_main): Add tests for len == 0 @@ -49,8 +49,7 @@ struct group #ifdef __USE_MISC -# define __need_FILE -# include <stdio.h> +# include <bits/types/FILE.h> #endif diff --git a/gshadow/gshadow.h b/gshadow/gshadow.h index a93b3bd8b2..70ab83ddbd 100644 --- a/gshadow/gshadow.h +++ b/gshadow/gshadow.h @@ -21,11 +21,9 @@ #define _GSHADOW_H 1 #include <features.h> - #include <paths.h> +#include <bits/types/FILE.h> -#define __need_FILE -#include <stdio.h> #define __need_size_t #include <stddef.h> diff --git a/hurd/hurd.h b/hurd/hurd.h index e51d3c58a7..3caa69fbdf 100644 --- a/hurd/hurd.h +++ b/hurd/hurd.h @@ -141,8 +141,7 @@ extern struct mutex _hurd_brk_lock; extern int _hurd_set_brk (vm_address_t newbrk); -#define __need_FILE -#include <stdio.h> +#include <bits/types/FILE.h> /* Calls to get and set basic ports. */ diff --git a/iconv/gconv.h b/iconv/gconv.h index 71d91a0ef3..db678dba49 100644 --- a/iconv/gconv.h +++ b/iconv/gconv.h @@ -23,9 +23,9 @@ #define _GCONV_H 1 #include <features.h> -#define __need_mbstate_t -#define __need_wint_t -#include <wchar.h> +#include <bits/types/__mbstate_t.h> +#include <bits/types/wint_t.h> + #define __need_size_t #define __need_wchar_t #include <stddef.h> diff --git a/include/bits/types/FILE.h b/include/bits/types/FILE.h new file mode 100644 index 0000000000..09b599baa0 --- /dev/null +++ b/include/bits/types/FILE.h @@ -0,0 +1 @@ +#include <libio/bits/types/FILE.h> diff --git a/include/bits/types/__FILE.h b/include/bits/types/__FILE.h new file mode 100644 index 0000000000..236f60bacd --- /dev/null +++ b/include/bits/types/__FILE.h @@ -0,0 +1 @@ +#include <libio/bits/types/__FILE.h> diff --git a/include/bits/types/__mbstate_t.h b/include/bits/types/__mbstate_t.h new file mode 100644 index 0000000000..13e764e8c9 --- /dev/null +++ b/include/bits/types/__mbstate_t.h @@ -0,0 +1 @@ +#include <wcsmbs/bits/types/__mbstate_t.h> diff --git a/include/bits/types/mbstate_t.h b/include/bits/types/mbstate_t.h new file mode 100644 index 0000000000..99ec08a91a --- /dev/null +++ b/include/bits/types/mbstate_t.h @@ -0,0 +1 @@ +#include <wcsmbs/bits/types/mbstate_t.h> diff --git a/include/bits/types/wint_t.h b/include/bits/types/wint_t.h new file mode 100644 index 0000000000..f1e373d294 --- /dev/null +++ b/include/bits/types/wint_t.h @@ -0,0 +1 @@ +#include <wcsmbs/bits/types/wint_t.h> diff --git a/include/bits/wctype-wchar.h b/include/bits/wctype-wchar.h new file mode 100644 index 0000000000..8273cd743e --- /dev/null +++ b/include/bits/wctype-wchar.h @@ -0,0 +1 @@ +#include <wctype/bits/wctype-wchar.h> diff --git a/include/stdio.h b/include/stdio.h index ed6593ba50..f68f633bd6 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 <libio/stdio.h> -# else -# include <libio/stdio.h> +# include <libio/stdio.h> +# 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 <stddef.h> + +# include <bits/types/wint_t.h> + /* 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 a773d56b36..cf76709901 100644 --- a/include/wchar.h +++ b/include/wchar.h @@ -1,8 +1,6 @@ #ifndef _WCHAR_H -#include <wcsmbs/wchar.h> - +# include <wcsmbs/wchar.h> # 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 a71b10377b..5fd3f863ae 100644 --- a/include/wctype.h +++ b/include/wctype.h @@ -1,30 +1,7 @@ #ifndef _WCTYPE_H +#include <wctype/wctype.h> #ifndef _ISOMAC -/* We try to get wint_t from <stddef.h>, but not all GCC versions define it - there. So define it ourselves if it remains undefined. */ -# define __need_wint_t -# include <stddef.h> -# 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 <wctype/wctype.h> -#ifndef _ISOMAC /* Internal interfaces. */ extern int __iswspace (wint_t __wc); extern int __iswctype (wint_t __wc, wctype_t __desc); diff --git a/libio/Makefile b/libio/Makefile index be252f740f..a002a3365c 100644 --- a/libio/Makefile +++ b/libio/Makefile @@ -23,7 +23,8 @@ subdir := libio include ../Makeconfig headers := stdio.h libio.h _G_config.h bits/stdio.h \ - bits/sys_errlist.h bits/stdio2.h bits/stdio-ldbl.h bits/libio-ldbl.h + bits/sys_errlist.h bits/stdio2.h bits/stdio-ldbl.h bits/libio-ldbl.h \ + bits/types/FILE.h bits/types/__FILE.h routines := \ filedoalloc iofclose iofdopen iofflush iofgetpos iofgets iofopen \ diff --git a/libio/bits/types/FILE.h b/libio/bits/types/FILE.h new file mode 100644 index 0000000000..f268263209 --- /dev/null +++ b/libio/bits/types/FILE.h @@ -0,0 +1,9 @@ +#ifndef __FILE_defined +#define __FILE_defined 1 + +struct _IO_FILE; + +/* The opaque type of streams. This is the definition used elsewhere. */ +typedef struct _IO_FILE FILE; + +#endif diff --git a/libio/bits/types/__FILE.h b/libio/bits/types/__FILE.h new file mode 100644 index 0000000000..06dd79bc83 --- /dev/null +++ b/libio/bits/types/__FILE.h @@ -0,0 +1,7 @@ +#ifndef ____FILE_defined +#define ____FILE_defined 1 + +struct _IO_FILE; +typedef struct _IO_FILE __FILE; + +#endif diff --git a/libio/stdio.h b/libio/stdio.h index 422f39daf5..47490c8299 100644 --- a/libio/stdio.h +++ b/libio/stdio.h @@ -21,48 +21,21 @@ */ #ifndef _STDIO_H +#define _STDIO_H 1 -#if !defined __need_FILE && !defined __need___FILE -# define _STDIO_H 1 -# define __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION -# include <bits/libc-header-start.h> +#define __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION +#include <bits/libc-header-start.h> __BEGIN_DECLS -# define __need_size_t -# define __need_NULL -# include <stddef.h> +#define __need_size_t +#define __need_NULL +#include <stddef.h> -# include <bits/types.h> -# define __need_FILE -# define __need___FILE -#endif /* Don't need FILE. */ +#include <bits/types.h> +#include <bits/types/__FILE.h> +#include <bits/types/FILE.h> - -#if !defined __FILE_defined && defined __need_FILE - -/* Define outside of namespace so the C++ is happy. */ -struct _IO_FILE; - -/* The opaque type of streams. This is the definition used elsewhere. */ -typedef struct _IO_FILE FILE; - -# define __FILE_defined 1 -#endif /* FILE not defined. */ -#undef __need_FILE - - -#if !defined ____FILE_defined && defined __need___FILE - -/* The opaque type of streams. This is the definition used elsewhere. */ -typedef struct _IO_FILE __FILE; - -# define ____FILE_defined 1 -#endif /* __FILE not defined. */ -#undef __need___FILE - - -#ifdef _STDIO_H #define _STDIO_USES_IOSTREAM #include <libio.h> @@ -895,5 +868,3 @@ extern void funlockfile (FILE *__stream) __THROW; __END_DECLS #endif /* <stdio.h> included. */ - -#endif /* !_STDIO_H */ diff --git a/mach/mach.h b/mach/mach.h index 3ceb7b6c8c..42605af865 100644 --- a/mach/mach.h +++ b/mach/mach.h @@ -20,10 +20,8 @@ #define _MACH_H 1 -/* We must include this before using __need_FILE with <stdio.h> below. */ #include <features.h> - /* Get the basic types used by Mach. */ #include <mach/mach_types.h> @@ -79,9 +77,7 @@ extern void __mach_msg_destroy (mach_msg_header_t *msg), mach_msg_destroy (mach_msg_header_t *msg); - -#define __need_FILE -#include <stdio.h> +#include <bits/types/FILE.h> /* Open a stream on a Mach device. */ extern FILE *mach_open_devstream (mach_port_t device_port, const char *mode); diff --git a/misc/mntent.h b/misc/mntent.h index 039a454512..e54e165637 100644 --- a/misc/mntent.h +++ b/misc/mntent.h @@ -20,10 +20,8 @@ #define _MNTENT_H 1 #include <features.h> -#define __need_FILE -#include <stdio.h> #include <paths.h> - +#include <bits/types/FILE.h> /* File listing canonical interesting mount points. */ #define MNTTAB _PATH_MNTTAB /* Deprecated alias. */ @@ -59,8 +59,7 @@ struct passwd #ifdef __USE_MISC -# define __need_FILE -# include <stdio.h> +# include <bits/types/FILE.h> #endif diff --git a/shadow/shadow.h b/shadow/shadow.h index 855fe632a1..f55c946f59 100644 --- a/shadow/shadow.h +++ b/shadow/shadow.h @@ -24,11 +24,11 @@ #include <paths.h> -#define __need_FILE -#include <stdio.h> #define __need_size_t #include <stddef.h> +#include <bits/types/FILE.h> + /* Paths to the user database files. */ #define SHADOW _PATH_SHADOW diff --git a/stdio-common/printf.h b/stdio-common/printf.h index 6b207d2db7..940256445e 100644 --- a/stdio-common/printf.h +++ b/stdio-common/printf.h @@ -22,11 +22,12 @@ __BEGIN_DECLS -#define __need_FILE -#include <stdio.h> +#include <bits/types/FILE.h> + #define __need_size_t #define __need_wchar_t #include <stddef.h> + #include <stdarg.h> diff --git a/sysdeps/generic/_G_config.h b/sysdeps/generic/_G_config.h index f44a3d4eee..c49eed395b 100644 --- a/sysdeps/generic/_G_config.h +++ b/sysdeps/generic/_G_config.h @@ -13,11 +13,12 @@ #endif #define __need_NULL #include <stddef.h> -#define __need_mbstate_t + +#include <bits/types/__mbstate_t.h> #if defined _LIBC || defined _GLIBCPP_USE_WCHAR_T -# define __need_wint_t +# include <bits/types/wint_t.h> #endif -#include <wchar.h> + typedef struct { __off_t __pos; diff --git a/sysdeps/unix/sysv/linux/_G_config.h b/sysdeps/unix/sysv/linux/_G_config.h index abec245606..3bc6cfd595 100644 --- a/sysdeps/unix/sysv/linux/_G_config.h +++ b/sysdeps/unix/sysv/linux/_G_config.h @@ -13,11 +13,12 @@ #endif #define __need_NULL #include <stddef.h> -#define __need_mbstate_t + +#include <bits/types/__mbstate_t.h> #if defined _LIBC || defined _GLIBCPP_USE_WCHAR_T -# define __need_wint_t +# include <bits/types/wint_t.h> #endif -#include <wchar.h> + typedef struct { __off_t __pos; diff --git a/wcsmbs/Makefile b/wcsmbs/Makefile index d6b214b2ab..08b1de11a8 100644 --- a/wcsmbs/Makefile +++ b/wcsmbs/Makefile @@ -22,7 +22,8 @@ subdir := wcsmbs include ../Makeconfig -headers := wchar.h bits/wchar.h bits/wchar2.h bits/wchar-ldbl.h uchar.h +headers := wchar.h bits/wchar.h bits/wchar2.h bits/wchar-ldbl.h uchar.h \ + bits/types/__mbstate_t.h bits/types/mbstate_t.h bits/types/wint_t.h routines := wcscat wcschr wcscmp wcscpy wcscspn wcsdup wcslen wcsncat \ wcsncmp wcsncpy wcspbrk wcsrchr wcsspn wcstok wcsstr wmemchr \ diff --git a/wcsmbs/bits/types/__mbstate_t.h b/wcsmbs/bits/types/__mbstate_t.h new file mode 100644 index 00000000 |
