disable parsing of &> as GNU bash iop if -o posix or -o sh, based on IRC discussion where jilles(IIRC) pointed out it breaks existing valid scripts
This commit is contained in:
parent
8697048c2c
commit
a3b5e77c6c
21
check.t
21
check.t
|
@ -1,4 +1,4 @@
|
||||||
# $MirOS: src/bin/mksh/check.t,v 1.600 2013/03/24 00:56:19 tg Exp $
|
# $MirOS: src/bin/mksh/check.t,v 1.601 2013/03/24 15:01:46 tg Exp $
|
||||||
# $OpenBSD: bksl-nl.t,v 1.2 2001/01/28 23:04:56 niklas 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: 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 $
|
# $OpenBSD: read.t,v 1.3 2003/03/10 03:48:16 david Exp $
|
||||||
|
@ -29,7 +29,7 @@
|
||||||
# http://www.freebsd.org/cgi/cvsweb.cgi/src/tools/regression/bin/test/regress.sh?rev=HEAD
|
# http://www.freebsd.org/cgi/cvsweb.cgi/src/tools/regression/bin/test/regress.sh?rev=HEAD
|
||||||
|
|
||||||
expected-stdout:
|
expected-stdout:
|
||||||
@(#)MIRBSD KSH R44 2013/03/23
|
@(#)MIRBSD KSH R44 2013/03/24
|
||||||
description:
|
description:
|
||||||
Check version of shell.
|
Check version of shell.
|
||||||
stdin:
|
stdin:
|
||||||
|
@ -38,7 +38,7 @@ name: KSH_VERSION
|
||||||
category: shell:legacy-no
|
category: shell:legacy-no
|
||||||
---
|
---
|
||||||
expected-stdout:
|
expected-stdout:
|
||||||
@(#)LEGACY KSH R44 2013/03/23
|
@(#)LEGACY KSH R44 2013/03/24
|
||||||
description:
|
description:
|
||||||
Check version of legacy shell.
|
Check version of legacy shell.
|
||||||
stdin:
|
stdin:
|
||||||
|
@ -8511,6 +8511,21 @@ expected-stdout:
|
||||||
ras
|
ras
|
||||||
dwa
|
dwa
|
||||||
---
|
---
|
||||||
|
name: bashiop-5
|
||||||
|
description:
|
||||||
|
Check if GNU bash-like I/O redirection is only supported
|
||||||
|
in !POSIX !sh mode as it breaks existing scripts' syntax
|
||||||
|
(tested only on MirBSD as it uses /dev/fd)
|
||||||
|
category: os:mirbsd
|
||||||
|
stdin:
|
||||||
|
"$__progname" -c 'echo foo>/dev/null&>/dev/fd/2 echo bar1'
|
||||||
|
"$__progname" -o posix -c 'echo foo>/dev/null&>/dev/fd/2 echo bar2'
|
||||||
|
"$__progname" -o sh -c 'echo foo>/dev/null&>/dev/fd/2 echo bar3'
|
||||||
|
expected-stderr:
|
||||||
|
foo echo bar1
|
||||||
|
bar2
|
||||||
|
bar3
|
||||||
|
---
|
||||||
name: mkshiop-1
|
name: mkshiop-1
|
||||||
description:
|
description:
|
||||||
Check for support of more than 9 file descriptors
|
Check for support of more than 9 file descriptors
|
||||||
|
|
5
lex.c
5
lex.c
|
@ -23,7 +23,7 @@
|
||||||
|
|
||||||
#include "sh.h"
|
#include "sh.h"
|
||||||
|
|
||||||
__RCSID("$MirOS: src/bin/mksh/lex.c,v 1.182 2013/02/19 18:45:20 tg Exp $");
|
__RCSID("$MirOS: src/bin/mksh/lex.c,v 1.183 2013/03/24 15:01:48 tg Exp $");
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* states while lexing word
|
* states while lexing word
|
||||||
|
@ -898,7 +898,8 @@ yylex(int cf)
|
||||||
state = SBASE;
|
state = SBASE;
|
||||||
|
|
||||||
dp = Xstring(ws, wp);
|
dp = Xstring(ws, wp);
|
||||||
if ((c == '<' || c == '>' || c == '&') && state == SBASE) {
|
if (state == SBASE && (c == '<' || c == '>' ||
|
||||||
|
(!Flag(FSH) && !Flag(FPOSIX) && c == '&'))) {
|
||||||
struct ioword *iop = alloc(sizeof(struct ioword), ATEMP);
|
struct ioword *iop = alloc(sizeof(struct ioword), ATEMP);
|
||||||
|
|
||||||
if (Xlength(ws, wp) == 0)
|
if (Xlength(ws, wp) == 0)
|
||||||
|
|
9
mksh.1
9
mksh.1
|
@ -1,4 +1,4 @@
|
||||||
.\" $MirOS: src/bin/mksh/mksh.1,v 1.306 2013/03/24 00:56:23 tg Exp $
|
.\" $MirOS: src/bin/mksh/mksh.1,v 1.307 2013/03/24 15:01:49 tg Exp $
|
||||||
.\" $OpenBSD: ksh.1,v 1.145 2013/01/17 21:20:25 jmc Exp $
|
.\" $OpenBSD: ksh.1,v 1.145 2013/01/17 21:20:25 jmc Exp $
|
||||||
.\"-
|
.\"-
|
||||||
.\" Copyright © 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
|
.\" Copyright © 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
|
||||||
|
@ -2434,6 +2434,13 @@ in
|
||||||
.Nm
|
.Nm
|
||||||
but a syntax error in GNU
|
but a syntax error in GNU
|
||||||
.Nm bash .
|
.Nm bash .
|
||||||
|
Setting the
|
||||||
|
.Fl o Ar posix
|
||||||
|
or
|
||||||
|
.Fl o Ar sh
|
||||||
|
shell options disable parsing of this redirection;
|
||||||
|
it's a compatibility feature to legacy scripts, to
|
||||||
|
not be used when writing new shell code.
|
||||||
.It Xo
|
.It Xo
|
||||||
.No &\*(Gt\*(Ba Ar file ,
|
.No &\*(Gt\*(Ba Ar file ,
|
||||||
.No &\*(Gt\*(Gt Ar file ,
|
.No &\*(Gt\*(Gt Ar file ,
|
||||||
|
|
4
sh.h
4
sh.h
|
@ -164,9 +164,9 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef EXTERN
|
#ifdef EXTERN
|
||||||
__RCSID("$MirOS: src/bin/mksh/sh.h,v 1.643 2013/03/24 00:56:25 tg Exp $");
|
__RCSID("$MirOS: src/bin/mksh/sh.h,v 1.644 2013/03/24 15:01:50 tg Exp $");
|
||||||
#endif
|
#endif
|
||||||
#define MKSH_VERSION "R44 2013/03/23"
|
#define MKSH_VERSION "R44 2013/03/24"
|
||||||
|
|
||||||
/* arithmetic types: C implementation */
|
/* arithmetic types: C implementation */
|
||||||
#if !HAVE_CAN_INTTYPES
|
#if !HAVE_CAN_INTTYPES
|
||||||
|
|
Loading…
Reference in New Issue