update for recent changes

This commit is contained in:
tg 2015-12-12 22:25:15 +00:00
parent 489fb7e845
commit b2b0c0bbb6
6 changed files with 232 additions and 99 deletions

View File

@ -1,5 +1,5 @@
#!/bin/sh
srcversion='$MirOS: src/bin/mksh/Build.sh,v 1.692 2015/12/08 20:59:33 tg Exp $'
srcversion='$MirOS: src/bin/mksh/Build.sh,v 1.693 2015/12/12 22:25:10 tg Exp $'
#-
# Copyright (c) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
# 2011, 2012, 2013, 2014, 2015
@ -100,6 +100,7 @@ do_genopt() {
srcfile=$1
test -f "$srcfile" || genopt_die Source file \$srcfile not set.
bn=`basename "$srcfile" | sed 's/.opt$//'`
o_hdr='/* +++ GENERATED FILE +++ DO NOT EDIT +++ */'
o_gen=
o_str=
o_sym=
@ -128,6 +129,9 @@ do_genopt() {
;;
*:@@*)
genopt_die ;;
0:/\*-|0:\ \**|0:)
o_hdr=$o_hdr$nl$line
;;
0:@*|1:@*)
# begin of a definition block
sym=`echo "$line" | sed 's/^@//'`
@ -177,6 +181,7 @@ do_genopt() {
echo "\"$opts\""
test -n "$cond" && echo "#endif"
done | {
echo "$o_hdr"
echo "#ifndef $o_sym$o_gen"
echo "#else"
cat
@ -2337,7 +2342,7 @@ addsrcs '!' HAVE_STRLCPY strlcpy.c
addsrcs USE_PRINTF_BUILTIN printf.c
test 1 = "$USE_PRINTF_BUILTIN" && add_cppflags -DMKSH_PRINTF_BUILTIN
test 1 = "$HAVE_CAN_VERB" && CFLAGS="$CFLAGS -verbose"
add_cppflags -DMKSH_BUILD_R=511
add_cppflags -DMKSH_BUILD_R=521
$e $bi$me: Finished configuration testing, now producing output.$ao

View File

@ -1,4 +1,4 @@
# $MirOS: src/bin/mksh/Makefile,v 1.144 2015/10/05 17:58:56 tg Exp $
# $MirOS: src/bin/mksh/Makefile,v 1.145 2015/12/12 22:25:11 tg Exp $
#-
# Copyright (c) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
# 2011, 2012, 2013, 2014, 2015
@ -57,7 +57,7 @@ CPPFLAGS+= -DMKSH_ASSUME_UTF8 -DMKSH_DISABLE_DEPRECATED \
-DHAVE_SETGROUPS=1 -DHAVE_STRERROR=0 -DHAVE_STRSIGNAL=0 \
-DHAVE_STRLCPY=1 -DHAVE_FLOCK_DECL=1 -DHAVE_REVOKE_DECL=1 \
-DHAVE_SYS_ERRLIST_DECL=1 -DHAVE_SYS_SIGLIST_DECL=1 \
-DHAVE_PERSISTENT_HISTORY=1 -DMKSH_BUILD_R=511
-DHAVE_PERSISTENT_HISTORY=1 -DMKSH_BUILD_R=521
CPPFLAGS+= -D${${PROG:L}_tf:C/(Mir${MAN:E}{0,1}){2}/4/:S/x/mksh_BUILD/:U}
CPPFLAGS+= -I.
COPTS+= -std=c89 -Wall

236
check.t
View File

@ -1,4 +1,4 @@
# $MirOS: src/bin/mksh/check.t,v 1.714 2015/12/12 16:37:44 tg Exp $
# $MirOS: src/bin/mksh/check.t,v 1.715 2015/12/12 22:25:12 tg Exp $
# -*- mode: sh -*-
#-
# Copyright © 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
@ -30,7 +30,7 @@
# (2013/12/02 20:39:44) http://openbsd.cs.toronto.edu/cgi-bin/cvsweb/src/regress/bin/ksh/?sortby=date
expected-stdout:
@(#)MIRBSD KSH R51 2015/10/24
@(#)MIRBSD KSH R52 2015/12/12
description:
Check version of shell.
stdin:
@ -39,7 +39,7 @@ name: KSH_VERSION
category: shell:legacy-no
---
expected-stdout:
@(#)LEGACY KSH R51 2015/10/24
@(#)LEGACY KSH R52 2015/12/12
description:
Check version of legacy shell.
stdin:
@ -270,6 +270,14 @@ stdin:
expected-stdout:
bar - baz,z
---
name: arith-compound
description:
Check that arithmetic expressions are compound constructs
stdin:
{ ! (( 0$(cat >&2) )) <<<1; } <<<2
expected-stderr:
1
---
name: arith-lazy-1
description:
Check that only one side of ternary operator is evaluated
@ -1668,6 +1676,17 @@ expected-stdout:
1=02.
2=02.
---
name: expand-weird-4
description:
Check that tilde expansion is enabled in ${x#~}
and cases that are modelled after it (${x/~/~})
stdin:
HOME=/etc
a="~/x"
echo "<${a#~}> <${a#\~}> <${b:-~}> <${b:-\~}> <${c:=~}><$c> <${a/~}> <${a/x/~}> <${a/x/\~}>"
expected-stdout:
<~/x> </x> <~> <\~> <~><~> <~/x> <~//etc> <~/~>
---
name: expand-number-1
description:
Check that positional arguments do not overflow
@ -1861,13 +1880,15 @@ stdin:
echo 20: ${x/\//.}
echo 21: ${x//\//.}
echo 22: ${x///.}
echo 23: ${x//#1/9}
echo 24: ${x//%1/9}
echo 25: ${x//\%1/9}
echo 26: ${x//\\%1/9}
echo 27: ${x//\a/9}
echo 28: ${x//\\a/9}
echo 29: ${x/2/$y}
echo 23: ${x/#1/9}
echo 24: ${x//#1/9}
echo 25: ${x/%1/9}
echo 26: ${x//%1/9}
echo 27: ${x//\%1/9}
echo 28: ${x//\\%1/9}
echo 29: ${x//\a/9}
echo 30: ${x//\\a/9}
echo 31: ${x/2/$y}
expected-stdout:
1: 122321_ab/cde_b/c_1221
2: 131_ab/cde_b/c_11
@ -1892,12 +1913,14 @@ expected-stdout:
21: 1222321_ab.cde_b.c_1221
22: 1222321_ab/cde_b/c_1221
23: 9222321_ab/cde_b/c_1221
24: 1222321_ab/cde_b/c_1229
24: 1222321_ab/cde_b/c_1221
25: 1222321_ab/cde_b/c_1229
26: 1222321_ab/cde_b/c_1221
27: 1222321_9b/cde_b/c_1221
28: 1222321_9b/cde_b/c_1221
29: 1xyz22321_ab/cde_b/c_1221
27: 1222321_ab/cde_b/c_1221
28: 1222321_ab/cde_b/c_1221
29: 1222321_9b/cde_b/c_1221
30: 1222321_ab/cde_b/c_1221
31: 1xyz22321_ab/cde_b/c_1221
---
name: eglob-substrpl-2
description:
@ -1922,6 +1945,7 @@ name: eglob-substrpl-3a
description:
Check substring replacement works with variables and slashes, too
stdin:
HOME=/etc
pfx=/home/user
wd=/home/user/tmp
echo "${wd/#$pfx/~}"
@ -1931,9 +1955,9 @@ stdin:
echo "${wd/#"\$pfx"/~}"
echo "${wd/#'\$pfx'/~}"
expected-stdout:
~/tmp
/etc/tmp
/home/user/tmp
~/tmp
/etc/tmp
/home/user/tmp
/home/user/tmp
/home/user/tmp
@ -1942,20 +1966,22 @@ name: eglob-substrpl-3b
description:
More of this, bash fails it (bash4 passes)
stdin:
HOME=/etc
pfx=/home/user
wd=/home/user/tmp
echo "${wd/#$(echo /home/user)/~}"
echo "${wd/#"$(echo /home/user)"/~}"
echo "${wd/#'$(echo /home/user)'/~}"
expected-stdout:
~/tmp
~/tmp
/etc/tmp
/etc/tmp
/home/user/tmp
---
name: eglob-substrpl-3c
description:
Even more weird cases
stdin:
HOME=/etc
pfx=/home/user
wd='$pfx/tmp'
echo 1: ${wd/#$pfx/~}
@ -1981,31 +2007,31 @@ stdin:
echo 17: ${ts/+($tp)/$tr}
echo 18: ${ts/+($tp)/c/d}
echo 19: ${ts/+($tp)/c\/d}
echo 25: ${ts//a\/b/$tr}
echo 26: ${ts//a\/b/\$tr}
echo 27: ${ts//$tp/$tr}
echo 28: ${ts//$tp/c/d}
echo 29: ${ts//$tp/c\/d}
echo 30: ${ts//+(a\/b)/$tr}
echo 31: ${ts//+(a\/b)/\$tr}
echo 32: ${ts//+($tp)/$tr}
echo 33: ${ts//+($tp)/c/d}
echo 34: ${ts//+($tp)/c\/d}
echo 20: ${ts//a\/b/$tr}
echo 21: ${ts//a\/b/\$tr}
echo 22: ${ts//$tp/$tr}
echo 23: ${ts//$tp/c/d}
echo 24: ${ts//$tp/c\/d}
echo 25: ${ts//+(a\/b)/$tr}
echo 26: ${ts//+(a\/b)/\$tr}
echo 27: ${ts//+($tp)/$tr}
echo 28: ${ts//+($tp)/c/d}
echo 29: ${ts//+($tp)/c\/d}
tp="+($tp)"
echo 40: ${ts/$tp/$tr}
echo 41: ${ts//$tp/$tr}
echo 30: ${ts/$tp/$tr}
echo 31: ${ts//$tp/$tr}
expected-stdout:
1: $pfx/tmp
2: ~/tmp
2: /etc/tmp
3: $pfx/tmp
4: ~/tmp
5: ~/tmp
6: ~/tmp
4: /etc/tmp
5: /etc/tmp
6: $pfx/tmp
7: c/da/b$tp$tp_a/b$tp_*(a/b)_*($tp)
8: $tra/b$tp$tp_a/b$tp_*(a/b)_*($tp)
9: c/da/b$tp$tp_a/b$tp_*(a/b)_*($tp)
10: a/ba/bc/d$tp_a/b$tp_*(a/b)_*($tp)
11: c/da/b$tp$tp_a/b$tp_*(a/b)_*($tp)
11: a/ba/b$tp$tp_a/b$tp_*(a/b)_*($tp)
12: c/da/b$tp$tp_a/b$tp_*(a/b)_*($tp)
13: c/da/b$tp$tp_a/b$tp_*(a/b)_*($tp)
14: c\/da/b$tp$tp_a/b$tp_*(a/b)_*($tp)
@ -2014,21 +2040,21 @@ expected-stdout:
17: c/d$tp$tp_a/b$tp_*(a/b)_*($tp)
18: c/d$tp$tp_a/b$tp_*(a/b)_*($tp)
19: c/d$tp$tp_a/b$tp_*(a/b)_*($tp)
25: c/dc/d$tp$tp_c/d$tp_*(c/d)_*($tp)
26: $tr$tr$tp$tp_$tr$tp_*($tr)_*($tp)
27: c/dc/d$tp$tp_c/d$tp_*(c/d)_*($tp)
28: c/dc/d$tp$tp_c/d$tp_*(c/d)_*($tp)
29: c/dc/d$tp$tp_c/d$tp_*(c/d)_*($tp)
30: c/d$tp$tp_c/d$tp_*(c/d)_*($tp)
31: $tr$tp$tp_$tr$tp_*($tr)_*($tp)
32: c/d$tp$tp_c/d$tp_*(c/d)_*($tp)
33: c/d$tp$tp_c/d$tp_*(c/d)_*($tp)
34: c/d$tp$tp_c/d$tp_*(c/d)_*($tp)
40: a/ba/b$tp$tp_a/b$tp_*(a/b)_*($tp)
41: a/ba/b$tp$tp_a/b$tp_*(a/b)_*($tp)
20: c/dc/d$tp$tp_c/d$tp_*(c/d)_*($tp)
21: $tr$tr$tp$tp_$tr$tp_*($tr)_*($tp)
22: c/dc/d$tp$tp_c/d$tp_*(c/d)_*($tp)
23: c/dc/d$tp$tp_c/d$tp_*(c/d)_*($tp)
24: c/dc/d$tp$tp_c/d$tp_*(c/d)_*($tp)
25: c/d$tp$tp_c/d$tp_*(c/d)_*($tp)
26: $tr$tp$tp_$tr$tp_*($tr)_*($tp)
27: c/d$tp$tp_c/d$tp_*(c/d)_*($tp)
28: c/d$tp$tp_c/d$tp_*(c/d)_*($tp)
29: c/d$tp$tp_c/d$tp_*(c/d)_*($tp)
30: a/ba/b$tp$tp_a/b$tp_*(a/b)_*($tp)
31: a/ba/b$tp$tp_a/b$tp_*(a/b)_*($tp)
# This is what GNU bash does:
# 40: c/d$tp$tp_a/b$tp_*(a/b)_*($tp)
# 41: c/d$tp$tp_c/d$tp_*(c/d)_*($tp)
# 30: c/d$tp$tp_a/b$tp_*(a/b)_*($tp)
# 31: c/d$tp$tp_c/d$tp_*(c/d)_*($tp)
---
name: eglob-utf8-1
description:
@ -6384,6 +6410,41 @@ expected-stderr-pattern:
/bad substitution/
expected-exit: 1
---
name: xxx-variable-syntax-4
description:
Not all kinds of trims are currently impossible, check those who do
stdin:
foo() {
echo "<$*> X${*:+ }X"
}
foo a b
foo "" c
foo ""
foo "" ""
IFS=:
foo a b
foo "" c
foo ""
foo "" ""
IFS=
foo a b
foo "" c
foo ""
foo "" ""
expected-stdout:
<a b> X X
< c> X X
<> XX
< > X X
<a:b> X X
<:c> X X
<> XX
<:> X X
<ab> X X
<c> X X
<> XX
<> XX
---
name: xxx-substitution-eval-order
description:
Check order of evaluation of expressions
@ -7115,6 +7176,41 @@ expected-stdout:
11 0
12 0
---
name: test-numeq
description:
Check numeric -eq works (R40d regression); spotted by Martijn Dekker
stdin:
tst() {
eval "$2"
case $? in
(0) echo yepp 0 \#"$*" ;;
(1) echo nope 1 \#"$*" ;;
(2) echo terr 2 \#"$*" ;;
(*) echo wtf\? $? \#"$*" ;;
esac
}
tst 1 'test 2 -eq 2'
tst 2 'test 2 -eq 2a'
tst 3 'test 2 -eq 3'
tst 4 'test 2 -ne 2'
tst 5 'test 2 -ne 2a'
tst 6 'test 2 -ne 3'
tst 7 'test \! 2 -eq 2'
tst 8 'test \! 2 -eq 2a'
tst 9 'test \! 2 -eq 3'
expected-stdout:
yepp 0 #1 test 2 -eq 2
terr 2 #2 test 2 -eq 2a
nope 1 #3 test 2 -eq 3
nope 1 #4 test 2 -ne 2
terr 2 #5 test 2 -ne 2a
yepp 0 #6 test 2 -ne 3
nope 1 #7 test \! 2 -eq 2
terr 2 #8 test \! 2 -eq 2a
yepp 0 #9 test \! 2 -eq 3
expected-stderr-pattern:
/bad number/
---
name: mkshrc-1
description:
Check that ~/.mkshrc works correctly.
@ -10470,7 +10566,9 @@ expected-stdout:
}
inline_TWHILE() {
i=1
while \let] " i < 10 "
while {
\let] " i < 10 "
}
do
echo $i
let ++i
@ -10480,20 +10578,22 @@ expected-stdout:
i=1; while (( i < 10 )); do echo $i; let ++i; done
); }
function comsub_TWHILE {
x=$(i=1 ; while \let] " i < 10 " ; do echo $i ; let ++i ; done )
x=$(i=1 ; while { \let] " i < 10 " ; } ; do echo $i ; let ++i ; done )
}
function reread_TWHILE { x=$((
i=1; while (( i < 10 )); do echo $i; let ++i; done
)|tr u x); }
function reread_TWHILE {
x=$(( i=1 ; while \let] " i < 10 " ; do echo $i ; let ++i ; done ) | tr u x )
x=$(( i=1 ; while { \let] " i < 10 " ; } ; do echo $i ; let ++i ; done ) | tr u x )
}
inline_TUNTIL() {
i=10; until (( !--i )) ; do echo $i; done
}
inline_TUNTIL() {
i=10
until \let] " !--i "
until {
\let] " !--i "
}
do
echo $i
done
@ -10502,13 +10602,13 @@ expected-stdout:
i=10; until (( !--i )) ; do echo $i; done
); }
function comsub_TUNTIL {
x=$(i=10 ; until \let] " !--i " ; do echo $i ; done )
x=$(i=10 ; until { \let] " !--i " ; } ; do echo $i ; done )
}
function reread_TUNTIL { x=$((
i=10; until (( !--i )) ; do echo $i; done
)|tr u x); }
function reread_TUNTIL {
x=$(( i=10 ; until \let] " !--i " ; do echo $i ; done ) | tr u x )
x=$(( i=10 ; until { \let] " !--i " ; } ; do echo $i ; done ) | tr u x )
}
inline_TCOPROC() {
cat * |& ls
@ -11122,7 +11222,9 @@ expected-stdout:
}
inline_TWHILE() {
i=1
while \let] " i < 10 " >&3
while {
\let] " i < 10 "
} >&3
do
echo $i
let ++i
@ -11132,20 +11234,22 @@ expected-stdout:
i=1; while (( i < 10 )) >&3; do echo $i; let ++i; done >&3
); }
function comsub_TWHILE {
x=$(i=1 ; while \let] " i < 10 " >&3 ; do echo $i ; let ++i ; done >&3 )
x=$(i=1 ; while { \let] " i < 10 " ; } >&3 ; do echo $i ; let ++i ; done >&3 )
}
function reread_TWHILE { x=$((
i=1; while (( i < 10 )) >&3; do echo $i; let ++i; done >&3
)|tr u x); }
function reread_TWHILE {
x=$(( i=1 ; while \let] " i < 10 " >&3 ; do echo $i ; let ++i ; done >&3 ) | tr u x )
x=$(( i=1 ; while { \let] " i < 10 " ; } >&3 ; do echo $i ; let ++i ; done >&3 ) | tr u x )
}
inline_TUNTIL() {
i=10; until (( !--i )) >&3 ; do echo $i; done >&3
}
inline_TUNTIL() {
i=10
until \let] " !--i " >&3
until {
\let] " !--i "
} >&3
do
echo $i
done >&3
@ -11154,13 +11258,13 @@ expected-stdout:
i=10; until (( !--i )) >&3 ; do echo $i; done >&3
); }
function comsub_TUNTIL {
x=$(i=10 ; until \let] " !--i " >&3 ; do echo $i ; done >&3 )
x=$(i=10 ; until { \let] " !--i " ; } >&3 ; do echo $i ; done >&3 )
}
function reread_TUNTIL { x=$((
i=10; until (( !--i )) >&3 ; do echo $i; done >&3
)|tr u x); }
function reread_TUNTIL {
x=$(( i=10 ; until \let] " !--i " >&3 ; do echo $i ; done >&3 ) | tr u x )
x=$(( i=10 ; until { \let] " !--i " ; } >&3 ; do echo $i ; done >&3 ) | tr u x )
}
inline_TCOPROC() {
cat * >&3 |& >&3 ls
@ -11657,6 +11761,16 @@ stdin:
expected-stdout:
fxbar 0
---
name: better-parens-5
description:
Another corner case
stdin:
( (echo 'fo o$bar' "baz\$bla\"" m\$eh) | tr a A)
((echo 'fo o$bar' "baz\$bla\"" m\$eh) | tr a A)
expected-stdout:
fo o$bAr bAz$blA" m$eh
fo o$bAr bAz$blA" m$eh
---
name: echo-test-1
description:
Test what the echo builtin does (mksh)

10
lksh.1
View File

@ -1,4 +1,4 @@
.\" $MirOS: src/bin/mksh/lksh.1,v 1.15 2015/10/09 21:36:56 tg Exp $
.\" $MirOS: src/bin/mksh/lksh.1,v 1.16 2015/12/12 22:25:14 tg Exp $
.\"-
.\" Copyright (c) 2008, 2009, 2010, 2012, 2013, 2015
.\" mirabilos <m@mirbsd.org>
@ -72,7 +72,7 @@
.\" with -mandoc, it might implement .Mx itself, but we want to
.\" use our own definition. And .Dd must come *first*, always.
.\"
.Dd $Mdocdate: October 9 2015 $
.Dd $Mdocdate: December 12 2015 $
.\"
.\" Check which macro package we use, and do other -mdoc setup.
.\"
@ -302,6 +302,12 @@ instead of locally scoping them.
.Pp
.Pa https://www.mirbsd.org/ksh\-chan.htm
.Sh CAVEATS
The distinction between the shell variants
.Pq Nm lksh / Nm mksh
and shell flags
.Pq Fl o Ic posix / Ic sh
will be reworked for an upcoming release.
.Pp
To use
.Nm
as

64
mksh.1
View File

@ -1,4 +1,4 @@
.\" $MirOS: src/bin/mksh/mksh.1,v 1.382 2015/10/09 21:36:57 tg Exp $
.\" $MirOS: src/bin/mksh/mksh.1,v 1.383 2015/12/12 22:25:14 tg Exp $
.\" $OpenBSD: ksh.1,v 1.160 2015/07/04 13:27:04 feinerer Exp $
.\"-
.\" Copyright © 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
@ -74,7 +74,7 @@
.\" with -mandoc, it might implement .Mx itself, but we want to
.\" use our own definition. And .Dd must come *first*, always.
.\"
.Dd $Mdocdate: October 9 2015 $
.Dd $Mdocdate: December 12 2015 $
.\"
.\" Check which macro package we use, and do other -mdoc setup.
.\"
@ -914,7 +914,7 @@ is evaluated; equivalent to
.Sx Arithmetic expressions
and the
.Ic let
command, below).
command, below) in a compound construct.
.It Bq Bq Ar \ \&expression\ \&
Similar to the
.Ic test
@ -1625,31 +1625,40 @@ Cannot be applied to a vector.
.Xc
.It Xo
.Pf ${ Ar name
.Pf /# Ar pattern / Ar string No }
.Xc
.It Xo
.Pf ${ Ar name
.Pf /% Ar pattern / Ar string No }
.Xc
.It Xo
.Pf ${ Ar name
.Pf // Ar pattern / Ar string No }
.Xc
.Sm on
Similar to ${..##..} substitution, but it replaces the longest match of
.Ar pattern ,
anchored anywhere in the value, with
.Ar string .
If
The longest match of
.Ar pattern
begins with
.Ql # ,
it is anchored at the beginning of the value; if it begins with
.Ql % ,
it is anchored at the end.
Empty patterns cause no replacement to happen.
A single leading
.Ql /
or use of a pattern that matches the empty string causes the
replacement to happen only once; two leading slashes cause
all occurrences of matches in the value to be replaced.
If the trailing
.Pf / Ar string
is omitted, any matches of
in the value of parameter
.Ar name
is replaced with
.Ar string
(deleted if
.Ar string
is empty; the trailing slash
.Pq Ql /
may be omitted in that case).
A leading slash followed by
.Ql #
or
.Ql %
causes the pattern to be anchored at the beginning or end of
the value, respectively; empty unanchored
.Ar pattern Ns s
cause no replacement; a single leading slash or use of a
.Ar pattern
are replaced by the empty string, i.e. deleted.
that matches the empty string causes the replacement to
happen only once; two leading slashes cause all occurrences
of matches in the value to be replaced.
Cannot be applied to a vector.
Inefficiently implemented, may be slow.
.Pp
@ -3633,7 +3642,7 @@ the parsing or evaluation of an expression, the exit status is greater than 1.
Since expressions may need to be quoted,
.No \&(( Ar expr No ))
is syntactic sugar for
.No let \&" Ns Ar expr Ns \&" .
.No "{ let '" Ns Ar expr Ns "'; }" .
.Pp
.It Ic let]
Internally used alias for
@ -5320,7 +5329,7 @@ The
builtin does not interpret backslashes and only supports the exact option
.Dq Fl n .
.It
\&... (list is incomplete)
\&... (list is incomplete and may change for R53)
.El
.Ss SH mode
Compatibility mode; intended for use with legacy scripts that
@ -5341,7 +5350,7 @@ The
builtin does not interpret backslashes and only supports the exact option
.Dq Fl n .
.It
\&... (list is incomplete)
\&... (list is incomplete and may change for R53)
.El
.Ss Interactive input line editing
The shell supports three modes of reading command lines from a
@ -6345,6 +6354,7 @@ contains the system and suid profile.
.Xr cat 1 ,
.Xr ed 1 ,
.Xr getopt 1 ,
.Xr lksh 1 ,
.Xr sed 1 ,
.Xr sh 1 ,
.Xr stty 1 ,
@ -6565,7 +6575,7 @@ for the in-memory portion of the history is slow, should use
.Xr memmove 3 .
.Pp
This document attempts to describe
.Nm mksh\ R51 Ns -CVS
.Nm mksh\ R52
and up,
.\" with vendor patches from insert-your-name-here,
compiled without any options impacting functionality, such as

8
sh.h
View File

@ -175,9 +175,9 @@
#endif
#ifdef EXTERN
__RCSID("$MirOS: src/bin/mksh/sh.h,v 1.750 2015/10/24 19:45:23 tg Exp $");
__RCSID("$MirOS: src/bin/mksh/sh.h,v 1.751 2015/12/12 22:25:15 tg Exp $");
#endif
#define MKSH_VERSION "R51 2015/10/24"
#define MKSH_VERSION "R52 2015/12/12"
/* arithmetic types: C implementation */
#if !HAVE_CAN_INTTYPES
@ -576,7 +576,7 @@ char *ucstrstr(char *, const char *);
#define mkssert(e) do { } while (/* CONSTCOND */ 0)
#endif
#if (!defined(MKSH_BUILDMAKEFILE4BSD) && !defined(MKSH_BUILDSH)) || (MKSH_BUILD_R != 511)
#if (!defined(MKSH_BUILDMAKEFILE4BSD) && !defined(MKSH_BUILDSH)) || (MKSH_BUILD_R != 521)
#error Must run Build.sh to compile this.
extern void thiswillneverbedefinedIhope(void);
int
@ -1998,8 +1998,6 @@ struct op *tcopy(struct op *, Area *);
char *wdcopy(const char *, Area *);
const char *wdscan(const char *, int);
#define WDS_TPUTS BIT(0) /* tputS (dumpwdvar) mode */
#define WDS_KEEPQ BIT(1) /* keep quote characters */
#define WDS_MAGIC BIT(2) /* make MAGIC */
char *wdstrip(const char *, int);
void tfree(struct op *, Area *);
void dumpchar(struct shf *, int);