svn commit: r225317 - in projects/zfsd/head: . bin/ed contrib/top etc etc/rc.d gnu/usr.bin/gdb/arch/arm gnu/usr.bin/gdb/kgdb lib/libarchive lib/libarchive/test lib/libbsnmp/libbsnmp lib/libc/sys li...

Alexander Motin mav at FreeBSD.org
Thu Sep 1 21:42:55 UTC 2011


Author: mav
Date: Thu Sep  1 21:42:54 2011
New Revision: 225317
URL: http://svn.freebsd.org/changeset/base/225317

Log:
  Integrate from head at r225316.

Added:
  projects/zfsd/head/lib/libarchive/test/test_read_format_iso_2.iso.Z.uu
     - copied unchanged from r225316, head/lib/libarchive/test/test_read_format_iso_2.iso.Z.uu
  projects/zfsd/head/lib/libc/sys/pdfork.2
     - copied unchanged from r225316, head/lib/libc/sys/pdfork.2
  projects/zfsd/head/libexec/rtld-elf/rtld_printf.c
     - copied unchanged from r225316, head/libexec/rtld-elf/rtld_printf.c
  projects/zfsd/head/libexec/rtld-elf/rtld_printf.h
     - copied unchanged from r225316, head/libexec/rtld-elf/rtld_printf.h
  projects/zfsd/head/sys/kern/sys_procdesc.c
     - copied unchanged from r225316, head/sys/kern/sys_procdesc.c
  projects/zfsd/head/sys/sys/procdesc.h
     - copied unchanged from r225316, head/sys/sys/procdesc.h
  projects/zfsd/head/tools/regression/ipfw/
     - copied from r225316, head/tools/regression/ipfw/
  projects/zfsd/head/tools/regression/security/cap_test/cap_test_pdfork.c
     - copied unchanged from r225316, head/tools/regression/security/cap_test/cap_test_pdfork.c
  projects/zfsd/head/tools/regression/security/cap_test/cap_test_pdkill.c
     - copied unchanged from r225316, head/tools/regression/security/cap_test/cap_test_pdkill.c
