Message ID | 20160830011645.25769-12-zackw@panix.com |
---|---|
State | New |
Headers | show |
On 08/29/2016 09:16 PM, Zack Weinberg wrote: > sys/socket.h defines struct osockaddr only under __USE_MISC, whereas > protocols/talkd.h requires it unconditionally. This is another place > where the bits/types/foo.h approach comes in handy. > > I would also be amenable to removing struct osockaddr from sys/socket.h, > defining it only in protocols/talkd.h, on the theory that nothing else > should be using it anymore. (Frankly, I doubt anyone would miss > protocols/talkd.h at this point, but we _have_ historically preferred > not to delete anything.) Without a strong reason for deleting it we should keep it :-) > * 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. LGTM.
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 <sys/types.h> #include <sys/socket.h> #include <stdint.h> +#include <bits/types/struct_osockaddr.h> /* * 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..b3cec56 --- /dev/null +++ b/socket/bits/types/struct_osockaddr.h @@ -0,0 +1,12 @@ +#ifndef _BITS_TYPES_STRUCT_OSOCKADDR_H +#define _BITS_TYPES_STRUCT_OSOCKADDR_H + +/* 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 <bits/socket.h> #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 <bits/types/struct_osockaddr.h> #endif /* The following constants should be used for the second parameter of