The commit "libarchive: Define _XOPEN_SOURCE for get(pwu|grg)id_r"
introduced a comment referring to get(pwu|grg)id_r in a source file that
actually uses the functions get(pw|gr)name_r. We fix the comment.
The "result" argument to functions get(pwu|grg)id_r and get(pw|gr)name_r
does not appear in the signatures provided on older platforms. We set
the pointer to the result memory in case the function ignores it, thus
ensuring initialization.
The commit "Fix libarchive linker errors on SunOS for mkdev/major/minor"
hard-coded #include lines for getting mkdev/major/minor on the Sun.
Instead we add missing try-compile tests to make sure the proper headers
get included through the standard mechanism.
The commit "Fixed a few of the SunOS build errors in libarchive" changed
the call to these functions to use the old signatures. Instead we now
define _XOPEN_SOURCE to get the improved modern signatures.
Some compilers use implicit link options of the form
-lcrt*.o
-lgcc*
-lSystem (on Mac)
-lSystemStubs (on Mac)
that provide system-wide symbols not specific to any language.
These need not be listed explicitly for mixed-language linking.
We teach CMake to remove the above items from the implicit library list
of each language. This change makes it possible to mix GNU compiler
versions in some cases.
Most of the integer type defaults needed for MSVC and Borland actually
work with all Windows compilers. This commit generalizes the defaults
to avoid compiler-specific tests.
The commit "libarchive: Fix Borland integer constants" introduced use of
HAVE_* configured macros into archive.h and archive_entry.h where they
are not allowed. This commit replaces the logic with something that
does not depend on the configured macros.
The VS 6 version of wincrypt.h only works if _WIN32_WINNT >= 0x0400.
We block its inclusion through windows.h by defining NOCRYPT, and then
define _WIN32_WINNT and include it only when necessary.
Some versions of Borland provide <stdint.h>, so we use it when possible.
However, the 64-bit signed and unsigned integer min/max constants cause
overflow warnings from Borland itself! For these constants we fall back
on our default definitions.