PERFORCE change 135877 for review

Marcel Moolenaar marcel at FreeBSD.org
Thu Feb 21 06:38:12 UTC 2008


http://perforce.freebsd.org/chv.cgi?CH=135877

Change 135877 by marcel at marcel_xcllnt on 2008/02/21 06:38:09

	IFC @135869

Affected files ...

.. //depot/projects/e500/ObsoleteFiles.inc#9 integrate
.. //depot/projects/e500/UPDATING#8 integrate
.. //depot/projects/e500/bin/sh/mksyntax.c#2 integrate
.. //depot/projects/e500/contrib/traceroute/as.c#1 branch
.. //depot/projects/e500/contrib/traceroute/as.h#1 branch
.. //depot/projects/e500/contrib/traceroute/traceroute.8#2 integrate
.. //depot/projects/e500/contrib/traceroute/traceroute.c#3 integrate
.. //depot/projects/e500/games/fortune/strfile/strfile.c#2 integrate
.. //depot/projects/e500/gnu/usr.bin/man/man/man.c#3 integrate
.. //depot/projects/e500/gnu/usr.bin/man/manpath/manpath.c#2 integrate
.. //depot/projects/e500/lib/libarchive/archive_entry_strmode.c#2 integrate
.. //depot/projects/e500/lib/libarchive/archive_platform.h#4 integrate
.. //depot/projects/e500/lib/libarchive/archive_read_open_filename.c#3 integrate
.. //depot/projects/e500/lib/libarchive/archive_read_support_compression_bzip2.c#3 integrate
.. //depot/projects/e500/lib/libarchive/archive_read_support_compression_gzip.c#3 integrate
.. //depot/projects/e500/lib/libarchive/archive_read_support_format_ar.c#4 integrate
.. //depot/projects/e500/lib/libarchive/archive_read_support_format_iso9660.c#4 integrate
.. //depot/projects/e500/lib/libarchive/archive_read_support_format_mtree.c#2 integrate
.. //depot/projects/e500/lib/libarchive/archive_write_disk.c#7 integrate
.. //depot/projects/e500/lib/libarchive/archive_write_open_filename.c#2 integrate
.. //depot/projects/e500/lib/libarchive/archive_write_set_compression_gzip.c#4 integrate
.. //depot/projects/e500/lib/libarchive/config_freebsd.h#3 integrate
.. //depot/projects/e500/lib/libarchive/test/main.c#5 integrate
.. //depot/projects/e500/lib/libarchive/test/test.h#5 integrate
.. //depot/projects/e500/lib/libc/db/test/btree.tests/main.c#2 integrate
.. //depot/projects/e500/lib/libc/db/test/dbtest.c#2 integrate
.. //depot/projects/e500/lib/libc/regex/grot/main.c#2 integrate
.. //depot/projects/e500/lib/msun/Makefile#9 integrate
.. //depot/projects/e500/lib/msun/Symbol.map#8 integrate
.. //depot/projects/e500/lib/msun/ld80/k_tanl.c#2 integrate
.. //depot/projects/e500/lib/msun/man/j0.3#2 integrate
.. //depot/projects/e500/lib/msun/man/lgamma.3#2 integrate
.. //depot/projects/e500/lib/msun/src/e_exp.c#3 integrate
.. //depot/projects/e500/lib/msun/src/e_rem_pio2.c#3 integrate
.. //depot/projects/e500/lib/msun/src/e_rem_pio2f.c#3 integrate
.. //depot/projects/e500/lib/msun/src/k_cos.c#3 integrate
.. //depot/projects/e500/lib/msun/src/k_sin.c#2 integrate
.. //depot/projects/e500/lib/msun/src/math.h#5 integrate
.. //depot/projects/e500/lib/msun/src/s_cos.c#3 integrate
.. //depot/projects/e500/lib/msun/src/s_sin.c#3 integrate
.. //depot/projects/e500/lib/msun/src/s_tan.c#3 integrate
.. //depot/projects/e500/lib/msun/src/s_tgammaf.c#1 branch
.. //depot/projects/e500/release/Makefile#6 integrate
.. //depot/projects/e500/sbin/ipfw/ipfw.8#6 integrate
.. //depot/projects/e500/sbin/ipfw/ipfw2.c#8 integrate
.. //depot/projects/e500/sbin/mount_nfs/mount_nfs.c#3 integrate
.. //depot/projects/e500/sbin/sconfig/sconfig.c#2 integrate
.. //depot/projects/e500/secure/usr.bin/bdes/bdes.c#2 integrate
.. //depot/projects/e500/share/man/man4/Makefile#11 integrate
.. //depot/projects/e500/share/man/man4/geom_linux_lvm.4#1 branch
.. //depot/projects/e500/share/man/man4/geom_lvm.4#2 delete
.. //depot/projects/e500/sys/amd64/conf/GENERIC#11 integrate
.. //depot/projects/e500/sys/cam/scsi/scsi_ses.c#3 integrate
.. //depot/projects/e500/sys/conf/NOTES#12 integrate
.. //depot/projects/e500/sys/conf/files#13 integrate
.. //depot/projects/e500/sys/conf/options#11 integrate
.. //depot/projects/e500/sys/dev/ti/if_ti.c#4 integrate
.. //depot/projects/e500/sys/fs/msdosfs/msdosfs_vfsops.c#7 integrate
.. //depot/projects/e500/sys/geom/linux_lvm/g_linux_lvm.c#1 branch
.. //depot/projects/e500/sys/geom/linux_lvm/g_linux_lvm.h#1 branch
.. //depot/projects/e500/sys/geom/lvm/g_lvm.c#2 delete
.. //depot/projects/e500/sys/geom/lvm/g_lvm.h#2 delete
.. //depot/projects/e500/sys/kern/vfs_mount.c#8 integrate
.. //depot/projects/e500/sys/modules/geom/Makefile#4 integrate
.. //depot/projects/e500/sys/modules/geom/geom_linux_lvm/Makefile#1 branch
.. //depot/projects/e500/sys/modules/geom/geom_lvm/Makefile#2 delete
.. //depot/projects/e500/sys/nfsclient/nfs_vfsops.c#7 integrate
.. //depot/projects/e500/tools/regression/fsx/fsx.c#3 integrate
.. //depot/projects/e500/tools/regression/lib/msun/Makefile#5 integrate
.. //depot/projects/e500/tools/regression/lib/msun/test-exponential.c#2 integrate
.. //depot/projects/e500/tools/regression/lib/msun/test-trig.c#1 branch
.. //depot/projects/e500/tools/regression/lib/msun/test-trig.t#1 branch
.. //depot/projects/e500/usr.bin/calendar/calendars/calendar.dutch#3 integrate
.. //depot/projects/e500/usr.bin/ncplogin/ncplogin.c#2 integrate
.. //depot/projects/e500/usr.bin/quota/quota.c#2 integrate
.. //depot/projects/e500/usr.bin/tar/write.c#3 integrate
.. //depot/projects/e500/usr.sbin/cdcontrol/cdcontrol.c#2 integrate
.. //depot/projects/e500/usr.sbin/powerd/powerd.c#3 integrate
.. //depot/projects/e500/usr.sbin/syslogd/syslogd.c#3 integrate
.. //depot/projects/e500/usr.sbin/traceroute/Makefile#2 integrate
.. //depot/projects/e500/usr.sbin/zic/zdump.c#2 integrate

