Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 7 Apr 2005 06:28:50 GMT
From:      David Xu <davidxu@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 74639 for review
Message-ID:  <200504070628.j376Sosn018482@repoman.freebsd.org>

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

Change 74639 by davidxu@davidxu_celeron on 2005/04/07 06:28:43

	IFC.

Affected files ...

.. //depot/projects/davidxu_thread/src/Makefile.inc1#12 integrate
.. //depot/projects/davidxu_thread/src/etc/defaults/rc.conf#9 integrate
.. //depot/projects/davidxu_thread/src/etc/rc.d/dumpon#2 integrate
.. //depot/projects/davidxu_thread/src/etc/rc.d/pf#2 integrate
.. //depot/projects/davidxu_thread/src/gnu/usr.bin/gdb/libgdb/fbsd-threads.c#4 integrate
.. //depot/projects/davidxu_thread/src/include/Makefile#8 integrate
.. //depot/projects/davidxu_thread/src/include/pthread.h#3 integrate
.. //depot/projects/davidxu_thread/src/lib/libalias/alias.c#2 integrate
.. //depot/projects/davidxu_thread/src/lib/libarchive/archive_private.h#2 integrate
.. //depot/projects/davidxu_thread/src/lib/libarchive/archive_read.c#3 integrate
.. //depot/projects/davidxu_thread/src/lib/libarchive/archive_read_support_format_cpio.c#4 integrate
.. //depot/projects/davidxu_thread/src/lib/libarchive/archive_read_support_format_iso9660.c#2 integrate
.. //depot/projects/davidxu_thread/src/lib/libarchive/archive_read_support_format_tar.c#5 integrate
.. //depot/projects/davidxu_thread/src/lib/libarchive/archive_read_support_format_zip.c#2 integrate
.. //depot/projects/davidxu_thread/src/lib/libc/net/Makefile.inc#3 integrate
.. //depot/projects/davidxu_thread/src/lib/libc/net/gai_strerror.c#1 branch
.. //depot/projects/davidxu_thread/src/lib/libc/net/getaddrinfo.c#3 integrate
.. //depot/projects/davidxu_thread/src/lib/libc/net/name6.c#4 integrate
.. //depot/projects/davidxu_thread/src/lib/libc/yp/yplib.c#4 integrate
.. //depot/projects/davidxu_thread/src/lib/libthr/Makefile#3 integrate
.. //depot/projects/davidxu_thread/src/lib/libthr/pthread.map#2 integrate
.. //depot/projects/davidxu_thread/src/lib/libthr/thread/thr_barrier.c#3 integrate
.. //depot/projects/davidxu_thread/src/lib/libthr/thread/thr_init.c#6 integrate
.. //depot/projects/davidxu_thread/src/lib/libthr/thread/thr_list.c#2 integrate
.. //depot/projects/davidxu_thread/src/lib/libthr/thread/thr_private.h#6 integrate
.. //depot/projects/davidxu_thread/src/lib/libthread_db/libpthread_db.c#3 integrate
.. //depot/projects/davidxu_thread/src/lib/libthread_db/libthr_db.c#4 integrate
.. //depot/projects/davidxu_thread/src/lib/libthread_db/thread_db.h#3 integrate
.. //depot/projects/davidxu_thread/src/lib/msun/Makefile#7 integrate
.. //depot/projects/davidxu_thread/src/lib/msun/man/exp.3#4 integrate
.. //depot/projects/davidxu_thread/src/lib/msun/man/math.3#6 integrate
.. //depot/projects/davidxu_thread/src/lib/msun/src/k_rem_pio2f.c#2 integrate
.. //depot/projects/davidxu_thread/src/lib/msun/src/math.h#6 integrate
.. //depot/projects/davidxu_thread/src/lib/msun/src/s_exp2.c#1 branch
.. //depot/projects/davidxu_thread/src/lib/msun/src/s_exp2f.c#1 branch
.. //depot/projects/davidxu_thread/src/libexec/getty/chat.c#2 integrate
.. //depot/projects/davidxu_thread/src/libexec/getty/extern.h#2 integrate
.. //depot/projects/davidxu_thread/src/libexec/getty/init.c#2 integrate
.. //depot/projects/davidxu_thread/src/libexec/getty/main.c#2 integrate
.. //depot/projects/davidxu_thread/src/libexec/rexecd/rexecd.c#7 integrate
.. //depot/projects/davidxu_thread/src/libexec/rtld-aout/shlib.c#2 edit
.. //depot/projects/davidxu_thread/src/release/doc/en_US.ISO8859-1/relnotes/common/new.sgml#8 integrate
.. //depot/projects/davidxu_thread/src/release/doc/share/sgml/release.ent#3 integrate
.. //depot/projects/davidxu_thread/src/release/doc/zh_CN.GB2312/hardware/common/dev.sgml#3 integrate
.. //depot/projects/davidxu_thread/src/release/doc/zh_CN.GB2312/installation/common/install.sgml#3 integrate
.. //depot/projects/davidxu_thread/src/release/doc/zh_CN.GB2312/relnotes/common/new.sgml#3 integrate
.. //depot/projects/davidxu_thread/src/sbin/devfs/devfs.8#5 integrate
.. //depot/projects/davidxu_thread/src/sbin/ipfw/ipfw2.c#4 integrate
.. //depot/projects/davidxu_thread/src/sbin/restore/dirs.c#3 integrate
.. //depot/projects/davidxu_thread/src/sbin/restore/restore.h#3 integrate
.. //depot/projects/davidxu_thread/src/share/man/man4/ng_source.4#4 integrate
.. //depot/projects/davidxu_thread/src/share/man/man9/devclass_get_drivers.9#1 branch
.. //depot/projects/davidxu_thread/src/share/man/man9/devclass_get_maxunit.9#2 integrate
.. //depot/projects/davidxu_thread/src/sys/alpha/alpha/critical.c#2 delete
.. //depot/projects/davidxu_thread/src/sys/alpha/alpha/machdep.c#8 integrate
.. //depot/projects/davidxu_thread/src/sys/alpha/alpha/mp_machdep.c#4 integrate
.. //depot/projects/davidxu_thread/src/sys/alpha/alpha/vm_machdep.c#5 integrate
.. //depot/projects/davidxu_thread/src/sys/alpha/include/critical.h#4 delete
.. //depot/projects/davidxu_thread/src/sys/alpha/include/proc.h#3 integrate
.. //depot/projects/davidxu_thread/src/sys/amd64/amd64/critical.c#2 delete
.. //depot/projects/davidxu_thread/src/sys/amd64/amd64/machdep.c#7 integrate
.. //depot/projects/davidxu_thread/src/sys/amd64/amd64/mp_machdep.c#5 integrate
.. //depot/projects/davidxu_thread/src/sys/amd64/amd64/vm_machdep.c#5 integrate
.. //depot/projects/davidxu_thread/src/sys/amd64/include/critical.h#4 delete
.. //depot/projects/davidxu_thread/src/sys/amd64/include/proc.h#3 integrate
.. //depot/projects/davidxu_thread/src/sys/amd64/include/tss.h#2 integrate
.. //depot/projects/davidxu_thread/src/sys/amd64/linux32/linux32_machdep.c#4 integrate
.. //depot/projects/davidxu_thread/src/sys/arm/arm/critical.c#2 delete
.. //depot/projects/davidxu_thread/src/sys/arm/arm/machdep.c#6 integrate
.. //depot/projects/davidxu_thread/src/sys/arm/arm/vm_machdep.c#6 integrate
.. //depot/projects/davidxu_thread/src/sys/arm/include/critical.h#2 delete
.. //depot/projects/davidxu_thread/src/sys/arm/include/proc.h#4 integrate
.. //depot/projects/davidxu_thread/src/sys/boot/pc98/boot2/Makefile#3 integrate
.. //depot/projects/davidxu_thread/src/sys/compat/ia32/ia32_signal.h#2 integrate
.. //depot/projects/davidxu_thread/src/sys/conf/Makefile.pc98#4 integrate
.. //depot/projects/davidxu_thread/src/sys/conf/NOTES#9 integrate
.. //depot/projects/davidxu_thread/src/sys/conf/files.alpha#4 integrate
.. //depot/projects/davidxu_thread/src/sys/conf/files.amd64#9 integrate
.. //depot/projects/davidxu_thread/src/sys/conf/files.arm#3 integrate
.. //depot/projects/davidxu_thread/src/sys/conf/files.i386#10 integrate
.. //depot/projects/davidxu_thread/src/sys/conf/files.ia64#3 integrate
.. //depot/projects/davidxu_thread/src/sys/conf/files.pc98#5 integrate
.. //depot/projects/davidxu_thread/src/sys/conf/files.powerpc#2 integrate
.. //depot/projects/davidxu_thread/src/sys/conf/files.sparc64#5 integrate
.. //depot/projects/davidxu_thread/src/sys/conf/kern.post.mk#5 integrate
.. //depot/projects/davidxu_thread/src/sys/conf/kmod.mk#6 integrate
.. //depot/projects/davidxu_thread/src/sys/conf/options#8 integrate
.. //depot/projects/davidxu_thread/src/sys/dev/acpi_support/acpi_fujitsu.c#2 integrate
.. //depot/projects/davidxu_thread/src/sys/dev/acpica/acpi_cpu.c#4 integrate
.. //depot/projects/davidxu_thread/src/sys/dev/acpica/acpi_if.m#5 integrate
.. //depot/projects/davidxu_thread/src/sys/dev/acpica/acpi_perf.c#6 integrate
.. //depot/projects/davidxu_thread/src/sys/dev/acpica/acpivar.h#9 integrate
.. //depot/projects/davidxu_thread/src/sys/dev/ata/ata-all.c#5 integrate
.. //depot/projects/davidxu_thread/src/sys/dev/ata/ata-all.h#4 integrate
.. //depot/projects/davidxu_thread/src/sys/dev/ata/ata-card.c#4 integrate
.. //depot/projects/davidxu_thread/src/sys/dev/ata/ata-cbus.c#3 integrate
.. //depot/projects/davidxu_thread/src/sys/dev/ata/ata-chipset.c#6 integrate
.. //depot/projects/davidxu_thread/src/sys/dev/ata/ata-isa.c#3 integrate
.. //depot/projects/davidxu_thread/src/sys/dev/ata/ata-lowlevel.c#8 integrate
.. //depot/projects/davidxu_thread/src/sys/dev/ata/ata-pci.c#4 integrate
.. //depot/projects/davidxu_thread/src/sys/dev/ata/ata-pci.h#4 integrate
.. //depot/projects/davidxu_thread/src/sys/dev/ata/atapi-cam.c#2 integrate
.. //depot/projects/davidxu_thread/src/sys/dev/ath/if_ath.c#8 integrate
.. //depot/projects/davidxu_thread/src/sys/dev/ath/if_athvar.h#5 integrate
.. //depot/projects/davidxu_thread/src/sys/dev/em/if_em.c#5 integrate
.. //depot/projects/davidxu_thread/src/sys/dev/hme/if_hme_sbus.c#3 integrate
.. //depot/projects/davidxu_thread/src/sys/dev/ieee488/upd7210.c#4 integrate
.. //depot/projects/davidxu_thread/src/sys/dev/ixgb/if_ixgb.c#6 integrate
.. //depot/projects/davidxu_thread/src/sys/dev/ixgb/if_ixgb.h#4 integrate
.. //depot/projects/davidxu_thread/src/sys/dev/sio/sio_pci.c#3 integrate
.. //depot/projects/davidxu_thread/src/sys/dev/syscons/apm/apm_saver.c#2 integrate
.. //depot/projects/davidxu_thread/src/sys/dev/usb/uftdi.c#3 integrate
.. //depot/projects/davidxu_thread/src/sys/dev/usb/usbdevs#8 integrate
.. //depot/projects/davidxu_thread/src/sys/fs/unionfs/union_vnops.c#8 integrate
.. //depot/projects/davidxu_thread/src/sys/geom/concat/g_concat.c#3 integrate
.. //depot/projects/davidxu_thread/src/sys/i386/cpufreq/est.c#3 integrate
.. //depot/projects/davidxu_thread/src/sys/i386/i386/critical.c#2 delete
.. //depot/projects/davidxu_thread/src/sys/i386/i386/machdep.c#7 integrate
.. //depot/projects/davidxu_thread/src/sys/i386/i386/mp_machdep.c#5 integrate
.. //depot/projects/davidxu_thread/src/sys/i386/i386/vm_machdep.c#5 integrate
.. //depot/projects/davidxu_thread/src/sys/i386/include/apm_bios.h#3 integrate
.. //depot/projects/davidxu_thread/src/sys/i386/include/bus.h#2 integrate
.. //depot/projects/davidxu_thread/src/sys/i386/include/bus_at386.h#5 delete
.. //depot/projects/davidxu_thread/src/sys/i386/include/bus_pc98.h#3 delete
.. //depot/projects/davidxu_thread/src/sys/i386/include/critical.h#4 delete
.. //depot/projects/davidxu_thread/src/sys/i386/include/legacyvar.h#2 integrate
.. //depot/projects/davidxu_thread/src/sys/i386/include/md_var.h#2 integrate
.. //depot/projects/davidxu_thread/src/sys/i386/include/pci_cfgreg.h#3 integrate
.. //depot/projects/davidxu_thread/src/sys/i386/include/proc.h#3 integrate
.. //depot/projects/davidxu_thread/src/sys/ia64/ia64/critical.c#2 delete
.. //depot/projects/davidxu_thread/src/sys/ia64/ia64/machdep.c#7 integrate
.. //depot/projects/davidxu_thread/src/sys/ia64/ia64/mp_machdep.c#2 integrate
.. //depot/projects/davidxu_thread/src/sys/ia64/ia64/vm_machdep.c#5 integrate
.. //depot/projects/davidxu_thread/src/sys/ia64/include/critical.h#4 delete
.. //depot/projects/davidxu_thread/src/sys/ia64/include/proc.h#3 integrate
.. //depot/projects/davidxu_thread/src/sys/kern/imgact_elf.c#3 integrate
.. //depot/projects/davidxu_thread/src/sys/kern/kern_fork.c#6 integrate
.. //depot/projects/davidxu_thread/src/sys/kern/kern_idle.c#3 integrate
.. //depot/projects/davidxu_thread/src/sys/kern/kern_jail.c#4 integrate
.. //depot/projects/davidxu_thread/src/sys/kern/kern_lock.c#8 integrate
.. //depot/projects/davidxu_thread/src/sys/kern/kern_mutex.c#3 integrate
.. //depot/projects/davidxu_thread/src/sys/kern/kern_proc.c#7 integrate
.. //depot/projects/davidxu_thread/src/sys/kern/kern_switch.c#7 integrate
.. //depot/projects/davidxu_thread/src/sys/kern/subr_bus.c#9 integrate
.. //depot/projects/davidxu_thread/src/sys/kern/subr_prf.c#4 integrate
.. //depot/projects/davidxu_thread/src/sys/kern/vfs_default.c#8 integrate
.. //depot/projects/davidxu_thread/src/sys/kern/vfs_lookup.c#6 integrate
.. //depot/projects/davidxu_thread/src/sys/kern/vfs_subr.c#10 integrate
.. //depot/projects/davidxu_thread/src/sys/kern/vfs_vnops.c#8 integrate
.. //depot/projects/davidxu_thread/src/sys/modules/ata/Makefile#2 integrate
.. //depot/projects/davidxu_thread/src/sys/modules/ata/atapicam/Makefile#1 branch
.. //depot/projects/davidxu_thread/src/sys/modules/cpufreq/Makefile#4 integrate
.. //depot/projects/davidxu_thread/src/sys/net80211/ieee80211_crypto.h#4 integrate
.. //depot/projects/davidxu_thread/src/sys/net80211/ieee80211_freebsd.h#4 integrate
.. //depot/projects/davidxu_thread/src/sys/net80211/ieee80211_input.c#8 integrate
.. //depot/projects/davidxu_thread/src/sys/net80211/ieee80211_node.h#4 integrate
.. //depot/projects/davidxu_thread/src/sys/net80211/ieee80211_proto.h#4 integrate
.. //depot/projects/davidxu_thread/src/sys/netgraph/bluetooth/drivers/bt3c/ng_bt3c_pccard.c#3 integrate
.. //depot/projects/davidxu_thread/src/sys/netgraph/bluetooth/socket/ng_btsocket.c#4 integrate
.. //depot/projects/davidxu_thread/src/sys/netgraph/bluetooth/socket/ng_btsocket_rfcomm.c#4 integrate
.. //depot/projects/davidxu_thread/src/sys/netgraph/ng_iface.c#6 integrate
.. //depot/projects/davidxu_thread/src/sys/netgraph/ng_source.c#6 integrate
.. //depot/projects/davidxu_thread/src/sys/netgraph/ng_source.h#5 integrate
.. //depot/projects/davidxu_thread/src/sys/netinet/ip_dummynet.c#5 integrate
.. //depot/projects/davidxu_thread/src/sys/netinet/ip_fw_pfil.c#4 integrate
.. //depot/projects/davidxu_thread/src/sys/pc98/i386/machdep.c#8 integrate
.. //depot/projects/davidxu_thread/src/sys/pc98/include/apm_bios.h#2 integrate
.. //depot/projects/davidxu_thread/src/sys/pc98/include/bus.h#2 integrate
.. //depot/projects/davidxu_thread/src/sys/pc98/include/bus_pc98.h#2 delete
.. //depot/projects/davidxu_thread/src/sys/pc98/include/critical.h#2 delete
.. //depot/projects/davidxu_thread/src/sys/pc98/include/md_var.h#2 integrate
.. //depot/projects/davidxu_thread/src/sys/pc98/include/pci_cfgreg.h#2 integrate
.. //depot/projects/davidxu_thread/src/sys/powerpc/include/critical.h#4 delete
.. //depot/projects/davidxu_thread/src/sys/powerpc/include/proc.h#2 integrate
.. //depot/projects/davidxu_thread/src/sys/powerpc/powerpc/critical.c#2 delete
.. //depot/projects/davidxu_thread/src/sys/powerpc/powerpc/machdep.c#8 integrate
.. //depot/projects/davidxu_thread/src/sys/powerpc/powerpc/vm_machdep.c#5 integrate
.. //depot/projects/davidxu_thread/src/sys/sparc64/include/critical.h#4 delete
.. //depot/projects/davidxu_thread/src/sys/sparc64/include/proc.h#3 integrate
.. //depot/projects/davidxu_thread/src/sys/sparc64/sparc64/critical.c#2 delete
.. //depot/projects/davidxu_thread/src/sys/sparc64/sparc64/machdep.c#7 integrate
.. //depot/projects/davidxu_thread/src/sys/sparc64/sparc64/mp_machdep.c#2 integrate
.. //depot/projects/davidxu_thread/src/sys/sparc64/sparc64/vm_machdep.c#5 integrate
.. //depot/projects/davidxu_thread/src/sys/sys/bus.h#7 integrate
.. //depot/projects/davidxu_thread/src/sys/sys/lock.h#2 integrate
.. //depot/projects/davidxu_thread/src/sys/sys/mutex.h#5 integrate
.. //depot/projects/davidxu_thread/src/sys/sys/systm.h#8 integrate
.. //depot/projects/davidxu_thread/src/sys/ufs/ffs/ffs_extern.h#4 integrate
.. //depot/projects/davidxu_thread/src/sys/ufs/ffs/ffs_inode.c#6 integrate
.. //depot/projects/davidxu_thread/src/sys/ufs/ffs/ffs_snapshot.c#8 integrate
.. //depot/projects/davidxu_thread/src/sys/ufs/ffs/ffs_softdep.c#7 integrate
.. //depot/projects/davidxu_thread/src/sys/ufs/ffs/ffs_vfsops.c#8 integrate
.. //depot/projects/davidxu_thread/src/sys/vm/vm_meter.c#4 integrate
.. //depot/projects/davidxu_thread/src/sys/vm/vnode_pager.c#8 integrate
.. //depot/projects/davidxu_thread/src/usr.bin/calendar/calendars/calendar.birthday#3 integrate
.. //depot/projects/davidxu_thread/src/usr.bin/make/job.c#11 integrate
.. //depot/projects/davidxu_thread/src/usr.bin/mt/mt.1#3 integrate
.. //depot/projects/davidxu_thread/src/usr.bin/top/machine.c#2 integrate

