Deprecate inclusion of <sys/sysmacros.h> by <sys/types.h>
commitdbab6577c6684c62bd2521c1c29dc25c3cac966f
authorZack Weinberg <zackw@panix.com>
Tue, 10 May 2016 15:07:42 +0000 (10 11:07 -0400)
committerZack Weinberg <zackw@panix.com>
Wed, 3 Aug 2016 19:28:49 +0000 (3 15:28 -0400)
tree99009b6d1ef5a0aa9579fb198f77c031dbb84be3
parent63eb8df85a17f7f966d4daa4cf44c8e956636a86
Deprecate inclusion of <sys/sysmacros.h> by <sys/types.h>

The macros defined by <sys/sysmacros.h> are not part of POSIX nor XSI, and
their names frequently collide with user code; see for instance glibc bug
19239 and Red Hat bug 130601.  <stdlib.h> includes <sys/types.h> under
_GNU_SOURCE, and C++ code presently cannot avoid being compiled under
_GNU_SOURCE, exacerbating the problem.

* NEWS: Inclusion of <sys/sysmacros.h> by <sys/types.h> is deprecated.
* misc/sys/sysmacros.h: If __SYSMACROS_DEPRECATED_INCLUSION is defined,
define major, minor, and makedev to issue deprecation warnings on use.
If __SYSMACROS_DEPRECATED_INCLUSION is *not* defined, suppress
previously-activated deprecation warnings for these macros and prevent
subsequent inclusions of this header from having any effect.
* posix/sys/types.h: Define __SYSMACROS_DEPRECATED_INCLUSION before
including <sys/sysmacros.h>, and undefine it again afterward.
ChangeLog
NEWS
misc/sys/sysmacros.h
posix/sys/types.h