Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 19 Sep 2016 17:15:02 +0000 (UTC)
From:      Mark Johnston <markj@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-user@freebsd.org
Subject:   svn commit: r305984 - in user/alc/PQ_LAUNDRY: . bin/cat contrib/cortex-strings contrib/libarchive/libarchive contrib/libarchive/libarchive/test contrib/netbsd-tests/usr.bin/dirname etc etc/autofs l...
Message-ID:  <201609191715.u8JHF2iO059618@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: markj
Date: Mon Sep 19 17:15:01 2016
New Revision: 305984
URL: https://svnweb.freebsd.org/changeset/base/305984

Log:
  MFH r305983

Added:
  user/alc/PQ_LAUNDRY/contrib/cortex-strings/
     - copied from r305983, head/contrib/cortex-strings/
  user/alc/PQ_LAUNDRY/lib/libc/aarch64/string/
     - copied from r305983, head/lib/libc/aarch64/string/
  user/alc/PQ_LAUNDRY/lib/libc/sys/rctl_add_rule.2
     - copied unchanged from r305983, head/lib/libc/sys/rctl_add_rule.2
  user/alc/PQ_LAUNDRY/sys/arm/cloudabi32/
     - copied from r305983, head/sys/arm/cloudabi32/
  user/alc/PQ_LAUNDRY/sys/compat/freebsd32/capabilities.conf
     - copied unchanged from r305983, head/sys/compat/freebsd32/capabilities.conf
  user/alc/PQ_LAUNDRY/sys/contrib/cloudabi/cloudabi_vdso_armv6.S
     - copied unchanged from r305983, head/sys/contrib/cloudabi/cloudabi_vdso_armv6.S
  user/alc/PQ_LAUNDRY/sys/dev/cxgbe/if_cc.c
     - copied unchanged from r305983, head/sys/dev/cxgbe/if_cc.c
  user/alc/PQ_LAUNDRY/sys/dev/cxgbe/if_ccv.c
     - copied unchanged from r305983, head/sys/dev/cxgbe/if_ccv.c
  user/alc/PQ_LAUNDRY/sys/mips/broadcom/bcm_bmips.c
     - copied unchanged from r305983, head/sys/mips/broadcom/bcm_bmips.c
  user/alc/PQ_LAUNDRY/sys/mips/broadcom/bcm_bmips_exts.h
     - copied unchanged from r305983, head/sys/mips/broadcom/bcm_bmips_exts.h
  user/alc/PQ_LAUNDRY/sys/mips/broadcom/bcm_bmipsreg.h
     - copied unchanged from r305983, head/sys/mips/broadcom/bcm_bmipsreg.h
  user/alc/PQ_LAUNDRY/sys/mips/broadcom/bcm_mips74k.c
     - copied unchanged from r305983, head/sys/mips/broadcom/bcm_mips74k.c
  user/alc/PQ_LAUNDRY/sys/mips/broadcom/bcm_mips74kreg.h
     - copied unchanged from r305983, head/sys/mips/broadcom/bcm_mips74kreg.h
  user/alc/PQ_LAUNDRY/sys/modules/cxgbe/if_cc/
     - copied from r305983, head/sys/modules/cxgbe/if_cc/
  user/alc/PQ_LAUNDRY/sys/modules/cxgbe/if_ccv/
     - copied from r305983, head/sys/modules/cxgbe/if_ccv/
  user/alc/PQ_LAUNDRY/tools/build/options/WITH_RCS
     - copied unchanged from r305983, head/tools/build/options/WITH_RCS
  user/alc/PQ_LAUNDRY/usr.sbin/bhyve/pci_virtio_console.c
     - copied unchanged from r305983, head/usr.sbin/bhyve/pci_virtio_console.c
Deleted:
  user/alc/PQ_LAUNDRY/sys/mips/broadcom/bcm_mips_exts.h
  user/alc/PQ_LAUNDRY/sys/mips/broadcom/bcm_mipscore.c
  user/alc/PQ_LAUNDRY/sys/mips/broadcom/bcm_mipscore.h
  user/alc/PQ_LAUNDRY/tools/build/options/WITHOUT_RCS
