From 9179c1011992f1edfce65799d177e79af21291f5 Mon Sep 17 00:00:00 2001 From: tg Date: Thu, 21 May 2009 14:28:35 +0000 Subject: [PATCH] =?UTF-8?q?pgas=20mentioned=20ksh93=20does=20[[=20$foo=20]?= =?UTF-8?q?]=20(ipv=20forced=20[[=20-n=20$foo=20]])=20and=20it=20actually?= =?UTF-8?q?=20REDUCES=20code=20size=20to=20allow=20it=20as=20well;=20menti?= =?UTF-8?q?on=20in=20the=20manpage=20that=20it=E2=80=99s=20merely=20unport?= =?UTF-8?q?able=20(and=20of=20course=20exe-=20cution=20time=20differs);=20?= =?UTF-8?q?sync=20clog?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- check.t | 94 +++++++++++++++++++++++++++++++++++++++++++++++++++++++-- funcs.c | 6 +--- mksh.1 | 8 ++--- sh.h | 4 +-- 4 files changed, 99 insertions(+), 13 deletions(-) diff --git a/check.t b/check.t index 7c0991c..23193f8 100644 --- a/check.t +++ b/check.t @@ -1,4 +1,4 @@ -# $MirOS: src/bin/mksh/check.t,v 1.278 2009/05/20 10:10:00 tg Exp $ +# $MirOS: src/bin/mksh/check.t,v 1.279 2009/05/21 14:28:32 tg Exp $ # $OpenBSD: bksl-nl.t,v 1.2 2001/01/28 23:04:56 niklas Exp $ # $OpenBSD: history.t,v 1.5 2001/01/28 23:04:56 niklas Exp $ # $OpenBSD: read.t,v 1.3 2003/03/10 03:48:16 david Exp $ @@ -25,7 +25,7 @@ # http://www.research.att.com/~gsf/public/ifs.sh expected-stdout: - @(#)MIRBSD KSH R38 2009/05/19 + @(#)MIRBSD KSH R38 2009/05/21 description: Check version of shell. stdin: @@ -5632,3 +5632,93 @@ stdin: expected-stdout: yes --- +name: test-stnze-1 +description: + Check that the short form [ $x ] works +stdin: + i=0 + [ -n $x ] + rv=$?; echo $((++i)) $rv + [ $x ] + rv=$?; echo $((++i)) $rv + [ -n "$x" ] + rv=$?; echo $((++i)) $rv + [ "$x" ] + rv=$?; echo $((++i)) $rv + x=0 + [ -n $x ] + rv=$?; echo $((++i)) $rv + [ $x ] + rv=$?; echo $((++i)) $rv + [ -n "$x" ] + rv=$?; echo $((++i)) $rv + [ "$x" ] + rv=$?; echo $((++i)) $rv + x='1 -a 1 = 2' + [ -n $x ] + rv=$?; echo $((++i)) $rv + [ $x ] + rv=$?; echo $((++i)) $rv + [ -n "$x" ] + rv=$?; echo $((++i)) $rv + [ "$x" ] + rv=$?; echo $((++i)) $rv +expected-stdout: + 1 0 + 2 1 + 3 1 + 4 1 + 5 0 + 6 0 + 7 0 + 8 0 + 9 1 + 10 1 + 11 0 + 12 0 +--- +name: test-stnze-2 +description: + Check that the short form [[ $x ]] works (ksh93 extension) +stdin: + i=0 + [[ -n $x ]] + rv=$?; echo $((++i)) $rv + [[ $x ]] + rv=$?; echo $((++i)) $rv + [[ -n "$x" ]] + rv=$?; echo $((++i)) $rv + [[ "$x" ]] + rv=$?; echo $((++i)) $rv + x=0 + [[ -n $x ]] + rv=$?; echo $((++i)) $rv + [[ $x ]] + rv=$?; echo $((++i)) $rv + [[ -n "$x" ]] + rv=$?; echo $((++i)) $rv + [[ "$x" ]] + rv=$?; echo $((++i)) $rv + x='1 -a 1 = 2' + [[ -n $x ]] + rv=$?; echo $((++i)) $rv + [[ $x ]] + rv=$?; echo $((++i)) $rv + [[ -n "$x" ]] + rv=$?; echo $((++i)) $rv + [[ "$x" ]] + rv=$?; echo $((++i)) $rv +expected-stdout: + 1 1 + 2 1 + 3 1 + 4 1 + 5 0 + 6 0 + 7 0 + 8 0 + 9 0 + 10 0 + 11 0 + 12 0 +--- diff --git a/funcs.c b/funcs.c index f346b91..7b8d9c5 100644 --- a/funcs.c +++ b/funcs.c @@ -25,7 +25,7 @@ #include "sh.h" -__RCSID("$MirOS: src/bin/mksh/funcs.c,v 1.108 2009/05/20 10:10:01 tg Exp $"); +__RCSID("$MirOS: src/bin/mksh/funcs.c,v 1.109 2009/05/21 14:28:33 tg Exp $"); /* A leading = means assignments before command are kept; * a leading * means a POSIX special builtin; @@ -2825,10 +2825,6 @@ test_primary(Test_env *te, bool do_eval) return (*te->eval)(te, op, opnd1, opnd2, do_eval); } - if (te->flags & TEF_DBRACKET) { - (*te->error)(te, -1, "missing expression operator"); - return 0; - } return (*te->eval)(te, TO_STNZE, opnd1, NULL, do_eval); } diff --git a/mksh.1 b/mksh.1 index 3726f46..cc2e101 100644 --- a/mksh.1 +++ b/mksh.1 @@ -1,4 +1,4 @@ -.\" $MirOS: src/bin/mksh/mksh.1,v 1.166 2009/05/16 18:40:08 tg Exp $ +.\" $MirOS: src/bin/mksh/mksh.1,v 1.167 2009/05/21 14:28:34 tg Exp $ .\" $OpenBSD: ksh.1,v 1.128 2009/03/06 12:28:36 jmc Exp $ .\"- .\" Copyright © 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 @@ -48,7 +48,7 @@ .el .xD \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 .. .\"- -.Dd $Mdocdate: May 16 2009 $ +.Dd $Mdocdate: May 21 2009 $ .Dt MKSH 1 .Os MirBSD .Sh NAME @@ -794,8 +794,8 @@ succeeds). .It The single argument form of .Ic test , -which tests if the argument has a non-zero length, is not valid; explicit -operators must always be used, e.g. instead of +which tests if the argument has a non-zero length, is not portable, +e.g. instead of .No \&[ Ar str No \&] use .No \&[[ \-n Ar str No \&]] . diff --git a/sh.h b/sh.h index 1007373..25e549e 100644 --- a/sh.h +++ b/sh.h @@ -122,9 +122,9 @@ #define __SCCSID(x) __IDSTRING(sccsid,x) #ifdef EXTERN -__RCSID("$MirOS: src/bin/mksh/sh.h,v 1.301 2009/05/20 10:10:02 tg Exp $"); +__RCSID("$MirOS: src/bin/mksh/sh.h,v 1.302 2009/05/21 14:28:35 tg Exp $"); #endif -#define MKSH_VERSION "R38 2009/05/19" +#define MKSH_VERSION "R38 2009/05/21" #ifndef MKSH_INCLUDES_ONLY