Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 12 Apr 2010 23:11:21 +0000 (UTC)
From:      Warner Losh <imp@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-user@freebsd.org
Subject:   svn commit: r206521 - in user/imp/tbemd: tools/build/mk tools/build/options tools/regression/aio/aiotest tools/regression/bin/sh/builtins tools/regression/bin/sh/errors tools/regression/bin/sh/expa...
Message-ID:  <201004122311.o3CNBLCN069266@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: imp
Date: Mon Apr 12 23:11:20 2010
New Revision: 206521
URL: http://svn.freebsd.org/changeset/base/206521

Log:
  merge from head, part 7 of many.

Added:
  user/imp/tbemd/tools/regression/bin/sh/builtins/command10.0
     - copied unchanged from r206514, head/tools/regression/bin/sh/builtins/command10.0
  user/imp/tbemd/tools/regression/bin/sh/builtins/command11.0
     - copied unchanged from r206514, head/tools/regression/bin/sh/builtins/command11.0
  user/imp/tbemd/tools/regression/bin/sh/builtins/command8.0
     - copied unchanged from r206514, head/tools/regression/bin/sh/builtins/command8.0
  user/imp/tbemd/tools/regression/bin/sh/builtins/command9.0
     - copied unchanged from r206514, head/tools/regression/bin/sh/builtins/command9.0
  user/imp/tbemd/tools/regression/bin/sh/builtins/var-assign2.0
     - copied unchanged from r206514, head/tools/regression/bin/sh/builtins/var-assign2.0
  user/imp/tbemd/tools/regression/bin/sh/errors/assignment-error1.0
     - copied unchanged from r206514, head/tools/regression/bin/sh/errors/assignment-error1.0
  user/imp/tbemd/tools/regression/bin/sh/errors/redirection-error3.0
     - copied unchanged from r206514, head/tools/regression/bin/sh/errors/redirection-error3.0
  user/imp/tbemd/tools/regression/bin/sh/errors/redirection-error4.0
     - copied unchanged from r206514, head/tools/regression/bin/sh/errors/redirection-error4.0
  user/imp/tbemd/tools/regression/bin/sh/errors/redirection-error5.0
     - copied unchanged from r206514, head/tools/regression/bin/sh/errors/redirection-error5.0
  user/imp/tbemd/tools/regression/bin/sh/errors/redirection-error6.0
     - copied unchanged from r206514, head/tools/regression/bin/sh/errors/redirection-error6.0
  user/imp/tbemd/tools/regression/bin/sh/expansion/arith4.0
     - copied unchanged from r206514, head/tools/regression/bin/sh/expansion/arith4.0
  user/imp/tbemd/tools/regression/bin/sh/expansion/arith5.0
     - copied unchanged from r206514, head/tools/regression/bin/sh/expansion/arith5.0
  user/imp/tbemd/tools/regression/bin/sh/expansion/assign1.0
     - copied unchanged from r206514, head/tools/regression/bin/sh/expansion/assign1.0
  user/imp/tbemd/tools/regression/bin/sh/expansion/cmdsubst2.0
     - copied unchanged from r206514, head/tools/regression/bin/sh/expansion/cmdsubst2.0
  user/imp/tbemd/tools/regression/bin/sh/expansion/plus-minus1.0
     - copied unchanged from r206514, head/tools/regression/bin/sh/expansion/plus-minus1.0
  user/imp/tbemd/tools/regression/bin/sh/expansion/plus-minus2.0
     - copied unchanged from r206514, head/tools/regression/bin/sh/expansion/plus-minus2.0
  user/imp/tbemd/tools/regression/bin/sh/expansion/tilde1.0
     - copied unchanged from r206514, head/tools/regression/bin/sh/expansion/tilde1.0
  user/imp/tbemd/tools/regression/bin/sh/expansion/tilde2.0
     - copied unchanged from r206514, head/tools/regression/bin/sh/expansion/tilde2.0
  user/imp/tbemd/tools/regression/bin/sh/expansion/trim1.0
     - copied unchanged from r206514, head/tools/regression/bin/sh/expansion/trim1.0
  user/imp/tbemd/tools/regression/bin/sh/expansion/trim2.0
     - copied unchanged from r206514, head/tools/regression/bin/sh/expansion/trim2.0
  user/imp/tbemd/tools/regression/bin/sh/parameters/pwd1.0
     - copied unchanged from r206514, head/tools/regression/bin/sh/parameters/pwd1.0
  user/imp/tbemd/tools/regression/bin/sh/parser/heredoc1.0
     - copied unchanged from r206514, head/tools/regression/bin/sh/parser/heredoc1.0
  user/imp/tbemd/tools/regression/bin/sh/parser/heredoc2.0
     - copied unchanged from r206514, head/tools/regression/bin/sh/parser/heredoc2.0
  user/imp/tbemd/tools/regression/usr.bin/apply/
     - copied from r206514, head/tools/regression/usr.bin/apply/
  user/imp/tbemd/tools/regression/usr.bin/ncal/
     - copied from r206514, head/tools/regression/usr.bin/ncal/
  user/imp/tbemd/usr.bin/calendar/dates.c
     - copied unchanged from r206514, head/usr.bin/calendar/dates.c
  user/imp/tbemd/usr.bin/calendar/events.c
     - copied unchanged from r206514, head/usr.bin/calendar/events.c
  user/imp/tbemd/usr.bin/calendar/locale.c
     - copied unchanged from r206514, head/usr.bin/calendar/locale.c
  user/imp/tbemd/usr.bin/calendar/parsedata.c
     - copied unchanged from r206514, head/usr.bin/calendar/parsedata.c
  user/imp/tbemd/usr.bin/calendar/pom.c
     - copied unchanged from r206514, head/usr.bin/calendar/pom.c
  user/imp/tbemd/usr.bin/calendar/sunpos.c
     - copied unchanged from r206514, head/usr.bin/calendar/sunpos.c
  user/imp/tbemd/usr.bin/procstat/procstat_sigs.c
     - copied unchanged from r206514, head/usr.bin/procstat/procstat_sigs.c
  user/imp/tbemd/usr.sbin/services_mkdb/
     - copied from r206514, head/usr.sbin/services_mkdb/
Deleted:
  user/imp/tbemd/tools/build/options/WITH_GNU_CPIO
  user/imp/tbemd/tools/tools/nanobsd/pcengines/Pkg/
  user/imp/tbemd/usr.sbin/ntp/ntptrace/