Modified:
  user/alc/PQ_LAUNDRY/UPDATING
  user/alc/PQ_LAUNDRY/bin/cat/cat.c
  user/alc/PQ_LAUNDRY/contrib/libarchive/libarchive/archive_platform.h
  user/alc/PQ_LAUNDRY/contrib/libarchive/libarchive/archive_read_disk_entry_from_file.c
  user/alc/PQ_LAUNDRY/contrib/libarchive/libarchive/archive_read_disk_posix.c
  user/alc/PQ_LAUNDRY/contrib/libarchive/libarchive/archive_read_support_format_tar.c
  user/alc/PQ_LAUNDRY/contrib/libarchive/libarchive/archive_write_disk_acl.c
  user/alc/PQ_LAUNDRY/contrib/libarchive/libarchive/archive_write_disk_posix.c
  user/alc/PQ_LAUNDRY/contrib/libarchive/libarchive/test/test_write_disk_secure745.c
  user/alc/PQ_LAUNDRY/contrib/libarchive/libarchive/test/test_write_disk_secure746.c
  user/alc/PQ_LAUNDRY/contrib/libarchive/libarchive/test/test_write_format_gnutar_filenames.c
  user/alc/PQ_LAUNDRY/contrib/netbsd-tests/usr.bin/dirname/t_dirname.sh
  user/alc/PQ_LAUNDRY/etc/autofs/special_media
  user/alc/PQ_LAUNDRY/etc/rc.subr
  user/alc/PQ_LAUNDRY/lib/libarchive/tests/Makefile
  user/alc/PQ_LAUNDRY/lib/libc/gen/dirname.3
  user/alc/PQ_LAUNDRY/lib/libc/gen/dirname.c
  user/alc/PQ_LAUNDRY/lib/libc/stdlib/Makefile.inc
  user/alc/PQ_LAUNDRY/lib/libc/sys/Makefile.inc
  user/alc/PQ_LAUNDRY/lib/libc/tests/iconv/Makefile
  user/alc/PQ_LAUNDRY/lib/libc/tests/stdio/open_memstream2_test.c
  user/alc/PQ_LAUNDRY/lib/libc/tests/stdio/open_wmemstream_test.c
  user/alc/PQ_LAUNDRY/lib/libc/tests/stdio/printbasic_test.c
  user/alc/PQ_LAUNDRY/lib/libc/tests/stdio/printfloat_test.c
  user/alc/PQ_LAUNDRY/lib/libc/tests/sys/Makefile
  user/alc/PQ_LAUNDRY/lib/libprocstat/common_kvm.c
  user/alc/PQ_LAUNDRY/sbin/geom/class/multipath/gmultipath.8
  user/alc/PQ_LAUNDRY/sbin/ggate/ggatec/ggatec.8
  user/alc/PQ_LAUNDRY/sbin/ggate/ggated/ggated.8
  user/alc/PQ_LAUNDRY/sbin/ggate/ggatel/ggatel.8
  user/alc/PQ_LAUNDRY/sbin/hastctl/hastctl.8
  user/alc/PQ_LAUNDRY/sbin/hastd/hastd.8
  user/alc/PQ_LAUNDRY/sbin/ifconfig/af_link.c
  user/alc/PQ_LAUNDRY/sbin/ifconfig/ifconfig.8
  user/alc/PQ_LAUNDRY/sbin/iscontrol/iscontrol.8
  user/alc/PQ_LAUNDRY/sbin/mdmfs/mdmfs.8
  user/alc/PQ_LAUNDRY/sbin/mount_nfs/mount_nfs.8
  user/alc/PQ_LAUNDRY/sbin/nandfs/nandfs.8
  user/alc/PQ_LAUNDRY/sbin/natd/natd.c
  user/alc/PQ_LAUNDRY/sbin/nvmecontrol/nvmecontrol.8
  user/alc/PQ_LAUNDRY/sbin/rcorder/rcorder.8
  user/alc/PQ_LAUNDRY/sbin/reboot/reboot.8
  user/alc/PQ_LAUNDRY/sbin/sysctl/sysctl.c
  user/alc/PQ_LAUNDRY/sbin/umount/umount.8
  user/alc/PQ_LAUNDRY/share/man/man5/src.conf.5
  user/alc/PQ_LAUNDRY/share/man/man8/rc.subr.8
  user/alc/PQ_LAUNDRY/share/misc/organization.dot
  user/alc/PQ_LAUNDRY/share/mk/meta.sys.mk
  user/alc/PQ_LAUNDRY/share/mk/src.opts.mk
  user/alc/PQ_LAUNDRY/sys/amd64/amd64/machdep.c
  user/alc/PQ_LAUNDRY/sys/amd64/amd64/trap.c
  user/alc/PQ_LAUNDRY/sys/amd64/include/cputypes.h
  user/alc/PQ_LAUNDRY/sys/amd64/include/db_machdep.h
  user/alc/PQ_LAUNDRY/sys/arm/arm/machdep.c
  user/alc/PQ_LAUNDRY/sys/arm64/arm64/machdep.c
  user/alc/PQ_LAUNDRY/sys/boot/common/ufsread.c
  user/alc/PQ_LAUNDRY/sys/boot/efi/include/efilib.h
  user/alc/PQ_LAUNDRY/sys/boot/efi/loader/arch/amd64/elf64_freebsd.c
  user/alc/PQ_LAUNDRY/sys/boot/efi/loader/arch/amd64/ldscript.amd64
  user/alc/PQ_LAUNDRY/sys/boot/efi/loader/arch/arm64/ldscript.arm64
  user/alc/PQ_LAUNDRY/sys/boot/efi/loader/arch/i386/ldscript.i386
  user/alc/PQ_LAUNDRY/sys/boot/kshim/bsd_kernel.c
  user/alc/PQ_LAUNDRY/sys/boot/kshim/bsd_kernel.h
  user/alc/PQ_LAUNDRY/sys/boot/powerpc/boot1.chrp/Makefile.hfs
  user/alc/PQ_LAUNDRY/sys/boot/powerpc/boot1.chrp/generate-hfs.sh
  user/alc/PQ_LAUNDRY/sys/boot/powerpc/boot1.chrp/hfs.tmpl.bz2.uu
  user/alc/PQ_LAUNDRY/sys/compat/freebsd32/Makefile
  user/alc/PQ_LAUNDRY/sys/compat/freebsd32/freebsd32_capability.c
  user/alc/PQ_LAUNDRY/sys/compat/freebsd32/freebsd32_proto.h
  user/alc/PQ_LAUNDRY/sys/compat/freebsd32/freebsd32_syscall.h
  user/alc/PQ_LAUNDRY/sys/compat/freebsd32/freebsd32_syscalls.c
  user/alc/PQ_LAUNDRY/sys/compat/freebsd32/freebsd32_sysent.c
  user/alc/PQ_LAUNDRY/sys/compat/freebsd32/freebsd32_systrace_args.c
  user/alc/PQ_LAUNDRY/sys/compat/freebsd32/syscalls.master
  user/alc/PQ_LAUNDRY/sys/compat/linprocfs/linprocfs.c
  user/alc/PQ_LAUNDRY/sys/compat/linux/linux_ioctl.c
  user/alc/PQ_LAUNDRY/sys/conf/files.arm
  user/alc/PQ_LAUNDRY/sys/contrib/ipfilter/netinet/fil.c
  user/alc/PQ_LAUNDRY/sys/contrib/ipfilter/netinet/ip_compat.h
  user/alc/PQ_LAUNDRY/sys/contrib/ipfilter/netinet/ip_fil_freebsd.c
  user/alc/PQ_LAUNDRY/sys/ddb/db_run.c
  user/alc/PQ_LAUNDRY/sys/dev/bhnd/bhnd_subr.c
  user/alc/PQ_LAUNDRY/sys/dev/bhnd/cores/chipc/chipc.c
  user/alc/PQ_LAUNDRY/sys/dev/cxgbe/adapter.h
  user/alc/PQ_LAUNDRY/sys/dev/cxgbe/common/t4_hw.c
  user/alc/PQ_LAUNDRY/sys/dev/cxgbe/firmware/t4fw_interface.h
  user/alc/PQ_LAUNDRY/sys/dev/cxgbe/t4_iov.c
  user/alc/PQ_LAUNDRY/sys/dev/cxgbe/t4_main.c
  user/alc/PQ_LAUNDRY/sys/dev/cxgbe/t4_sge.c
  user/alc/PQ_LAUNDRY/sys/dev/cxgbe/t4_tracer.c
  user/alc/PQ_LAUNDRY/sys/dev/cxgbe/t4_vf.c
  user/alc/PQ_LAUNDRY/sys/dev/cxgbe/tom/t4_connect.c
  user/alc/PQ_LAUNDRY/sys/dev/cxgbe/tom/t4_listen.c
  user/alc/PQ_LAUNDRY/sys/dev/cxgbe/tom/t4_tom.c
  user/alc/PQ_LAUNDRY/sys/dev/hyperv/netvsc/hv_net_vsc.c
  user/alc/PQ_LAUNDRY/sys/dev/hyperv/netvsc/hv_net_vsc.h
  user/alc/PQ_LAUNDRY/sys/dev/hyperv/netvsc/hv_netvsc_drv_freebsd.c
  user/alc/PQ_LAUNDRY/sys/dev/hyperv/netvsc/hv_rndis_filter.c
  user/alc/PQ_LAUNDRY/sys/dev/hyperv/netvsc/if_hnvar.h
  user/alc/PQ_LAUNDRY/sys/dev/hyperv/netvsc/ndis.h
  user/alc/PQ_LAUNDRY/sys/dev/hyperv/vmbus/vmbus_chan.c
  user/alc/PQ_LAUNDRY/sys/dev/iwm/if_iwm.c
  user/alc/PQ_LAUNDRY/sys/dev/mlx5/cq.h
  user/alc/PQ_LAUNDRY/sys/dev/mlx5/device.h
  user/alc/PQ_LAUNDRY/sys/dev/mlx5/driver.h
  user/alc/PQ_LAUNDRY/sys/dev/mlx5/flow_table.h
  user/alc/PQ_LAUNDRY/sys/dev/mlx5/mlx5_core/mlx5_cmd.c
  user/alc/PQ_LAUNDRY/sys/dev/mlx5/mlx5_core/mlx5_core.h
  user/alc/PQ_LAUNDRY/sys/dev/mlx5/mlx5_core/mlx5_cq.c
  user/alc/PQ_LAUNDRY/sys/dev/mlx5/mlx5_core/mlx5_eq.c
  user/alc/PQ_LAUNDRY/sys/dev/mlx5/mlx5_core/mlx5_eswitch_vacl.c
  user/alc/PQ_LAUNDRY/sys/dev/mlx5/mlx5_core/mlx5_flow_table.c
  user/alc/PQ_LAUNDRY/sys/dev/mlx5/mlx5_core/mlx5_fw.c
  user/alc/PQ_LAUNDRY/sys/dev/mlx5/mlx5_core/mlx5_main.c
  user/alc/PQ_LAUNDRY/sys/dev/mlx5/mlx5_core/mlx5_mr.c
  user/alc/PQ_LAUNDRY/sys/dev/mlx5/mlx5_core/mlx5_port.c
  user/alc/PQ_LAUNDRY/sys/dev/mlx5/mlx5_core/mlx5_qp.c
  user/alc/PQ_LAUNDRY/sys/dev/mlx5/mlx5_core/mlx5_srq.c
  user/alc/PQ_LAUNDRY/sys/dev/mlx5/mlx5_core/mlx5_transobj.c
  user/alc/PQ_LAUNDRY/sys/dev/mlx5/mlx5_core/mlx5_uar.c
  user/alc/PQ_LAUNDRY/sys/dev/mlx5/mlx5_core/mlx5_vport.c
  user/alc/PQ_LAUNDRY/sys/dev/mlx5/mlx5_core/transobj.h
  user/alc/PQ_LAUNDRY/sys/dev/mlx5/mlx5_en/en.h
  user/alc/PQ_LAUNDRY/sys/dev/mlx5/mlx5_en/mlx5_en_flow_table.c
  user/alc/PQ_LAUNDRY/sys/dev/mlx5/mlx5_en/mlx5_en_main.c
  user/alc/PQ_LAUNDRY/sys/dev/mlx5/mlx5_en/mlx5_en_tx.c
  user/alc/PQ_LAUNDRY/sys/dev/mlx5/mlx5_en/mlx5_en_txrx.c
  user/alc/PQ_LAUNDRY/sys/dev/mlx5/mlx5_ifc.h
  user/alc/PQ_LAUNDRY/sys/dev/mlx5/qp.h
  user/alc/PQ_LAUNDRY/sys/dev/mlx5/vport.h
  user/alc/PQ_LAUNDRY/sys/dev/usb/input/ukbd.c
  user/alc/PQ_LAUNDRY/sys/dev/usb/quirk/usb_quirk.c
  user/alc/PQ_LAUNDRY/sys/dev/usb/serial/usb_serial.c
  user/alc/PQ_LAUNDRY/sys/dev/usb/serial/usb_serial.h
  user/alc/PQ_LAUNDRY/sys/dev/usb/storage/umass.c
  user/alc/PQ_LAUNDRY/sys/dev/usb/usb_busdma.c
  user/alc/PQ_LAUNDRY/sys/dev/usb/usb_core.c
  user/alc/PQ_LAUNDRY/sys/dev/usb/usb_core.h
  user/alc/PQ_LAUNDRY/sys/dev/usb/usb_dev.c
  user/alc/PQ_LAUNDRY/sys/dev/usb/usb_device.c
  user/alc/PQ_LAUNDRY/sys/dev/usb/usb_freebsd.h
  user/alc/PQ_LAUNDRY/sys/dev/usb/usb_freebsd_loader.h
  user/alc/PQ_LAUNDRY/sys/dev/usb/usb_generic.c
  user/alc/PQ_LAUNDRY/sys/dev/usb/usb_hub.c
  user/alc/PQ_LAUNDRY/sys/dev/usb/usb_msctest.c
  user/alc/PQ_LAUNDRY/sys/dev/usb/usb_process.c
  user/alc/PQ_LAUNDRY/sys/dev/usb/usb_request.c
  user/alc/PQ_LAUNDRY/sys/dev/usb/usb_transfer.c
  user/alc/PQ_LAUNDRY/sys/dev/usb/usbdi.h
  user/alc/PQ_LAUNDRY/sys/dev/virtio/console/virtio_console.c
  user/alc/PQ_LAUNDRY/sys/fs/nullfs/null_subr.c
  user/alc/PQ_LAUNDRY/sys/i386/i386/db_trace.c
  user/alc/PQ_LAUNDRY/sys/i386/i386/genassym.c
  user/alc/PQ_LAUNDRY/sys/i386/i386/swtch.s
  user/alc/PQ_LAUNDRY/sys/i386/i386/trap.c
  user/alc/PQ_LAUNDRY/sys/i386/i386/vm_machdep.c
  user/alc/PQ_LAUNDRY/sys/i386/include/cputypes.h
  user/alc/PQ_LAUNDRY/sys/i386/include/db_machdep.h
  user/alc/PQ_LAUNDRY/sys/i386/include/md_var.h
  user/alc/PQ_LAUNDRY/sys/i386/include/pcb.h
  user/alc/PQ_LAUNDRY/sys/kern/kern_acct.c
  user/alc/PQ_LAUNDRY/sys/kern/kern_clock.c
  user/alc/PQ_LAUNDRY/sys/kern/kern_cons.c
  user/alc/PQ_LAUNDRY/sys/kern/kern_descrip.c
  user/alc/PQ_LAUNDRY/sys/kern/kern_exit.c
  user/alc/PQ_LAUNDRY/sys/kern/kern_fork.c
  user/alc/PQ_LAUNDRY/sys/kern/kern_ktrace.c
  user/alc/PQ_LAUNDRY/sys/kern/kern_lockf.c
  user/alc/PQ_LAUNDRY/sys/kern/kern_malloc.c
  user/alc/PQ_LAUNDRY/sys/kern/kern_mib.c
  user/alc/PQ_LAUNDRY/sys/kern/kern_proc.c
  user/alc/PQ_LAUNDRY/sys/kern/kern_prot.c
  user/alc/PQ_LAUNDRY/sys/kern/kern_resource.c
  user/alc/PQ_LAUNDRY/sys/kern/kern_sendfile.c
  user/alc/PQ_LAUNDRY/sys/kern/kern_shutdown.c
  user/alc/PQ_LAUNDRY/sys/kern/kern_sig.c
  user/alc/PQ_LAUNDRY/sys/kern/kern_synch.c
  user/alc/PQ_LAUNDRY/sys/kern/kern_sysctl.c
  user/alc/PQ_LAUNDRY/sys/kern/kern_time.c
  user/alc/PQ_LAUNDRY/sys/kern/kern_timeout.c
  user/alc/PQ_LAUNDRY/sys/kern/kern_xxx.c
  user/alc/PQ_LAUNDRY/sys/kern/sched_4bsd.c
  user/alc/PQ_LAUNDRY/sys/kern/subr_autoconf.c
  user/alc/PQ_LAUNDRY/sys/kern/subr_blist.c
  user/alc/PQ_LAUNDRY/sys/kern/subr_clock.c
  user/alc/PQ_LAUNDRY/sys/kern/subr_hash.c
  user/alc/PQ_LAUNDRY/sys/kern/subr_log.c
  user/alc/PQ_LAUNDRY/sys/kern/subr_mchain.c
  user/alc/PQ_LAUNDRY/sys/kern/subr_param.c
  user/alc/PQ_LAUNDRY/sys/kern/subr_pcpu.c
  user/alc/PQ_LAUNDRY/sys/kern/subr_prf.c
  user/alc/PQ_LAUNDRY/sys/kern/subr_prof.c
  user/alc/PQ_LAUNDRY/sys/kern/subr_rtc.c
  user/alc/PQ_LAUNDRY/sys/kern/subr_scanf.c
  user/alc/PQ_LAUNDRY/sys/kern/subr_uio.c
  user/alc/PQ_LAUNDRY/sys/kern/sys_generic.c
  user/alc/PQ_LAUNDRY/sys/kern/sys_socket.c
  user/alc/PQ_LAUNDRY/sys/kern/tty_compat.c
  user/alc/PQ_LAUNDRY/sys/kern/tty_info.c
  user/alc/PQ_LAUNDRY/sys/kern/uipc_domain.c
  user/alc/PQ_LAUNDRY/sys/kern/uipc_mbuf.c
  user/alc/PQ_LAUNDRY/sys/kern/uipc_mbuf2.c
  user/alc/PQ_LAUNDRY/sys/kern/uipc_sockbuf.c
  user/alc/PQ_LAUNDRY/sys/kern/uipc_socket.c
  user/alc/PQ_LAUNDRY/sys/kern/uipc_syscalls.c
  user/alc/PQ_LAUNDRY/sys/kern/uipc_usrreq.c
  user/alc/PQ_LAUNDRY/sys/kern/vfs_cache.c
  user/alc/PQ_LAUNDRY/sys/kern/vfs_cluster.c
  user/alc/PQ_LAUNDRY/sys/kern/vfs_default.c
  user/alc/PQ_LAUNDRY/sys/kern/vfs_export.c
  user/alc/PQ_LAUNDRY/sys/kern/vfs_init.c
  user/alc/PQ_LAUNDRY/sys/kern/vfs_lookup.c
  user/alc/PQ_LAUNDRY/sys/kern/vfs_mount.c
  user/alc/PQ_LAUNDRY/sys/kern/vfs_mountroot.c
  user/alc/PQ_LAUNDRY/sys/kern/vfs_subr.c
  user/alc/PQ_LAUNDRY/sys/kern/vfs_syscalls.c
  user/alc/PQ_LAUNDRY/sys/kern/vfs_vnops.c
  user/alc/PQ_LAUNDRY/sys/kern/vnode_if.src
  user/alc/PQ_LAUNDRY/sys/mips/broadcom/bcm_machdep.c
  user/alc/PQ_LAUNDRY/sys/mips/broadcom/files.broadcom
  user/alc/PQ_LAUNDRY/sys/mips/include/proc.h
  user/alc/PQ_LAUNDRY/sys/mips/mips/cpu.c
  user/alc/PQ_LAUNDRY/sys/mips/mips/freebsd32_machdep.c
  user/alc/PQ_LAUNDRY/sys/mips/mips/genassym.c
  user/alc/PQ_LAUNDRY/sys/mips/mips/pm_machdep.c
  user/alc/PQ_LAUNDRY/sys/mips/mips/swtch.S
  user/alc/PQ_LAUNDRY/sys/mips/mips/sys_machdep.c
  user/alc/PQ_LAUNDRY/sys/mips/mips/trap.c
  user/alc/PQ_LAUNDRY/sys/mips/mips/vm_machdep.c
  user/alc/PQ_LAUNDRY/sys/modules/cxgbe/Makefile
  user/alc/PQ_LAUNDRY/sys/net/if_arcsubr.c
  user/alc/PQ_LAUNDRY/sys/net/if_fddisubr.c
  user/alc/PQ_LAUNDRY/sys/net/if_iso88025subr.c
  user/alc/PQ_LAUNDRY/sys/net/raw_usrreq.c
  user/alc/PQ_LAUNDRY/sys/net80211/ieee80211_crypto.h
  user/alc/PQ_LAUNDRY/sys/net80211/ieee80211_hostap.c
  user/alc/PQ_LAUNDRY/sys/net80211/ieee80211_ht.c
  user/alc/PQ_LAUNDRY/sys/net80211/ieee80211_ht.h
  user/alc/PQ_LAUNDRY/sys/netinet/ip_input.c
  user/alc/PQ_LAUNDRY/sys/netinet/ip_mroute.c
  user/alc/PQ_LAUNDRY/sys/netinet/raw_ip.c
  user/alc/PQ_LAUNDRY/sys/netinet/tcp_output.c
  user/alc/PQ_LAUNDRY/sys/netinet/tcp_usrreq.c
  user/alc/PQ_LAUNDRY/sys/netinet/udp_usrreq.c
  user/alc/PQ_LAUNDRY/sys/netinet6/icmp6.c
  user/alc/PQ_LAUNDRY/sys/netinet6/ip6_forward.c
  user/alc/PQ_LAUNDRY/sys/netinet6/ip6_mroute.c
  user/alc/PQ_LAUNDRY/sys/netinet6/ip6_output.c
  user/alc/PQ_LAUNDRY/sys/netinet6/raw_ip6.c
  user/alc/PQ_LAUNDRY/sys/netinet6/udp6_usrreq.c
  user/alc/PQ_LAUNDRY/sys/netipsec/keysock.c
  user/alc/PQ_LAUNDRY/sys/netpfil/ipfw/ip_fw2.c
  user/alc/PQ_LAUNDRY/sys/powerpc/powerpc/machdep.c
  user/alc/PQ_LAUNDRY/sys/sys/efi.h
  user/alc/PQ_LAUNDRY/sys/sys/mbuf.h
  user/alc/PQ_LAUNDRY/sys/sys/param.h
  user/alc/PQ_LAUNDRY/sys/ufs/ffs/ffs_alloc.c
  user/alc/PQ_LAUNDRY/sys/ufs/ffs/ffs_balloc.c
  user/alc/PQ_LAUNDRY/sys/ufs/ffs/ffs_inode.c
  user/alc/PQ_LAUNDRY/sys/ufs/ffs/ffs_rawread.c
  user/alc/PQ_LAUNDRY/sys/ufs/ffs/ffs_snapshot.c
  user/alc/PQ_LAUNDRY/sys/ufs/ffs/ffs_softdep.c
  user/alc/PQ_LAUNDRY/sys/ufs/ffs/ffs_subr.c
  user/alc/PQ_LAUNDRY/sys/ufs/ffs/ffs_vfsops.c
  user/alc/PQ_LAUNDRY/sys/ufs/ffs/ffs_vnops.c
  user/alc/PQ_LAUNDRY/sys/ufs/ufs/extattr.h
  user/alc/PQ_LAUNDRY/sys/ufs/ufs/inode.h
  user/alc/PQ_LAUNDRY/sys/ufs/ufs/ufs_acl.c
  user/alc/PQ_LAUNDRY/sys/ufs/ufs/ufs_bmap.c
  user/alc/PQ_LAUNDRY/sys/ufs/ufs/ufs_gjournal.c
  user/alc/PQ_LAUNDRY/sys/ufs/ufs/ufs_inode.c
  user/alc/PQ_LAUNDRY/sys/ufs/ufs/ufs_quota.c
  user/alc/PQ_LAUNDRY/sys/ufs/ufs/ufs_vnops.c
  user/alc/PQ_LAUNDRY/sys/ufs/ufs/ufsmount.h
  user/alc/PQ_LAUNDRY/sys/x86/acpica/madt.c
  user/alc/PQ_LAUNDRY/sys/x86/include/apicvar.h
  user/alc/PQ_LAUNDRY/sys/x86/include/cputypes.h
  user/alc/PQ_LAUNDRY/sys/x86/include/frame.h
  user/alc/PQ_LAUNDRY/sys/x86/include/x86_var.h
  user/alc/PQ_LAUNDRY/sys/x86/x86/identcpu.c
  user/alc/PQ_LAUNDRY/sys/x86/x86/local_apic.c
  user/alc/PQ_LAUNDRY/sys/x86/xen/xen_apic.c
  user/alc/PQ_LAUNDRY/tests/sys/Makefile
  user/alc/PQ_LAUNDRY/tests/sys/mac/bsdextended/matches_test.sh
  user/alc/PQ_LAUNDRY/usr.bin/bsdiff/bspatch/bspatch.c
  user/alc/PQ_LAUNDRY/usr.bin/cmp/cmp.c
  user/alc/PQ_LAUNDRY/usr.bin/elfdump/elfdump.c
  user/alc/PQ_LAUNDRY/usr.bin/indent/indent.c
  user/alc/PQ_LAUNDRY/usr.bin/localedef/collate.c
  user/alc/PQ_LAUNDRY/usr.bin/login/login_audit.c
  user/alc/PQ_LAUNDRY/usr.bin/sdiff/sdiff.c
  user/alc/PQ_LAUNDRY/usr.bin/seq/seq.1
  user/alc/PQ_LAUNDRY/usr.bin/tee/tee.c
  user/alc/PQ_LAUNDRY/usr.bin/tr/tr.c
  user/alc/PQ_LAUNDRY/usr.bin/vtfontcvt/vtfontcvt.c
  user/alc/PQ_LAUNDRY/usr.sbin/amd/amd/Makefile
  user/alc/PQ_LAUNDRY/usr.sbin/amd/amq/Makefile
  user/alc/PQ_LAUNDRY/usr.sbin/amd/fixmount/Makefile
  user/alc/PQ_LAUNDRY/usr.sbin/amd/fsinfo/Makefile
  user/alc/PQ_LAUNDRY/usr.sbin/amd/hlfsd/Makefile
  user/alc/PQ_LAUNDRY/usr.sbin/amd/include/Makefile
  user/alc/PQ_LAUNDRY/usr.sbin/amd/libamu/Makefile
  user/alc/PQ_LAUNDRY/usr.sbin/amd/mk-amd-map/Makefile
  user/alc/PQ_LAUNDRY/usr.sbin/amd/pawd/Makefile
  user/alc/PQ_LAUNDRY/usr.sbin/amd/scripts/Makefile
  user/alc/PQ_LAUNDRY/usr.sbin/amd/wire-test/Makefile
  user/alc/PQ_LAUNDRY/usr.sbin/autofs/automountd.c
  user/alc/PQ_LAUNDRY/usr.sbin/autofs/autounmountd.c
  user/alc/PQ_LAUNDRY/usr.sbin/autofs/defined.c
  user/alc/PQ_LAUNDRY/usr.sbin/bhyve/Makefile
  user/alc/PQ_LAUNDRY/usr.sbin/bhyve/virtio.h
  user/alc/PQ_LAUNDRY/usr.sbin/fifolog/lib/fifolog_create.c
  user/alc/PQ_LAUNDRY/usr.sbin/fifolog/lib/fifolog_reader.c
  user/alc/PQ_LAUNDRY/usr.sbin/fifolog/lib/fifolog_write_poll.c
  user/alc/PQ_LAUNDRY/usr.sbin/fifolog/lib/miniobj.h
  user/alc/PQ_LAUNDRY/usr.sbin/freebsd-update/freebsd-update.sh
  user/alc/PQ_LAUNDRY/usr.sbin/uefisign/child.c
