Date: Wed, 22 Aug 2007 02:43:22 GMT From: Peter Wemm <peter@FreeBSD.org> To: Perforce Change Reviews <perforce@freebsd.org> Subject: PERFORCE change 125530 for review Message-ID: <200708220243.l7M2hMFG030096@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=125530 Change 125530 by peter@peter_overcee on 2007/08/22 02:42:39 IFC @125529 Affected files ... .. //depot/projects/hammer/etc/namedb/named.conf#12 integrate .. //depot/projects/hammer/etc/rc.d/Makefile#53 integrate .. //depot/projects/hammer/etc/rc.d/lockd#2 integrate .. //depot/projects/hammer/etc/rc.d/nfslocking#10 integrate .. //depot/projects/hammer/etc/rc.d/statd#2 integrate .. //depot/projects/hammer/lib/libarchive/archive_read_support_format_tar.c#36 integrate .. //depot/projects/hammer/lib/libarchive/test/test_read_format_gtar_sparse.c#5 integrate .. //depot/projects/hammer/release/Makefile#93 integrate .. //depot/projects/hammer/release/doc/Makefile#3 integrate .. //depot/projects/hammer/release/doc/en_US.ISO8859-1/hardware/article.sgml#5 integrate .. //depot/projects/hammer/release/doc/en_US.ISO8859-1/readme/article.sgml#17 integrate .. //depot/projects/hammer/release/doc/en_US.ISO8859-1/relnotes/article.sgml#16 integrate .. //depot/projects/hammer/release/doc/share/sgml/release.ent#20 integrate .. //depot/projects/hammer/sbin/reboot/boot_i386.8#19 integrate .. //depot/projects/hammer/share/man/man4/umodem.4#8 integrate .. //depot/projects/hammer/sys/amd64/amd64/pmap.c#162 integrate .. //depot/projects/hammer/sys/arm/arm/busdma_machdep.c#25 integrate .. //depot/projects/hammer/sys/boot/arm/at91/boot2/boot2.c#5 integrate .. //depot/projects/hammer/sys/dev/cxgb/common/cxgb_t3_hw.c#5 integrate .. //depot/projects/hammer/sys/dev/cxgb/cxgb_adapter.h#8 integrate .. //depot/projects/hammer/sys/dev/cxgb/cxgb_ioctl.h#4 integrate .. //depot/projects/hammer/sys/dev/cxgb/cxgb_l2t.c#2 integrate .. //depot/projects/hammer/sys/dev/cxgb/cxgb_l2t.h#2 integrate .. //depot/projects/hammer/sys/dev/cxgb/cxgb_main.c#8 integrate .. //depot/projects/hammer/sys/dev/cxgb/cxgb_offload.c#5 integrate .. //depot/projects/hammer/sys/dev/cxgb/cxgb_offload.h#4 integrate .. //depot/projects/hammer/sys/dev/cxgb/cxgb_sge.c#9 integrate .. //depot/projects/hammer/sys/dev/dcons/dcons_os.c#13 integrate .. //depot/projects/hammer/sys/dev/drm/i915_dma.c#6 integrate .. //depot/projects/hammer/sys/gnu/fs/xfs/FreeBSD/xfs_mountops.c#7 integrate .. //depot/projects/hammer/sys/i386/i386/pmap.c#94 integrate .. //depot/projects/hammer/sys/kern/kern_cpu.c#15 integrate .. //depot/projects/hammer/sys/kern/kern_switch.c#55 integrate .. //depot/projects/hammer/sys/kern/sched_ule.c#80 integrate .. //depot/projects/hammer/sys/kern/vfs_aio.c#50 integrate .. //depot/projects/hammer/sys/net/bridgestp.c#16 integrate .. //depot/projects/hammer/sys/netgraph/ng_base.c#48 integrate .. //depot/projects/hammer/sys/vm/device_pager.c#17 integrate .. //depot/projects/hammer/sys/vm/phys_pager.c#13 integrate .. //depot/projects/hammer/sys/vm/vm_map.c#61 integrate .. //depot/projects/hammer/sys/vm/vm_map.h#20 integrate .. //depot/projects/hammer/sys/vm/vm_mmap.c#46 integrate Differences ... ==== //depot/projects/hammer/etc/namedb/named.conf#12 (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/hammer/etc/rc.d/Makefile#53 (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/hammer/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/hammer/etc/rc.d/nfslocking#10 (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/hammer/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/hammer/lib/libarchive/archive_read_support_format_tar.c#36 (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/hammer/lib/libarchive/test/test_read_format_gtar_sparse.c#5 (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, +'!','(',247,24,'*',229,30,'C','T',238,'1','$',229,30,'C',214,238,177,'(', +247,248,'t',28,'O',191,212,202,')',247,'X',29,209,'o',134,7,143,'(','8',195, +131,'G','4',156,225,193,'#','*',206,240,224,17,29,'g','x',240,136,146,'3', +'<','x','D',203,'y','c','P',187,'G','m',207,137,218,158,19,181,'=','\'','j', +'{','N',212,246,156,168,237,'9','Q',219,'s',162,182,231,'D','m',207,137,218, +158,19,181,'=','\'','i','{','N',210,246,156,164,237,'9','I',219,'s',146,182, +231,'$','m',207,'I',218,158,147,180,'=','\'','i','{','N',210,246,156,172, +237,'9','Y',219,'s',178,182,231,'d','m',207,201,218,158,147,181,'=','\'', +'k','{','N',214,246,156,172,237,'9','E',219,'s',138,182,231,20,'m',207,')', +218,158,'S',180,'=',167,'h','{','N',209,246,156,162,237,'9','E',219,'s',138, +182,231,20,'m',207,169,181,'=',167,214,246,156,'Z',219,'s','j','m',207,169, +181,'=',167,214,246,156,'Z',219,'s','j','m',207,169,'G','z',142,175,3,'_', +174,255,'_',236,150,'{',198,'/','{',6,28,252,254,199,'W',18,156,127,245,253, +191,'8','I','|',255,127,9,248,254,22,22,228,7,22,228,7,22,228,7,22,228,7, +22,228,7,22,214,252,144,'?','X',144,31,'X',144,31,'X',144,31,'X',144,31,'X', +144,31,'X',144,31,'X','p',255,143,')',145,31,'X',144,31,'X',144,31,'X',144, +31,'X',144,31,'X',144,31,'X','p',255,143,')',145,31,'X',144,31,'X',144,31, +'X',144,31,'X',144,31,'X',144,31,'X','p',255,143,')',145,31,'X',144,31,'X', +144,31,'X',144,31,'X',144,31,'X',144,31,'X','p',255,143,')',145,31,'X',144, +31,'X',144,31,'X',144,31,'X',144,31,'X',144,31,'X','p',255,143,')',145,31, +'X',144,31,'X',144,31,'X',144,31,'X',144,31,'X',144,31,'X','p',255,143,')', +145,31,'X',144,31,'X',144,31,'X',144,31,'X',144,31,'X',144,31,'X','p',255, +143,')',145,31,'X',144,31,'X',144,31,'X',144,31,'X',144,31,'X',144,31,'X', +'p',255,143,')',145,31,'X',144,31,'X',144,31,'X',144,31,'X',144,31,'X',144, +31,'X','p',255,143,')',145,31,'X',144,31,'X',144,31,'X',144,31,'X',144,31, +'X',144,31,'X','p',255,143,')',145,31,'X',144,31,'X',144,31,'X',144,31,'X', +144,31,'X',144,31,'X','p',255,143,')',145,31,'X',144,31,'X',144,31,155,229, +213,199,230,241,'C',219,'|','n',215,221,'2',':','\'',229,234,238,254,238, +183,238,'k',179,238,218,'3','}',134,235,165,170,218,'>',250,28,221,254,227, +'N',255,'o',239,'R','r','"','R',133,'<','s',190,146,232,'g',139,199,'3','}', +254,'A',15,221,166,'Y',247,151,'b','}',159,167,'_',229,249,241,'B',136,'[', +'4',155,155,219,'v',229,'}',201,'.',5,151,221,188,127,238,250,245,'s','S', +'_','\'','~',142,179,31,246,1,163,231,223,237,159,255,212,159,127,137,210, +159,255,'w','9','D','?',206,127,31,248,131,'?','7',246,250,133,158,127,0, +0,0,0,0,0,0,0,0,0,0,0,0,192,'e',250,6,'X',180,13,'8',0,24,1,0}; +#endif -/* GNU tar "0.0" posix format, as written by GNU tar 1.15. */ -static unsigned char archive_0_0[] = { -31,139,8,0,155,'X',190,'F',0,3,237,214,209,'N',131,'0',20,6,'`',174,'y',10, -'^','@',214,'s',218,'R',184,224,'Z',175,140,'7','>',0,206,'.','Y','t',155, -'Y','Y','2','}','z','[','u',147,'e','S','4','#','#','l',255,'w',211,164,229, -'4','%','p',224,'O','G','w',213,250,198,'V',143,'v',233,'R',163,'Y',142,220, -'K',181,'t','6',234,144,240,'2',165,194,'H','F',139,230,248,'A',9,142,'H', -'d',218,'(',173,'X',202,'H',144,'T','$',163,'d',221,229,'!','~',178,'r','u', -181,244,'G','9','v',159,175,'{',217,142,3,193,'&',185,190,189,'O','?',31, -'z',234,166,'o',182,148,164,180,225,'<',230,172,185,'4','_',205,30,158,23, -227,'\'','W',202,152,243,230,202,'b','2','q',182,'.',11,'O','f',241,238,134, -161,234,181,182,174,212,196,'1',23,7,202,200,151,229,134,255,']',183,'=', -165,'>','X','\'','b',22,'I','U','O','g',182,'$',202,179,220,20,25,153,'0', -'7','n',206,'i',191,'A',223,'O',160,'_',221,'w',251,190,150,254,231,208,'.', -155,254,23,'a',158,200,'(',17,'%','\'','i',162,'M',255,251,215,226,215,235, -218,214,7,218,255,199,170,250,'>',0,12,26,222,159,'~',165,'{',249,'o',190, -152,'_','u',251,'W','h',203,127,225,155,191,155,255,20,251,'H',136,252,'w', -2,127,'J','I','J',']','x','J',':','_',221,'w',251,190,214,254,23,244,157, -255,'L',200,127,172,'%','!',255,157,2,254,191,0,0,0,0,0,0,0,0,0,0,0,231,231, -29,157,135,'u','Z',0,'(',0,0}; +#if ARCHIVE_VERSION_STAMP >= 1009000 +/* libarchive < 1.9 does not support this. */ +/* GNU tar "posix" sparse format 0.1, as created by gtar 1.17 */ +static unsigned char archive_0_1_gtar_1_17[] = { +31,139,8,0,31,'%',193,'F',0,3,237,215,205,'n',26,'W',24,135,'q',214,'\\', +5,23,224,194,249,'>','3',11,182,'m','V','U',164,170,23,'0','u','f','a','%', +'v',',',198,150,172,'^','}',135,15,'\'',127,187,9,'T','z',137,167,'D',207, +'o',195,4,'l','^','0',207,'!',231,',','W',239,187,167,'w','}',247,161,223, +12,203,236,'\\',244,171,225,190,219,12,253,236,'|',220,168,164,180,189,245, +'5',';',189,221,9,'9',204,188,'+',197,133,16,'R',172,'3',231,'c',202,'u', +182,'x',':',227,'k',248,174,199,225,161,219,140,'/',197,250,'<',135,247,242, +229,246,'B',132,186,248,237,247,'?',151,251,207,'|','9',220,252,221,175,163, +31,255,250,161,153,135,162,15,221,'=',222,254,245,233,243,245,199,'a',29, +'_','?',210,221,246,235,253,245,'<','{','}',228,182,187,'_',183,163,'X',174, +178,15,'W','~',188,'l','j',216,']',31,134,'\\',185,'y','p',139,238,225,'f', +'|',10,239,155,234,'J','t',213,'o',239,187,'~','y',159,155,'O',253,151,250, +'9','-','W',227,231,245,199,238,227,250,245,230,'S',255,'C',190,2,'N',172, +255,176,']','.','_',215,127,25,215,127,246,169,204,22,'o',178,136,158,215, +255,152,219,209,159,';',245,248,133,174,127,171,'n',234,23,128,139,'F','?', +211,'Z','~','o',255,23,206,'7',227,212,247,127,241,178,255,'K','n',187,255, +203,'1',179,255,'{',11,161,249,215,254,175,'m','w',239,'`',220,133,213,'o', +'o',0,219,246,245,'C','_','w',128,'a',238,'C','[',254,227,'&','0','l',175, +']',179,223,16,142,215,'5',165,221,'u',26,175,'K',227,'v',215,'y','{',237, +247,191,'[',198,235,156,247,191,219,236,255,206,251,'k','y',254,'V',158,223, +';',25,224,189,'L',240,'A','F',248,'(','3','|',146,'!',190,200,20,'_',244, +'m','T',157,211,232,156,'V',230,4,'\'','s',130,151,'9','!',200,156,144,'d', +'N','H','2','\'','d',253,'{',21,153,19,170,206,'i','t','N','+','s',162,147, +'9','1',200,156,24,'d','N',140,186,'9','O',250,193,'d',153,19,139,204,137, +'U',231,'4','2',231,240,'v',220,225,31,'2','\'',233,231,159,'4',128,244,162, +0,'M',' ','i',3,'I','#','H','Z','A',210,12,146,'v',144,181,131,172,29,'d', +237,' ','k',7,'Y',';',200,218,'A',214,14,178,'v',144,181,131,172,29,20,237, +160,'h',7,'E',';','(',218,'A',209,14,138,'v','P',180,131,162,29,20,237,160, +'h',7,'U',';',168,218,'A',213,14,170,'v','P',181,131,170,29,'T',237,160,'j', +7,'U',';','h',180,131,'F',';','h',180,131,'F',';','h',180,131,'F',';','h', +180,131,230,197,151,193,139,'o',3,237,160,209,14,'Z',237,160,213,14,'Z',237, +160,213,14,'Z',237,160,213,14,'Z',237,160,213,14,218,231,14,'|',27,255,231, +231,219,'c',231,191,'s','m',1,142,254,255,239,'S',136,206,191,'>',255,133, +228,'9',255,']',2,246,239,176,160,31,'X',208,15,',',232,7,22,244,3,11,250, +129,133,181,31,250,131,5,253,192,130,'~','`','A','?',176,160,31,'X',208,15, +',',232,7,22,156,255,'1','%',250,129,5,253,192,130,'~','`','A','?',176,160, +31,'X',208,15,',','8',255,'c','J',244,3,11,250,129,5,253,192,130,'~','`', +'A','?',176,160,31,'X','p',254,199,148,232,7,22,244,3,11,250,129,5,253,192, +130,'~','`','A','?',176,224,252,143,')',209,15,',',232,7,22,244,3,11,250, +129,5,253,192,130,'~','`',193,249,31,'S',162,31,'X',208,15,',',232,7,22,244, +3,11,250,129,5,253,192,130,243,'?',166,'D','?',176,160,31,'X',208,15,',', +232,7,22,244,3,11,250,129,5,231,127,'L',137,'~','`','A','?',176,160,31,'X', +208,15,',',232,7,22,244,3,11,206,255,152,18,253,192,130,'~','`','A','?',176, +160,31,'X',208,15,',',232,7,22,156,255,'1','%',250,129,5,253,192,130,'~', +'`','A','?',176,160,31,'X',208,15,',','8',255,'c','J',244,3,11,250,129,5, +253,192,130,'~','`','A','?',176,160,31,'X','p',254,199,148,232,7,22,244,3, +11,250,177,'Y',174,222,'w','O',239,250,238,'C',191,25,150,217,185,232,'W', +'w',159,239,'~',25,238,187,205,208,159,'i',134,27,149,148,182,183,190,'f', +167,183,'{',227,181,'w',165,184,16,'B','J',227,253,'>',133,152,'g',139,167, +'3',205,'?',234,'q','x',232,'6',227,'K',177,'>',207,225,173,'|',185,189,16, +193,'-',186,135,155,219,'~',237,'}','S',']',137,174,186,249,'x',223,245,235, >>> TRUNCATED FOR MAIL (1000 lines) <<<
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200708220243.l7M2hMFG030096>