Modified:
  user/imp/tbemd/tools/build/mk/OptionalObsoleteFiles.inc
  user/imp/tbemd/tools/regression/aio/aiotest/aiotest.c
  user/imp/tbemd/tools/regression/mqueue/mqtest1/mqtest1.c
  user/imp/tbemd/tools/regression/mqueue/mqtest2/mqtest2.c
  user/imp/tbemd/tools/regression/mqueue/mqtest3/mqtest3.c
  user/imp/tbemd/tools/regression/mqueue/mqtest4/mqtest4.c
  user/imp/tbemd/tools/regression/mqueue/mqtest5/mqtest5.c
  user/imp/tbemd/tools/regression/posixsem/posixsem.c
  user/imp/tbemd/tools/regression/posixsem2/semtest.c
  user/imp/tbemd/tools/regression/usr.bin/Makefile
  user/imp/tbemd/tools/tools/nanobsd/Files/root/updatep1
  user/imp/tbemd/tools/tools/nanobsd/Files/root/updatep2
  user/imp/tbemd/tools/tools/nanobsd/gateworks/common
  user/imp/tbemd/tools/tools/nanobsd/nanobsd.sh
  user/imp/tbemd/usr.bin/apply/Makefile
  user/imp/tbemd/usr.bin/apply/apply.c
  user/imp/tbemd/usr.bin/biff/biff.1
  user/imp/tbemd/usr.bin/calendar/Makefile
  user/imp/tbemd/usr.bin/calendar/calendar.1
  user/imp/tbemd/usr.bin/calendar/calendar.c
  user/imp/tbemd/usr.bin/calendar/calendar.h
  user/imp/tbemd/usr.bin/calendar/calendars/calendar.australia
  user/imp/tbemd/usr.bin/calendar/calendars/calendar.dutch
  user/imp/tbemd/usr.bin/calendar/calendars/calendar.freebsd
  user/imp/tbemd/usr.bin/calendar/day.c
  user/imp/tbemd/usr.bin/calendar/io.c
  user/imp/tbemd/usr.bin/calendar/ostern.c
  user/imp/tbemd/usr.bin/calendar/paskha.c
  user/imp/tbemd/usr.bin/calendar/pathnames.h
  user/imp/tbemd/usr.bin/comm/comm.c
  user/imp/tbemd/usr.bin/compress/compress.c
  user/imp/tbemd/usr.bin/cpio/Makefile
  user/imp/tbemd/usr.bin/find/find.1
  user/imp/tbemd/usr.bin/getent/getent.c
  user/imp/tbemd/usr.bin/gzip/gzip.1
  user/imp/tbemd/usr.bin/gzip/gzip.c
  user/imp/tbemd/usr.bin/gzip/unbzip2.c
  user/imp/tbemd/usr.bin/indent/args.c
  user/imp/tbemd/usr.bin/indent/indent.1
  user/imp/tbemd/usr.bin/indent/indent.c
  user/imp/tbemd/usr.bin/indent/indent_globs.h
  user/imp/tbemd/usr.bin/indent/lexi.c
  user/imp/tbemd/usr.bin/kdump/kdump.c
  user/imp/tbemd/usr.bin/mail/util.c
  user/imp/tbemd/usr.bin/make/main.c
  user/imp/tbemd/usr.bin/minigzip/Makefile
  user/imp/tbemd/usr.bin/ncal/ncal.1
  user/imp/tbemd/usr.bin/ncal/ncal.c
  user/imp/tbemd/usr.bin/netstat/netgraph.c
  user/imp/tbemd/usr.bin/perror/perror.1
  user/imp/tbemd/usr.bin/procstat/Makefile
  user/imp/tbemd/usr.bin/procstat/procstat.1
  user/imp/tbemd/usr.bin/procstat/procstat.c
  user/imp/tbemd/usr.bin/procstat/procstat.h
  user/imp/tbemd/usr.bin/script/script.c
  user/imp/tbemd/usr.bin/sed/main.c
  user/imp/tbemd/usr.bin/sed/sed.1
  user/imp/tbemd/usr.bin/sockstat/sockstat.c
  user/imp/tbemd/usr.bin/tar/bsdtar.1
  user/imp/tbemd/usr.bin/tar/bsdtar.c
  user/imp/tbemd/usr.bin/tar/bsdtar_platform.h
  user/imp/tbemd/usr.bin/tar/matching.c
  user/imp/tbemd/usr.bin/tar/subst.c
  user/imp/tbemd/usr.bin/tar/tree.h
  user/imp/tbemd/usr.bin/tar/write.c
  user/imp/tbemd/usr.bin/touch/touch.c
  user/imp/tbemd/usr.bin/truss/amd64-fbsd.c
  user/imp/tbemd/usr.bin/truss/amd64-fbsd32.c
  user/imp/tbemd/usr.bin/truss/amd64-linux32.c
  user/imp/tbemd/usr.bin/truss/extern.h
  user/imp/tbemd/usr.bin/truss/i386-fbsd.c
  user/imp/tbemd/usr.bin/truss/i386-linux.c
  user/imp/tbemd/usr.bin/truss/ia64-fbsd.c
  user/imp/tbemd/usr.bin/truss/main.c
  user/imp/tbemd/usr.bin/truss/mips-fbsd.c
  user/imp/tbemd/usr.bin/truss/powerpc-fbsd.c
  user/imp/tbemd/usr.bin/truss/setup.c
  user/imp/tbemd/usr.bin/truss/sparc64-fbsd.c
  user/imp/tbemd/usr.bin/truss/syscalls.c
  user/imp/tbemd/usr.bin/truss/truss.h
  user/imp/tbemd/usr.bin/unifdef/unifdef.1
  user/imp/tbemd/usr.bin/unifdef/unifdef.c
  user/imp/tbemd/usr.bin/unifdef/unifdefall.sh
  user/imp/tbemd/usr.bin/uniq/uniq.c
  user/imp/tbemd/usr.bin/xlint/lint1/decl.c
  user/imp/tbemd/usr.bin/xlint/lint1/lint1.h
  user/imp/tbemd/usr.bin/xlint/lint1/mem1.c
  user/imp/tbemd/usr.bin/xlint/lint1/scan.l
  user/imp/tbemd/usr.sbin/Makefile
  user/imp/tbemd/usr.sbin/ac/ac.c
  user/imp/tbemd/usr.sbin/acpi/acpidb/Makefile
  user/imp/tbemd/usr.sbin/acpi/iasl/Makefile
  user/imp/tbemd/usr.sbin/bsnmpd/modules/snmp_pf/BEGEMOT-PF-MIB.txt
  user/imp/tbemd/usr.sbin/bsnmpd/modules/snmp_pf/Makefile
  user/imp/tbemd/usr.sbin/bsnmpd/modules/snmp_pf/pf_snmp.c
  user/imp/tbemd/usr.sbin/bsnmpd/modules/snmp_pf/pf_tree.def
  user/imp/tbemd/usr.sbin/config/config.y
  user/imp/tbemd/usr.sbin/config/lang.l
  user/imp/tbemd/usr.sbin/config/main.c
  user/imp/tbemd/usr.sbin/config/mkmakefile.c
  user/imp/tbemd/usr.sbin/config/mkoptions.c
  user/imp/tbemd/usr.sbin/freebsd-update/freebsd-update.8
  user/imp/tbemd/usr.sbin/jls/jls.c
  user/imp/tbemd/usr.sbin/lastlogin/lastlogin.8
  user/imp/tbemd/usr.sbin/lastlogin/lastlogin.c
  user/imp/tbemd/usr.sbin/mailwrapper/mailwrapper.8
  user/imp/tbemd/usr.sbin/mailwrapper/mailwrapper.c
  user/imp/tbemd/usr.sbin/mergemaster/mergemaster.8
  user/imp/tbemd/usr.sbin/mergemaster/mergemaster.sh
  user/imp/tbemd/usr.sbin/mtree/compare.c
  user/imp/tbemd/usr.sbin/mtree/create.c
  user/imp/tbemd/usr.sbin/mtree/mtree.8
  user/imp/tbemd/usr.sbin/pkg_install/add/futil.c
  user/imp/tbemd/usr.sbin/pkg_install/add/perform.c
  user/imp/tbemd/usr.sbin/pkg_install/delete/perform.c
  user/imp/tbemd/usr.sbin/pkg_install/lib/file.c
  user/imp/tbemd/usr.sbin/pkg_install/lib/lib.h
  user/imp/tbemd/usr.sbin/pkg_install/lib/match.c
  user/imp/tbemd/usr.sbin/pkg_install/lib/pen.c
  user/imp/tbemd/usr.sbin/pkg_install/lib/plist.c
  user/imp/tbemd/usr.sbin/pkg_install/lib/url.c
  user/imp/tbemd/usr.sbin/pkg_install/updating/pkg_updating.1
  user/imp/tbemd/usr.sbin/pkg_install/version/perform.c
  user/imp/tbemd/usr.sbin/pmcannotate/pmcannotate.8
  user/imp/tbemd/usr.sbin/pmcstat/pmcpl_callgraph.c
  user/imp/tbemd/usr.sbin/pmcstat/pmcpl_calltree.c
  user/imp/tbemd/usr.sbin/pmcstat/pmcstat.c
  user/imp/tbemd/usr.sbin/pmcstat/pmcstat_log.c
  user/imp/tbemd/usr.sbin/pmcstat/pmcstat_log.h
  user/imp/tbemd/usr.sbin/powerd/powerd.8
  user/imp/tbemd/usr.sbin/ppp/arp.c
  user/imp/tbemd/usr.sbin/sysinstall/menus.c
  user/imp/tbemd/usr.sbin/sysinstall/sysinstall.8
  user/imp/tbemd/usr.sbin/uhsoctl/uhsoctl.1
  user/imp/tbemd/usr.sbin/vidcontrol/vidcontrol.c
  user/imp/tbemd/usr.sbin/wpa/wpa_supplicant/driver_freebsd.c
  user/imp/tbemd/usr.sbin/wpa/wpa_supplicant/wpa_supplicant.conf.5
  user/imp/tbemd/usr.sbin/zic/Makefile

