svn commit: r217138 - in projects/sv: . bin/kill bin/setfacl bin/sh bin/sh/bltin contrib/gcc/config/i386 contrib/top etc etc/rc.d gnu/lib/libgcc gnu/lib/libgomp gnu/usr.bin/binutils gnu/usr.bin/bin...

Attilio Rao attilio at FreeBSD.org
Sat Jan 8 01:15:33 UTC 2011


Author: attilio
Date: Sat Jan  8 01:15:32 2011
New Revision: 217138
URL: http://svn.freebsd.org/changeset/base/217138

Log:
  MFC

Added:
  projects/sv/lib/libthr/thread/thr_sleepq.c
     - copied unchanged from r217136, head/lib/libthr/thread/thr_sleepq.c
  projects/sv/share/man/man4/vte.4
     - copied unchanged from r217136, head/share/man/man4/vte.4
  projects/sv/share/man/man9/osd.9
     - copied unchanged from r217136, head/share/man/man9/osd.9
  projects/sv/sys/boot/powerpc/ps3/
     - copied from r217136, head/sys/boot/powerpc/ps3/
  projects/sv/sys/dev/mii/rdcphy.c
     - copied unchanged from r217136, head/sys/dev/mii/rdcphy.c
  projects/sv/sys/dev/mii/rdcphyreg.h
     - copied unchanged from r217136, head/sys/dev/mii/rdcphyreg.h
  projects/sv/sys/dev/vte/
     - copied from r217136, head/sys/dev/vte/
  projects/sv/sys/modules/vte/
     - copied from r217136, head/sys/modules/vte/
  projects/sv/sys/powerpc/ps3/
     - copied from r217136, head/sys/powerpc/ps3/
  projects/sv/tools/regression/bin/sh/builtins/exit1.0
     - copied unchanged from r217136, head/tools/regression/bin/sh/builtins/exit1.0
  projects/sv/tools/regression/bin/sh/builtins/trap4.0
     - copied unchanged from r217136, head/tools/regression/bin/sh/builtins/trap4.0
  projects/sv/tools/regression/bin/sh/errors/assignment-error2.0
     - copied unchanged from r217136, head/tools/regression/bin/sh/errors/assignment-error2.0
  projects/sv/tools/regression/bin/sh/errors/redirection-error7.0
     - copied unchanged from r217136, head/tools/regression/bin/sh/errors/redirection-error7.0
  projects/sv/tools/regression/bin/sh/expansion/cmdsubst10.0
     - copied unchanged from r217136, head/tools/regression/bin/sh/expansion/cmdsubst10.0
  projects/sv/tools/regression/bin/sh/expansion/cmdsubst4.0
     - copied unchanged from r217136, head/tools/regression/bin/sh/expansion/cmdsubst4.0
  projects/sv/tools/regression/bin/sh/expansion/cmdsubst5.0
     - copied unchanged from r217136, head/tools/regression/bin/sh/expansion/cmdsubst5.0
  projects/sv/tools/regression/bin/sh/expansion/cmdsubst6.0
     - copied unchanged from r217136, head/tools/regression/bin/sh/expansion/cmdsubst6.0
  projects/sv/tools/regression/bin/sh/expansion/cmdsubst7.0
     - copied unchanged from r217136, head/tools/regression/bin/sh/expansion/cmdsubst7.0
  projects/sv/tools/regression/bin/sh/expansion/cmdsubst8.0
     - copied unchanged from r217136, head/tools/regression/bin/sh/expansion/cmdsubst8.0
  projects/sv/tools/regression/bin/sh/expansion/cmdsubst9.0
     - copied unchanged from r217136, head/tools/regression/bin/sh/expansion/cmdsubst9.0
  projects/sv/tools/regression/bin/sh/expansion/plus-minus7.0
     - copied unchanged from r217136, head/tools/regression/bin/sh/expansion/plus-minus7.0
  projects/sv/tools/regression/usr.bin/sed/inplace_race.t
     - copied unchanged from r217136, head/tools/regression/usr.bin/sed/inplace_race.t
Deleted:
  projects/sv/sys/arm/conf/SKYEYE
  projects/sv/sys/dev/cxgb/ulp/tom/cxgb_vm.c
  projects/sv/sys/dev/cxgb/ulp/tom/cxgb_vm.h
  projects/sv/sys/mips/conf/OCTEON1-32