Modified:
  projects/zfsd/head/ObsoleteFiles.inc
  projects/zfsd/head/UPDATING
  projects/zfsd/head/bin/ed/buf.c
  projects/zfsd/head/etc/motd
  projects/zfsd/head/etc/rc.d/Makefile
  projects/zfsd/head/gnu/usr.bin/gdb/arch/arm/armfbsd-nat.c
  projects/zfsd/head/gnu/usr.bin/gdb/kgdb/kthr.c
  projects/zfsd/head/lib/libarchive/archive_read_support_format_iso9660.c
  projects/zfsd/head/lib/libarchive/test/test_read_format_iso_gz.c
  projects/zfsd/head/lib/libarchive/test/test_read_format_isojoliet_bz2.c
  projects/zfsd/head/lib/libarchive/test/test_read_format_isojoliet_long.c
  projects/zfsd/head/lib/libarchive/test/test_read_format_isojoliet_rr.c
  projects/zfsd/head/lib/libarchive/test/test_read_format_isorr_bz2.c
  projects/zfsd/head/lib/libarchive/test/test_read_format_isorr_new_bz2.c
  projects/zfsd/head/lib/libarchive/test/test_read_format_isozisofs_bz2.c
  projects/zfsd/head/lib/libbsnmp/libbsnmp/Makefile
  projects/zfsd/head/lib/libc/sys/Makefile.inc
  projects/zfsd/head/lib/libc/sys/Symbol.map
  projects/zfsd/head/lib/libc/sys/cap_new.2
  projects/zfsd/head/lib/libc/sys/sigwait.2
  projects/zfsd/head/lib/libc/sys/sigwaitinfo.2
  projects/zfsd/head/lib/libcam/Makefile
  projects/zfsd/head/lib/libdwarf/Makefile
  projects/zfsd/head/lib/libopie/Makefile
  projects/zfsd/head/lib/libpcap/Makefile
  projects/zfsd/head/lib/librtld_db/Makefile
  projects/zfsd/head/lib/libtacplus/Makefile
  projects/zfsd/head/lib/libufs/Makefile
  projects/zfsd/head/lib/libusb/Makefile
  projects/zfsd/head/lib/libusb/libusb.3
  projects/zfsd/head/lib/libusb/libusb.h
  projects/zfsd/head/lib/libusb/libusb10.c
  projects/zfsd/head/libexec/rtld-elf/Makefile
  projects/zfsd/head/libexec/rtld-elf/debug.c
  projects/zfsd/head/libexec/rtld-elf/malloc.c
  projects/zfsd/head/libexec/rtld-elf/rtld.c
  projects/zfsd/head/libexec/rtld-elf/rtld.h
  projects/zfsd/head/libexec/rtld-elf/rtld_lock.c
  projects/zfsd/head/libexec/rtld-elf/xmalloc.c
  projects/zfsd/head/release/Makefile
  projects/zfsd/head/release/doc/en_US.ISO8859-1/hardware/article.sgml
  projects/zfsd/head/release/doc/share/misc/dev.archlist.txt
  projects/zfsd/head/sbin/fdisk/fdisk.c
  projects/zfsd/head/sbin/geom/class/part/gpart.8
  projects/zfsd/head/sbin/ipfw/ipfw.8
  projects/zfsd/head/sbin/ipfw/ipfw2.c
  projects/zfsd/head/share/man/man4/Makefile
  projects/zfsd/head/share/man/man4/ata.4
  projects/zfsd/head/share/man/man4/ath.4
  projects/zfsd/head/share/man/man4/ath_hal.4
  projects/zfsd/head/share/man/man4/carp.4
  projects/zfsd/head/share/man/man4/puc.4
  projects/zfsd/head/share/man/man4/uhso.4
  projects/zfsd/head/share/man/man4/vxge.4
  projects/zfsd/head/share/man/man9/DRIVER_MODULE.9
  projects/zfsd/head/share/man/man9/Makefile
  projects/zfsd/head/share/man/man9/selrecord.9
  projects/zfsd/head/sys/amd64/amd64/machdep.c
  projects/zfsd/head/sys/amd64/amd64/minidump_machdep.c
  projects/zfsd/head/sys/amd64/conf/GENERIC
  projects/zfsd/head/sys/amd64/conf/NOTES
  projects/zfsd/head/sys/arm/at91/uart_dev_at91usart.c
  projects/zfsd/head/sys/boot/forth/loader.conf
  projects/zfsd/head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c
  projects/zfsd/head/sys/compat/linux/linux_fork.c
  projects/zfsd/head/sys/conf/NOTES
  projects/zfsd/head/sys/conf/files
  projects/zfsd/head/sys/conf/kern.pre.mk
  projects/zfsd/head/sys/conf/newvers.sh
  projects/zfsd/head/sys/conf/options
  projects/zfsd/head/sys/conf/options.amd64
  projects/zfsd/head/sys/contrib/pf/net/if_pfsync.c
  projects/zfsd/head/sys/contrib/pf/net/pf.c
  projects/zfsd/head/sys/ddb/db_break.c
  projects/zfsd/head/sys/dev/acpica/acpi_hpet.c
  projects/zfsd/head/sys/dev/acpica/acpi_hpet.h
  projects/zfsd/head/sys/dev/ahci/ahci.c
  projects/zfsd/head/sys/dev/alc/if_alc.c
  projects/zfsd/head/sys/dev/arcmsr/arcmsr.c
  projects/zfsd/head/sys/dev/ath/ath_hal/ar5416/ar5416_beacon.c
  projects/zfsd/head/sys/dev/ath/ath_hal/ar5416/ar5416reg.h
  projects/zfsd/head/sys/dev/ath/if_ath.c
  projects/zfsd/head/sys/dev/cfe/cfe_console.c
  projects/zfsd/head/sys/dev/coretemp/coretemp.c
  projects/zfsd/head/sys/dev/dcons/dcons_os.c
  projects/zfsd/head/sys/dev/gem/if_gem.c
  projects/zfsd/head/sys/dev/mii/brgphy.c
  projects/zfsd/head/sys/dev/mii/mii_physubr.c
  projects/zfsd/head/sys/dev/mps/mps_sas.c
  projects/zfsd/head/sys/dev/ofw/ofw_console.c
  projects/zfsd/head/sys/dev/puc/pucdata.c
  projects/zfsd/head/sys/dev/sio/sio.c
  projects/zfsd/head/sys/dev/sound/pci/hda/hdac.c
  projects/zfsd/head/sys/dev/streams/streams.c
  projects/zfsd/head/sys/dev/syscons/syscons.c
  projects/zfsd/head/sys/dev/syscons/syscons.h
  projects/zfsd/head/sys/dev/uart/uart_core.c
  projects/zfsd/head/sys/dev/usb/net/uhso.c
  projects/zfsd/head/sys/dev/usb/serial/u3g.c
  projects/zfsd/head/sys/dev/usb/usb_dev.c
  projects/zfsd/head/sys/dev/usb/usb_request.c
  projects/zfsd/head/sys/dev/usb/usbdevs
  projects/zfsd/head/sys/fs/devfs/devfs_vnops.c
  projects/zfsd/head/sys/fs/fifofs/fifo_vnops.c
  projects/zfsd/head/sys/fs/nfsserver/nfs_nfsdport.c
  projects/zfsd/head/sys/fs/nfsserver/nfs_nfsdserv.c
  projects/zfsd/head/sys/fs/procfs/procfs.c
  projects/zfsd/head/sys/i386/conf/GENERIC
  projects/zfsd/head/sys/i386/i386/machdep.c
  projects/zfsd/head/sys/kern/capabilities.conf
  projects/zfsd/head/sys/kern/init_main.c
  projects/zfsd/head/sys/kern/init_sysent.c
  projects/zfsd/head/sys/kern/kern_descrip.c
  projects/zfsd/head/sys/kern/kern_event.c
  projects/zfsd/head/sys/kern/kern_exit.c
  projects/zfsd/head/sys/kern/kern_fork.c
  projects/zfsd/head/sys/kern/kern_jail.c
  projects/zfsd/head/sys/kern/kern_kthread.c
  projects/zfsd/head/sys/kern/kern_proc.c
  projects/zfsd/head/sys/kern/kern_sig.c
  projects/zfsd/head/sys/kern/kern_timeout.c
  projects/zfsd/head/sys/kern/sched_4bsd.c
  projects/zfsd/head/sys/kern/sched_ule.c
  projects/zfsd/head/sys/kern/subr_kdb.c
  projects/zfsd/head/sys/kern/subr_sbuf.c
  projects/zfsd/head/sys/kern/sys_capability.c
  projects/zfsd/head/sys/kern/sys_generic.c
  projects/zfsd/head/sys/kern/sys_pipe.c
  projects/zfsd/head/sys/kern/sys_socket.c
  projects/zfsd/head/sys/kern/syscalls.c
  projects/zfsd/head/sys/kern/syscalls.master
  projects/zfsd/head/sys/kern/systrace_args.c
  projects/zfsd/head/sys/kern/tty.c
  projects/zfsd/head/sys/kern/tty_pts.c
  projects/zfsd/head/sys/kern/uipc_mqueue.c
  projects/zfsd/head/sys/kern/uipc_sem.c
  projects/zfsd/head/sys/kern/uipc_shm.c
  projects/zfsd/head/sys/kern/uipc_sockbuf.c
  projects/zfsd/head/sys/kern/uipc_socket.c
  projects/zfsd/head/sys/kern/uipc_usrreq.c
  projects/zfsd/head/sys/kern/vfs_subr.c
  projects/zfsd/head/sys/kern/vfs_syscalls.c
  projects/zfsd/head/sys/kern/vfs_vnops.c
  projects/zfsd/head/sys/modules/dcons/Makefile
  projects/zfsd/head/sys/modules/portalfs/Makefile
  projects/zfsd/head/sys/modules/sio/Makefile
  projects/zfsd/head/sys/net/bpf.c
  projects/zfsd/head/sys/net/if_bridge.c
  projects/zfsd/head/sys/net/if_ethersubr.c
  projects/zfsd/head/sys/net/if_tap.c
  projects/zfsd/head/sys/net/if_tun.c
  projects/zfsd/head/sys/net/radix_mpath.c
  projects/zfsd/head/sys/net80211/ieee80211_ht.c
  projects/zfsd/head/sys/net80211/ieee80211_output.c
  projects/zfsd/head/sys/netinet/in.c
  projects/zfsd/head/sys/netinet/ip_fw.h
  projects/zfsd/head/sys/netinet/ipfw/ip_fw2.c
  projects/zfsd/head/sys/netinet/ipfw/ip_fw_log.c
  projects/zfsd/head/sys/netinet/ipfw/ip_fw_pfil.c
  projects/zfsd/head/sys/netinet/ipfw/ip_fw_private.h
  projects/zfsd/head/sys/netinet/ipfw/ip_fw_sockopt.c
  projects/zfsd/head/sys/netinet/sctp_usrreq.c
  projects/zfsd/head/sys/netinet/tcp_input.c
  projects/zfsd/head/sys/netinet/tcp_output.c
  projects/zfsd/head/sys/netinet/udp_usrreq.c
  projects/zfsd/head/sys/netinet6/in6.c
  projects/zfsd/head/sys/netinet6/in6.h
  projects/zfsd/head/sys/netinet6/ip6_forward.c
  projects/zfsd/head/sys/netinet6/ip6_input.c
  projects/zfsd/head/sys/netinet6/ip6_output.c
  projects/zfsd/head/sys/netinet6/mld6.c
  projects/zfsd/head/sys/netinet6/udp6_usrreq.c
  projects/zfsd/head/sys/ofed/include/linux/linux_compat.c
  projects/zfsd/head/sys/opencrypto/cryptodev.c
  projects/zfsd/head/sys/pc98/cbus/sio.c
  projects/zfsd/head/sys/pc98/pc98/machdep.c
  projects/zfsd/head/sys/powerpc/mambo/mambo_console.c
  projects/zfsd/head/sys/rpc/clnt_dg.c
  projects/zfsd/head/sys/security/audit/audit_pipe.c
  projects/zfsd/head/sys/security/mac/mac_framework.h
  projects/zfsd/head/sys/security/mac/mac_policy.h
  projects/zfsd/head/sys/security/mac/mac_posix_sem.c
  projects/zfsd/head/sys/security/mac/mac_posix_shm.c
  projects/zfsd/head/sys/security/mac_stub/mac_stub.c
  projects/zfsd/head/sys/security/mac_test/mac_test.c
  projects/zfsd/head/sys/sparc64/sbus/sbus.c
  projects/zfsd/head/sys/sys/bus.h
  projects/zfsd/head/sys/sys/capability.h
  projects/zfsd/head/sys/sys/file.h
  projects/zfsd/head/sys/sys/kdb.h
  projects/zfsd/head/sys/sys/param.h
  projects/zfsd/head/sys/sys/proc.h
  projects/zfsd/head/sys/sys/selinfo.h
  projects/zfsd/head/sys/sys/sockbuf.h
  projects/zfsd/head/sys/sys/syscall.h
  projects/zfsd/head/sys/sys/syscall.mk
  projects/zfsd/head/sys/sys/sysproto.h
  projects/zfsd/head/sys/sys/unistd.h
  projects/zfsd/head/sys/sys/user.h
  projects/zfsd/head/sys/sys/vnode.h
  projects/zfsd/head/sys/ufs/ffs/ffs_alloc.c
  projects/zfsd/head/sys/ufs/ffs/ffs_extern.h
  projects/zfsd/head/sys/ufs/ffs/ffs_inode.c
  projects/zfsd/head/sys/ufs/ffs/ffs_softdep.c
  projects/zfsd/head/sys/ufs/ufs/ufs_extattr.c
  projects/zfsd/head/sys/vm/swap_pager.c
  projects/zfsd/head/sys/x86/acpica/acpi_apm.c
  projects/zfsd/head/sys/x86/x86/tsc.c
  projects/zfsd/head/tools/regression/security/cap_test/Makefile
  projects/zfsd/head/tools/regression/security/cap_test/cap_test.c
  projects/zfsd/head/tools/regression/security/cap_test/cap_test.h
  projects/zfsd/head/tools/regression/security/cap_test/cap_test_capabilities.c
  projects/zfsd/head/usr.bin/grep/grep.c
  projects/zfsd/head/usr.bin/grep/util.c
  projects/zfsd/head/usr.bin/nfsstat/nfsstat.c
  projects/zfsd/head/usr.sbin/bsdinstall/partedit/diskeditor.c
  projects/zfsd/head/usr.sbin/bsdinstall/partedit/gpart_ops.c
  projects/zfsd/head/usr.sbin/bsdinstall/partedit/part_wizard.c
  projects/zfsd/head/usr.sbin/bsdinstall/partedit/partedit.c
  projects/zfsd/head/usr.sbin/bsdinstall/scripts/adduser
  projects/zfsd/head/usr.sbin/bsdinstall/scripts/docsinstall
  projects/zfsd/head/usr.sbin/bsdinstall/scripts/mirrorselect
  projects/zfsd/head/usr.sbin/bsdinstall/scripts/rootpass
  projects/zfsd/head/usr.sbin/makefs/cd9660.c
  projects/zfsd/head/usr.sbin/mfiutil/mfi_show.c