Differences ...

==== //depot/projects/e500/ObsoleteFiles.inc#9 (text+ko) ====

@@ -1,5 +1,5 @@
 #
-# $FreeBSD: src/ObsoleteFiles.inc,v 1.130 2008/02/06 19:45:25 delphij Exp $
+# $FreeBSD: src/ObsoleteFiles.inc,v 1.131 2008/02/20 11:28:28 thompsa Exp $
 #
 # This file lists old files (OLD_FILES), libraries (OLD_LIBS) and
 # directories (OLD_DIRS) which should get removed at an update. Recently
@@ -14,6 +14,8 @@
 # The file is partitioned: OLD_FILES first, then OLD_LIBS and OLD_DIRS last.
 #
 
+# 20080220: geom_lvm rename to geom_linux_lvm
+OLD_FILES+=usr/share/man/man4/geom_lvm.4.gz
 # 20080126: oldcard.4 removal
 OLD_FILES+=usr/share/man/man4/card.4.gz
 OLD_FILES+=usr/share/man/man4/oldcard.4.gz

==== //depot/projects/e500/UPDATING#8 (text+ko) ====

@@ -22,6 +22,10 @@
 	to maximize performance.  (To disable malloc debugging, run
 	ln -s aj /etc/malloc.conf.)
 
+20080220:
+	The new geom_lvm(4) geom class has been renamed to geom_linux_lvm(4),
+	likewise the kernel option is now GEOM_LINUX_LVM.
+
 20080211:
 	The default NFS mount mode has changed from UDP to TCP for
 	increased reliability.  If you rely on (insecurely) NFS
@@ -979,4 +983,4 @@
 Contact Warner Losh if you have any questions about your use of
 this document.
 
-$FreeBSD: src/UPDATING,v 1.519 2008/02/11 23:23:20 kris Exp $
+$FreeBSD: src/UPDATING,v 1.520 2008/02/20 07:50:12 thompsa Exp $

==== //depot/projects/e500/bin/sh/mksyntax.c#2 (text+ko) ====

@@ -42,7 +42,7 @@
 #endif /* not lint */
 #endif
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/bin/sh/mksyntax.c,v 1.24 2005/08/13 15:47:13 stefanf Exp $");
+__FBSDID("$FreeBSD: src/bin/sh/mksyntax.c,v 1.25 2008/02/18 20:01:33 marcel Exp $");
 
 /*
  * This program creates syntax.h and syntax.c.
@@ -139,10 +139,7 @@
 
 	/* Determine the characteristics of chars. */
 	c = -1;