Modified:
  projects/sv/COPYRIGHT
  projects/sv/Makefile
  projects/sv/Makefile.inc1
  projects/sv/Makefile.mips
  projects/sv/UPDATING
  projects/sv/bin/kill/kill.1
  projects/sv/bin/kill/kill.c
  projects/sv/bin/setfacl/setfacl.c
  projects/sv/bin/sh/Makefile
  projects/sv/bin/sh/alias.c
  projects/sv/bin/sh/bltin/bltin.h
  projects/sv/bin/sh/builtins.def
  projects/sv/bin/sh/cd.c
  projects/sv/bin/sh/error.c
  projects/sv/bin/sh/error.h
  projects/sv/bin/sh/eval.c
  projects/sv/bin/sh/exec.c
  projects/sv/bin/sh/expand.c
  projects/sv/bin/sh/expand.h
  projects/sv/bin/sh/histedit.c
  projects/sv/bin/sh/jobs.c
  projects/sv/bin/sh/memalloc.c
  projects/sv/bin/sh/memalloc.h
  projects/sv/bin/sh/parser.c
  projects/sv/bin/sh/redir.c
  projects/sv/bin/sh/sh.1
  projects/sv/bin/sh/trap.c
  projects/sv/bin/sh/var.c
  projects/sv/bin/sh/var.h
  projects/sv/contrib/gcc/config/i386/freebsd.h
  projects/sv/etc/devd.conf
  projects/sv/etc/portsnap.conf
  projects/sv/etc/rc.d/devd
  projects/sv/etc/rc.d/ldconfig
  projects/sv/etc/rc.subr
  projects/sv/gnu/lib/libgcc/Makefile
  projects/sv/gnu/lib/libgomp/Makefile
  projects/sv/gnu/usr.bin/binutils/Makefile.inc0
  projects/sv/gnu/usr.bin/binutils/ld/Makefile.mips
  projects/sv/gnu/usr.bin/binutils/libbfd/Makefile.mips
  projects/sv/gnu/usr.bin/cc/Makefile.inc
  projects/sv/gnu/usr.bin/cc/Makefile.tgt
  projects/sv/gnu/usr.bin/gdb/Makefile.inc
  projects/sv/gnu/usr.bin/gdb/libgdb/Makefile
  projects/sv/include/pthread.h
  projects/sv/lib/bind/config.mk
  projects/sv/lib/csu/amd64/crti.S
  projects/sv/lib/csu/amd64/crtn.S
  projects/sv/lib/csu/i386-elf/crt1_s.S
  projects/sv/lib/csu/i386-elf/crti.S
  projects/sv/lib/csu/i386-elf/crtn.S
  projects/sv/lib/libc/Makefile
  projects/sv/lib/libc/amd64/gen/_setjmp.S
  projects/sv/lib/libc/amd64/gen/fabs.S
  projects/sv/lib/libc/amd64/gen/modf.S
  projects/sv/lib/libc/amd64/gen/rfork_thread.S
  projects/sv/lib/libc/amd64/gen/setjmp.S
  projects/sv/lib/libc/amd64/gen/sigsetjmp.S
  projects/sv/lib/libc/amd64/stdlib/div.S
  projects/sv/lib/libc/amd64/stdlib/ldiv.S
  projects/sv/lib/libc/amd64/stdlib/lldiv.S
  projects/sv/lib/libc/amd64/string/bcmp.S
  projects/sv/lib/libc/amd64/string/bcopy.S
  projects/sv/lib/libc/amd64/string/bzero.S
  projects/sv/lib/libc/amd64/string/memcmp.S
  projects/sv/lib/libc/amd64/string/memmove.S
  projects/sv/lib/libc/amd64/string/memset.S
  projects/sv/lib/libc/amd64/string/strcat.S
  projects/sv/lib/libc/amd64/string/strcmp.S
  projects/sv/lib/libc/amd64/string/strcpy.S
  projects/sv/lib/libc/amd64/sys/brk.S
  projects/sv/lib/libc/amd64/sys/cerror.S
  projects/sv/lib/libc/amd64/sys/exect.S
  projects/sv/lib/libc/amd64/sys/getcontext.S
  projects/sv/lib/libc/amd64/sys/pipe.S
  projects/sv/lib/libc/amd64/sys/ptrace.S
  projects/sv/lib/libc/amd64/sys/reboot.S
  projects/sv/lib/libc/amd64/sys/sbrk.S
  projects/sv/lib/libc/amd64/sys/setlogin.S
  projects/sv/lib/libc/amd64/sys/sigreturn.S
  projects/sv/lib/libc/amd64/sys/vfork.S
  projects/sv/lib/libc/i386/gen/_ctx_start.S
  projects/sv/lib/libc/i386/gen/_setjmp.S
  projects/sv/lib/libc/i386/gen/fabs.S
  projects/sv/lib/libc/i386/gen/modf.S
  projects/sv/lib/libc/i386/gen/rfork_thread.S
  projects/sv/lib/libc/i386/gen/setjmp.S
  projects/sv/lib/libc/i386/gen/sigsetjmp.S
  projects/sv/lib/libc/i386/stdlib/div.S
  projects/sv/lib/libc/i386/stdlib/ldiv.S
  projects/sv/lib/libc/i386/string/bcmp.S
  projects/sv/lib/libc/i386/string/bcopy.S
  projects/sv/lib/libc/i386/string/bzero.S
  projects/sv/lib/libc/i386/string/ffs.S
  projects/sv/lib/libc/i386/string/index.S
  projects/sv/lib/libc/i386/string/memchr.S
  projects/sv/lib/libc/i386/string/memcmp.S
  projects/sv/lib/libc/i386/string/memcpy.S
  projects/sv/lib/libc/i386/string/memmove.S
  projects/sv/lib/libc/i386/string/memset.S
  projects/sv/lib/libc/i386/string/rindex.S
  projects/sv/lib/libc/i386/string/strcat.S
  projects/sv/lib/libc/i386/string/strchr.S
  projects/sv/lib/libc/i386/string/strcmp.S
  projects/sv/lib/libc/i386/string/strcpy.S
  projects/sv/lib/libc/i386/string/strncmp.S
  projects/sv/lib/libc/i386/string/strrchr.S
  projects/sv/lib/libc/i386/string/swab.S
  projects/sv/lib/libc/i386/string/wcschr.S
  projects/sv/lib/libc/i386/string/wcscmp.S
  projects/sv/lib/libc/i386/string/wcslen.S
  projects/sv/lib/libc/i386/string/wmemchr.S
  projects/sv/lib/libc/i386/sys/Ovfork.S
  projects/sv/lib/libc/i386/sys/brk.S
  projects/sv/lib/libc/i386/sys/cerror.S
  projects/sv/lib/libc/i386/sys/exect.S
  projects/sv/lib/libc/i386/sys/getcontext.S
  projects/sv/lib/libc/i386/sys/pipe.S
  projects/sv/lib/libc/i386/sys/ptrace.S
  projects/sv/lib/libc/i386/sys/reboot.S
  projects/sv/lib/libc/i386/sys/sbrk.S
  projects/sv/lib/libc/i386/sys/setlogin.S
  projects/sv/lib/libc/i386/sys/sigreturn.S
  projects/sv/lib/libc/i386/sys/syscall.S
  projects/sv/lib/libc/locale/mbrtowc.3
  projects/sv/lib/libc/rpc/publickey.3
  projects/sv/lib/libc/sys/Makefile.inc
  projects/sv/lib/libcompiler_rt/Makefile
  projects/sv/lib/libkvm/kvm_getloadavg.3
  projects/sv/lib/libstand/Makefile
  projects/sv/lib/libthr/arch/amd64/amd64/_umtx_op_err.S
  projects/sv/lib/libthr/arch/i386/i386/_umtx_op_err.S
  projects/sv/lib/libthr/thread/Makefile.inc
  projects/sv/lib/libthr/thread/thr_cond.c
  projects/sv/lib/libthr/thread/thr_init.c
  projects/sv/lib/libthr/thread/thr_kern.c
  projects/sv/lib/libthr/thread/thr_list.c
  projects/sv/lib/libthr/thread/thr_mutex.c
  projects/sv/lib/libthr/thread/thr_private.h
  projects/sv/lib/libthr/thread/thr_umtx.c
  projects/sv/lib/libthr/thread/thr_umtx.h
  projects/sv/lib/libugidfw/ugidfw.c
  projects/sv/lib/msun/amd64/e_remainder.S
  projects/sv/lib/msun/amd64/e_remainderf.S
  projects/sv/lib/msun/amd64/e_remainderl.S
  projects/sv/lib/msun/amd64/e_sqrt.S
  projects/sv/lib/msun/amd64/e_sqrtf.S
  projects/sv/lib/msun/amd64/e_sqrtl.S
  projects/sv/lib/msun/amd64/s_llrint.S
  projects/sv/lib/msun/amd64/s_llrintf.S
  projects/sv/lib/msun/amd64/s_llrintl.S
  projects/sv/lib/msun/amd64/s_logbl.S
  projects/sv/lib/msun/amd64/s_lrint.S
  projects/sv/lib/msun/amd64/s_lrintf.S
  projects/sv/lib/msun/amd64/s_lrintl.S
  projects/sv/lib/msun/amd64/s_remquo.S
  projects/sv/lib/msun/amd64/s_remquof.S
  projects/sv/lib/msun/amd64/s_remquol.S
  projects/sv/lib/msun/amd64/s_rintl.S
  projects/sv/lib/msun/amd64/s_scalbn.S
  projects/sv/lib/msun/amd64/s_scalbnf.S
  projects/sv/lib/msun/amd64/s_scalbnl.S
  projects/sv/lib/msun/i387/e_exp.S
  projects/sv/lib/msun/i387/e_fmod.S
  projects/sv/lib/msun/i387/e_log.S
  projects/sv/lib/msun/i387/e_log10.S
  projects/sv/lib/msun/i387/e_log10f.S
  projects/sv/lib/msun/i387/e_logf.S
  projects/sv/lib/msun/i387/e_remainder.S
  projects/sv/lib/msun/i387/e_remainderf.S
  projects/sv/lib/msun/i387/e_remainderl.S
  projects/sv/lib/msun/i387/e_sqrt.S
  projects/sv/lib/msun/i387/e_sqrtf.S
  projects/sv/lib/msun/i387/e_sqrtl.S
  projects/sv/lib/msun/i387/s_ceil.S
  projects/sv/lib/msun/i387/s_ceilf.S
  projects/sv/lib/msun/i387/s_ceill.S
  projects/sv/lib/msun/i387/s_copysign.S
  projects/sv/lib/msun/i387/s_copysignf.S
  projects/sv/lib/msun/i387/s_copysignl.S
  projects/sv/lib/msun/i387/s_cos.S
  projects/sv/lib/msun/i387/s_finite.S
  projects/sv/lib/msun/i387/s_floor.S
  projects/sv/lib/msun/i387/s_floorf.S
  projects/sv/lib/msun/i387/s_floorl.S
  projects/sv/lib/msun/i387/s_llrint.S
  projects/sv/lib/msun/i387/s_llrintf.S
  projects/sv/lib/msun/i387/s_llrintl.S
  projects/sv/lib/msun/i387/s_logb.S
  projects/sv/lib/msun/i387/s_logbf.S
  projects/sv/lib/msun/i387/s_logbl.S
  projects/sv/lib/msun/i387/s_lrint.S
  projects/sv/lib/msun/i387/s_lrintf.S
  projects/sv/lib/msun/i387/s_lrintl.S
  projects/sv/lib/msun/i387/s_remquo.S
  projects/sv/lib/msun/i387/s_remquof.S
  projects/sv/lib/msun/i387/s_remquol.S
  projects/sv/lib/msun/i387/s_rint.S
  projects/sv/lib/msun/i387/s_rintf.S
  projects/sv/lib/msun/i387/s_rintl.S
  projects/sv/lib/msun/i387/s_scalbn.S
  projects/sv/lib/msun/i387/s_scalbnf.S
  projects/sv/lib/msun/i387/s_scalbnl.S
  projects/sv/lib/msun/i387/s_significand.S
  projects/sv/lib/msun/i387/s_significandf.S
  projects/sv/lib/msun/i387/s_sin.S
  projects/sv/lib/msun/i387/s_tan.S
  projects/sv/lib/msun/i387/s_trunc.S
  projects/sv/lib/msun/i387/s_truncf.S
  projects/sv/lib/msun/i387/s_truncl.S
  projects/sv/libexec/ftpd/ftpd.c
  projects/sv/libexec/rtld-elf/Makefile
  projects/sv/libexec/rtld-elf/amd64/Makefile.inc
  projects/sv/libexec/rtld-elf/amd64/reloc.c
  projects/sv/libexec/rtld-elf/amd64/rtld_start.S
  projects/sv/libexec/rtld-elf/arm/reloc.c
  projects/sv/libexec/rtld-elf/i386/Makefile.inc
  projects/sv/libexec/rtld-elf/i386/reloc.c
  projects/sv/libexec/rtld-elf/i386/rtld_start.S
  projects/sv/libexec/rtld-elf/ia64/reloc.c
  projects/sv/libexec/rtld-elf/mips/reloc.c
  projects/sv/libexec/rtld-elf/powerpc/reloc.c
  projects/sv/libexec/rtld-elf/powerpc64/reloc.c
  projects/sv/libexec/rtld-elf/powerpc64/rtld_start.S
  projects/sv/libexec/rtld-elf/rtld.1
  projects/sv/libexec/rtld-elf/rtld.c
  projects/sv/libexec/rtld-elf/rtld.h
  projects/sv/libexec/rtld-elf/rtld_lock.c
  projects/sv/libexec/rtld-elf/rtld_lock.h
  projects/sv/libexec/rtld-elf/sparc64/reloc.c
  projects/sv/sbin/camcontrol/camcontrol.8
  projects/sv/sbin/dumpfs/dumpfs.c
  projects/sv/sbin/hastd/parse.y
  projects/sv/sbin/ifconfig/ifmedia.c
  projects/sv/sbin/mount_nfs/mount_nfs.c
  projects/sv/sbin/newfs/mkfs.c
  projects/sv/sbin/newfs/newfs.8
  projects/sv/sbin/newfs/newfs.c
  projects/sv/sbin/newfs/newfs.h
  projects/sv/sbin/shutdown/Makefile
  projects/sv/sbin/shutdown/shutdown.8
  projects/sv/sbin/shutdown/shutdown.c
  projects/sv/sbin/tunefs/tunefs.8
  projects/sv/sbin/tunefs/tunefs.c
  projects/sv/share/examples/etc/make.conf
  projects/sv/share/man/man1/builtin.1
  projects/sv/share/man/man4/Makefile
  projects/sv/share/man/man4/altq.4
  projects/sv/share/man/man4/miibus.4
  projects/sv/share/man/man4/tcp.4
  projects/sv/share/man/man4/vlan.4
  projects/sv/share/man/man4/wi.4
  projects/sv/share/man/man5/core.5
  projects/sv/share/man/man9/BUS_SETUP_INTR.9
  projects/sv/share/man/man9/Makefile
  projects/sv/share/man/man9/ithread.9
  projects/sv/share/man/man9/mutex.9
  projects/sv/share/man/man9/style.9
  projects/sv/share/man/man9/swi.9
  projects/sv/share/misc/committers-doc.dot
  projects/sv/share/misc/committers-src.dot
  projects/sv/share/mk/bsd.cpu.mk
  projects/sv/share/mk/bsd.endian.mk
  projects/sv/share/mk/bsd.lib.mk
  projects/sv/share/mk/bsd.own.mk
  projects/sv/share/mk/sys.mk
  projects/sv/sys/amd64/amd64/cpu_switch.S
  projects/sv/sys/amd64/amd64/exception.S
  projects/sv/sys/amd64/amd64/fpu.c
  projects/sv/sys/amd64/amd64/genassym.c
  projects/sv/sys/amd64/amd64/machdep.c
  projects/sv/sys/amd64/amd64/sys_machdep.c
  projects/sv/sys/amd64/amd64/vm_machdep.c
  projects/sv/sys/amd64/ia32/ia32_reg.c
  projects/sv/sys/amd64/ia32/ia32_signal.c
  projects/sv/sys/amd64/include/elf.h
  projects/sv/sys/amd64/include/pcb.h
  projects/sv/sys/amd64/linux32/linux32_machdep.c
  projects/sv/sys/amd64/linux32/linux32_sysvec.c
  projects/sv/sys/arm/at91/at91_st.c
  projects/sv/sys/arm/at91/at91rm9200.c
  projects/sv/sys/arm/at91/if_macb.c
  projects/sv/sys/arm/at91/uart_bus_at91usart.c
  projects/sv/sys/arm/at91/uart_cpu_at91rm9200usart.c
  projects/sv/sys/arm/at91/uart_dev_at91usart.c
  projects/sv/sys/arm/include/_limits.h
  projects/sv/sys/arm/include/elf.h
  projects/sv/sys/arm/include/pmap.h
  projects/sv/sys/arm/mv/gpio.c
  projects/sv/sys/arm/s3c2xx0/s3c24x0_clk.c
  projects/sv/sys/arm/xscale/ixp425/avila_gpio.c
  projects/sv/sys/boot/efi/libefi/efinet.c
  projects/sv/sys/boot/efi/libefi/efipart.c
  projects/sv/sys/boot/ficl/Makefile
  projects/sv/sys/boot/forth/loader.conf
  projects/sv/sys/boot/i386/Makefile.inc
  projects/sv/sys/boot/i386/boot2/Makefile
  projects/sv/sys/boot/i386/gptboot/Makefile
  projects/sv/sys/boot/i386/gptzfsboot/Makefile
  projects/sv/sys/boot/i386/zfsboot/Makefile
  projects/sv/sys/boot/pc98/Makefile.inc
  projects/sv/sys/boot/pc98/boot2/Makefile
  projects/sv/sys/boot/powerpc/Makefile
  projects/sv/sys/boot/zfs/Makefile
  projects/sv/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zio.h
  projects/sv/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c
  projects/sv/sys/compat/linux/linux_ioctl.c
  projects/sv/sys/compat/linux/linux_ioctl.h
  projects/sv/sys/conf/NOTES
  projects/sv/sys/conf/files
  projects/sv/sys/conf/files.powerpc
  projects/sv/sys/conf/kern.mk
  projects/sv/sys/conf/kern.pre.mk
  projects/sv/sys/conf/makeLINT.mk
  projects/sv/sys/conf/options.i386
  projects/sv/sys/conf/options.powerpc
  projects/sv/sys/dev/acpica/acpi.c
  projects/sv/sys/dev/acpica/acpi_ec.c
  projects/sv/sys/dev/acpica/acpivar.h
  projects/sv/sys/dev/adlink/adlink.c
  projects/sv/sys/dev/ae/if_ae.c
  projects/sv/sys/dev/ae/if_aevar.h
  projects/sv/sys/dev/age/if_age.c
  projects/sv/sys/dev/age/if_agevar.h
  projects/sv/sys/dev/alc/if_alc.c
  projects/sv/sys/dev/alc/if_alcvar.h
  projects/sv/sys/dev/ale/if_ale.c
  projects/sv/sys/dev/ale/if_alevar.h
  projects/sv/sys/dev/bge/if_bge.c
  projects/sv/sys/dev/cxgb/ulp/tom/cxgb_cpl_socket.c
  projects/sv/sys/dev/cxgb/ulp/tom/cxgb_ddp.c
  projects/sv/sys/dev/drm/via_dmablit.c
  projects/sv/sys/dev/if_ndis/if_ndis.c
  projects/sv/sys/dev/ispfw/asm_2322.h
  projects/sv/sys/dev/ispfw/asm_2400.h
  projects/sv/sys/dev/ispfw/asm_2500.h
  projects/sv/sys/dev/ixgbe/ixgbe.c
  projects/sv/sys/dev/ixgbe/ixgbe.h
  projects/sv/sys/dev/md/md.c
  projects/sv/sys/dev/mii/miidevs
  projects/sv/sys/dev/mii/nsgphy.c
  projects/sv/sys/dev/mmc/mmc.c
  projects/sv/sys/dev/mpt/mpt_cam.c
  projects/sv/sys/dev/mpt/mpt_pci.c
  projects/sv/sys/dev/msk/if_msk.c
  projects/sv/sys/dev/mwl/mwlhal.c
  projects/sv/sys/dev/mxge/if_mxge.c
  projects/sv/sys/dev/nfe/if_nfe.c
  projects/sv/sys/dev/nfe/if_nfevar.h
  projects/sv/sys/dev/pty/pty.c
  projects/sv/sys/dev/random/randomdev.c
  projects/sv/sys/dev/sound/pci/hda/hdac.c
  projects/sv/sys/dev/usb/controller/ehci_mv.c
  projects/sv/sys/dev/usb/serial/uplcom.c
  projects/sv/sys/dev/usb/usbdevs
  projects/sv/sys/dev/wpi/if_wpi.c
  projects/sv/sys/dev/xen/balloon/balloon.c
  projects/sv/sys/dev/xen/blkfront/blkfront.c
  projects/sv/sys/dev/xen/console/console.c
  projects/sv/sys/dev/xen/netfront/netfront.c
  projects/sv/sys/dev/xen/xenpci/evtchn.c
  projects/sv/sys/fs/nfs/nfs.h
  projects/sv/sys/fs/nfs/nfs_commonsubs.c
  projects/sv/sys/fs/nfs/nfs_var.h
  projects/sv/sys/fs/nfs/nfsdport.h
  projects/sv/sys/fs/nfs/nfsport.h
  projects/sv/sys/fs/nfsclient/nfs_clvfsops.c
  projects/sv/sys/fs/nfsclient/nfsmount.h
  projects/sv/sys/fs/nfsserver/nfs_nfsdport.c
  projects/sv/sys/fs/nfsserver/nfs_nfsdserv.c
  projects/sv/sys/fs/nfsserver/nfs_nfsdsocket.c
  projects/sv/sys/fs/nfsserver/nfs_nfsdstate.c
  projects/sv/sys/geom/geom_ctl.c
  projects/sv/sys/geom/geom_disk.c
  projects/sv/sys/geom/part/g_part.c
  projects/sv/sys/geom/part/g_part_ebr.c
  projects/sv/sys/geom/part/g_part_gpt.c
  projects/sv/sys/i386/conf/GENERIC
  projects/sv/sys/i386/conf/XBOX
  projects/sv/sys/i386/conf/XEN
  projects/sv/sys/i386/i386/sys_machdep.c
  projects/sv/sys/i386/include/_limits.h
  projects/sv/sys/i386/include/elf.h
  projects/sv/sys/i386/include/pcpu.h
  projects/sv/sys/i386/include/pmap.h
  projects/sv/sys/i386/include/segments.h
  projects/sv/sys/i386/include/xen/hypercall.h
  projects/sv/sys/i386/include/xen/xen-os.h
  projects/sv/sys/i386/include/xen/xenpmap.h
  projects/sv/sys/i386/include/xen/xenvar.h
  projects/sv/sys/i386/xen/clock.c
  projects/sv/sys/i386/xen/mp_machdep.c
  projects/sv/sys/i386/xen/pmap.c
  projects/sv/sys/i386/xen/xen_machdep.c
  projects/sv/sys/ia64/include/elf.h
  projects/sv/sys/kern/init_main.c
  projects/sv/sys/kern/kern_descrip.c
  projects/sv/sys/kern/kern_fork.c
  projects/sv/sys/kern/kern_jail.c
  projects/sv/sys/kern/kern_kthread.c
  projects/sv/sys/kern/kern_linker.c
  projects/sv/sys/kern/kern_resource.c
  projects/sv/sys/kern/kern_synch.c
  projects/sv/sys/kern/kern_timeout.c
  projects/sv/sys/kern/kern_umtx.c
  projects/sv/sys/kern/sched_4bsd.c
  projects/sv/sys/kern/sched_ule.c
  projects/sv/sys/kern/subr_autoconf.c
  projects/sv/sys/kern/subr_bus.c
  projects/sv/sys/kern/subr_devstat.c
  projects/sv/sys/kern/subr_log.c
  projects/sv/sys/kern/sys_pipe.c
  projects/sv/sys/kern/tty.c
  projects/sv/sys/kern/tty_tty.c
  projects/sv/sys/kern/uipc_cow.c
  projects/sv/sys/kern/vfs_bio.c
  projects/sv/sys/kern/vfs_subr.c
  projects/sv/sys/mips/cavium/octeon_machdep.c
  projects/sv/sys/mips/cavium/octeon_mp.c
  projects/sv/sys/mips/conf/SENTRY5
  projects/sv/sys/mips/include/_limits.h
  projects/sv/sys/mips/include/cpufunc.h
  projects/sv/sys/mips/include/elf.h
  projects/sv/sys/mips/mips/machdep.c
  projects/sv/sys/mips/mips/mp_machdep.c
  projects/sv/sys/mips/rmi/dev/nlge/if_nlge.c
  projects/sv/sys/mips/rmi/dev/xlr/rge.c
  projects/sv/sys/mips/rmi/fmn.c
  projects/sv/sys/modules/Makefile
  projects/sv/sys/modules/aha/Makefile
  projects/sv/sys/modules/ahb/Makefile
  projects/sv/sys/modules/mii/Makefile
  projects/sv/sys/net/bpf_zerocopy.c
  projects/sv/sys/net/flowtable.c
  projects/sv/sys/net/if_llatbl.h
  projects/sv/sys/net/if_media.h
  projects/sv/sys/netinet/if_ether.c
  projects/sv/sys/netinet/in_pcb.c
  projects/sv/sys/netinet/ip_output.c
  projects/sv/sys/netinet/ipfw/ip_dummynet.c
  projects/sv/sys/netinet/sctp_asconf.c
  projects/sv/sys/netinet/sctp_bsd_addr.c
  projects/sv/sys/netinet/sctp_cc_functions.c
  projects/sv/sys/netinet/sctp_constants.h
  projects/sv/sys/netinet/sctp_indata.c
  projects/sv/sys/netinet/sctp_input.c
  projects/sv/sys/netinet/sctp_output.c
  projects/sv/sys/netinet/sctp_pcb.c
  projects/sv/sys/netinet/sctp_sysctl.h
  projects/sv/sys/netinet/sctp_timer.c
  projects/sv/sys/netinet/sctp_uio.h
  projects/sv/sys/netinet/sctp_usrreq.c
  projects/sv/sys/netinet/sctputil.c
  projects/sv/sys/netinet/tcp_input.c
  projects/sv/sys/netinet/tcp_lro.c
  projects/sv/sys/netinet/tcp_lro.h
  projects/sv/sys/netinet/tcp_output.c
  projects/sv/sys/netinet/tcp_reass.c
  projects/sv/sys/netinet/tcp_sack.c
  projects/sv/sys/netinet/tcp_subr.c
  projects/sv/sys/netinet/tcp_syncache.h
  projects/sv/sys/netinet/tcp_timer.c
  projects/sv/sys/netinet/tcp_usrreq.c
  projects/sv/sys/netinet/tcp_var.h
  projects/sv/sys/netinet/udp.h
  projects/sv/sys/netinet/udp_var.h
  projects/sv/sys/netinet6/in6_ifattach.c
  projects/sv/sys/netinet6/sctp6_usrreq.c
  projects/sv/sys/nfs/nfs_lock.c
  projects/sv/sys/nfs/nfs_mountcommon.h
  projects/sv/sys/nfsclient/nfs_vfsops.c
  projects/sv/sys/nfsclient/nfsmount.h
  projects/sv/sys/nfsserver/nfs.h
  projects/sv/sys/nfsserver/nfs_serv.c
  projects/sv/sys/nfsserver/nfs_srvsubs.c
  projects/sv/sys/nlm/nlm_advlock.c
  projects/sv/sys/nlm/nlm_prot_impl.c
  projects/sv/sys/pc98/pc98/machdep.c
  projects/sv/sys/powerpc/aim/nexus.c
  projects/sv/sys/powerpc/aim/vm_machdep.c
  projects/sv/sys/powerpc/conf/GENERIC64
  projects/sv/sys/powerpc/conf/NOTES
  projects/sv/sys/powerpc/cpufreq/dfs.c
  projects/sv/sys/powerpc/cpufreq/pcr.c
  projects/sv/sys/powerpc/include/_limits.h
  projects/sv/sys/powerpc/include/elf.h
  projects/sv/sys/powerpc/include/pte.h
  projects/sv/sys/powerpc/ofw/ofw_real.c
  projects/sv/sys/powerpc/powermac/macgpio.c
  projects/sv/sys/powerpc/powermac/uninorth.c
  projects/sv/sys/powerpc/powerpc/intr_machdep.c
  projects/sv/sys/sparc64/include/asmacros.h
  projects/sv/sys/sparc64/include/cpufunc.h
  projects/sv/sys/sparc64/include/elf.h
  projects/sv/sys/sparc64/include/intr_machdep.h
  projects/sv/sys/sparc64/include/pmap.h
  projects/sv/sys/sparc64/include/tsb.h
  projects/sv/sys/sparc64/include/vmparam.h
  projects/sv/sys/sparc64/pci/apb.c
  projects/sv/sys/sparc64/pci/fire.c
  projects/sv/sys/sparc64/pci/ofw_pcib.c
  projects/sv/sys/sparc64/pci/psycho.c
  projects/sv/sys/sparc64/pci/schizo.c
  projects/sv/sys/sparc64/sbus/sbus.c
  projects/sv/sys/sparc64/sparc64/exception.S
  projects/sv/sys/sparc64/sparc64/genassym.c
  projects/sv/sys/sparc64/sparc64/intr_machdep.c
  projects/sv/sys/sparc64/sparc64/mp_machdep.c
  projects/sv/sys/sparc64/sparc64/pmap.c
  projects/sv/sys/sparc64/sparc64/support.S
  projects/sv/sys/sparc64/sparc64/tick.c
  projects/sv/sys/sparc64/sparc64/tlb.c
  projects/sv/sys/sparc64/sparc64/tsb.c
  projects/sv/sys/sun4v/include/elf.h
  projects/sv/sys/sys/_umtx.h
  projects/sv/sys/sys/bus.h
  projects/sv/sys/sys/copyright.h
  projects/sv/sys/sys/mount.h
  projects/sv/sys/sys/param.h
  projects/sv/sys/sys/priority.h
  projects/sv/sys/sys/sched.h
  projects/sv/sys/sys/umtx.h
  projects/sv/sys/ufs/ffs/ffs_alloc.c
  projects/sv/sys/ufs/ffs/ffs_softdep.c
  projects/sv/sys/ufs/ffs/ffs_vfsops.c
  projects/sv/sys/ufs/ffs/fs.h
  projects/sv/sys/ufs/ffs/softdep.h
  projects/sv/sys/ufs/ufs/ufs_inode.c
  projects/sv/sys/ufs/ufs/ufs_vnops.c
  projects/sv/sys/ufs/ufs/ufsmount.h
  projects/sv/sys/vm/swap_pager.c
  projects/sv/sys/vm/vm_contig.c
  projects/sv/sys/vm/vm_extern.h
  projects/sv/sys/vm/vm_fault.c
  projects/sv/sys/vm/vm_object.c
  projects/sv/sys/vm/vm_object.h
  projects/sv/sys/vm/vm_page.c
  projects/sv/sys/vm/vm_pageout.c
  projects/sv/sys/x86/x86/io_apic.c
  projects/sv/sys/xen/evtchn/evtchn.c
  projects/sv/tools/regression/acct/Makefile
  projects/sv/tools/regression/acct/pack.c
  projects/sv/tools/regression/acct/regress.t
  projects/sv/tools/regression/bin/sh/expansion/plus-minus1.0
  projects/sv/tools/regression/usr.bin/sed/Makefile
  projects/sv/tools/tools/nanobsd/gateworks/common
  projects/sv/tools/tools/nanobsd/nanobsd.sh
  projects/sv/usr.bin/ar/ar.1
  projects/sv/usr.bin/c89/c89.1
  projects/sv/usr.bin/c99/c99.1
  projects/sv/usr.bin/calendar/calendar.1
  projects/sv/usr.bin/calendar/calendar.h
  projects/sv/usr.bin/calendar/calendars/calendar.freebsd
  projects/sv/usr.bin/calendar/parsedata.c
  projects/sv/usr.bin/gcore/gcore.1
  projects/sv/usr.bin/lock/lock.c
  projects/sv/usr.bin/mail/mail.1
  projects/sv/usr.bin/printf/printf.c
  projects/sv/usr.bin/sed/main.c
  projects/sv/usr.bin/tar/bsdtar.1
  projects/sv/usr.bin/xlint/Makefile.inc
  projects/sv/usr.sbin/Makefile.mips
  projects/sv/usr.sbin/ancontrol/ancontrol.8
  projects/sv/usr.sbin/cpucontrol/cpucontrol.c
  projects/sv/usr.sbin/fwcontrol/fwdv.c
  projects/sv/usr.sbin/fwcontrol/fwmpegts.c
  projects/sv/usr.sbin/newsyslog/newsyslog.c
  projects/sv/usr.sbin/pkg_install/add/main.c
  projects/sv/usr.sbin/rtadvd/Makefile
  projects/sv/usr.sbin/rtadvd/rtadvd.8
  projects/sv/usr.sbin/rtadvd/rtadvd.c
  projects/sv/usr.sbin/rtprio/rtprio.c
  projects/sv/usr.sbin/sysinstall/devices.c
  projects/sv/usr.sbin/sysinstall/menus.c
