svn commit: r283197 - head/usr.bin/soelim
Bruce Evans
brde at optusnet.com.au
Thu May 21 09:55:00 UTC 2015
On Thu, 21 May 2015, Baptiste Daroussin wrote:
> Log:
> add an include on sys/types.h because we do explicitly use size_t
> remove unused stdbool.h
sys/types.h may be needed for some other typedef, but not for size_t.
size_t is already declared in at least 3 other of the included headers:
- <stdlib.h> and <string.h> (C90 standard)
- <unistd.h> (POSIX.1-2001 standard)
<sys/types.h> is a prerequisite for <unistd.h> in POSIX.1-1990, and
most section 2 man pages still document it as a prerequiste for their
syscalls. They place it before the include of <unistd.h> but are too
fuzzy to document if it is a prerequisite for <unistd.h or their
syscalls. But it have never actually been a prerequisite in any version
of FreeBSD. In FreeBSD-1 and 4.4BSD-Lite2, <unistd.h> includes
<sys/types.h> and thus gets size_t and lots of pollution. <unistd.h>
was cleaned up a bit in 2002, but the ifdefs for things like
_SIZE_T_DECLARED in this cleanup are still nonsense, because <unistd.h>
still includes <sys/types.h> before these ifdefs and thus gets size_t
and lots of pollution, much the same as in FreeBSD-1.
Some of the section 2 headers were bogusly changed to say that
sys/types.h is a prerequisite for their syscalls _after_ POSIX.1-2001
standardized it not being a prerequisite for <unistd.h> for the syscalls
declared there. It is needed for portability to pre-POSIX.1-2001
systems that are not polluted like FreeBSD, if any. IIRC, even
POSIX.1-1990 permits <unistd.h> (or any POSIX header) to declare any
typedef ending in _t, so <unistd.h> can declare size_t for itself and
might even work without its prerequisite. Applications just cannot
depend on this.
In the previous change, the use of MAXPATHLEN regressed to use of
PATH_MAX. MAXPATHLEN was honestly unportable. It defined in all (?)
BSD systems. PATH_MAX only defined if {PATH_MAX} is constant. It
is better to be honestly unportable than to use PATH_MAX incorrectly.
MAXPATHLEN required the include of <sys/param.h>. That gave <sys/types.h>
and lots of undocumented pollution. Apparently, none of the pollution
was needed, not even <sys/types.h>.
Bruce
More information about the svn-src-head
mailing list