Directory Properties:
  projects/zfsd/head/   (props changed)
  projects/zfsd/head/cddl/contrib/opensolaris/   (props changed)
  projects/zfsd/head/contrib/bind9/   (props changed)
  projects/zfsd/head/contrib/binutils/   (props changed)
  projects/zfsd/head/contrib/bzip2/   (props changed)
  projects/zfsd/head/contrib/compiler-rt/   (props changed)
  projects/zfsd/head/contrib/dialog/   (props changed)
  projects/zfsd/head/contrib/ee/   (props changed)
  projects/zfsd/head/contrib/expat/   (props changed)
  projects/zfsd/head/contrib/file/   (props changed)
  projects/zfsd/head/contrib/gcc/   (props changed)
  projects/zfsd/head/contrib/gdb/   (props changed)
  projects/zfsd/head/contrib/gdtoa/   (props changed)
  projects/zfsd/head/contrib/gnu-sort/   (props changed)
  projects/zfsd/head/contrib/groff/   (props changed)
  projects/zfsd/head/contrib/less/   (props changed)
  projects/zfsd/head/contrib/libpcap/   (props changed)
  projects/zfsd/head/contrib/libstdc++/   (props changed)
  projects/zfsd/head/contrib/llvm/   (props changed)
  projects/zfsd/head/contrib/llvm/tools/clang/   (props changed)
  projects/zfsd/head/contrib/ncurses/   (props changed)
  projects/zfsd/head/contrib/netcat/   (props changed)
  projects/zfsd/head/contrib/ntp/   (props changed)
  projects/zfsd/head/contrib/one-true-awk/   (props changed)
  projects/zfsd/head/contrib/openbsm/   (props changed)
  projects/zfsd/head/contrib/openpam/   (props changed)
  projects/zfsd/head/contrib/pf/   (props changed)
  projects/zfsd/head/contrib/sendmail/   (props changed)
  projects/zfsd/head/contrib/tcpdump/   (props changed)
  projects/zfsd/head/contrib/tcsh/   (props changed)
  projects/zfsd/head/contrib/tnftp/   (props changed)
  projects/zfsd/head/contrib/top/   (props changed)
  projects/zfsd/head/contrib/top/install-sh   (props changed)
  projects/zfsd/head/contrib/tzcode/stdtime/   (props changed)
  projects/zfsd/head/contrib/tzcode/zic/   (props changed)
  projects/zfsd/head/contrib/tzdata/   (props changed)
  projects/zfsd/head/contrib/wpa/   (props changed)
  projects/zfsd/head/contrib/xz/   (props changed)
  projects/zfsd/head/crypto/openssh/   (props changed)
  projects/zfsd/head/crypto/openssl/   (props changed)
  projects/zfsd/head/gnu/lib/   (props changed)
  projects/zfsd/head/gnu/usr.bin/binutils/   (props changed)
  projects/zfsd/head/gnu/usr.bin/cc/cc_tools/   (props changed)
  projects/zfsd/head/gnu/usr.bin/gdb/   (props changed)
  projects/zfsd/head/lib/libc/   (props changed)
  projects/zfsd/head/lib/libc/stdtime/   (props changed)
  projects/zfsd/head/lib/libutil/   (props changed)
  projects/zfsd/head/lib/libz/   (props changed)
  projects/zfsd/head/sbin/   (props changed)
  projects/zfsd/head/sbin/ipfw/   (props changed)
  projects/zfsd/head/share/mk/bsd.arch.inc.mk   (props changed)
  projects/zfsd/head/share/zoneinfo/   (props changed)
  projects/zfsd/head/sys/   (props changed)
  projects/zfsd/head/sys/amd64/include/xen/   (props changed)
  projects/zfsd/head/sys/boot/   (props changed)
  projects/zfsd/head/sys/boot/i386/efi/   (props changed)
  projects/zfsd/head/sys/boot/ia64/efi/   (props changed)
  projects/zfsd/head/sys/boot/ia64/ski/   (props changed)
  projects/zfsd/head/sys/boot/powerpc/boot1.chrp/   (props changed)
  projects/zfsd/head/sys/boot/powerpc/ofw/   (props changed)
  projects/zfsd/head/sys/cddl/contrib/opensolaris/   (props changed)
  projects/zfsd/head/sys/conf/   (props changed)
  projects/zfsd/head/sys/contrib/dev/acpica/   (props changed)
  projects/zfsd/head/sys/contrib/octeon-sdk/   (props changed)
  projects/zfsd/head/sys/contrib/pf/   (props changed)
  projects/zfsd/head/sys/contrib/x86emu/   (props changed)
  projects/zfsd/head/usr.bin/calendar/   (props changed)
  projects/zfsd/head/usr.bin/csup/   (props changed)
  projects/zfsd/head/usr.bin/procstat/   (props changed)
  projects/zfsd/head/usr.sbin/ndiscvt/   (props changed)
  projects/zfsd/head/usr.sbin/rtadvctl/   (props changed)
  projects/zfsd/head/usr.sbin/rtadvd/   (props changed)
  projects/zfsd/head/usr.sbin/zic/   (props changed)

Modified: projects/zfsd/head/ObsoleteFiles.inc
==============================================================================
--- projects/zfsd/head/ObsoleteFiles.inc	Thu Sep  1 19:39:10 2011	(r225316)
+++ projects/zfsd/head/ObsoleteFiles.inc	Thu Sep  1 21:42:54 2011	(r225317)
@@ -38,6 +38,23 @@
 #   xargs -n1 | sort | uniq -d;
 # done
 
+# 20110828: library version bump for 9.0
+OLD_LIBS+=lib/libufs.so.5
+OLD_LIBS+=usr/lib/libbsnmp.so.5
+OLD_LIBS+=usr/lib/libdwarf.so.2
+OLD_LIBS+=usr/lib/libopie.so.6
+OLD_LIBS+=usr/lib/libpcap.so.7
+OLD_LIBS+=usr/lib/librtld_db.so.1
+OLD_LIBS+=usr/lib/libtacplus.so.4
+.if ${TARGET_ARCH} == "amd64"
+OLD_LIBS+=usr/lib32/libufs.so.5
+OLD_LIBS+=usr/lib32/libbsnmp.so.5
+OLD_LIBS+=usr/lib32/libdwarf.so.2
+OLD_LIBS+=usr/lib32/libopie.so.6
+OLD_LIBS+=usr/lib32/libpcap.so.7
+OLD_LIBS+=usr/lib32/librtld_db.so.1
+OLD_LIBS+=usr/lib32/libtacplus.so.4
+.endif
 # 20110709: vm_map_clean.9 -> vm_map_sync.9
 OLD_FILES+=usr/share/man/man9/vm_map_clean.9.gz
 # 20110709: Catch up with removal of these functions.
@@ -2043,9 +2060,9 @@ OLD_FILES+=usr/share/man/man5/ipsend.5.g
 OLD_FILES+=usr/bin/gtar
 OLD_FILES+=usr/share/man/man1/gtar.1.gz
 # 200503XX
-OLD_FILES+=share/man/man3/exp10.3.gz
-OLD_FILES+=share/man/man3/exp10f.3.gz
-OLD_FILES+=share/man/man3/fpsetsticky.3.gz
+OLD_FILES+=usr/share/man/man3/exp10.3.gz
+OLD_FILES+=usr/share/man/man3/exp10f.3.gz
+OLD_FILES+=usr/share/man/man3/fpsetsticky.3.gz
 # 20050324: updated release infrastructure
 OLD_FILES+=usr/share/man/man5/drivers.conf.5.gz
 # 20050317: removed from BIND 9 distribution
@@ -2293,6 +2310,8 @@ OLD_FILES+=lib/libz.so
 OLD_FILES+=bin/cxconfig
 OLD_FILES+=sbin/cxconfig
 OLD_FILES+=usr/share/man/man8/cxconfig.8.gz
+# 20031016: MULTI_DRIVER_MODULE macro removed
+OLD_FILES+=usr/share/man/man9/MULTI_DRIVER_MODULE.9.gz
 # 200309XX
 OLD_FILES+=usr/bin/symorder
 OLD_FILES+=usr/share/man/man1/symorder.1.gz