Directory Properties:
  projects/sv/   (props changed)
  projects/sv/cddl/contrib/opensolaris/   (props changed)
  projects/sv/contrib/bind9/   (props changed)
  projects/sv/contrib/binutils/   (props changed)
  projects/sv/contrib/bzip2/   (props changed)
  projects/sv/contrib/ee/   (props changed)
  projects/sv/contrib/expat/   (props changed)
  projects/sv/contrib/file/   (props changed)
  projects/sv/contrib/gdb/   (props changed)
  projects/sv/contrib/gdtoa/   (props changed)
  projects/sv/contrib/gnu-sort/   (props changed)
  projects/sv/contrib/groff/   (props changed)
  projects/sv/contrib/less/   (props changed)
  projects/sv/contrib/libpcap/   (props changed)
  projects/sv/contrib/llvm/   (props changed)
  projects/sv/contrib/llvm/tools/clang/   (props changed)
  projects/sv/contrib/ncurses/   (props changed)
  projects/sv/contrib/netcat/   (props changed)
  projects/sv/contrib/ntp/   (props changed)
  projects/sv/contrib/one-true-awk/   (props changed)
  projects/sv/contrib/openbsm/   (props changed)
  projects/sv/contrib/openpam/   (props changed)
  projects/sv/contrib/pf/   (props changed)
  projects/sv/contrib/sendmail/   (props changed)
  projects/sv/contrib/tcpdump/   (props changed)
  projects/sv/contrib/tcsh/   (props changed)
  projects/sv/contrib/top/   (props changed)
  projects/sv/contrib/top/install-sh   (props changed)
  projects/sv/contrib/tzcode/stdtime/   (props changed)
  projects/sv/contrib/tzcode/zic/   (props changed)
  projects/sv/contrib/tzdata/   (props changed)
  projects/sv/contrib/wpa/   (props changed)
  projects/sv/contrib/xz/   (props changed)
  projects/sv/crypto/openssh/   (props changed)
  projects/sv/crypto/openssl/   (props changed)
  projects/sv/lib/libc/   (props changed)
  projects/sv/lib/libc/stdtime/   (props changed)
  projects/sv/lib/libutil/   (props changed)
  projects/sv/lib/libz/   (props changed)
  projects/sv/sbin/   (props changed)
  projects/sv/sbin/ipfw/   (props changed)
  projects/sv/share/mk/bsd.arch.inc.mk   (props changed)
  projects/sv/share/zoneinfo/   (props changed)
  projects/sv/sys/   (props changed)
  projects/sv/sys/amd64/include/xen/   (props changed)
  projects/sv/sys/cddl/contrib/opensolaris/   (props changed)
  projects/sv/sys/contrib/dev/acpica/   (props changed)
  projects/sv/sys/contrib/octeon-sdk/   (props changed)
  projects/sv/sys/contrib/pf/   (props changed)
  projects/sv/sys/contrib/x86emu/   (props changed)
  projects/sv/usr.bin/calendar/   (props changed)
  projects/sv/usr.bin/csup/   (props changed)
  projects/sv/usr.bin/procstat/   (props changed)
  projects/sv/usr.sbin/zic/   (props changed)