Differences ...

==== //depot/projects/davidxu_thread/src/Makefile.inc1#12 (text+ko) ====

@@ -1,5 +1,5 @@
 #
-# $FreeBSD: src/Makefile.inc1,v 1.490 2005/03/27 19:35:09 ru Exp $
+# $FreeBSD: src/Makefile.inc1,v 1.492 2005/04/06 01:55:43 peter Exp $
 #
 # Make command line options:
 #	-DNO_DYNAMICROOT do not link /bin and /sbin dynamically
@@ -223,6 +223,7 @@
 # Yes, the flags are redundant.
 LIB32MAKEENV=	MAKEOBJDIRPREFIX=${OBJTREE}/lib32 \
 		_SHLIBDIRPREFIX=${LIB32TMP} \
+		MACHINE=i386 \
 		MACHINE_ARCH=i386 \
 		INSTALL="sh ${.CURDIR}/tools/install.sh" \
 		PATH=${TMPPATH} \
@@ -454,7 +455,7 @@
 WMAKE_TGTS+=	_cross-tools
 .endif
 WMAKE_TGTS+=	_includes _libraries _depend everything
-.if ${TARGET_ARCH} == "amd64" && defined(WITH_LIB32)
+.if ${TARGET_ARCH} == "amd64" && !defined(NO_LIB32)
 WMAKE_TGTS+=	build32
 .endif
 