Modified: user/imp/tbemd/tools/build/mk/OptionalObsoleteFiles.inc
==============================================================================
--- user/imp/tbemd/tools/build/mk/OptionalObsoleteFiles.inc	Mon Apr 12 23:09:52 2010	(r206520)
+++ user/imp/tbemd/tools/build/mk/OptionalObsoleteFiles.inc	Mon Apr 12 23:11:20 2010	(r206521)
@@ -776,12 +776,6 @@ OLD_FILES+=usr/share/man/man1/gdbserver.
 OLD_FILES+=usr/share/man/man1/kgdb.1.gz
 .endif
 
-.if ${MK_GNU_CPIO} == no
-OLD_FILES+=usr/bin/gcpio
-OLD_FILES+=usr/share/info/cpio.info.gz
-OLD_FILES+=usr/share/man/man1/gcpio.1.gz
-.endif
-
 .if ${MK_GPIB} == no
 OLD_FILES+=usr/include/dev/ieee488/ibfoo_int.h
 OLD_FILES+=usr/include/dev/ieee488/ugpib.h

Modified: user/imp/tbemd/tools/regression/aio/aiotest/aiotest.c
==============================================================================
--- user/imp/tbemd/tools/regression/aio/aiotest/aiotest.c	Mon Apr 12 23:09:52 2010	(r206520)
+++ user/imp/tbemd/tools/regression/aio/aiotest/aiotest.c	Mon Apr 12 23:11:20 2010	(r206521)
@@ -40,14 +40,17 @@
 
 #include <sys/types.h>
 #include <sys/socket.h>
+#include <sys/stat.h>
 #include <sys/mdioctl.h>
 
 #include <aio.h>
 #include <err.h>
 #include <errno.h>
 #include <fcntl.h>
+#include <libutil.h>
 #include <limits.h>
 #include <stdio.h>
+#include <stdlib.h>
 #include <string.h>
 #include <termios.h>
 #include <unistd.h>

Copied: user/imp/tbemd/tools/regression/bin/sh/builtins/command10.0 (from r206514, head/tools/regression/bin/sh/builtins/command10.0)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ user/imp/tbemd/tools/regression/bin/sh/builtins/command10.0	Mon Apr 12 23:11:20 2010	(r206521, copy of r206514, head/tools/regression/bin/sh/builtins/command10.0)
@@ -0,0 +1,14 @@
+# $FreeBSD$
+
+failures=0
+
+check() {
+	if ! eval "[ $* ]"; then
+		echo "Failed: $*"
+		: $((failures += 1))
+	fi
+}
+
+check '"$(f() { shift x; }; { command eval f 2>/dev/null; } >/dev/null; echo hi)" = hi'
+
+exit $((failures > 0))

Copied: user/imp/tbemd/tools/regression/bin/sh/builtins/command11.0 (from r206514, head/tools/regression/bin/sh/builtins/command11.0)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ user/imp/tbemd/tools/regression/bin/sh/builtins/command11.0	Mon Apr 12 23:11:20 2010	(r206521, copy of r206514, head/tools/regression/bin/sh/builtins/command11.0)
@@ -0,0 +1,14 @@
+# $FreeBSD$
+
+failures=0
+
+check() {
+	if ! eval "[ $* ]"; then
+		echo "Failed: $*"
+		: $((failures += 1))
+	fi
+}
+
+check '"$({ command eval \{ shift x\; \} 2\>/dev/null; } >/dev/null; echo hi)" = hi'
+
+exit $((failures > 0))