Modified: projects/sv/COPYRIGHT
==============================================================================
--- projects/sv/COPYRIGHT	Sat Jan  8 01:11:14 2011	(r217137)
+++ projects/sv/COPYRIGHT	Sat Jan  8 01:15:32 2011	(r217138)
@@ -4,7 +4,7 @@
 The compilation of software known as FreeBSD is distributed under the
 following terms:
 
-Copyright (c) 1992-2010 The FreeBSD Project. All rights reserved.
+Copyright (c) 1992-2011 The FreeBSD Project. All rights reserved.
 
 Redistribution and use in source and binary forms, with or without
 modification, are permitted provided that the following conditions

Modified: projects/sv/Makefile
==============================================================================
--- projects/sv/Makefile	Sat Jan  8 01:11:14 2011	(r217137)
+++ projects/sv/Makefile	Sat Jan  8 01:15:32 2011	(r217138)
@@ -26,6 +26,7 @@
 # delete-old-dirs     - Delete obsolete directories.
 # delete-old-files    - Delete obsolete files.
 # delete-old-libs     - Delete obsolete libraries.
+# targets             - Print a list of supported TARGET/TARGET_ARCH pairs.
 #
 # This makefile is simple by design. The FreeBSD make automatically reads
 # the /usr/share/mk/sys.mk unless the -m argument is specified on the