@@ -540,7 +541,7 @@
 	@echo ">>> Installing everything"
 	@echo "--------------------------------------------------------------"
 	${_+_}cd ${.CURDIR}; ${MAKE} -f Makefile.inc1 install
-.if ${TARGET_ARCH} == "amd64" && defined(WITH_LIB32)
+.if ${TARGET_ARCH} == "amd64" && !defined(NO_LIB32)
 	${_+_}cd ${.CURDIR}; ${MAKE} -f Makefile.inc1 install32
 .endif
 

==== //depot/projects/davidxu_thread/src/etc/defaults/rc.conf#9 (text+ko) ====

@@ -15,7 +15,7 @@
 # For a more detailed explanation of all the rc.conf variables, please
 # refer to the rc.conf(5) manual page.
 #
-# $FreeBSD: src/etc/defaults/rc.conf,v 1.243 2005/03/12 21:09:15 trhodes Exp $
+# $FreeBSD: src/etc/defaults/rc.conf,v 1.244 2005/04/03 21:45:20 njl Exp $
 
 ##############################################################
 ###  Important initial Boot-time options  ####################
@@ -474,9 +474,9 @@
 devfs_set_rulesets=""	# A list of /mount/dev=ruleset_name settings to
 			# apply (must be mounted already, i.e. fstab(5))
 performance_cx_lowest="HIGH"		# Online CPU idle state
