Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 20 Aug 2007 13:00:57 GMT
From:      Oleksandr Tymoshenko <gonzo@FreeBSD.org>
To:        Perforce Change Reviews <perforce@FreeBSD.org>
Subject:   PERFORCE change 125404 for review
Message-ID:  <200708201300.l7KD0vbI079112@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=125404

Change 125404 by gonzo@gonzo_jeeves on 2007/08/20 13:00:07

	o IFC

Affected files ...

.. //depot/projects/mips2/src/etc/namedb/named.conf#4 integrate
.. //depot/projects/mips2/src/etc/rc.d/Makefile#4 integrate
.. //depot/projects/mips2/src/etc/rc.d/lockd#2 integrate
.. //depot/projects/mips2/src/etc/rc.d/nfslocking#5 integrate
.. //depot/projects/mips2/src/etc/rc.d/statd#2 integrate
.. //depot/projects/mips2/src/gnu/lib/libgcc/Makefile#5 integrate
.. //depot/projects/mips2/src/gnu/lib/libstdc++/Makefile#4 integrate
.. //depot/projects/mips2/src/lib/libarchive/archive_read_support_format_tar.c#5 integrate
.. //depot/projects/mips2/src/lib/libarchive/test/test_read_format_gtar_sparse.c#3 integrate
.. //depot/projects/mips2/src/lib/libc/mips/string/strcmp.S#2 edit
.. //depot/projects/mips2/src/release/Makefile#4 integrate
.. //depot/projects/mips2/src/release/doc/Makefile#2 integrate
.. //depot/projects/mips2/src/release/doc/en_US.ISO8859-1/Makefile#2 integrate
.. //depot/projects/mips2/src/release/doc/en_US.ISO8859-1/hardware/article.sgml#4 integrate
.. //depot/projects/mips2/src/release/doc/en_US.ISO8859-1/hardware/common/artheader.sgml#2 delete
.. //depot/projects/mips2/src/release/doc/en_US.ISO8859-1/hardware/common/dev.sgml#5 delete
.. //depot/projects/mips2/src/release/doc/en_US.ISO8859-1/hardware/common/hw.ent#3 delete
.. //depot/projects/mips2/src/release/doc/en_US.ISO8859-1/hardware/common/intro.sgml#2 delete
.. //depot/projects/mips2/src/release/doc/en_US.ISO8859-1/installation/Makefile#3 delete
.. //depot/projects/mips2/src/release/doc/en_US.ISO8859-1/installation/Makefile.inc#2 delete
.. //depot/projects/mips2/src/release/doc/en_US.ISO8859-1/installation/amd64/Makefile#2 delete
.. //depot/projects/mips2/src/release/doc/en_US.ISO8859-1/installation/amd64/article.sgml#2 delete
.. //depot/projects/mips2/src/release/doc/en_US.ISO8859-1/installation/common/abstract.sgml#2 delete
.. //depot/projects/mips2/src/release/doc/en_US.ISO8859-1/installation/common/artheader.sgml#2 delete
.. //depot/projects/mips2/src/release/doc/en_US.ISO8859-1/installation/common/install.ent#2 delete
.. //depot/projects/mips2/src/release/doc/en_US.ISO8859-1/installation/common/install.sgml#4 delete
.. //depot/projects/mips2/src/release/doc/en_US.ISO8859-1/installation/common/layout.sgml#2 delete
.. //depot/projects/mips2/src/release/doc/en_US.ISO8859-1/installation/common/trouble.sgml#2 delete
.. //depot/projects/mips2/src/release/doc/en_US.ISO8859-1/installation/common/upgrade.sgml#2 delete
.. //depot/projects/mips2/src/release/doc/en_US.ISO8859-1/installation/i386/Makefile#2 delete
.. //depot/projects/mips2/src/release/doc/en_US.ISO8859-1/installation/i386/article.sgml#2 delete
.. //depot/projects/mips2/src/release/doc/en_US.ISO8859-1/installation/ia64/Makefile#2 delete
.. //depot/projects/mips2/src/release/doc/en_US.ISO8859-1/installation/ia64/article.sgml#2 delete
.. //depot/projects/mips2/src/release/doc/en_US.ISO8859-1/installation/pc98/Makefile#2 delete
.. //depot/projects/mips2/src/release/doc/en_US.ISO8859-1/installation/pc98/article.sgml#2 delete
.. //depot/projects/mips2/src/release/doc/en_US.ISO8859-1/installation/powerpc/Makefile#2 delete
.. //depot/projects/mips2/src/release/doc/en_US.ISO8859-1/installation/powerpc/article.sgml#2 delete
.. //depot/projects/mips2/src/release/doc/en_US.ISO8859-1/installation/sparc64/Makefile#2 delete
.. //depot/projects/mips2/src/release/doc/en_US.ISO8859-1/installation/sparc64/article.sgml#2 delete
.. //depot/projects/mips2/src/release/doc/en_US.ISO8859-1/installation/sparc64/install.sgml#2 delete
.. //depot/projects/mips2/src/release/doc/en_US.ISO8859-1/readme/article.sgml#3 integrate
.. //depot/projects/mips2/src/release/doc/en_US.ISO8859-1/relnotes/article.sgml#7 integrate
.. //depot/projects/mips2/src/release/doc/share/examples/Makefile.relnotesng#3 integrate
.. //depot/projects/mips2/src/release/doc/share/misc/dev.archlist.txt#5 integrate
.. //depot/projects/mips2/src/release/doc/share/sgml/release.ent#3 integrate
.. //depot/projects/mips2/src/sbin/reboot/boot_i386.8#3 integrate
.. //depot/projects/mips2/src/share/man/man5/Makefile#4 integrate
.. //depot/projects/mips2/src/share/man/man5/boot.config.5#1 branch
.. //depot/projects/mips2/src/sys/amd64/conf/NOTES#4 integrate
.. //depot/projects/mips2/src/sys/amd64/include/specialreg.h#5 integrate
.. //depot/projects/mips2/src/sys/arm/arm/busdma_machdep.c#5 integrate
.. //depot/projects/mips2/src/sys/boot/arm/at91/boot2/boot2.c#3 integrate
.. //depot/projects/mips2/src/sys/compat/freebsd32/freebsd32_proto.h#4 integrate
.. //depot/projects/mips2/src/sys/compat/freebsd32/freebsd32_syscall.h#4 integrate
.. //depot/projects/mips2/src/sys/compat/freebsd32/freebsd32_syscalls.c#4 integrate
.. //depot/projects/mips2/src/sys/compat/freebsd32/freebsd32_sysent.c#4 integrate
.. //depot/projects/mips2/src/sys/compat/freebsd32/syscalls.master#5 integrate
.. //depot/projects/mips2/src/sys/compat/opensolaris/sys/proc.h#2 integrate
.. //depot/projects/mips2/src/sys/conf/files.amd64#5 integrate
.. //depot/projects/mips2/src/sys/conf/files.i386#6 integrate
.. //depot/projects/mips2/src/sys/dev/coretemp/coretemp.c#1 branch
.. //depot/projects/mips2/src/sys/dev/cxgb/common/cxgb_t3_hw.c#3 integrate
.. //depot/projects/mips2/src/sys/dev/cxgb/cxgb_adapter.h#5 integrate
.. //depot/projects/mips2/src/sys/dev/cxgb/cxgb_ioctl.h#3 integrate
.. //depot/projects/mips2/src/sys/dev/cxgb/cxgb_l2t.c#2 integrate
.. //depot/projects/mips2/src/sys/dev/cxgb/cxgb_l2t.h#2 integrate
.. //depot/projects/mips2/src/sys/dev/cxgb/cxgb_main.c#5 integrate
.. //depot/projects/mips2/src/sys/dev/cxgb/cxgb_offload.c#3 integrate
.. //depot/projects/mips2/src/sys/dev/cxgb/cxgb_offload.h#2 integrate
.. //depot/projects/mips2/src/sys/dev/cxgb/cxgb_sge.c#6 integrate
.. //depot/projects/mips2/src/sys/dev/dcons/dcons_os.c#4 integrate
.. //depot/projects/mips2/src/sys/dev/mpt/mpt.c#5 integrate
.. //depot/projects/mips2/src/sys/dev/mpt/mpt.h#5 integrate
.. //depot/projects/mips2/src/sys/dev/mpt/mpt_cam.c#6 integrate
.. //depot/projects/mips2/src/sys/fs/msdosfs/msdosfs_vfsops.c#6 integrate
.. //depot/projects/mips2/src/sys/fs/tmpfs/tmpfs_vnops.c#4 integrate
.. //depot/projects/mips2/src/sys/gnu/fs/ext2fs/ext2_vfsops.c#4 integrate
.. //depot/projects/mips2/src/sys/i386/conf/NOTES#4 integrate
.. //depot/projects/mips2/src/sys/i386/include/specialreg.h#6 integrate
.. //depot/projects/mips2/src/sys/kern/init_sysent.c#6 integrate
.. //depot/projects/mips2/src/sys/kern/kern_cpu.c#4 integrate
.. //depot/projects/mips2/src/sys/kern/kern_switch.c#5 integrate
.. //depot/projects/mips2/src/sys/kern/kern_thr.c#5 integrate
.. //depot/projects/mips2/src/sys/kern/sched_ule.c#6 integrate
.. //depot/projects/mips2/src/sys/kern/syscalls.c#6 integrate
.. //depot/projects/mips2/src/sys/kern/syscalls.master#6 integrate
.. //depot/projects/mips2/src/sys/kern/systrace_args.c#3 integrate
.. //depot/projects/mips2/src/sys/kern/vfs_aio.c#4 integrate
.. //depot/projects/mips2/src/sys/kern/vfs_mount.c#6 integrate
.. //depot/projects/mips2/src/sys/modules/Makefile#7 integrate
.. //depot/projects/mips2/src/sys/modules/coretemp/Makefile#1 branch
.. //depot/projects/mips2/src/sys/net/bridgestp.c#6 integrate
.. //depot/projects/mips2/src/sys/netgraph/ng_base.c#4 integrate
.. //depot/projects/mips2/src/sys/netinet/sctp_asconf.c#4 integrate
.. //depot/projects/mips2/src/sys/netinet/sctp_input.c#7 integrate
.. //depot/projects/mips2/src/sys/netinet/sctp_output.c#6 integrate
.. //depot/projects/mips2/src/sys/netinet/sctp_pcb.c#6 integrate
.. //depot/projects/mips2/src/sys/netinet/sctp_timer.c#5 integrate
.. //depot/projects/mips2/src/sys/netinet/sctp_usrreq.c#7 integrate
.. //depot/projects/mips2/src/sys/netinet/sctputil.c#7 integrate
.. //depot/projects/mips2/src/sys/netinet/tcp_subr.c#8 integrate
.. //depot/projects/mips2/src/sys/sys/syscall.h#6 integrate
.. //depot/projects/mips2/src/sys/sys/syscall.mk#6 integrate
.. //depot/projects/mips2/src/sys/sys/sysproto.h#6 integrate
.. //depot/projects/mips2/src/sys/sys/thr.h#5 integrate
.. //depot/projects/mips2/src/sys/vm/device_pager.c#4 integrate
.. //depot/projects/mips2/src/sys/vm/phys_pager.c#5 integrate
.. //depot/projects/mips2/src/sys/vm/vm_map.c#5 integrate
.. //depot/projects/mips2/src/sys/vm/vm_map.h#2 integrate
.. //depot/projects/mips2/src/sys/vm/vm_mmap.c#4 integrate
.. //depot/projects/mips2/src/usr.bin/uname/uname.c#2 edit
.. //depot/projects/mips2/src/usr.sbin/freebsd-update/freebsd-update.sh#4 integrate