-	if (c < 0)
-		sign = 1;
-	else
-		sign = 0;
+	sign = (c > 0) ? 0 : 1;
 	for (nbits = 1 ; ; nbits++) {
 		d = (1 << nbits) - 1;
 		if (d == c)

==== //depot/projects/e500/contrib/traceroute/traceroute.8#2 (text+ko) ====

@@ -14,9 +14,9 @@
 .\" WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
 .\"
 .\"	$Id: traceroute.8,v 1.19 2000/09/21 08:44:19 leres Exp $
-.\"	$FreeBSD: src/contrib/traceroute/traceroute.8,v 1.16 2006/10/15 17:44:49 dwmalone Exp $
+.\"	$FreeBSD: src/contrib/traceroute/traceroute.8,v 1.17 2008/02/20 23:29:52 rpaulo Exp $
 .\"
-.TH TRACEROUTE 8 "21 September 2000"
+.TH TRACEROUTE 8 "19 February 2008"
 .UC 6
 .SH NAME
 traceroute \- print the route packets take to network host
@@ -24,7 +24,7 @@
 .na
 .B traceroute
 [
-.B \-dDeFISnrvx
+.B \-adDeFISnrvx
 ] [
 .B \-f
 .I first_ttl
@@ -71,6 +71,9 @@
 .B \-w
 .I waittime
 ] [
+.B \-A
+.I as_server
+] [
 .B \-z
 .I pausemsecs
 ]
@@ -98,6 +101,13 @@
 .PP
 Other options are:
 .TP
+.B \-a
+Turn on AS# lookups for each hop encountered.
+.TP
+.B -A
+Turn  on  AS#  lookups  and  use the given server instead of the
+default.
+.TP
 .B \-e
 Firewall evasion mode.
 Use fixed destination ports for UDP and TCP probes.
@@ -443,3 +453,7 @@
 router that's filtering packets), but this is not implemented yet.
 .PP
 Please send bug reports to traceroute at ee.lbl.gov.
+.PP
+The AS number capability reports information that may sometimes be
+inaccurate due to discrepancies between the contents of the
+routing database server and the current state of the Internet.

==== //depot/projects/e500/contrib/traceroute/traceroute.c#3 (text+ko) ====

@@ -28,7 +28,7 @@
     "@(#)$Id: traceroute.c,v 1.68 2000/12/14 08:04:33 leres Exp $ (LBL)";
 #endif
 static const char rcsid[] =
-    "$FreeBSD: src/contrib/traceroute/traceroute.c,v 1.34 2007/07/01 12:08:05 gnn Exp $";
+    "$FreeBSD: src/contrib/traceroute/traceroute.c,v 1.35 2008/02/20 23:29:52 rpaulo Exp $";
 #endif
 
 /*
@@ -263,6 +263,7 @@
 
 #include "findsaddr.h"
 #include "ifaddrlist.h"
+#include "as.h"
 #include "traceroute.h"
 
 /* Maximum number of gateways (include room for one noop) */
@@ -350,6 +351,9 @@
 int verbose;
 int waittime = 5;		/* time to wait for response (in seconds) */
 int nflag;			/* print addresses numerically */
+int as_path;			/* print as numbers for each hop */
+char *as_server = NULL;
+void *asn;
 #ifdef CANT_HACK_IPCKSUM
 int doipcksum = 0;		/* don't calculate ip checksums by default */
 #else
@@ -535,9 +539,17 @@
 		prog = argv[0];
 
 	opterr = 0;
-	while ((op = getopt(argc, argv, "edDFInrSvxf:g:i:M:m:P:p:q:s:t:w:z:")) != EOF)
+	while ((op = getopt(argc, argv, "aA:edDFInrSvxf:g:i:M:m:P:p:q:s:t:w:z:")) != EOF)
 		switch (op) {
-
+		case 'a':
+			as_path = 1;
+			break;
+			
+		case 'A':
+			as_path = 1;
+			as_server = optarg;
+			break;
+			    
 		case 'd':
 			options |= SO_DEBUG;
 			break;
@@ -913,6 +925,16 @@
 		exit (1);
 	}
 
+	if (as_path) {
+		asn = as_setup(as_server);
+		if (asn == NULL) {
+			Fprintf(stderr, "%s: as_setup failed, AS# lookups"
+			    " disabled\n", prog);
+			(void)fflush(stderr);
+			as_path = 0;
+		}
+	}
+	
 #if	defined(IPSEC) && defined(IPSEC_POLICY_IPSEC)
 	if (setpolicy(sndsock, "in bypass") < 0)
 		errx(1, "%s", ipsec_strerror());
@@ -1118,6 +1140,8 @@
 		    (unreachable > 0 && unreachable >= nprobes - 1))
 			break;
 	}
+	if (as_path)
+		as_shutdown(asn);
 	exit(0);
 }
 
@@ -1458,6 +1482,9 @@
 	hlen = ip->ip_hl << 2;
 	cc -= hlen;
 
+	if (as_path)
+		Printf(" [AS%d]", as_lookup(asn, &from->sin_addr));
+
 	if (nflag)
 		Printf(" %s", inet_ntoa(from->sin_addr));
 	else
@@ -1764,8 +1791,8 @@
 
 	Fprintf(stderr, "Version %s\n", version);
 	Fprintf(stderr,
-	    "Usage: %s [-dDeFInrSvx] [-f first_ttl] [-g gateway] [-i iface]\n"
+	    "Usage: %s [-adDeFInrSvx] [-f first_ttl] [-g gateway] [-i iface]\n"
 	    "\t[-m max_ttl] [-p port] [-P proto] [-q nqueries] [-s src_addr]\n"
-	    "\t[-t tos] [-w waittime] [-z pausemsecs] host [packetlen]\n", prog);
+	    "\t[-t tos] [-w waittime] [-A as_server] [-z pausemsecs] host [packetlen]\n", prog);
 	exit(1);
 }

==== //depot/projects/e500/games/fortune/strfile/strfile.c#2 (text+ko) ====

@@ -46,7 +46,7 @@
 #endif /* not lint */
 #endif
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/games/fortune/strfile/strfile.c,v 1.28 2005/02/17 18:06:37 ru Exp $");
+__FBSDID("$FreeBSD: src/games/fortune/strfile/strfile.c,v 1.29 2008/02/19 07:09:17 ru Exp $");
 
 # include	<sys/param.h>
 # include	<sys/endian.h>