-performance_cpu_freq="NONE"		# Online CPU frequency
+performance_cpu_freq="HIGH"		# Online CPU frequency
 economy_cx_lowest="HIGH"		# Offline CPU idle state
-economy_cpu_freq="NONE"			# Offline CPU frequency
+economy_cpu_freq="HIGH"			# Offline CPU frequency
 virecover_enable="YES"	# Perform housekeeping for the vi(1) editor
 ugidfw_enable="NO"	# Load mac_bsdextended(4) rules on boot
 bsdextended_script="/etc/rc.bsdextended"	# Default mac_bsdextended(4)

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

@@ -1,11 +1,11 @@
 #!/bin/sh
 #
-# $FreeBSD: src/etc/rc.d/dumpon,v 1.7 2004/10/18 23:40:13 thomas Exp $
+# $FreeBSD: src/etc/rc.d/dumpon,v 1.8 2005/04/05 18:59:24 obrien Exp $
 #
 
 # PROVIDE: dumpon
-# REQUIRE: initrandom
-# BEFORE: disks savecore
+# REQUIRE: rcconf
+# BEFORE: disks savecore initrandom
 # KEYWORD: nojail
 
 . /etc/rc.subr

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

@@ -1,6 +1,6 @@
 #!/bin/sh
 #
-# $FreeBSD: src/etc/rc.d/pf,v 1.6 2004/10/25 08:12:28 pjd Exp $
+# $FreeBSD: src/etc/rc.d/pf,v 1.7 2005/04/04 23:06:10 seanc Exp $
 #
 
 # PROVIDE: pf
@@ -75,7 +75,9 @@
 	echo "Reloading pf rules."
 
 	${pf_program:-/sbin/pfctl} -n -f "${pf_rules}" || return 1
-	${pf_program:-/sbin/pfctl} -Fa > /dev/null 2>&1
+	# Flush everything but existing state entries that way when
+	# rules are read in, it doesn't break established connections.
+	${pf_program:-/sbin/pfctl} -Fnat -Fqueue -Frules -FSources -Finfo -FTables -Fosfp > /dev/null 2>&1
 	${pf_program:-/sbin/pfctl} -f "${pf_rules}" ${pf_flags}
 }
 

==== //depot/projects/davidxu_thread/src/gnu/usr.bin/gdb/libgdb/fbsd-threads.c#4 (text+ko) ====

