public inbox for glibc-cvs@sourceware.org help / color / mirror / Atom feed
From: Zack Weinberg <zack@sourceware.org> To: glibc-cvs@sourceware.org Subject: [glibc/zack/no-nested-includes] sys/types.h: Don’t define u_intN_t or register_t unless __USE_MISC. Date: Wed, 26 Jun 2019 15:48:00 -0000 [thread overview] Message-ID: <20190626154807.20585.qmail@sourceware.org> (raw) [-- Warning: decoded text below may be mangled, UTF-8 assumed --] [-- Attachment #1: Type: text/plain; charset="us-ascii", Size: 4455 bytes --] https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=cba69352b20e3e5b9f1b8f3d4ca12ace01ad860a commit cba69352b20e3e5b9f1b8f3d4ca12ace01ad860a Author: Zack Weinberg <zackw@panix.com> Date: Mon Feb 18 21:00:34 2019 -0500 sys/types.h: Donât define u_intN_t or register_t unless __USE_MISC. sys/types.h unconditionally defines u_int8_t, u_int16_t, u_int32_t, u_int64_t, and register_t. These are not part of any standard. The u_intXX_t types are superseded by C99âs uintXX_t types (defined in stdint.h). Iâm not aware of a standardized exact equivalent of register_t, but also Iâve never seen anyone use it for anything. I could be persuaded to leave that one alone. sys/types.h also unconditionally defines int8_t, int16_t, int32_t, and int64_t, which are the same as the C99 exact-width signed types in stdint.h. POSIX doesnât require these to appear in sys/types.h, so in principle they ought to be brought under __USE_MISC also. But, when I tried that it broke about two dozen files just in our own source tree, and POSIX doesnât *forbid* sys/types.h to define these types, so I think we should leave them alone. * posix/sys/types.h (u_int8_t, u_int16_t, u_int32_t, u_int64_t) (register_t): Move under #ifdef __USE_MISC. Consolidate adjacent #ifdef __USE_MISC blocks. * scripts/check_obsolete_constructs.py: Add register_t to the set of obsolete typedefs that our headers should not use (but sys/types.h may still define). Diff: --- NEWS | 8 ++++++++ posix/sys/types.h | 16 ++++++++-------- scripts/check-obsolete-constructs.py | 1 + 3 files changed, 17 insertions(+), 8 deletions(-) diff --git a/NEWS b/NEWS index 8a2fece..edf7739 100644 --- a/NEWS +++ b/NEWS @@ -45,6 +45,14 @@ Deprecated and removed features, and other changes affecting compatibility: * The obsolete and never-implemented XSI STREAMS header files <stropts.h> and <sys/stropts.h> have been removed. +* The typedefs u_int8_t, u_int16_t, u_int32_t, u_int64_t, and register_t + are no longer defined by <sys/types.h> in strict conformance modes. + These types were historically provided by <sys/types.h> on BSD systems, + but are not part of the POSIX specification for that header. Applications + requiring fixed-width unsigned integer types should use the similarly + named uint8_t, uint16_t, etc. from <stdint.h>. There is no standardized + replacement for register_t. + * Support for the "inet6" option in /etc/resolv.conf and the RES_USE_INET6 resolver flag (deprecated in glibc 2.25) have been removed. diff --git a/posix/sys/types.h b/posix/sys/types.h index 1bbd896..7327904 100644 --- a/posix/sys/types.h +++ b/posix/sys/types.h @@ -143,18 +143,20 @@ typedef __suseconds_t suseconds_t; #define __need_size_t #include <stddef.h> +/* POSIX does not require intN_t to be defined in this header, so + technically this ought to be under __USE_MISC, but it doesn't + forbid them to be defined here either, and much existing code + expects them to be defined here. */ +#include <bits/stdint-intn.h> + #ifdef __USE_MISC /* Old compatibility names for C types. */ typedef unsigned long int ulong; typedef unsigned short int ushort; typedef unsigned int uint; -#endif - -/* These size-specific names are used by some of the inet code. */ -#include <bits/stdint-intn.h> - -/* These were defined by ISO C without the first `_'. */ +/* These size-specific names are used by some of the inet code. + They were defined by ISO C without the first `_'. */ typedef __uint8_t u_int8_t; typedef __uint16_t u_int16_t; typedef __uint32_t u_int32_t; @@ -167,8 +169,6 @@ typedef __register_t register_t; defined. */ #define __BIT_TYPES_DEFINED__ 1 - -#ifdef __USE_MISC /* In BSD <sys/types.h> is expected to define BYTE_ORDER. */ # include <endian.h> diff --git a/scripts/check-obsolete-constructs.py b/scripts/check-obsolete-constructs.py index 89d21de..4dc5276 100755 --- a/scripts/check-obsolete-constructs.py +++ b/scripts/check-obsolete-constructs.py @@ -254,6 +254,7 @@ class NoCheck(ConstructChecker): OBSOLETE_TYPE_RE_ = re.compile(r"""\A (__)? ( quad_t + | register_t | u(?: short | int | long | _(?: char | short | int(?:[0-9]+_t)? | long | quad_t ))) \Z""", re.VERBOSE)
next reply other threads:[~2019-06-26 15:48 UTC|newest] Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top 2019-06-26 15:48 Zack Weinberg [this message] -- strict thread matches above, loose matches on Subject: below -- 2020-01-08 19:19 Zack Weinberg 2019-06-18 15:32 Zack Weinberg 2019-05-26 16:35 Zack Weinberg
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20190626154807.20585.qmail@sourceware.org \ --to=zack@sourceware.org \ --cc=glibc-cvs@sourceware.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).