@@ -280,10 +281,10 @@ tinderbox:
 # with a reasonable chance of success, regardless of how old your
 # existing system is.
 #
-.if make(universe) || make(universe_kernels) || make(tinderbox)
+.if make(universe) || make(universe_kernels) || make(tinderbox) || make(targets)
 TARGETS?=amd64 arm i386 ia64 mips pc98 powerpc sparc64 sun4v
 TARGET_ARCHES_arm?=	arm armeb
-TARGET_ARCHES_mips?=	mipsel mipseb
+TARGET_ARCHES_mips?=	mipsel mipseb mips64el mips64eb
 TARGET_ARCHES_powerpc?=	powerpc powerpc64
 TARGET_ARCHES_pc98?=	i386
 TARGET_ARCHES_sun4v?=	sparc64
@@ -291,6 +292,14 @@ TARGET_ARCHES_sun4v?=	sparc64
 TARGET_ARCHES_${target}?= ${target}
 .endfor
 
+targets:
+	@echo "Supported TARGET/TARGET_ARCH pairs"
+.for target in ${TARGETS}
+.for target_arch in ${TARGET_ARCHES_${target}}
+	@echo "    ${target}/${target_arch}"
+.endfor
+.endfor
+
 .if defined(DOING_TINDERBOX)
 FAILFILE=tinderbox.failed
 MAKEFAIL=tee -a ${FAILFILE}
@@ -350,8 +359,11 @@ KERNCONFS!=	cd ${.CURDIR}/sys/${TARGET}/
 universe_kernconfs:
 .for kernel in ${KERNCONFS}
 TARGET_ARCH_${kernel}!=	cd ${.CURDIR}/sys/${TARGET}/conf && \
-			config -m ${.CURDIR}/sys/${TARGET}/conf/${kernel} | \
-			cut -f 2
+	config -m ${.CURDIR}/sys/${TARGET}/conf/${kernel} 2> /dev/null | \
+	grep -v WARNING: | cut -f 2
+.if empty(TARGET_ARCH_${kernel})
+.error "Target architecture for ${TARGET}/conf/${kernel} unknown.  config(8) likely too old."
+.endif
 universe_kernconfs: universe_kernconf_${TARGET}_${kernel}
 universe_kernconf_${TARGET}_${kernel}:
 	@(cd ${.CURDIR} && env __MAKE_CONF=/dev/null \

Modified: projects/sv/Makefile.inc1
==============================================================================
--- projects/sv/Makefile.inc1	Sat Jan  8 01:11:14 2011	(r217137)
+++ projects/sv/Makefile.inc1	Sat Jan  8 01:15:32 2011	(r217138)
@@ -121,7 +121,7 @@ VERSION+=	${OSRELDATE}
 TARGET_ARCH=	${TARGET:S/pc98/i386/:S/sun4v/sparc64/:S/mips/mipsel/}
 .elif !defined(TARGET) && defined(TARGET_ARCH) && \
     ${TARGET_ARCH} != ${MACHINE_ARCH}
-TARGET=		${TARGET_ARCH:C/mipse[lb]/mips/:C/armeb/arm/}
+TARGET=		${TARGET_ARCH:C/mips.*e[lb]/mips/:C/armeb/arm/}
 .endif
 # Legacy names, for a transition period mips:mips -> mipsel:mips
 .if defined(TARGET) && defined(TARGET_ARCH) && \
@@ -142,7 +142,7 @@ TARGET_ARCH=armeb
 TARGET?=	${MACHINE}
 TARGET_ARCH?=	${MACHINE_ARCH}
 
-KNOWN_ARCHES?=	amd64 arm armeb/arm i386 i386/pc98 ia64 mipsel/mips mipseb/mips powerpc powerpc64/powerpc sparc64 sparc64/sun4v
+KNOWN_ARCHES?=	amd64 arm armeb/arm i386 i386/pc98 ia64 mipsel/mips mipseb/mips mips64el/mips mips64eb/mips mipsn32el/mips mipsn32eb/mips powerpc powerpc64/powerpc sparc64 sparc64/sun4v
 .if ${TARGET} == ${TARGET_ARCH}
 _t=		${TARGET}
 .else

Modified: projects/sv/Makefile.mips
==============================================================================
--- projects/sv/Makefile.mips	Sat Jan  8 01:11:14 2011	(r217137)
+++ projects/sv/Makefile.mips	Sat Jan  8 01:15:32 2011	(r217138)
@@ -1,5 +1,5 @@
 # $FreeBSD$
 
-.if defined(TARGET_ABI) && ${TARGET_ABI} == "n64"
+.if ${MACHINE_ARCH} != "mipsel" && ${MACHINE_ARCH} != "mipseb"
 MK_RESCUE=no
 .endif

Modified: projects/sv/UPDATING
==============================================================================
--- projects/sv/UPDATING	Sat Jan  8 01:11:14 2011	(r217137)
+++ projects/sv/UPDATING	Sat Jan  8 01:15:32 2011	(r217138)
@@ -22,6 +22,27 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 9.
 	machines to maximize performance.  (To disable malloc debugging, run
 	ln -s aj /etc/malloc.conf.)
 
+20110103:
+	If you are trying to run make universe on a -stable system, and you get
+	the following warning:
+"Makefile", line 356: "Target architecture for i386/conf/GENERIC unknown.  config(8) likely too old."
+	or something similar to it, then you must upgrade your -stable system
+	to 8.2-Release or newer (really, any time after r210146 7/15/2010 in
+	stable/8) or build the config from the latest stable/8 branch and
+	install it on your system.
+
+	Prior to this date, building a current universe on 8-stable system from
+	between 7/15/2010 and 1/2/2011 would result in a weird shell parsing
+	error in the first kernel build phase.  A new config on those old systems
+	will fix that problem for older versions of -current.
+
+20101228:
+	The TCP stack has been modified to allow Khelp modules to interact with
+	it via helper hook points and store per-connection data in the TCP
+	control block. Bump __FreeBSD_version to 900029. User space tools that
+	rely on the size of struct tcpcb in tcp_var.h (e.g. sockstat) need to
+	be recompiled.
+
 20101114:
 	Generic IEEE 802.3 annex 31B full duplex flow control support has been
 	added to mii(4) and bge(4), bce(4), msk(4), nfe(4) and stge(4) along

Modified: projects/sv/bin/kill/kill.1
==============================================================================
--- projects/sv/bin/kill/kill.1	Sat Jan  8 01:11:14 2011	(r217137)
+++ projects/sv/bin/kill/kill.1	Sat Jan  8 01:15:32 2011	(r217138)
@@ -134,6 +134,7 @@ Terminate the process group with PGID 11
 .Xr csh 1 ,
 .Xr killall 1 ,
 .Xr ps 1 ,
+.Xr sh 1 ,
 .Xr kill 2 ,
 .Xr sigaction 2
 .Sh STANDARDS

Modified: projects/sv/bin/kill/kill.c
==============================================================================
--- projects/sv/bin/kill/kill.c	Sat Jan  8 01:11:14 2011	(r217137)
+++ projects/sv/bin/kill/kill.c	Sat Jan  8 01:15:32 2011	(r217138)
@@ -49,6 +49,12 @@ __FBSDID("$FreeBSD$");
 #include <stdlib.h>
 #include <string.h>
 
+#ifdef SHELL
+#define main killcmd
+#include "bltin/bltin.h"
+#include "error.h"
+#endif
+
 static void nosig(const char *);
 static void printsignals(FILE *);
 static int signame_to_signum(const char *);
@@ -75,16 +81,16 @@ main(int argc, char *argv[])
 				usage();
 			numsig = strtol(*argv, &ep, 10);
 			if (!**argv || *ep)
-				errx(1, "illegal signal number: %s", *argv);
+				errx(2, "illegal signal number: %s", *argv);
 			if (numsig >= 128)
 				numsig -= 128;
 			if (numsig <= 0 || numsig >= sys_nsig)
 				nosig(*argv);
 			printf("%s\n", sys_signame[numsig]);
-			exit(0);
+			return (0);
 		}
 		printsignals(stdout);
-		exit(0);
+		return (0);
 	}
 
 	if (!strcmp(*argv, "-s")) {
@@ -107,7 +113,7 @@ main(int argc, char *argv[])
 		} else if (isdigit(**argv)) {
 			numsig = strtol(*argv, &ep, 10);
 			if (!**argv || *ep)
-				errx(1, "illegal signal number: %s", *argv);
+				errx(2, "illegal signal number: %s", *argv);
 			if (numsig < 0)
 				nosig(*argv);
 		} else
@@ -122,16 +128,23 @@ main(int argc, char *argv[])
 		usage();
 
 	for (errors = 0; argc; argc--, argv++) {
-		pid = strtol(*argv, &ep, 10);
-		if (!**argv || *ep)
-			errx(1, "illegal process id: %s", *argv);
-		else if (kill(pid, numsig) == -1) {
+#ifdef SHELL
+		if (**argv == '%')
+			pid = getjobpgrp(*argv);
+		else
+#endif
+		{
+			pid = strtol(*argv, &ep, 10);
+			if (!**argv || *ep)
+				errx(2, "illegal process id: %s", *argv);
+		}
+		if (kill(pid, numsig) == -1) {
 			warn("%s", *argv);
 			errors = 1;
 		}
 	}
 
-	exit(errors);
+	return (errors);
 }
 
 static int
@@ -154,7 +167,11 @@ nosig(const char *name)
 
 	warnx("unknown signal %s; valid signals:", name);
 	printsignals(stderr);
-	exit(1);
+#ifdef SHELL
+	error(NULL);
+#else
+	exit(2);
+#endif
 }
 
 static void