@@ -1,4 +1,4 @@
-/* $FreeBSD: src/gnu/usr.bin/gdb/libgdb/fbsd-threads.c,v 1.9 2005/01/11 14:53:16 peadar Exp $ */
+/* $FreeBSD: src/gnu/usr.bin/gdb/libgdb/fbsd-threads.c,v 1.10 2005/04/05 11:40:58 davidxu Exp $ */
 /* FreeBSD libthread_db assisted debugging support.
    Copyright 1999, 2000, 2001 Free Software Foundation, Inc.
 

==== //depot/projects/davidxu_thread/src/include/Makefile#8 (text+ko) ====

@@ -1,5 +1,5 @@
 #	@(#)Makefile	8.2 (Berkeley) 1/4/94
-# $FreeBSD: src/include/Makefile,v 1.238 2005/04/01 23:22:01 imp Exp $
+# $FreeBSD: src/include/Makefile,v 1.239 2005/04/03 04:53:23 imp Exp $
 #
 # Doing a "make install" builds /usr/include.
 
@@ -162,10 +162,14 @@
 	    ${DESTDIR}${INCLUDEDIR}/machine/pc
 .endif
 .if defined(_MARCH)
+	${INSTALL} -d -o ${BINOWN} -g ${BINGRP} -m 755 \
+	    ${DESTDIR}${INCLUDEDIR}/${_MARCH}; \
 	cd ${.CURDIR}/../sys/${_MARCH}/include; \
 	${INSTALL} -C -o ${BINOWN} -g ${BINGRP} -m 444 *.h \
 	    ${DESTDIR}${INCLUDEDIR}/${_MARCH}
 .if exists(${.CURDIR}/../sys/${_MARCH}/include/pc)
+	${INSTALL} -d -o ${BINOWN} -g ${BINGRP} -m 755 \
+	    ${DESTDIR}${INCLUDEDIR}/${_MARCH}/pc; \
 	cd ${.CURDIR}/../sys/${_MARCH}/include/pc; \
 	${INSTALL} -C -o ${BINOWN} -g ${BINGRP} -m 444 *.h \
 	    ${DESTDIR}${INCLUDEDIR}/${_MARCH}/pc
@@ -240,12 +244,16 @@
 	done
 .endif
 .if defined(_MARCH)
+	${INSTALL} -d -o ${BINOWN} -g ${BINGRP} -m 755 \
+	    ${DESTDIR}${INCLUDEDIR}/${_MARCH}; \
 	cd ${.CURDIR}/../sys/${_MARCH}/include; \
 	for h in *.h; do \
 		ln -fs ../../../sys/${_MARCH}/include/$$h \
 		    ${DESTDIR}${INCLUDEDIR}/${_MARCH}; \
 	done
 .if exists(${.CURDIR}/../sys/${_MARCH}/include/pc)
+	${INSTALL} -d -o ${BINOWN} -g ${BINGRP} -m 755 \
+	    ${DESTDIR}${INCLUDEDIR}/${_MARCH}/pc; \
 	cd ${.CURDIR}/../sys/${_MARCH}/include/pc; \
 	for h in *.h; do \
 		ln -fs ../../../../sys/${_MARCH}/include/pc/$$h \

==== //depot/projects/davidxu_thread/src/include/pthread.h#3 (text+ko) ====

@@ -30,7 +30,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 
  * SUCH DAMAGE.
  *
- * $FreeBSD: src/include/pthread.h,v 1.33 2005/01/08 11:07:13 davidxu Exp $
+ * $FreeBSD: src/include/pthread.h,v 1.34 2005/04/03 23:55:02 davidxu Exp $
  */
 #ifndef _PTHREAD_H_
 #define _PTHREAD_H_
@@ -225,6 +225,10 @@
 void		pthread_cleanup_push(void (*) (void *), void *routine_arg);
 int		pthread_condattr_destroy(pthread_condattr_t *);
 int		pthread_condattr_init(pthread_condattr_t *);
+int             pthread_condattr_getclock(const pthread_condattr_t *,
+                        clockid_t *);
+int             pthread_condattr_setclock(pthread_condattr_t *,
+                        clockid_t);
 
 int		pthread_cond_broadcast(pthread_cond_t *);
 int		pthread_cond_destroy(pthread_cond_t *);

==== //depot/projects/davidxu_thread/src/lib/libalias/alias.c#2 (text+ko) ====

@@ -25,7 +25,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/lib/libalias/alias.c,v 1.49 2004/08/14 14:21:09 phk Exp $");
+__FBSDID("$FreeBSD: src/lib/libalias/alias.c,v 1.50 2005/04/05 13:04:35 phk Exp $");
 
 /*
     Alias.c provides supervisory control for the functions of the
@@ -1170,7 +1170,7 @@
 
 	if (la->packetAliasMode & PKT_ALIAS_REVERSE) {
 		la->packetAliasMode &= ~PKT_ALIAS_REVERSE;
-		iresult = PacketAliasOut(ptr, maxpacketsize);
+		iresult = LibAliasOut(la, ptr, maxpacketsize);
 		la->packetAliasMode |= PKT_ALIAS_REVERSE;
 		return (iresult);
 	}
@@ -1264,7 +1264,7 @@
 
 	if (la->packetAliasMode & PKT_ALIAS_REVERSE) {
 		la->packetAliasMode &= ~PKT_ALIAS_REVERSE;
-		iresult = PacketAliasIn(ptr, maxpacketsize);
+		iresult = LibAliasIn(la, ptr, maxpacketsize);
 		la->packetAliasMode |= PKT_ALIAS_REVERSE;
 		return (iresult);
 	}

==== //depot/projects/davidxu_thread/src/lib/libarchive/archive_private.h#2 (text+ko) ====

@@ -23,7 +23,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_private.h,v 1.16 2004/11/06 05:25:53 kientzle Exp $
+ * $FreeBSD: src/lib/libarchive/archive_private.h,v 1.17 2005/04/06 04:19:30 kientzle Exp $
  */
 
 #ifndef ARCHIVE_PRIVATE_H_INCLUDED
@@ -156,6 +156,7 @@
 		int	(*bid)(struct archive *);
 		int	(*read_header)(struct archive *, struct archive_entry *);
 		int	(*read_data)(struct archive *, const void **, size_t *, off_t *);
+		int	(*read_data_skip)(struct archive *);
 		int	(*cleanup)(struct archive *);
 		void	 *format_data;	/* Format-specific data for readers. */
 	}	formats[4];
@@ -229,6 +230,7 @@
 	    int (*bid)(struct archive *),
 	    int (*read_header)(struct archive *, struct archive_entry *),
 	    int (*read_data)(struct archive *, const void **, size_t *, off_t *),
+	    int (*read_data_skip)(struct archive *),
 	    int (*cleanup)(struct archive *));
 
 int	__archive_read_register_compression(struct archive *a,

==== //depot/projects/davidxu_thread/src/lib/libarchive/archive_read.c#3 (text+ko) ====

@@ -33,7 +33,7 @@
  */
 
 #include "archive_platform.h"
-__FBSDID("$FreeBSD: src/lib/libarchive/archive_read.c,v 1.13 2005/01/08 18:28:11 kientzle Exp $");
+__FBSDID("$FreeBSD: src/lib/libarchive/archive_read.c,v 1.14 2005/04/06 04:19:30 kientzle Exp $");
 
 #include <errno.h>
 #include <stdio.h>
@@ -226,6 +226,8 @@
 			a->state = ARCHIVE_STATE_FATAL;
 			return (ARCHIVE_FATAL);
 		}
+		if (ret != ARCHIVE_OK)
+			return (ret);
 	}
 
 	/* Record start-of-header. */
@@ -405,9 +407,13 @@
 
 	archive_check_magic(a, ARCHIVE_READ_MAGIC, ARCHIVE_STATE_DATA);
 
-	while ((r = archive_read_data_block(a, &buff, &size, &offset)) ==
-	    ARCHIVE_OK)
-		;
+	if (a->format->read_data_skip != NULL)
+		r = (a->format->read_data_skip)(a);
+	else {
+		while ((r = archive_read_data_block(a, &buff, &size, &offset))
+		    == ARCHIVE_OK)
+			;
+	}
 
 	if (r == ARCHIVE_EOF)
 		r = ARCHIVE_OK;
@@ -505,6 +511,7 @@
     int (*bid)(struct archive *),
     int (*read_header)(struct archive *, struct archive_entry *),
     int (*read_data)(struct archive *, const void **, size_t *, off_t *),