Modified: projects/zfsd/head/UPDATING
==============================================================================
--- projects/zfsd/head/UPDATING	Thu Sep  1 19:39:10 2011	(r225316)
+++ projects/zfsd/head/UPDATING	Thu Sep  1 21:42:54 2011	(r225317)
@@ -22,6 +22,22 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 9.
 	machines to maximize performance.  (To disable malloc debugging, run
 	ln -s aj /etc/malloc.conf.)
 
+20110828:
+	Bump the shared library version numbers for libraries that
+	do not use symbol versioning, have changed the ABI compared
+	to stable/8 and which shared library version was not bumped.
+	Done as part of 9.0-RELEASE cycle.
+
+20110815:
+	During the merge of Capsicum features, the fget(9) KPI was modified.
+	This may require the rebuilding of out-of-tree device drivers --
+	issues have been reported specifically with the nVidia device driver.
+	__FreeBSD_version is bumped to 900041.
+
+	Also, there is a period between 20110811 and 20110814 where the
+	special devices /dev/{stdin,stdout,stderr} did not work correctly.
+	Building world from a kernel during that window may not work.
+
 20110628:
 	The packet filter (pf) code has been updated to OpenBSD 4.5.
 	You need to update userland tools to be in sync with kernel.
@@ -1446,9 +1462,10 @@ COMMON ITEMS:
 FORMAT:
 
 This file contains a list, in reverse chronological order, of major
-breakages in tracking -current.  Not all things will be listed here,
-and it only starts on October 16, 2004.  Updating files can found in
-previous releases if your system is older than this.
+breakages in tracking -current.  It is not guaranteed to be a complete
+list of such breakages, and only contains entries since October 10, 2007.
+If you need to see UPDATING entries from before that date, you will need
+to fetch an UPDATING file from an older FreeBSD release.
 
 Copyright information:
 

Modified: projects/zfsd/head/bin/ed/buf.c
==============================================================================
--- projects/zfsd/head/bin/ed/buf.c	Thu Sep  1 19:39:10 2011	(r225316)
+++ projects/zfsd/head/bin/ed/buf.c	Thu Sep  1 21:42:54 2011	(r225317)
@@ -94,6 +94,7 @@ put_sbuf_line(const char *cs)
 		;
 	if (s - cs >= LINECHARS) {
 		errmsg = "line too long";
+		free(lp);
 		return NULL;
 	}
 	len = s - cs;
@@ -102,6 +103,7 @@ put_sbuf_line(const char *cs)
 		if (fseeko(sfp, (off_t)0, SEEK_END) < 0) {
 			fprintf(stderr, "%s\n", strerror(errno));
 			errmsg = "cannot seek temp file";
+			free(lp);
 			return NULL;
 		}
 		sfseek = ftello(sfp);
@@ -112,6 +114,7 @@ put_sbuf_line(const char *cs)
 		sfseek = -1;
 		fprintf(stderr, "%s\n", strerror(errno));
 		errmsg = "cannot write temp file";
+		free(lp);
 		return NULL;
 	}
 	lp->len = len;

Modified: projects/zfsd/head/etc/motd
==============================================================================
--- projects/zfsd/head/etc/motd	Thu Sep  1 19:39:10 2011	(r225316)
+++ projects/zfsd/head/etc/motd	Thu Sep  1 21:42:54 2011	(r225317)
@@ -10,8 +10,10 @@ o  Security advisories and updated errat
 
 o  The Handbook and FAQ documents are at http://www.FreeBSD.org/ and,
    along with the mailing lists, can be searched by going to