Directory Properties:
  user/alc/PQ_LAUNDRY/   (props changed)
  user/alc/PQ_LAUNDRY/contrib/libarchive/   (props changed)
  user/alc/PQ_LAUNDRY/contrib/libarchive/cpio/   (props changed)
  user/alc/PQ_LAUNDRY/contrib/libarchive/libarchive/   (props changed)
  user/alc/PQ_LAUNDRY/contrib/libarchive/libarchive_fe/   (props changed)
  user/alc/PQ_LAUNDRY/contrib/libarchive/tar/   (props changed)
  user/alc/PQ_LAUNDRY/contrib/netbsd-tests/   (props changed)
  user/alc/PQ_LAUNDRY/sys/contrib/ipfilter/   (props changed)

Modified: user/alc/PQ_LAUNDRY/UPDATING
==============================================================================
--- user/alc/PQ_LAUNDRY/UPDATING	Mon Sep 19 16:16:14 2016	(r305983)
+++ user/alc/PQ_LAUNDRY/UPDATING	Mon Sep 19 17:15:01 2016	(r305984)
@@ -31,6 +31,16 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 12
 	disable the most expensive debugging functionality run
 	"ln -s 'abort:false,junk:false' /etc/malloc.conf".)
 
+20160918:
+	GNU rcs has been turned off by default.  It can (temporarily) be built
+	again by adding WITH_RCS knob in src.conf.
+	Otherwise, GNU rcs is available from packages:
+	- rcs: Latest GPLv3 GNU rcs version.
+	- rcs57: Copy of the latest version of GNU rcs (GPLv2) from base.
+
+20160918:
+	The backup_uses_rcs functionality has been removed from rc.subr.
+
 20160908:
 	The queue(3) debugging macro, QUEUE_MACRO_DEBUG, has been split into
 	two separate components, QUEUE_MACRO_DEBUG_TRACE and

