Upgrade mksh to R46

This commit is contained in:
Robert Scheck 2013-05-05 15:10:27 +02:00
parent ee681d07ac
commit 037b08eed7
3 changed files with 9 additions and 286 deletions

279
lksh.1
View File

@ -1,279 +0,0 @@
.\" $MirOS: contrib/hosted/tg/deb/mksh/debian/lksh.1,v 1.8 2013/04/26 22:25:47 tg Exp $
.\"-
.\" Copyright (c) 2008, 2009, 2010, 2012, 2013
.\" Thorsten “mirabilos” Glaser <tg@mirbsd.org>
.\"-
.\" Try to make GNU groff and AT&T nroff more compatible
.\" * ` generates in gnroff, so use \`
.\" * ' generates in gnroff, \' generates ´, so use \*(aq
.\" * - generates in gnroff, \- generates , so .tr it to -
.\" thus use - for hyphens and \- for minus signs and option dashes
.\" * ~ is size-reduced and placed atop in groff, so use \*(TI
.\" * ^ is size-reduced and placed atop in groff, so use \*(ha
.\" * \(en does not work in nroff, so use \*(en
.\" * <>| are problematic, so redefine and use \*(Lt\*(Gt\*(Ba
.\" Also make sure to use \& especially with two-letter words.
.\" The section after the "doc" macropackage has been loaded contains
.\" additional code to convene between the UCB mdoc macropackage (and
.\" its variant as BSD mdoc in groff) and the GNU mdoc macropackage.
.\"
.ie \n(.g \{\
. if \*[.T]ascii .tr \-\N'45'
. if \*[.T]latin1 .tr \-\N'45'
. if \*[.T]utf8 .tr \-\N'45'
. ds <= \[<=]
. ds >= \[>=]
. ds Rq \[rq]
. ds Lq \[lq]
. ds sL \(aq
. ds sR \(aq
. if \*[.T]utf8 .ds sL `
. if \*[.T]ps .ds sL `
. if \*[.T]utf8 .ds sR '
. if \*[.T]ps .ds sR '
. ds aq \(aq
. ds TI \(ti
. ds ha \(ha
. ds en \(en
.\}
.el \{\
. ds aq '
. ds TI ~
. ds ha ^
. ds en \(em
.\}
.\"
.\" Implement .Dd with the Mdocdate RCS keyword
.\"
.rn Dd xD
.de Dd
.ie \\$1$Mdocdate: \{\
. xD \\$2 \\$3, \\$4
.\}
.el .xD \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8
..
.\"
.\" .Dd must come before definition of .Mx, because when called
.\" with -mandoc, it might implement .Mx itself, but we want to
.\" use our own definition. And .Dd must come *first*, always.
.\"
.Dd $Mdocdate: April 26 2013 $
.\"
.\" Check which macro package we use, and do other -mdoc setup.
.\"
.ie \n(.g \{\
. if \*[.T]utf8 .tr \[la]\*(Lt
. if \*[.T]utf8 .tr \[ra]\*(Gt
. ie d volume-ds-1 .ds tT gnu
. el .ds tT bsd
.\}
.el .ds tT ucb
.\"
.\" Implement .Mx (MirBSD)
.\"
.ie "\*(tT"gnu" \{\
. eo
. de Mx
. nr curr-font \n[.f]
. nr curr-size \n[.ps]
. ds str-Mx \f[\n[curr-font]]\s[\n[curr-size]u]
. ds str-Mx1 \*[Tn-font-size]\%MirOS\*[str-Mx]
. if !\n[arg-limit] \
. if \n[.$] \{\
. ds macro-name Mx
. parse-args \$@
. \}
. if (\n[arg-limit] > \n[arg-ptr]) \{\
. nr arg-ptr +1
. ie (\n[type\n[arg-ptr]] == 2) \
. as str-Mx1 \~\*[arg\n[arg-ptr]]
. el \
. nr arg-ptr -1
. \}
. ds arg\n[arg-ptr] "\*[str-Mx1]
. nr type\n[arg-ptr] 2
. ds space\n[arg-ptr] "\*[space]
. nr num-args (\n[arg-limit] - \n[arg-ptr])
. nr arg-limit \n[arg-ptr]
. if \n[num-args] \
. parse-space-vector
. print-recursive
..
. ec
. ds sP \s0
. ds tN \*[Tn-font-size]
.\}
.el \{\
. de Mx
. nr cF \\n(.f
. nr cZ \\n(.s
. ds aa \&\f\\n(cF\s\\n(cZ
. if \\n(aC==0 \{\
. ie \\n(.$==0 \&MirOS\\*(aa
. el .aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
. \}
. if \\n(aC>\\n(aP \{\
. nr aP \\n(aP+1
. ie \\n(C\\n(aP==2 \{\
. as b1 \&MirOS\ #\&\\*(A\\n(aP\\*(aa
. ie \\n(aC>\\n(aP \{\
. nr aP \\n(aP+1
. nR
. \}
. el .aZ
. \}
. el \{\
. as b1 \&MirOS\\*(aa
. nR
. \}
. \}
..
.\}
.\"-
.Dt LKSH 1
.Os MirBSD
.Sh NAME
.Nm lksh
.Nd Legacy Korn shell built on mksh
.Sh SYNOPSIS
.Nm
.Bk -words
.Op Fl +abCefhiklmnprUuvXx
.Op Fl +o Ar opt
.Oo
.Fl c Ar string \*(Ba
.Fl s \*(Ba
.Ar file
.Op Ar args ...
.Oc
.Ek
.Sh DESCRIPTION
.Nm
is a command interpreter intended exclusive for running legacy
shell scripts.
It is built on
.Nm mksh ;
refer to its manual page for details on the scripting language.
.Sh LEGACY MODE
.Nm
has the following differences from
.Nm mksh :
.Bl -bullet
.It
.Nm
is not suitable for use as
.Pa /bin/sh .
.It
There is no explicit support for interactive use,
nor any command line editing code.
Hence,
.Nm
is not suitable as a user's login shell, either; use
.Nm mksh
instead.
.It
The
.Ev KSH_VERSION
string identifies
.Nm
as
.Dq LEGACY KSH
instead of
.Dq MIRBSD KSH .
.It
Some
.Nm mksh
specific extensions are missing; specifically, the
.Fl T
command-line option.
.It
Some extensions from other shells, such as
.Tn GNU
.Nm bash ,
which
.Nm mksh
provides, are missing, for increased compatibility with legacy scripts.
.It
.Nm
always uses traditional mode for constructs like:
.Bd -literal -offset indent
$ set -- $(getopt ab:c "$@")
$ echo $?
.Ed
.Pp
POSIX mandates this to show 0, but traditional mode
passes through the errorlevel from the
.Xr getopt 1
command.
.It
.Nm lksh ,
unlike
.At
.Nm ksh ,
does not keep file descriptors \*(Gt 2 private.
.It
.Nm
parses leading-zero numbers as octal (base 8).
.It
Integers use the host C environment's
.Vt long
type, not
.Vt int32_t .
Unsigned arithmetic is done using
.Vt unsigned long ,
not
.Vt uint32_t .
Neither value limits nor wraparound is guaranteed.
Dividing the largest negative number by \-1 is Undefined Behaviour
.Po
but might work on 32-bit and 64-bit
.Vt long
types
.Pc .
.It
.Nm
only offers the traditional ten file descriptors to scripts.
.El
.Sh SEE ALSO
.Xr mksh 1
.Pp
.Pa https://www.mirbsd.org/mksh.htm
.Pp
.Pa https://www.mirbsd.org/ksh\-chan.htm
.Sh CAVEATS
.Nm
tries to make a cross between a legacy bourne/posix compatibl-ish
shell and a legacy pdksh-alike but
.Dq legacy
is not exactly specified.
Parsing numbers with leading zero digits or
.Dq 0x
is relatively recent in all
.Nm pdksh
derivates, but supported here for completeness.
It might make sense to make this a run-time option, but
that might also be overkill.
.Pp
The
.Ic set
built-in command does not have all options one would expect
from a full-blown
.Nm mksh
or
.Nm pdksh .
.Pp
Talk to the
.Mx
development team using the mailing list at
.Aq miros\-mksh@mirbsd.org
or the
.Li \&#\&!/bin/mksh
.Pq or Li \&#ksh
IRC channel at
.Pa irc.freenode.net
.Pq Port 6697 SSL, 6667 unencrypted
if you need any further quirks or assistance,
and consider migrating your legacy scripts to work with
.Nm mksh
instead of requiring
.Nm .

View File

@ -1,7 +1,7 @@
%define _bindir /bin
Summary: MirBSD enhanced version of the Korn Shell
Name: mksh
Version: 45
Version: 46
Release: 1%{?dist}
# BSD (setmode.c), ISC (strlcpy.c), MirOS (the rest)
License: MirOS and ISC and BSD
@ -9,8 +9,7 @@ Group: System Environment/Shells
URL: https://www.mirbsd.de/%{name}.htm
Source0: http://www.mirbsd.org/MirOS/dist/mir/%{name}/%{name}-R%{version}.tgz
Source1: dot-mkshrc
Source2: lksh.1
Source3: rtchecks.expected
Source2: rtchecks.expected
Requires(post): grep
Requires(postun): sed
BuildRequires: util-linux, ed
@ -77,16 +76,16 @@ rm -rf $RPM_BUILD_ROOT
install -D -m 755 %{name} $RPM_BUILD_ROOT%{_bindir}/%{name}
install -D -m 755 lksh $RPM_BUILD_ROOT%{_bindir}/lksh
install -D -m 644 %{name}.1 $RPM_BUILD_ROOT%{_mandir}/man1/%{name}.1
install -D -m 644 %{SOURCE2} $RPM_BUILD_ROOT%{_mandir}/man1/lksh.1
install -D -m 644 lksh.1 $RPM_BUILD_ROOT%{_mandir}/man1/lksh.1
install -D -p -m 644 dot.mkshrc $RPM_BUILD_ROOT%{_sysconfdir}/mkshrc
install -D -p -m 644 %{SOURCE1} $RPM_BUILD_ROOT%{_sysconfdir}/skel/.mkshrc
%check
./mksh rtchecks >rtchecks.got 2>&1
if ! cmp --quiet rtchecks.got %{SOURCE3}
if ! cmp --quiet rtchecks.got %{SOURCE2}
then
echo "rtchecks failed"
diff -Naurp %{SOURCE3} rtchecks.got
diff -Naurp %{SOURCE2} rtchecks.got
exit 1
fi
@ -125,6 +124,9 @@ rm -rf $RPM_BUILD_ROOT
%{_mandir}/man1/lksh.1*
%changelog
* Fri May 03 2013 Thorsten Glaser <tg@mirbsd.org> 46-1
- Upgrade mksh to R46
* Wed May 01 2013 Thorsten Glaser <tg@mirbsd.org> 45-1
- Upgrade mksh to R45 and the other files to the accompanying versions
- Drop workaround for GCC PR55009 (no longer needed)

View File

@ -1 +1 @@
d3d90973119ae689d5300b690600e1dc mksh-R45.tgz
77c108d8143a6e7670954d77517d216d mksh-R46.tgz