@@ -180,5 +197,9 @@ usage(void)
 		"       kill -l [exit_status]",
 		"       kill -signal_name pid ...",
 		"       kill -signal_number pid ...");
-	exit(1);
+#ifdef SHELL
+	error(NULL);
+#else
+	exit(2);
+#endif
 }

Modified: projects/sv/bin/setfacl/setfacl.c
==============================================================================
--- projects/sv/bin/setfacl/setfacl.c	Sat Jan  8 01:11:14 2011	(r217137)
+++ projects/sv/bin/setfacl/setfacl.c	Sat Jan  8 01:15:32 2011	(r217138)
@@ -201,12 +201,14 @@ main(int argc, char *argv[])
 
 		if (stat(file->filename, &sb) == -1) {
 			warn("%s: stat() failed", file->filename);
+			carried_error++;
 			continue;
 		}
 
 		if (acl_type == ACL_TYPE_DEFAULT && S_ISDIR(sb.st_mode) == 0) {
 			warnx("%s: default ACL may only be set on a directory",
 			    file->filename);
+			carried_error++;
 			continue;
 		}
 
@@ -218,6 +220,7 @@ main(int argc, char *argv[])
 			if (acl_type == ACL_TYPE_DEFAULT) {
 				warnx("%s: there are no default entries "
 			           "in NFSv4 ACLs", file->filename);
+				carried_error++;
 				continue;
 			}
 			acl_type = ACL_TYPE_NFS4;
@@ -240,6 +243,7 @@ main(int argc, char *argv[])
 			else
 				warn("%s: acl_get_file() failed",
 				    file->filename);
+			carried_error++;
 			continue;
 		}
 

Modified: projects/sv/bin/sh/Makefile
==============================================================================
--- projects/sv/bin/sh/Makefile	Sat Jan  8 01:11:14 2011	(r217137)
+++ projects/sv/bin/sh/Makefile	Sat Jan  8 01:15:32 2011	(r217138)
@@ -4,7 +4,7 @@
 PROG=	sh
 INSTALLFLAGS= -S
 SHSRCS=	alias.c arith.y arith_lex.l cd.c echo.c error.c eval.c exec.c expand.c \
-	histedit.c input.c jobs.c mail.c main.c memalloc.c miscbltin.c \
+	histedit.c input.c jobs.c kill.c mail.c main.c memalloc.c miscbltin.c \
 	mystring.c options.c output.c parser.c printf.c redir.c show.c \
 	test.c trap.c var.c
 GENSRCS= builtins.c init.c nodes.c syntax.c
@@ -26,6 +26,7 @@ WARNS?=	2
 WFORMAT=0
 
 .PATH:	${.CURDIR}/bltin \
+	${.CURDIR}/../kill \
 	${.CURDIR}/../test \
 	${.CURDIR}/../../usr.bin/printf
 

Modified: projects/sv/bin/sh/alias.c
==============================================================================
--- projects/sv/bin/sh/alias.c	Sat Jan  8 01:11:14 2011	(r217137)
+++ projects/sv/bin/sh/alias.c	Sat Jan  8 01:15:32 2011	(r217138)
@@ -246,7 +246,7 @@ aliascmd(int argc, char **argv)
 	while ((n = *++argv) != NULL) {
 		if ((v = strchr(n+1, '=')) == NULL) /* n+1: funny ksh stuff */
 			if ((ap = lookupalias(n, 0)) == NULL) {
-				outfmt(out2, "alias: %s not found\n", n);
+				warning("%s not found", n);
 				ret = 1;
 			} else
 				printalias(ap);

Modified: projects/sv/bin/sh/bltin/bltin.h
==============================================================================
--- projects/sv/bin/sh/bltin/bltin.h	Sat Jan  8 01:11:14 2011	(r217137)
+++ projects/sv/bin/sh/bltin/bltin.h	Sat Jan  8 01:15:32 2011	(r217138)
@@ -43,6 +43,7 @@
 #include "../mystring.h"
 #ifdef SHELL
 #include "../output.h"
+#define FILE struct output
 #undef stdout
 #define stdout out1
 #undef stderr
@@ -57,11 +58,8 @@
 #define fwrite(ptr, size, nmemb, file) outbin(ptr, (size) * (nmemb), file)
 #define fflush flushout
 #define INITARGS(argv)
-#define warnx(...) do {					\
-	out2fmt_flush("%s: ", commandname);		\
-	out2fmt_flush(__VA_ARGS__);			\
-	out2fmt_flush("\n");				\
-	} while (0)
+#define warnx warning
+#define warn(fmt, ...) warning(fmt ": %s", __VA_ARGS__, strerror(errno))
 #define errx(exitstatus, ...) error(__VA_ARGS__)
 
 #else
@@ -71,8 +69,11 @@
 #define INITARGS(argv)	if ((commandname = argv[0]) == NULL) {fputs("Argc is zero\n", stderr); exit(2);} else
 #endif
 
+#include <unistd.h>
+
 pointer stalloc(int);
 void error(const char *, ...) __printf0like(1, 2);
+pid_t getjobpgrp(char *);
 
 int echocmd(int, char **);
 int testcmd(int, char **);

Modified: projects/sv/bin/sh/builtins.def
==============================================================================
--- projects/sv/bin/sh/builtins.def	Sat Jan  8 01:11:14 2011	(r217137)
+++ projects/sv/bin/sh/builtins.def	Sat Jan  8 01:15:32 2011	(r217138)
@@ -70,6 +70,7 @@ hashcmd		hash
 histcmd -h	fc
 jobidcmd	jobid
 jobscmd		jobs
+killcmd		kill
 localcmd	local
 printfcmd	printf
 pwdcmd		pwd

Modified: projects/sv/bin/sh/cd.c
==============================================================================
--- projects/sv/bin/sh/cd.c	Sat Jan  8 01:11:14 2011	(r217137)
+++ projects/sv/bin/sh/cd.c	Sat Jan  8 01:15:32 2011	(r217138)
@@ -224,7 +224,7 @@ cdphysical(char *dest)
 	}
 	p = findcwd(NULL);
 	if (p == NULL)
-		out2fmt_flush("cd: warning: failed to get name of current directory\n");
+		warning("warning: failed to get name of current directory");
 	updatepwd(p);
 	INTON;
 	return (0);

Modified: projects/sv/bin/sh/error.c
==============================================================================
--- projects/sv/bin/sh/error.c	Sat Jan  8 01:11:14 2011	(r217137)
+++ projects/sv/bin/sh/error.c	Sat Jan  8 01:15:32 2011	(r217138)
@@ -134,6 +134,26 @@ onint(void)
 }
 
 
+static void
+vwarning(const char *msg, va_list ap)
+{
+	if (commandname)
+		outfmt(out2, "%s: ", commandname);
+	doformat(out2, msg, ap);
+	out2fmt_flush("\n");
+}
+
+
+void
+warning(const char *msg, ...)
+{
+	va_list ap;
+	va_start(ap, msg);
+	vwarning(msg, ap);
+	va_end(ap);
+}
+
+
 /*
  * Exverror is called to raise the error exception.  If the first argument
  * is not NULL then error prints an error message using printf style
@@ -158,12 +178,8 @@ exverror(int cond, const char *msg, va_l
 	else
 		TRACE(("exverror(%d, NULL) pid=%d\n", cond, getpid()));
 #endif
-	if (msg) {
-		if (commandname)
-			outfmt(out2, "%s: ", commandname);
-		doformat(out2, msg, ap);
-		out2c('\n');
-	}
+	if (msg)
+		vwarning(msg, ap);
 	flushall();
 	exraise(cond);
 }

Modified: projects/sv/bin/sh/error.h
==============================================================================
--- projects/sv/bin/sh/error.h	Sat Jan  8 01:11:14 2011	(r217137)
+++ projects/sv/bin/sh/error.h	Sat Jan  8 01:15:32 2011	(r217138)
@@ -80,6 +80,7 @@ extern volatile sig_atomic_t intpending;
 
 void exraise(int) __dead2;
 void onint(void);
+void warning(const char *, ...) __printflike(1, 2);
 void error(const char *, ...) __printf0like(1, 2) __dead2;
 void exerror(int, const char *, ...) __printf0like(2, 3) __dead2;
 

Modified: projects/sv/bin/sh/eval.c
==============================================================================
--- projects/sv/bin/sh/eval.c	Sat Jan  8 01:11:14 2011	(r217137)
+++ projects/sv/bin/sh/eval.c	Sat Jan  8 01:15:32 2011	(r217138)
@@ -94,6 +94,7 @@ static void evalsubshell(union node *, i
 static void evalredir(union node *, int);
 static void expredir(union node *);
 static void evalpipe(union node *);
+static int is_valid_fast_cmdsubst(union node *n);
 static void evalcommand(union node *, int, struct backcmd *);
 static void prehash(union node *);
 
@@ -565,6 +566,19 @@ evalpipe(union node *n)
 
 
 
+static int
+is_valid_fast_cmdsubst(union node *n)
+{
+	union node *argp;
+
+	if (n->type != NCMD)
+		return 0;
+	for (argp = n->ncmd.args ; argp ; argp = argp->narg.next)
+		if (expandhassideeffects(argp->narg.text))
+			return 0;
+	return 1;
+}
+
 /*
  * Execute a command inside back quotes.  If it's a builtin command, we
  * want to save its output in a block obtained from malloc.  Otherwise
@@ -578,6 +592,8 @@ evalbackcmd(union node *n, struct backcm
 	int pip[2];
 	struct job *jp;
 	struct stackmark smark;		/* unnecessary */
+	struct jmploc jmploc;
+	struct jmploc *savehandler;
 
 	setstackmark(&smark);
 	result->fd = -1;
@@ -588,9 +604,21 @@ evalbackcmd(union node *n, struct backcm
 		exitstatus = 0;
 		goto out;
 	}
-	if (n->type == NCMD) {
+	if (is_valid_fast_cmdsubst(n)) {
 		exitstatus = oexitstatus;
-		evalcommand(n, EV_BACKCMD, result);
+		savehandler = handler;
+		if (setjmp(jmploc.loc)) {
+			if (exception == EXERROR || exception == EXEXEC)
+				exitstatus = 2;
+			else if (exception != 0) {
+				handler = savehandler;
+				longjmp(handler->loc, 1);
+			}
+		} else {
+			handler = &jmploc;
+			evalcommand(n, EV_BACKCMD, result);
+		}
+		handler = savehandler;
 	} else {
 		exitstatus = 0;
 		if (pipe(pip) < 0)
@@ -615,10 +643,35 @@ out:
 		result->fd, result->buf, result->nleft, result->jp));
 }
 