Copied: user/imp/tbemd/tools/regression/bin/sh/builtins/command8.0 (from r206514, head/tools/regression/bin/sh/builtins/command8.0)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ user/imp/tbemd/tools/regression/bin/sh/builtins/command8.0	Mon Apr 12 23:11:20 2010	(r206521, copy of r206514, head/tools/regression/bin/sh/builtins/command8.0)
@@ -0,0 +1,45 @@
+# $FreeBSD$
+IFS=,
+
+SPECIAL="break,\
+	:,\
+	continue,\
+	. /dev/null,\
+	eval,\
+	exec,\
+	export -p,\
+	readonly -p,\
+	set,\
+	shift 0,\
+	times,\
+	trap,\
+	unset foo"
+
+set -e
+
+# Check that special builtins can be executed via "command".
+
+set -- ${SPECIAL}
+for cmd in "$@"
+do
+	sh -c "v=:; while \$v; do v=false; command ${cmd}; done" >/dev/null
+done
+
+while :; do
+	command break
+	echo Error on line $LINENO
+done
+
+set p q r
+command shift 2
+if [ $# -ne 1 ]; then
+	echo Error on line $LINENO
+fi
+
+(
+	command exec >/dev/null
+	echo Error on line $LINENO
+)
+
+set +e
+! command shift 2 2>/dev/null

Copied: user/imp/tbemd/tools/regression/bin/sh/builtins/command9.0 (from r206514, head/tools/regression/bin/sh/builtins/command9.0)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ user/imp/tbemd/tools/regression/bin/sh/builtins/command9.0	Mon Apr 12 23:11:20 2010	(r206521, copy of r206514, head/tools/regression/bin/sh/builtins/command9.0)
@@ -0,0 +1,14 @@
+# $FreeBSD$
+
+failures=0
+
+check() {
+	if ! eval "[ $* ]"; then
+		echo "Failed: $*"
+		: $((failures += 1))
+	fi
+}
+
+check '"$({ command eval shift x 2>/dev/null; } >/dev/null; echo hi)" = hi'
+
+exit $((failures > 0))

Copied: user/imp/tbemd/tools/regression/bin/sh/builtins/var-assign2.0 (from r206514, head/tools/regression/bin/sh/builtins/var-assign2.0)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ user/imp/tbemd/tools/regression/bin/sh/builtins/var-assign2.0	Mon Apr 12 23:11:20 2010	(r206521, copy of r206514, head/tools/regression/bin/sh/builtins/var-assign2.0)
@@ -0,0 +1,55 @@
+# $FreeBSD$
+IFS=,
+
+SPECIAL="break,\
+	:,\
+	continue,\
+	. /dev/null,\
+	eval,\
+	exec,\
+	export -p,\
+	readonly -p,\
+	set,\
+	shift 0,\
+	times,\
+	trap,\
+	unset foo"
+
+UTILS="alias,\
+	bg,\
+	bind,\
+	cd,\
+	command echo,\
+	echo,\
+	false,\
+	fc -l,\
+	fg,\
+	getopts a var,\
+	hash,\
+	jobs,\
+	printf a,\
+	pwd,\
+	read var < /dev/null,\
+	test,\
+	true,\
+	type ls,\
+	ulimit,\
+	umask,\
+	unalias -a,\
+	wait"
+
+set -e
+
+# With 'command', variable assignments affect the shell environment.
+
+set -- ${SPECIAL}
+for cmd in "$@"
+do
+	sh -c "VAR=0; VAR=1 command ${cmd}; exit \${VAR}" >/dev/null 2>&1
+done
+
+set -- ${UTILS}
+for cmd in "$@"
+do
+	sh -c "VAR=0; VAR=1 command ${cmd}; exit \${VAR}" >/dev/null 2>&1
+done

Copied: user/imp/tbemd/tools/regression/bin/sh/errors/assignment-error1.0 (from r206514, head/tools/regression/bin/sh/errors/assignment-error1.0)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ user/imp/tbemd/tools/regression/bin/sh/errors/assignment-error1.0	Mon Apr 12 23:11:20 2010	(r206521, copy of r206514, head/tools/regression/bin/sh/errors/assignment-error1.0)
@@ -0,0 +1,30 @@
+# $FreeBSD$
+IFS=,
+
+SPECIAL="break,\
+	:,\
+	continue,\
+	. /dev/null,\
+	eval,\
+	exec,\
+	export -p,\
+	readonly -p,\
+	set,\
+	shift,\
+	times,\
+	trap,\
+	unset foo"
+
+# If there is no command word, the shell must abort on an assignment error.
+sh -c "readonly a=0; a=2; exit 0" 2>/dev/null && exit 1
+
+# Special built-in utilities must abort on an assignment error.
+set -- ${SPECIAL}
+for cmd in "$@"
+do
+	sh -c "readonly a=0; a=2 ${cmd}; exit 0" 2>/dev/null && exit 1
+done
+
+# Other utilities must not abort; we currently still execute them.
+sh -c "readonly a=0; a=1 true; exit $a" 2>/dev/null || exit 1
+sh -c "readonly a=0; a=1 command :; exit $a" 2>/dev/null || exit 1

Copied: user/imp/tbemd/tools/regression/bin/sh/errors/redirection-error3.0 (from r206514, head/tools/regression/bin/sh/errors/redirection-error3.0)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ user/imp/tbemd/tools/regression/bin/sh/errors/redirection-error3.0	Mon Apr 12 23:11:20 2010	(r206521, copy of r206514, head/tools/regression/bin/sh/errors/redirection-error3.0)
@@ -0,0 +1,54 @@
+# $FreeBSD$
+IFS=,
+
+SPECIAL="break,\
+	:,\
+	continue,\
+	. /dev/null,\
+	eval,\
+	exec,\
+	export -p,\
+	readonly -p,\
+	set,\
+	shift,\
+	times,\
+	trap,\
+	unset foo"
+
+UTILS="alias,\
+	bg,\
+	bind,\
+	cd,\
+	command echo,\
+	echo,\
+	false,\
+	fc -l,\
+	fg,\
+	getopts a -a,\
+	hash,\
+	jobs,\
+	printf a,\
+	pwd,\
+	read var < /dev/null,\
+	test,\
+	true,\
+	type ls,\
+	ulimit,\
+	umask,\
+	unalias -a,\
+	wait"
+
+# When used with 'command', neither special built-in utilities nor other
+# utilities must abort on a redirection error.
+
+set -- ${SPECIAL}
+for cmd in "$@"
+do
+	sh -c "command ${cmd} > /; exit 0" 2>/dev/null || exit 1
+done
+
+set -- ${UTILS}
+for cmd in "$@"
+do
+	sh -c "command ${cmd} > /; exit 0" 2>/dev/null || exit 1
+done

Copied: user/imp/tbemd/tools/regression/bin/sh/errors/redirection-error4.0 (from r206514, head/tools/regression/bin/sh/errors/redirection-error4.0)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ user/imp/tbemd/tools/regression/bin/sh/errors/redirection-error4.0	Mon Apr 12 23:11:20 2010	(r206521, copy of r206514, head/tools/regression/bin/sh/errors/redirection-error4.0)
@@ -0,0 +1,7 @@
+# $FreeBSD$
+# A redirection error should not abort the shell if there is no command word.
+exec 2>/dev/null
+</var/empty/x
+</var/empty/x y=2
+y=2 </var/empty/x
+exit 0

Copied: user/imp/tbemd/tools/regression/bin/sh/errors/redirection-error5.0 (from r206514, head/tools/regression/bin/sh/errors/redirection-error5.0)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ user/imp/tbemd/tools/regression/bin/sh/errors/redirection-error5.0	Mon Apr 12 23:11:20 2010	(r206521, copy of r206514, head/tools/regression/bin/sh/errors/redirection-error5.0)
@@ -0,0 +1,5 @@
+# $FreeBSD$
+# A redirection error on a subshell should not abort the shell.
+exec 2>/dev/null
+( echo bad ) </var/empty/x
+exit 0

Copied: user/imp/tbemd/tools/regression/bin/sh/errors/redirection-error6.0 (from r206514, head/tools/regression/bin/sh/errors/redirection-error6.0)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ user/imp/tbemd/tools/regression/bin/sh/errors/redirection-error6.0	Mon Apr 12 23:11:20 2010	(r206521, copy of r206514, head/tools/regression/bin/sh/errors/redirection-error6.0)
@@ -0,0 +1,12 @@
+# $FreeBSD$
+# A redirection error on a compound command should not abort the shell.
+exec 2>/dev/null
+{ echo bad; } </var/empty/x
+if :; then echo bad; fi </var/empty/x
+for i in 1; do echo bad; done </var/empty/x
+i=0
+while [ $i = 0 ]; do echo bad; i=1; done </var/empty/x
+i=0
+until [ $i != 0 ]; do echo bad; i=1; done </var/empty/x
+case i in *) echo bad ;; esac </var/empty/x
+exit 0

Copied: user/imp/tbemd/tools/regression/bin/sh/expansion/arith4.0 (from r206514, head/tools/regression/bin/sh/expansion/arith4.0)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ user/imp/tbemd/tools/regression/bin/sh/expansion/arith4.0	Mon Apr 12 23:11:20 2010	(r206521, copy of r206514, head/tools/regression/bin/sh/expansion/arith4.0)
@@ -0,0 +1,20 @@
+# $FreeBSD$
+
+failures=0
+
+check() {
+	if [ $(($1)) != $2 ]; then
+		failures=$((failures+1))
+		echo "For $1, expected $2 actual $(($1))"
+	fi
+}
+
+check '20 / 2 / 2' 5
+check '20 - 2 - 2' 16
+unset a b c d
+check "a = b = c = d = 1" 1
+check "a == 1 && b == 1 && c == 1 && d == 1" 1
+check "a += b += c += d" 4
+check "a == 4 && b == 3 && c == 2 && d == 1" 1
+
+exit $((failures != 0))

