fix x+=<<
This commit is contained in:
parent
1971bb2ad4
commit
4afe543fa0
24
check.t
24
check.t
|
@ -1,4 +1,4 @@
|
||||||
# $MirOS: src/bin/mksh/check.t,v 1.662 2014/10/10 22:10:19 tg Exp $
|
# $MirOS: src/bin/mksh/check.t,v 1.663 2014/10/12 19:54:58 tg Exp $
|
||||||
# OpenBSD src/regress/bin/ksh updated: 2013/12/02 20:39:44
|
# OpenBSD src/regress/bin/ksh updated: 2013/12/02 20:39:44
|
||||||
#-
|
#-
|
||||||
# Copyright © 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
|
# Copyright © 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
|
||||||
|
@ -27,7 +27,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 R50 2014/10/07
|
@(#)MIRBSD KSH R50 2014/10/12
|
||||||
description:
|
description:
|
||||||
Check version of shell.
|
Check version of shell.
|
||||||
stdin:
|
stdin:
|
||||||
|
@ -36,7 +36,7 @@ name: KSH_VERSION
|
||||||
category: shell:legacy-no
|
category: shell:legacy-no
|
||||||
---
|
---
|
||||||
expected-stdout:
|
expected-stdout:
|
||||||
@(#)LEGACY KSH R50 2014/10/07
|
@(#)LEGACY KSH R50 2014/10/12
|
||||||
description:
|
description:
|
||||||
Check version of legacy shell.
|
Check version of legacy shell.
|
||||||
stdin:
|
stdin:
|
||||||
|
@ -2389,6 +2389,14 @@ stdin:
|
||||||
vf=<<<$'=f $x \x40='
|
vf=<<<$'=f $x \x40='
|
||||||
# now check
|
# now check
|
||||||
print -r -- "| va={$va} vb={$vb} vc={$vc} vd={$vd} ve={$ve} vf={$vf} |"
|
print -r -- "| va={$va} vb={$vb} vc={$vc} vd={$vd} ve={$ve} vf={$vf} |"
|
||||||
|
# check append
|
||||||
|
v=<<-EOF
|
||||||
|
vapp1
|
||||||
|
EOF
|
||||||
|
v+=<<-EOF
|
||||||
|
vapp2
|
||||||
|
EOF
|
||||||
|
print -r -- "| ${v//$'\n'/^} |"
|
||||||
expected-stdout:
|
expected-stdout:
|
||||||
function foo {
|
function foo {
|
||||||
vc=<<-EOF
|
vc=<<-EOF
|
||||||
|
@ -2404,6 +2412,7 @@ expected-stdout:
|
||||||
} ve={=e $x \x40=
|
} ve={=e $x \x40=
|
||||||
} vf={=f $x @=
|
} vf={=f $x @=
|
||||||
} |
|
} |
|
||||||
|
| vapp1^vapp2^ |
|
||||||
---
|
---
|
||||||
name: heredoc-11
|
name: heredoc-11
|
||||||
description:
|
description:
|
||||||
|
@ -2433,6 +2442,14 @@ stdin:
|
||||||
eval "$fnd"
|
eval "$fnd"
|
||||||
foo
|
foo
|
||||||
print -r -- "| va={$va} vb={$vb} vc={$vc} vd={$vd} |"
|
print -r -- "| va={$va} vb={$vb} vc={$vc} vd={$vd} |"
|
||||||
|
# check append
|
||||||
|
v=<<-
|
||||||
|
vapp1
|
||||||
|
<<
|
||||||
|
v+=<<-''
|
||||||
|
vapp2
|
||||||
|
|
||||||
|
print -r -- "| ${v//$'\n'/^} |"
|
||||||
expected-stdout:
|
expected-stdout:
|
||||||
function foo {
|
function foo {
|
||||||
vc=<<-
|
vc=<<-
|
||||||
|
@ -2450,6 +2467,7 @@ expected-stdout:
|
||||||
} vc={=c u \x40=
|
} vc={=c u \x40=
|
||||||
} vd={=d $x \x40=
|
} vd={=d $x \x40=
|
||||||
} |
|
} |
|
||||||
|
| vapp1^vapp2^ |
|
||||||
---
|
---
|
||||||
name: heredoc-comsub-1
|
name: heredoc-comsub-1
|
||||||
description:
|
description:
|
||||||
|
|
9
exec.c
9
exec.c
|
@ -23,7 +23,7 @@
|
||||||
|
|
||||||
#include "sh.h"
|
#include "sh.h"
|
||||||
|
|
||||||
__RCSID("$MirOS: src/bin/mksh/exec.c,v 1.133 2014/10/03 17:32:11 tg Exp $");
|
__RCSID("$MirOS: src/bin/mksh/exec.c,v 1.134 2014/10/12 19:55:00 tg Exp $");
|
||||||
|
|
||||||
#ifndef MKSH_DEFAULT_EXECSHELL
|
#ifndef MKSH_DEFAULT_EXECSHELL
|
||||||
#define MKSH_DEFAULT_EXECSHELL "/bin/sh"
|
#define MKSH_DEFAULT_EXECSHELL "/bin/sh"
|
||||||
|
@ -94,11 +94,14 @@ execute(struct op * volatile t,
|
||||||
/* the variable assignment begins with a valid varname */
|
/* the variable assignment begins with a valid varname */
|
||||||
(ccp = skip_wdvarname(t->vars[0], true)) != t->vars[0] &&
|
(ccp = skip_wdvarname(t->vars[0], true)) != t->vars[0] &&
|
||||||
/* and has no right-hand side (i.e. "varname=") */
|
/* and has no right-hand side (i.e. "varname=") */
|
||||||
ccp[0] == CHAR && ccp[1] == '=' && ccp[2] == EOS &&
|
ccp[0] == CHAR && ((ccp[1] == '=' && ccp[2] == EOS) ||
|
||||||
|
/* or "varname+=" */ (ccp[1] == '+' && ccp[2] == CHAR &&
|
||||||
|
ccp[3] == '=' && ccp[4] == EOS)) &&
|
||||||
/* plus we can have a here document content */
|
/* plus we can have a here document content */
|
||||||
herein(t->ioact[0], &cp) == 0 && cp && *cp) {
|
herein(t->ioact[0], &cp) == 0 && cp && *cp) {
|
||||||
char *sp = cp, *dp;
|
char *sp = cp, *dp;
|
||||||
size_t n = ccp - t->vars[0] + 2, z;
|
size_t n = ccp - t->vars[0] + (ccp[1] == '+' ? 4 : 2);
|
||||||
|
size_t z;
|
||||||
|
|
||||||
/* drop redirection (will be garbage collected) */
|
/* drop redirection (will be garbage collected) */
|
||||||
t->ioact = NULL;
|
t->ioact = NULL;
|
||||||
|
|
4
sh.h
4
sh.h
|
@ -169,9 +169,9 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef EXTERN
|
#ifdef EXTERN
|
||||||
__RCSID("$MirOS: src/bin/mksh/sh.h,v 1.697 2014/10/07 15:22:17 tg Exp $");
|
__RCSID("$MirOS: src/bin/mksh/sh.h,v 1.698 2014/10/12 19:55:01 tg Exp $");
|
||||||
#endif
|
#endif
|
||||||
#define MKSH_VERSION "R50 2014/10/07"
|
#define MKSH_VERSION "R50 2014/10/12"
|
||||||
|
|
||||||
/* arithmetic types: C implementation */
|
/* arithmetic types: C implementation */
|
||||||
#if !HAVE_CAN_INTTYPES
|
#if !HAVE_CAN_INTTYPES
|
||||||
|
|
Loading…
Reference in New Issue