Differences ...

==== //depot/projects/mips2/src/etc/namedb/named.conf#4 (text+ko) ====

@@ -1,4 +1,4 @@
-// $FreeBSD: src/etc/namedb/named.conf,v 1.25 2007/08/02 09:18:53 dougb Exp $
+// $FreeBSD: src/etc/namedb/named.conf,v 1.26 2007/08/17 04:37:02 dougb Exp $
 //
 // Refer to the named.conf(5) and named(8) man pages, and the documentation
 // in /usr/share/doc/bind9 for more details.
@@ -68,6 +68,12 @@
 	2. No spurious traffic will be sent from your network to the roots
 	3. Greater resilience to any potential root server failure/DDoS
 
+	On the other hand, this method requires more monitoring than the
+	hints file to be sure that an unexpected failure mode has not
+	incapacitated your server.  Name servers that are serving a lot
+	of clients will benefit more from this approach than individual
+	hosts.  Use with caution.
+
 	To use this mechanism, uncomment the entries below, and comment
 	the hint zone above.
 */
@@ -76,9 +82,7 @@
 	type slave;
 	file "slave/root.slave";
 	masters {
-		192.33.4.12;	// C.ROOT-SERVERS.NET.
-		192.112.36.4;	// G.ROOT-SERVERS.NET.
-		193.0.14.129;	// K.ROOT-SERVERS.NET.
+		192.5.5.241;	// F.ROOT-SERVERS.NET.
 	};
 	notify no;
 };
@@ -86,9 +90,7 @@
 	type slave;
 	file "slave/arpa.slave";
 	masters {
-		192.33.4.12;	// C.ROOT-SERVERS.NET.
-		192.112.36.4;	// G.ROOT-SERVERS.NET.
-		193.0.14.129;	// K.ROOT-SERVERS.NET.
+		192.5.5.241;	// F.ROOT-SERVERS.NET.
 	};
 	notify no;
 };
@@ -96,9 +98,7 @@
 	type slave;
 	file "slave/in-addr.arpa.slave";
 	masters {
-		192.33.4.12;	// C.ROOT-SERVERS.NET.
-		192.112.36.4;	// G.ROOT-SERVERS.NET.
-		193.0.14.129;	// K.ROOT-SERVERS.NET.
+		192.5.5.241;	// F.ROOT-SERVERS.NET.
 	};
 	notify no;
 };