-
+/*
+ * Check if a builtin can safely be executed in the same process,
+ * even though it should be in a subshell (command substitution).
+ * Note that jobid, jobs, times and trap can show information not
+ * available in a child process; this is deliberate.
+ * The arguments should already have been expanded.
+ */
+static int
+safe_builtin(int idx, int argc, char **argv)
+{
+	if (idx == BLTINCMD || idx == COMMANDCMD || idx == ECHOCMD ||
+	    idx == FALSECMD || idx == JOBIDCMD || idx == JOBSCMD ||
+	    idx == KILLCMD || idx == PRINTFCMD || idx == PWDCMD ||
+	    idx == TESTCMD || idx == TIMESCMD || idx == TRUECMD ||
+	    idx == TYPECMD)
+		return (1);
+	if (idx == EXPORTCMD || idx == TRAPCMD || idx == ULIMITCMD ||
+	    idx == UMASKCMD)
+		return (argc <= 1 || (argc == 2 && argv[1][0] == '-'));
+	if (idx == SETCMD)
+		return (argc <= 1 || (argc == 2 && (argv[1][0] == '-' ||
+		    argv[1][0] == '+') && argv[1][1] == 'o' &&
+		    argv[1][2] == '\0'));
+	return (0);
+}
 
 /*
  * Execute a simple command.
+ * Note: This may or may not return if (flags & EV_EXIT).
  */
 
 static void