Copied: user/imp/tbemd/tools/regression/bin/sh/expansion/arith5.0 (from r206514, head/tools/regression/bin/sh/expansion/arith5.0)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ user/imp/tbemd/tools/regression/bin/sh/expansion/arith5.0	Mon Apr 12 23:11:20 2010	(r206521, copy of r206514, head/tools/regression/bin/sh/expansion/arith5.0)
@@ -0,0 +1,17 @@
+# $FreeBSD$
+
+failures=0
+
+check() {
+	if [ "$2" != "$3" ]; then
+		failures=$((failures+1))
+		echo "For $1, expected $3 actual $2"
+	fi
+}
+
+unset a
+check '$((1+${a:-$((7+2))}))' "$((1+${a:-$((7+2))}))" 10
+check '$((1+${a:=$((2+2))}))' "$((1+${a:=$((2+2))}))" 5
+check '$a' "$a" 4
+
+exit $((failures != 0))

Copied: user/imp/tbemd/tools/regression/bin/sh/expansion/assign1.0 (from r206514, head/tools/regression/bin/sh/expansion/assign1.0)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ user/imp/tbemd/tools/regression/bin/sh/expansion/assign1.0	Mon Apr 12 23:11:20 2010	(r206521, copy of r206514, head/tools/regression/bin/sh/expansion/assign1.0)
@@ -0,0 +1,37 @@
+# $FreeBSD$
+
+e= q='?' a='*' t=texttext s='ast*que?non' p='/et[c]/' w='a b c' b='{{(#)}}'
+h='##'
+failures=''
+ok=''
+
+testcase() {
+	code="$1"
+	expected="$2"
+	oIFS="$IFS"
+	eval "$code"
+	IFS='|'
+	result="$#|$*"
+	IFS="$oIFS"
+	if [ "x$result" = "x$expected" ]; then
+		ok=x$ok
+	else
+		failures=x$failures
+		echo "For $code, expected $expected actual $result"
+	fi
+}
+
+testcase 'v=; set -- ${v=a b} $v'		'0|'
+testcase 'unset v; set -- ${v=a b} $v'		'4|a|b|a|b'
+testcase 'v=; set -- ${v:=a b} $v'		'4|a|b|a|b'
+testcase 'v=; set -- "${v:=a b}" "$v"'		'2|a b|a b'
+# expect sensible behaviour, although it disagrees with POSIX
+testcase 'v=; set -- ${v:=a\ b} $v'		'4|a|b|a|b'
+testcase 'v=; set -- ${v:=$p} $v'		'2|/etc/|/etc/'
+testcase 'v=; set -- "${v:=$p}" "$v"'		'2|/et[c]/|/et[c]/'
+testcase 'v=; set -- "${v:=a\ b}" "$v"'		'2|a\ b|a\ b'
+testcase 'v=; set -- ${v:="$p"} $v'		'2|/etc/|/etc/'
+# whether $p is quoted or not shouldn't really matter
+testcase 'v=; set -- "${v:="$p"}" "$v"'		'2|/et[c]/|/et[c]/'
+
+test "x$failures" = x

Copied: user/imp/tbemd/tools/regression/bin/sh/expansion/cmdsubst2.0 (from r206514, head/tools/regression/bin/sh/expansion/cmdsubst2.0)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ user/imp/tbemd/tools/regression/bin/sh/expansion/cmdsubst2.0	Mon Apr 12 23:11:20 2010	(r206521, copy of r206514, head/tools/regression/bin/sh/expansion/cmdsubst2.0)
@@ -0,0 +1,43 @@
+# $FreeBSD$
+
+failures=0
+
+check() {
+	if ! eval "[ $* ]"; then
+		echo "Failed: $*"
+		: $((failures += 1))
+	fi
+}
+
+check '`echo /et[c]/` = "/etc/"'
+check '`printf /var/empty%s /et[c]/` = "/var/empty/etc/"'
+check '"`echo /et[c]/`" = "/etc/"'
+check '`echo "/et[c]/"` = "/etc/"'
+check '`printf /var/empty%s "/et[c]/"` = "/var/empty/et[c]/"'
+check '`printf /var/empty/%s \"/et[c]/\"` = "/var/empty/\"/et[c]/\""'
+check '"`echo \"/et[c]/\"`" = "/et[c]/"'
+check '"`echo "/et[c]/"`" = "/et[c]/"'
+check '`echo $$` = $$'
+check '"`echo $$`" = $$'
+check '`echo \$\$` = $$'
+check '"`echo \$\$`" = $$'
+
+# Command substitutions consisting of a single builtin may be treated
+# differently.
+check '`:; echo /et[c]/` = "/etc/"'
+check '`:; printf /var/empty%s /et[c]/` = "/var/empty/etc/"'
+check '"`:; echo /et[c]/`" = "/etc/"'
+check '`:; echo "/et[c]/"` = "/etc/"'
+check '`:; printf /var/empty%s "/et[c]/"` = "/var/empty/et[c]/"'
+check '`:; printf /var/empty/%s \"/et[c]/\"` = "/var/empty/\"/et[c]/\""'
+check '"`:; echo \"/et[c]/\"`" = "/et[c]/"'
+check '"`:; echo "/et[c]/"`" = "/et[c]/"'
+check '`:; echo $$` = $$'
+check '"`:; echo $$`" = $$'
+check '`:; echo \$\$` = $$'
+check '"`:; echo \$\$`" = $$'
+
+check '`set -f; echo /et[c]/` = "/etc/"'
+check '"`set -f; echo /et[c]/`" = "/et[c]/"'
+
+exit $((failures > 0))