Modified: user/alc/PQ_LAUNDRY/bin/cat/cat.c
==============================================================================
--- user/alc/PQ_LAUNDRY/bin/cat/cat.c	Mon Sep 19 16:16:14 2016	(r305983)
+++ user/alc/PQ_LAUNDRY/bin/cat/cat.c	Mon Sep 19 17:15:01 2016	(r305984)
@@ -64,6 +64,8 @@ __FBSDID("$FreeBSD$");
 #include <stdlib.h>
 #include <string.h>
 #include <unistd.h>
+#include <wchar.h>
+#include <wctype.h>
 
 static int bflag, eflag, lflag, nflag, sflag, tflag, vflag;
 static int rval;
@@ -207,6 +209,7 @@ static void
 cook_cat(FILE *fp)
 {
 	int ch, gobble, line, prev;
+	wint_t wch;
 
 	/* Reset EOF condition on stdin. */
 	if (fp == stdin && feof(stdin))
@@ -239,18 +242,40 @@ cook_cat(FILE *fp)
 				continue;
 			}
 		} else if (vflag) {
-			if (!isascii(ch) && !isprint(ch)) {
+			(void)ungetc(ch, fp);
+			/*
+			 * Our getwc(3) doesn't change file position
+			 * on error.
+			 */
+			if ((wch = getwc(fp)) == WEOF) {
+				if (ferror(fp) && errno == EILSEQ) {
+					clearerr(fp);
+					/* Resync attempt. */
+					memset(&fp->_mbstate, 0, sizeof(mbstate_t));
+					if ((ch = getc(fp)) == EOF)
+						break;
+					wch = ch;
+					goto ilseq;
+				} else
+					break;
+			}
+			if (!iswascii(wch) && !iswprint(wch)) {
+ilseq:
 				if (putchar('M') == EOF || putchar('-') == EOF)
 					break;
-				ch = toascii(ch);
+				wch = toascii(wch);
 			}
-			if (iscntrl(ch)) {
-				if (putchar('^') == EOF ||
-				    putchar(ch == '\177' ? '?' :
-				    ch | 0100) == EOF)
+			if (iswcntrl(wch)) {
+				ch = toascii(wch);
+				ch = (ch == '\177') ? '?' : (ch | 0100);
+				if (putchar('^') == EOF || putchar(ch) == EOF)
 					break;
 				continue;
 			}
+			if (putwchar(wch) == WEOF)
+				break;
+			ch = -1;
+			continue;
 		}
 		if (putchar(ch) == EOF)
 			break;

Modified: user/alc/PQ_LAUNDRY/contrib/libarchive/libarchive/archive_platform.h
==============================================================================
--- user/alc/PQ_LAUNDRY/contrib/libarchive/libarchive/archive_platform.h	Mon Sep 19 16:16:14 2016	(r305983)
+++ user/alc/PQ_LAUNDRY/contrib/libarchive/libarchive/archive_platform.h	Mon Sep 19 17:15:01 2016	(r305984)
@@ -159,6 +159,15 @@
 #define	CAN_RESTORE_METADATA_FD
 #endif
 
+/*
+ * glibc 2.24 deprecates readdir_r
+ */
+#if defined(HAVE_READDIR_R) && (!defined(__GLIBC__) || !defined(__GLIBC_MINOR__) || __GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 24))
+#define	USE_READDIR_R	1
+#else
+#undef	USE_READDIR_R
+#endif
+
 /* Set up defaults for internal error codes. */
 #ifndef ARCHIVE_ERRNO_FILE_FORMAT
 #if HAVE_EFTYPE

Modified: user/alc/PQ_LAUNDRY/contrib/libarchive/libarchive/archive_read_disk_entry_from_file.c
==============================================================================
--- user/alc/PQ_LAUNDRY/contrib/libarchive/libarchive/archive_read_disk_entry_from_file.c	Mon Sep 19 16:16:14 2016	(r305983)
+++ user/alc/PQ_LAUNDRY/contrib/libarchive/libarchive/archive_read_disk_entry_from_file.c	Mon Sep 19 17:15:01 2016	(r305984)
@@ -411,9 +411,7 @@ setup_acls(struct archive_read_disk *a,
 {
 	const char	*accpath;
 	acl_t		 acl;
-#if HAVE_ACL_IS_TRIVIAL_NP
 	int		r;
-#endif
 
 	accpath = archive_entry_sourcepath(entry);
 	if (accpath == NULL)
@@ -473,9 +471,13 @@ setup_acls(struct archive_read_disk *a,
 	}
 #endif
 	if (acl != NULL) {
-		translate_acl(a, entry, acl, ARCHIVE_ENTRY_ACL_TYPE_NFS4);
+		r = translate_acl(a, entry, acl, ARCHIVE_ENTRY_ACL_TYPE_NFS4);
 		acl_free(acl);
-		return (ARCHIVE_OK);
+		if (r != ARCHIVE_OK) {
+			archive_set_error(&a->archive, errno,
+			    "Couldn't translate NFSv4 ACLs: %s", accpath);
+		}
+		return (r);
 	}
 #endif	/* ACL_TYPE_NFS4 */
 
@@ -506,19 +508,30 @@ setup_acls(struct archive_read_disk *a,
 #endif
 
 	if (acl != NULL) {
-		translate_acl(a, entry, acl,
+		r = translate_acl(a, entry, acl,
 		    ARCHIVE_ENTRY_ACL_TYPE_ACCESS);
 		acl_free(acl);
 		acl = NULL;
+		if (r != ARCHIVE_OK) {
+			archive_set_error(&a->archive, errno,
+			    "Couldn't translate access ACLs: %s", accpath);
+			return (r);
+		}
 	}
 
 	/* Only directories can have default ACLs. */
 	if (S_ISDIR(archive_entry_mode(entry))) {
 		acl = acl_get_file(accpath, ACL_TYPE_DEFAULT);
 		if (acl != NULL) {
-			translate_acl(a, entry, acl,
+			r = translate_acl(a, entry, acl,
 			    ARCHIVE_ENTRY_ACL_TYPE_DEFAULT);
 			acl_free(acl);
+			if (r != ARCHIVE_OK) {
+				archive_set_error(&a->archive, errno,
+				    "Couldn't translate default ACLs: %s",
+				    accpath);
+				return (r);
+			}
 		}
 	}
 	return (ARCHIVE_OK);
@@ -574,19 +587,23 @@ translate_acl(struct archive_read_disk *
 #ifdef ACL_TYPE_NFS4
 	acl_entry_type_t acl_type;
 	acl_flagset_t	 acl_flagset;
-	int brand, r;
+	int brand;
 #endif
 	acl_entry_t	 acl_entry;
 	acl_permset_t	 acl_permset;
 	int		 i, entry_acl_type;
-	int		 s, ae_id, ae_tag, ae_perm;
+	int		 r, s, ae_id, ae_tag, ae_perm;
 	const char	*ae_name;
 
 #ifdef ACL_TYPE_NFS4
 	// FreeBSD "brands" ACLs as POSIX.1e or NFSv4
 	// Make sure the "brand" on this ACL is consistent
 	// with the default_entry_acl_type bits provided.
-	acl_get_brand_np(acl, &brand);
+	if (acl_get_brand_np(acl, &brand) != 0) {
+		archive_set_error(&a->archive, errno,
+		    "Failed to read ACL brand");
+		return (ARCHIVE_WARN);
+	}
 	switch (brand) {
 	case ACL_BRAND_POSIX:
 		switch (default_entry_acl_type) {
@@ -594,31 +611,43 @@ translate_acl(struct archive_read_disk *
 		case ARCHIVE_ENTRY_ACL_TYPE_DEFAULT:
 			break;
 		default:
-			// XXX set warning message?
-			return ARCHIVE_FAILED;
+			archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC,
+			    "Invalid ACL entry type for POSIX.1e ACL");
+			return (ARCHIVE_WARN);
 		}
 		break;
 	case ACL_BRAND_NFS4:
 		if (default_entry_acl_type & ~ARCHIVE_ENTRY_ACL_TYPE_NFS4) {
-			// XXX set warning message?
-			return ARCHIVE_FAILED;
+			archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC,
+			    "Invalid ACL entry type for NFSv4 ACL");
+			return (ARCHIVE_WARN);
 		}
 		break;
 	default:
-		// XXX set warning message?
-		return ARCHIVE_FAILED;
+		archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC,
+		    "Unknown ACL brand");
+		return (ARCHIVE_WARN);
 		break;
 	}
 #endif
 
 
 	s = acl_get_entry(acl, ACL_FIRST_ENTRY, &acl_entry);
+	if (s == -1) {
+		archive_set_error(&a->archive, errno,
+		    "Failed to get first ACL entry");
+		return (ARCHIVE_WARN);
+	}
 	while (s == 1) {
 		ae_id = -1;
 		ae_name = NULL;
 		ae_perm = 0;
 
-		acl_get_tag_type(acl_entry, &acl_tag);
+		if (acl_get_tag_type(acl_entry, &acl_tag) != 0) {
+			archive_set_error(&a->archive, errno,
+			    "Failed to get ACL tag type");
+			return (ARCHIVE_WARN);
+		}
 		switch (acl_tag) {
 		case ACL_USER:
 			ae_id = (int)*(uid_t *)acl_get_qualifier(acl_entry);
@@ -653,13 +682,18 @@ translate_acl(struct archive_read_disk *
 			continue;
 		}
 
-		// XXX acl type maps to allow/deny/audit/YYYY bits
-		// XXX acl_get_entry_type_np on FreeBSD returns EINVAL for
-		// non-NFSv4 ACLs
+		// XXX acl_type maps to allow/deny/audit/YYYY bits
 		entry_acl_type = default_entry_acl_type;
 #ifdef ACL_TYPE_NFS4
-		r = acl_get_entry_type_np(acl_entry, &acl_type);
-		if (r == 0) {
+		if (default_entry_acl_type & ARCHIVE_ENTRY_ACL_TYPE_NFS4) {
+			/*
+			 * acl_get_entry_type_np() falis with non-NFSv4 ACLs
+			 */
+			if (acl_get_entry_type_np(acl_entry, &acl_type) != 0) {
+				archive_set_error(&a->archive, errno, "Failed "
+				    "to get ACL type from a NFSv4 ACL entry");
+				return (ARCHIVE_WARN);
+			}
 			switch (acl_type) {
 			case ACL_ENTRY_TYPE_ALLOW:
 				entry_acl_type = ARCHIVE_ENTRY_ACL_TYPE_ALLOW;
@@ -673,32 +707,53 @@ translate_acl(struct archive_read_disk *
 			case ACL_ENTRY_TYPE_ALARM:
 				entry_acl_type = ARCHIVE_ENTRY_ACL_TYPE_ALARM;
 				break;
+			default:
+				archive_set_error(&a->archive, errno,
+				    "Invalid NFSv4 ACL entry type");
+				return (ARCHIVE_WARN);
 			}
-		}
 
-		/*
-		 * Libarchive stores "flag" (NFSv4 inheritance bits)
-		 * in the ae_perm bitmap.
-		 */
-		// XXX acl_get_flagset_np on FreeBSD returns EINVAL for
-		// non-NFSv4 ACLs
-		r = acl_get_flagset_np(acl_entry, &acl_flagset);
-		if (r == 0) {
+			/*
+			 * Libarchive stores "flag" (NFSv4 inheritance bits)
+			 * in the ae_perm bitmap.
+			 *
+			 * acl_get_flagset_np() fails with non-NFSv4 ACLs
+			 */
+			if (acl_get_flagset_np(acl_entry, &acl_flagset) != 0) {
+				archive_set_error(&a->archive, errno,
+				    "Failed to get flagset from a NFSv4 ACL entry");
+				return (ARCHIVE_WARN);
+			}
 	                for (i = 0; i < (int)(sizeof(acl_inherit_map) / sizeof(acl_inherit_map[0])); ++i) {
-				if (acl_get_flag_np(acl_flagset,
-						    acl_inherit_map[i].platform_inherit))
+				r = acl_get_flag_np(acl_flagset,
+				    acl_inherit_map[i].platform_inherit);
+				if (r == -1) {
+					archive_set_error(&a->archive, errno,
+					    "Failed to check flag in a NFSv4 "
+					    "ACL flagset");
+					return (ARCHIVE_WARN);
+				} else if (r)
 					ae_perm |= acl_inherit_map[i].archive_inherit;
                 	}
 		}
 #endif
 
-		acl_get_permset(acl_entry, &acl_permset);
+		if (acl_get_permset(acl_entry, &acl_permset) != 0) {
+			archive_set_error(&a->archive, errno,
+			    "Failed to get ACL permission set");
+			return (ARCHIVE_WARN);
+		}
 		for (i = 0; i < (int)(sizeof(acl_perm_map) / sizeof(acl_perm_map[0])); ++i) {
 			/*
 			 * acl_get_perm() is spelled differently on different
 			 * platforms; see above.
 			 */
-			if (ACL_GET_PERM(acl_permset, acl_perm_map[i].platform_perm))
+			r = ACL_GET_PERM(acl_permset, acl_perm_map[i].platform_perm);
+			if (r == -1) {
+				archive_set_error(&a->archive, errno,
+				    "Failed to check permission in an ACL permission set");
+				return (ARCHIVE_WARN);
+			} else if (r)
 				ae_perm |= acl_perm_map[i].archive_perm;
 		}
 
@@ -707,6 +762,11 @@ translate_acl(struct archive_read_disk *
 					    ae_id, ae_name);
 
 		s = acl_get_entry(acl, ACL_NEXT_ENTRY, &acl_entry);
+		if (s == -1) {
+			archive_set_error(&a->archive, errno,
+			    "Failed to get next ACL entry");
+			return (ARCHIVE_WARN);
+		}
 	}
 	return (ARCHIVE_OK);
 }

Modified: user/alc/PQ_LAUNDRY/contrib/libarchive/libarchive/archive_read_disk_posix.c
==============================================================================
--- user/alc/PQ_LAUNDRY/contrib/libarchive/libarchive/archive_read_disk_posix.c	Mon Sep 19 16:16:14 2016	(r305983)
+++ user/alc/PQ_LAUNDRY/contrib/libarchive/libarchive/archive_read_disk_posix.c	Mon Sep 19 17:15:01 2016	(r305984)
@@ -165,7 +165,7 @@ struct filesystem {
 	int		synthetic;
 	int		remote;
 	int		noatime;
-#if defined(HAVE_READDIR_R)
+#if defined(USE_READDIR_R)
 	size_t		name_max;
 #endif
 	long		incr_xfer_size;
@@ -200,7 +200,7 @@ struct tree {
 	DIR			*d;
 #define	INVALID_DIR_HANDLE NULL
 	struct dirent		*de;
-#if defined(HAVE_READDIR_R)
+#if defined(USE_READDIR_R)
 	struct dirent		*dirent;
 	size_t			 dirent_allocated;
 #endif
@@ -1592,7 +1592,7 @@ setup_current_filesystem(struct archive_
 #endif
 		t->current_filesystem->noatime = 0;
 
-#if defined(HAVE_READDIR_R)
+#if defined(USE_READDIR_R)
 	/* Set maximum filename length. */
 #if defined(HAVE_STRUCT_STATFS_F_NAMEMAX)
 	t->current_filesystem->name_max = sfs.f_namemax;
@@ -1615,7 +1615,7 @@ setup_current_filesystem(struct archive_
 	else
 		t->current_filesystem->name_max = nm;
 #endif
-#endif /* HAVE_READDIR_R */
+#endif /* USE_READDIR_R */
 	return (ARCHIVE_OK);
 }
 
@@ -1817,7 +1817,7 @@ setup_current_filesystem(struct archive_
 #endif
 		t->current_filesystem->noatime = 0;
 
-#if defined(HAVE_READDIR_R)
+#if defined(USE_READDIR_R)
 	/* Set maximum filename length. */
 	t->current_filesystem->name_max = sfs.f_namelen;
 #endif
@@ -1901,7 +1901,7 @@ setup_current_filesystem(struct archive_
 #endif
 		t->current_filesystem->noatime = 0;
 
-#if defined(HAVE_READDIR_R)
+#if defined(USE_READDIR_R)
 	/* Set maximum filename length. */
 	t->current_filesystem->name_max = sfs.f_namemax;
 #endif
@@ -1918,7 +1918,7 @@ static int
 setup_current_filesystem(struct archive_read_disk *a)
 {
 	struct tree *t = a->tree;
-#if defined(_PC_NAME_MAX) && defined(HAVE_READDIR_R)
+#if defined(_PC_NAME_MAX) && defined(USE_READDIR_R)
 	long nm;
 #endif
 	t->current_filesystem->synthetic = -1;/* Not supported */
@@ -1930,7 +1930,7 @@ setup_current_filesystem(struct archive_
 	t->current_filesystem->min_xfer_size = -1;
 	t->current_filesystem->incr_xfer_size = -1;
 
-#if defined(HAVE_READDIR_R)
+#if defined(USE_READDIR_R)
 	/* Set maximum filename length. */
 #  if defined(_PC_NAME_MAX)
 	if (tree_current_is_symblic_link_target(t)) {
@@ -1958,7 +1958,7 @@ setup_current_filesystem(struct archive_
 	else
 		t->current_filesystem->name_max = nm;
 #  endif /* _PC_NAME_MAX */
-#endif /* HAVE_READDIR_R */
+#endif /* USE_READDIR_R */
 	return (ARCHIVE_OK);
 }
 
@@ -2366,7 +2366,7 @@ tree_dir_next_posix(struct tree *t)
 	size_t namelen;
 
 	if (t->d == NULL) {
-#if defined(HAVE_READDIR_R)
+#if defined(USE_READDIR_R)
 		size_t dirent_size;
 #endif
 
@@ -2387,7 +2387,7 @@ tree_dir_next_posix(struct tree *t)
 			t->visit_type = r != 0 ? r : TREE_ERROR_DIR;
 			return (t->visit_type);
 		}
-#if defined(HAVE_READDIR_R)
+#if defined(USE_READDIR_R)
 		dirent_size = offsetof(struct dirent, d_name) +
 		  t->filesystem_table[t->current->filesystem_id].name_max + 1;
 		if (t->dirent == NULL || t->dirent_allocated < dirent_size) {
@@ -2404,11 +2404,11 @@ tree_dir_next_posix(struct tree *t)
 			}
 			t->dirent_allocated = dirent_size;
 		}
-#endif /* HAVE_READDIR_R */
+#endif /* USE_READDIR_R */
 	}
 	for (;;) {
 		errno = 0;
-#if defined(HAVE_READDIR_R)
+#if defined(USE_READDIR_R)
 		r = readdir_r(t->d, t->dirent, &t->de);
 #ifdef _AIX
 		/* Note: According to the man page, return value 9 indicates
@@ -2660,7 +2660,7 @@ tree_free(struct tree *t)
 	if (t == NULL)
 		return;
 	archive_string_free(&t->path);
-#if defined(HAVE_READDIR_R)
+#if defined(USE_READDIR_R)
 	free(t->dirent);
 #endif
 	free(t->sparse_list);

Modified: user/alc/PQ_LAUNDRY/contrib/libarchive/libarchive/archive_read_support_format_tar.c
==============================================================================
--- user/alc/PQ_LAUNDRY/contrib/libarchive/libarchive/archive_read_support_format_tar.c	Mon Sep 19 16:16:14 2016	(r305983)
+++ user/alc/PQ_LAUNDRY/contrib/libarchive/libarchive/archive_read_support_format_tar.c	Mon Sep 19 17:15:01 2016	(r305984)
@@ -136,6 +136,7 @@ struct tar {
 	int64_t			 entry_padding;
 	int64_t 		 entry_bytes_unconsumed;
 	int64_t			 realsize;
+	int			 sparse_allowed;
 	struct sparse_block	*sparse_list;
 	struct sparse_block	*sparse_last;
 	int64_t			 sparse_offset;
@@ -1271,6 +1272,14 @@ header_common(struct archive_read *a, st
 		 * sparse information in the extended area.
 		 */
 		/* FALLTHROUGH */
+	case '0':
+		/*
+		 * Enable sparse file "read" support only for regular
+		 * files and explicit GNU sparse files.  However, we
+		 * don't allow non-standard file types to be sparse.
+		 */
+		tar->sparse_allowed = 1;
+		/* FALLTHROUGH */
 	default: /* Regular file  and non-standard types */
 		/*
 		 * Per POSIX: non-recognized types should always be
@@ -1730,6 +1739,14 @@ pax_attribute(struct archive_read *a, st
 #endif
 	switch (key[0]) {
 	case 'G':
+		/* Reject GNU.sparse.* headers on non-regular files. */
+		if (strncmp(key, "GNU.sparse", 10) == 0 &&
+		    !tar->sparse_allowed) {
+			archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC,
+			    "Non-regular file cannot be sparse");
+			return (ARCHIVE_FATAL);
+		}
+
 		/* GNU "0.0" sparse pax format. */
 		if (strcmp(key, "GNU.sparse.numblocks") == 0) {
 			tar->sparse_offset = -1;

Modified: user/alc/PQ_LAUNDRY/contrib/libarchive/libarchive/archive_write_disk_acl.c
==============================================================================
--- user/alc/PQ_LAUNDRY/contrib/libarchive/libarchive/archive_write_disk_acl.c	Mon Sep 19 16:16:14 2016	(r305983)
+++ user/alc/PQ_LAUNDRY/contrib/libarchive/libarchive/archive_write_disk_acl.c	Mon Sep 19 17:15:01 2016	(r305984)
@@ -153,9 +153,19 @@ set_acl(struct archive *a, int fd, const
 	if (entries == 0)
 		return (ARCHIVE_OK);
 	acl = acl_init(entries);
+	if (acl == (acl_t)NULL) {
+		archive_set_error(a, errno,
+		    "Failed to initialize ACL working storage");
+		return (ARCHIVE_FAILED);
+	}
 	while (archive_acl_next(a, abstract_acl, ae_requested_type, &ae_type,
 		   &ae_permset, &ae_tag, &ae_id, &ae_name) == ARCHIVE_OK) {
-		acl_create_entry(&acl, &acl_entry);
+		if (acl_create_entry(&acl, &acl_entry) != 0) {
+			archive_set_error(a, errno,
+			    "Failed to create a new ACL entry");
+			ret = ARCHIVE_FAILED;
+			goto exit_free;
+		}
 
 		switch (ae_tag) {
 		case ARCHIVE_ENTRY_ACL_USER:
@@ -186,53 +196,96 @@ set_acl(struct archive *a, int fd, const
 			break;
 #endif
 		default:
-			/* XXX */
-			break;
+			archive_set_error(a, ARCHIVE_ERRNO_MISC,
+			    "Unknown ACL tag");
+			ret = ARCHIVE_FAILED;
+			goto exit_free;
 		}
 
 #ifdef ACL_TYPE_NFS4
+		r = 0;
 		switch (ae_type) {
 		case ARCHIVE_ENTRY_ACL_TYPE_ALLOW:
-			acl_set_entry_type_np(acl_entry, ACL_ENTRY_TYPE_ALLOW);
+			r = acl_set_entry_type_np(acl_entry, ACL_ENTRY_TYPE_ALLOW);
 			break;
 		case ARCHIVE_ENTRY_ACL_TYPE_DENY:
-			acl_set_entry_type_np(acl_entry, ACL_ENTRY_TYPE_DENY);
+			r = acl_set_entry_type_np(acl_entry, ACL_ENTRY_TYPE_DENY);
 			break;
 		case ARCHIVE_ENTRY_ACL_TYPE_AUDIT:
-			acl_set_entry_type_np(acl_entry, ACL_ENTRY_TYPE_AUDIT);
+			r = acl_set_entry_type_np(acl_entry, ACL_ENTRY_TYPE_AUDIT);
 			break;
 		case ARCHIVE_ENTRY_ACL_TYPE_ALARM:
-			acl_set_entry_type_np(acl_entry, ACL_ENTRY_TYPE_ALARM);
+			r = acl_set_entry_type_np(acl_entry, ACL_ENTRY_TYPE_ALARM);
 			break;
 		case ARCHIVE_ENTRY_ACL_TYPE_ACCESS:
 		case ARCHIVE_ENTRY_ACL_TYPE_DEFAULT:
 			// These don't translate directly into the system ACL.
 			break;
 		default:
-			// XXX error handling here.
-			break;
+			archive_set_error(a, ARCHIVE_ERRNO_MISC,
+			    "Unknown ACL entry type");
+			ret = ARCHIVE_FAILED;
+			goto exit_free;
+		}
+		if (r != 0) {
+			archive_set_error(a, errno,
+			    "Failed to set ACL entry type");
+			ret = ARCHIVE_FAILED;
+			goto exit_free;
 		}
 #endif
 
-		acl_get_permset(acl_entry, &acl_permset);
-		acl_clear_perms(acl_permset);
+		if (acl_get_permset(acl_entry, &acl_permset) != 0) {
+			archive_set_error(a, errno,
+			    "Failed to get ACL permission set");
+			ret = ARCHIVE_FAILED;
+			goto exit_free;
+		}
+		if (acl_clear_perms(acl_permset) != 0) {
+			archive_set_error(a, errno,
+			    "Failed to clear ACL permissions");
+			ret = ARCHIVE_FAILED;
+			goto exit_free;
+		}
 
 		for (i = 0; i < (int)(sizeof(acl_perm_map) / sizeof(acl_perm_map[0])); ++i) {
 			if (ae_permset & acl_perm_map[i].archive_perm)
-				acl_add_perm(acl_permset,
-					     acl_perm_map[i].platform_perm);
+				if (acl_add_perm(acl_permset,
+				    acl_perm_map[i].platform_perm) != 0) {
+					archive_set_error(a, errno,
+					    "Failed to add ACL permission");
+					ret = ARCHIVE_FAILED;
+					goto exit_free;
+				}
 		}
 
 #ifdef ACL_TYPE_NFS4
-		// XXX acl_get_flagset_np on FreeBSD returns EINVAL for
-		// non-NFSv4 ACLs
-		r = acl_get_flagset_np(acl_entry, &acl_flagset);
-		if (r == 0) {
-			acl_clear_flags_np(acl_flagset);
+		if (acl_type == ACL_TYPE_NFS4) {
+			/*
+			 * acl_get_flagset_np() fails with non-NFSv4 ACLs
+			 */
+			if (acl_get_flagset_np(acl_entry, &acl_flagset) != 0) {
+				archive_set_error(a, errno,
+				    "Failed to get flagset from an NFSv4 ACL entry");
+				ret = ARCHIVE_FAILED;
+				goto exit_free;
+			}
+			if (acl_clear_flags_np(acl_flagset) != 0) {
+				archive_set_error(a, errno,
+				    "Failed to clear flags from an NFSv4 ACL flagset");
+				ret = ARCHIVE_FAILED;
+				goto exit_free;
+			}
 			for (i = 0; i < (int)(sizeof(acl_inherit_map) / sizeof(acl_inherit_map[0])); ++i) {
-				if (ae_permset & acl_inherit_map[i].archive_inherit)
-					acl_add_flag_np(acl_flagset,
-							acl_inherit_map[i].platform_inherit);
+				if (ae_permset & acl_inherit_map[i].archive_inherit) {
+					if (acl_add_flag_np(acl_flagset,
+							acl_inherit_map[i].platform_inherit) != 0) {
+						archive_set_error(a, errno,
+						    "Failed to add flag to NFSv4 ACL flagset");
+						ret = ARCHIVE_FAILED;
+						goto exit_free;
+					}
+				}
 			}
 		}
 #endif
@@ -262,6 +315,7 @@ set_acl(struct archive *a, int fd, const
 		ret = ARCHIVE_WARN;
 	}
 #endif
+exit_free:
 	acl_free(acl);
 	return (ret);
 }

Modified: user/alc/PQ_LAUNDRY/contrib/libarchive/libarchive/archive_write_disk_posix.c
==============================================================================
--- user/alc/PQ_LAUNDRY/contrib/libarchive/libarchive/archive_write_disk_posix.c	Mon Sep 19 16:16:14 2016	(r305983)
+++ user/alc/PQ_LAUNDRY/contrib/libarchive/libarchive/archive_write_disk_posix.c	Mon Sep 19 17:15:01 2016	(r305984)
@@ -140,7 +140,17 @@ __FBSDID("$FreeBSD$");
 #define O_BINARY 0
 #endif
 #ifndef O_CLOEXEC
-#define O_CLOEXEC	0
+#define O_CLOEXEC 0
+#endif
+
+/* Ignore non-int O_NOFOLLOW constant. */
+/* gnulib's fcntl.h does this on AIX, but it seems practical everywhere */
+#if defined O_NOFOLLOW && !(INT_MIN <= O_NOFOLLOW && O_NOFOLLOW <= INT_MAX)
+#undef O_NOFOLLOW
+#endif
+
+#ifndef O_NOFOLLOW
+#define O_NOFOLLOW 0
 #endif
 
 struct fixup_entry {
@@ -326,12 +336,14 @@ struct archive_write_disk {
 
 #define HFS_BLOCKS(s)	((s) >> 12)
 
+static int	check_symlinks_fsobj(char *path, int *error_number, struct archive_string *error_string, int flags);
 static int	check_symlinks(struct archive_write_disk *);
 static int	create_filesystem_object(struct archive_write_disk *);
 static struct fixup_entry *current_fixup(struct archive_write_disk *, const char *pathname);
 #if defined(HAVE_FCHDIR) && defined(PATH_MAX)
 static void	edit_deep_directories(struct archive_write_disk *ad);
 #endif
+static int	cleanup_pathname_fsobj(char *path, int *error_number, struct archive_string *error_string, int flags);
 static int	cleanup_pathname(struct archive_write_disk *);
 static int	create_dir(struct archive_write_disk *, char *);
 static int	create_parent_dir(struct archive_write_disk *, char *);
@@ -2014,6 +2026,10 @@ create_filesystem_object(struct archive_
 	const char *linkname;
 	mode_t final_mode, mode;
 	int r;
+	/* these for check_symlinks_fsobj */
+	char *linkname_copy;	/* non-const copy of linkname */
+	struct archive_string error_string;
+	int error_number;
 
 	/* We identify hard/symlinks according to the link names. */
 	/* Since link(2) and symlink(2) don't handle modes, we're done here. */
@@ -2022,6 +2038,27 @@ create_filesystem_object(struct archive_
 #if !HAVE_LINK
 		return (EPERM);
 #else
+		archive_string_init(&error_string);
+		linkname_copy = strdup(linkname);
+		if (linkname_copy == NULL) {
+		    return (EPERM);
+		}
+		/* TODO: consider using the cleaned-up path as the link target? */
+		r = cleanup_pathname_fsobj(linkname_copy, &error_number, &error_string, a->flags);
+		if (r != ARCHIVE_OK) {
+			archive_set_error(&a->archive, error_number, "%s", error_string.s);
+			free(linkname_copy);
+			/* EPERM is more appropriate than error_number for our callers */
+			return (EPERM);
+		}
+		r = check_symlinks_fsobj(linkname_copy, &error_number, &error_string, a->flags);
+		if (r != ARCHIVE_OK) {
+			archive_set_error(&a->archive, error_number, "%s", error_string.s);
+			free(linkname_copy);
+			/* EPERM is more appropriate than error_number for our callers */
+			return (EPERM);
+		}
+		free(linkname_copy);
 		r = link(linkname, a->name) ? errno : 0;
 		/*
 		 * New cpio and pax formats allow hardlink entries
@@ -2040,7 +2077,7 @@ create_filesystem_object(struct archive_
 			a->deferred = 0;
 		} else if (r == 0 && a->filesize > 0) {
 			a->fd = open(a->name,
-				     O_WRONLY | O_TRUNC | O_BINARY | O_CLOEXEC);
+				     O_WRONLY | O_TRUNC | O_BINARY | O_CLOEXEC | O_NOFOLLOW);
 			__archive_ensure_cloexec_flag(a->fd);
 			if (a->fd < 0)
 				r = errno;
@@ -2351,126 +2388,233 @@ current_fixup(struct archive_write_disk 
 	return (a->current_fixup);
 }
 
-/* TODO: Make this work. */
-/*
- * TODO: The deep-directory support bypasses this; disable deep directory
- * support if we're doing symlink checks.
- */
 /*
  * TODO: Someday, integrate this with the deep dir support; they both
  * scan the path and both can be optimized by comparing against other
  * recent paths.
  */
 /* TODO: Extend this to support symlinks on Windows Vista and later. */
+
+/*
+ * Checks the given path to see if any elements along it are symlinks.  Returns
+ * ARCHIVE_OK if there are none, otherwise puts an error in errmsg.
+ */
 static int
-check_symlinks(struct archive_write_disk *a)
+check_symlinks_fsobj(char *path, int *error_number, struct archive_string *error_string, int flags)
 {
 #if !defined(HAVE_LSTAT)
 	/* Platform doesn't have lstat, so we can't look for symlinks. */
-	(void)a; /* UNUSED */
+	(void)path; /* UNUSED */
+	(void)error_number; /* UNUSED */
+	(void)error_string; /* UNUSED */
+	(void)flags; /* UNUSED */
 	return (ARCHIVE_OK);
 #else
-	char *pn;
+	int res = ARCHIVE_OK;
+	char *tail;
+	char *head;
+	int last;
 	char c;
 	int r;
 	struct stat st;
+	int restore_pwd;
+
+	/* Nothing to do here if name is empty */
+	if(path[0] == '\0')
+	    return (ARCHIVE_OK);
 
 	/*
 	 * Guard against symlink tricks.  Reject any archive entry whose
 	 * destination would be altered by a symlink.
-	 */
-	/* Whatever we checked last time doesn't need to be re-checked. */
-	pn = a->name;
-	if (archive_strlen(&(a->path_safe)) > 0) {
-		char *p = a->path_safe.s;
-		while ((*pn != '\0') && (*p == *pn))
-			++p, ++pn;
-	}
+	 *
+	 * Walk the filename in chunks separated by '/'.  For each segment:
+	 *  - if it doesn't exist, continue
+	 *  - if it's symlink, abort or remove it
+	 *  - if it's a directory and it's not the last chunk, cd into it
+	 * As we go:
+	 *  head points to the current (relative) path
+	 *  tail points to the temporary \0 terminating the segment we're currently examining
+	 *  c holds what used to be in *tail
+	 *  last is 1 if this is the last tail
+	 */
+	restore_pwd = open(".", O_RDONLY | O_BINARY | O_CLOEXEC);
+	__archive_ensure_cloexec_flag(restore_pwd);
+	if (restore_pwd < 0)
+		return (ARCHIVE_FATAL);
+	head = path;
+	tail = path;
+	last = 0;
+	/* TODO: reintroduce a safe cache here? */
 	/* Skip the root directory if the path is absolute. */
-	if(pn == a->name && pn[0] == '/')
-		++pn;
-	c = pn[0];
-	/* Keep going until we've checked the entire name. */
-	while (pn[0] != '\0' && (pn[0] != '/' || pn[1] != '\0')) {
+	if(tail == path && tail[0] == '/')
+		++tail;
+	/* Keep going until we've checked the entire name.
+	 * head, tail, path all alias the same string, which is
+	 * temporarily zeroed at tail, so be careful restoring the
+	 * stashed (c=tail[0]) for error messages.
+	 * Exiting the loop with break is okay; continue is not.
+	 */
+	while (!last) {
+		/* Skip the separator we just consumed, plus any adjacent ones */
+		while (*tail == '/')
+		    ++tail;
 		/* Skip the next path element. */
-		while (*pn != '\0' && *pn != '/')
-			++pn;
-		c = pn[0];
-		pn[0] = '\0';
+		while (*tail != '\0' && *tail != '/')
+			++tail;
+		/* is this the last path component? */
+		last = (tail[0] == '\0') || (tail[0] == '/' && tail[1] == '\0');
+		/* temporarily truncate the string here */
+		c = tail[0];
+		tail[0] = '\0';
 		/* Check that we haven't hit a symlink. */
-		r = lstat(a->name, &st);
+		r = lstat(head, &st);
 		if (r != 0) {
+			tail[0] = c;
 			/* We've hit a dir that doesn't exist; stop now. */
 			if (errno == ENOENT) {
 				break;
 			} else {
-				/* Note: This effectively disables deep directory
+				/* Treat any other error as fatal - best to be paranoid here
+				 * Note: This effectively disables deep directory
 				 * support when security checks are enabled.
 				 * Otherwise, very long pathnames that trigger
 				 * an error here could evade the sandbox.
 				 * TODO: We could do better, but it would probably
 				 * require merging the symlink checks with the
 				 * deep-directory editing. */
-				return (ARCHIVE_FAILED);
+				if (error_number) *error_number = errno;
+				if (error_string)
+					archive_string_sprintf(error_string,
+							"Could not stat %s",
+							path);
+				res = ARCHIVE_FAILED;
+				break;
+			}
+		} else if (S_ISDIR(st.st_mode)) {
+			if (!last) {
+				if (chdir(head) != 0) {
+					tail[0] = c;
+					if (error_number) *error_number = errno;
+					if (error_string)
+						archive_string_sprintf(error_string,
+								"Could not chdir %s",
+								path);
+					res = (ARCHIVE_FATAL);
+					break;
+				}
+				/* Our view is now from inside this dir: */
+				head = tail + 1;
 			}
 		} else if (S_ISLNK(st.st_mode)) {
-			if (c == '\0') {
+			if (last) {
 				/*
 				 * Last element is symlink; remove it
 				 * so we can overwrite it with the
 				 * item being extracted.
 				 */
-				if (unlink(a->name)) {
-					archive_set_error(&a->archive, errno,
-					    "Could not remove symlink %s",
-					    a->name);
-					pn[0] = c;
-					return (ARCHIVE_FAILED);
+				if (unlink(head)) {
+					tail[0] = c;
+					if (error_number) *error_number = errno;
+					if (error_string)
+						archive_string_sprintf(error_string,
+								"Could not remove symlink %s",
+								path);
+					res = ARCHIVE_FAILED;
+					break;
 				}
-				a->pst = NULL;
 				/*
 				 * Even if we did remove it, a warning
 				 * is in order.  The warning is silly,
 				 * though, if we're just replacing one
 				 * symlink with another symlink.
 				 */
-				if (!S_ISLNK(a->mode)) {
-					archive_set_error(&a->archive, 0,
-					    "Removing symlink %s",
-					    a->name);
+				tail[0] = c;
+				/* FIXME:  not sure how important this is to restore
+				if (!S_ISLNK(path)) {
+					if (error_number) *error_number = 0;
+					if (error_string)
+						archive_string_sprintf(error_string,
+								"Removing symlink %s",
+								path);
 				}
+				*/
 				/* Symlink gone.  No more problem! */
-				pn[0] = c;
-				return (0);
-			} else if (a->flags & ARCHIVE_EXTRACT_UNLINK) {
+				res = ARCHIVE_OK;
+				break;
+			} else if (flags & ARCHIVE_EXTRACT_UNLINK) {
 				/* User asked us to remove problems. */
-				if (unlink(a->name) != 0) {
-					archive_set_error(&a->archive, 0,
-					    "Cannot remove intervening symlink %s",
-					    a->name);
-					pn[0] = c;
-					return (ARCHIVE_FAILED);
+				if (unlink(head) != 0) {
+					tail[0] = c;
+					if (error_number) *error_number = 0;
+					if (error_string)
+						archive_string_sprintf(error_string,
+								"Cannot remove intervening symlink %s",
+								path);
+					res = ARCHIVE_FAILED;
+					break;
 				}
-				a->pst = NULL;
+				tail[0] = c;
 			} else {
-				archive_set_error(&a->archive, 0,
-				    "Cannot extract through symlink %s",
-				    a->name);
-				pn[0] = c;
-				return (ARCHIVE_FAILED);
+				tail[0] = c;
+				if (error_number) *error_number = 0;
+				if (error_string)
+					archive_string_sprintf(error_string,
+							"Cannot extract through symlink %s",
+							path);
+				res = ARCHIVE_FAILED;
+				break;
 			}
 		}
-		pn[0] = c;
-		if (pn[0] != '\0')
-			pn++; /* Advance to the next segment. */
-	}
-	pn[0] = c;
-	/* We've checked and/or cleaned the whole path, so remember it. */
-	archive_strcpy(&a->path_safe, a->name);
-	return (ARCHIVE_OK);
+		/* be sure to always maintain this */
+		tail[0] = c;
+		if (tail[0] != '\0')
+			tail++; /* Advance to the next segment. */
+	}
+	/* Catches loop exits via break */
+	tail[0] = c;
+#ifdef HAVE_FCHDIR
+	/* If we changed directory above, restore it here. */
+	if (restore_pwd >= 0) {
+		r = fchdir(restore_pwd);
+		if (r != 0) {
+			if(error_number) *error_number = errno;
+			if(error_string)
+				archive_string_sprintf(error_string,

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



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