From patchwork Thu Sep 22 13:30:51 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zack Weinberg X-Patchwork-Id: 15906 Received: (qmail 84913 invoked by alias); 22 Sep 2016 13:31:22 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Delivered-To: mailing list libc-alpha@sourceware.org Received: (qmail 84611 invoked by uid 89); 22 Sep 2016 13:31:20 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-4.8 required=5.0 tests=AWL, BAYES_00, RP_MATCHES_RCVD, SPF_HELO_PASS, SPF_PASS autolearn=ham version=3.3.2 spammy=4.3, listen X-HELO: l2mail1.panix.com From: Zack Weinberg To: libc-alpha@sourceware.org Cc: carlos@redhat.com, joseph@codesourcery.com Subject: [PATCH 3c/6] Installed-header hygiene (BZ#20366): struct osockaddr. Date: Thu, 22 Sep 2016 09:30:51 -0400 Message-Id: <20160922133054.22210-11-zackw@panix.com> In-Reply-To: <20160922133054.22210-10-zackw@panix.com> References: <20160922133054.22210-1-zackw@panix.com> <20160922133054.22210-2-zackw@panix.com> <20160922133054.22210-3-zackw@panix.com> <20160922133054.22210-4-zackw@panix.com> <20160922133054.22210-5-zackw@panix.com> <20160922133054.22210-6-zackw@panix.com> <20160922133054.22210-7-zackw@panix.com> <20160922133054.22210-8-zackw@panix.com> <20160922133054.22210-9-zackw@panix.com> <20160922133054.22210-10-zackw@panix.com> MIME-Version: 1.0 sys/socket.h defines struct osockaddr only under __USE_MISC, whereas protocols/talkd.h requires it unconditionally. Rather than complicate sys/socket.h with a __need macro or duplicate the definition, I am introducing a new concept: tiny headers named bits/types/TYPE.h that define TYPE and nothing else. This can, I hope, ultimately replace *all* the __need macros. The guard macro for such headers will be __TYPE_defined, just in case application or third-party library code is looking at them. * socket/bits/types/struct_osockaddr.h: New header. * include/bits/types/struct_osockaddr.h: New wrapper. * socket/Makefile: Install the new header. * socket/sys/socket.h * inet/protocols/talkd.h: Refer to bits/types/struct_osockaddr.h for the definition of struct osockaddr. --- include/bits/types/struct_osockaddr.h | 1 + inet/protocols/talkd.h | 1 + socket/Makefile | 3 ++- socket/bits/types/struct_osockaddr.h | 12 ++++++++++++ socket/sys/socket.h | 8 +------- 5 files changed, 17 insertions(+), 8 deletions(-) create mode 100644 include/bits/types/struct_osockaddr.h create mode 100644 socket/bits/types/struct_osockaddr.h diff --git a/include/bits/types/struct_osockaddr.h b/include/bits/types/struct_osockaddr.h new file mode 100644 index 0000000..78f3188 --- /dev/null +++ b/include/bits/types/struct_osockaddr.h @@ -0,0 +1 @@ +#include "../../socket/bits/types/struct_osockaddr.h" diff --git a/inet/protocols/talkd.h b/inet/protocols/talkd.h index 34e2654..09bd8a9 100644 --- a/inet/protocols/talkd.h +++ b/inet/protocols/talkd.h @@ -53,6 +53,7 @@ #include #include #include +#include /* * Client->server request message format. diff --git a/socket/Makefile b/socket/Makefile index 92450e8..6be5ec7 100644 --- a/socket/Makefile +++ b/socket/Makefile @@ -23,7 +23,8 @@ subdir := socket include ../Makeconfig headers := sys/socket.h sys/un.h bits/sockaddr.h bits/socket.h \ - bits/socket2.h sys/socketvar.h net/if.h + bits/socket2.h bits/types/struct_osockaddr.h \ + sys/socketvar.h net/if.h routines := accept bind connect getpeername getsockname getsockopt \ listen recv recvfrom recvmsg send sendmsg sendto \ diff --git a/socket/bits/types/struct_osockaddr.h b/socket/bits/types/struct_osockaddr.h new file mode 100644 index 0000000..e0bf59d --- /dev/null +++ b/socket/bits/types/struct_osockaddr.h @@ -0,0 +1,12 @@ +#ifndef __osockaddr_defined +#define __osockaddr_defined 1 + +/* This is the 4.3 BSD `struct sockaddr' format, which is used as wire + format in the grotty old 4.3 `talk' protocol. */ +struct osockaddr +{ + unsigned short int sa_family; + unsigned char sa_data[14]; +}; + +#endif diff --git a/socket/sys/socket.h b/socket/sys/socket.h index c9f0f50..5be1b91 100644 --- a/socket/sys/socket.h +++ b/socket/sys/socket.h @@ -38,13 +38,7 @@ __BEGIN_DECLS #include #ifdef __USE_MISC -/* This is the 4.3 BSD `struct sockaddr' format, which is used as wire - format in the grotty old 4.3 `talk' protocol. */ -struct osockaddr - { - unsigned short int sa_family; - unsigned char sa_data[14]; - }; +# include #endif /* The following constants should be used for the second parameter of