Copied: user/imp/tbemd/tools/regression/bin/sh/expansion/plus-minus1.0 (from r206514, head/tools/regression/bin/sh/expansion/plus-minus1.0)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ user/imp/tbemd/tools/regression/bin/sh/expansion/plus-minus1.0	Mon Apr 12 23:11:20 2010	(r206521, copy of r206514, head/tools/regression/bin/sh/expansion/plus-minus1.0)
@@ -0,0 +1,81 @@
+# $FreeBSD$
+
+e= q='?' a='*' t=texttext s='ast*que?non' p='/et[c]/' w='a b c' b='{{(#)}}'
+h='##'
+failures=''
+ok=''
+
+testcase() {
+	code="$1"
+	expected="$2"
+	oIFS="$IFS"
+	eval "$code"
+	IFS='|'
+	result="$#|$*"
+	IFS="$oIFS"
+	if [ "x$result" = "x$expected" ]; then
+		ok=x$ok
+	else
+		failures=x$failures
+		echo "For $code, expected $expected actual $result"
+	fi
+}
+
+testcase 'set -- a b'				'2|a|b'
+testcase 'set --'				'0|'
+testcase 'set -- ${e}'				'0|'
+testcase 'set -- "${e}"'			'1|'
+
+testcase 'set -- $p'				'1|/etc/'
+testcase 'set -- "$p"'				'1|/et[c]/'
+testcase 'set -- ${s+$p}'			'1|/etc/'
+testcase 'set -- "${s+$p}"'			'1|/et[c]/'
+testcase 'set -- ${s+"$p"}'			'1|/et[c]/'
+# Dquotes in dquotes is undefined for Bourne shell operators
+#testcase 'set -- "${s+"$p"}"'			'1|/et[c]/'
+testcase 'set -- ${e:-$p}'			'1|/etc/'
+testcase 'set -- "${e:-$p}"'			'1|/et[c]/'
+testcase 'set -- ${e:-"$p"}'			'1|/et[c]/'
+# Dquotes in dquotes is undefined for Bourne shell operators
+#testcase 'set -- "${e:-"$p"}"'			'1|/et[c]/'
+testcase 'set -- ${e:+"$e"}'			'0|'
+testcase 'set -- ${e:+$w"$e"}'			'0|'
+testcase 'set -- ${w:+"$w"}'			'1|a b c'
+testcase 'set -- ${w:+$w"$w"}'			'3|a|b|ca b c'
+
+# These two are known broken in FreeBSD /bin/sh
+#testcase 'set -- ${s+a b}'			'2|a|b'
+#testcase 'set -- ${e:-a b}'			'2|a|b'
+testcase 'set -- "${s+a b}"'			'1|a b'
+testcase 'set -- "${e:-a b}"'			'1|a b'
+testcase 'set -- ${e:-\}}'			'1|}'
+# Currently broken in FreeBSD /bin/sh
+#testcase 'set -- "${e:-\}}"'			'1|}'
+testcase 'set -- ${e:+{}}'			'1|}'
+testcase 'set -- "${e:+{}}"'			'1|}'
+
+testcase 'set -- ${e+x}${e+x}'			'1|xx'
+testcase 'set -- "${e+x}"${e+x}'		'1|xx'
+testcase 'set -- ${e+x}"${e+x}"'		'1|xx'
+testcase 'set -- "${e+x}${e+x}"'		'1|xx'
+testcase 'set -- "${e+x}""${e+x}"'		'1|xx'
+
+testcase 'set -- ${e:-${e:-$p}}'		'1|/etc/'
+testcase 'set -- "${e:-${e:-$p}}"'		'1|/et[c]/'
+testcase 'set -- ${e:-"${e:-$p}"}'		'1|/et[c]/'
+testcase 'set -- ${e:-${e:-"$p"}}'		'1|/et[c]/'
+testcase 'set -- ${e:-${e:-${e:-$w}}}'		'3|a|b|c'
+testcase 'set -- ${e:-${e:-${e:-"$w"}}}'	'1|a b c'
+testcase 'set -- ${e:-${e:-"${e:-$w}"}}'	'1|a b c'
+testcase 'set -- ${e:-"${e:-${e:-$w}}"}'	'1|a b c'
+testcase 'set -- "${e:-${e:-${e:-$w}}}"'	'1|a b c'
+
+testcase 'shift $#; set -- ${1+"$@"}'		'0|'
+testcase 'set -- ""; set -- ${1+"$@"}'		'1|'
+testcase 'set -- "" a; set -- ${1+"$@"}'	'2||a'
+testcase 'set -- a ""; set -- ${1+"$@"}'	'2|a|'
+testcase 'set -- a b; set -- ${1+"$@"}'		'2|a|b'
+testcase 'set -- a\ b; set -- ${1+"$@"}'	'1|a b'
+testcase 'set -- " " ""; set -- ${1+"$@"}'	'2| |'
+
+test "x$failures" = x

Copied: user/imp/tbemd/tools/regression/bin/sh/expansion/plus-minus2.0 (from r206514, head/tools/regression/bin/sh/expansion/plus-minus2.0)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ user/imp/tbemd/tools/regression/bin/sh/expansion/plus-minus2.0	Mon Apr 12 23:11:20 2010	(r206521, copy of r206514, head/tools/regression/bin/sh/expansion/plus-minus2.0)
@@ -0,0 +1,4 @@
+# $FreeBSD$
+
+e=
+test "${e:-\}}" = '}'

Copied: user/imp/tbemd/tools/regression/bin/sh/expansion/tilde1.0 (from r206514, head/tools/regression/bin/sh/expansion/tilde1.0)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ user/imp/tbemd/tools/regression/bin/sh/expansion/tilde1.0	Mon Apr 12 23:11:20 2010	(r206521, copy of r206514, head/tools/regression/bin/sh/expansion/tilde1.0)
@@ -0,0 +1,56 @@
+# $FreeBSD$
+
+HOME=/tmp
+roothome=~root
+if [ "$roothome" = "~root" ]; then
+	echo "~root is not expanded!"
+	exit 2
+fi
+
+testcase() {
+	code="$1"
+	expected="$2"
+	oIFS="$IFS"
+	eval "$code"
+	IFS='|'
+	result="$#|$*"
+	IFS="$oIFS"
+	if [ "x$result" = "x$expected" ]; then
+		ok=x$ok
+	else
+		failures=x$failures
+		echo "For $code, expected $expected actual $result"
+	fi
+}
+
+testcase 'set -- ~'				'1|/tmp'
+testcase 'set -- ~/foo'				'1|/tmp/foo'
+testcase 'set -- x~'				'1|x~'
+testcase 'set -- ~root'				"1|$roothome"
+h=~
+testcase 'set -- "$h"'				'1|/tmp'
+ooIFS=$IFS
+IFS=m
+testcase 'set -- ~'				'1|/tmp'
+testcase 'set -- ~/foo'				'1|/tmp/foo'
+testcase 'set -- $h'				'2|/t|p'
+IFS=$ooIFS
+t=\~
+testcase 'set -- $t'				'1|~'
+r=$(cat <<EOF
+~
+EOF
+)
+testcase 'set -- $r'				'1|~'
+r=$(cat <<EOF
+${t+~}
+EOF
+)
+testcase 'set -- $r'				'1|~'
+r=$(cat <<EOF
+${t+~/.}
+EOF
+)
+testcase 'set -- $r'				'1|~/.'
+
+test "x$failures" = x

