- At least Ubuntu 8.1 sets __attribute__((warn_unused_result)) on fwrite()
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=25509
which means (void)fwrite(...) will *always* generate a warning, so
set -Wno-error to bypass this in Linux.sys.mk
- Ubuntu 8.1 also jumps through hoops to ensure ARG_MAX is *undefined*, so
work around this in tnftp and libnbcompat
explicit about it at least for netinet/in.h. Include sys/types.h before
checking for content of sys/socket.h and netinet/in.h to fix this.
Reported and tested by Georg Schwarz.
- DESTDIR support
- Add check for inttypes.h and sys/socket.h
- Provide compatibility fallback for netdb.h and the RFC2553 API
(getaddrinfo), supoprting IPv4 only. Code from OpenSSH.
- Use normal autoconf checks for fixed size bit types. Stop using the
older BSD types (u_intXX_t) in libnbcompat.
- Add implementation of shquote (from NetBSD).
- Fix a buglet in the getenv/setenv/unsetenv detection.
- Fix a buglet in the mkdtemp/mkstemp detection.
provided by the system and if one is lacking use the file. Don't short
cut the list as before and do a second iteration, it is just confusing.
This breaks the regression introduced by the last commit on OS X.
- declare endpwent and endgrent if system headers are missing them
- check for existance of statfs.f_flags before using it
- drop a bunch of redundant function checks
Based on the work of Timothy Larson.
Many of the hash function headers are incompatible with the OpenSSL
headers, so don't include them by default and require the caller to
include them on demand.
Add vsnprintf prototype as the function is implemented and used.
Add all the macros from NetBSD's sys/queue.h defined for the types
implemented.
Bump version to libnbcompat-20070622.
Tested by dmcmahill@NetBSD.org on Solaris.
OK jlam@, agc@
Changes since 20070507:
Completely rewrote the fgetln implementation, since the previous version
couldn't handle files that don't end with a '\n' character. Tested on IRIX,
NetBSD and Solaris.
anonymous empty string. the macro uses the argument multiple times
and the logic relies on identical strings having the same address,
which is compiler dependent and not guaranteed to be the case.
problem observed with pax(1) built with sunpro 11 on Solaris.
from segv@netctl.net in PR pkg/32097.
include fixing fgetln() to account for \0 characters due to implementing
it using fgets() (analysis provided by Urban Boquist). Also add a
definition for __restrict if not present since it is used in the regex
implementation code from src HEAD.
This has been tested to work correctly on:
FreeBSD-4.8/i386
NetBSD-1.6.2/i386
Solaris 9
include:
* Rework the way that poll() is detected so that it more closely
follows how the rest of the replacement functions are detected.
* Split err*() and warn*() functions into separate err.c and warn.c
files so that we can more finely isolate the objects files pulled
in by the linker. This should fix building textproc/nbsed on Solaris.
* Move more definitions from nbcompat.h into nbcompat/*.h. This makes
it more clear which NetBSD headers are expected to provide which
function declarations and macro definitions.
* Clean out nbconfig.h by moving all of the relevant definitions into
the correct nbcompat/*.h files.
* Update all of the library functions to the latest from src HEAD.
Also change the way that sources are modified when imported -- we
now include <nbcompat.h> before the first system header, include
<nbcompat/*.h> versions of headers instead of system ones where
available, and "#if 0" the sections that make no sense when being
built outside of the NetBSD source tree. This should make future
updates from src HEAD, e.g. for security updates or bug fixes,
easier.
* Move all private headers into a subdirectory and include the headers
from the private directory. This avoids any nameclashes with system
headers with the same name.
the Makefiles so that they can be built by really basic make programs.
Move the awk script in the Makefile into a separate file for clarity, and
so that really basick make programs won't choke on the continuation lines.
include:
* Adding a regex(3) implementation for those platforms that don't
have one, e.g. IRIX 5.3.
* Allow nbcompat.h to be included multiple times in case it's needed
to override values of set by config.h in bootstrap packages. This
should fix problems with building pkg_install and pax on platforms
that have /usr/include/glob.h.
* Remove namespace.h, which should be a no-op since we're building
a userland library separate from the NetBSD sources.
* Remove HAVE_CONFIG_H checks from sources since we're always going
to have and and we're always going to be including it.
* Rename all inclusion guards in nbcompat/*.h to be _NBCOMPAT_*_H_ so
that it won't get triggered by any settings in system headers.
This has been tested on:
FreeBSD-4.8/i386 Debian Linux 3.0 (woody)
IRIX 6.5 MacOS X 10.2.8
MacOS X 10.3.5 NetBSD-1.6.2/i386
NetBSD-2.0_BETA/i386 Red Hat Linux 7.3
Solaris 7/sparc Solaris 8/sparc
Solaris 9/sparc
include working around an apparent bug in an autoconf macro defined in
aclocal.m4. This should now cause getopt_long() to be built on systems
that are missing getopt.h. This version of libnbcompat has been tested
on the following platforms:
FreeBSD-4.8/i386
MacOS X 10.2.8
NetBSD-1.6.2/i386
include:
* Re-adding a default value for pkg_use_nbcompat_vis; this was
causing the configure script to fail on platforms that had funky
versions of vis(). This should fix reported problems on Solaris 8
and on IRIX 5.3.
* Added setgroupent() and setpassent() compatibility functions so
that pwcache.c will build without complaining about an incompatible
pointer type assignment.
* Remove unused tests for <arpa/nameser.h>, <netdb.h>, h_errno and
hstrerror(). These were originally used to bootstrap lukemftp, but
tnftp doesn't need libnbcompat to build nowadays, so we don't need
these anymore.
* Cleanup: in cases where we test for a function using AC_REPLACE_FUNCS,
move the function prototype into a nbcompat header that is the
same name as the NetBSD header that contains that declaration,
and include that file in place of the original one within
nbcompat.h.
This version has been tested to build on the following systems:
FreeBSD-4.8/i386 NetBSD-1.6.2/i386
FreeBSD-5.2.1/i386 NetBSD-2.0_BETA/i386
IRIX 6.5 Red Hat Linux 8.0
MacOS X 10.3.4 Solaris 8
MacOS X 10.3.5 Solaris 9
include:
(1) Add a statvfs() implementation based on statfs(), and remove the
statfs() NetBSD-compatibility implementation. statvfs() is used
in src/usr.sbin/pkg_install on the HEAD branch.
(2) Add a fnmatch() implementation, needed by IRIX. fnmatch() is used
in src/usr.sbin/pkg_install on the HEAD branch.
(3) Remove fseeko(), inet_ntop(), inet_pton(), sl_*() strptime(), and
timegm() as they're not used by any of the bootstrap packages that
require libnbcompat (pax, mtree, pkg_install). All that's left is
what's necessary to bootstrap those three packages.
and HAVE_SYS_POLL_H if we don't have a native poll() implementation.
prevents including of libnbcompat's poll.h as well as the system's
poll.h where we should be ignoring the system's poll.h.
fix tested by Jeff Rizzo on MacOSX 10.3.3.
(MacOSX 10.3) by adding a custom test for _POLL_EMUL_H_ which is
defined in poll.h on some MacOSX 10.3 systems.
not all 10.3 systems have poll.h, so only do the poll() test if at
least one of the header files is found.
multiple identical strings appear in a source file.
As a result, comparing char *o to the "" pointer gives the wrong result
in vis.c, as the "" pointer we're checking against isn't the same as the
"" which initialised char *o.
Use a global pointer initialised to "", and use it for MAKEEXTRALIST()
calls.
Thanks to Christos Zoulas for suggesting the right solution :)