@@ -155,9 +155,9 @@
 // TEST-NET for Documentation (RFC 3330)
 zone "2.0.192.in-addr.arpa"	{ type master; file "master/empty.db"; };
 
-// Router Benchmark Testing (RFC 2544)
-zone "18.192.in-addr.arpa"	{ type master; file "master/empty.db"; };
-zone "19.192.in-addr.arpa"	{ type master; file "master/empty.db"; };
+// Router Benchmark Testing (RFC 3330)
+zone "18.198.in-addr.arpa"	{ type master; file "master/empty.db"; };
+zone "19.198.in-addr.arpa"	{ type master; file "master/empty.db"; };
 
 // IANA Reserved - Old Class E Space
 zone "240.in-addr.arpa"		{ type master; file "master/empty.db"; };

==== //depot/projects/mips2/src/etc/rc.d/Makefile#4 (text+ko) ====

@@ -1,5 +1,5 @@
 # $NetBSD: Makefile,v 1.16 2001/01/14 15:37:22 minoura Exp $
-# $FreeBSD: src/etc/rc.d/Makefile,v 1.81 2007/04/09 19:21:27 pjd Exp $
+# $FreeBSD: src/etc/rc.d/Makefile,v 1.82 2007/08/17 07:58:26 mtm Exp $
 
 .include <bsd.own.mk>
 
@@ -20,7 +20,7 @@
 	ipnat ipsec ipxrouted isdnd \
 	jail \
 	kadmind kerberos kernel keyserv kldxref kpasswdd \
-	ldconfig local localpkg lpd \
+	ldconfig local localpkg lockd lpd \
 	mixer motd mountcritlocal mountcritremote mountlate \
 	mdconfig mdconfig2 mountd moused mroute6d mrouted msgs \
 	named natd netif netoptions \
@@ -33,7 +33,7 @@
 	random rarpd resolv root \
 	route6d routed routing rpcbind rtadvd rwho \
 	savecore sdpd securelevel sendmail \
-	serial sppp swap1 \
+	serial sppp statd swap1 \
 	syscons sysctl syslogd \
 	timed tmp \
 	ugidfw \

==== //depot/projects/mips2/src/etc/rc.d/lockd#2 (text+ko) ====

@@ -1,22 +1,28 @@
 #!/bin/sh
 #
 # $NetBSD: nfslocking,v 1.6 2002/03/24 15:52:41 lukem Exp $
-# $FreeBSD: src/etc/rc.d/lockd,v 1.14 2007/05/17 08:57:14 mtm Exp $
+# FreeBSD History: src/etc/rc.d/nfslocking,v 1.11 2004/10/07 13:55:26 mtm
+# $FreeBSD: src/etc/rc.d/lockd,v 1.17 2007/08/18 04:08:53 mtm Exp $
 #
 
-# PROVIDE: nfslocking
+# PROVIDE: lockd
 # REQUIRE: nfsserver nfsclient nfsd rpcbind
 # BEFORE:  DAEMON
 # KEYWORD: nojail
 
 . /etc/rc.subr
 
-# Save the (one) commandline argument in case it gets clobbered.
-arg=$1
+name="lockd"
+rcvar=rpc_lockd_enable
+command="/usr/sbin/rpc.${name}"
+start_precmd='lockd_precmd'
+stop_precmd='checkyesno nfs_server_enable || checkyesno nfs_client_enable'
+status_precmd=$stop_precmd
 
-# Either NFS client or server must be enabled and rpcbind(8) must be started.
+# Make sure that we are either an NFS client or server, and that we get
+# the correct flags from rc.conf(5).
 #
-nfslocking_precmd()
+lockd_precmd()
 {
 	local ret
 	ret=0
@@ -30,34 +36,9 @@
 	then
 		force_depend rpcbind || ret=1
 	fi
-
-	if [ $name = "statd" ] 
-	then
-		rc_flags=${rpc_statd_flags}
-	elif [ $name = "lockd" ]
-	then
-		rc_flags=${rpc_lockd_flags}
-	fi
-
+	rc_flags=${rpc_lockd_flags}
 	return ${ret}
 }
 
-start_precmd="nfslocking_precmd"
-stop_precmd='checkyesno nfs_server_enable || checkyesno nfs_client_enable'
-status_precmd=$stop_precmd
-
-# rpc.statd
-#
-name="statd"
-rcvar=rpc_statd_enable
-command="/usr/sbin/rpc.${name}"
 load_rc_config $name
-run_rc_command "$arg"
-
-# rpc.lockd
-#
-name="lockd"
-rcvar=rpc_lockd_enable
-command="/usr/sbin/rpc.${name}"
-load_rc_config $name
-run_rc_command "$arg"
+run_rc_command $1

==== //depot/projects/mips2/src/etc/rc.d/nfslocking#5 (text+ko) ====

@@ -1,13 +1,13 @@
 #!/bin/sh
 #
 # $NetBSD: nfslocking,v 1.6 2002/03/24 15:52:41 lukem Exp $
-# $FreeBSD: src/etc/rc.d/nfslocking,v 1.14 2007/05/17 08:57:14 mtm Exp $
+# $FreeBSD: src/etc/rc.d/nfslocking,v 1.15 2007/08/17 07:58:26 mtm Exp $
 #
 
 # PROVIDE: nfslocking
 # REQUIRE: nfsserver nfsclient nfsd rpcbind
 # BEFORE:  DAEMON
-# KEYWORD: nojail
+# KEYWORD: nojail nostart
 
 . /etc/rc.subr
 

==== //depot/projects/mips2/src/etc/rc.d/statd#2 (text+ko) ====

@@ -1,22 +1,28 @@
 #!/bin/sh
 #
 # $NetBSD: nfslocking,v 1.6 2002/03/24 15:52:41 lukem Exp $
-# $FreeBSD: src/etc/rc.d/statd,v 1.14 2007/05/17 08:57:14 mtm Exp $
+# FreeBSD History: src/etc/rc.d/nfslocking,v 1.11 2004/10/07 13:55:26 mtm Exp
+# $FreeBSD: src/etc/rc.d/statd,v 1.17 2007/08/18 04:08:53 mtm Exp $
 #
 
-# PROVIDE: nfslocking
+# PROVIDE: statd
 # REQUIRE: nfsserver nfsclient nfsd rpcbind
 # BEFORE:  DAEMON
 # KEYWORD: nojail
 
 . /etc/rc.subr
 
-# Save the (one) commandline argument in case it gets clobbered.
-arg=$1
+name="statd"
+rcvar=rpc_statd_enable
+command="/usr/sbin/rpc.${name}"
+start_precmd='statd_precmd'
+stop_precmd='checkyesno nfs_server_enable || checkyesno nfs_client_enable'
+status_precmd=$stop_precmd
 
-# Either NFS client or server must be enabled and rpcbind(8) must be started.
+# Make sure that we are either an NFS client or server, and that we get
+# the correct flags from rc.conf(5).
 #
-nfslocking_precmd()
+statd_precmd()
 {
 	local ret
 	ret=0
@@ -30,34 +36,9 @@
 	then
 		force_depend rpcbind || ret=1
 	fi
-
-	if [ $name = "statd" ] 
-	then
-		rc_flags=${rpc_statd_flags}
-	elif [ $name = "lockd" ]
-	then
-		rc_flags=${rpc_lockd_flags}
-	fi
-
+	rc_flags=${rpc_statd_flags}
 	return ${ret}
 }
 
