Commit Graph

89 Commits

Author SHA1 Message Date
Brad King 3218f52f11 libarchive: Avoid struct init with variable
Compilers such as Borland and MIPSpro do not like struct initialization
with variables.  Initialize using assignment instead.
2013-07-31 08:20:24 -04:00
Brad King bae3a73cee libarchive: Silence API deprecation warnings
CMake uses old libarchive APIs for now.
2013-07-31 08:20:05 -04:00
Brad King 677384017a libarchive: Include cm_zlib.h to get zlib used by CMake
Follow up change from commit ffa6faa4 (libarchive: Include cm_zlib.h to
get zlib used by CMake, 2011-12-20) for new includes of zlib.h in
updated libarchive.
2013-07-31 08:19:58 -04:00
Brad King 102071f80c Merge branch 'libarchive-upstream' into update-libarchive
Conflicts:
	Utilities/cmlibarchive/CMakeLists.txt
	Utilities/cmlibarchive/libarchive/archive.h
	Utilities/cmlibarchive/libarchive/archive_entry.h
	Utilities/cmlibarchive/libarchive/archive_read_disk_posix.c
	Utilities/cmlibarchive/libarchive/archive_read_support_format_iso9660.c
	Utilities/cmlibarchive/libarchive/archive_windows.h
	Utilities/cmlibarchive/libarchive/archive_write_set_format_iso9660.c
2013-07-31 08:19:13 -04:00
Ömer Fadıl USTA 499531c64e libarchive: Fix free() order to avoid accessing freed memory
The archive_string_conv type sc variable already freed via free(sc) on
the other hand in second line we are tyring to free its subset via
free(sc->from_charset) this will cause a problem because we couldn't
reach sc after first release.