Copied: user/imp/tbemd/tools/regression/bin/sh/expansion/tilde2.0 (from r206514, head/tools/regression/bin/sh/expansion/tilde2.0)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ user/imp/tbemd/tools/regression/bin/sh/expansion/tilde2.0	Mon Apr 12 23:11:20 2010	(r206521, copy of r206514, head/tools/regression/bin/sh/expansion/tilde2.0)
@@ -0,0 +1,90 @@
+# $FreeBSD$
+
+HOME=/tmp
+roothome=~root
+if [ "$roothome" = "~root" ]; then
+	echo "~root is not expanded!"
+	exit 2
+fi
+
+testcase() {
+	code="$1"
+	expected="$2"
+	oIFS="$IFS"
+	eval "$code"
+	IFS='|'
+	result="$#|$*"
+	IFS="$oIFS"
+	if [ "x$result" = "x$expected" ]; then
+		ok=x$ok
+	else
+		failures=x$failures
+		echo "For $code, expected $expected actual $result"
+	fi
+}
+
+testcase 'set -- ${$+~}'			'1|/tmp'
+testcase 'set -- ${$+~/}'			'1|/tmp/'
+testcase 'set -- ${$+~/foo}'			'1|/tmp/foo'
+testcase 'set -- ${$+x~}'			'1|x~'
+testcase 'set -- ${$+~root}'			"1|$roothome"
+testcase 'set -- ${$+"~"}'			'1|~'
+testcase 'set -- ${$+"~/"}'			'1|~/'
+testcase 'set -- ${$+"~/foo"}'			'1|~/foo'
+testcase 'set -- ${$+"x~"}'			'1|x~'
+testcase 'set -- ${$+"~root"}'			"1|~root"
+testcase 'set -- "${$+~}"'			'1|~'
+testcase 'set -- "${$+~/}"'			'1|~/'
+testcase 'set -- "${$+~/foo}"'			'1|~/foo'
+testcase 'set -- "${$+x~}"'			'1|x~'
+testcase 'set -- "${$+~root}"'			"1|~root"
+testcase 'set -- ${HOME#~}'			'0|'
+h=~
+testcase 'set -- "$h"'				'1|/tmp'
+f=~/foo
+testcase 'set -- "$f"'				'1|/tmp/foo'
+testcase 'set -- ${f#~}'			'1|/foo'
+testcase 'set -- ${f#~/}'			'1|foo'
+
+ooIFS=$IFS
+IFS=m
+testcase 'set -- ${$+~}'			'1|/tmp'
+testcase 'set -- ${$+~/foo}'			'1|/tmp/foo'
+testcase 'set -- ${$+$h}'			'2|/t|p'
+testcase 'set -- ${HOME#~}'			'0|'
+IFS=$ooIFS
+
+t=\~
+testcase 'set -- ${$+$t}'			'1|~'
+r=$(cat <<EOF
+${HOME#~}
+EOF
+)
+testcase 'set -- $r'				'0|'
+r=$(cat <<EOF
+${HOME#'~'}
+EOF
+)
+testcase 'set -- $r'				'1|/tmp'
+r=$(cat <<EOF
+${t#'~'}
+EOF
+)
+testcase 'set -- $r'				'0|'
+r=$(cat <<EOF
+${roothome#~root}
+EOF
+)
+testcase 'set -- $r'				'0|'
+r=$(cat <<EOF
+${f#~}
+EOF
+)
+testcase 'set -- $r'				'1|/foo'
+r=$(cat <<EOF
+${f#~/}
+EOF
+)
+testcase 'set -- $r'				'1|foo'
+
+test "x$failures" = x

Copied: user/imp/tbemd/tools/regression/bin/sh/expansion/trim1.0 (from r206514, head/tools/regression/bin/sh/expansion/trim1.0)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ user/imp/tbemd/tools/regression/bin/sh/expansion/trim1.0	Mon Apr 12 23:11:20 2010	(r206521, copy of r206514, head/tools/regression/bin/sh/expansion/trim1.0)
@@ -0,0 +1,85 @@
+# $FreeBSD$
+
+e= q='?' a='*' t=texttext s='ast*que?non' p='/et[c]/' w='a b c' b='{{(#)}}'
+h='##'
+failures=''
+ok=''
+
+testcase() {
+	code="$1"
+	expected="$2"
+	oIFS="$IFS"
+	eval "$code"
+	IFS='|'
+	result="$#|$*"
+	IFS="$oIFS"
+	if [ "x$result" = "x$expected" ]; then
+		ok=x$ok
+	else
+		failures=x$failures
+		echo "For $code, expected $expected actual $result"
+	fi
+}
+
+testcase 'set -- ${t%t}'			'1|texttex'
+testcase 'set -- "${t%t}"'			'1|texttex'
+testcase 'set -- ${t%e*}'			'1|textt'
+testcase 'set -- "${t%e*}"'			'1|textt'
+testcase 'set -- ${t%%e*}'			'1|t'
+testcase 'set -- "${t%%e*}"'			'1|t'
+testcase 'set -- ${t%%*}'			'0|'
+testcase 'set -- "${t%%*}"'			'1|'
+testcase 'set -- ${t#t}'			'1|exttext'
+testcase 'set -- "${t#t}"'			'1|exttext'
+testcase 'set -- ${t#*x}'			'1|ttext'
+testcase 'set -- "${t#*x}"'			'1|ttext'
+testcase 'set -- ${t##*x}'			'1|t'
+testcase 'set -- "${t##*x}"'			'1|t'
+testcase 'set -- ${t##*}'			'0|'
+testcase 'set -- "${t##*}"'			'1|'
+testcase 'set -- ${t%e$a}'			'1|textt'
+
+set -f
+testcase 'set -- ${s%[?]*}'			'1|ast*que'
+testcase 'set -- "${s%[?]*}"'			'1|ast*que'
+testcase 'set -- ${s%[*]*}'			'1|ast'
+testcase 'set -- "${s%[*]*}"'			'1|ast'
+set +f
+
+testcase 'set -- $b'				'1|{{(#)}}'
+testcase 'set -- ${b%\}}'			'1|{{(#)}'
+testcase 'set -- ${b#{}'			'1|{(#)}}'
+testcase 'set -- "${b#{}"'			'1|{(#)}}'
+# Parentheses are special in ksh, check that they can be escaped
+testcase 'set -- ${b%\)*}'			'1|{{(#'
+testcase 'set -- ${b#{}'			'1|{(#)}}'
+testcase 'set -- $h'				'1|##'
+testcase 'set -- ${h#\#}'			'1|#'
+testcase 'set -- ${h###}'			'1|#'
+testcase 'set -- "${h###}"'			'1|#'
+testcase 'set -- ${h%#}'			'1|#'
+testcase 'set -- "${h%#}"'			'1|#'
+
+set -f
+testcase 'set -- ${s%"${s#?}"}'			'1|a'
+testcase 'set -- ${s%"${s#????}"}'		'1|ast*'
+testcase 'set -- ${s%"${s#????????}"}'		'1|ast*que?'
+testcase 'set -- ${s#"${s%?}"}'			'1|n'
+testcase 'set -- ${s#"${s%????}"}'		'1|?non'
+testcase 'set -- ${s#"${s%????????}"}'		'1|*que?non'
+set +f
+testcase 'set -- "${s%"${s#?}"}"'		'1|a'
+testcase 'set -- "${s%"${s#????}"}"'		'1|ast*'
+testcase 'set -- "${s%"${s#????????}"}"'	'1|ast*que?'
+testcase 'set -- "${s#"${s%?}"}"'		'1|n'
+testcase 'set -- "${s#"${s%????}"}"'		'1|?non'
+testcase 'set -- "${s#"${s%????????}"}"'	'1|*que?non'
+testcase 'set -- ${p#${p}}'			'1|/etc/'
+testcase 'set -- "${p#${p}}"'			'1|/et[c]/'
+testcase 'set -- ${p#*[[]}'			'1|c]/'
+testcase 'set -- "${p#*[[]}"'			'1|c]/'
+testcase 'set -- ${p#*\[}'			'1|c]/'
+testcase 'set -- ${p#*"["}'			'1|c]/'
+testcase 'set -- "${p#*"["}"'			'1|c]/'
+
+test "x$failures" = x

Copied: user/imp/tbemd/tools/regression/bin/sh/expansion/trim2.0 (from r206514, head/tools/regression/bin/sh/expansion/trim2.0)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ user/imp/tbemd/tools/regression/bin/sh/expansion/trim2.0	Mon Apr 12 23:11:20 2010	(r206521, copy of r206514, head/tools/regression/bin/sh/expansion/trim2.0)
@@ -0,0 +1,55 @@
+# $FreeBSD$
+
+e= q='?' a='*' t=texttext s='ast*que?non' p='/et[c]/' w='a b c' b='{{(#)}}'
+h='##'
+failures=''
+ok=''
+
+testcase() {
+	code="$1"
+	expected="$2"
+	oIFS="$IFS"
+	eval "$code"
+	IFS='|'
+	result="$#|$*"
+	IFS="$oIFS"
+	if [ "x$result" = "x$expected" ]; then
+		ok=x$ok
+	else
+		failures=x$failures
+		echo "For $code, expected $expected actual $result"
+	fi
+}
+
+set -f
+testcase 'set -- $s'				'1|ast*que?non'
+testcase 'set -- ${s%\?*}'			'1|ast*que'
+testcase 'set -- "${s%\?*}"'			'1|ast*que'
+testcase 'set -- ${s%\**}'			'1|ast'
+testcase 'set -- "${s%\**}"'			'1|ast'
+testcase 'set -- ${s%"$q"*}'			'1|ast*que'
+testcase 'set -- "${s%"$q"*}"'			'1|ast*que'
+testcase 'set -- ${s%"$a"*}'			'1|ast'
+testcase 'set -- "${s%"$a"*}"'			'1|ast'
+testcase 'set -- ${s%"$q"$a}'			'1|ast*que'
+testcase 'set -- "${s%"$q"$a}"'			'1|ast*que'
+testcase 'set -- ${s%"$a"$a}'			'1|ast'
+testcase 'set -- "${s%"$a"$a}"'			'1|ast'
+set +f
+
+testcase 'set -- "${b%\}}"'			'1|{{(#)}'
+# Parentheses are special in ksh, check that they can be escaped
+testcase 'set -- "${b%\)*}"'			'1|{{(#'
+testcase 'set -- "${h#\#}"'			'1|#'
+
+testcase 'set -- ${p%"${p#?}"}'			'1|/'
+testcase 'set -- ${p%"${p#??????}"}'		'1|/etc'
+testcase 'set -- ${p%"${p#???????}"}'		'1|/etc/'
+testcase 'set -- "${p%"${p#?}"}"'		'1|/'
+testcase 'set -- "${p%"${p#??????}"}"'		'1|/et[c]'
+testcase 'set -- "${p%"${p#???????}"}"'		'1|/et[c]/'
+testcase 'set -- ${p#"${p}"}'			'0|'
+testcase 'set -- "${p#"${p}"}"'			'1|'
+testcase 'set -- "${p#*\[}"'			'1|c]/'
+
+test "x$failures" = x

Copied: user/imp/tbemd/tools/regression/bin/sh/parameters/pwd1.0 (from r206514, head/tools/regression/bin/sh/parameters/pwd1.0)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ user/imp/tbemd/tools/regression/bin/sh/parameters/pwd1.0	Mon Apr 12 23:11:20 2010	(r206521, copy of r206514, head/tools/regression/bin/sh/parameters/pwd1.0)
@@ -0,0 +1,11 @@
+# $FreeBSD$
+# Check that bogus PWD values are not accepted from the environment.
+
+cd / || exit 3
+failures=0
+[ "$(PWD=foo sh -c 'pwd')" = / ] || : $((failures += 1))
+[ "$(PWD=/var/empty sh -c 'pwd')" = / ] || : $((failures += 1))
+[ "$(PWD=/var/empty/foo sh -c 'pwd')" = / ] || : $((failures += 1))
+[ "$(PWD=/bin/ls sh -c 'pwd')" = / ] || : $((failures += 1))
+
+exit $((failures != 0))

Copied: user/imp/tbemd/tools/regression/bin/sh/parser/heredoc1.0 (from r206514, head/tools/regression/bin/sh/parser/heredoc1.0)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ user/imp/tbemd/tools/regression/bin/sh/parser/heredoc1.0	Mon Apr 12 23:11:20 2010	(r206521, copy of r206514, head/tools/regression/bin/sh/parser/heredoc1.0)
@@ -0,0 +1,85 @@
+# $FreeBSD$
+
+failures=0
+
+check() {
+	if ! eval "[ $* ]"; then
+		echo "Failed: $*"
+		: $((failures += 1))
+	fi
+}
+
+check '"$(cat <<EOF
+hi
+EOF
+)" = hi'
+
+check '"$(cat <<EOF
+${$+hi}
+EOF
+)" = hi'
+
+unset yy
+check '"$(cat <<EOF
+${yy-hi}
+EOF
+)" = hi'
+
+check '"$(cat <<EOF
+${$+hi
+there}
+EOF
+)" = "hi
+there"'
+
+check '"$(cat <<EOF
+$((1+1))
+EOF
+)" = 2'
+
+check '"$(cat <<EOF
+$(echo hi)
+EOF
+)" = hi'
+
+check '"$(cat <<EOF
+`echo hi`
+EOF
+)" = hi'
+
+check '"$(cat <<\EOF
+${$+hi}
+EOF
+)" = "\${\$+hi}"'
+
+check '"$(cat <<\EOF
+$(
+EOF
+)" = \$\('
+
+check '"$(cat <<\EOF
+`
+EOF
+)" = \`'
+
+check '"$(cat <<EOF
+"
+EOF
+)" = \"'
+
+check '"$(cat <<\EOF
+"
+EOF
+)" = \"'
+
+check '"$(cat <<esac
+'"'"'
+esac
+)" = "'"'"'"'
+
+check '"$(cat <<\)
+'"'"'
+)
+)" = "'"'"'"'
+
+exit $((failures != 0))

Copied: user/imp/tbemd/tools/regression/bin/sh/parser/heredoc2.0 (from r206514, head/tools/regression/bin/sh/parser/heredoc2.0)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ user/imp/tbemd/tools/regression/bin/sh/parser/heredoc2.0	Mon Apr 12 23:11:20 2010	(r206521, copy of r206514, head/tools/regression/bin/sh/parser/heredoc2.0)
@@ -0,0 +1,44 @@
+# $FreeBSD$
+
+failures=0
+
+check() {
+	if ! eval "[ $* ]"; then
+		echo "Failed: $*"
+		: $((failures += 1))
+	fi
+}
+
+s='ast*que?non' sq=\' dq=\"
+
+check '"$(cat <<EOF
+${s}
+EOF
+)" = "ast*que?non"'
+
+check '"$(cat <<EOF
+${s+"x"}
+EOF
+)" = ${dq}x${dq}'
+
+check '"$(cat <<EOF
+${s+'$sq'x'$sq'}
+EOF
+)" = ${sq}x${sq}'
+
+check '"$(cat <<EOF
+${s#ast}
+EOF
+)" = "*que?non"'
+
+check '"$(cat <<EOF
+${s##"ast"}
+EOF
+)" = "*que?non"'
+
+check '"$(cat <<EOF
+${s##'$sq'ast'$sq'}
+EOF
+)" = "*que?non"'
+
+exit $((failures != 0))

Modified: user/imp/tbemd/tools/regression/mqueue/mqtest1/mqtest1.c
==============================================================================
--- user/imp/tbemd/tools/regression/mqueue/mqtest1/mqtest1.c	Mon Apr 12 23:09:52 2010	(r206520)
+++ user/imp/tbemd/tools/regression/mqueue/mqtest1/mqtest1.c	Mon Apr 12 23:11:20 2010	(r206521)
@@ -1,10 +1,11 @@
 /* $FreeBSD$ */
 
-#include <stdio.h>
-#include <mqueue.h>
+#include <err.h>
+#include <errno.h>
 #include <fcntl.h>
+#include <mqueue.h>
 #include <signal.h>
-#include <errno.h>
+#include <stdio.h>
 
 #define MQNAME	"/mytstqueue1"
 

Modified: user/imp/tbemd/tools/regression/mqueue/mqtest2/mqtest2.c
==============================================================================
--- user/imp/tbemd/tools/regression/mqueue/mqtest2/mqtest2.c	Mon Apr 12 23:09:52 2010	(r206520)

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



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