+    int (*read_data_skip)(struct archive *),
     int (*cleanup)(struct archive *))
 {
 	int i, number_slots;
@@ -520,6 +527,7 @@
 			a->formats[i].bid = bid;
 			a->formats[i].read_header = read_header;
 			a->formats[i].read_data = read_data;
+			a->formats[i].read_data_skip = read_data_skip;
 			a->formats[i].cleanup = cleanup;
 			a->formats[i].format_data = format_data;
 			return (ARCHIVE_OK);

==== //depot/projects/davidxu_thread/src/lib/libarchive/archive_read_support_format_cpio.c#4 (text+ko) ====

@@ -25,7 +25,7 @@
  */
 
 #include "archive_platform.h"
-__FBSDID("$FreeBSD: src/lib/libarchive/archive_read_support_format_cpio.c,v 1.12 2005/03/13 01:52:35 kientzle Exp $");
+__FBSDID("$FreeBSD: src/lib/libarchive/archive_read_support_format_cpio.c,v 1.13 2005/04/06 04:19:30 kientzle Exp $");
 
 #include <sys/stat.h>
 
@@ -142,6 +142,7 @@
 	    archive_read_format_cpio_bid,
 	    archive_read_format_cpio_read_header,
 	    archive_read_format_cpio_read_data,
+	    NULL,
 	    archive_read_format_cpio_cleanup);
 
 	if (r != ARCHIVE_OK)

==== //depot/projects/davidxu_thread/src/lib/libarchive/archive_read_support_format_iso9660.c#2 (text+ko) ====

@@ -25,7 +25,7 @@
  */
 
 #include "archive_platform.h"
-__FBSDID("$FreeBSD: src/lib/libarchive/archive_read_support_format_iso9660.c,v 1.7 2005/02/12 22:48:38 kientzle Exp $");
+__FBSDID("$FreeBSD: src/lib/libarchive/archive_read_support_format_iso9660.c,v 1.8 2005/04/06 04:19:30 kientzle Exp $");
 
 #include <sys/stat.h>
 
@@ -212,6 +212,7 @@
 	    archive_read_format_iso9660_bid,
 	    archive_read_format_iso9660_read_header,
 	    archive_read_format_iso9660_read_data,
+	    NULL,
 	    archive_read_format_iso9660_cleanup);
 
 	if (r != ARCHIVE_OK) {

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

@@ -25,7 +25,7 @@
  */
 
 #include "archive_platform.h"
-__FBSDID("$FreeBSD: src/lib/libarchive/archive_read_support_format_tar.c,v 1.31 2005/03/13 02:35:52 kientzle Exp $");
+__FBSDID("$FreeBSD: src/lib/libarchive/archive_read_support_format_tar.c,v 1.32 2005/04/06 04:19:30 kientzle Exp $");
 
 #include <sys/stat.h>
 #include <errno.h>
@@ -216,6 +216,7 @@
 	    archive_read_format_tar_bid,
 	    archive_read_format_tar_read_header,
 	    archive_read_format_tar_read_data,
+	    NULL,
 	    archive_read_format_tar_cleanup);
 
 	if (r != ARCHIVE_OK)

==== //depot/projects/davidxu_thread/src/lib/libarchive/archive_read_support_format_zip.c#2 (text+ko) ====

@@ -25,7 +25,7 @@
  */
 
 #include "archive_platform.h"
-__FBSDID("$FreeBSD: src/lib/libarchive/archive_read_support_format_zip.c,v 1.4 2005/02/12 23:00:31 kientzle Exp $");
+__FBSDID("$FreeBSD: src/lib/libarchive/archive_read_support_format_zip.c,v 1.5 2005/04/06 04:19:30 kientzle Exp $");
 
 #include <sys/stat.h>
 #include <errno.h>
