Commit Graph

88 Commits

Author SHA1 Message Date
Zack Weinberg
11160cb76f Installed-header hygiene (BZ#20366): obsolete BSD u_* types.
The types u_char, u_short, u_int, u_long, ushort, uint, ulong, u_int8_t,
u_int16_t, u_int32_t, u_int64_t, quad_t, and u_quad_t are BSDisms that
have never been standardized.  While glibc should continue to *provide*
these types for compatibility's sake, its public headers should not
use them.

The meat of this change was mechanically generated by the following
shell command:

    perl -pi~ -e '
        s/\b(__)?u_char\b/unsigned char/g;
        s/\b(__)?u_?short\b/unsigned short/g;
        s/\b(__)?u_?int\b/unsigned int/g;
        s/\b(__)?u_?long\b/unsigned long/g;
        s/\b(__)?u_int8_t\b/uint8_t/g;
        s/\b(__)?u_int16_t\b/uint16_t/g;
        s/\b(__)?u_int32_t\b/uint32_t/g;
        s/\b(__)?u_int64_t\b/uint64_t/g;
        s/\b(__)?u_quad_t\b/uint64_t/g;
        s/\b(__)?quad_t\b/uint64_t/g;
    ' $(grep -lE -e '\<((__)?(quad_t|u(short|int|long|_(char|short|int([0-9]+_t)?|long|quad_t))))\>' \
        $(grep -LE '\<(_(SYS|BITS)_TYPES_H|rpc/(rpc|rpc_msg|types|xdr)\.h)\>' \
          $(find . \( -false $(sed 's/^/-o -name /' all-installed-headers) \
                   \) -printf '%P\n' | sort -u)))

where 'all-installed-headers' was a list of the basenames of all installed
header files, manually extracted from the Makefiles.  Non-installed
wrapper headers in include/ are also adjusted, for consistency.
I then manually fixed up indentation and line-wrapping.

sys/types.h and bits/types.h are excluded because they must continue
to define the u_* types (under __USE_MISC) for compatibility with
applications.  They do not use these types themselves.

All headers that (transitively) include rpc/types.h are also excluded,
for three reasons.  First, the u_* types are defined by rpc/types.h,
unconditionally (not just under __USE_MISC) so they are logically part
of the SunRPC API.  Second, many of those headers appear to be
machine-generated.  Third, it's my understanding that we are getting
rid of as much of SunRPC as possible in the near future.

(The one file under sunrpc/ that's touched, sunrpc/rpc/rpc_des.h, does
*not* include rpc/types.h.  This may itself be a bug.)

After changing from u_intNN_t to uintNN_t, a number of headers now
need to include stdint.h to pick up those types.  It might be more
hygenic, namespace-wise, to use __uintNN_t instead, but none of these
headers are bound by ISO or POSIX to do so, and it's unlikely that
anyone using them will be bothered.  (The two files that were using
__-prefixed versions of the u_types, sysdeps/mach/hurd/net/route.h and
sysdeps/unix/sysv/linux/net/route.h, both already also contained uses of
the unprefixed versions.)

Some of these files directly included features.h and/or sys/cdefs.h,
which I removed, as the style generally seems to be to let sys/types.h
do that for us.  (This does not change the set of definitions exposed
by any header; sys/types.h unconditionally includes both features.h
and sys/cdefs.h.)

One file included asm/types.h unnecessarily.

	* bits/in.h, gmon/sys/gmon.h, inet/netinet/igmp.h
	* inet/protocols/routed.h, inet/protocols/talkd.h
	* inet/protocols/timed.h, io/fts.h, nptl_db/thread_db.h
	* resolv/arpa/nameser.h, resolv/resolv.h, sunrpc/rpc/rpc_des.h
	* sysdeps/generic/netinet/if_ether.h
	* sysdeps/generic/netinet/in_systm.h
	* sysdeps/generic/netinet/ip.h, sysdeps/generic/netinet/tcp.h
	* sysdeps/gnu/netinet/ip_icmp.h, sysdeps/gnu/netinet/tcp.h
	* sysdeps/gnu/netinet/udp.h, sysdeps/mach/hurd/net/ethernet.h
	* sysdeps/mach/hurd/net/if_arp.h
	* sysdeps/mach/hurd/net/if_ppp.h
	* sysdeps/mach/hurd/net/route.h, sysdeps/mach/sys/reboot.h
	* sysdeps/unix/sysv/linux/bits/in.h
	* sysdeps/unix/sysv/linux/net/ethernet.h
	* sysdeps/unix/sysv/linux/net/if_arp.h
	* sysdeps/unix/sysv/linux/net/if_ppp.h
	* sysdeps/unix/sysv/linux/net/if_shaper.h
	* sysdeps/unix/sysv/linux/net/route.h
	* sysdeps/unix/sysv/linux/netinet/if_ether.h
	* sysdeps/unix/sysv/linux/netinet/if_fddi.h
	* sysdeps/unix/sysv/linux/netinet/if_tr.h
	* sysdeps/unix/sysv/linux/netipx/ipx.h
	* sysdeps/unix/sysv/linux/sys/acct.h
	* include/arpa/nameser.h, include/resolv.h:
	Change all uses of u_char to unsigned char,
	u_short and ushort to unsigned short, u_int and uint to unsigned int,
	u_long and ulong to unsigned long, u_int8_t to uint8_t,
        u_int16_t to uint16_t, u_int32_t to uint32_t, quad_t to int64_t,
	and u_int64_t and u_quad_t to uint64_t.

	* mach/sys/reboot.h: Remove two casts of integer literals
	to the types they already have.

	* bits/in.h: Correct error in description of IP_MULTICAST_LOOP.
	* sysdeps/unix/sysv/linux/bits/in.h: Likewise.
	* sysdeps/unix/sysv/linux/netinet/if_ether.h: Change a comment
	from referring to 'unsigned char' to 'uint8_t' for consistency with
	the macro definition below.

	* gmon/sys/gmon.h, inet/netinet/igmp.h, inet/protocols/talkd.h
	* io/fts.h, resolv/arpa/nameser.h, resolv/resolv.h
	* sunrpc/rpc/rpc_des.h, sysdeps/generic/netinet/ip.h
	* sysdeps/gnu/netinet/tcp.h, sysdeps/gnu/netinet/udp.h
	* sysdeps/mach/hurd/net/if_ppp.h, sysdeps/unix/sysv/linux/net/if_ppp.h
	* sysdeps/unix/sysv/linux/sys/acct.h
	* include/arpa/nameser.h, include/resolv.h:
	Fix indentation disrupted by mechanical edits.

	* inet/protocols/talkd.h, resolv/arpa/nameser.h
	* sysdeps/generic/netinet/in_systm.h
	* sysdeps/gnu/netinet/ip_icmp.h, sysdeps/gnu/netinet/tcp.h
	* sysdeps/gnu/netinet/udp.h
	* sysdeps/unix/sysv/linux/net/ethernet.h
	* sysdeps/unix/sysv/linux/net/if_arp.h
	* sysdeps/unix/sysv/linux/net/if_ppp.h
	* sysdeps/unix/sysv/linux/net/if_shaper.h
	* sysdeps/unix/sysv/linux/netinet/if_fddi.h
	* sysdeps/unix/sysv/linux/netinet/if_tr.h
	* sysdeps/unix/sysv/linux/netipx/ipx.h
	* sysdeps/unix/sysv/linux/sys/acct.h
	Include stdint.h for uintNN_t definitions.
	Don't include sys/cdefs.h, features.h, or asm/types.h directly.
2016-09-23 08:43:56 -04:00
Zack Weinberg
cb765808fb Installed-header hygiene (BZ#20366): Simple self-contained fixes.
Some headers did not include all of their prerequisite headers.

	* rpcsvc/nislib.h: Include rpcsvc/nis.h.
	* sysdeps/unix/sysv/linux/netrose/rose.h:
	Include sys/socket.h and netax25/ax25.h.

<endian.h> only defines BYTE_ORDER, BIG_ENDIAN, LITTLE_ENDIAN,
etc. under __USE_MISC; glibc's headers should use __BYTE_ORDER,
__BIG_ENDIAN, __LITTLE_ENDIAN, etc. instead.

	* inet/netinet/icmp6.h, inet/netinet/ip6.h
	* resolv/arpa/nameser_compat.h:
	Use __BYTE_ORDER etc. instead of BYTE_ORDER etc.

sys/types.h only conditionally defines caddr_t and clockid_t.

	* sysdeps/unix/sysv/linux/sys/quota.h:
	Use __caddr_t instead of caddr_t.
	* sysdeps/unix/sysv/linux/sys/timerfd.h:
	Use __clockid_t instead of clockid_t.

Remove a #warning that was the sole actual problem with using sys/ipc.h
without _GNU_SOURCE/_XOPEN_SOURCE.

	* sysvipc/sys/ipc.h: Remove unnecessary #warning.

_LIBC, __USE_XOPEN2K8, and __STDC_VERSION__ are not always defined.

It seems to me that _LIBC should not appear in installed headers, but
avoiding that for argp specifically would require more surgery than
feels appropriate for this patch set.  It's possible that
"#ifdef _LIBC" would be sufficient, but I wanted to be conservative.

All three versions of bits/socket.h want to know whether __flexarr
will produce a real flexible array member -- specifically, one that
doesn't alter sizeof(the structure containing it).  They were testing
for this with a complicated #if condition that did not agree with
sys/cdefs.h and that tripped -Wundef warnings under -std=c90.
I added a new macro to sys/cdefs.h, __glibc_c99_flexarr_available,
which reveals exactly what these headers want to know.  I also took
the opportunity to flatten the rather messy conditional nest defining
__flexarr.

	* argp/argp.h: Check whether _LIBC is defined before expanding it.
	* posix/glob.h: Check whether __USE_XOPEN2K8 is defined instead
	of expanding it.

	* misc/sys/cdefs.h: Tidy up conditional nest defining __flexarr.
	Define __glibc_c99_flexarr_available to 1 when the compiler
	supports C99-compatible flexible array members, 0 otherwise.
	* sysdeps/unix/sysv/linux/bits/socket.h
	* sysdeps/mach/hurd/bits/socket.h
	* bits/socket.h: Use __glibc_c99_flexarr_available in
	definitions of struct cmsghdr and CMSG_DATA.
2016-09-23 08:43:55 -04:00
Carlos O'Donell
1c1e7fb658 Fix macro API for __USE_KERNEL_IPV6_DEFS.
The use of __USE_KERNEL_IPV6_DEFS with ifndef is bad
practice per: https://sourceware.org/glibc/wiki/Wundef.
This change moves it to use 'if' and always define the
macro.

Please note that this is not the only problem with this
code. I have a series of fixes after this one to resolve
breakage with this code and add regression tests for it
via compile-only source testing (to be discussed in another
thread).

Unfortunately __USE_KERNEL_XATTR_DEFS is set by the kernel
and not glibc, and uses 'define', so we can't fix that yet.
2016-06-02 23:52:06 -04:00
Joseph Myers
f7a9f785e5 Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
Joseph Myers
04d9a38baf Add netinet/in.h values from Linux 4.2.
This patch adds new constants from Linux 4.2 to netinet/in.h:
IPPROTO_MPLS and IP_BIND_ADDRESS_NO_PORT (both in
include/uapi/linux/in.h in Linux; one directly in netinet/in.h, one in
bits/in.h in glibc).

Tested for x86_64 (testsuite, and that installed stripped shared
libraries are unchanged by the patch).

	* inet/netinet/in.h (IPPROTO_MPLS): New enum value and macro.
	* sysdeps/unix/sysv/linux/bits/in.h (IP_BIND_ADDRESS_NO_PORT): New
	macro.
2015-09-01 13:47:25 +00:00
Cong Wang
cb43bb0d68 in.h: Coordinate in6_pktinfo and ip6_mtuinfo for kernel and glibc [BZ #15850]
Similarly to what we did for in6_addr, we need a macro
to guard in6_pktinfo and ip6_mtuinfo too.

Cc: Carlos O'Donell <carlos@redhat.com>
Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
2015-02-25 00:13:28 -05:00
Joseph Myers
b168057aaa Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
Joseph Myers
acd7f096d7 Complete _BSD_SOURCE / _SVID_source followup cleanup.
This patch completes the headers cleanup consequent on removal of
_BSD_SOURCE and _SVID_SOURCE (apart from any subsequent deprecations):

* #endif conditionals that referred to BSD or SVID are updated.

* Redundant __USE_* tests in cases involving __USE_MISC are removed.
  This includes cases such as __USE_MISC || __USE_ISOC99, where
  __USE_MISC is redundant (because __USE_MISC is only ever defined in
  the default / _DEFAULT_SOURCE / _GNU_SOURCE case, when __USE_ISOC99
  is also defined; the same applies to the non-XSI-extended POSIX
  versions), and cases involving __USE_GNU, where __USE_GNU is
  redundant (because if __USE_GNU is defined, so are the other __USE_*
  macros).  There may well be other cases of __USE_FOO || __USE_BAR
  tests that could be simplified because one macro implies the other;
  this patch only addresses cases involving __USE_MISC.

Tested x86_64.

	* bits/fcntl.h [__USE_MISC]: Remove redundant conditionals.
	* bits/sigaction.h [__USE_MISC]: Likewise.
	* bits/waitstatus.h: Update #endif comments.
	* ctype/ctype.h: Likewise.
	* dirent/dirent.h: Likewise.
	[__USE_MISC]: Remove redundant conditionals.
	* grp/grp.h: Update #endif comments.
	[__USE_GNU]: Remove redundant conditionals.
	[__USE_MISC]: Likewise.
	* inet/netinet/in.h [__USE_GNU]: Likewise.
	* io/sys/stat.h [__USE_MISC]: Likewise.
	* libio/bits/stdio-ldbl.h [__USE_MISC]: Likewise.
	* libio/bits/stdio.h: Update #endif comments.
	[__USE_MISC]: Remove redundant conditionals.
	* libio/bits/stdio2.h [__USE_MISC]: Likewise.
	* libio/stdio.h: Update #endif comments.
	[__USE_MISC]: Remove redundant conditionals.
	* math/bits/math-finite.h [__USE_MISC]: Likewise.
	* math/bits/mathcalls.h [__USE_MISC]: Likewise.
	* math/math.h: Update #else and #endif comments.
	[__USE_MISC]: Remove redundant conditionals.
	* misc/sys/uio.h: Update #endif comments.
	* posix/bits/unistd.h [__USE_MISC]: Remove redundant conditionals.
	* posix/glob.h [__USE_MISC]: Likewise.
	* posix/sys/types.h: Update #endif comments.
	[__USE_MISC]: Remove redundant conditionals.
	* posix/sys/wait.h: Update #endif comments.
	[__USE_MISC]: Remove redundant conditionals.
	* posix/unistd.h: Update #endif comments.
	[__USE_MISC]: Remove redundant conditionals.
	* pwd/pwd.h [__USE_GNU]: Likewise.
	[__USE_MISC]: Likewise.
	* resolv/netdb.h [__USE_GNU]: Likewise.
	* signal/signal.h: Update #endif comments.
	[__USE_MISC]: Remove redundant conditionals.
	* stdlib/stdlib.h: Update #else and #endif comments.
	[__USE_MISC]: Remove redundant conditionals.
	[__USE_GNU]: Likewise.
	* string/bits/string2.h [__USE_MISC]: Likewise.
	* string/string.h: Update #endif comments.
	[__USE_MISC]: Remove redundant conditionals.
	* sysdeps/m68k/m680x0/fpu/bits/mathinline.h [__USE_MISC]:
	Likewise.
	* sysdeps/mach/hurd/bits/fcntl.h [__USE_MISC]: Likewise.
	* sysdeps/mach/hurd/bits/stat.h [__USE_MISC]: Likewise.
	* sysdeps/unix/sysv/linux/alpha/bits/sigaction.h [__USE_MISC]:
	Likewise.
	* sysdeps/unix/sysv/linux/alpha/bits/stat.h [__USE_MISC]:
	Likewise.
	* sysdeps/unix/sysv/linux/bits/fcntl-linux.h: Update #endif
	comments.
	[__USE_MISC]: Remove redundant conditionals.
	* sysdeps/unix/sysv/linux/bits/in.h [__USE_GNU]: Likewise.
	* sysdeps/unix/sysv/linux/bits/sigaction.h [__USE_MISC]: Likewise.
	* sysdeps/unix/sysv/linux/bits/socket.h [__USE_GNU]: Likewise.
	* sysdeps/unix/sysv/linux/bits/stat.h [__USE_MISC]: Likewise.
	* sysdeps/unix/sysv/linux/ia64/bits/sigaction.h [__USE_MISC]:
	Likewise.
	* sysdeps/unix/sysv/linux/m68k/bits/stat.h [__USE_MISC]: Likewise.
	* sysdeps/unix/sysv/linux/mips/bits/sigaction.h [__USE_MISC]:
	Likewise.
	* sysdeps/unix/sysv/linux/mips/bits/stat.h [__USE_MISC]: Likewise.
	* sysdeps/unix/sysv/linux/powerpc/bits/stat.h [__USE_MISC]:
	Likewise.
	* sysdeps/unix/sysv/linux/s390/bits/sigaction.h [__USE_MISC]:
	Likewise.
	* sysdeps/unix/sysv/linux/s390/bits/stat.h [__USE_MISC]: Likewise.
	* sysdeps/unix/sysv/linux/sparc/bits/sigaction.h [__USE_MISC]:
	Likewise.
	* sysdeps/unix/sysv/linux/sparc/bits/stat.h [__USE_MISC]:
	Likewise.
	* sysdeps/unix/sysv/linux/x86/bits/stat.h [__USE_MISC]: Likewise.
	* sysdeps/x86/bits/string.h: Update #endif comments.
	* sysdeps/x86/fpu/bits/mathinline.h [__USE_MISC]: Remove redundant
	conditionals.
	* time/sys/time.h: Update #endif comments.
	* time/time.h: Likewise.
	[__USE_MISC]: Remove redundant conditionals.
2014-02-21 21:45:26 +00:00
Joseph Myers
498afc54df Combine __USE_BSD and __USE_SVID into __USE_MISC.
This patch cleans up following the obsoletion of _BSD_SOURCE and
_SVID_SOURCE by combining __USE_BSD and __USE_SVID into __USE_MISC.

The only non-mechanical part of this patch is the changes to
features.h; everything else is simple substitution of __USE_MISC for
the old macros.  Thus, this patch leaves obviously redundant
conditionals such as "defined __USE_MISC || defined __USE_MISC", and
does not update #endif comments where they referred to BSD or SVID in
words instead of the literal macro name.  This is intended to
facilitate patch review by separating the less mechanical changes from
these purely mechanical changes into a separate patch.  (I do intend
to integrate all the changes from
<https://sourceware.org/ml/libc-alpha/2013-12/msg00226.html>, which I
believe includes all the trailing comment updates, in subsequent
patches.)

Tested x86_64.

	* include/features.h (__USE_BSD): Remove macro definitions.
	(__USE_SVID): Likewise.
	(_BSD_SOURCE): Likewise.
	(_SVID_SOURCE): Likewise.
	[!defined _BSD_SOURCE && !defined _SVID_SOURCE]: Remove condition
	from definition of _DEFAULT_SOURCE.
	[_BSD_SOURCE || _SVID_SOURCE]: Change condition to
	[_DEFAULT_SOURCE].
	* bits/fcntl.h [__USE_BSD]: Change condition to [__USE_MISC].
	* bits/mman.h [__USE_BSD]: Likewise.
	* bits/termios.h [__USE_BSD]: Likewise.
	* bits/waitstatus.h [__USE_BSD]: Likewise.
	* ctype/ctype.h [__USE_SVID]: Likewise.
	* dirent/dirent.h [__USE_BSD]: Likewise.
	* grp/grp.h [__USE_SVID]: Likewise.
	[__USE_BSD]: Likewise.
	* inet/netinet/igmp.h [__USE_BSD]: Likewise.
	* io/fcntl.h [__USE_BSD]: Likewise.
	* io/ftw.h [__USE_BSD]: Likewise.
	* io/sys/stat.h [__USE_BSD]: Likewise.
	* libio/bits/stdio-ldbl.h [__USE_BSD]: Likewise.
	* libio/bits/stdio2.h [__USE_BSD]: Likewise.
	* libio/stdio.h [__USE_SVID]: Likewise.
	[__USE_BSD]: Likewise.
	* math/math.h [__USE_SVID]: Likewise.
	[__USE_BSD]: Likewise.
	* misc/bits/syslog-ldbl.h [__USE_BSD]: Likewise.
	* misc/bits/syslog.h [__USE_BSD]: Likewise.
	* misc/search.h [__USE_SVID]: Likewise.
	* misc/sys/mman.h [__USE_BSD]: Likewise.
	* misc/sys/syslog.h [__USE_BSD]: Likewise.
	* misc/sys/uio.h [__USE_BSD]: Likewise.
	* posix/bits/unistd.h [__USE_BSD]: Likewise.
	* posix/glob.h [__USE_BSD]: Likewise.
	* posix/regex.h [__USE_BSD]: Likewise.
	* posix/sys/types.h [__USE_BSD]: Likewise.
	[__USE_SVID]: Likewise.
	* posix/sys/utsname.h [__USE_SVID]: Likewise.
	* posix/sys/wait.h [__USE_BSD]: Likewise.
	[__USE_SVID]: Likewise.
	* posix/unistd.h [__USE_BSD]: Likewise.
	[__USE_SVID]: Likewise.
	* pwd/pwd.h [__USE_SVID]: Likewise.
	* resolv/netdb.h [__USE_BSD]: Likewise.
	* setjmp/setjmp.h [__USE_BSD]: Likewise.
	* signal/signal.h [__USE_BSD]: Likewise.
	[__USE_SVID]: Likewise.
	* socket/sys/socket.h [__USE_BSD]: Likewise.
	* stdlib/fmtmsg.h [__USE_SVID]: Likewise.
	* stdlib/stdlib.h [__USE_BSD]: Likewise.
	[__USE_SVID]: Likewise.
	* string/bits/string2.h [__USE_BSD]: Likewise.
	[__USE_SVID]: Likewise.
	* string/bits/string3.h [__USE_BSD]: Likewise.
	* string/endian.h [__USE_BSD]: Likewise.
	* string/string.h [__USE_SVID]: Likewise.
	[__USE_BSD]: Likewise.
	* string/strings.h [__USE_BSD]: Likewise.
	* sysdeps/generic/netinet/ip.h [__USE_BSD]: Likewise.
	* sysdeps/gnu/netinet/ip_icmp.h [__USE_BSD]: Likewise.
	* sysdeps/mach/hurd/bits/fcntl.h [__USE_BSD]: Likewise.
	* sysdeps/mach/hurd/bits/stat.h [__USE_BSD]: Likewise.
	* sysdeps/unix/sysv/linux/alpha/bits/mman.h [__USE_BSD]: Likewise.
	* sysdeps/unix/sysv/linux/alpha/bits/termios.h [__USE_BSD]:
	Likewise.
	* sysdeps/unix/sysv/linux/bits/fcntl-linux.h [__USE_BSD]:
	Likewise.
	* sysdeps/unix/sysv/linux/bits/mman-linux.h [__USE_BSD]: Likewise.
	* sysdeps/unix/sysv/linux/bits/sys_errlist.h [__USE_BSD]:
	Likewise.
	* sysdeps/unix/sysv/linux/bits/termios.h [__USE_BSD]: Likewise.
	* sysdeps/unix/sysv/linux/mips/bits/termios.h [__USE_BSD]:
	Likewise.
	* sysdeps/unix/sysv/linux/netinet/if_ether.h [__USE_BSD]:
	Likewise.
	* sysdeps/unix/sysv/linux/netinet/if_fddi.h [__USE_BSD]: Likewise.
	* sysdeps/unix/sysv/linux/netinet/if_tr.h [__USE_BSD]: Likewise.
	* sysdeps/unix/sysv/linux/powerpc/bits/termios.h [__USE_BSD]:
	Likewise.
	* sysdeps/unix/sysv/linux/sparc/bits/termios.h [__USE_BSD]:
	Likewise.
	* sysdeps/x86/bits/string.h [__USE_BSD]: Likewise.
	* sysvipc/sys/ipc.h [__USE_SVID]: Likewise.
	* termios/termios.h [__USE_BSD]: Likewise.
	* time/sys/time.h [__USE_BSD]: Likewise.
	* time/time.h [__USE_BSD]: Likewise.
	[__USE_SVID]: Likewise.

	* sysdeps/unix/sysv/linux/hppa/bits/mman.h [__USE_BSD]: Change
	condition to [__USE_MISC].
2014-02-12 23:41:01 +00:00
Carlos O'Donell
3bfff2edbe BZ #16529: Fix pedantic warning with netinet/in.h.
When compiling with pedantic the following warning is seen:

gcc -Wall -pedantic -O0 -o test test.c
In file included from test.c:3:0:
/path/inet/netinet/in.h:111:21: warning: comma at end of \
enumerator list [-Wpedantic]
     IPPROTO_MH = 135,      /* IPv6 mobility header.  */
                     ^

It is valid C99 to have a trailing comma after the last item in
an enumeration. However it is not valid C90. If possible glibc
attempts to keep all headers C90 + long long without requiring
C99 features. In this case it's easy to fix the headers and it
removes the warning seem with -pedantic.
2014-02-06 11:18:51 -05:00
Allan McRae
4cff0293ef Fix typo in inet/netinet/in.h comment 2014-01-06 11:27:43 +10:00
Allan McRae
d4697bc93d Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
Carlos O'Donell
6c82a2f8d7 Coordinate IPv6 definitions for Linux and glibc
This change synchronizes the glibc headers with the Linux kernel
headers and arranges to coordinate the definition of structures
already defined the Linux kernel UAPI headers.

It is now safe to include glibc's netinet/in.h or Linux's linux/in6.h
in any order in a userspace application and you will get the same
ABI. The ABI is guaranteed by UAPI and glibc.
2013-09-06 01:02:30 -04:00
Joseph Myers
568035b787 Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
Roland McGrath
bea9b19322 Fix lots of bitrot for stub configurations. 2012-07-30 16:34:33 -07:00
Paul Eggert
59ba27a63a Replace FSF snail mail address with URLs. 2012-02-09 23:18:22 +00:00
Ulrich Drepper
a784e50247 Remove pre-ISO C support
No more __const.
2012-01-07 23:57:22 -05:00
Ulrich Drepper
aff2453df7 Fix more warnings 2011-12-03 21:49:35 -05:00
Arnaud Ebalard
7ed520bd85 Fix type of nd_opt_home_agent_info_preference. 2009-06-15 20:33:39 -07:00
Ulrich Drepper
372bfcac73 * sysdeps/posix/getaddrinfo.c: Implement handling of DCCP and
UDPlite.

	* nss/getent.c (ahosts_keys_int): Handle all known socket types.

	* inet/netinet/in.h (IPPIPPROTO_DCCP, IPPROTO_UDPLITE): Define.

	* sysdeps/unix/sysv/linux/bits/socket.h (SOCK_DCCP): Define.
2008-05-14 17:33:37 +00:00
Ulrich Drepper
a53d3f8295 [BZ #5607]
2008-01-16  Ulrich Drepper  <drepper@redhat.com>
	[BZ #5607]
	* conform/data/fcntl.h-data: Fix posix_fadvise and posix_fallocate
	prototypes.
	* conform/data/limits.h-data: Adjust limits changed in v6 and add
	additional suffixes.
	* conform/data/mqueue.h-data: Fix typo in mq_curmsgs entry.
	Add optional functions mq_timedreceive and mq_timedsend.
	* conform/data/netdb.h-data: Add more AI_* and EAI_* constants.
	* conform/data/pthread.h-data: Fix prototype of
	pthread_condattr_setclock.  pthread_sigmask is not required in v6.
	* conform/data/semaphore.h-data: Allow time.h definitions.
	* conform/data/signal.h-data: Likewise.
	* conform/data/stdio.h-data: getw and putw are not required in v6.
	* conform/data/stdlib.h-data: Change setstate prototype.
	* conform/data/string.h-data: Fix strerror_r prototype.
	* conform/data/time.h-data: Fix typo in TIMER_ABSTIME definition.
	* conform/data/unistd.h-data: pthread_atfork not required in v6.
	Fix readlink prototype.
	* conform/data/netinet/in.h-data: Add const to in6addr_any and
	in6addr_loopback.
	* inet/netinet/in.h: Cleanup namespace.
	* posix/regex.h: Likewise.
	* resolv/netdb.h: Likewise.
	* sysdeps/unix/sysv/linux/bits/in.h: Likewise.
	* sysdeps/unix/sysv/linux/bits/socket.h: Likewise.
	* sysdeps/unix/sysv/linux/x86_64/bits/stat.h: Likewise.
2008-01-16 10:11:18 +00:00
Jakub Jelinek
d0b5557df8 * sysdeps/gnu/netinet/tcp.h: Include sys/socket.h if __USE_MISC.
(struct tcp_md5sig): Change tcpm_addr type to struct sockaddr_storage.
	* inet/netinet/in.h: Don't include bits/socket.h.
	* sysdeps/unix/sysv/linux/bits/socket.h: Only check _SYS_SOCKET_H
	macro.
	* sysdeps/unix/bsd/bsd4.4/bits/socket.h: Likewise.
2007-10-11  Jakub Jelinek  <jakub@redhat.com>

	* sysdeps/gnu/netinet/tcp.h: Include sys/socket.h if __USE_MISC.
	(struct tcp_md5sig): Change tcpm_addr type to struct sockaddr_storage.

	* inet/netinet/in.h: Don't include bits/socket.h.
	* sysdeps/unix/sysv/linux/bits/socket.h: Only check _SYS_SOCKET_H
	macro.
	* sysdeps/unix/bsd/bsd4.4/bits/socket.h: Likewise.
2007-10-11 16:32:14 +00:00
Ulrich Drepper
07bfff20c7 [BZ #2693]
* inet/Makefile (routines): Add inet6_opt and inet6_rth.
	* inet/Versions (libc, GLIBC_2.5): Add inet6_opt_init,
	inet6_opt_append, inet6_opt_finish, inet6_opt_set_val, inet6_opt_next,
	inet6_opt_find, inet6_opt_get_val, inet6_rth_space, inet6_rth_init,
	inet6_rth_add, inet6_rth_reverse, inet6_rth_segments,
	and inet6_rth_getaddr.
	* inet/netinet/ip6.h (struct ip6_rthdr0): Make ip6r0_addr a flexible
	array.
	* inet/netinet/in.h (struct ip6_mtuinfo): Define.
	Mark inet6_option_* interfaces as deprecated.
	Declare inet6_opt_init, inet6_opt_append, inet6_opt_finish,
	inet6_opt_set_val, inet6_opt_next, inet6_opt_find, inet6_opt_get_val,
	inet6_rth_space, inet6_rth_init, inet6_rth_add, inet6_rth_reverse,
	inet6_rth_segments, and inet6_rth_getaddr.
	* inet/inet6_opt.c: New file.
	* inet/inet6_rth.c: New file.

	* inet/netinet/icmp6.h: Pretty printing.
2006-05-25 04:50:06 +00:00
Ulrich Drepper
c2280dc039 [BZ 1865]
* inet/netinet/icmp6.h: More updates for RFC3542.
	* inet/netinet/ip6.h: Likewise.
	* sysdeps/unix/sysv/linux/bits/in.h: Adjust for current kernel sources.
	Patch by David L Stevens <dlstevens@us.ibm.com>.
2005-11-16 07:52:07 +00:00
Ulrich Drepper
a334319f65 (CFLAGS-tst-align.c): Add -mpreferred-stack-boundary=4. 2004-12-22 20:10:10 +00:00
Jakub Jelinek
0ecb606cb6 2.5-18.1 2007-07-12 18:26:36 +00:00
Andreas Jaeger
a343783163 Use __interface_addr instead of __interface. 2004-12-19 20:40:06 +00:00
Ulrich Drepper
d3c99ad106 Update.
* inet/netinet/in.h: Add more const to the setipv4soucefilter,
	getsourcefilter, and setsourcefilter parameter list.
	* sysdeps/generic/setipv4sourcefilter.c: Likewise.
	* sysdeps/generic/getsourcefilter.c: Likewise.
	* sysdeps/generic/setsourcefilter.c: Likewise.
	* sysdeps/unix/sysv/linux/setipv4sourcefilter.c: Likewise.
	* sysdeps/unix/sysv/linux/getsourcefilter.c: Likewise.
	* sysdeps/unix/sysv/linux/setsourcefilter.c: Likewise.
2004-08-07 18:22:26 +00:00
Ulrich Drepper
489aa29d62 Update.
* inet/netinet/in.h: Define struct ip_msfilter, IP_MSFILTER_SIZE,
	struct group_filter, and GROUP_FILTER_SIZE.
	* include/sys/socket.h: Declare __getsockopt.
	* sysdeps/unix/sysv/linux/setipv4sourcefilter.c: New file.
	* sysdeps/unix/sysv/linux/getipv4sourcefilter.c: New file.
	* sysdeps/unix/sysv/linux/setsourcefilter.c: New file.
	* sysdeps/unix/sysv/linux/getsourcefilter.c: New file.
2004-08-06 04:56:04 +00:00
Ulrich Drepper
f89d689293 Update.
2004-07-25  Ulrich Drepper  <drepper@redhat.com>

	* inet/Versions [libc, GLIBC_2.3.4]: Add getipv4sourcefilter,
	getsourcefilter, setipv4sourcefilter, and setsourcefilter.
	* inet/Makefile (routines): Likewise.
	* inet/netinet/in.h: Add prototypes for getipv4sourcefilter,
	getsourcefilter, setipv4sourcefilter, and setsourcefilter.
	* sysdeps/generic/getipv4sourcefilter.c: New file.
	* sysdeps/generic/setipv4sourcefilter.c: New file.
	* sysdeps/generic/getsourcefilter.c: New file.
	* sysdeps/generic/setsourcefilter.c: New file.
2004-07-26 04:29:07 +00:00
Ulrich Drepper
b82276d1f5 Update.
Define struct group_req and struct group_source_req.
2004-07-20 07:53:39 +00:00
Ulrich Drepper
7068273512 Update.
* inet/netinet/in.h: Define struct ip_mreq and struct
	ip_mreq_source.
	* sysdeps/unix/sysv/linux/bits/in.h: Define IP_UNBLOCK_SOURCE,
	IP_BLOCK_SOURCE, IP_ADD_SOURCE_MEMBERSHIP,
	IP_DROP_SOURCE_MEMBERSHIP, IP_MSFILTER, MCAST_JOIN_GROUP,
	MCAST_BLOCK_SOURCE, MCAST_UNBLOCK_SOURCE, MCAST_LEAVE_GROUP,
	MCAST_JOIN_SOURCE_GROUP, MCAST_LEAVE_SOURCE_GROUP, and
	MCAST_MSFILTER.
2004-07-20 07:39:10 +00:00
Ulrich Drepper
a459657032 Update.
2003-06-14  Ulrich Drepper  <drepper@redhat.com>

	* inet/netinet/ip6.h (IP6OPT_PAD1, IP6OPT_PADn): Define.
	* inet/netinet/in.h: Add prototypes for inet6_option_* functions.
	* inet/Makefile (routines): Add inet6_option.
	* inet/inet6_option.c: New file.
	* inet/Versions [GLIBC_2.3.3] (libc): Add inet6_option_space,
	inet6_option_init, inet6_option_append, inet6_option_alloc,
	inet6_option_next, and inet6_option_find.

	* inet/netinet/ip6.h (struct ip6_ext): Define.
2003-06-14 08:39:08 +00:00
Ulrich Drepper
b523afaec1 Update.
2003-05-12  Thorsten Kukuk  <kukuk@suse.de>

	* inet/netinet/igmp.h: Sync with Linux Kernel 2.5.69 and *BSD.
2003-05-15 03:31:18 +00:00
Ulrich Drepper
d9997a45ee Update.
2003-05-09  Thorsten Kukuk  <kukuk@suse.de>

	* sysdeps/unix/sysv/linux/netinet/igmp.h: Don't include kernel
	headers, add defines from kernel header, move it from here...
	* inet/netinet/igmp.h: ... to here.
	* inet/Makefile (headers): Add netinet/igmp.h.
	* sysdeps/unix/sysv/linux/Makefile: Remove netinet/igmp.h.
	* sysdeps/unix/sysv/linux/Dist: Remove netinet/igmp.h.

2003-05-10  Ulrich Drepper  <drepper@redhat.com>

	* sysdeps/pthread/lio_listio64.c (lio_listio64): If SIG == NULL,
	use dummy sigevent structure with SIGEV_NONE [PR libc/5015].

2003-05-09  Thorsten Kukuk <kukuk@suse.de>

	* libio/bits/stdio.h: Sync prototypes with libio/stdio.h
	(remove __THROW from possible cancellation points).
2003-05-10 08:39:58 +00:00
Ulrich Drepper
5e826ab537 Update.
2003-03-24  Jon Grimm  <jgrimm@us.ibm.com>

	* inet/netinet/in.h: Add IPPROTO_SCTP.

2003-03-24  Ulrich Drepper  <drepper@redhat.com>

	* sysdeps/unix/sysv/linux/sys/epoll.h (EPOLLET): Define.
2003-03-25 01:14:36 +00:00
Andreas Jaeger
41bdb6e20c Update to LGPL v2.1.
2001-07-06  Paul Eggert  <eggert@twinsun.com>

	* manual/argp.texi: Remove ignored LGPL copyright notice; it's
	not appropriate for documentation anyway.
	* manual/libc-texinfo.sh: "Library General Public License" ->
	"Lesser General Public License".

2001-07-06  Andreas Jaeger  <aj@suse.de>

	* All files under GPL/LGPL version 2: Place under LGPL version
	2.1.
2001-07-06 04:58:11 +00:00
Ulrich Drepper
8fee1bb0b2 Update.
2001-06-07  Mark Kettenis  <kettenis@gnu.org>

	* grp/initgroups.c (initgroups): Factor out re-usable code into...
	(internal_getgrouplist): ... new function.
	(getgrouplist): New function.
	* grp/grp.h (getgrouplist): New prototype.
	* grp/Versions [2.2.4]: Add getgrouplist.

2001-06-16  Ulrich Drepper  <drepper@redhat.com>

	* inet/netinet/ip6.h: Fix comments in ip6_hdr.
	Patch by Pekka Savola <pekkas@netcore.fi>.
2001-06-16 19:50:36 +00:00
Ulrich Drepper
3584d5fb31 Update.
* inet/arpa/inet.h: Don't include <sys/types.h>.  Define socklen_t
	if not already happened.
	* inet/netinet/in.h: Don't include <sys/types.h>, use <bits/types.h>.
	Don't include <limits.h> and <bits/sockaddr.h>.
2001-01-28 22:44:38 +00:00
Ulrich Drepper
126f53e86d Update.
* inet/netinet/in.h: Make IPPROTO_ constants also macros.
2001-01-27 03:03:05 +00:00
Ulrich Drepper
c3301189bd Update.
2000-11-26  Ulrich Drepper  <drepper@redhat.com>

	* inet/getnameinfo.c: Adjust casts to avoid warnings.
	* inet/rcmd.c: Likewise.
	* inet/ruserpass.c: Likewise.
	* inet/netinet/in.h (IN6_IS_ADDR_UNSPECIFIED, IN6_IS_ADDR_LOOPBACK,
	IN6_IS_ADDR_MULTICAST, IN6_IS_ADDR_LINKLOCAL, IN6_IS_ADDR_SITELOCAL,
	IN6_IS_ADDR_V4MAPPED, IN6_IS_ADDR_V4COMPAT, IN6_ARE_ADDR_EQUAL,
	IN6_IS_ADDR_MC_NODELOCAL, IN6_IS_ADDR_MC_LINKLOCAL,
	IN6_IS_ADDR_MC_SITELOCAL, IN6_IS_ADDR_MC_ORGLOCAL,
	IN6_IS_ADDR_MC_GLOBAL): Preserve const in cast.
	* include/aliases.h: Add prototypes for internal __getalias* functions.
	* include/netdb.h: Add prototypes for __old_gethostent_r,
	__old_gethostbyaddr_r, __old_gethostbyname_r, __old_gethostbyname2_r,
	__old_getnetent_r, __old_getnetbyaddr_r, __old_getnetbyname_r,
	__old_getservent_r, __old_getservbyname_r, __old_getservbyport_r,
	__old_getprotoent_r, __old_getprotobyname_r, __old_getprotobynumber_r.
	* include/rpc/netdb.h: Add prototypes for __old_getrpcbyname_r,
	__old_getrpcbynumber_r, __old_getrpcent_r.

	* include/rpc/netdb.h: Add __getrpcbyname_r, __getrpcbynumber_r,
	__getrpcent_r prototypes.
2000-11-26 09:44:30 +00:00
Ulrich Drepper
24c7f4c14b Update.
2000-08-23  Jakub Jelinek  <jakub@redhat.com>

	* inet/netinet/in.h (struct in6_addr): Don't enforce 64bit alignment
	on 64bit arches.
2000-08-23 07:15:54 +00:00
Ulrich Drepper
959eb65d0d Update.
2000-08-21  Marko Myllynen  <myllynen@lut.fi>

	* inet/netinet/icmp6.h: Add Mobile IPv6 extensions structures.
2000-08-21 19:15:14 +00:00
Ulrich Drepper
9df7693376 Update.
2000-08-15  Marko Myllynen  <myllynen@lut.fi>

	* inet/netinet/icmp6.h: Added Mobile IPv6 definitions.
2000-08-16 02:05:38 +00:00
Andreas Jaeger
88d9b1b24b Update.
2000-05-12  Andreas Jaeger  <aj@suse.de>

	* inet/netinet/in.h (IN6_ARE_ADDR_EQUAL): Correct indices.
	Reported by tmoestl@gmx.net, closes PR libc/1732.
2000-05-12 13:41:15 +00:00
Ulrich Drepper
ad483238a1 Update.
* inet/arpa/inet.h (inet_addr): Change return type to in_addr_t.
	(inet_lnaof): Likewise.
	(inet_netof): Likewise.
	(inet_network): Likewise.
	(inet_aton): Likewise.
	(inet_makeaddr): Change parameter types to in_addr_t.
	(inet_neta): Likewise.
	(inet_ntop): Change type of last parameter to socklen_t.
	(inet_aton): Only make available if __USE_MISC.
	(inet_neta): Likewise.
	(inet_net_ntop): Likewise.
	(inet_net_pton): Likewise.
	(inet_nsap_ntoa): Likewise.

	* inet/in.h: Define in_port_t type.
	Define in_addr_t type.
	(struct in_addr): Use in_addr_t in definition.
	(IN_CLASSA): Use cast to in_addr_t.
	(IN_CLASSB): Likewise.
	(IN_CLASSC): Likewise.
	(IN_CLASSD): Likewise.
	(IN_EXPERIMENTAL): Likewise.
	(IN_BADCLASS): Likewise.
	(INADDR_ANY): Likewise.
	(INADDR_BROADCAST): Likewise.
	(INADDR_NONE): Likewise.
	(INADDR_LOOPBACK): Likewise.
	(INADDR_UNSPEC_GROUP): Likewise.
	(INADDR_ALLHOSTS_GROUP): Likewise.
	(INADDR_ALLRTRS_GROUP): Likewise.
	(INADDR_MAX_LOCAL_GROUP): Likewise.
	(struct sockaddr_in): Use in_port_t for sin_port element.
	(struct sockaddr_in6): Use in_port_t for sin6_port element.
	Use uint8_t instead of u_int8_t.

	* resolv/inet_addr.c (inet_addr): Change return type to in_addr_t.
	Call __inet_aton instead of inet_aton.
	(__inet_aton): Renamed from inet_aton.  Add weak alias under old name.

	* resolv/netdb.h (gethostbyname2): Define only is __USE_MISC.
	(innetgr): Likewise.
	(struct addrinfo): Use socklen_t for ai_addrlen element.

	* sysdeps/unix/sysv/linux/bits/in.h (IPV6_MTU_DISCOVER, IPV6_MTU,
	IPV6_RECVERR): New defines.
2000-04-02 03:09:41 +00:00
Ulrich Drepper
c0bc5f7b8f Update.
2000-03-23  Bruno Haible  <haible@clisp.cons.org>

	* iconv/gconv_simple.c (internal_ucs4_loop, internal_ucs4le_loop):
	Remove no-op pointer increment.
2000-03-23 21:34:58 +00:00
Ulrich Drepper
c1301d9a76 Update.
2000-01-23  Philip Blundell  <philb@gnu.org>

	Add basic support for RPC over IPv6:
	* sunrpc/rpc/svc.h (struct SVCXPRT): Use `struct sockaddr_storage'
	for remote address.
	(svcudp6_create, svcudp6_bufcreate, svctcp6_create): New
	prototypes.
	* sunrpc/rpc/clnt.h (clnttcp6_create, clntudp6_create,
	clntudp6_bufcreate): New prototypes.
	* inet/netinet/in.h (bindresport6): Likewise.
	* sunrpc/Makefile (routines): Add svc_tcp6, svc_udp6, bindrsvprt6.
	* sunrpc/Versions: Add svcfd6_create, svctcp6_create,
	svcudp6_create, svcudp6_bufcreate, svcudp6_enablecache,
	bindresvport6 for GLIBC_2.2.
	* sunrpc/rpc_main.c: Support `tcp6' and `udp6' transport types.
	* sunrpc/rpc_svcout.c: Likewise.
	* sunrpc/svc_tcp.c (rendezvous_request): Use memcpy rather than
	simple assignment when copying addresses.
	* sunrpc/svc_udp.c (cache_get): Likewise.
	* sunrpc/svc_unix.c (rendezvous_request): Likewise.
	* sunrpc/bindrsvprt6.c, sunrpc/clnt_tcp6.c, sunrpc/clnt_udp6.c,
	sunrpc/svc_tcp6.c, sunrpc/svc_udp6.c: New files.

2000-01-05  Philip Blundell  <philb@gnu.org>

	* sysdeps/unix/sysv/linux/arm/mmap64.S: Correct check for ENOSYS.

2000-01-23  Andreas Jaeger  <aj@suse.de>

	* sysdeps/unix/sysv/linux/i386/fxstat.c (__fxstat): Pass right
	parameter to fstat calls.

2000-01-18  Roland McGrath  <roland@baalperazim.frob.com>

	* sysdeps/generic/bits/socket.h
	(__ss_aligntype, struct sockaddr_storage): Make these like Linux
	version, replacing old type name `__ss_align'.

2000-01-05  Roland McGrath  <roland@baalperazim.frob.com>

	* sysdeps/generic/lseek64.c (__libc_lseek64): Renamed from __lseek64.
	(__lseek64, lseek64): Make these weak aliases for __libc_lseek64.
	* sysdeps/mach/hurd/lseek.c (__libc_lseek): Renamed from __lseek.
	(__lseek, lseek): Make these weak aliases for __libc_lseek.
	* sysdeps/mach/hurd/fcntl.c (__libc_fcntl): Renamed from __fcntl.
	(__fcntl, fcntl): Make these weak aliases for __libc_fcntl.
	* sysdeps/mach/hurd/open.c (__libc_open): Renamed from __open.
	(__open, open): Make these weak aliases for __libc_open.

	* sysdeps/generic/bits/socket.h (enum __socket_type): Remove
	trailing comma.
	(anonymous enum for MSG_*): Likewise.
	(anonymous enum for SO_*): Likewise.

2000-01-23  Ulrich Drepper  <drepper@cygnus.com>

	* string/bits/string2.h: Fix typo (__GNU_SOURCE -> __USE_GNU)
	(PR libc/1553).
2000-01-24 02:22:13 +00:00
Ulrich Drepper
c1422e5b7c Update.
Patch by khendricks@ivey.uwo.ca [libc/1382].
1999-10-09 21:56:43 +00:00
Ulrich Drepper
d01d63190b Update.
1999-08-28  Ulrich Drepper  <drepper@cygnus.com>

	* malloc/malloc.c (ptmalloc_init): Don't use variables to set
	thresholds for SUID binaries.  [PR libc/1277]

1999-08-28  Andreas Jaeger  <aj@arthur.rhein-neckar.de>

	* manual/install.texi (Running make install): Give examples for
	timezone and locale installation.

1999-08-28  Zack Weinberg  <zack@bitmover.com>

	* glibcbug.in: Get CCVERSION from autoconf substitution.
	* configure.in: Calculate and substitute CCVERSION.

1999-08-28  Andreas Jaeger  <aj@arthur.rhein-neckar.de>

	* sysdeps/unix/sysv/linux/mips/bits/sigaction.h: Fix sa_flags,
	partially reverting a patch from 1998-12-29.  We just can't change 
	the flags, kernels with different flags lead to
	incompatibilities.
1999-08-28 22:34:29 +00:00