Reviewed-by: Igor Murzov <e-mail@date.by>
2013-07-15 10:20:00 -04:00
Andreas Mohr bf019d765d Fix spelling and typos (non-binary) 2013-05-07 08:39:19 -04:00
Andreas Mohr ddac8d3d2d Fix spelling and typos (affecting binary data / module messages) 2013-05-07 08:39:19 -04:00
Sean McBride 6a6a6f3670 libarchive: fixed undefined left shift with signed ints
caught by clang's -fsanitize=shift. A small unsigned int was
promoted, according to C's regular promotion rules, to a signed
int, it was then left shifted.  This sometimes pushed a 1 into
the sign bit, which is undefined behaviour. Fixed by using
unsigned temporaries.
2012-11-30 08:04:48 -05:00
Rolf Eike Beer 6c8722fab5 Fix typo direcotry -> directory (and similar) [#13444] 2012-07-30 08:08:33 +02:00
Brad King 54ffb5b4f1 libarchive: Avoid 'inline' on SunPro < 5.9 (#13277)
Suggested-by: Daniel R. Gomez <gomez@teragram.com>
2012-06-07 13:46:49 -04:00
Brad King 09a91c6d5a libarchive: Avoid 'inline' keyword on XL C v6 (#13148) 2012-04-19 09:49:43 -04:00
Jim Hague a8995ebe35 libarchive: Avoid trailing , in enum for XL v6 (#13148)
IBM xlc v6 cannot cope with a trailing ',' in enum definitions.
2012-04-19 09:00:29 -04:00
Brad King ca7790240c libarchive: Workaround mbsnrtowcs assertion failure on old glibc
The CMake TarTest fails with the error

 mbsnrtowcs.c:116: __mbsnrtowcs: Assertion
  `status == GCONV_OK || status != GCONV_EMPTY_INPUT ||
   status == GCONV_ILLEGAL_INPUT || status == GCONV_INCOMPLETE_INPUT ||
   status == GCONV_FULL_OUTPUT' failed.

on very old glibc versions.  Work around the problem by pretending that
mbsnrtowcs does not exist.  Libarchive will fall back to mbrtowc.
2012-02-10 15:16:06 -05:00
Brad King d4a9e334d3 Include bzlib.h consistently across CMake build (#10950)
Use the approach originally used in commit f91b3c1d (Add options to
build with system utility libraries, 2006-10-19) for all other
third-party libraries.  Create a "cm_bzlib.h" header wrapper that
robustly includes the header from the bzip2 library chosen for the CMake
build (either builtin or system version).  Include the header wrapper
anywhere we need the API provided by <bzlib.h>.
2012-01-13 14:05:36 -05:00
Brad King 156cb3bbf2 Merge branch 'libarchive-upstream' into update-libarchive
Conflicts:
	Utilities/cmlibarchive/CMakeLists.txt
	Utilities/cmlibarchive/libarchive/archive_windows.c
2012-01-05 09:02:58 -05:00
Brad King 65b6e19a35 libarchive: Avoid bogus conversion warning from PGI compiler
We cannot suppress PGI compiler warnings completely because even with
the "-w" flag the compiler still writes a message containing "compilation
completed with warnings" to stderr.

A warning is triggered by expressions like

  test ? NULL : ptr_to_const_char
  test ? ".." : ptr_to_const_char

that the PGI compiler handles incorrectly.  It chooses the pointer type
of the first option (either void* or char*) and warns about conversion
of the second without a cast.  Flip the expression logic to

  !test ? ptr_to_const_char : NULL
  !test ? ptr_to_const_char : ".."

to help the compiler choose the proper result type.
2012-01-04 11:54:51 -05:00
Brad King 2309438321 libarchive: Rename isoent_rr_move_dir parameter isoent => curent
The PGI compiler confuses parameter name "isoent" with "struct isoent".
Rename the parameter to "curent" to avoid confusion.
2012-01-04 09:48:41 -05:00
Brad King b6ca96ec95 libarchive: Include linux/types.h before linux/fiemap.h
Some Linux API versions do not perform this inclusion automatically,
so types like __u64 needed by the latter are not available.
2012-01-04 09:39:28 -05:00
Brad King 3a9f4490f4 libarchive: Use Apple copyfile.h API only if available
Do not use the copyfile.h API if the header is not available.
The Mac SDK for older OS X versions does not provide it.
2012-01-03 11:16:32 -05:00
Brad King 6af6b96cb3 libarchive: Do not use MNT_NOATIME if not defined
Use the same pattern already used elsewhere in archive_read_disk_posix.c
for ST_NOATIME to use MNT_NOATIME only when defined.
2012-01-03 11:15:25 -05:00
Brad King 02d5e40572 libarchive: Check for 'struct statvfs' member 'f_iosize'
Configure the result as definition HAVE_STRUCT_STATVFS_F_IOSIZE and use
the member only if it exists.  At least one platform (IRIX) provides
struct statvfs without this member.
2011-12-23 16:04:59 -05:00
Brad King 8b7ee30bf4 libarchive: Do not use ST_NOATIME if not defined
Use the same pattern already used elsewhere in archive_read_disk_posix.c
to use ST_NOATIME only when defined.
2011-12-23 16:04:59 -05:00
Brad King 680fc0eda8 libarchive: Fix var decl after statement in archive_string.c
When HAVE_MBRTOWC is true we declare an extra local variable.  Move the
unused argument cast to the end of the invalid_mbs function.
2011-12-23 16:04:59 -05:00
Brad King e1afd072bc libarchive: Suppress compiler warnings
We are not developing libarchive so we do not care about warnings.
2011-12-23 16:04:59 -05:00
Brad King e2dc5561bb libarchive: Fix Windows NT API usage in VS 6
VS 6 warns verbosely when WINVER >= 0x0500.  Avoid defining WINVER and
_WIN32_WINNT to higher than 0x0400 on VS 6.  Provide missing API
declarations in archive_windows.h when we do not get them from
<windows.h>.  Provide GetVolumePathNameW because VS 6 does not declare
it regardless of the API version.
2011-12-23 16:04:58 -05:00
Brad King 297d9f2032 libarchive: Cast mode constants to mode_t in case it is signed
At least one compiler (Borland) defines mode_t as just "short" which is
signed.  This breaks code like

  switch(archive_entry_filetype(e)) {
    case AE_IFREG:
    ...
  }

if AE_IFREG and other constants have a longer signed type (int) because
sign extension of the mode_t return type from archive_entry_filetype
changes its value.  Avoid the problem by ensuring the type of the
constants matches mode_t.

This change was originally made in commit a73acfbe (Fix for mode_t with
signed types, 2009-11-07).  Port it to the new libarchive snapshot.
2011-12-23 16:04:58 -05:00
Brad King b5dd9aa482 libarchive: Workaround case-insensitive symbols on Borland
Mangle the open_FILE symbols to avoid conflict with open_file:

 Warning: public '_archive_read_open_file'
          in module 'archive_read_open_filename.c' clashes with
	  prior module 'archive_read_open_file.c'
 Warning: public '_archive_write_open_file'
          in module 'archive_write_open_filename.c' clashes with
	  prior module 'archive_write_open_file.c'

This workaround should not go upstream because it will break when
mixing compilers.
2011-12-23 16:04:58 -05:00
Brad King 3b9eaec738 libarchive: Cast constants to int64_t instead of using LL suffix
The LL suffix is not portable.  Use an explicit cast instead.
2011-12-23 16:04:58 -05:00
Brad King 53da4b3028 libarchive: Declare mbstate_t and wcrtomb for Borland
The Borland C++ 5.81 runtime library provides wcrtomb but only the
C++ header <cwchar> actually declares the API.
2011-12-23 16:04:58 -05:00
Brad King ec48f10656 libarchive: Implement custom lseek for Borland
Restore Windows 64-bit lseek removed by upstream svn revision 3826
(Cast away __la_lseek(), use _lseeki64() instead, 2011-11-21).  We
need it on Borland.
2011-12-23 16:04:58 -05:00
Brad King 7dba0d668f libarchive: Port to OSF operating system
Make changes equivalent to those originally made by commits

  bd56626a (Fixes for the OSF operating system build, 2010-09-08)
  92c082b1 (Add a fix for the inline keyword on the osf os, 2010-09-10)

but based on the updated libarchive snapshot.
2011-12-23 16:04:58 -05:00
Brad King ffa6faa40d libarchive: Include cm_zlib.h to get zlib used by CMake 2011-12-22 10:38:37 -05:00
Brad King 25a5e7cbc1 libarchive: Build one static cmlibarchive for CMake
CMake needs only a single static libarchive library and not a shared
one.  Call it cmlibarchive to avoid confusion.
2011-12-22 10:38:36 -05:00
Brad King 1d7ea8b629 libarchive: Do not build subdirectories not in reduced snapshot
Remove add_subdirectory() calls for directories not included in the
reduced libarchive snapshot.  Remove options that configure settings in
the missing directories.
2011-12-22 10:38:34 -05:00
Brad King 3e5a80f063 Merge branch 'libarchive-upstream' into update-libarchive
Add Utilities/cmlibarchive using upstream libarchive 3.0.0-r3950
snapshot.
2011-12-20 11:54:25 -05:00
Brad King f6ac86d70e libarchive: Remove our copy to make room for new import 2011-12-20 11:47:27 -05:00
Brad King 8dfe74c358 libarchive: Fix ssize_t detection with mingwrt 3.20
This version of MinGW defines _SSIZE_T_ for ssize_t.  This patch is
based on upstream libarchive SVN commit 3649 (Fix build with mingwrt
3.20, 2011-08-27).

Inspired-by: Tim Kientzle <kientzle@freebsd.org>
2011-09-16 16:44:44 -04:00
Brad King 41b7b3efa4 libarchive: Define major/minor/makedev only where needed (#11648)
If neither MAJOR_IN_MKDEV or MAJOR_IN_SYSMACROS is defined then provide
our own implementation of these macros locally.  This complements the
change in commit cf5ad183 (Fix major() check for LSB 4.0, 2011-01-12).
This patch is based on upstream libarchive SVN commit 1553 (Shuffle the
major/minor/makedev support a bit; this should work on both Windows and
Haiku, 2009-10-31).

Inspired-by: Tim Kientzle <kientzle@freebsd.org>
2011-02-07 10:06:50 -05:00
David Cole 745671441d Merge topic 'fix_osf_build'
92c082b Add a fix for the inline keyword on the osf os.
bd56626 Fixes for the OSF operating system build.
2010-11-09 15:53:55 -05:00
Bill Hoffman 92c082b1c9 Add a fix for the inline keyword on the osf os. 2010-09-10 13:37:02 -04:00
Brad King b9c41813d2 libarchive: Fix purposeful crash
Dereferencing a 0-pointer is undefined behavior, not a deterministic
crash.  Use a 1-pointer instead.  This also avoids a warning by Clang
about the undefined behavior.
2010-09-10 09:00:48 -04:00
Bill Hoffman bd56626a4a Fixes for the OSF operating system build. 2010-09-08 14:50:14 -04:00
Brad King e87b6bbddb libarchive: Remove SCHILY dev,ino,nlink attributes (#11176)
At least one version of GNU tar (1.15.1 with Fedora patches) does not
recognize these attributes and exits with error.  Do not generate them.
Patch from upstream libarchive svn r2563.
2010-08-27 09:15:29 -04:00
Bill Hoffman aa1450bda1 Fix build on borland windows, by adding back typedef for pid_t. 2010-05-06 08:48:14 -04:00
Ruben Van Boxem 7883f952b0 Win64 fixes for mingw-w64 compilation 2010-05-05 17:13:21 -04:00
Bill Hoffman 1c13ced6eb Fix prototype to match header, for bug # 10543. 2010-05-05 09:34:57 -04:00
Bill Hoffman d6a6eadcfe For HP, preprocessor if on multiple lines not allowed, make a long line. 2010-05-04 15:52:00 -04:00
Bill Hoffman a18612429d Fixes for bug # 10543, build on older sunpro now works. 2010-05-04 14:52:22 -04:00
Bill Hoffman 38524ec8d1 Remove another c++ comment from the c code. 2010-04-27 21:27:26 -04:00
Bill Hoffman 2e188ef1ff Get rid of c++ style comments in C code. 2010-04-27 17:45:40 -04:00