PERFORCE change 142709 for review
Anselm Strauss
strauss at FreeBSD.org
Sun Jun 1 15:41:04 UTC 2008
http://perforce.freebsd.org/chv.cgi?CH=142709
Change 142709 by strauss at strauss_daredevil on 2008/06/01 15:40:31
parent integration
Affected files ...
.. //depot/projects/soc2008/strauss_libarchive/COPYING#4 integrate
.. //depot/projects/soc2008/strauss_libarchive/Makefile#4 delete
.. //depot/projects/soc2008/strauss_libarchive/Makefile.am#3 integrate
.. //depot/projects/soc2008/strauss_libarchive/Makefile.in#2 delete
.. //depot/projects/soc2008/strauss_libarchive/NEWS#2 integrate
.. //depot/projects/soc2008/strauss_libarchive/README#4 integrate
.. //depot/projects/soc2008/strauss_libarchive/aclocal.m4#2 delete
.. //depot/projects/soc2008/strauss_libarchive/autogen.sh#1 branch
.. //depot/projects/soc2008/strauss_libarchive/config.h.in#2 delete
.. //depot/projects/soc2008/strauss_libarchive/configure.ac#2 integrate
.. //depot/projects/soc2008/strauss_libarchive/cpio/Makefile#3 integrate
.. //depot/projects/soc2008/strauss_libarchive/cpio/bsdcpio.1#2 integrate
.. //depot/projects/soc2008/strauss_libarchive/cpio/cmdline.c#2 integrate
.. //depot/projects/soc2008/strauss_libarchive/cpio/config_freebsd.h#2 integrate
.. //depot/projects/soc2008/strauss_libarchive/cpio/cpio.c#2 integrate
.. //depot/projects/soc2008/strauss_libarchive/cpio/cpio.h#2 integrate
.. //depot/projects/soc2008/strauss_libarchive/cpio/cpio_platform.h#2 integrate
.. //depot/projects/soc2008/strauss_libarchive/cpio/err.c#2 integrate
.. //depot/projects/soc2008/strauss_libarchive/cpio/matching.c#2 integrate
.. //depot/projects/soc2008/strauss_libarchive/cpio/matching.h#2 integrate
.. //depot/projects/soc2008/strauss_libarchive/cpio/pathmatch.c#2 integrate
.. //depot/projects/soc2008/strauss_libarchive/cpio/pathmatch.h#2 integrate
.. //depot/projects/soc2008/strauss_libarchive/cpio/test/Makefile#2 integrate
.. //depot/projects/soc2008/strauss_libarchive/cpio/test/main.c#2 integrate
.. //depot/projects/soc2008/strauss_libarchive/cpio/test/test.h#2 integrate
.. //depot/projects/soc2008/strauss_libarchive/cpio/test/test_0.c#2 integrate
.. //depot/projects/soc2008/strauss_libarchive/cpio/test/test_basic.c#2 integrate
.. //depot/projects/soc2008/strauss_libarchive/cpio/test/test_format_newc.c#2 integrate
.. //depot/projects/soc2008/strauss_libarchive/cpio/test/test_gcpio_compat.c#2 integrate
.. //depot/projects/soc2008/strauss_libarchive/cpio/test/test_gcpio_compat_ref.bin.uu#2 integrate
.. //depot/projects/soc2008/strauss_libarchive/cpio/test/test_gcpio_compat_ref.crc.uu#2 integrate
.. //depot/projects/soc2008/strauss_libarchive/cpio/test/test_gcpio_compat_ref.newc.uu#2 integrate
.. //depot/projects/soc2008/strauss_libarchive/cpio/test/test_gcpio_compat_ref.ustar.uu#2 integrate
.. //depot/projects/soc2008/strauss_libarchive/cpio/test/test_option_B.c#2 integrate
.. //depot/projects/soc2008/strauss_libarchive/cpio/test/test_option_L.c#2 integrate
.. //depot/projects/soc2008/strauss_libarchive/cpio/test/test_option_a.c#2 integrate
.. //depot/projects/soc2008/strauss_libarchive/cpio/test/test_option_c.c#2 integrate
.. //depot/projects/soc2008/strauss_libarchive/cpio/test/test_option_d.c#2 integrate
.. //depot/projects/soc2008/strauss_libarchive/cpio/test/test_option_ell.c#2 integrate
.. //depot/projects/soc2008/strauss_libarchive/cpio/test/test_option_f.c#2 integrate
.. //depot/projects/soc2008/strauss_libarchive/cpio/test/test_option_f.cpio.uu#2 integrate
.. //depot/projects/soc2008/strauss_libarchive/cpio/test/test_option_help.c#2 integrate
.. //depot/projects/soc2008/strauss_libarchive/cpio/test/test_option_m.c#2 integrate
.. //depot/projects/soc2008/strauss_libarchive/cpio/test/test_option_m.cpio.uu#2 integrate
.. //depot/projects/soc2008/strauss_libarchive/cpio/test/test_option_t.c#2 integrate
.. //depot/projects/soc2008/strauss_libarchive/cpio/test/test_option_t.cpio.uu#2 integrate
.. //depot/projects/soc2008/strauss_libarchive/cpio/test/test_option_t.stdout.uu#2 integrate
.. //depot/projects/soc2008/strauss_libarchive/cpio/test/test_option_tv.stdout.uu#2 integrate
.. //depot/projects/soc2008/strauss_libarchive/cpio/test/test_option_u.c#2 integrate
.. //depot/projects/soc2008/strauss_libarchive/cpio/test/test_option_version.c#2 integrate
.. //depot/projects/soc2008/strauss_libarchive/cpio/test/test_option_y.c#2 integrate
.. //depot/projects/soc2008/strauss_libarchive/cpio/test/test_option_z.c#2 integrate
.. //depot/projects/soc2008/strauss_libarchive/cpio/test/test_owner_parse.c#2 integrate
.. //depot/projects/soc2008/strauss_libarchive/cpio/test/test_pathmatch.c#2 integrate
.. //depot/projects/soc2008/strauss_libarchive/libarchive/Makefile#3 integrate
.. //depot/projects/soc2008/strauss_libarchive/libarchive/archive.h#1 branch
.. //depot/projects/soc2008/strauss_libarchive/libarchive/archive.h.in#3 delete
.. //depot/projects/soc2008/strauss_libarchive/libarchive/archive_endian.h#2 integrate
.. //depot/projects/soc2008/strauss_libarchive/libarchive/archive_entry.3#3 integrate
.. //depot/projects/soc2008/strauss_libarchive/libarchive/archive_entry.c#3 integrate
.. //depot/projects/soc2008/strauss_libarchive/libarchive/archive_entry.h#3 integrate
.. //depot/projects/soc2008/strauss_libarchive/libarchive/archive_entry_link_resolver.c#3 integrate
.. //depot/projects/soc2008/strauss_libarchive/libarchive/archive_entry_private.h#3 integrate
.. //depot/projects/soc2008/strauss_libarchive/libarchive/archive_entry_strmode.c#2 integrate
.. //depot/projects/soc2008/strauss_libarchive/libarchive/archive_platform.h#3 integrate
.. //depot/projects/soc2008/strauss_libarchive/libarchive/archive_read.3#2 integrate
.. //depot/projects/soc2008/strauss_libarchive/libarchive/archive_read_data_into_fd.c#2 integrate
.. //depot/projects/soc2008/strauss_libarchive/libarchive/archive_read_extract.c#2 integrate
.. //depot/projects/soc2008/strauss_libarchive/libarchive/archive_read_support_compression_bzip2.c#2 integrate
.. //depot/projects/soc2008/strauss_libarchive/libarchive/archive_read_support_compression_program.c#2 integrate
.. //depot/projects/soc2008/strauss_libarchive/libarchive/archive_read_support_format_ar.c#2 integrate
.. //depot/projects/soc2008/strauss_libarchive/libarchive/archive_read_support_format_iso9660.c#3 integrate
.. //depot/projects/soc2008/strauss_libarchive/libarchive/archive_read_support_format_mtree.c#2 integrate
.. //depot/projects/soc2008/strauss_libarchive/libarchive/archive_read_support_format_tar.c#3 integrate
.. //depot/projects/soc2008/strauss_libarchive/libarchive/archive_read_support_format_zip.c#3 integrate
.. //depot/projects/soc2008/strauss_libarchive/libarchive/archive_string.c#3 integrate
.. //depot/projects/soc2008/strauss_libarchive/libarchive/archive_string.h#3 integrate
.. //depot/projects/soc2008/strauss_libarchive/libarchive/archive_util.c#3 integrate
.. //depot/projects/soc2008/strauss_libarchive/libarchive/archive_windows.c#1 branch
.. //depot/projects/soc2008/strauss_libarchive/libarchive/archive_windows.h#1 branch
.. //depot/projects/soc2008/strauss_libarchive/libarchive/archive_write.3#2 integrate
.. //depot/projects/soc2008/strauss_libarchive/libarchive/archive_write_disk.3#2 integrate
.. //depot/projects/soc2008/strauss_libarchive/libarchive/archive_write_disk.c#3 integrate
.. //depot/projects/soc2008/strauss_libarchive/libarchive/archive_write_set_compression_program.c#2 integrate
.. //depot/projects/soc2008/strauss_libarchive/libarchive/archive_write_set_format_ar.c#2 integrate
.. //depot/projects/soc2008/strauss_libarchive/libarchive/archive_write_set_format_pax.c#3 integrate
.. //depot/projects/soc2008/strauss_libarchive/libarchive/archive_write_set_format_ustar.c#3 integrate
.. //depot/projects/soc2008/strauss_libarchive/libarchive/config_freebsd.h#2 integrate
.. //depot/projects/soc2008/strauss_libarchive/libarchive/config_windows.h#1 branch
.. //depot/projects/soc2008/strauss_libarchive/libarchive/cpio.5#3 integrate
.. //depot/projects/soc2008/strauss_libarchive/libarchive/filter_fork.c#2 integrate
.. //depot/projects/soc2008/strauss_libarchive/libarchive/libarchive-formats.5#2 integrate
.. //depot/projects/soc2008/strauss_libarchive/libarchive/mtree.5#3 integrate
.. //depot/projects/soc2008/strauss_libarchive/libarchive/tar.5#3 integrate
.. //depot/projects/soc2008/strauss_libarchive/libarchive/test/Makefile#3 integrate
.. //depot/projects/soc2008/strauss_libarchive/libarchive/test/main.c#3 integrate
.. //depot/projects/soc2008/strauss_libarchive/libarchive/test/test_acl_pax.c#3 integrate
.. //depot/projects/soc2008/strauss_libarchive/libarchive/test/test_archive_api_feature.c#3 integrate
.. //depot/projects/soc2008/strauss_libarchive/libarchive/test/test_entry.c#3 integrate
.. //depot/projects/soc2008/strauss_libarchive/libarchive/test/test_link_resolver.c#1 branch
.. //depot/projects/soc2008/strauss_libarchive/libarchive/test/test_pax_filename_encoding.c#3 integrate
.. //depot/projects/soc2008/strauss_libarchive/libarchive/test/test_read_format_mtree.c#2 integrate
.. //depot/projects/soc2008/strauss_libarchive/libarchive/test/test_read_format_tar_empty_filename.c#1 branch
.. //depot/projects/soc2008/strauss_libarchive/libarchive/test/test_read_format_tar_empty_filename.tar.uu#1 branch
.. //depot/projects/soc2008/strauss_libarchive/libarchive/test/test_tar_filenames.c#3 integrate
.. //depot/projects/soc2008/strauss_libarchive/libarchive/test/test_tar_large.c#3 integrate
.. //depot/projects/soc2008/strauss_libarchive/libarchive/test/test_ustar_filenames.c#1 branch
.. //depot/projects/soc2008/strauss_libarchive/libarchive/test/test_write_disk_hardlink.c#2 integrate
.. //depot/projects/soc2008/strauss_libarchive/libarchive/test/test_write_format_ar.c#3 integrate
.. //depot/projects/soc2008/strauss_libarchive/libarchive/test/test_write_format_tar_ustar.c#1 branch
.. //depot/projects/soc2008/strauss_libarchive/release.sh#1 branch
.. //depot/projects/soc2008/strauss_libarchive/tar/Makefile#3 integrate
.. //depot/projects/soc2008/strauss_libarchive/tar/bsdtar.1#2 integrate
.. //depot/projects/soc2008/strauss_libarchive/tar/bsdtar.c#3 integrate
.. //depot/projects/soc2008/strauss_libarchive/tar/bsdtar.h#2 integrate
.. //depot/projects/soc2008/strauss_libarchive/tar/config_freebsd.h#2 integrate
.. //depot/projects/soc2008/strauss_libarchive/tar/matching.c#2 integrate
.. //depot/projects/soc2008/strauss_libarchive/tar/read.c#2 integrate
.. //depot/projects/soc2008/strauss_libarchive/tar/siginfo.c#1 branch
.. //depot/projects/soc2008/strauss_libarchive/tar/subst.c#1 branch
.. //depot/projects/soc2008/strauss_libarchive/tar/test/Makefile#2 integrate
.. //depot/projects/soc2008/strauss_libarchive/tar/test/main.c#2 integrate
.. //depot/projects/soc2008/strauss_libarchive/tar/test/test.h#2 integrate
.. //depot/projects/soc2008/strauss_libarchive/tar/test/test_0.c#2 integrate
.. //depot/projects/soc2008/strauss_libarchive/tar/test/test_basic.c#2 integrate
.. //depot/projects/soc2008/strauss_libarchive/tar/test/test_copy.c#2 integrate
.. //depot/projects/soc2008/strauss_libarchive/tar/test/test_getdate.c#2 integrate
.. //depot/projects/soc2008/strauss_libarchive/tar/test/test_help.c#2 integrate
.. //depot/projects/soc2008/strauss_libarchive/tar/test/test_option_T.c#1 branch
.. //depot/projects/soc2008/strauss_libarchive/tar/test/test_patterns.c#1 branch
.. //depot/projects/soc2008/strauss_libarchive/tar/test/test_stdio.c#2 integrate
.. //depot/projects/soc2008/strauss_libarchive/tar/test/test_version.c#2 integrate
.. //depot/projects/soc2008/strauss_libarchive/tar/util.c#2 integrate
.. //depot/projects/soc2008/strauss_libarchive/tar/write.c#2 integrate
.. //depot/projects/soc2008/strauss_libarchive/upload.sh#2 delete
.. //depot/projects/soc2008/strauss_libarchive/version#2 integrate
.. //depot/projects/soc2008/strauss_libarchive/windows/mvcpp.nt#1 branch
.. //depot/projects/soc2008/strauss_libarchive/windows/wccpp.nt#1 branch
Differences ...
==== //depot/projects/soc2008/strauss_libarchive/COPYING#4 (text+ko) ====
@@ -1,7 +1,41 @@
-All of the C source code and documentation in this package is subject
-to the following:
+The libarchive distribution as a whole is Copyright by Tim Kientzle
+and is subject to the copyright notice reproduced at the bottom of
+this file.
+
+Each individual file in this distribution should have a clear
+copyright/licensing statement at the beginning of the file. If any do
+not, please let me know and I will rectify it. The following is
+intended to summarize the copyright status of the individual files;
+the actual statements in the files are controlling.
+
+* Except as listed below, all C sources (including .c and .h files)
+ and documentation files are subject to the copyright notice reproduced
+ at the bottom of this file.
+
+* The following source files are also subject in whole or in part to
+ a 3-clause UC Regents copyright; please read the individual source
+ files for details:
+ libarchive/archive_entry.c
+ libarchive/archive_read_support_compression_compress.c
+ libarchive/archive_write_set_compression_compress.c
+ libarchive/mtree.5
+ tar/matching.c
+
+* The following source files are in the public domain:
+ tar/getdate.y
+
+* The build files---including Makefiles, configure scripts,
+ and auxiliary scripts used as part of the compile process---have
+ widely varying licensing terms. Please check individual files before
+ distributing them to see if those restrictions apply to you.
+
+I intend for all new source code to use the license below and hope over
+time to replace code with other licenses with new implementations that
+do use the license below. The varying licensing of the build scripts
+seems to be an unavoidable mess.
+
-Copyright (c) 2003-2006 Tim Kientzle
+Copyright (c) 2003-2008 <author(s)>
All rights reserved.
Redistribution and use in source and binary forms, with or without
==== //depot/projects/soc2008/strauss_libarchive/Makefile.am#3 (text+ko) ====
@@ -25,8 +25,9 @@
#
EXTRA_DIST= version \
contrib \
+ doc \
examples \
- doc \
+ windows \
$(libarchive_EXTRA_DIST) \
$(libarchive_test_EXTRA_DIST) \
$(bsdtar_EXTRA_DIST) \
@@ -43,7 +44,7 @@
rm -f `find $(distdir) -name '*.out'`
rm -f `find $(distdir) -name '*.core'`
-rm -f $(distdir)/*/Makefile $(distdir)/*/*/Makefile
- cd $(distdir)/doc && ./update.sh
+ cd $(distdir)/doc && /bin/sh update.sh
#
# Extra rules for cleanup
@@ -69,10 +70,7 @@
#
#
-include_HEADERS= libarchive/archive_entry.h
-# Note: archive.h is built from archive.h.in, so don't
-# include archive.h in the distfile, but do install it.
-nodist_include_HEADERS= libarchive/archive.h
+include_HEADERS= libarchive/archive.h libarchive/archive_entry.h
libarchive_la_SOURCES= \
libarchive/archive_check_magic.c \
@@ -140,8 +138,6 @@
libarchive/filter_fork.c \
libarchive/filter_fork.h
-# archive.h ends up in the build directory, so make sure we can find it.
-libarchive_la_CPPFLAGS= -I$(top_builddir)/libarchive
# cygwin barfs without -no-undefined; I don't know what it does or
# whether it helps or hurts other platforms...
libarchive_la_LDFLAGS= -no-undefined -version-info $(ARCHIVE_LIBTOOL_VERSION)
@@ -161,8 +157,10 @@
libarchive/tar.5
# Additional libarchive files to include in the distribution
-libarchive_EXTRA_DIST= \
- libarchive/test/list.h \
+libarchive_EXTRA_DIST= \
+ libarchive/test/list.h \
+ libarchive/archive_windows.c \
+ libarchive/archive_windows.h \
$(libarchive_man_MANS)
#
@@ -272,14 +270,14 @@
tar/getdate.y \
tar/matching.c \
tar/read.c \
+ tar/siginfo.c \
+ tar/subst.c \
tar/tree.c \
tar/tree.h \
tar/util.c \
tar/write.c
-bsdtar_DEPENDENCIES= libarchive.la \
- libarchive/archive_entry.h \
- libarchive/archive.h
+bsdtar_DEPENDENCIES= libarchive.la
if STATIC_BSDTAR
bsdtar_static= -static
@@ -314,6 +312,8 @@
tar/test/test_copy.c \
tar/test/test_getdate.c \
tar/test/test_help.c \
+ tar/test/test_option_T.c \
+ tar/test/test_patterns.c \
tar/test/test_stdio.c \
tar/test/test_version.c
@@ -348,9 +348,7 @@
cpio/pathmatch.c \
cpio/pathmatch.h
-bsdcpio_DEPENDENCIES = libarchive.la \
- libarchive/archive_entry.h \
- libarchive/archive.h
+bsdcpio_DEPENDENCIES = libarchive.la
if STATIC_BSDCPIO
==== //depot/projects/soc2008/strauss_libarchive/NEWS#2 (text+ko) ====
@@ -1,4 +1,54 @@
+May 25, 2008: libarchive 2.5.4b released
+May 21, 2008: Joerg Sonnenberger: fix bsdtar hardlink handling for newc format
+
+May 21, 2008: More progress on Windows building. Thanks to "Scott"
+ for the Windows makefiles, thanks to Kees Zeelenberg for
+ code contributions.
+
+May 21, 2008: Fix a number of non-exploitable integer and buffer overflows,
+ thanks to David Remahl at Apple for pointing these out.
+
+May 21, 2008: Colin Percival: SIGINFO or SIGUSR1 to bsdtar prints progress info
+
+May 16, 2008: bsdtar's test harness no longer depends on file ordering.
+ This was causing spurious test failures on a lot of systems.
+ Thanks to Bernhard R. Link for the diagnosis.
+
+May 14, 2008: Joerg Sonnenberger: -s substitution support for bsdtar
+
+May 13, 2008: Joerg Sonnenberger: Many mtree improvements
+
+May 11, 2008: Joerg Sonnenberger: fix hardlink extraction when
+ hardlinks have different permissions from original file
+
+April 30, 2008: Primary libarchive work has been moved into the FreeBSD
+ project's Perforce repository: http://perforce.freebsd.org/
+ The libarchive project can be browsed at
+ //depot/user/kientzle/libarchive-portable
+ Direct link: http://preview.tinyurl.com/46mdgr
+
+May 04, 2008: libarchive 2.5.3b released
+ * libarchive: Several fixes to link resolver to address bsdcpio crashes
+ * bsdcpio: -p hardlink handling fixes
+ * tar/pax: Ensure ustar dirnames end in '/'; be more careful about
+ measuring filenames when deciding what pathname fields to use
+ * libarchive: Mark which entry strings are set; be accurate about
+ distinguishing empty strings ("") from unset ones (NULL)
+ * tar: Don't crash reading entries with empty filenames
+ * libarchive_test, bsdtar_test, bsdcpio_test: Better detaults:
+ run all tests, delete temp dirs, summarize repeated failures
+ * -no-undefined to libtool for Cygwin
+ * libarchive_test: Skip large file tests on systems with 32-bit off_t
+ * iso9660: Don't bother trying to find the body of an empty file;
+ this works around strange behavior from some ISO9660 writers
+ * tar: allow -r -T to be used together
+ * tar: allow --format with -r or -u
+ * libarchive: Don't build archive.h
+
+May 04, 2008: Simplified building: archive.h is no longer constructed
+ This may require additional #if conditionals on some platforms.
+
Mar 30, 2008: libarchive 2.5.1b released
Mar 15, 2008: libarchive 2.5.0b released
==== //depot/projects/soc2008/strauss_libarchive/README#4 (text+ko) ====
@@ -69,6 +69,7 @@
The library can write:
* gzip compression
* bzip2 compression
+ * compress/LZW compression
* POSIX ustar
* POSIX pax interchange format
* "restricted" pax format, which will create ustar archives except for
==== //depot/projects/soc2008/strauss_libarchive/configure.ac#2 (text+ko) ====
@@ -4,13 +4,13 @@
dnl In particular, this allows the version macro to be used in AC_INIT
dnl These first two version numbers are updated automatically on each release.
-m4_define([LIBARCHIVE_VERSION_S],[2.5.1b])
-m4_define([LIBARCHIVE_VERSION_N],[2005001])
+m4_define([LIBARCHIVE_VERSION_S],[2.5.4b])
+m4_define([LIBARCHIVE_VERSION_N],[2005004])
dnl bsdtar versioning tracks libarchive
m4_define([BSDTAR_VERSION_S],LIBARCHIVE_VERSION_S())
dnl bsdcpio is still versioning separately
-m4_define([BSDCPIO_VERSION_S],[0.9.9a])
+m4_define([BSDCPIO_VERSION_S],[0.9.10a])
#
# Now starts the "real" configure script.
@@ -63,7 +63,6 @@
AC_CONFIG_HEADERS([config.h])
AC_CONFIG_FILES([Makefile])
-AC_CONFIG_FILES([libarchive/archive.h])
# Checks for programs.
AC_PROG_CC
@@ -174,7 +173,7 @@
AC_CHECK_HEADER(inttypes.h,
[AC_SUBST(ARCHIVE_H_INCLUDE_INTTYPES_H,['#include <inttypes.h> /* For int64_t */'])],
[AC_SUBST(ARCHIVE_H_INCLUDE_INTTYPES_H,[''])])
-AC_CHECK_HEADERS([locale.h paths.h poll.h pwd.h stdarg.h])
+AC_CHECK_HEADERS([locale.h paths.h poll.h pwd.h regex.h stdarg.h])
AC_CHECK_HEADERS([stdint.h stdlib.h string.h sys/acl.h sys/ioctl.h])
AC_CHECK_HEADERS([sys/param.h sys/poll.h sys/select.h sys/time.h sys/utime.h])
AC_CHECK_HEADERS([time.h unistd.h utime.h wchar.h zlib.h])
@@ -240,13 +239,13 @@
AC_FUNC_STRERROR_R
AC_FUNC_STRFTIME
AC_FUNC_VPRINTF
-AC_CHECK_FUNCS([chflags chown fchdir fchflags fchmod fchown fstat])
-AC_CHECK_FUNCS([ftruncate futimes geteuid getopt_long getpid])
+AC_CHECK_FUNCS([chflags chown fchdir fchflags fchmod fchown fcntl fork])
+AC_CHECK_FUNCS([fstat ftruncate futimes geteuid getopt_long getpid])
AC_CHECK_FUNCS([lchflags lchmod lchown])
AC_CHECK_FUNCS([lutimes memmove memset mkdir mkfifo mknod])
-AC_CHECK_FUNCS([nl_langinfo poll select setenv setlocale])
+AC_CHECK_FUNCS([nl_langinfo pipe poll select setenv setlocale])
AC_CHECK_FUNCS([strchr strdup strerror strrchr timegm])
-AC_CHECK_FUNCS([tzset unsetenv utime utimes])
+AC_CHECK_FUNCS([tzset unsetenv utime utimes vfork])
AC_CHECK_FUNCS([wcscpy wcslen wmemcmp wmemcpy])
# FreeBSD's nl_langinfo supports an option to specify whether the
==== //depot/projects/soc2008/strauss_libarchive/cpio/Makefile#3 (text+ko) ====
@@ -1,7 +1,7 @@
# $FreeBSD$
PROG= bsdcpio
-BSDCPIO_VERSION_STRING=0.9.9a
+BSDCPIO_VERSION_STRING=0.9.10a
SRCS= cpio.c cmdline.c err.c matching.c pathmatch.c
WARNS?= 6
DPADD= ${LIBARCHIVE} ${LIBZ} ${LIBBZ2}
==== //depot/projects/soc2008/strauss_libarchive/cpio/bsdcpio.1#2 (text+ko) ====
==== //depot/projects/soc2008/strauss_libarchive/cpio/cmdline.c#2 (text+ko) ====
@@ -66,7 +66,7 @@
*/
-static const char *cpio_opts = "AaBC:F:O:cdE:f:H:hijLlmopR:rtuvW:yZz";
+static const char *cpio_opts = "0AaBC:F:O:cdE:f:H:hijLlmopR:rtuvW:yZz";
/*
* On systems that lack getopt_long, long options can be specified
@@ -86,6 +86,7 @@
{ "format", required_argument, NULL, 'H' },
{ "help", no_argument, NULL, 'h' },
{ "insecure", no_argument, NULL, OPTION_INSECURE },
+ { "null", no_argument, NULL, '0' },
{ "owner", required_argument, NULL, 'R' },
{ "quiet", no_argument, NULL, OPTION_QUIET },
{ "verbose", no_argument, NULL, 'v' },
==== //depot/projects/soc2008/strauss_libarchive/cpio/config_freebsd.h#2 (text+ko) ====
==== //depot/projects/soc2008/strauss_libarchive/cpio/cpio.c#2 (text+ko) ====
@@ -101,6 +101,7 @@
cpio->gid_override = -1;
cpio->argv = argv;
cpio->argc = argc;
+ cpio->line_separator = '\n';
cpio->mode = '\0';
cpio->verbose = 0;
cpio->compress = '\0';
@@ -116,6 +117,9 @@
while ((opt = cpio_getopt(cpio)) != -1) {
switch (opt) {
+ case '0': /* GNU convention: --null, -0 */
+ cpio->line_separator = '\0';
+ break;
case 'A': /* NetBSD/OpenBSD */
cpio->option_append = 1;
break;
@@ -341,8 +345,10 @@
static void
mode_out(struct cpio *cpio)
{
+ unsigned long blocks;
struct archive_entry *entry, *spare;
- unsigned long blocks;
+ struct line_reader *lr;
+ const char *p;
int r;
if (cpio->option_append)
@@ -375,7 +381,10 @@
r = archive_write_open_file(cpio->archive, cpio->filename);
if (r != ARCHIVE_OK)
cpio_errc(1, 0, archive_error_string(cpio->archive));
- process_lines(cpio, "-", file_to_archive);
+ lr = process_lines_init("-", cpio->line_separator);
+ while ((p = process_lines_next(lr)) != NULL)
+ file_to_archive(cpio, p);
+ process_lines_free(lr);
/*
* The hardlink detection may have queued up a couple of entries
@@ -793,6 +802,8 @@
static void
mode_pass(struct cpio *cpio, const char *destdir)
{
+ struct line_reader *lr;
+ const char *p;
int r;
/* Ensure target dir has a trailing '/' to simplify path surgery. */
@@ -809,7 +820,10 @@
cpio_errc(1, 0, archive_error_string(cpio->archive));
cpio->linkresolver = archive_entry_linkresolver_new();
archive_write_disk_set_standard_lookup(cpio->archive);
- process_lines(cpio, "-", file_to_archive);
+ lr = process_lines_init("-", cpio->line_separator);
+ while ((p = process_lines_next(lr)) != NULL)
+ file_to_archive(cpio, p);
+ process_lines_free(lr);
archive_entry_linkresolver_free(cpio->linkresolver);
r = archive_write_close(cpio->archive);
@@ -868,79 +882,119 @@
* terminated with newlines.
*
* This uses a self-sizing buffer to handle arbitrarily-long lines.
- * If the "process" function returns non-zero for any line, this
- * function will return non-zero after attempting to process all
- * remaining lines.
*/
-int
-process_lines(struct cpio *cpio, const char *pathname,
- int (*process)(struct cpio *, const char *))
-{
+struct line_reader {
FILE *f;
char *buff, *buff_end, *line_start, *line_end, *p;
- size_t buff_length, bytes_read, bytes_wanted;
+ char *pathname;
+ size_t buff_length;
int separator;
int ret;
+};
- separator = cpio->option_null ? '\0' : '\n';
- ret = 0;
+struct line_reader *
+process_lines_init(const char *pathname, char separator)
+{
+ struct line_reader *lr;
+
+ lr = calloc(1, sizeof(*lr));
+ if (lr == NULL)
+ cpio_errc(1, ENOMEM, "Can't open %s", pathname);
+
+ lr->separator = separator;
+ lr->pathname = strdup(pathname);
if (strcmp(pathname, "-") == 0)
- f = stdin;
+ lr->f = stdin;
else
- f = fopen(pathname, "r");
- if (f == NULL)
+ lr->f = fopen(pathname, "r");
+ if (lr->f == NULL)
cpio_errc(1, errno, "Couldn't open %s", pathname);
- buff_length = 8192;
- buff = malloc(buff_length);
- if (buff == NULL)
+ lr->buff_length = 8192;
+ lr->buff = malloc(lr->buff_length);
+ if (lr->buff == NULL)
cpio_errc(1, ENOMEM, "Can't read %s", pathname);
- line_start = line_end = buff_end = buff;
+ lr->line_start = lr->line_end = lr->buff_end = lr->buff;
+
+ return (lr);
+}
+
+const char *
+process_lines_next(struct line_reader *lr)
+{
+ size_t bytes_wanted, bytes_read, new_buff_size;
+ char *line_start, *p;
+
for (;;) {
- /* Get some more data into the buffer. */
- bytes_wanted = buff + buff_length - buff_end;
- bytes_read = fread(buff_end, 1, bytes_wanted, f);
- buff_end += bytes_read;
- /* Process all complete lines in the buffer. */
- while (line_end < buff_end) {
- if (*line_end == separator) {
- *line_end = '\0';
- if ((*process)(cpio, line_start) != 0)
- ret = -1;
- line_start = line_end + 1;
- line_end = line_start;
+ /* If there's a line in the buffer, return it immediately. */
+ while (lr->line_end < lr->buff_end) {
+ if (*lr->line_end == lr->separator) {
+ *lr->line_end = '\0';
+ line_start = lr->line_start;
+ lr->line_start = lr->line_end + 1;
+ lr->line_end = lr->line_start;
+ return (line_start);
} else
- line_end++;
+ lr->line_end++;
+ }
+
+ /* If we're at end-of-file, process the final data. */
+ if (lr->f == NULL) {
+ /* If there's more text, return one last line. */
+ if (lr->line_end > lr->line_start) {
+ *lr->line_end = '\0';
+ line_start = lr->line_start;
+ lr->line_start = lr->line_end + 1;
+ lr->line_end = lr->line_start;
+ return (line_start);
+ }
+ /* Otherwise, we're done. */
+ return (NULL);
}
- if (feof(f))
- break;
- if (ferror(f))
- cpio_errc(1, errno, "Can't read %s", pathname);
- if (line_start > buff) {
+
+ /* Buffer only has part of a line. */
+ if (lr->line_start > lr->buff) {
/* Move a leftover fractional line to the beginning. */
- memmove(buff, line_start, buff_end - line_start);
- buff_end -= line_start - buff;
- line_end -= line_start - buff;
- line_start = buff;
+ memmove(lr->buff, lr->line_start,
+ lr->buff_end - lr->line_start);
+ lr->buff_end -= lr->line_start - lr->buff;
+ lr->line_end -= lr->line_start - lr->buff;
+ lr->line_start = lr->buff;
} else {
/* Line is too big; enlarge the buffer. */
- p = realloc(buff, buff_length *= 2);
+ new_buff_size = lr->buff_length * 2;
+ if (new_buff_size <= lr->buff_length)
+ cpio_errc(1, ENOMEM,
+ "Line too long in %s", lr->pathname);
+ lr->buff_length = new_buff_size;
+ p = realloc(lr->buff, new_buff_size);
if (p == NULL)
cpio_errc(1, ENOMEM,
- "Line too long in %s", pathname);
- buff_end = p + (buff_end - buff);
- line_end = p + (line_end - buff);
- line_start = buff = p;
+ "Line too long in %s", lr->pathname);
+ lr->buff_end = p + (lr->buff_end - lr->buff);
+ lr->line_end = p + (lr->line_end - lr->buff);
+ lr->line_start = lr->buff = p;
+ }
+
+ /* Get some more data into the buffer. */
+ bytes_wanted = lr->buff + lr->buff_length - lr->buff_end;
+ bytes_read = fread(lr->buff_end, 1, bytes_wanted, lr->f);
+ lr->buff_end += bytes_read;
+
+ if (ferror(lr->f))
+ cpio_errc(1, errno, "Can't read %s", lr->pathname);
+ if (feof(lr->f)) {
+ if (lr->f != stdin)
+ fclose(lr->f);
+ lr->f = NULL;
}
}
- /* At end-of-file, handle the final line. */
- if (line_end > line_start) {
- *line_end = '\0';
- if ((*process)(cpio, line_start) != 0)
- ret = -1;
- }
- free(buff);
- if (f != stdin)
- fclose(f);
- return (ret);
+}
+
+void
+process_lines_free(struct line_reader *lr)
+{
+ free(lr->buff);
+ free(lr->pathname);
+ free(lr);
}
==== //depot/projects/soc2008/strauss_libarchive/cpio/cpio.h#2 (text+ko) ====
@@ -53,12 +53,12 @@
int extract_flags; /* Flags for extract operation */
char symlink_mode; /* H or L, per BSD conventions */
const char *compress_program;
+ char line_separator; /* --null ? '\0' : '\n' */
int option_append; /* -A, only relevant for -o */
int option_atime_restore; /* -a */
int option_follow_links; /* -L */
int option_link; /* -l */
int option_list; /* -t */
- int option_null; /* -0 --null */
int option_rename; /* -r */
char *destdir;
size_t pass_destpath_alloc;
@@ -98,9 +98,13 @@
OPTION_VERSION
};
+struct line_reader;
+
+struct line_reader *process_lines_init(const char *, char separator);
+const char *process_lines_next(struct line_reader *);
+void process_lines_free(struct line_reader *);
+
int cpio_getopt(struct cpio *cpio);
-int process_lines(struct cpio *cpio, const char *pathname,
- int (*process)(struct cpio *, const char *));
int include_from_file(struct cpio *, const char *);
#endif
==== //depot/projects/soc2008/strauss_libarchive/cpio/cpio_platform.h#2 (text+ko) ====
==== //depot/projects/soc2008/strauss_libarchive/cpio/err.c#2 (text+ko) ====
==== //depot/projects/soc2008/strauss_libarchive/cpio/matching.c#2 (text+ko) ====
@@ -107,7 +107,16 @@
int
include_from_file(struct cpio *cpio, const char *pathname)
{
- return (process_lines(cpio, pathname, &include));
+ struct line_reader *lr;
+ const char *p;
+ int ret = 0;
+
+ lr = process_lines_init(pathname, '\n');
+ while ((p = process_lines_next(lr)) != NULL)
+ if (include(cpio, p) != 0)
+ ret = -1;
+ process_lines_free(lr);
+ return (ret);
}
static void
==== //depot/projects/soc2008/strauss_libarchive/cpio/matching.h#2 (text+ko) ====
==== //depot/projects/soc2008/strauss_libarchive/cpio/pathmatch.c#2 (text+ko) ====
==== //depot/projects/soc2008/strauss_libarchive/cpio/pathmatch.h#2 (text+ko) ====
==== //depot/projects/soc2008/strauss_libarchive/cpio/test/Makefile#2 (text+ko) ====
==== //depot/projects/soc2008/strauss_libarchive/cpio/test/main.c#2 (text+ko) ====
==== //depot/projects/soc2008/strauss_libarchive/cpio/test/test.h#2 (text+ko) ====
==== //depot/projects/soc2008/strauss_libarchive/cpio/test/test_0.c#2 (text+ko) ====
==== //depot/projects/soc2008/strauss_libarchive/cpio/test/test_basic.c#2 (text+ko) ====
==== //depot/projects/soc2008/strauss_libarchive/cpio/test/test_format_newc.c#2 (text+ko) ====
@@ -66,7 +66,7 @@
int fd, list;
int r;
int devmajor, devminor, ino, gid;
- time_t t, now;
+ time_t t, t2, now;
char *p, *e;
size_t s;
mode_t oldmask;
@@ -159,7 +159,9 @@
assertEqualInt(from_hex(e + 22, 8), getuid()); /* uid */
assertEqualInt(gid, from_hex(e + 30, 8)); /* gid */
assertEqualMem(e + 38, "00000001", 8); /* nlink */
- assertEqualInt(t, from_hex(e + 46, 8)); /* mtime */
+ t2 = from_hex(e + 46, 8); /* mtime */
+ failure("First entry created at t=0x%08x this entry created at t2=0x%08x", t, t2);
+ assert(t2 == t || t2 == t + 1); /* Almost same as first entry. */
assertEqualMem(e + 54, "00000005", 8); /* File size */
assertEqualInt(devmajor, from_hex(e + 62, 8)); /* devmajor */
assertEqualInt(devminor, from_hex(e + 70, 8)); /* devminor */
@@ -179,7 +181,9 @@
assertEqualInt(from_hex(e + 22, 8), getuid()); /* uid */
assertEqualInt(gid, from_hex(e + 30, 8)); /* gid */
assertEqualMem(e + 38, "00000002", 8); /* nlink */
- assertEqualInt(t, from_hex(e + 46, 8)); /* mtime */
+ t2 = from_hex(e + 46, 8); /* mtime */
+ failure("First entry created at t=0x%08x this entry created at t2=0x%08x", t, t2);
+ assert(t2 == t || t2 == t + 1); /* Almost same as first entry. */
assertEqualMem(e + 54, "00000000", 8); /* File size */
assertEqualInt(devmajor, from_hex(e + 62, 8)); /* devmajor */
assertEqualInt(devminor, from_hex(e + 70, 8)); /* devminor */
@@ -203,7 +207,9 @@
assertEqualInt(from_hex(e + 22, 8), getuid()); /* uid */
assertEqualInt(gid, from_hex(e + 30, 8)); /* gid */
assertEqualMem(e + 38, "00000003", 8); /* nlink */
- assertEqualInt(t, from_hex(e + 46, 8)); /* mtime */
+ t2 = from_hex(e + 46, 8); /* mtime */
+ failure("First entry created at t=0x%08x this entry created at t2=0x%08x", t, t2);
+ assert(t2 == t || t2 == t + 1); /* Almost same as first entry. */
assertEqualInt(10, from_hex(e + 54, 8)); /* File size */
assertEqualInt(devmajor, from_hex(e + 62, 8)); /* devmajor */
assertEqualInt(devminor, from_hex(e + 70, 8)); /* devminor */
==== //depot/projects/soc2008/strauss_libarchive/cpio/test/test_gcpio_compat.c#2 (text+ko) ====
==== //depot/projects/soc2008/strauss_libarchive/cpio/test/test_gcpio_compat_ref.bin.uu#2 (text+ko) ====
==== //depot/projects/soc2008/strauss_libarchive/cpio/test/test_gcpio_compat_ref.crc.uu#2 (text+ko) ====
==== //depot/projects/soc2008/strauss_libarchive/cpio/test/test_gcpio_compat_ref.newc.uu#2 (text+ko) ====
==== //depot/projects/soc2008/strauss_libarchive/cpio/test/test_gcpio_compat_ref.ustar.uu#2 (text+ko) ====
==== //depot/projects/soc2008/strauss_libarchive/cpio/test/test_option_B.c#2 (text+ko) ====
==== //depot/projects/soc2008/strauss_libarchive/cpio/test/test_option_L.c#2 (text+ko) ====
==== //depot/projects/soc2008/strauss_libarchive/cpio/test/test_option_a.c#2 (text+ko) ====
==== //depot/projects/soc2008/strauss_libarchive/cpio/test/test_option_c.c#2 (text+ko) ====
==== //depot/projects/soc2008/strauss_libarchive/cpio/test/test_option_d.c#2 (text+ko) ====
==== //depot/projects/soc2008/strauss_libarchive/cpio/test/test_option_ell.c#2 (text+ko) ====
==== //depot/projects/soc2008/strauss_libarchive/cpio/test/test_option_f.c#2 (text+ko) ====
==== //depot/projects/soc2008/strauss_libarchive/cpio/test/test_option_f.cpio.uu#2 (text+ko) ====
==== //depot/projects/soc2008/strauss_libarchive/cpio/test/test_option_help.c#2 (text+ko) ====
==== //depot/projects/soc2008/strauss_libarchive/cpio/test/test_option_m.c#2 (text+ko) ====
==== //depot/projects/soc2008/strauss_libarchive/cpio/test/test_option_m.cpio.uu#2 (text+ko) ====
==== //depot/projects/soc2008/strauss_libarchive/cpio/test/test_option_t.c#2 (text+ko) ====
==== //depot/projects/soc2008/strauss_libarchive/cpio/test/test_option_t.cpio.uu#2 (text+ko) ====
==== //depot/projects/soc2008/strauss_libarchive/cpio/test/test_option_t.stdout.uu#2 (text+ko) ====
==== //depot/projects/soc2008/strauss_libarchive/cpio/test/test_option_tv.stdout.uu#2 (text+ko) ====
==== //depot/projects/soc2008/strauss_libarchive/cpio/test/test_option_u.c#2 (text+ko) ====
==== //depot/projects/soc2008/strauss_libarchive/cpio/test/test_option_version.c#2 (text+ko) ====
==== //depot/projects/soc2008/strauss_libarchive/cpio/test/test_option_y.c#2 (text+ko) ====
==== //depot/projects/soc2008/strauss_libarchive/cpio/test/test_option_z.c#2 (text+ko) ====
==== //depot/projects/soc2008/strauss_libarchive/cpio/test/test_owner_parse.c#2 (text+ko) ====
==== //depot/projects/soc2008/strauss_libarchive/cpio/test/test_pathmatch.c#2 (text+ko) ====
==== //depot/projects/soc2008/strauss_libarchive/libarchive/Makefile#3 (text+ko) ====
@@ -1,22 +1,11 @@
-# $FreeBSD: src/lib/libarchive/Makefile,v 1.83 2008/03/21 11:10:20 kaiw Exp $
+# $FreeBSD: src/lib/libarchive/Makefile,v 1.84 2008/05/26 17:00:22 kientzle Exp $
LIB= archive
DPADD= ${LIBBZ2} ${LIBZ}
LDADD= -lbz2 -lz
-# The libarchive version stamp.
-# Version is three numbers:
-# Major: Bumped ONLY when API/ABI breakage happens (see SHLIB_MAJOR)
-# Minor: Bumped when significant new features are added
-# Revision: Bumped frequently.
-
-# The useful version number (one integer, easy to compare)
-LIBARCHIVE_VERSION_NUMBER=2005001
-# The pretty version string
-LIBARCHIVE_VERSION_STRING=2.5.1b
-
# FreeBSD SHLIB_MAJOR value is managed as part of the FreeBSD system.
-# It has no real relation to the version number above.
+# It has no real relation to the libarchive version number.
SHLIB_MAJOR= 4
CFLAGS+= -DPLATFORM_CONFIG_H=\"config_freebsd.h\"
@@ -27,20 +16,8 @@
# Headers to be installed in /usr/include
INCS= archive.h archive_entry.h
-# Build archive.h from archive.h.in by substituting version information.
-# Note: FreeBSD has inttypes.h, so enable that include in archive.h.in
-archive.h: archive.h.in Makefile
- cat ${.CURDIR}/archive.h.in | sed \
- -e 's/@LIBARCHIVE_VERSION_NUMBER@/${LIBARCHIVE_VERSION_NUMBER}/g' \
- -e 's/@LIBARCHIVE_VERSION_STRING@/${LIBARCHIVE_VERSION_STRING}/g' \
- > archive.h
-
-# archive.h needs to be cleaned
-CLEANFILES+= archive.h
-
# Sources to be compiled.
-SRCS= archive.h \
- archive_check_magic.c \
+SRCS= archive_check_magic.c \
archive_entry.c \
archive_entry_copy_stat.c \
archive_entry_stat.c \
@@ -115,6 +92,7 @@
MLINKS+= archive_entry.3 archive_entry_acl_text_w.3
MLINKS+= archive_entry.3 archive_entry_clear.3
MLINKS+= archive_entry.3 archive_entry_clone.3
+MLINKS+= archive_entry.3 archive_entry_copy_fflags_text.3
MLINKS+= archive_entry.3 archive_entry_copy_fflags_text_w.3
MLINKS+= archive_entry.3 archive_entry_copy_gname.3
MLINKS+= archive_entry.3 archive_entry_copy_gname_w.3
@@ -230,6 +208,7 @@
MLINKS+= archive_write.3 archive_write_set_bytes_per_block.3
MLINKS+= archive_write.3 archive_write_set_callbacks.3
MLINKS+= archive_write.3 archive_write_set_compression_bzip2.3
+MLINKS+= archive_write.3 archive_write_set_compression_compress.3
MLINKS+= archive_write.3 archive_write_set_compression_gzip.3
MLINKS+= archive_write.3 archive_write_set_compression_none.3
MLINKS+= archive_write.3 archive_write_set_compression_program.3
==== //depot/projects/soc2008/strauss_libarchive/libarchive/archive_endian.h#2 (text+ko) ====
@@ -23,14 +23,28 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $FreeBSD: src/lib/libarchive/archive_endian.h,v 1.2 2008/02/26 07:17:47 kientzle Exp $
+ * $FreeBSD: src/lib/libarchive/archive_endian.h,v 1.3 2008/05/26 17:00:22 kientzle Exp $
*
* Borrowed from FreeBSD's <sys/endian.h>
*/
+/* Note: This is a purely internal header! */
+/* Do not use this outside of libarchive internal code! */
+
#ifndef ARCHIVE_ENDIAN_H_INCLUDED
#define ARCHIVE_ENDIAN_H_INCLUDED
+
+/* Watcom C++ doesn't support 'inline' in C code. (For any version?) */
+#if defined( __WATCOMC__ )
+ #define inline
+#endif
+
+/* Visual C++ 6.0 doesn't support 'inline' in C code. (Does VC7? VC8?) */
+#if defined(_MSC_VER)
+ #define inline
+#endif
+
/* Alignment-agnostic encode/decode bytestream to/from little/big endian. */
static inline uint16_t
==== //depot/projects/soc2008/strauss_libarchive/libarchive/archive_entry.3#3 (text+ko) ====
>>> TRUNCATED FOR MAIL (1000 lines) <<<
More information about the p4-projects
mailing list