@@ -270,7 +270,7 @@
 {
 	int	ch;
 
-	while ((ch = getopt(argc, argv, "Cc:iorsx")) != EOF)
+	while ((ch = getopt(argc, argv, "Cc:iorsx")) != -1)
 		switch(ch) {
 		case 'C':			/* embedded comments */
 			Cflag++;

==== //depot/projects/e500/gnu/usr.bin/man/man/man.c#3 (text+ko) ====

@@ -16,7 +16,7 @@
 
 #ifndef lint
 static const char rcsid[] =
-  "$FreeBSD: src/gnu/usr.bin/man/man/man.c,v 1.65 2007/09/25 21:41:22 edwin Exp $";
+  "$FreeBSD: src/gnu/usr.bin/man/man/man.c,v 1.66 2008/02/19 07:09:17 ru Exp $";
 #endif /* not lint */
 
 #define MAN_MAIN
@@ -324,7 +324,7 @@
   extern void downcase ();
   extern char *manpath ();
 
-  while ((c = getopt (argc, argv, args)) != EOF)
+  while ((c = getopt (argc, argv, args)) != -1)
     {
       switch (c)
 	{

==== //depot/projects/e500/gnu/usr.bin/man/manpath/manpath.c#2 (text+ko) ====

@@ -13,7 +13,7 @@
  * The University of Texas at Austin
  * Austin, Texas  78712
  *
- * $FreeBSD: src/gnu/usr.bin/man/manpath/manpath.c,v 1.13 2002/10/27 02:12:52 kris Exp $
+ * $FreeBSD: src/gnu/usr.bin/man/manpath/manpath.c,v 1.14 2008/02/19 07:09:18 ru Exp $
  */
 
 #define MANPATH_MAIN
@@ -78,7 +78,7 @@
 
   prognam = mkprogname (argv[0]);
 
-  while ((c = getopt (argc, argv, "dhLq?")) != EOF)
+  while ((c = getopt (argc, argv, "dhLq?")) != -1)
     {
       switch (c)
 	{

==== //depot/projects/e500/lib/libarchive/archive_entry_strmode.c#2 (text+ko) ====

@@ -24,7 +24,7 @@
  */
 
 #include "archive_platform.h"
-__FBSDID("$FreeBSD: src/lib/libarchive/archive_entry_strmode.c,v 1.1 2007/12/30 04:58:21 kientzle Exp $");
+__FBSDID("$FreeBSD: src/lib/libarchive/archive_entry_strmode.c,v 1.2 2008/02/19 05:49:02 kientzle Exp $");
 
 #ifdef HAVE_SYS_STAT_H
 #include <sys/stat.h>
@@ -65,15 +65,15 @@
 			bp[i+1] = '-';
 
 	if (mode & S_ISUID) {
-		if (mode & S_IXUSR) bp[3] = 's';
+		if (mode & 0100) bp[3] = 's';
 		else bp[3] = 'S';
 	}
 	if (mode & S_ISGID) {
-		if (mode & S_IXGRP) bp[6] = 's';
+		if (mode & 0010) bp[6] = 's';
 		else bp[6] = 'S';
 	}
 	if (mode & S_ISVTX) {
-		if (mode & S_IXOTH) bp[9] = 't';
+		if (mode & 0001) bp[9] = 't';
 		else bp[9] = 'T';
 	}
 	if (archive_entry_acl_count(entry, ARCHIVE_ENTRY_ACL_TYPE_ACCESS))

==== //depot/projects/e500/lib/libarchive/archive_platform.h#4 (text+ko) ====

@@ -22,7 +22,7 @@
  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
- * $FreeBSD: src/lib/libarchive/archive_platform.h,v 1.28 2007/12/30 04:58:21 kientzle Exp $
+ * $FreeBSD: src/lib/libarchive/archive_platform.h,v 1.29 2008/02/19 06:06:13 kientzle Exp $
  */
 
 /*
@@ -36,7 +36,10 @@
 #ifndef ARCHIVE_PLATFORM_H_INCLUDED
 #define	ARCHIVE_PLATFORM_H_INCLUDED
 
-#if defined(PLATFORM_CONFIG_H)
+#ifdef _WIN32
+#include "config_windows.h"
+#include "archive_windows.h"
+#elif defined(PLATFORM_CONFIG_H)
 /* Use hand-built config.h in environments that need it. */
 #include PLATFORM_CONFIG_H
 #elif defined(HAVE_CONFIG_H)

==== //depot/projects/e500/lib/libarchive/archive_read_open_filename.c#3 (text+ko) ====

@@ -24,7 +24,7 @@
  */
 
 #include "archive_platform.h"
-__FBSDID("$FreeBSD: src/lib/libarchive/archive_read_open_filename.c,v 1.20 2007/06/26 03:06:48 kientzle Exp $");
+__FBSDID("$FreeBSD: src/lib/libarchive/archive_read_open_filename.c,v 1.21 2008/02/19 06:10:48 kientzle Exp $");
 
 #ifdef HAVE_SYS_STAT_H
 #include <sys/stat.h>
@@ -47,6 +47,10 @@
 
 #include "archive.h"
 
+#ifndef O_BINARY
+#define O_BINARY 0
+#endif
+
 struct read_file_data {
 	int	 fd;
 	size_t	 block_size;
@@ -113,7 +117,7 @@
 		return (ARCHIVE_FATAL);
 	}
 	if (mine->filename[0] != '\0')
-		mine->fd = open(mine->filename, O_RDONLY);
+		mine->fd = open(mine->filename, O_RDONLY | O_BINARY);
 	else
 		mine->fd = 0; /* Fake "open" for stdin. */
 	if (mine->fd < 0) {

==== //depot/projects/e500/lib/libarchive/archive_read_support_compression_bzip2.c#3 (text+ko) ====

@@ -25,7 +25,7 @@
 
 #include "archive_platform.h"
 
-__FBSDID("$FreeBSD: src/lib/libarchive/archive_read_support_compression_bzip2.c,v 1.16 2007/05/29 01:00:18 kientzle Exp $");
+__FBSDID("$FreeBSD: src/lib/libarchive/archive_read_support_compression_bzip2.c,v 1.17 2008/02/19 05:44:59 kientzle Exp $");
 
 #ifdef HAVE_ERRNO_H
 #include <errno.h>
@@ -145,7 +145,7 @@
 	(void)buff;	/* UNUSED */
 	(void)n;	/* UNUSED */
 
-	archive_set_error(a, -1,
+	archive_set_error(&a->archive, -1,
 	    "This version of libarchive was compiled without bzip2 support");
 	return (ARCHIVE_FATAL);
 }

==== //depot/projects/e500/lib/libarchive/archive_read_support_compression_gzip.c#3 (text+ko) ====

@@ -25,7 +25,7 @@
 
 #include "archive_platform.h"
 
-__FBSDID("$FreeBSD: src/lib/libarchive/archive_read_support_compression_gzip.c,v 1.15 2007/05/29 01:00:19 kientzle Exp $");
+__FBSDID("$FreeBSD: src/lib/libarchive/archive_read_support_compression_gzip.c,v 1.16 2008/02/19 05:44:59 kientzle Exp $");
 
 
 #ifdef HAVE_ERRNO_H
@@ -146,7 +146,7 @@
 	(void)buff;	/* UNUSED */
 	(void)n;	/* UNUSED */
 
-	archive_set_error(a, -1,
+	archive_set_error(&a->archive, -1,
 	    "This version of libarchive was compiled without gzip support");
 	return (ARCHIVE_FATAL);
 }

==== //depot/projects/e500/lib/libarchive/archive_read_support_format_ar.c#4 (text+ko) ====

@@ -26,7 +26,7 @@
  */
 
 #include "archive_platform.h"
-__FBSDID("$FreeBSD: src/lib/libarchive/archive_read_support_format_ar.c,v 1.7 2007/12/30 04:58:21 kientzle Exp $");
+__FBSDID("$FreeBSD: src/lib/libarchive/archive_read_support_format_ar.c,v 1.8 2008/02/19 05:54:24 kientzle Exp $");
 
 #ifdef HAVE_SYS_STAT_H
 #include <sys/stat.h>
@@ -268,8 +268,7 @@
 		/* This must come before any call to _read_ahead. */
 		ar_parse_common_header(ar, entry, h);
 		archive_entry_copy_pathname(entry, filename);
-		archive_entry_set_mode(entry,
-		    S_IFREG | (archive_entry_mode(entry) & 0777));
+		archive_entry_set_filetype(entry, AE_IFREG);
 		/* Get the size of the filename table. */
 		number = ar_atol10(h + AR_size_offset, AR_size_size);
 		if (number > SIZE_MAX) {
@@ -375,8 +374,7 @@
 		/* Parse the time, owner, mode, size fields. */
 		r = ar_parse_common_header(ar, entry, h);
 		/* Force the file type to a regular file. */
-		archive_entry_set_mode(entry,
-		    S_IFREG | (archive_entry_mode(entry) & 0777));
+		archive_entry_set_filetype(entry, AE_IFREG);
 		return (r);
 	}
 

==== //depot/projects/e500/lib/libarchive/archive_read_support_format_iso9660.c#4 (text+ko) ====

@@ -24,7 +24,7 @@
  */
 
 #include "archive_platform.h"
-__FBSDID("$FreeBSD: src/lib/libarchive/archive_read_support_format_iso9660.c,v 1.24 2007/12/30 04:58:21 kientzle Exp $");
+__FBSDID("$FreeBSD: src/lib/libarchive/archive_read_support_format_iso9660.c,v 1.25 2008/02/19 06:02:01 kientzle Exp $");
 
 #ifdef HAVE_ERRNO_H
 #include <errno.h>
@@ -1064,24 +1064,28 @@
 	if (t->tm_isdst)
 		t->tm_hour -= 1;
 	return (mktime(t)); /* Re-convert. */
-#else
-	/*
-	 * If you don't have tm_gmtoff, let's try resetting the timezone
-	 * (yecch!).
-	 */
+#elif defined(HAVE_SETENV) && defined(HAVE_UNSETENV) && defined(HAVE_TZSET)
+	/* No timegm() and no tm_gmtoff, let's try forcing mktime() to UTC. */
 	time_t ret;
 	char *tz;
 
+	/* Reset the timezone, remember the old one. */
 	tz = getenv("TZ");
 	setenv("TZ", "UTC 0", 1);
 	tzset();
+
 	ret = mktime(t);
+
+	/* Restore the previous timezone. */
 	if (tz)
 	    setenv("TZ", tz, 1);
 	else
 	    unsetenv("TZ");
 	tzset();
 	return ret;
+#else
+	/* <sigh> We have no choice but to use localtime instead of UTC. */
+	return (mktime(t));
 #endif
 }
 

==== //depot/projects/e500/lib/libarchive/archive_read_support_format_mtree.c#2 (text+ko) ====

@@ -24,7 +24,7 @@
  */
 
 #include "archive_platform.h"
-__FBSDID("$FreeBSD: src/lib/libarchive/archive_read_support_format_mtree.c,v 1.1 2007/12/30 04:58:21 kientzle Exp $");
+__FBSDID("$FreeBSD: src/lib/libarchive/archive_read_support_format_mtree.c,v 1.2 2008/02/19 06:07:10 kientzle Exp $");
 
 #ifdef HAVE_SYS_STAT_H
 #include <sys/stat.h>
@@ -50,6 +50,10 @@
 #include "archive_read_private.h"
 #include "archive_string.h"
 
+#ifndef O_BINARY
+#define	O_BINARY 0
+#endif
+
 struct mtree_entry {
 	struct mtree_entry *next;
 	char *name;
@@ -371,7 +375,8 @@
 		 * the contents file on disk.)
 		 */
 		if (archive_strlen(&mtree->contents_name) > 0) {
-			mtree->fd = open(mtree->contents_name.s, O_RDONLY);
+			mtree->fd = open(mtree->contents_name.s,
+			    O_RDONLY | O_BINARY);
 			if (mtree->fd < 0) {
 				archive_set_error(&a->archive, errno,
 				    "Can't open content=\"%s\"",
@@ -380,7 +385,8 @@
 			}
 		} else {
 			/* If the specified path opens, use it. */
-			mtree->fd = open(mtree->current_dir.s, O_RDONLY);
+			mtree->fd = open(mtree->current_dir.s,
+			    O_RDONLY | O_BINARY);
 			/* But don't fail if it's not there. */
 		}
 

==== //depot/projects/e500/lib/libarchive/archive_write_disk.c#7 (text+ko) ====

@@ -25,7 +25,7 @@
  */
 
 #include "archive_platform.h"
-__FBSDID("$FreeBSD: src/lib/libarchive/archive_write_disk.c,v 1.21 2008/01/18 06:16:08 kientzle Exp $");
+__FBSDID("$FreeBSD: src/lib/libarchive/archive_write_disk.c,v 1.22 2008/02/19 05:39:35 kientzle Exp $");
 
 #ifdef HAVE_SYS_TYPES_H
 #include <sys/types.h>
@@ -45,6 +45,9 @@
 #ifdef HAVE_SYS_TIME_H
 #include <sys/time.h>
 #endif
+#ifdef HAVE_SYS_UTIME_H
+#include <sys/utime.h>
+#endif
 
 #ifdef HAVE_EXT2FS_EXT2_FS_H
 #include <ext2fs/ext2_fs.h>	/* for Linux file flags */
@@ -89,6 +92,10 @@
 #include "archive_entry.h"
 #include "archive_private.h"
 
+#ifndef O_BINARY
+#define O_BINARY 0
+#endif
+
 struct fixup_entry {
 	struct fixup_entry	*next;
 	mode_t			 mode;
@@ -636,7 +643,9 @@
 	a->archive.vtable = archive_write_disk_vtable();
 	a->lookup_uid = trivial_lookup_uid;
 	a->lookup_gid = trivial_lookup_gid;
+#ifdef HAVE_GETEUID
 	a->user_uid = geteuid();
+#endif /* HAVE_GETEUID */
 	if (archive_string_ensure(&a->path_safe, 512) == NULL) {
 		free(a);
 		return (NULL);
@@ -667,7 +676,7 @@
 		return;
 
 	/* Try to record our starting dir. */
-	a->restore_pwd = open(".", O_RDONLY);
+	a->restore_pwd = open(".", O_RDONLY | O_BINARY);
 	if (a->restore_pwd < 0)
 		return;
 
@@ -705,6 +714,14 @@
 	int ret = ARCHIVE_OK, en;
 
 	if (a->flags & ARCHIVE_EXTRACT_UNLINK && !S_ISDIR(a->mode)) {
+		/*
+		 * TODO: Fix this.  Apparently, there are platforms
+		 * that still allow root to hose the entire filesystem
+		 * by unlinking a dir.  The S_ISDIR() test above
+		 * prevents us from using unlink() here if the new
+		 * object is a dir, but that doesn't mean the old
+		 * object isn't a dir.
+		 */
 		if (unlink(a->name) == 0) {
 			/* We removed it, we're done. */
 		} else if (errno == ENOENT) {
@@ -851,7 +868,7 @@
 		 * for hardlink entries.
 		 */
 		if (r == 0 && a->filesize > 0) {
-			a->fd = open(a->name, O_WRONLY | O_TRUNC);
+			a->fd = open(a->name, O_WRONLY | O_TRUNC | O_BINARY);
 			if (a->fd < 0)
 				r = errno;
 		}
@@ -876,24 +893,38 @@
 	 */
 	mode = final_mode & 0777;
 
-	switch (a->mode & S_IFMT) {
+	switch (a->mode & AE_IFMT) {
 	default:
 		/* POSIX requires that we fall through here. */
 		/* FALLTHROUGH */
-	case S_IFREG:
+	case AE_IFREG:
 		a->fd = open(a->name,
-		    O_WRONLY | O_CREAT | O_EXCL, mode);
+		    O_WRONLY | O_CREAT | O_EXCL | O_BINARY, mode);
 		r = (a->fd < 0);
 		break;
-	case S_IFCHR:
+	case AE_IFCHR:
+#ifdef HAVE_MKNOD
+		/* Note: we use AE_IFCHR for the case label, and
+		 * S_IFCHR for the mknod() call.  This is correct.  */
 		r = mknod(a->name, mode | S_IFCHR,
 		    archive_entry_rdev(a->entry));
+#else
+		/* TODO: Find a better way to warn about our inability
+		 * to restore a char device node. */
+		return (EINVAL);
+#endif /* HAVE_MKNOD */
 		break;
-	case S_IFBLK:
+	case AE_IFBLK:
+#ifdef HAVE_MKNOD
 		r = mknod(a->name, mode | S_IFBLK,
 		    archive_entry_rdev(a->entry));
+#else
+		/* TODO: Find a better way to warn about our inability
+		 * to restore a block device node. */
+		return (EINVAL);
+#endif /* HAVE_MKNOD */
 		break;
-	case S_IFDIR:
+	case AE_IFDIR:
 		mode = (mode | MINIMUM_DIR_MODE) & MAXIMUM_DIR_MODE;
 		r = mkdir(a->name, mode);
 		if (r == 0) {
@@ -906,8 +937,14 @@
 			a->todo &= ~TODO_MODE;
 		}
 		break;
-	case S_IFIFO:
+	case AE_IFIFO:
+#ifdef HAVE_MKFIFO
 		r = mkfifo(a->name, mode);
+#else
+		/* TODO: Find a better way to warn about our inability
+		 * to restore a fifo. */
+		return (EINVAL);
+#endif /* HAVE_MKFIFO */
 		break;
 	}
 
@@ -1453,28 +1490,34 @@
 	}
 
 #ifdef HAVE_FCHOWN
-	if (a->fd >= 0 && fchown(a->fd, a->uid, a->gid) == 0)
-		goto success;
+	/* If we have an fd, we can avoid a race. */
+	if (a->fd >= 0 && fchown(a->fd, a->uid, a->gid) == 0) {
+		/* We've set owner and know uid/gid are correct. */
+		a->todo &= ~(TODO_OWNER | TODO_SGID_CHECK | TODO_SUID_CHECK);
+		return (ARCHIVE_OK);
+	}
 #endif
 
+	/* We prefer lchown() but will use chown() if that's all we have. */
+	/* Of course, if we have neither, this will always fail. */
 #ifdef HAVE_LCHOWN
-	if (lchown(a->name, a->uid, a->gid) == 0)
-		goto success;
-#else
-	if (!S_ISLNK(a->mode) && chown(a->name, a->uid, a->gid) == 0)
-		goto success;
+	if (lchown(a->name, a->uid, a->gid) == 0) {
+		/* We've set owner and know uid/gid are correct. */
+		a->todo &= ~(TODO_OWNER | TODO_SGID_CHECK | TODO_SUID_CHECK);
+		return (ARCHIVE_OK);
+	}
+#elif HAVE_CHOWN
+	if (!S_ISLNK(a->mode) && chown(a->name, a->uid, a->gid) == 0) {
+		/* We've set owner and know uid/gid are correct. */
+		a->todo &= ~(TODO_OWNER | TODO_SGID_CHECK | TODO_SUID_CHECK);
+		return (ARCHIVE_OK);
+	}
 #endif
 
 	archive_set_error(&a->archive, errno,
 	    "Can't set user=%d/group=%d for %s", a->uid, a->gid,
 	    a->name);
 	return (ARCHIVE_WARN);
-success:
-	a->todo &= ~TODO_OWNER;
-	/* We know the user/group are correct now. */
-	a->todo &= ~TODO_SGID_CHECK;
-	a->todo &= ~TODO_SUID_CHECK;
-	return (ARCHIVE_OK);
 }
 
 #ifdef HAVE_UTIMES
@@ -1812,7 +1855,7 @@
 
 	/* If we weren't given an fd, open it ourselves. */
 	if (myfd < 0)
-		myfd = open(name, O_RDONLY|O_NONBLOCK);
+		myfd = open(name, O_RDONLY | O_NONBLOCK | O_BINARY);
 	if (myfd < 0)
 		return (ARCHIVE_OK);
 

==== //depot/projects/e500/lib/libarchive/archive_write_open_filename.c#2 (text+ko) ====

@@ -24,7 +24,7 @@
  */
 
 #include "archive_platform.h"
-__FBSDID("$FreeBSD: src/lib/libarchive/archive_write_open_filename.c,v 1.19 2007/01/09 08:05:56 kientzle Exp $");
+__FBSDID("$FreeBSD: src/lib/libarchive/archive_write_open_filename.c,v 1.20 2008/02/19 05:46:58 kientzle Exp $");
 
 #ifdef HAVE_SYS_STAT_H
 #include <sys/stat.h>
@@ -47,6 +47,10 @@
 
 #include "archive.h"
 
+#ifndef O_BINARY
+#define O_BINARY 0
+#endif
+
 struct write_file_data {
 	int		fd;
 	char		filename[1];
@@ -95,7 +99,7 @@
 	struct stat st;
 
 	mine = (struct write_file_data *)client_data;
-	flags = O_WRONLY | O_CREAT | O_TRUNC;
+	flags = O_WRONLY | O_CREAT | O_TRUNC | O_BINARY;
 
 	/*
 	 * Open the file.

==== //depot/projects/e500/lib/libarchive/archive_write_set_compression_gzip.c#4 (text+ko) ====

@@ -28,7 +28,7 @@
 /* Don't compile this if we don't have zlib. */
 #if HAVE_ZLIB_H
 
-__FBSDID("$FreeBSD: src/lib/libarchive/archive_write_set_compression_gzip.c,v 1.15 2007/12/30 04:58:21 kientzle Exp $");
+__FBSDID("$FreeBSD: src/lib/libarchive/archive_write_set_compression_gzip.c,v 1.16 2008/02/21 03:21:50 kientzle Exp $");
 
 #ifdef HAVE_ERRNO_H
 #include <errno.h>
@@ -106,6 +106,21 @@
 			return (ret);
 	}
 
+	/*
+	 * The next check is a temporary workaround until the gzip
+	 * code can be overhauled some.  The code should not require
+	 * that compressed_buffer_size == bytes_per_block.  Removing
+	 * this assumption will allow us to compress larger chunks at
+	 * a time, which should improve overall performance
+	 * marginally.  As a minor side-effect, such a cleanup would
+	 * allow us to support truly arbitrary block sizes.
+	 */
+	if (a->bytes_per_block < 10) {
+		archive_set_error(&a->archive, EINVAL,
+		    "GZip compressor requires a minimum 10 byte block size");
+		return (ARCHIVE_FATAL);
+	}
+
 	state = (struct private_data *)malloc(sizeof(*state));
 	if (state == NULL) {
 		archive_set_error(&a->archive, ENOMEM,
@@ -114,6 +129,10 @@
 	}
 	memset(state, 0, sizeof(*state));
 
+	/*
+	 * See comment above.  We should set compressed_buffer_size to
+	 * max(bytes_per_block, 65536), but the code can't handle that yet.
+	 */
 	state->compressed_buffer_size = a->bytes_per_block;
 	state->compressed = (unsigned char *)malloc(state->compressed_buffer_size);
 	state->crc = crc32(0L, NULL, 0);

==== //depot/projects/e500/lib/libarchive/config_freebsd.h#3 (text+ko) ====

@@ -22,7 +22,7 @@
  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
- * $FreeBSD: src/lib/libarchive/config_freebsd.h,v 1.5 2007/05/29 01:00:20 kientzle Exp $
+ * $FreeBSD: src/lib/libarchive/config_freebsd.h,v 1.6 2008/02/19 05:40:28 kientzle Exp $
  */
 
 /* FreeBSD 5.0 and later have ACL support. */
@@ -37,6 +37,7 @@
 
 #define	HAVE_BZLIB_H 1
 #define	HAVE_CHFLAGS 1
+#define	HAVE_CHOWN 1
 #define	HAVE_DECL_INT64_MAX 1
 #define	HAVE_DECL_INT64_MIN 1
 #define	HAVE_DECL_SIZE_MAX 1
@@ -53,6 +54,7 @@
 #define	HAVE_FCNTL_H 1
 #define	HAVE_FSEEKO 1
 #define	HAVE_FUTIMES 1
+#define	HAVE_GETEUID 1
 #define	HAVE_GRP_H 1
 #define	HAVE_INTTYPES_H 1
 #define	HAVE_LCHFLAGS 1
@@ -65,10 +67,12 @@
 #define	HAVE_MEMSET 1
 #define	HAVE_MKDIR 1
 #define	HAVE_MKFIFO 1
+#define	HAVE_MKNOD 1
 #define	HAVE_POLL 1
 #define	HAVE_POLL_H 1
 #define	HAVE_PWD_H 1
 #define	HAVE_SELECT 1
+#define	HAVE_SETENV 1
 #define	HAVE_STDINT_H 1
 #define	HAVE_STDLIB_H 1
 #define	HAVE_STRCHR 1
@@ -87,9 +91,12 @@
 #define	HAVE_SYS_STAT_H 1
 #define	HAVE_SYS_TIME_H 1
 #define	HAVE_SYS_TYPES_H 1
+#undef	HAVE_SYS_UTIME_H
 #define	HAVE_SYS_WAIT_H 1
 #define	HAVE_TIMEGM 1
+#define	HAVE_TZSET 1
 #define	HAVE_UNISTD_H 1
+#define	HAVE_UNSETENV 1
 #define	HAVE_UTIME 1
 #define	HAVE_UTIMES 1
 #define	HAVE_UTIME_H 1

==== //depot/projects/e500/lib/libarchive/test/main.c#5 (text+ko) ====

@@ -34,16 +34,13 @@
  */
 #define PROGRAM "LIBARCHIVE"
 
-/*
- * Various utility routines useful for test programs.
- * Each test program is linked against this file.
- */
 #include <errno.h>
+#include <locale.h>
 #include <stdarg.h>
 #include <time.h>
 
 #include "test.h"
-__FBSDID("$FreeBSD: src/lib/libarchive/test/main.c,v 1.9 2008/01/01 22:28:04 kientzle Exp $");
+__FBSDID("$FreeBSD: src/lib/libarchive/test/main.c,v 1.10 2008/02/19 05:52:30 kientzle Exp $");
 
 /*
  * "list.h" is simply created by "grep DEFINE_TEST"; it has
@@ -226,20 +223,21 @@
 }
 
 /* Generic assert() just displays the failed condition. */
-void
+int
 test_assert(const char *file, int line, int value, const char *condition, void *extra)
 {
 	++assertions;
 	if (value) {
 		msg[0] = '\0';
-		return;
+		return (value);
 	}
 	failures ++;
 	if (previous_failures(file, line))
-		return;
+		return (value);
 	fprintf(stderr, "%s:%d: Assertion failed\n", file, line);
 	fprintf(stderr, "   Condition: %s\n", condition);
 	report_failure(extra);
+	return (value);
 }
 
 /* assertEqualInt() displays the values of the two integers. */
@@ -553,6 +551,8 @@
 		    tests[i].name);
 		exit(1);
 	}
+	/* Explicitly reset the locale before each test. */
+	setlocale(LC_ALL, "C");
 	/* Run the actual test. */
 	(*tests[i].func)();
 	/* Summarize the results of this test. */


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


More information about the p4-projects mailing list