-start_precmd="nfslocking_precmd"
-stop_precmd='checkyesno nfs_server_enable || checkyesno nfs_client_enable'
-status_precmd=$stop_precmd
-
-# rpc.statd
-#
-name="statd"
-rcvar=rpc_statd_enable
-command="/usr/sbin/rpc.${name}"
 load_rc_config $name
-run_rc_command "$arg"
-
-# rpc.lockd
-#
-name="lockd"
-rcvar=rpc_lockd_enable
-command="/usr/sbin/rpc.${name}"
-load_rc_config $name
-run_rc_command "$arg"
+run_rc_command $1

==== //depot/projects/mips2/src/gnu/lib/libgcc/Makefile#5 (text+ko) ====

@@ -1,4 +1,4 @@
-# $FreeBSD: src/gnu/lib/libgcc/Makefile,v 1.57 2007/05/19 04:25:55 kan Exp $
+# $FreeBSD: src/gnu/lib/libgcc/Makefile,v 1.58 2007/08/14 20:49:57 kan Exp $
 GCCDIR=	${.CURDIR}/../../../contrib/gcc
 GCCLIB=	${.CURDIR}/../../../contrib/gcclibs
 
@@ -217,7 +217,7 @@
 #
 # Objects that should be in static library only.
 #
-#SYMS_ST =	${LIB2FUNCS_ST}	${LIB2ADD_ST}
+SYMS_ST =	${LIB2FUNCS_ST}	${LIB2ADD_ST}
 STAT_OBJS_T = 	${SYMS_ST:S/$/.o/}
 STAT_OBJS_P = 	${SYMS_ST:S/$/.po/}
 STATICOBJS  =	${SYMS_ST:S/$/.o/}

==== //depot/projects/mips2/src/gnu/lib/libstdc++/Makefile#4 (text+ko) ====

@@ -1,4 +1,4 @@
-# $FreeBSD: src/gnu/lib/libstdc++/Makefile,v 1.60 2007/05/19 15:41:01 kan Exp $
+# $FreeBSD: src/gnu/lib/libstdc++/Makefile,v 1.61 2007/08/16 23:02:00 kan Exp $
 
 GCCDIR=	${.CURDIR}/../../../contrib/gcc
 GCCLIB=	${.CURDIR}/../../../contrib/gcclibs
@@ -143,10 +143,10 @@
 		stdio_filebuf.h stdio_sync_filebuf.h functional \
 		hash_map hash_set hash_fun.h hashtable.h iterator \
 		malloc_allocator.h memory mt_allocator.h new_allocator.h \
-		numeric pod_char_traits.h pool_allocator.h rb_tree rope \
-		ropeimpl.h slist throw_allocator.h typelist.h type_traits.h \
-		rc_string_base.h sso_string_base.h vstring.h vstring.tcc \
-		vstring_fwd.h vstring_util.h
+		numeric numeric_traits.h pod_char_traits.h pool_allocator.h \
+		rb_tree rope ropeimpl.h slist throw_allocator.h typelist.h \
+		type_traits.h rc_string_base.h sso_string_base.h vstring.h \
+		vstring.tcc vstring_fwd.h vstring_util.h
 
 EXTHDRS:=	${EXTHDRS:S;^;${SRCDIR}/include/ext/;}
 EXTHDRSDIR=	${CXXINCLUDEDIR}/ext

==== //depot/projects/mips2/src/lib/libarchive/archive_read_support_format_tar.c#5 (text+ko) ====

@@ -24,7 +24,7 @@
  */
 
 #include "archive_platform.h"
-__FBSDID("$FreeBSD: src/lib/libarchive/archive_read_support_format_tar.c,v 1.60 2007/07/15 19:13:59 kientzle Exp $");
+__FBSDID("$FreeBSD: src/lib/libarchive/archive_read_support_format_tar.c,v 1.61 2007/08/18 21:53:25 kientzle Exp $");
 
 #ifdef HAVE_ERRNO_H
 #include <errno.h>
@@ -72,6 +72,8 @@
 #include "archive_private.h"
 #include "archive_read_private.h"
 
+#define tar_min(a,b) ((a) < (b) ? (a) : (b))
+
 /*
  * Layout of POSIX 'ustar' tar header.
  */
@@ -172,6 +174,7 @@
 static char	*base64_decode(const wchar_t *, size_t, size_t *);
 static void	 gnu_add_sparse_entry(struct tar *,
 		    off_t offset, off_t remaining);