@@ -41,16 +41,30 @@
 #include "archive_private.h"
 
 struct zip {
+	/* entry_bytes_remaining is the number of bytes we expect. */
 	off_t			entry_bytes_remaining;
 	off_t			entry_offset;
 
+	/* These count the number of bytes actually read for the entry. */
+	off_t			entry_compressed_bytes_read;
+	off_t			entry_uncompressed_bytes_read;
+
 	unsigned		version;
 	unsigned		system;
 	unsigned		flags;
 	unsigned		compression;
 	const char *		compression_name;
 	time_t			mtime;
+	time_t			ctime;
+	time_t			atime;
+	mode_t			mode;
+	uid_t			uid;
+	gid_t			gid;
+
+	/* Flags to mark progress of decompression. */
+	char			decompress_init;
 	char			end_of_entry;
+	char			end_of_entry_cleanup;
 
 	long			crc32;
 	ssize_t			filename_length;
@@ -73,8 +87,7 @@
 
 struct zip_file_header {
 	char	signature[4];
-	char	version[1];
-	char	reserved[1];
+	char	version[2];
 	char	flags[2];
 	char	compression[2];
 	char	timedate[4];
@@ -101,17 +114,22 @@
 static int	archive_read_format_zip_cleanup(struct archive *);
 static int	archive_read_format_zip_read_data(struct archive *,
 		    const void **, size_t *, off_t *);
+static int	archive_read_format_zip_read_data_skip(struct archive *a);
 static int	archive_read_format_zip_read_header(struct archive *,
 		    struct archive_entry *);
 static int	i2(const char *);
 static int	i4(const char *);
+static unsigned int	u2(const char *);
+static unsigned int	u4(const char *);
+static uint64_t	u8(const char *);
 static int	zip_read_data_deflate(struct archive *a, const void **buff,
 		    size_t *size, off_t *offset);
 static int	zip_read_data_none(struct archive *a, const void **buff,
 		    size_t *size, off_t *offset);
-static int	zip_read_data_skip(struct archive *a, const void **buff,
-		    size_t *size, off_t *offset);
+static int	zip_read_file_header(struct archive *a,
+		    struct archive_entry *entry, struct zip *zip);
 static time_t	zip_time(const char *);
+static void process_extra(const void* extra, struct zip* zip);
 
 int
 archive_read_support_format_zip(struct archive *a)
@@ -127,6 +145,7 @@
 	    archive_read_format_zip_bid,
 	    archive_read_format_zip_read_header,
 	    archive_read_format_zip_read_data,
+	    archive_read_format_zip_read_data_skip,
 	    archive_read_format_zip_cleanup);
 
 	if (r != ARCHIVE_OK)
@@ -171,7 +190,7 @@
 {
 	int bytes_read;
 	const void *h;
-	const struct zip_file_header *p;
+	const char *signature;
 	struct zip *zip;
 
 	a->archive_format = ARCHIVE_FORMAT_ZIP;
@@ -179,40 +198,70 @@
 		a->archive_format_name = "ZIP";
 
 	zip = *(a->pformat_data);
+	zip->decompress_init = 0;
 	zip->end_of_entry = 0;
-	bytes_read =
-	    (a->compression_read_ahead)(a, &h, sizeof(struct zip_file_header));
+	zip->end_of_entry_cleanup = 0;
+	zip->entry_uncompressed_bytes_read = 0;
+	zip->entry_compressed_bytes_read = 0;
+	bytes_read = (a->compression_read_ahead)(a, &h, 4);
 	if (bytes_read < 4)
 		return (ARCHIVE_FATAL);
 
-	p = h;
-	if (p->signature[0] != 'P' || p->signature[1] != 'K') {
+	signature = h;
+	if (signature[0] != 'P' || signature[1] != 'K') {
 		archive_set_error(a, ARCHIVE_ERRNO_FILE_FORMAT,
 		    "Bad ZIP file");
 		return (ARCHIVE_FATAL);
 	}
 
-	if (p->signature[2] == '\001' && p->signature[3] == '\002') {
+	if (signature[2] == '\001' && signature[3] == '\002') {
 		/* Beginning of central directory. */
 		return (ARCHIVE_EOF);
-	} else if (p->signature[2] == '\003' && p->signature[3] == '\004') {
-		/* Regular file entry; fall through. */
-	} else if (p->signature[2] == '\005' && p->signature[3] == '\006') {
+	}
+
+	if (signature[2] == '\003' && signature[3] == '\004') {
+		/* Regular file entry. */
+		return (zip_read_file_header(a, entry, zip));
+	}
+
+	if (signature[2] == '\005' && signature[3] == '\006') {
 		/* End-of-archive record. */
 		return (ARCHIVE_EOF);
-	} else if (p->signature[2] == '\007' && p->signature[3] == '\010') {
-		/* ??? Need to research this. ??? */
-	} else {
-		archive_set_error(a, ARCHIVE_ERRNO_FILE_FORMAT,
-		    "Damaged ZIP file or unsupported format variant (%d,%d)", p->signature[2], p->signature[3]);
+	}
+
+	if (signature[2] == '\007' && signature[3] == '\010') {
+		/*
+		 * We should never encounter this record here;
+		 * see ZIP_LENGTH_AT_END handling below for details.
+		 */
+		archive_set_error(a, ARCHIVE_ERRNO_MISC,
+		    "Bad ZIP file: Unexpected end-of-entry record");
 		return (ARCHIVE_FATAL);
 	}
 
+	archive_set_error(a, ARCHIVE_ERRNO_FILE_FORMAT,
+	    "Damaged ZIP file or unsupported format variant (%d,%d)",
+	    signature[2], signature[3]);
+	return (ARCHIVE_FATAL);
+}
+
+int
+zip_read_file_header(struct archive *a, struct archive_entry *entry,
+    struct zip *zip)
+{
+	const struct zip_file_header *p;
+	const void *h;
+	int bytes_read;
+	struct stat st;
+
+	bytes_read =
+	    (a->compression_read_ahead)(a, &h, sizeof(struct zip_file_header));
 	if (bytes_read < (int)sizeof(struct zip_file_header)) {
 		archive_set_error(a, ARCHIVE_ERRNO_FILE_FORMAT,
 		    "Truncated ZIP file header");
 		return (ARCHIVE_FATAL);
 	}
+	p = h;
 
 	zip->version = p->version[0];
 	zip->system = p->version[1];
@@ -224,11 +273,16 @@
 	else
 		zip->compression_name = "??";
 	zip->mtime = zip_time(p->timedate);
+	zip->ctime = 0;
+	zip->atime = 0;
+	zip->mode = 0;
+	zip->uid = 0;
+	zip->gid = 0;
 	zip->crc32 = i4(p->crc32);
 	zip->filename_length = i2(p->filename_length);
 	zip->extra_length = i2(p->extra_length);
-	zip->uncompressed_size = i4(p->uncompressed_size);
-	zip->compressed_size = i4(p->compressed_size);
+	zip->uncompressed_size = u4(p->uncompressed_size);
+	zip->compressed_size = u4(p->compressed_size);
 
 	(a->compression_read_consume)(a, sizeof(struct zip_file_header));
 
@@ -245,6 +299,11 @@
 	(a->compression_read_consume)(a, zip->filename_length);
 	archive_entry_set_pathname(entry, zip->pathname.s);
 
+	if (zip->pathname.s[archive_strlen(&zip->pathname) - 1] == '/')
+		zip->mode = S_IFDIR | 0777;
+	else
+		zip->mode = S_IFREG | 0777;
+
 	/* Read the extra data. */
 	bytes_read = (a->compression_read_ahead)(a, &h, zip->extra_length);
 	if (bytes_read < zip->extra_length) {
@@ -252,16 +311,20 @@
 		    "Truncated ZIP file header");
 		return (ARCHIVE_FATAL);
 	}
-	/* TODO: Store the extra data somewhere? */
+	process_extra(h, zip);
 	(a->compression_read_consume)(a, zip->extra_length);
 
 	/* Populate some additional entry fields: */
-	archive_entry_set_mtime(entry, zip->mtime, 0);
-	if (zip->pathname.s[archive_strlen(&zip->pathname) - 1] == '/')
-		archive_entry_set_mode(entry, S_IFDIR | 0777);
-	else
-		archive_entry_set_mode(entry, S_IFREG | 0777);
-	archive_entry_set_size(entry, zip->uncompressed_size);
+	memset(&st, 0, sizeof(st));
+	st.st_mode = zip->mode;
+	st.st_uid = zip->uid;
+	st.st_gid = zip->gid;
+	st.st_mtime = zip->mtime;
+	st.st_ctime = zip->ctime;
+	st.st_atime = zip->atime;
+	st.st_size = zip->uncompressed_size;
+	archive_entry_copy_stat(entry, &st);
+
 	zip->entry_bytes_remaining = zip->compressed_size;
 	zip->entry_offset = 0;
 
@@ -304,34 +367,101 @@
 
 	zip = *(a->pformat_data);
 
-	if (!zip->end_of_entry) {
-		switch(zip->compression) {
-		case 0:  /* No compression. */
-			r =  zip_read_data_none(a, buff, size, offset);
-			break;
-		case 8: /* Deflate compression. */
-			r =  zip_read_data_deflate(a, buff, size, offset);
-			break;
-		default: /* Unsupported compression. */
-			r =  zip_read_data_skip(a, buff, size, offset);
-			/* Return a warning. */
-			archive_set_error(a, ARCHIVE_ERRNO_FILE_FORMAT,
-			    "Unsupported ZIP compression method (%s)",
-			    zip->compression_name);
-			r = ARCHIVE_WARN;
-			break;
+	/*
+	 * If we hit end-of-entry last time, clean up and return
+	 * ARCHIVE_EOF this time.
+	 */
+	if (zip->end_of_entry) {
+		if (!zip->end_of_entry_cleanup) {
+			if (zip->flags & ZIP_LENGTH_AT_END) {
+				const void *h;
+				const char *p;
+				int bytes_read =
+				    (a->compression_read_ahead)(a, &h, 16);
+				if (bytes_read < 16) {
+					archive_set_error(a,
+					    ARCHIVE_ERRNO_FILE_FORMAT,
+					    "Truncated ZIP end-of-file record");
+					return (ARCHIVE_FATAL);
+				}
+				p = h;
+				zip->crc32 = i4(p + 4);
+				zip->compressed_size = u4(p + 8);
+				zip->uncompressed_size = u4(p + 12);
+				bytes_read = (a->compression_read_consume)(a, 16);
+			}
+
+			/* Check file size, CRC against these values. */
+			if (zip->compressed_size != zip->entry_compressed_bytes_read) {
+				archive_set_error(a, ARCHIVE_ERRNO_MISC,
+				    "ZIP compressed data is wrong size");
+				return (ARCHIVE_WARN);
+			}
+			if (zip->uncompressed_size != zip->entry_uncompressed_bytes_read) {
+				archive_set_error(a, ARCHIVE_ERRNO_MISC,
+				    "ZIP uncompressed data is wrong size");
+				return (ARCHIVE_WARN);
+			}
+/* TODO: Compute CRC. */
+/*
+			if (zip->crc32 != zip->entry_crc32_calculated) {
+				archive_set_error(a, ARCHIVE_ERRNO_MISC,
+				    "ZIP data CRC error");
+				return (ARCHIVE_WARN);
+			}
+*/
+			/* End-of-entry cleanup done. */
+			zip->end_of_entry_cleanup = 1;
 		}
-	} else {
-		r = ARCHIVE_EOF;
+		return (ARCHIVE_EOF);
+	}
+
+	switch(zip->compression) {
+	case 0:  /* No compression. */
+		r =  zip_read_data_none(a, buff, size, offset);
+		break;
+	case 8: /* Deflate compression. */
+		r =  zip_read_data_deflate(a, buff, size, offset);
+		break;
+	default: /* Unsupported compression. */
+		*buff = NULL;
+		*size = 0;
+		*offset = 0;
+		/* Return a warning. */
+		archive_set_error(a, ARCHIVE_ERRNO_FILE_FORMAT,
+		    "Unsupported ZIP compression method (%s)",
+		    zip->compression_name);
 		if (zip->flags & ZIP_LENGTH_AT_END) {
-			/* TODO: Read the "PK\007\008" trailer that follows. */
+			/*
+			 * ZIP_LENGTH_AT_END requires us to
+			 * decompress the entry in order to
+			 * skip it, but we don't know this
+			 * compression method, so we give up.
+			 */
+			r = ARCHIVE_FATAL;
+		} else {
+			/* We know compressed size; just skip it. */
+			archive_read_format_zip_read_data_skip(a);
+			r = ARCHIVE_WARN;
 		}
+		break;
 	}
-	if (r == ARCHIVE_EOF)
-		zip->end_of_entry = 1;
 	return (r);
 }
 
+/*
+ * Read "uncompressed" data.  According to the current specification,
+ * if ZIP_LENGTH_AT_END is specified, then the size fields in the
+ * initial file header are supposed to be set to zero.  This would, of
+ * course, make it impossible for us to read the archive, since we
+ * couldn't determine the end of the file data.  Info-ZIP seems to
+ * include the real size fields both before and after the data in this
+ * case (the CRC only appears afterwards), so this works as you would
+ * expect.
+ *
+ * Returns ARCHIVE_OK if successful, ARCHIVE_FATAL otherwise, sets
+ * zip->end_of_entry if it consumes all of the data.
+ */
 static int
 zip_read_data_none(struct archive *a, const void **buff,
     size_t *size, off_t *offset)
@@ -345,7 +475,8 @@
 		*buff = NULL;
 		*size = 0;
 		*offset = zip->entry_offset;
-		return (ARCHIVE_EOF);
+		zip->end_of_entry = 1;
+		return (ARCHIVE_OK);
 	}
 	/*
 	 * Note: '1' here is a performance optimization.
@@ -366,6 +497,8 @@
 	*offset = zip->entry_offset;
 	zip->entry_offset += *size;
 	zip->entry_bytes_remaining -= *size;
+	zip->entry_uncompressed_bytes_read += *size;
+	zip->entry_compressed_bytes_read += *size;
 	return (ARCHIVE_OK);
 }
 
@@ -394,7 +527,7 @@
 	}
 
 	/* If we haven't yet read any data, initialize the decompressor. */
-	if (zip->entry_bytes_remaining == zip->compressed_size) {
+	if (!zip->decompress_init) {
 		r = inflateInit2(&zip->stream,
 		    -15 /* Don't check for zlib header */);
 		if (r != Z_OK) {
@@ -402,6 +535,7 @@
 			    "Can't initialize ZIP decompression.");
 			return (ARCHIVE_FATAL);
 		}
+		zip->decompress_init = 1;
 	}
 
 	/*
@@ -416,8 +550,6 @@
 		    "Truncated ZIP file body");
 		return (ARCHIVE_FATAL);
 	}
-	if (bytes_avail > zip->entry_bytes_remaining)
-		bytes_avail = zip->entry_bytes_remaining;
 
 	/*
 	 * A bug in zlib.h: stream.next_in should be marked 'const'
@@ -453,10 +585,11 @@
 	bytes_avail = zip->stream.total_in;
 	(a->compression_read_consume)(a, bytes_avail);
 	zip->entry_bytes_remaining -= bytes_avail;
-
+	zip->entry_compressed_bytes_read += bytes_avail;
 
 	*offset = zip->entry_offset;
 	*size = zip->stream.total_out;
+	zip->entry_uncompressed_bytes_read += *size;
 	*buff = zip->uncompressed_buffer;
 	zip->entry_offset += *size;
 	return (ARCHIVE_OK);
@@ -468,31 +601,45 @@
 {
 	int r;
 
-	r = zip_read_data_skip(a, buff, size, offset);
+	*buff = NULL;
+	*size = 0;
+	*offset = 0;
 	archive_set_error(a, ARCHIVE_ERRNO_MISC,
 	    "libarchive compiled without deflate support (no libz)");
-	return (ARCHIVE_WARN);
+	return (ARCHIVE_FATAL);
 }
 #endif
 
 static int
-zip_read_data_skip(struct archive *a, const void **buff,
-    size_t *size, off_t *offset)
+archive_read_format_zip_read_data_skip(struct archive *a)
 {
 	struct zip *zip;
+	const void *buff = NULL;
 	ssize_t bytes_avail;
 
 	zip = *(a->pformat_data);
 
-	/* Return nothing gracefully. */
-	*buff = NULL;
-	*size = 0;

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



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