@@ -655,6 +708,7 @@ evalcommand(union node *cmd, int flags, 
 	arglist.lastp = &arglist.list;
 	varlist.lastp = &varlist.list;
 	varflag = 1;
+	jp = NULL;
 	do_clearcmdentry = 0;
 	oexitstatus = exitstatus;
 	exitstatus = 0;
@@ -833,10 +887,8 @@ evalcommand(union node *cmd, int flags, 
 	 || ((cmdentry.cmdtype == CMDNORMAL || cmdentry.cmdtype == CMDUNKNOWN)
 	    && ((flags & EV_EXIT) == 0 || have_traps()))
 	 || ((flags & EV_BACKCMD) != 0
-	    && (cmdentry.cmdtype != CMDBUILTIN
-		 || cmdentry.u.index == CDCMD
-		 || cmdentry.u.index == DOTCMD
-		 || cmdentry.u.index == EVALCMD))) {
+	    && (cmdentry.cmdtype != CMDBUILTIN ||
+		 !safe_builtin(cmdentry.u.index, argc, argv)))) {
 		jp = makejob(cmd, 1);
 		mode = cmd->ncmd.backgnd;
 		if (flags & EV_BACKCMD) {
@@ -915,7 +967,7 @@ evalcommand(union node *cmd, int flags, 
 			evalskip = 0;
 			skipcount = 0;
 		}
-		if (flags & EV_EXIT)
+		if (jp)
 			exitshell(exitstatus);
 	} else if (cmdentry.cmdtype == CMDBUILTIN) {
 #ifdef DEBUG
@@ -947,8 +999,7 @@ evalcommand(union node *cmd, int flags, 
 		 */
 		if (argc == 0 && !(flags & EV_BACKCMD))
 			cmdentry.special = 1;
-		if (cmdentry.special)
-			listsetvar(cmdenviron);
+		listsetvar(cmdenviron, cmdentry.special ? 0 : VNOSET);
 		if (argc > 0)
 			bltinsetlocale();
 		commandname = argv[0];
@@ -964,13 +1015,12 @@ cmddone:
 		out1 = &output;
 		out2 = &errout;
 		freestdout();
+		handler = savehandler;
 		if (e != EXSHELLPROC) {
 			commandname = savecmdname;
-			if (flags & EV_EXIT) {
+			if (jp)
 				exitshell(exitstatus);
-			}
 		}
-		handler = savehandler;
 		if (flags == EV_BACKCMD) {
 			backcmd->buf = memout.buf;
 			backcmd->nleft = memout.nextc - memout.buf;

Modified: projects/sv/bin/sh/exec.c
==============================================================================
--- projects/sv/bin/sh/exec.c	Sat Jan  8 01:11:14 2011	(r217137)
+++ projects/sv/bin/sh/exec.c	Sat Jan  8 01:15:32 2011	(r217138)
@@ -190,9 +190,8 @@ padvance(const char **path, const char *
 	for (p = start; *p && *p != ':' && *p != '%'; p++)
 		; /* nothing */
 	len = p - start + strlen(name) + 2;	/* "2" is for '/' and '\0' */
-	while (stackblocksize() < len)
-		growstackblock();
-	q = stackblock();
+	STARTSTACKSTR(q);
+	CHECKSTRSPACE(len, q);
 	if (p != start) {
 		memcpy(q, start, p - start);
 		q += p - start;

Modified: projects/sv/bin/sh/expand.c
==============================================================================
--- projects/sv/bin/sh/expand.c	Sat Jan  8 01:11:14 2011	(r217137)
+++ projects/sv/bin/sh/expand.c	Sat Jan  8 01:15:32 2011	(r217138)
@@ -502,13 +502,14 @@ expbackq(union node *cmd, int quoted, in
 			if (lastc == '\n') {
 				nnl++;
 			} else {
+				CHECKSTRSPACE(nnl + 2, dest);
 				while (nnl > 0) {
 					nnl--;
-					STPUTC('\n', dest);
+					USTPUTC('\n', dest);
 				}
 				if (quotes && syntax[(int)lastc] == CCTL)
-					STPUTC(CTLESC, dest);
-				STPUTC(lastc, dest);
+					USTPUTC(CTLESC, dest);
+				USTPUTC(lastc, dest);
 			}
 		}
 	}
@@ -1569,6 +1570,78 @@ cvtnum(int num, char *buf)
 }
 
 /*
+ * Check statically if expanding a string may have side effects.
+ */
+int
+expandhassideeffects(const char *p)
+{
+	int c;
+	int arinest;
+
+	arinest = 0;
+	while ((c = *p++) != '\0') {
+		switch (c) {
+		case CTLESC:
+			p++;
+			break;
+		case CTLVAR:
+			c = *p++;
+			/* Expanding $! sets the job to remembered. */
+			if (*p == '!')
+				return 1;
+			if ((c & VSTYPE) == VSASSIGN)
+				return 1;
+			/*
+			 * If we are in arithmetic, the parameter may contain
+			 * '=' which may cause side effects. Exceptions are
+			 * the length of a parameter and $$, $# and $? which
+			 * are always numeric.
+			 */
+			if ((c & VSTYPE) == VSLENGTH) {
+				while (*p != '=')
+					p++;
+				p++;
+				break;
+			}
+			if ((*p == '$' || *p == '#' || *p == '?') &&
+			    p[1] == '=') {
+				p += 2;
+				break;
+			}
+			if (arinest > 0)
+				return 1;
+			break;
+		case CTLBACKQ:
+		case CTLBACKQ | CTLQUOTE:
+			if (arinest > 0)
+				return 1;
+			break;
+		case CTLARI:
+			arinest++;
+			break;
+		case CTLENDARI:
+			arinest--;
+			break;
+		case '=':
+			if (*p == '=') {
+				/* Allow '==' operator. */
+				p++;
+				continue;
+			}
+			if (arinest > 0)
+				return 1;
+			break;
+		case '!': case '<': case '>':
+			/* Allow '!=', '<=', '>=' operators. */
+			if (*p == '=')
+				p++;
+			break;
+		}
+	}
+	return 0;
+}
+
+/*
  * Do most of the work for wordexp(3).
  */
 

Modified: projects/sv/bin/sh/expand.h
==============================================================================
--- projects/sv/bin/sh/expand.h	Sat Jan  8 01:11:14 2011	(r217137)
+++ projects/sv/bin/sh/expand.h	Sat Jan  8 01:15:32 2011	(r217138)
@@ -63,4 +63,5 @@ void expari(int);
 int patmatch(const char *, const char *, int);
 void rmescapes(char *);
 int casematch(union node *, const char *);
+int expandhassideeffects(const char *);
 int wordexpcmd(int, char **);

Modified: projects/sv/bin/sh/histedit.c
==============================================================================
--- projects/sv/bin/sh/histedit.c	Sat Jan  8 01:11:14 2011	(r217137)
+++ projects/sv/bin/sh/histedit.c	Sat Jan  8 01:15:32 2011	(r217138)
@@ -232,6 +232,7 @@ histcmd(int argc, char **argv)
 		}
 	argc -= optind, argv += optind;
 
+	savehandler = handler;
 	/*
 	 * If executing...
 	 */
@@ -242,7 +243,6 @@ histcmd(int argc, char **argv)
 		 * Catch interrupts to reset active counter and
 		 * cleanup temp files.
 		 */
-		savehandler = handler;
 		if (setjmp(jmploc.loc)) {
 			active = 0;
 			if (editfile)
@@ -399,6 +399,7 @@ histcmd(int argc, char **argv)
 		--active;
 	if (displayhist)
 		displayhist = 0;
+	handler = savehandler;
 	return 0;
 }
 

Modified: projects/sv/bin/sh/jobs.c
==============================================================================
--- projects/sv/bin/sh/jobs.c	Sat Jan  8 01:11:14 2011	(r217137)
+++ projects/sv/bin/sh/jobs.c	Sat Jan  8 01:15:32 2011	(r217138)
@@ -632,6 +632,14 @@ currentjob:	if ((jp = getcurjob(NULL)) =
 }
 
 
+pid_t
+getjobpgrp(char *name)
+{
+	struct job *jp;
+
+	jp = getjob(name);
+	return -jp->ps[0].pid;
+}
 
 /*
  * Return a new job structure,

Modified: projects/sv/bin/sh/memalloc.c
==============================================================================
--- projects/sv/bin/sh/memalloc.c	Sat Jan  8 01:11:14 2011	(r217137)
+++ projects/sv/bin/sh/memalloc.c	Sat Jan  8 01:15:32 2011	(r217138)
@@ -127,7 +127,7 @@ static struct stack_block *stackp;
 static struct stackmark *markp;
 char *stacknxt;
 int stacknleft;
-int sstrnleft;
+char *sstrend;
 
 
 static void
@@ -146,6 +146,7 @@ stnewblock(int nbytes)
 	sp->prev = stackp;
 	stacknxt = SPACE(sp);
 	stacknleft = allocsize - (stacknxt - (char*)sp);
+	sstrend = stacknxt + stacknleft;
 	stackp = sp;
 	INTON;
 }
@@ -204,6 +205,7 @@ popstackmark(struct stackmark *mark)
 	}
 	stacknxt = mark->stacknxt;
 	stacknleft = mark->stacknleft;
+	sstrend = stacknxt + stacknleft;
 	INTON;
 }
 
@@ -218,8 +220,8 @@ popstackmark(struct stackmark *mark)
  * part of the block that has been used.
  */
 
-void
-growstackblock(void)
+static void
+growstackblock(int min)
 {
 	char *p;
 	int newlen;
@@ -229,8 +231,15 @@ growstackblock(void)
 	struct stack_block *oldstackp;
 	struct stackmark *xmark;
 
-	newlen = (stacknleft == 0) ? MINSIZE : stacknleft * 2 + 100;
-	newlen = ALIGN(newlen);
+	if (min < stacknleft)
+		min = stacknleft;
+	if (min >= INT_MAX / 2 - ALIGN(sizeof(struct stack_block)))
+		error("Out of space");
+	min += stacknleft;
+	min += ALIGN(sizeof(struct stack_block));
+	newlen = 512;
+	while (newlen < min)
+		newlen <<= 1;
 	oldspace = stacknxt;
 	oldlen = stacknleft;
 
@@ -243,6 +252,7 @@ growstackblock(void)
 		stackp = sp;
 		stacknxt = SPACE(sp);
 		stacknleft = newlen - (stacknxt - (char*)sp);
+		sstrend = stacknxt + stacknleft;
 
 		/*
 		 * Stack marks pointing to the start of the old block
@@ -257,6 +267,7 @@ growstackblock(void)
 		}
 		INTON;
 	} else {
+		newlen -= ALIGN(sizeof(struct stack_block));
 		p = stalloc(newlen);
 		if (oldlen != 0)
 			memcpy(p, oldspace, oldlen);
@@ -295,10 +306,9 @@ grabstackblock(int len)
  */
 
 static char *
-growstrstackblock(int n)
+growstrstackblock(int n, int min)
 {
-	growstackblock();
-	sstrnleft = stackblocksize() - n;
+	growstackblock(min);
 	return stackblock() + n;
 }
 
@@ -308,7 +318,7 @@ growstackstr(void)
 	int len;
 
 	len = stackblocksize();
-	return growstrstackblock(len);
+	return (growstrstackblock(len, 0));
 }
 
 
@@ -317,33 +327,21 @@ growstackstr(void)
  */
 
 char *
-makestrspace(void)
+makestrspace(int min, char *p)
 {
 	int len;
 
-	len = stackblocksize() - sstrnleft;
-	return growstrstackblock(len);
-}
-
-
-
-void
-ungrabstackstr(char *s, char *p)
-{
-	stacknleft += stacknxt - s;
-	stacknxt = s;
-	sstrnleft = stacknleft - (p - s);
+	len = p - stackblock();
+	return (growstrstackblock(len, min));
 }
 
 
 char *
 stputbin(const char *data, int len, char *p)
 {
-	int i;
-
-	for (i = 0; i < len; i++)
-		STPUTC(data[i], p);
-	return (p);
+	CHECKSTRSPACE(len, p);
+	memcpy(p, data, len);
+	return (p + len);
 }
 
 char *

Modified: projects/sv/bin/sh/memalloc.h
==============================================================================
--- projects/sv/bin/sh/memalloc.h	Sat Jan  8 01:11:14 2011	(r217137)
+++ projects/sv/bin/sh/memalloc.h	Sat Jan  8 01:15:32 2011	(r217138)
@@ -45,7 +45,7 @@ struct stackmark {
 
 extern char *stacknxt;
 extern int stacknleft;
-extern int sstrnleft;
+extern char *sstrend;
 
 pointer ckmalloc(size_t);
 pointer ckrealloc(pointer, int);
@@ -55,11 +55,9 @@ pointer stalloc(int);
 void stunalloc(pointer);
 void setstackmark(struct stackmark *);
 void popstackmark(struct stackmark *);
-void growstackblock(void);
 void grabstackblock(int);
 char *growstackstr(void);
-char *makestrspace(void);
-void ungrabstackstr(char *, char *);
+char *makestrspace(int, char *);
 char *stputbin(const char *data, int len, char *p);
 char *stputs(const char *data, char *p);
 
@@ -67,10 +65,10 @@ char *stputs(const char *data, char *p);
 
 #define stackblock() stacknxt
 #define stackblocksize() stacknleft
-#define STARTSTACKSTR(p)	p = stackblock(), sstrnleft = stackblocksize()
-#define STPUTC(c, p)	(--sstrnleft >= 0? (*p++ = (c)) : (p = growstackstr(), --sstrnleft, *p++ = (c)))
-#define CHECKSTRSPACE(n, p)	{ if (sstrnleft < n) p = makestrspace(); }
-#define USTPUTC(c, p)	(--sstrnleft, *p++ = (c))
+#define STARTSTACKSTR(p)	p = stackblock()
+#define STPUTC(c, p)	do { if (p == sstrend) p = growstackstr(); *p++ = (c); } while(0)
+#define CHECKSTRSPACE(n, p)	{ if (sstrend - p < n) p = makestrspace(n, p); }
+#define USTPUTC(c, p)	(*p++ = (c))
 /*
  * STACKSTRNUL's use is where we want to be able to turn a stack
  * (non-sentinel, character counting string) into a C string,
@@ -78,10 +76,11 @@ char *stputs(const char *data, char *p);
  * Note: Because of STACKSTRNUL's semantics, STACKSTRNUL cannot be used
  * on a stack that will grabstackstr()ed.
  */
-#define STACKSTRNUL(p)	(sstrnleft == 0? (p = growstackstr(), *p = '\0') : (*p = '\0'))
-#define STUNPUTC(p)	(++sstrnleft, --p)
+#define STACKSTRNUL(p)	(p == sstrend ? (p = growstackstr(), *p = '\0') : (*p = '\0'))
+#define STUNPUTC(p)	(--p)
 #define STTOPC(p)	p[-1]
-#define STADJUST(amount, p)	(p += (amount), sstrnleft -= (amount))
-#define grabstackstr(p)	stalloc(stackblocksize() - sstrnleft)
+#define STADJUST(amount, p)	(p += (amount))
+#define grabstackstr(p)	stalloc((char *)p - stackblock())
+#define ungrabstackstr(s, p)	stunalloc((s))
 #define STPUTBIN(s, len, p)	p = stputbin((s), (len), p)
 #define STPUTS(s, p)	p = stputs((s), p)

Modified: projects/sv/bin/sh/parser.c
==============================================================================
--- projects/sv/bin/sh/parser.c	Sat Jan  8 01:11:14 2011	(r217137)
+++ projects/sv/bin/sh/parser.c	Sat Jan  8 01:15:32 2011	(r217138)
@@ -1093,9 +1093,8 @@ done:
                 popfile();
 		tokpushback = 0;
 	}
-	while (stackblocksize() <= savelen)
-		growstackblock();
 	STARTSTACKSTR(out);
+	CHECKSTRSPACE(savelen + 1, out);
 	INTOFF;
 	if (str) {
 		memcpy(out, str, savelen);

Modified: projects/sv/bin/sh/redir.c
==============================================================================
--- projects/sv/bin/sh/redir.c	Sat Jan  8 01:11:14 2011	(r217137)
+++ projects/sv/bin/sh/redir.c	Sat Jan  8 01:15:32 2011	(r217138)
@@ -155,6 +155,7 @@ openredirect(union node *redir, char mem
 	int fd = redir->nfile.fd;
 	char *fname;
 	int f;
+	int e;
 
 	/*
 	 * We suppress interrupts so that we won't leave open file
@@ -173,7 +174,11 @@ openredirect(union node *redir, char mem
 			error("cannot open %s: %s", fname, strerror(errno));
 movefd:
 		if (f != fd) {
-			dup2(f, fd);
+			if (dup2(f, fd) == -1) {
+				e = errno;
+				close(f);
+				error("%d: %s", fd, strerror(e));
+			}
 			close(f);
 		}
 		break;

Modified: projects/sv/bin/sh/sh.1
==============================================================================
--- projects/sv/bin/sh/sh.1	Sat Jan  8 01:11:14 2011	(r217137)
+++ projects/sv/bin/sh/sh.1	Sat Jan  8 01:15:32 2011	(r217138)
@@ -32,7 +32,7 @@
 .\"	from: @(#)sh.1	8.6 (Berkeley) 5/4/95
 .\" $FreeBSD$
 .\"
-.Dd December 3, 2010
+.Dd December 21, 2010
 .Dt SH 1
 .Os
 .Sh NAME
@@ -456,9 +456,10 @@ would become
 Aliases provide a convenient way for naive users to
 create shorthands for commands without having to learn how
 to create functions with arguments.
-They can also be
-used to create lexically obscure code.
-This use is discouraged.
+Using aliases in scripts is discouraged
+because the command that defines them must be executed
+before the code that uses them is parsed.
+This is fragile and not portable.
 .Pp
 An alias name may be escaped in a command line, so that it is not
 replaced by its alias value, by using quoting characters within or
@@ -2049,6 +2050,10 @@ If the
 .Fl s
 option is specified, only the PIDs of the job commands are printed, one per
 line.
+.It Ic kill
+A built-in equivalent of
+.Xr kill 1
+that additionally supports sending signals to jobs.
 .It Ic local Oo Ar variable ... Oc Op Fl
 See the
 .Sx Functions
@@ -2477,6 +2482,7 @@ will return the argument.
 .Xr echo 1 ,
 .Xr ed 1 ,
 .Xr emacs 1 ,
+.Xr kill 1 ,
 .Xr printf 1 ,
 .Xr pwd 1 ,
 .Xr test 1 ,

Modified: projects/sv/bin/sh/trap.c
==============================================================================
--- projects/sv/bin/sh/trap.c	Sat Jan  8 01:11:14 2011	(r217137)
+++ projects/sv/bin/sh/trap.c	Sat Jan  8 01:15:32 2011	(r217138)
@@ -185,7 +185,7 @@ trapcmd(int argc, char **argv)
 	}
 	while (*argv) {
 		if ((signo = sigstring_to_signum(*argv)) == -1) {
-			out2fmt_flush("trap: bad signal %s\n", *argv);
+			warning("bad signal %s", *argv);

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


More information about the svn-src-projects mailing list