-   http://www.FreeBSD.org/search/.  If the doc distribution has
-   been installed, they're also available formatted in /usr/share/doc.
+   http://www.FreeBSD.org/search/.  If the doc package has been installed
+   (or fetched via pkg_add -r lang-freebsd-doc, where lang is the
+   2-letter language code, e.g. en), they are also available formatted
+   in /usr/local/share/doc/freebsd.
 
 If you still have a question or problem, please take the output of
 `uname -a', along with any relevant error messages, and email it

Modified: projects/zfsd/head/etc/rc.d/Makefile
==============================================================================
--- projects/zfsd/head/etc/rc.d/Makefile	Thu Sep  1 19:39:10 2011	(r225316)
+++ projects/zfsd/head/etc/rc.d/Makefile	Thu Sep  1 21:42:54 2011	(r225317)
@@ -16,7 +16,7 @@ FILES=	DAEMON FILESYSTEMS LOGIN NETWORKI
 	hostapd hostid hostid_save hostname \
 	inetd initrandom \
 	ip6addrctl ipfilter ipfs ipfw ipmon \
-	ipnat ipsec ipxrouted \
+	ipnat ipsec \
 	jail \
 	kadmind kerberos keyserv kld kldxref kpasswdd \
 	ldconfig local localpkg lockd lpd \
@@ -42,6 +42,10 @@ FILES=	DAEMON FILESYSTEMS LOGIN NETWORKI
 	ypset ypupdated ypxfrd \
 	zfs zvol
 
+.if ${MK_IPX} != "no"
+FILES+=	ipxrouted
+.endif
+
 .if ${MK_OFED} != "no"
 FILES+= opensm
 .endif

Modified: projects/zfsd/head/gnu/usr.bin/gdb/arch/arm/armfbsd-nat.c
==============================================================================
--- projects/zfsd/head/gnu/usr.bin/gdb/arch/arm/armfbsd-nat.c	Thu Sep  1 19:39:10 2011	(r225316)
+++ projects/zfsd/head/gnu/usr.bin/gdb/arch/arm/armfbsd-nat.c	Thu Sep  1 21:42:54 2011	(r225317)
@@ -32,8 +32,8 @@
 #include "arm-tdep.h"
 
 #include <sys/types.h>
-#include <sys/ptrace.h>
 #ifndef CROSS_DEBUGGER
+#include <sys/ptrace.h>
 #include <machine/reg.h>
 #include <machine/frame.h>
 #endif

Modified: projects/zfsd/head/gnu/usr.bin/gdb/kgdb/kthr.c
==============================================================================
--- projects/zfsd/head/gnu/usr.bin/gdb/kgdb/kthr.c	Thu Sep  1 19:39:10 2011	(r225316)
+++ projects/zfsd/head/gnu/usr.bin/gdb/kgdb/kthr.c	Thu Sep  1 21:42:54 2011	(r225317)
@@ -73,11 +73,52 @@ kgdb_thr_first(void)
 	return (first);
 }
 
-struct kthr *
-kgdb_thr_init(void)
+static void
+kgdb_thr_add_procs(uintptr_t paddr)
 {
 	struct proc p;
 	struct thread td;
+	struct kthr *kt;
+	CORE_ADDR addr;
+
+	while (paddr != 0) {
+		if (kvm_read(kvm, paddr, &p, sizeof(p)) != sizeof(p)) {
+			warnx("kvm_read: %s", kvm_geterr(kvm));
+			break;
+		}
+		addr = (uintptr_t)TAILQ_FIRST(&p.p_threads);
+		while (addr != 0) {
+			if (kvm_read(kvm, addr, &td, sizeof(td)) !=
+			    sizeof(td)) {
+				warnx("kvm_read: %s", kvm_geterr(kvm));
+				break;
+			}
+			kt = malloc(sizeof(*kt));
+			kt->next = first;
+			kt->kaddr = addr;
+			if (td.td_tid == dumptid)
+				kt->pcb = dumppcb;
+			else if (td.td_state == TDS_RUNNING && stoppcbs != 0 &&
+			    CPU_ISSET(td.td_oncpu, &stopped_cpus))
+				kt->pcb = (uintptr_t)stoppcbs +
+				    sizeof(struct pcb) * td.td_oncpu;
+			else
+				kt->pcb = (uintptr_t)td.td_pcb;
+			kt->kstack = td.td_kstack;
+			kt->tid = td.td_tid;
+			kt->pid = p.p_pid;
+			kt->paddr = paddr;
+			kt->cpu = td.td_oncpu;
+			first = kt;
+			addr = (uintptr_t)TAILQ_NEXT(&td, td_plist);
+		}
+		paddr = (uintptr_t)LIST_NEXT(&p, p_list);
+	}
+}
+
+struct kthr *
+kgdb_thr_init(void)
+{
 	long cpusetsize;
 	struct kthr *kt;
 	CORE_ADDR addr;
@@ -113,37 +154,11 @@ kgdb_thr_init(void)
 
 	stoppcbs = kgdb_lookup("stoppcbs");
 
-	while (paddr != 0) {
-		if (kvm_read(kvm, paddr, &p, sizeof(p)) != sizeof(p)) {
-			warnx("kvm_read: %s", kvm_geterr(kvm));
-			break;
-		}
-		addr = (uintptr_t)TAILQ_FIRST(&p.p_threads);
-		while (addr != 0) {
-			if (kvm_read(kvm, addr, &td, sizeof(td)) !=
-			    sizeof(td)) {
-				warnx("kvm_read: %s", kvm_geterr(kvm));
-				break;
-			}
-			kt = malloc(sizeof(*kt));
-			kt->next = first;
-			kt->kaddr = addr;
-			if (td.td_tid == dumptid)
-				kt->pcb = dumppcb;
-			else if (td.td_state == TDS_RUNNING && stoppcbs != 0 &&
-			    CPU_ISSET(td.td_oncpu, &stopped_cpus))
-				kt->pcb = (uintptr_t) stoppcbs + sizeof(struct pcb) * td.td_oncpu;
-			else
-				kt->pcb = (uintptr_t)td.td_pcb;
-			kt->kstack = td.td_kstack;
-			kt->tid = td.td_tid;
-			kt->pid = p.p_pid;
-			kt->paddr = paddr;
-			kt->cpu = td.td_oncpu;
-			first = kt;
-			addr = (uintptr_t)TAILQ_NEXT(&td, td_plist);
-		}
-		paddr = (uintptr_t)LIST_NEXT(&p, p_list);
+	kgdb_thr_add_procs(paddr);
+	addr = kgdb_lookup("zombproc");
+	if (addr != 0) {
+		kvm_read(kvm, addr, &paddr, sizeof(paddr));
+		kgdb_thr_add_procs(paddr);
 	}
 	curkthr = kgdb_thr_lookup_tid(dumptid);
 	if (curkthr == NULL)

Modified: projects/zfsd/head/lib/libarchive/archive_read_support_format_iso9660.c
==============================================================================
--- projects/zfsd/head/lib/libarchive/archive_read_support_format_iso9660.c	Thu Sep  1 19:39:10 2011	(r225316)
+++ projects/zfsd/head/lib/libarchive/archive_read_support_format_iso9660.c	Thu Sep  1 21:42:54 2011	(r225317)
@@ -1,7 +1,7 @@
 /*-
  * Copyright (c) 2003-2007 Tim Kientzle
  * Copyright (c) 2009 Andreas Henriksson <andreas at fatal.se>
- * Copyright (c) 2009 Michihiro NAKAJIMA
+ * Copyright (c) 2009-2011 Michihiro NAKAJIMA
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -261,13 +261,17 @@ struct file_info {
 	struct file_info	*use_next;
 	struct file_info	*parent;
 	struct file_info	*next;
+	struct file_info	*re_next;
 	int		 subdirs;
 	uint64_t	 key;		/* Heap Key.			*/
 	uint64_t	 offset;	/* Offset on disk.		*/
 	uint64_t	 size;		/* File size in bytes.		*/
 	uint32_t	 ce_offset;	/* Offset of CE.		*/
 	uint32_t	 ce_size;	/* Size of CE.			*/
+	char		 rr_moved;	/* Flag to rr_moved.		*/
+	char		 rr_moved_has_re_only;
 	char		 re;		/* Having RRIP "RE" extension.	*/
+	char		 re_descendant;
 	uint64_t	 cl_offset;	/* Having RRIP "CL" extension.	*/
 	int		 birthtime_is_set;
 	time_t		 birthtime;	/* File created time.		*/
@@ -294,7 +298,10 @@ struct file_info {
 		struct content	*first;
 		struct content	**last;
 	} contents;
-	char		 exposed;
+	struct {
+		struct file_info	*first;
+		struct file_info	**last;
+	} rede_files;
 };
 
 struct heap_queue {
@@ -317,8 +324,6 @@ struct iso9660 {
 
 	unsigned char	suspOffset;
 	struct file_info *rr_moved;
-	struct heap_queue		 re_dirs;
-	struct heap_queue		 cl_files;
 	struct read_ce_queue {
 		struct read_ce_req {
 			uint64_t	 offset;/* Offset of CE on disk. */
@@ -337,6 +342,10 @@ struct iso9660 {
 		struct file_info	*first;
 		struct file_info	**last;
 	}	cache_files;
+	struct {
+		struct file_info	*first;
+		struct file_info	**last;
+	}	re_files;
 
 	uint64_t current_position;
 	ssize_t	logical_block_size;
@@ -377,7 +386,8 @@ static int	isJolietSVD(struct iso9660 *,
 static int	isSVD(struct iso9660 *, const unsigned char *);
 static int	isEVD(struct iso9660 *, const unsigned char *);
 static int	isPVD(struct iso9660 *, const unsigned char *);
-static struct file_info *next_cache_entry(struct iso9660 *iso9660);
+static int	next_cache_entry(struct archive_read *, struct iso9660 *,
+		    struct file_info **);
 static int	next_entry_seek(struct archive_read *a, struct iso9660 *iso9660,
 		    struct file_info **pfile);
 static struct file_info *
@@ -400,10 +410,12 @@ static void	parse_rockridge_ZF1(struct f
 static void	register_file(struct iso9660 *, struct file_info *);
 static void	release_files(struct iso9660 *);
 static unsigned	toi(const void *p, int n);
+static inline void re_add_entry(struct iso9660 *, struct file_info *);
+static inline struct file_info * re_get_entry(struct iso9660 *);
+static inline int rede_add_entry(struct file_info *);
+static inline struct file_info * rede_get_entry(struct file_info *);
 static inline void cache_add_entry(struct iso9660 *iso9660,
 		    struct file_info *file);
-static inline void cache_add_to_next_of_parent(struct iso9660 *iso9660,
-		    struct file_info *file);
 static inline struct file_info *cache_get_entry(struct iso9660 *iso9660);
 static void	heap_add_entry(struct heap_queue *heap,
 		    struct file_info *file, uint64_t key);
@@ -430,6 +442,8 @@ archive_read_support_format_iso9660(stru
 	iso9660->magic = ISO9660_MAGIC;
 	iso9660->cache_files.first = NULL;
 	iso9660->cache_files.last = &(iso9660->cache_files.first);
+	iso9660->re_files.first = NULL;
+	iso9660->re_files.last = &(iso9660->re_files.first);
 	/* Enable to support Joliet extensions by default.	*/
 	iso9660->opt_support_joliet = 1;
 	/* Enable to support Rock Ridge extensions by default.	*/
@@ -975,42 +989,38 @@ read_children(struct archive_read *a, st
 			child = parse_file_info(a, parent, p);
 			if (child == NULL)
 				return (ARCHIVE_FATAL);
-			if (child->cl_offset)
-				heap_add_entry(&(iso9660->cl_files),
-				    child, child->cl_offset);
-			else {
-				if (child->multi_extent || multi != NULL) {
-					struct content *con;
-
-					if (multi == NULL) {
-						multi = child;
-						multi->contents.first = NULL;
-						multi->contents.last =
-						    &(multi->contents.first);
-					}
-					con = malloc(sizeof(struct content));
-					if (con == NULL) {
-						archive_set_error(
-						    &a->archive, ENOMEM,
-						    "No memory for "
-						    "multi extent");
-						return (ARCHIVE_FATAL);
-					}
-					con->offset = child->offset;
-					con->size = child->size;
-					con->next = NULL;
-					*multi->contents.last = con;
-					multi->contents.last = &(con->next);
-					if (multi == child)
-						add_entry(iso9660, child);
-					else {
-						multi->size += child->size;
-						if (!child->multi_extent)
-							multi = NULL;
-					}
-				} else
+			if (child->cl_offset == 0 &&
+			    (child->multi_extent || multi != NULL)) {
+				struct content *con;
+
+				if (multi == NULL) {
+					multi = child;
+					multi->contents.first = NULL;
+					multi->contents.last =
+					    &(multi->contents.first);
+				}
+				con = malloc(sizeof(struct content));
+				if (con == NULL) {
+					archive_set_error(
+					    &a->archive, ENOMEM,
+					    "No memory for "
+					    "multi extent");
+					return (ARCHIVE_FATAL);
+				}
+				con->offset = child->offset;
+				con->size = child->size;
+				con->next = NULL;
+				*multi->contents.last = con;
+				multi->contents.last = &(con->next);
+				if (multi == child)
 					add_entry(iso9660, child);
-			}
+				else {
+					multi->size += child->size;
+					if (!child->multi_extent)
+						multi = NULL;
+				}
+			} else
+				add_entry(iso9660, child);
 		}
 	}
 
@@ -1022,102 +1032,12 @@ read_children(struct archive_read *a, st
 }
 
 static int
-relocate_dir(struct iso9660 *iso9660, struct file_info *file)
-{
-	struct file_info *re;
-
-	re = heap_get_entry(&(iso9660->re_dirs));
-	while (re != NULL && re->offset < file->cl_offset) {
-		/* This case is wrong pattern.
-		 * But dont't reject this directory entry to be robust. */
-		cache_add_entry(iso9660, re);
-		re = heap_get_entry(&(iso9660->re_dirs));
-	}
-	if (re == NULL)
-		/* This case is wrong pattern. */
-		return (0);
-	if (re->offset == file->cl_offset) {
-		re->parent->subdirs--;
-		re->parent = file->parent;
-		re->parent->subdirs++;
-		cache_add_to_next_of_parent(iso9660, re);
-		return (1);
-	} else
-		/* This case is wrong pattern. */
-		heap_add_entry(&(iso9660->re_dirs), re, re->offset);
-	return (0);
-}
-
-static int
-read_entries(struct archive_read *a)
-{
-	struct iso9660 *iso9660;
-	struct file_info *file;
-	int r;
-
-	iso9660 = (struct iso9660 *)(a->format->data);
-
-	while ((file = next_entry(iso9660)) != NULL &&
-	    (file->mode & AE_IFMT) == AE_IFDIR) {
-		r = read_children(a, file);
-		if (r != ARCHIVE_OK)
-			return (r);
-
-		if (iso9660->seenRockridge &&
-		    file->parent != NULL &&
-		    file->parent->parent == NULL &&
-		    iso9660->rr_moved == NULL &&
-		    (strcmp(file->name.s, "rr_moved") == 0 ||
-		     strcmp(file->name.s, ".rr_moved") == 0)) {
-			iso9660->rr_moved = file;
-		} else if (file->re)
-			heap_add_entry(&(iso9660->re_dirs), file,
-			    file->offset);
-		else
-			cache_add_entry(iso9660, file);
-	}
-	if (file != NULL)
-		add_entry(iso9660, file);
-
-	if (iso9660->rr_moved != NULL) {
-		/*
-		 * Relocate directory which rr_moved has.
-		 */
-		while ((file = heap_get_entry(&(iso9660->cl_files))) != NULL)
-			relocate_dir(iso9660, file);
-
-		/* If rr_moved directory still has children,
-		 * Add rr_moved into pending_files to show
-		 */
-		if (iso9660->rr_moved->subdirs) {
-			cache_add_entry(iso9660, iso9660->rr_moved);
-			/* If entries which have "RE" extension are still
-			 * remaining(this case is unlikely except ISO image
-			 * is broken), the entries won't be exposed. */
-			while ((file = heap_get_entry(&(iso9660->re_dirs))) != NULL)
-				cache_add_entry(iso9660, file);
-		} else
-			iso9660->rr_moved->parent->subdirs--;
-	} else {
-		/*
-		 * In case ISO image is broken. If the name of rr_moved
-		 * directory has been changed by damage, subdirectories
-		 * of rr_moved entry won't be exposed.
-		 */
-		while ((file = heap_get_entry(&(iso9660->re_dirs))) != NULL)
-			cache_add_entry(iso9660, file);
-	}
-
-	return (ARCHIVE_OK);
-}
-
-static int
 archive_read_format_iso9660_read_header(struct archive_read *a,
     struct archive_entry *entry)
 {
 	struct iso9660 *iso9660;
 	struct file_info *file;
-	int r, rd_r;
+	int r, rd_r = ARCHIVE_OK;
 
 	iso9660 = (struct iso9660 *)(a->format->data);
 
@@ -1207,11 +1127,7 @@ archive_read_format_iso9660_read_header(
 			a->archive.archive_format_name =
 			    "ISO9660 with Rockridge extensions";
 		}
-		rd_r = read_entries(a);
-		if (rd_r == ARCHIVE_FATAL)
-			return (ARCHIVE_FATAL);
-	} else
-		rd_r = ARCHIVE_OK;
+	}
 
 	/* Get the next entry that appears after the current offset. */
 	r = next_entry_seek(a, iso9660, &file);
@@ -1324,7 +1240,6 @@ archive_read_format_iso9660_read_header(
 		/* Directory data has been read completely. */
 		iso9660->entry_bytes_remaining = 0;
 		iso9660->entry_sparse_offset = 0;
-		file->exposed = 1;
 	}
 
 	if (rd_r != ARCHIVE_OK)
@@ -1651,10 +1566,6 @@ archive_read_format_iso9660_cleanup(stru
 	archive_string_free(&iso9660->previous_pathname);
 	if (iso9660->pending_files.files)
 		free(iso9660->pending_files.files);
-	if (iso9660->re_dirs.files)
-		free(iso9660->re_dirs.files);
-	if (iso9660->cl_files.files)
-		free(iso9660->cl_files.files);
 #ifdef HAVE_ZLIB_H
 	free(iso9660->entry_zisofs.uncompressed_buffer);
 	free(iso9660->entry_zisofs.block_pointers);
@@ -1735,6 +1646,8 @@ parse_file_info(struct archive_read *a, 
 	file->size = fsize;
 	file->mtime = isodate7(isodirrec + DR_date_offset);
 	file->ctime = file->atime = file->mtime;
+	file->rede_files.first = NULL;
+	file->rede_files.last = &(file->rede_files.first);
 
 	p = isodirrec + DR_name_offset;
 	/* Rockridge extensions (if any) follow name.  Compute this
@@ -1873,9 +1786,40 @@ parse_file_info(struct archive_read *a, 
 
 	file->nlinks = 1;/* Reset nlink. we'll calculate it later. */
 	/* Tell file's parent how many children that parent has. */
-	if (parent != NULL && (flags & 0x02) && file->cl_offset == 0)
+	if (parent != NULL && (flags & 0x02))
 		parent->subdirs++;
 
+	if (iso9660->seenRockridge) {
+		if (parent != NULL && parent->parent == NULL &&
+		    (flags & 0x02) && iso9660->rr_moved == NULL &&
+		    (strcmp(file->name.s, "rr_moved") == 0 ||
+		     strcmp(file->name.s, ".rr_moved") == 0)) {
+			iso9660->rr_moved = file;
+			file->rr_moved = 1;
+			file->rr_moved_has_re_only = 1;
+			file->re = 0;
+			parent->subdirs--;
+		} else if (file->re) {
+			/* This file's parent is not rr_moved, clear invalid
+			 * "RE" mark. */
+			if (parent == NULL || parent->rr_moved == 0)
+				file->re = 0;
+			else if ((flags & 0x02) == 0) {
+				file->rr_moved_has_re_only = 0;
+				file->re = 0;
+			}
+		} else if (parent != NULL && parent->rr_moved)
+			file->rr_moved_has_re_only = 0;
+		else if (parent != NULL && (flags & 0x02) &&
+		    (parent->re || parent->re_descendant))
+			file->re_descendant = 1;
+		if (file->cl_offset != 0) {
+			parent->subdirs++;
+			/* To be appeared before other dirs. */
+			file->offset = file->number = file->cl_offset;
+		}
+	}
+
 #if DEBUG
 	/* DEBUGGING: Warn about attributes I don't yet fully support. */
 	if ((flags & ~0x02) != 0) {
@@ -2489,10 +2433,12 @@ next_entry_seek(struct archive_read *a, 
     struct file_info **pfile)
 {
 	struct file_info *file;
+	int r;
 
-	*pfile = file = next_cache_entry(iso9660);
-	if (file == NULL)
-		return (ARCHIVE_EOF);
+	r = next_cache_entry(a, iso9660, pfile);
+	if (r != ARCHIVE_OK)
+		return (r);
+	file = *pfile;
 
 	/* Don't waste time seeking for zero-length bodies. */
 	if (file->size == 0)
@@ -2513,8 +2459,9 @@ next_entry_seek(struct archive_read *a, 
 	return (ARCHIVE_OK);
 }
 
-static struct file_info *
-next_cache_entry(struct iso9660 *iso9660)
+static int
+next_cache_entry(struct archive_read *a, struct iso9660 *iso9660,
+    struct file_info **pfile)
 {
 	struct file_info *file;
 	struct {
@@ -2526,21 +2473,128 @@ next_cache_entry(struct iso9660 *iso9660
 
 	file = cache_get_entry(iso9660);
 	if (file != NULL) {
-		while (file->parent != NULL && !file->parent->exposed) {
-			/* If file's parent is not exposed, it's moved
-			 * to next entry of its parent. */
-			cache_add_to_next_of_parent(iso9660, file);
-			file = cache_get_entry(iso9660);
-		}
-		return (file);
+		*pfile = file;
+		return (ARCHIVE_OK);
 	}
 
-	file = next_entry(iso9660);
-	if (file == NULL)
-		return (NULL);
+	for (;;) {
+		struct file_info *re, *d;
+
+		*pfile = file = next_entry(iso9660);
+		if (file == NULL) {
+			/*
+			 * If directory entries all which are descendant of
+			 * rr_moved are stil remaning, expose their. 
+			 */
+			if (iso9660->re_files.first != NULL && 
+			    iso9660->rr_moved != NULL &&
+			    iso9660->rr_moved->rr_moved_has_re_only)
+				/* Expose "rr_moved" entry. */
+				cache_add_entry(iso9660, iso9660->rr_moved);
+			while ((re = re_get_entry(iso9660)) != NULL) {
+				/* Expose its descendant dirs. */
+				while ((d = rede_get_entry(re)) != NULL)
+					cache_add_entry(iso9660, d);
+			}
+			if (iso9660->cache_files.first != NULL)
+				return (next_cache_entry(a, iso9660, pfile));
+			return (ARCHIVE_EOF);
+		}
+
+		if (file->cl_offset) {
+			struct file_info *first_re = NULL;
+			int nexted_re = 0;
+
+			/*
+			 * Find "RE" dir for the current file, which
+			 * has "CL" flag.
+			 */
+			while ((re = re_get_entry(iso9660))
+			    != first_re) {
+				if (first_re == NULL)
+					first_re = re;
+				if (re->offset == file->cl_offset) {
+					re->parent->subdirs--;
+					re->parent = file->parent;
+					re->re = 0;
+					if (re->parent->re_descendant) {
+						nexted_re = 1;
+						re->re_descendant = 1;
+						if (rede_add_entry(re) < 0)
+							goto fatal_rr;
+						/* Move a list of descendants
+						 * to a new ancestor. */
+						while ((d = rede_get_entry(
+						    re)) != NULL)
+							if (rede_add_entry(d)
+							    < 0)
+								goto fatal_rr;
+						break;
+					}
+					/* Replace the current file
+					 * with "RE" dir */
+					*pfile = file = re;
+					/* Expose its descendant */
+					while ((d = rede_get_entry(
+					    file)) != NULL)
+						cache_add_entry(
+						    iso9660, d);
+					break;
+				} else
+					re_add_entry(iso9660, re);
+			}
+			if (nexted_re) {
+				/*
+				 * Do not expose this at this time
+				 * because we have not gotten its full-path
+				 * name yet.
+				 */
+				continue;
+			}
+		} else if ((file->mode & AE_IFMT) == AE_IFDIR) {
+			int r;
+
+			/* Read file entries in this dir. */
+			r = read_children(a, file);
+			if (r != ARCHIVE_OK)
+				return (r);
+
+			/*
+			 * Handle a special dir of Rockridge extensions,
+			 * "rr_moved".
+			 */
+			if (file->rr_moved) {
+				/*
+				 * If this has only the subdirectories which
+				 * have "RE" flags, do not expose at this time.
+				 */
+				if (file->rr_moved_has_re_only)
+					continue;
+				/* Otherwise expose "rr_moved" entry. */
+			} else if (file->re) {
+				/*
+				 * Do not expose this at this time
+				 * because we have not gotten its full-path
+				 * name yet.
+				 */
+				re_add_entry(iso9660, file);
+				continue;
+			} else if (file->re_descendant) {
+				/*
+				 * Do not expose this at this time
+				 * because we have not gotten its full-path
+				 * name yet.
+				 */
+				if (rede_add_entry(file) < 0)
+					goto fatal_rr;
+				continue;
+			}
+		}
+		break;
+	}
 
 	if ((file->mode & AE_IFMT) != AE_IFREG || file->number == -1)
-		return (file);
+		return (ARCHIVE_OK);
 
 	count = 0;
 	number = file->number;
@@ -2573,8 +2627,10 @@ next_cache_entry(struct iso9660 *iso9660
 		file = next_entry(iso9660);
 	}
 
-	if (count == 0)
-		return (file);
+	if (count == 0) {
+		*pfile = file;
+		return ((file == NULL)?ARCHIVE_EOF:ARCHIVE_OK);
+	}
 	if (file->number == -1) {
 		file->next = NULL;
 		*empty_files.last = file;
@@ -2599,24 +2655,75 @@ next_cache_entry(struct iso9660 *iso9660
 		*iso9660->cache_files.last = empty_files.first;
 		iso9660->cache_files.last = empty_files.last;
 	}
-	return (cache_get_entry(iso9660));
+	*pfile = cache_get_entry(iso9660);
+	return ((*pfile == NULL)?ARCHIVE_EOF:ARCHIVE_OK);
+
+fatal_rr:
+	archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC,
+	    "Failed to connect 'CL' pointer to 'RE' rr_moved pointer of"
+	    "Rockridge extensions");
+	return (ARCHIVE_FATAL);
 }
 
 static inline void
-cache_add_entry(struct iso9660 *iso9660, struct file_info *file)
+re_add_entry(struct iso9660 *iso9660, struct file_info *file)
 {
-	file->next = NULL;
-	*iso9660->cache_files.last = file;
-	iso9660->cache_files.last = &(file->next);
+	file->re_next = NULL;
+	*iso9660->re_files.last = file;
+	iso9660->re_files.last = &(file->re_next);
+}
+
+static inline struct file_info *
+re_get_entry(struct iso9660 *iso9660)
+{
+	struct file_info *file;
+
+	if ((file = iso9660->re_files.first) != NULL) {
+		iso9660->re_files.first = file->re_next;
+		if (iso9660->re_files.first == NULL)
+			iso9660->re_files.last =
+			    &(iso9660->re_files.first);
+	}
+	return (file);
+}
+
+static inline int
+rede_add_entry(struct file_info *file)
+{
+	struct file_info *re;
+
+	re = file->parent;
+	while (re != NULL && !re->re)
+		re = re->parent;
+	if (re == NULL)
+		return (-1);
+
+	file->re_next = NULL;
+	*re->rede_files.last = file;
+	re->rede_files.last = &(file->re_next);
+	return (0);
+}
+
+static inline struct file_info *
+rede_get_entry(struct file_info *re)
+{
+	struct file_info *file;
+
+	if ((file = re->rede_files.first) != NULL) {
+		re->rede_files.first = file->re_next;
+		if (re->rede_files.first == NULL)
+			re->rede_files.last =
+			    &(re->rede_files.first);
+	}
+	return (file);
 }
 
 static inline void
-cache_add_to_next_of_parent(struct iso9660 *iso9660, struct file_info *file)
+cache_add_entry(struct iso9660 *iso9660, struct file_info *file)
 {
-	file->next = file->parent->next;
-	file->parent->next = file;
-	if (iso9660->cache_files.last == &(file->parent->next))
-		iso9660->cache_files.last = &(file->next);
+	file->next = NULL;
+	*iso9660->cache_files.last = file;
+	iso9660->cache_files.last = &(file->next);
 }
 
 static inline struct file_info *

Copied: projects/zfsd/head/lib/libarchive/test/test_read_format_iso_2.iso.Z.uu (from r225316, head/lib/libarchive/test/test_read_format_iso_2.iso.Z.uu)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ projects/zfsd/head/lib/libarchive/test/test_read_format_iso_2.iso.Z.uu	Thu Sep  1 21:42:54 2011	(r225317, copy of r225316, head/lib/libarchive/test/test_read_format_iso_2.iso.Z.uu)
@@ -0,0 +1,37 @@
+$FreeBSD$
+
+begin 644 test_read_format_iso_2.iso.Z
+M'YV0``(*'$BPH,&#"!,J7,BPH<.'$"-*G$BQHL6+&#-JW,BQH\>/($.*'$FR
+MI,F3*%.J7,FRI<N7,&/*G$FSILV;.'/JW,FSI\^?0(,*'4JTJ-&C2),J7<JT
+MJ=.G4*-*G4JUJM6K6+-JW<JUJ]>O8,.*'4NVK-FS:-.J7<NVK=NW<./*G4NW
+MKMV[>//JW<NWK]^_@`,+'DRXL.'#B!,K7LRXL>/'D"-+GDRYLN7+F#-KWLRY
+ML^?/H$.+'DVZM.G3J%.K7LVZM>O7L&/+GDV[MNW;N'/KWLV[M^_?P(,+'TZ\
+MN/'CR),K7\Z\N?/GT*-+GTZ]NO7KV+-KW\Z]N_?OX,.+'T^^O/GSZ-.K7\^^
+MO?OW\./+GT^_OOW[^//KW\^_O_^_`0Q!!`PPQ!```$Z408<04Q`!PH,01BCA
+MA!16:.&%$!Z404$;>G0@``%\>"`""`#@04$>2)#0!`.)```%!<%8HD`EEF+C
+MC:4($)"(!V+HXX]`!BGDD$06:>212":IY)),-NGDDU!&*>645%9II8\R%!@#
+M##C$0(,,,6Q)PPP$DI-EF%QZ"::89,)`#H%PQBDGG&=NV>67:(Y9YH?_]>GG
+MGX7](R"!!@)JZ*&()JKHHL<="...`AU80:0`!`$B`!=0. at 2CG';JZ:>@A at H8
+MGR]>:FI`DP9@*:F9!BCJJ[#&*NNLM#[EXJ,#R3A0C3C:J*.I(0)P:XP`S!@0
+MK[W^RF,`+DY*T*3&%@O`&P at X4($"!I"C[(ZJNI at I09E&6R*UUBJP at +:0 at NAJ
+MK>RVZ^Z[\$;7;$'0[CIMM==FNZVZPI9*D*XT`M"KK^F&&(`)`%A0D`4&%&0`
+MN?F20RF(!`CAP at XQQ*OQQAQW['%S:)3!!AMO*/#QR2BGK/+*G7I;4+CV0FPN
+MNL`>..R_T at 8\<(X%AX at P!@5AT#!!#^,[\\0!$$#$Q1FS[/334$<M-6$ACUSR
+MU%AGK?767'?M]==@ARWVV&27;?;9:*>M]MILM^WVVW#'+??<=-=M]]UXYZWW
+MWGSW[???@`<N^."$%V[XX8 at GKOCBC#?N^..01R[YY)17;OGEF&>N^>:<=^[Y
+MYZ"'+OKHI)=N^NFHIZ[ZZJRW[OKKL,<N^^RTUV[[[;CGKOONO/?N^^_`!R_\
+M\,07;_SQR">O_/+,-^_\\]!'+_WTU%=O_?789Z_]]MQW[_WWX(<O_OCDEV_^
+M^>BGK_[Z[+?O_OOPQR___/37;__]^.>O__[\]^___P`,H``'2,`"&O"`"$R@
+M`A?(P`8Z\($0C*`$)TC!"EKP at AC,H`8WR,$.>O"#(`RA"$=(PA*:\(0H3*$*
+M5\C"%KKPA3",H0QG2,,:VO"&.,RA#G?(PQ[Z\(=`#*(0ATC$(AKQB$A,HA*7
+MR,0F.O&)4(RB%*=(Q2I:\8I8S*(6M\C%+GKQBV`,HQC'2,8RFO&,:$RC&M?(
+MQC:Z\8UPC*,<YTC'.MKQCGC,HQ[WR,<^^O&/@`RD(`=)R$(:\I"(3*0B%\G(
+M1CKRD9",I"0G2<E*6O*2F,RD)C?)R4YZ\I.@#*4H1TG*4IKRE*A,I2I7R<I6
+MNO*5L(RE+&=)RUK:\I:XS*4N=\G+7OKRE\`,IC"'2<QB&O.8R$RF,I?)S&8Z
+M\YG0C*8TITG-:EKSFMC,IC:WR<UN>O.;X`RG.,=)SG*:\YSH3*<ZU\G.=KKS
+MG?",ISSG2<]ZVO.>^,RG/O?)SW[Z\Y\`#:A`!TK0 at AKTH`A-J$(7RM"&.O2A
+M$(VH1"=*T8I:]*(8S:A&-\K1CGKTHR`-J4A'2M*2FO2D*$VI2E?*TI:Z]*4P
+MC:E,9TK3FMKTICC-J4YWRM.>^O2G0`VJ4(=*U*(:]:A(3:I2E\K4ICKUJ5"-
+MJE2G2M6J6O6J6,VJ5K?*U:YZ]:M@#:M8QTK6LIKUK&A-JUK7RM:VNO6M<`TG
+`
+end

Modified: projects/zfsd/head/lib/libarchive/test/test_read_format_iso_gz.c
==============================================================================
--- projects/zfsd/head/lib/libarchive/test/test_read_format_iso_gz.c	Thu Sep  1 19:39:10 2011	(r225316)
+++ projects/zfsd/head/lib/libarchive/test/test_read_format_iso_gz.c	Thu Sep  1 21:42:54 2011	(r225317)
@@ -25,7 +25,8 @@
 #include "test.h"
 __FBSDID("$FreeBSD$");
 
-DEFINE_TEST(test_read_format_iso_gz)
+static void
+test1(void)
 {
 	struct archive_entry *ae;
 	struct archive *a;
@@ -49,4 +50,50 @@ DEFINE_TEST(test_read_format_iso_gz)
 	assertEqualInt(ARCHIVE_OK, archive_read_finish(a));
 }
 
+static
+void test2(void)
+{
+	struct archive_entry *ae;
+	struct archive *a;
+	const char *name = "test_read_format_iso_2.iso.Z";
+
+	extract_reference_file(name);
+
+	assert((a = archive_read_new()) != NULL);
+	assertEqualIntA(a, ARCHIVE_OK,
+	    archive_read_support_compression_all(a));
+	assertEqualIntA(a, ARCHIVE_OK,
+	    archive_read_support_format_all(a));
+	assertEqualIntA(a, ARCHIVE_OK,
+	    archive_read_open_filename(a, name, 512));
+	assertEqualIntA(a, ARCHIVE_OK,
+	    archive_read_next_header(a, &ae));
+	assertEqualString(".", archive_entry_pathname(ae));
+	assertEqualIntA(a, ARCHIVE_OK,
+	    archive_read_next_header(a, &ae));
+	assertEqualString("A", archive_entry_pathname(ae));
+	assertEqualIntA(a, ARCHIVE_OK,
+	    archive_read_next_header(a, &ae));
+	assertEqualString("A/B", archive_entry_pathname(ae));
+	assertEqualIntA(a, ARCHIVE_OK,
+	    archive_read_next_header(a, &ae));
+	assertEqualString("C", archive_entry_pathname(ae));
+	assertEqualIntA(a, ARCHIVE_OK,
+	    archive_read_next_header(a, &ae));
+	assertEqualString("C/D", archive_entry_pathname(ae));
+	assertEqualIntA(a, ARCHIVE_EOF,
+	    archive_read_next_header(a, &ae));
+	assertEqualInt(archive_compression(a),
+	    ARCHIVE_COMPRESSION_COMPRESS);
+	assertEqualInt(archive_format(a), ARCHIVE_FORMAT_ISO9660);
+	assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
+	assertEqualInt(ARCHIVE_OK, archive_read_finish(a));
+}
+
+DEFINE_TEST(test_read_format_iso_gz)
+{
+	test1();
+	test2();
+}
+
 

Modified: projects/zfsd/head/lib/libarchive/test/test_read_format_isojoliet_bz2.c
==============================================================================
--- projects/zfsd/head/lib/libarchive/test/test_read_format_isojoliet_bz2.c	Thu Sep  1 19:39:10 2011	(r225316)
+++ projects/zfsd/head/lib/libarchive/test/test_read_format_isojoliet_bz2.c	Thu Sep  1 21:42:54 2011	(r225317)
@@ -95,7 +95,7 @@ DEFINE_TEST(test_read_format_isojoliet_b
 	/* A regular file with two names ("hardlink" gets returned
 	 * first, so it's not marked as a hardlink). */
 	assertEqualInt(0, archive_read_next_header(a, &ae));
-	assertEqualString("long-joliet-file-name.textfile",
+	assertEqualString("hardlink",
 	    archive_entry_pathname(ae));
 	assertEqualInt(AE_IFREG, archive_entry_filetype(ae));
 	assert(archive_entry_hardlink(ae) == NULL);
@@ -108,9 +108,10 @@ DEFINE_TEST(test_read_format_isojoliet_b

*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***


More information about the svn-src-projects mailing list