+static void	gnu_clear_sparse_list(struct tar *);
 static int	gnu_sparse_old_read(struct archive_read *, struct tar *,
 		    const struct archive_entry_header_gnutar *header);
 static void	gnu_sparse_old_parse(struct tar *,
@@ -211,7 +214,8 @@
 static int 	pax_header(struct archive_read *, struct tar *,
 		    struct archive_entry *, char *attr);
 static void	pax_time(const wchar_t *, int64_t *sec, long *nanos);
-static ssize_t	readline(struct archive_read *, struct tar *, const char **);
+static ssize_t	readline(struct archive_read *, struct tar *, const char **,
+		    ssize_t limit);
 static int	read_body_to_string(struct archive_read *, struct tar *,
 		    struct archive_string *, const void *h);
 static int64_t	tar_atol(const char *, unsigned);
@@ -263,14 +267,9 @@
 archive_read_format_tar_cleanup(struct archive_read *a)
 {
 	struct tar *tar;
-	struct sparse_block *p;
 
 	tar = (struct tar *)(a->format->data);
-	while (tar->sparse_list != NULL) {
-		p = tar->sparse_list;
-		tar->sparse_list = p->next;
-		free(p);
-	}
+	gnu_clear_sparse_list(tar);
 	archive_string_free(&tar->acl_text);
 	archive_string_free(&tar->entry_name);
 	archive_string_free(&tar->entry_linkname);
@@ -423,7 +422,6 @@
 	const char *p;
 	int r;
 	size_t l;
-	ssize_t size;
 
 	/* Assign default device/inode values. */
 	archive_entry_set_dev(entry, 1 + default_dev); /* Don't use zero. */
@@ -446,22 +444,6 @@
 	r = tar_read_header(a, tar, entry);
 
 	/*
-	 * Yuck.  See comments for gnu_sparse_10_read for why this
-	 * is here and not in _read_data where it "should" go.
-	 */
-	if (tar->sparse_gnu_pending
-	    && tar->sparse_gnu_major == 1
-	    && tar->sparse_gnu_minor == 0) {
-		tar->sparse_gnu_pending = 0;
-		/* Read initial sparse map. */
-		size = gnu_sparse_10_read(a, tar);
-		if (size < 0)
-			return (size);
-		tar->entry_bytes_remaining -= size;
-		tar->entry_padding += size;
-	}
-
-	/*
 	 * "non-sparse" files are really just sparse files with
 	 * a single block.
 	 */
@@ -497,11 +479,12 @@
 
 	if (tar->sparse_gnu_pending) {
 		if (tar->sparse_gnu_major == 1 && tar->sparse_gnu_minor == 0) {
-			/*
-			 * <sigh> We should parse the sparse data
-			 * here, but have to parse it as part of the
-			 * header because of a bug in GNU tar 1.16.1.
-			 */
+			tar->sparse_gnu_pending = 0;
+			/* Read initial sparse map. */
+			bytes_read = gnu_sparse_10_read(a, tar);
+			tar->entry_bytes_remaining -= bytes_read;
+			if (bytes_read < 0)
+				return (bytes_read);
 		} else {
 			*size = 0;
 			*offset = 0;
@@ -559,7 +542,6 @@
 {
 	off_t bytes_skipped;
 	struct tar* tar;
-	struct sparse_block *p;
 
 	tar = (struct tar *)(a->format->data);
 
@@ -577,12 +559,7 @@
 	tar->entry_padding = 0;
 
 	/* Free the sparse list. */
-	while (tar->sparse_list != NULL) {
-		p = tar->sparse_list;
-		tar->sparse_list = p->next;
-		free(p);
-	}
-	tar->sparse_last = NULL;
+	gnu_clear_sparse_list(tar);
 
 	return (ARCHIVE_OK);
 }
@@ -1650,6 +1627,19 @@
 	p->remaining = remaining;
 }
 
+static void
+gnu_clear_sparse_list(struct tar *tar)
+{
+	struct sparse_block *p;
+
+	while (tar->sparse_list != NULL) {
+		p = tar->sparse_list;
+		tar->sparse_list = p->next;
+		free(p);
+	}
+	tar->sparse_last = NULL;
+}
+
 /*
  * GNU tar old-format sparse data.
  *
@@ -1793,7 +1783,7 @@
  */
 static int64_t
 gnu_sparse_10_atol(struct archive_read *a, struct tar *tar,
-    ssize_t *total_read)
+    ssize_t *remaining)
 {
 	int64_t l, limit, last_digit_limit;
 	const char *p;
@@ -1804,10 +1794,16 @@
 	limit = INT64_MAX / base;
 	last_digit_limit = INT64_MAX % base;
 
-	bytes_read = readline(a, tar, &p);
-	if (bytes_read <= 0)
-		return (ARCHIVE_FATAL);
-	*total_read += bytes_read;
+	/*
+	 * Skip any lines starting with '#'; GNU tar specs
+	 * don't require this, but they should.
+	 */
+	do {
+		bytes_read = readline(a, tar, &p, tar_min(*remaining, 100));
+		if (bytes_read <= 0)
+			return (ARCHIVE_FATAL);
+		*remaining -= bytes_read;
+	} while (p[0] == '#');
 
 	l = 0;
 	while (bytes_read > 0) {
@@ -1828,32 +1824,39 @@
 }
 
 /*
- * Returns number of bytes consumed to read the sparse block data.
+ * Returns length (in bytes) of the sparse data description
+ * that was read.
  */
 static ssize_t
 gnu_sparse_10_read(struct archive_read *a, struct tar *tar)
 {
-	ssize_t bytes_read = 0;
+	ssize_t remaining, bytes_read;
 	int entries;
 	off_t offset, size, to_skip;
 
+	/* Clear out the existing sparse list. */
+	gnu_clear_sparse_list(tar);
+
+	remaining = tar->entry_bytes_remaining;
+
 	/* Parse entries. */
-	entries = gnu_sparse_10_atol(a, tar, &bytes_read);
+	entries = gnu_sparse_10_atol(a, tar, &remaining);
 	if (entries < 0)
 		return (ARCHIVE_FATAL);
 	/* Parse the individual entries. */
 	while (entries-- > 0) {
 		/* Parse offset/size */
-		offset = gnu_sparse_10_atol(a, tar, &bytes_read);
+		offset = gnu_sparse_10_atol(a, tar, &remaining);
 		if (offset < 0)
 			return (ARCHIVE_FATAL);
-		size = gnu_sparse_10_atol(a, tar, &bytes_read);
+		size = gnu_sparse_10_atol(a, tar, &remaining);
 		if (size < 0)
 			return (ARCHIVE_FATAL);
 		/* Add a new sparse entry. */
 		gnu_add_sparse_entry(tar, offset, size);
 	}
 	/* Skip rest of block... */
+	bytes_read = tar->entry_bytes_remaining - remaining;
 	to_skip = 0x1ff & -bytes_read;
 	if (to_skip != (a->decompressor->skip)(a, to_skip))
 		return (ARCHIVE_FATAL);
@@ -2004,7 +2007,8 @@
  * when possible.
  */
 static ssize_t
-readline(struct archive_read *a, struct tar *tar, const char **start)
+readline(struct archive_read *a, struct tar *tar, const char **start,
+    ssize_t limit)
 {
 	ssize_t bytes_read;
 	ssize_t total_size = 0;
@@ -2020,12 +2024,24 @@
 	/* If we found '\n' in the read buffer, return pointer to that. */
 	if (p != NULL) {
 		bytes_read = 1 + ((const char *)p) - s;
+		if (bytes_read > limit) {
+			archive_set_error(&a->archive,
+			    ARCHIVE_ERRNO_FILE_FORMAT,
+			    "Line too long");
+			return (ARCHIVE_FATAL);
+		}
 		(a->decompressor->consume)(a, bytes_read);
 		*start = s;
 		return (bytes_read);
 	}
 	/* Otherwise, we need to accumulate in a line buffer. */
 	for (;;) {
+		if (total_size + bytes_read > limit) {
+			archive_set_error(&a->archive,
+			    ARCHIVE_ERRNO_FILE_FORMAT,
+			    "Line too long");
+			return (ARCHIVE_FATAL);
+		}
 		if (archive_string_ensure(&tar->line, total_size + bytes_read) == NULL) {
 			archive_set_error(&a->archive, ENOMEM,
 			    "Can't allocate working buffer");

==== //depot/projects/mips2/src/lib/libarchive/test/test_read_format_gtar_sparse.c#3 (text+ko) ====

@@ -23,107 +23,466 @@
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 #include "test.h"
-__FBSDID("$FreeBSD: src/lib/libarchive/test/test_read_format_gtar_sparse.c,v 1.5 2007/08/12 01:16:19 kientzle Exp $");
+__FBSDID("$FreeBSD: src/lib/libarchive/test/test_read_format_gtar_sparse.c,v 1.6 2007/08/18 21:53:25 kientzle Exp $");
+
+
+struct contents {
+	off_t	o;
+	size_t	s;
+	char *d;
+};
+
+struct contents archive_contents_sparse[] = {
+	{ 1000000, 1, "a" },
+	{ 2000000, 1, "a" },
+	{ 3145728, 0, NULL }
+};
+
+struct contents archive_contents_sparse2[] = {
+	{ 1000000, 1, "a" },
+	{ 2000000, 1, "a" },
+	{ 3000000, 1, "a" },
+	{ 4000000, 1, "a" },
+	{ 5000000, 1, "a" },
+	{ 6000000, 1, "a" },
+	{ 7000000, 1, "a" },
+	{ 8000000, 1, "a" },
+	{ 9000000, 1, "a" },
+	{ 10000000, 1, "a" },
+	{ 11000000, 1, "a" },
+	{ 12000000, 1, "a" },
+	{ 13000000, 1, "a" },
+	{ 14000000, 1, "a" },
+	{ 15000000, 1, "a" },
+	{ 16000000, 1, "a" },
+	{ 17000000, 1, "a" },
+	{ 18000000, 1, "a" },
+	{ 19000000, 1, "a" },
+	{ 20000000, 1, "a" },
+	{ 21000000, 1, "a" },
+	{ 22000000, 1, "a" },
+	{ 23000000, 1, "a" },
+	{ 24000000, 1, "a" },
+	{ 25000000, 1, "a" },
+	{ 26000000, 1, "a" },
+	{ 27000000, 1, "a" },
+	{ 28000000, 1, "a" },
+	{ 29000000, 1, "a" },
+	{ 30000000, 1, "a" },
+	{ 31000000, 1, "a" },
+	{ 32000000, 1, "a" },
+	{ 33000000, 1, "a" },
+	{ 34000000, 1, "a" },
+	{ 35000000, 1, "a" },
+	{ 36000000, 1, "a" },
+	{ 37000000, 1, "a" },
+	{ 38000000, 1, "a" },
+	{ 39000000, 1, "a" },
+	{ 40000000, 1, "a" },
+	{ 41000000, 1, "a" },
+	{ 42000000, 1, "a" },
+	{ 43000000, 1, "a" },
+	{ 44000000, 1, "a" },
+	{ 45000000, 1, "a" },
+	{ 46000000, 1, "a" },
+	{ 47000000, 1, "a" },
+	{ 48000000, 1, "a" },
+	{ 49000000, 1, "a" },
+	{ 50000000, 1, "a" },
+	{ 51000000, 1, "a" },
+	{ 52000000, 1, "a" },
+	{ 53000000, 1, "a" },
+	{ 54000000, 1, "a" },
+	{ 55000000, 1, "a" },
+	{ 56000000, 1, "a" },
+	{ 57000000, 1, "a" },
+	{ 58000000, 1, "a" },
+	{ 59000000, 1, "a" },
+	{ 60000000, 1, "a" },
+	{ 61000000, 1, "a" },
+	{ 62000000, 1, "a" },
+	{ 63000000, 1, "a" },
+	{ 64000000, 1, "a" },
+	{ 65000000, 1, "a" },
+	{ 66000000, 1, "a" },
+	{ 67000000, 1, "a" },
+	{ 68000000, 1, "a" },
+	{ 69000000, 1, "a" },
+	{ 70000000, 1, "a" },
+	{ 71000000, 1, "a" },
+	{ 72000000, 1, "a" },
+	{ 73000000, 1, "a" },
+	{ 74000000, 1, "a" },
+	{ 75000000, 1, "a" },
+	{ 76000000, 1, "a" },
+	{ 77000000, 1, "a" },
+	{ 78000000, 1, "a" },
+	{ 79000000, 1, "a" },
+	{ 80000000, 1, "a" },
+	{ 81000000, 1, "a" },
+	{ 82000000, 1, "a" },
+	{ 83000000, 1, "a" },
+	{ 84000000, 1, "a" },
+	{ 85000000, 1, "a" },
+	{ 86000000, 1, "a" },
+	{ 87000000, 1, "a" },
+	{ 88000000, 1, "a" },
+	{ 89000000, 1, "a" },
+	{ 90000000, 1, "a" },
+	{ 91000000, 1, "a" },
+	{ 92000000, 1, "a" },
+	{ 93000000, 1, "a" },
+	{ 94000000, 1, "a" },
+	{ 95000000, 1, "a" },
+	{ 96000000, 1, "a" },
+	{ 97000000, 1, "a" },
+	{ 98000000, 1, "a" },
+	{ 99000000, 1, "a" },
+	{ 99000001, 0, NULL }
+};
+
+struct contents archive_contents_nonsparse[] = {
+	{ 0, 1, "a" },
+	{ 1, 0, NULL }
+};
 
 /*
- * Each of the following is an archive containing the following
- * entries:
+ * Describe an archive with three entries:
  *
  * File 1: named "sparse"
  *   * a length of 3145728 bytes (3MiB)
  *   * a single 'a' byte at offset 1000000
  *   * a single 'a' byte at offset 2000000
- * File 2: named 'non-sparse'
+ * File 2: named "sparse2"
+ *   * a single 'a' byte at offset 1,000,000, 2,000,000, ..., 99,000,000
+ *   * length of 99,000,001
+ * File 3: named 'non-sparse'
  *   * length of 1 byte
  *   * contains a single byte 'a'
  */
 
-static struct contents {
-	off_t	o;
-	size_t	s;
-	char *d;
-} archive_contents[] = {
-	{ 1000000, 1, "a" },
-	{ 2000000, 1, "a" },
-	{ 3145728, 0, NULL }
+struct archive_contents {
+	const char *filename;
+	struct contents *contents;
+} files[] = {
+	{ "sparse", archive_contents_sparse },
+	{ "sparse2", archive_contents_sparse2 },
+	{ "non-sparse", archive_contents_nonsparse },
+	{ NULL, NULL }
 };
 
-/* Old GNU tar sparse format. */
-static unsigned char archive_old[] = {
-31,139,8,0,215,'[',190,'F',0,3,237,213,223,10,130,'0',20,199,241,'=',202,
-'^',' ',216,'q',211,'=','H','O',224,'E',23,']','d',225,236,253,243,'d','i',
-'P','(',132,'C',162,239,7,'d',219,241,'/',7,253,153,'.','u',155,14,'&','+',
-215,171,'B',208,'Q','b',233,'^','G','U',244,155,17,'W',149,'1',148,193,'i',
-']','b',244,222,216,'}',222,199,26,'\\','S','W',183,214,154,238,'x',154,'=',
-'n','i',255,215,180,5,190,10,162,']','x','t','d',156,247,']','*','>',212,
-'%',12,235,'g',253,'>',159,187,193,'x',194,234,234,245,'/',137,'?',194,251,
-179,173,230,220,236,'R',230,127,192,'B',254,235,'r',202,255,168,249,'/',133,
-23,'c','3',196,213,187,205,243,127,'[','|',127,0,0,0,0,0,0,0,0,0,0,0,252,
-190,27,'H',10,',',253,0,'(',0,0};
+
+/* Old GNU tar sparse format, as created by gtar 1.13 */
+static unsigned char archive_old_gtar_1_13[] = {
+31,139,8,0,30,'%',193,'F',0,3,237,215,'K','n',219,'H',20,133,'a',246,'N',
+180,129,6,170,'n',189,22,210,'+',208,' ',131,12,146,14,',','g',255,'}',201,
+192,142,17,29,'(','A',159,24,'l',160,255,207,3,219,'e',193,186,'$',127,241,
+'q',251,'r','}',186,'}',216,222,'U',169,165,204,222,183,'R','J',']',163,188,
+253,190,139,252,'u',171,'e',206,18,17,189,205,'m','_',')',177,']',254,'z',
+223,177,190,249,'z','{',190,'>',']','.',219,243,199,'O',15,'_',247,179,191,
+255,'k',251,'.','h',179,231,'>','z',221,'#',175,'?',231,'^',10,177,'^',219,
+':',188,172,239,'K',15,223,160,246,'o',175,250,253,211,'_',127,255,191,196,
+255,8,253,0,231,185,29,215,255,'x',215,247,'x','x',253,175,'=',218,221,245,
+'?','j',31,'\\',255,31,'\\',255,'[','o','j','}','E',233,'?',174,255,'Q',202,
+'X','u',212,213,212,'M',194,'~',167,213,'J',31,226,191,197,'\\','e',138,245,
+22,163,'/',181,158,27,161,182,162,'G',12,181,21,'}',214,170,182,'"','G',29,
+'w','[',177,175,143,'Y',213,156,'3','c','Q','s',206,209,170,154,'s',213,':',
+139,'Z',207,157,'-',230,220,227,157,'b',206,154,'{','-',196,156,185,15,218,
+20,'s',214,',','=',196,156,'5',223,'s',138,'9','k',180,213,196,156,'5','V',
+30,'O',177,190,'G',161,230,'l','+',214,'}',21,175,199,191,246,'V',155,154,
+183,207,181,212,188,'#','f','S',243,142,'c',171,239,215,'g','4','U','w',157,
+'3','T',221,'G',196,'j',191,230,'f',23,'1','g',228,';','w','1','g',148,172,
+'H',204,25,181,198,16,'s','F','~','F','T',191,217,196,'R',253,230,185,'j',
+170,'~',143,143,147,154,'3',15,'O','U','s',246,220,0,'5','g',238,132,'P',
+'s',246,'5',167,154,'s',180,161,250,141,177,218,'}',191,223,143,127,30,205,
+'P',29,31,31,127,'5',239,218,191,212,250,'<','6',227,199,245,150,19,'7','1',
+'o','+','3',255,145,'X',175,'Q','U',199,'-',247,210,'}',199,251,233,168,'N',
+213,239,'q',154,18,'s',182,204,189,171,'9','s',247,21,'5','g',198,219,213,
+156,'=',207,130,'j',206,145,225,169,'9',247,'U','5','g','^',247,'T',191,'/',
+167,211,251,245,181,134,154,'3',15,'s','U','s',230,'^',27,15,142,127,223,
+247,136,152,'7','?','<','U','u',220,'3','z',213,'q',207,15,180,234,248,'8',
+253,139,'y','{',134,'7',197,188,'=','s',12,177,'_',243,206,' ',239,'"',196,
+'z',207,'3',134,154,'3','?',133,170,223,'>',242,'D',172,230,28,'#','T',191,
+199,'e','J',205,'9','3','/','5','g','~','l',154,154,'s','e','0','b',206,177,
+167,'\'',230,28,185,'G','U',191,251,177,'W',253,142,'<',209,171,'~',143,203,
+233,131,227,'?',242,196,'t',127,215,176,175,175,'P',247,5,'#','s','Q',247,
+5,'#',195,'T',247,5,'#',15,180,234,'8','O',218,']','u',156,135,161,169,142,
+143,203,191,154,'s',238,'W',0,181,190,127,137,245,227,'f',232,205,'z',145,
+'7','F',248,'%','<',191,195,'A','?','p',208,15,28,244,3,7,253,192,'A','?',
+'p',184,253,208,31,28,244,3,7,253,192,'A','?','p',208,15,28,244,3,7,253,192,
+193,243,'?',206,'D','?','p',208,15,28,244,3,7,253,192,'A','?','p',208,15,
+28,'<',255,227,'L',244,3,7,253,192,'A','?','p',208,15,28,244,3,7,253,192,
+193,243,'?',206,'D','?','p',208,15,28,244,3,7,253,192,'A','?','p',208,15,
+28,'<',255,227,'L',244,3,7,253,192,'A','?','p',208,15,28,244,3,7,253,192,
+193,243,'?',206,'D','?','p',208,15,28,244,3,7,253,192,'A','?','p',208,15,
+28,'<',255,227,'L',244,3,7,253,192,'A','?','p',208,15,28,244,3,7,253,192,
+193,243,'?',206,'D','?','p',208,15,28,244,3,7,253,192,'A','?','p',208,15,
+28,'<',255,227,'L',244,3,7,253,192,'A','?','p',208,15,28,244,3,7,253,192,
+193,243,'?',206,'D','?','p',208,15,28,244,3,7,253,192,'A','?','p',208,15,
+28,'<',255,227,'L',244,3,7,253,192,'A','?','p',208,15,28,244,3,7,253,192,
+193,243,'?',206,'D','?','p',208,15,28,244,227,249,252,247,231,'?','o','_',
+174,'O',183,15,239,247,30,165,150,'2','{',223,'J',')','u',141,242,246,251,
+139,173,150,'9','K','D',244,'6',243,245,'5',127,218,'.',229,253,'F',250,238,
+235,237,249,250,'t',185,'l',207,31,'?','=','|',221,207,254,14,0,0,0,0,0,0,
+0,255,'1',255,0,178,'s',140,'2',0,240,0,0};
+
+/* Old GNU tar sparse format, as created by gtar 1.17 */
+static unsigned char archive_old_gtar_1_17[] = {
+31,139,8,0,30,'%',193,'F',0,3,237,215,']','r',19,'G',20,134,'a','e','\'',
+218,'@',170,186,'O',255,'-','$','+',208,5,23,'\\','@','(',203,236,'?','g',
+134,216,'8',232,139,160,248,'P','M',170,242,'>',20,'%',211,'6',214,153,158,
+'W','#',205,245,211,229,233,250,238,244,'P','%',205,222,183,199,186,'F','y',
+251,184,137,252,'{',170,'e',206,18,17,189,205,'S','~','w',197,'<',157,255,
+'x',236,'X','_','|',190,'>','_',158,206,231,211,243,251,15,'w',127,238,'{',
+223,255,'i',219,22,180,217,235,182,11,127,239,200,235,215,185,'K','!',214,
+'k',255,242,239,151,245,253,235,'{','O',240,250,31,'~',185,203,175,255,149,
+248,31,161,159,'c',']',247,235,127,'<',244,'9',238,'^',255,'k',143,'V',234,
+'?',175,255,17,'5',127,156,235,255,191,'^',255,'[',235,'M',173,175,'(',253,
+219,245,223,'J',25,171,142,186,182,'m','V',207,158,251,223,135,248,'m','1',
+'W',153,'b',189,197,232,'K',173,231,'A',168,163,232,17,'C',29,'E',159,181,
+170,163,200,'Q',199,205,'Q','l',235,'c','V','5',231,172,'}',168,'9',231,'h',
+'U',205,185,'j',157,'E',173,231,'f',139,'9',243,'a','N','1','g',205,']',11,
+'1','g',238,'A',155,'b',206,154,165,135,152,179,230,'s','N','1','g',141,182,
+154,152,179,198,202,243,')',214,183,'(',212,156,'m',197,186,173,226,245,252,
+215,222,'j','S',243,246,185,150,154,'w',196,'l','j',222,177,31,245,237,250,
+140,166,234,174,'s',134,170,'{',143,'X',237,'k',30,'v',17,'s','F','>','s',
+23,'s','F',201,138,196,156,'Q','k',12,'1','g',228,'k','D',245,155,'M',',',
+213,'o','^',171,166,234,'w',127,'9',169,'9',243,244,'T','5','g',207,3,'P',
+'s',230,'&',132,154,179,175,'9',213,156,163,13,213,'o',140,213,'n',251,253,
+'z',254,243,'l',134,234,'x',127,249,171,'y',215,246,'G',173,207,253,'0',190,
+']','o','9','q',19,243,182,'2',243,23,137,245,26,'U','u',220,'r',151,'n',
+';',222,'.','G','u',170,'~',247,203,148,152,179,'e',238,']',205,153,219,'W',
+212,156,25,'o','W','s',246,188,10,170,'9','G',134,167,230,220,'V',213,156,
+249,190,167,250,'}',185,156,222,174,175,'5',212,156,'y',154,171,154,'3','w',
+'m',220,'9',255,'}',219,17,'1','o',190,'x',170,234,184,'g',244,170,227,158,
+'/','h',213,241,'~',249,23,243,246,12,'o',138,'y','{',230,24,'b','_',243,
+147,'A','~',138,16,235,'=',175,24,'j',206,'|',21,170,'~',251,200,11,177,154,
+'s',140,'P',253,238,'o','S','j',206,153,'y',169,'9',243,'e',211,212,156,'+',
+131,17,'s',142,'-','=','1',231,200,29,'U',253,'n',231,'^',245,';',242,'B',
+175,250,221,223,'N',239,156,255,145,23,166,219,'O',13,219,250,10,245,185,
+'`','d','.',234,'s',193,200,'0',213,231,130,145,'\'','Z','u',156,23,237,174,
+':',206,211,208,'T',199,251,219,191,154,'s','n',239,0,'j','}',251,'#',214,
+247,15,'C','o',214,139,252,'`',132,31,194,253,27,28,244,3,7,253,192,'A','?',
+'p',208,15,28,244,3,135,219,15,253,193,'A','?','p',208,15,28,244,3,7,253,
+192,'A','?','p',208,15,28,220,255,227,'H',244,3,7,253,192,'A','?','p',208,
+15,28,244,3,7,253,192,193,253,'?',142,'D','?','p',208,15,28,244,3,7,253,192,
+'A','?','p',208,15,28,220,255,227,'H',244,3,7,253,192,'A','?','p',208,15,
+28,244,3,7,253,192,193,253,'?',142,'D','?','p',208,15,28,244,3,7,253,192,
+'A','?','p',208,15,28,220,255,227,'H',244,3,7,253,192,'A','?','p',208,15,
+28,244,3,7,253,192,193,253,'?',142,'D','?','p',208,15,28,244,3,7,253,192,
+'A','?','p',208,15,28,220,255,227,'H',244,3,7,253,192,'A','?','p',208,15,
+28,244,3,7,253,192,193,253,'?',142,'D','?','p',208,15,28,244,3,7,253,192,
+'A','?','p',208,15,28,220,255,227,'H',244,3,7,253,192,'A','?','p',208,15,
+28,244,3,7,253,192,193,253,'?',142,'D','?','p',208,15,28,244,3,7,253,192,
+'A','?','p',208,15,28,220,255,227,'H',244,3,7,253,192,'A','?',158,143,127,
+'~',252,253,250,233,242,'t','}',247,184,231,'(','i',246,190,'=',214,'5',202,
+219,199,23,167,'Z',230,',',17,209,219,'<',149,'Z','#',234,233,'\\',30,'7',
+210,'W',159,175,207,151,167,243,249,244,252,254,195,221,159,251,222,247,1,
+0,0,0,0,0,0,0,248,15,249,11,162,'$',218,227,0,240,0,0};
 
 #if ARCHIVE_VERSION_STAMP >= 1009000
-/* libarchive < 1.9 doesn't support these. */
+/* libarchive < 1.9 does not support this. */
+/* GNU tar "posix" sparse format 0.0, as created by gtar 1.17 */
+static unsigned char archive_0_0_gtar_1_17[] = {
+31,139,8,0,31,'%',193,'F',0,3,237,217,207,'n',218,'X',20,199,'q',214,'<',
+5,'/','0',228,222,'s','}',255,'x',193,'z',186,26,'u',211,7,240,164,174,20,
+205,'$',169,'0',145,'2',243,244,'5','%',205,144,200,193,'p',14,141,203,232,
+251,217,'P','A',14,'8','9',191,'[',253,',',150,'W',31,155,199,15,'m',243,
+185,']','w',203,232,156,148,171,238,'k',179,238,218,217,249,184,'^',170,170,
+237,163,207,209,237,'?','~','W','9',153,'y',151,146,19,145,'*',228,153,243,
+161,'J','2','[','<',158,241,26,222,244,208,'m',154,'u',127,')',214,247,'y',
+250,']',158,31,'/',132,228,197,239,127,'|','Z',238,'v',190,236,'n',254,'m',
+'W',193,'W','1','K',153,'K',218,127,233,238,225,246,207,191,239,175,255,234,
+'V','a','.','e',255,149,251,'/','_',186,'v',179,170,'{','!',205,'_',190,225,
+'v',234,159,'M',219,173,162,151,185,212,3,'c',190,31,'+','Y','N',158,'{',
+190,202,'8','8',231,230,226,22,205,230,230,182,']','y','_',178,'K',193,'e',
+191,'}',238,250,229,'s','n','>',245,6,166,'u',246,195,'>','`',228,252,203,
+246,184,252,'w',254,'S',127,254,'}',14,'a',182,'x',151,'C',244,227,252,247,
+177,'8',248,'s','c',175,'_',232,249,183,'j',166,190,0,'\\','4',242,'3',173,
+229,'[',253,'O',206,247,25,135,255,255,247,193,247,157,239,'U',255,139,'1',
+210,255,222,195,203,'*',247,189,255,213,245,'n','/',3,149,'l','W',0,235,250,
+151,'h',128,178,157,'s',229,244,230,216,207,229,170,':','y',174,234,231,'R',
+'q','\'',207,197,237,156,'?',253,239,146,250,185,24,'O',255,187,148,']',2,
+'O',159,'S',238,175,30,223,'_','p','C','{','w',227,11,28,30,244,227,27,28,
+30,148,241,21,14,15,134,241,29,14,15,'V',227,'K',28,30,'L',227,'[','|','c',
+'p','|',141,195,131,'Y',187,199,162,221,'c',173,220,163,'8',229,30,197,'+',
+247,'(',162,220,163,'T',202,'=','J',165,220,163,'D',229,30,'%',')',247,'(',
+'Y',187,199,162,221,'c',173,220,'c','p',202,'=',6,'Q',238,'1',136,'r',143,

>>> TRUNCATED FOR MAIL (1000 lines) <<<



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200708201300.l7KD0vbI079112>