* reduce amount of empty lines
* replace some spaces by tabs * shuffle code around (shrink)
This commit is contained in:
4
Build.sh
4
Build.sh
@ -1,5 +1,5 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
# $MirBSD: src/bin/ksh/Build.sh,v 2.2 2004/12/13 17:33:35 tg Exp $
|
# $MirBSD: src/bin/ksh/Build.sh,v 2.3 2004/12/13 18:53:25 tg Exp $
|
||||||
#-
|
#-
|
||||||
# Copyright (c) 2004
|
# Copyright (c) 2004
|
||||||
# Thorsten "mirabile" Glaser <tg@66h.42h.de>
|
# Thorsten "mirabile" Glaser <tg@66h.42h.de>
|
||||||
@ -36,7 +36,7 @@
|
|||||||
SHELL="${SHELL:-/bin/sh}"; export SHELL
|
SHELL="${SHELL:-/bin/sh}"; export SHELL
|
||||||
CONFIG_SHELL="${SHELL}"; export CONFIG_SHELL
|
CONFIG_SHELL="${SHELL}"; export CONFIG_SHELL
|
||||||
CC="${CC:-gcc}"
|
CC="${CC:-gcc}"
|
||||||
CPPFLAGS="$CPPFLAGS -DHAVE_CONFIG_H -I. -DKSH -DMKSH"
|
CPPFLAGS="$CPPFLAGS -DHAVE_CONFIG_H -I. -DKSH"
|
||||||
COPTS="-O2 -fomit-frame-pointer -fno-strict-aliasing -fno-strength-reduce"
|
COPTS="-O2 -fomit-frame-pointer -fno-strict-aliasing -fno-strength-reduce"
|
||||||
[ -z "$WEIRD_OS" ] && LDFLAGS="${LDFLAGS:--static}"
|
[ -z "$WEIRD_OS" ] && LDFLAGS="${LDFLAGS:--static}"
|
||||||
|
|
||||||
|
246
CONTRIBUTORS
246
CONTRIBUTORS
@ -1,133 +1,133 @@
|
|||||||
$MirBSD: src/bin/ksh/CONTRIBUTORS,v 2.1 2004/12/10 18:09:40 tg Exp $
|
$MirBSD: src/bin/ksh/CONTRIBUTORS,v 2.2 2004/12/13 18:53:25 tg Exp $
|
||||||
$OpenBSD: CONTRIBUTORS,v 1.9 1999/07/14 13:37:23 millert Exp $
|
$OpenBSD: CONTRIBUTORS,v 1.9 1999/07/14 13:37:23 millert Exp $
|
||||||
|
|
||||||
This is a partial history of this shell gleened from old change logs and
|
This is a partial history of this shell gleened from old change logs and
|
||||||
readmes (most of which are still in the misc directory) and the source
|
readmes and source code.
|
||||||
code. Hopefully it is correct and no contributors have been left out
|
Hopefully it is correct and no contributors have been left out
|
||||||
(file a bug report if you spot a problem :-)).
|
(file a bug report if you spot a problem :-)).
|
||||||
|
|
||||||
Release history:
|
Release history:
|
||||||
* Eric Gisin (egisin@math.uwaterloo.ca), created pdksh, using
|
* Eric Gisin (egisin@math.uwaterloo.ca), created pdksh, using
|
||||||
Charles Forsyth's public domain V7 shell as a base; also used parts
|
Charles Forsyth's public domain V7 shell as a base; also used parts
|
||||||
of the BRL shell (written by Doug A Gwyn, Doug Kingston, Ron Natalie,
|
of the BRL shell (written by Doug A Gwyn, Doug Kingston, Ron Natalie,
|
||||||
Arnold Robbins, Lou Salkind, and others?, circa '87; the parts used in
|
Arnold Robbins, Lou Salkind, and others?, circa '87; the parts used in
|
||||||
pdksh included getopts, test builtin, ulimit, tty setting/getting, emacs
|
pdksh included getopts, test builtin, ulimit, tty setting/getting, emacs
|
||||||
editing, and job control; the test builtin was based on code by Erik
|
editing, and job control; the test builtin was based on code by Erik
|
||||||
Baalbergen).
|
Baalbergen).
|
||||||
'87..'89 ?
|
'87..'89 ?
|
||||||
Released versions: .. 3.2
|
Released versions: .. 3.2
|
||||||
* John R MacMillan (@yonge.csri.toronto.edu:chance!john@sq.sq.com)
|
* John R MacMillan (@yonge.csri.toronto.edu:chance!john@sq.sq.com)
|
||||||
takes over as maintainer
|
takes over as maintainer
|
||||||
dates?
|
dates?
|
||||||
Released versions: 3.3 (?)
|
Released versions: 3.3 (?)
|
||||||
* Simon J. Gerraty (sjg@zen.void.oz.au) takes over as maintainer
|
* Simon J. Gerraty (sjg@zen.void.oz.au) takes over as maintainer
|
||||||
Nov '91..July '94 ?
|
Nov '91..July '94 ?
|
||||||
Released versions: 4.0 .. 4.9
|
Released versions: 4.0 .. 4.9
|
||||||
* Michael Rendell (michael@cs.mun.ca) takes over as maintainer
|
* Michael Rendell (michael@cs.mun.ca) takes over as maintainer
|
||||||
July, 1994
|
July, 1994
|
||||||
Released versions: 5.0 .. 5.2
|
Released versions: 5.0 .. 5.2
|
||||||
* Thorsten Glaser (tg@66h.42h.de) releases mirbsdksh and is the guy
|
* Thorsten Glaser (tg@66h.42h.de) releases mksh and is the guy
|
||||||
to blame for all mirbsdksh-specific or MirOS-specific bugs.
|
to blame for all mirbsdksh-specific or MirOS-specific bugs.
|
||||||
Released versions: 5.2.14 MirOS 1.1-1.x
|
Released versions: 5.2.14 MirOS 1.1-1.x
|
||||||
|
|
||||||
Major contributions:
|
Major contributions:
|
||||||
* John R MacMillan (@yonge.csri.toronto.edu:chance!john@sq.sq.com), ?:
|
* John R MacMillan (@yonge.csri.toronto.edu:chance!john@sq.sq.com), ?:
|
||||||
cleaned up configuration, many bug fixes (see misc/Changes.jrm).
|
cleaned up configuration, many bug fixes (see misc/Changes.jrm).
|
||||||
* Simon Gerraty, (sjg@zen.void.oz.au), Nov '91..?: much improved emacs mode
|
* Simon Gerraty, (sjg@zen.void.oz.au), Nov '91..?: much improved emacs mode
|
||||||
ala at&t ksh, 386bsd port, sigaction routines for non-POSIX systems
|
ala at&t ksh, 386bsd port, sigaction routines for non-POSIX systems
|
||||||
(see misc/ChangeLog.sjg and misc/ReadME.sjg).
|
(see misc/ChangeLog.sjg and misc/ReadME.sjg).
|
||||||
* Peter Collinson (pc@hillside.co.uk), July '92: added select, at&t ksh
|
* Peter Collinson (pc@hillside.co.uk), July '92: added select, at&t ksh
|
||||||
style history file, original csh-style {} globbing, BSD/386 port,
|
style history file, original csh-style {} globbing, BSD/386 port,
|
||||||
misc bug fixes.
|
misc bug fixes.
|
||||||
* Larry Bouzane (larry@compusult.nf.ca), Mar '89..'93: re-wrote job control,
|
* Larry Bouzane (larry@compusult.nf.ca), Mar '89..'93: re-wrote job control,
|
||||||
added async job notification, added CDPATH and other cd fixes, misc bug
|
added async job notification, added CDPATH and other cd fixes, misc bug
|
||||||
fixes.
|
fixes.
|
||||||
* John Rochester (jr@cs.mun.ca), '87: wrote vi command line editor; various
|
* John Rochester (jr@cs.mun.ca), '87: wrote vi command line editor; various
|
||||||
bug fixes/enhancements.
|
bug fixes/enhancements.
|
||||||
* Jeff Sparkes (jsparkes@bnr.ca), Mar '89..Mar '90: added arrays,
|
* Jeff Sparkes (jsparkes@bnr.ca), Mar '89..Mar '90: added arrays,
|
||||||
merged John Rochester's vi code into pdksh, misc bug fixes.
|
merged John Rochester's vi code into pdksh, misc bug fixes.
|
||||||
* Michael Haardt (u31b3hs@POOL.Informatik.RWTH-Aachen.DE), Sept '94:
|
* Michael Haardt (u31b3hs@POOL.Informatik.RWTH-Aachen.DE), Sept '94:
|
||||||
organized man page, filled in many of its copious blank spots; added
|
organized man page, filled in many of its copious blank spots; added
|
||||||
KSH ifdefs.
|
KSH ifdefs.
|
||||||
* Dale DePriest (daled@cadence.com): ported to OS/2 (initially based on
|
* Dale DePriest (daled@cadence.com): ported to OS/2 (initially based on
|
||||||
port of pdksh4.9 to OS/2 by Kai Rommel (rommel@ars.muc.de)); maintains
|
port of pdksh4.9 to OS/2 by Kai Rommel (rommel@ars.muc.de)); maintains
|
||||||
OS/2 port; misc bug fixes.
|
OS/2 port; misc bug fixes.
|
||||||
|
|
||||||
Other contributors:
|
Other contributors:
|
||||||
* Piercarlo Grandi (pcg@aber.ac.uk), Dec '93: fixes for linux port
|
* Piercarlo Grandi (pcg@aber.ac.uk), Dec '93: fixes for linux port
|
||||||
* Neil Smithline (Neil.Smithline@eng.sun.com), Aug '92: emacs-style
|
* Neil Smithline (Neil.Smithline@eng.sun.com), Aug '92: emacs-style
|
||||||
filename completion.
|
filename completion.
|
||||||
* Mike Jetzer [mlj] (jetzer@studsys.mscs.mu.edu), ?;Nov '94: fixes for vi
|
* Mike Jetzer [mlj] (jetzer@studsys.mscs.mu.edu), ?;Nov '94: fixes for vi
|
||||||
mode (see misc/Changes.mlj), added v to vi, fixes for history; fixed
|
mode (see misc/Changes.mlj), added v to vi, fixes for history; fixed
|
||||||
command redoing in vi; fixes to vi globbing.
|
command redoing in vi; fixes to vi globbing.
|
||||||
* Robert J Gibson: mailbox checking code that was adapted for pdksh by
|
* Robert J Gibson: mailbox checking code that was adapted for pdksh by
|
||||||
John R. MacMillan.
|
John R. MacMillan.
|
||||||
* ? (guy@demon.co.uk), ?: promptlen() function.
|
* ? (guy@demon.co.uk), ?: promptlen() function.
|
||||||
* J.T. Conklin (jtc@cygnus.com): POSIXized test builtin; miscellaneous
|
* J.T. Conklin (jtc@cygnus.com): POSIXized test builtin; miscellaneous
|
||||||
fixes/enhancements.
|
fixes/enhancements.
|
||||||
* Sean Hogan (sean@neweast.ca): fixes for ICS 3.0 Unix, found and helped
|
* Sean Hogan (sean@neweast.ca): fixes for ICS 3.0 Unix, found and helped
|
||||||
fix numerous problems.
|
fix numerous problems.
|
||||||
* Gordan Larson (hoh@approve.se): fix to compile sans VI, ksh.1 typo.
|
* Gordan Larson (hoh@approve.se): fix to compile sans VI, ksh.1 typo.
|
||||||
* Thomas Gellekum (thomas@ghpc8.ihf.rwth-aachen.de): fixes for Makefile
|
* Thomas Gellekum (thomas@ghpc8.ihf.rwth-aachen.de): fixes for Makefile
|
||||||
typos, fixed CLK_TCK for FreeBSD, man page fixes.
|
typos, fixed CLK_TCK for FreeBSD, man page fixes.
|
||||||
* Ed Ferguson (Ed.Ferguson@dseg.ti.com): fix to compile sans VI.
|
* Ed Ferguson (Ed.Ferguson@dseg.ti.com): fix to compile sans VI.
|
||||||
* Brian Campbell (brianc@qnx.com): fixes to compile under QNX and
|
* Brian Campbell (brianc@qnx.com): fixes to compile under QNX and
|
||||||
to compile with dmake.
|
to compile with dmake.
|
||||||
* (guy@netapp.com), Oct '94: patch to use gmacs flag.
|
* (guy@netapp.com), Oct '94: patch to use gmacs flag.
|
||||||
* Andrew Moore (alm@netcom.com): reported many bugs, fixes.
|
* Andrew Moore (alm@netcom.com): reported many bugs, fixes.
|
||||||
* William Bader (wbader@CSEE.Lehigh.Edu): fix to compile on SCO Unix
|
* William Bader (wbader@CSEE.Lehigh.Edu): fix to compile on SCO Unix
|
||||||
(strut winsize).
|
(strut winsize).
|
||||||
* Mike Long (mike.long@analog.com): makefile fix - use $manext, not 1.
|
* Mike Long (mike.long@analog.com): makefile fix - use $manext, not 1.
|
||||||
* Art Mills (aem@hpbs9162.bio.hp.com): bug fix for vi file completion in
|
* Art Mills (aem@hpbs9162.bio.hp.com): bug fix for vi file completion in
|
||||||
command mode.
|
command mode.
|
||||||
* Tory Bollinger (tboll@authstin.ibm.com): allow ~ in vi mode to take
|
* Tory Bollinger (tboll@authstin.ibm.com): allow ~ in vi mode to take
|
||||||
a count.
|
a count.
|
||||||
* Frank Edwards (<crash@azhrei.EEC.COM>): added macros to vi (@char).
|
* Frank Edwards (<crash@azhrei.EEC.COM>): added macros to vi (@char).
|
||||||
* Fritz Heinrichmeyer (<Fritz.Heinrichmeyer@FernUni-Hagen.de>): fixes
|
* Fritz Heinrichmeyer (<Fritz.Heinrichmeyer@FernUni-Hagen.de>): fixes
|
||||||
to allow compile under Linux 1.4.3.
|
to allow compile under Linux 1.4.3.
|
||||||
* Gabor Zahemszky (<zgabor@CoDe.hu>): SVR3_PGRP vs SYSV_PGRP, many
|
* Gabor Zahemszky (<zgabor@CoDe.hu>): SVR3_PGRP vs SYSV_PGRP, many
|
||||||
bug reports and man page fixes.
|
bug reports and man page fixes.
|
||||||
* Dave Kinchlea (<kinch@julian.uwo.ca>): DEFAULT_ENV patches.
|
* Dave Kinchlea (<kinch@julian.uwo.ca>): DEFAULT_ENV patches.
|
||||||
* Paul Borman (<prb@bsdi.com>): j_exit: send HUP, then CONT; HUP fg process.
|
* Paul Borman (<prb@bsdi.com>): j_exit: send HUP, then CONT; HUP fg process.
|
||||||
* DaviD W. Sanderson (<dws@ssec.wisc.edu>): patches to allow { .. } instead
|
* DaviD W. Sanderson (<dws@ssec.wisc.edu>): patches to allow { .. } instead
|
||||||
of in .. esac in case statements.
|
of in .. esac in case statements.
|
||||||
* ? (<ra@rhi.hi.is>): partial patches to handle SIGWINCH for command line
|
* ? (<ra@rhi.hi.is>): partial patches to handle SIGWINCH for command line
|
||||||
editing.
|
editing.
|
||||||
* Jason Tyler (<jason@nc.bhpese.oz.au>): fixes for bugs in fc.
|
* Jason Tyler (<jason@nc.bhpese.oz.au>): fixes for bugs in fc.
|
||||||
* Stefan Dalibor (<Stefan.Dalibor@informatik.uni-erlangen.de>): fix for
|
* Stefan Dalibor (<Stefan.Dalibor@informatik.uni-erlangen.de>): fix for
|
||||||
COLUMNS never being set in x_init().
|
COLUMNS never being set in x_init().
|
||||||
* Arnon Kanfi (<arnon@gilly.datatools.com>): fix for prompt.
|
* Arnon Kanfi (<arnon@gilly.datatools.com>): fix for prompt.
|
||||||
* Marc Olzheim (<marcolz@stack.nl>): patches to ifdef KSH the mail check
|
* Marc Olzheim (<marcolz@stack.nl>): patches to ifdef KSH the mail check
|
||||||
code and aliases; enum patches for old K&R compilers; handle missing dup2.
|
code and aliases; enum patches for old K&R compilers; handle missing dup2.
|
||||||
* Lars Hecking (<lhecking@nmrc.ucc.ie>): fixes so shell compiles as sh
|
* Lars Hecking (<lhecking@nmrc.ucc.ie>): fixes so shell compiles as sh
|
||||||
again.
|
again.
|
||||||
* Bill Kish (<kish@browncow.com>): added prompt delimiter hack for
|
* Bill Kish (<kish@browncow.com>): added prompt delimiter hack for
|
||||||
hidden characters (eg, escape codes).
|
hidden characters (eg, escape codes).
|
||||||
* Andrew S. Townley (<atownley@informix.com>): fixes for NeXT machines:
|
* Andrew S. Townley (<atownley@informix.com>): fixes for NeXT machines:
|
||||||
get a controlling if one needed, use correct profile.
|
get a controlling if one needed, use correct profile.
|
||||||
* Eric J. Chet (<ejc@bazzle.com>): fix for core dump in . (quitenv() called
|
* Eric J. Chet (<ejc@bazzle.com>): fix for core dump in . (quitenv() called
|
||||||
too soon).
|
too soon).
|
||||||
* Greg A. Woods <woods@most.weird.com>: fix to make ^[_ in emacs work
|
* Greg A. Woods <woods@most.weird.com>: fix to make ^[_ in emacs work
|
||||||
as in at&t ksh.
|
as in at&t ksh.
|
||||||
* George Robbins <grr@shandakor.tharsis.com>: fix for sh mode to
|
* George Robbins <grr@shandakor.tharsis.com>: fix for sh mode to
|
||||||
keep exec'd file descriptors open.
|
keep exec'd file descriptors open.
|
||||||
* George White <gwhite@bodnext.bio.dfo.ca>: fix here-doc problem under OS/2
|
* George White <gwhite@bodnext.bio.dfo.ca>: fix here-doc problem under OS/2
|
||||||
(memory allocated incorrectly).
|
(memory allocated incorrectly).
|
||||||
* David E. Wexelblat <dwex@DataFocus.com>: fix to avoid memory overrun
|
* David E. Wexelblat <dwex@DataFocus.com>: fix to avoid memory overrun
|
||||||
in aresize(); fix to not print un-named options.
|
in aresize(); fix to not print un-named options.
|
||||||
* Clifford Wolf (<clifford@clifford.at>): fix memory overrun in aresize();
|
* Clifford Wolf (<clifford@clifford.at>): fix memory overrun in aresize();
|
||||||
fixed sys_siglist[] problem.
|
fixed sys_siglist[] problem.
|
||||||
* Theo de Raadt (<deraadt@cvs.openbsd.org>): allow ". /dev/null".
|
* Theo de Raadt (<deraadt@cvs.openbsd.org>): allow ". /dev/null".
|
||||||
* Eric Youngdale (<ericy@datafocus.com>): flag field incorrectly changed
|
* Eric Youngdale (<ericy@datafocus.com>): flag field incorrectly changed
|
||||||
in exec.c(flushcom).
|
in exec.c(flushcom).
|
||||||
* Todd. C Miller (Todd C. Miller <Todd.Miller@courtesan.com>): fix
|
* Todd. C Miller (Todd C. Miller <Todd.Miller@courtesan.com>): fix
|
||||||
for coredump in jobs.
|
for coredump in jobs.
|
||||||
* Kevin Schoedel <schoedel@kw.igs.net>: fix for word location in file
|
* Kevin Schoedel <schoedel@kw.igs.net>: fix for word location in file
|
||||||
completion.
|
completion.
|
||||||
* Martin Lucina <mato@kotelna.sk>: fix for argument parsing in exit command,
|
* Martin Lucina <mato@kotelna.sk>: fix for argument parsing in exit command,
|
||||||
fix for KSH_CHECK_H_TYPE.
|
fix for KSH_CHECK_H_TYPE.
|
||||||
* Mark Funkenhauser <mark@interix.com>: added $LINENO support.
|
* Mark Funkenhauser <mark@interix.com>: added $LINENO support.
|
||||||
* Corinna Vinschen <Corinna@Vinschen.de> and Steven Hein <ssh@sgi.com>:
|
* Corinna Vinschen <Corinna@Vinschen.de> and Steven Hein <ssh@sgi.com>:
|
||||||
port to cyngin environment on win95/winnt.
|
port to cyngin environment on win95/winnt.
|
||||||
* Martin Dalecki <dalecki@cs.net.pl>: changes for 8 bit emacs mode.
|
* Martin Dalecki <dalecki@cs.net.pl>: changes for 8 bit emacs mode.
|
||||||
* Dave Hillman <daveh@gte.net>: patch for bug in test -nt.
|
* Dave Hillman <daveh@gte.net>: patch for bug in test -nt.
|
||||||
|
9
Makefile
9
Makefile
@ -1,11 +1,10 @@
|
|||||||
# $MirBSD: src/bin/ksh/Makefile,v 2.2 2004/12/13 16:50:50 tg Exp $
|
# $MirBSD: src/bin/ksh/Makefile,v 2.3 2004/12/13 18:53:25 tg Exp $
|
||||||
# $OpenBSD: Makefile,v 1.18 2004/02/16 19:07:19 deraadt Exp $
|
# $OpenBSD: Makefile,v 1.18 2004/02/16 19:07:19 deraadt Exp $
|
||||||
|
|
||||||
PROG= ksh
|
PROG= ksh
|
||||||
SRCS= alloc.c c_ksh.c c_sh.c c_test.c c_ulimit.c chvt.c edit.c \
|
SRCS= alloc.c c_ksh.c c_sh.c c_test.c c_ulimit.c edit.c emacs.c eval.c \
|
||||||
emacs.c eval.c exec.c expr.c history.c io.c jobs.c lex.c \
|
exec.c expr.c history.c io.c jobs.c lex.c main.c misc.c missing.c \
|
||||||
main.c misc.c missing.c path.c rnd.c shf.c syn.c table.c \
|
path.c shf.c syn.c table.c trap.c tree.c tty.c var.c vi.c
|
||||||
trap.c tree.c tty.c var.c version.c vi.c
|
|
||||||
MAN= ksh.1tbl sh.1tbl
|
MAN= ksh.1tbl sh.1tbl
|
||||||
|
|
||||||
CPPFLAGS+= -DHAVE_CONFIG_H -I. -DKSH -DMIRBSD_NATIVE
|
CPPFLAGS+= -DHAVE_CONFIG_H -I. -DKSH -DMIRBSD_NATIVE
|
||||||
|
24
NOTES
24
NOTES
@ -1,18 +1,18 @@
|
|||||||
$MirBSD: src/bin/ksh/NOTES,v 2.2 2004/12/13 17:33:35 tg Exp $
|
$MirBSD: src/bin/ksh/NOTES,v 2.3 2004/12/13 18:53:25 tg Exp $
|
||||||
$OpenBSD: NOTES,v 1.9 2003/10/26 15:07:25 jmc Exp $
|
$OpenBSD: NOTES,v 1.9 2003/10/26 15:07:25 jmc Exp $
|
||||||
|
|
||||||
General features of at&t ksh88 that are not (yet) in pdksh:
|
General features of at&t ksh88 that are not (yet) in pdksh:
|
||||||
- exported aliases and functions (not in ksh93).
|
- exported aliases and functions (not in ksh93).
|
||||||
- set -t.
|
- set -t.
|
||||||
- signals/traps not cleared during functions.
|
- signals/traps not cleared during functions.
|
||||||
- trap DEBUG, local ERR and EXIT traps in functions.
|
- trap DEBUG, local ERR and EXIT traps in functions.
|
||||||
- ERRNO parameter.
|
- ERRNO parameter.
|
||||||
- doesn't have posix file globbing (eg, [[:alpha:]], etc.).
|
- doesn't have posix file globbing (eg, [[:alpha:]], etc.).
|
||||||
- use of an 'agent' to execute unreadable/setuid/setgid shell scripts
|
- use of an 'agent' to execute unreadable/setuid/setgid shell scripts
|
||||||
(don't ask).
|
(don't ask).
|
||||||
- read/select aren't hooked in to the command line editor
|
- read/select aren't hooked in to the command line editor
|
||||||
- the last command of a pipeline is not run in the parent shell
|
- the last command of a pipeline is not run in the parent shell
|
||||||
- MAIL, MAILPATH, MAILCHECK have been removed in mirbsdksh.
|
- MAIL, MAILPATH, MAILCHECK have been removed in mirbsdksh.
|
||||||
|
|
||||||
Known bugs (see also BUG-REPORTS and PROJECTS files):
|
Known bugs (see also BUG-REPORTS and PROJECTS files):
|
||||||
Variable parsing, Expansion:
|
Variable parsing, Expansion:
|
||||||
|
24
README
24
README
@ -1,13 +1,13 @@
|
|||||||
$MirBSD: src/bin/ksh/README,v 2.2 2004/12/13 17:33:35 tg Exp $
|
$MirBSD: src/bin/ksh/README,v 2.3 2004/12/13 18:53:25 tg Exp $
|
||||||
|
|
||||||
This is the README for mirbsdksh, developed as part of the MirBSD
|
This is the README for mirbsdksh, developed as part of the MirBSD
|
||||||
operating system at The MirOS Project, and produced portably.
|
operating system at The MirOS Project, and produced portably.
|
||||||
Legal information is provided about a screenpage farther down.
|
Legal information is provided about a screenpage farther down.
|
||||||
|
|
||||||
To build on MirOS only, issue 'make obj && make depend && make'.
|
To build mksh on MirOS, issue 'make obj && make depend && make'.
|
||||||
|
|
||||||
To build on other systems, consult http://wiki.mirbsd.de/MirbsdKsh
|
To build mksh on other operating systems, read Builsd.sh first
|
||||||
or read Build.sh first.
|
or consult http://wiki.mirbsd.de/MirbsdKsh for further infos.
|
||||||
|
|
||||||
Set the CC, CFLAGS, CPPFLAGS and LDFLAGS environment variables
|
Set the CC, CFLAGS, CPPFLAGS and LDFLAGS environment variables
|
||||||
to your likes. Don't complain if anything doesn't work.
|
to your likes. Don't complain if anything doesn't work.
|
||||||
@ -16,8 +16,8 @@ to your likes. Don't complain if anything doesn't work.
|
|||||||
LEGAL INFORMATION
|
LEGAL INFORMATION
|
||||||
|
|
||||||
This package as a whole is placed under the MirOS licence template
|
This package as a whole is placed under the MirOS licence template
|
||||||
as contained in the "version.c" source code file in this distribu-
|
as contained in the "Build.sh" source file in this distribution,
|
||||||
tion, by having the project leader asserting a collective copyright.
|
by having the project leader asserting a collective copyright.
|
||||||
|
|
||||||
The files alloc.c (Marc Espie), ksh.1tbl and sh.1tbl (University of
|
The files alloc.c (Marc Espie), ksh.1tbl and sh.1tbl (University of
|
||||||
California, Berkeley) are provided under a 2-clause or 3-clause BSD
|
California, Berkeley) are provided under a 2-clause or 3-clause BSD
|
||||||
@ -48,11 +48,6 @@ machines. For example, in the CS dept. of MUN, pdksh is installed on a
|
|||||||
variety of machines including Suns, HPs, DecStations, pcs running Linux,
|
variety of machines including Suns, HPs, DecStations, pcs running Linux,
|
||||||
etc., and is the login shell of ~5200 users.
|
etc., and is the login shell of ~5200 users.
|
||||||
|
|
||||||
Note that pdksh is provided AS IS, with NO WARRANTY, either expressed or
|
|
||||||
implied. Also note that although the bulk of the code in pdksh is in the
|
|
||||||
public domain, some files are copyrighted (but freely distributable) and
|
|
||||||
subject to certain conditions.
|
|
||||||
|
|
||||||
If you would like to be notified via email of new releases as they become
|
If you would like to be notified via email of new releases as they become
|
||||||
available, send mail to pdksh-request@cs.mun.ca with subject
|
available, send mail to pdksh-request@cs.mun.ca with subject
|
||||||
"send release notifications" (or "don't send release notifications" to stop
|
"send release notifications" (or "don't send release notifications" to stop
|
||||||
@ -60,12 +55,7 @@ them).
|
|||||||
|
|
||||||
Newer versions of pdksh may be available from
|
Newer versions of pdksh may be available from
|
||||||
ftp://ftp.cs.mun.ca:/pub/pdksh/
|
ftp://ftp.cs.mun.ca:/pub/pdksh/
|
||||||
you may want to check for one if you run into any problems, as the problem may
|
[...]
|
||||||
already be fixed (you can get new release notifications automatically - see
|
|
||||||
above). The file pdksh-unstable-XXX.tar.gz has the very latest version which
|
|
||||||
may not compile (it is generated automatically when changes are detected
|
|
||||||
in the main source repository) - it is for those who want to follow
|
|
||||||
changes as they are made.
|
|
||||||
|
|
||||||
You can send bug reports, fixes, and enhancements to pdksh@cs.mun.ca (please
|
You can send bug reports, fixes, and enhancements to pdksh@cs.mun.ca (please
|
||||||
don't assume I will see bug reports that are posted to some newsgroup or
|
don't assume I will see bug reports that are posted to some newsgroup or
|
||||||
|
25
aclocal.m4
vendored
25
aclocal.m4
vendored
@ -1,4 +1,4 @@
|
|||||||
dnl $MirBSD: src/bin/ksh/aclocal.m4,v 2.1 2004/12/10 18:09:40 tg Exp $
|
dnl $MirBSD: src/bin/ksh/aclocal.m4,v 2.2 2004/12/13 18:53:25 tg Exp $
|
||||||
dnl-
|
dnl-
|
||||||
dnl Copyright (c) 2004
|
dnl Copyright (c) 2004
|
||||||
dnl Thorsten "mirabile" Glaser <tg@66h.42h.de>
|
dnl Thorsten "mirabile" Glaser <tg@66h.42h.de>
|
||||||
@ -20,7 +20,7 @@ dnl of this work, even if advised of the possibility of such damage.
|
|||||||
dnl-
|
dnl-
|
||||||
dnl Based upon code by:
|
dnl Based upon code by:
|
||||||
dnl Copyright (C) 1996, Memorial University of Newfoundland.
|
dnl Copyright (C) 1996, Memorial University of Newfoundland.
|
||||||
dnl ------------------------------------------------------------
|
dnl-
|
||||||
dnl
|
dnl
|
||||||
dnl
|
dnl
|
||||||
dnl Like AC_CHECK_TYPE(), only
|
dnl Like AC_CHECK_TYPE(), only
|
||||||
@ -48,7 +48,6 @@ $3
|
|||||||
])dnl
|
])dnl
|
||||||
dnl
|
dnl
|
||||||
dnl
|
dnl
|
||||||
dnl
|
|
||||||
dnl Check for memmove and if not found, check for bcopy. AC_CHECK_FUNCS()
|
dnl Check for memmove and if not found, check for bcopy. AC_CHECK_FUNCS()
|
||||||
dnl not used 'cause it confuses some compilers that have memmove/bcopy builtin;
|
dnl not used 'cause it confuses some compilers that have memmove/bcopy builtin;
|
||||||
dnl Also want to check if the function deals with overlapping src/dst properly.
|
dnl Also want to check if the function deals with overlapping src/dst properly.
|
||||||
@ -114,7 +113,6 @@ AC_DEFUN(KSH_MEMMOVE,
|
|||||||
])dnl
|
])dnl
|
||||||
dnl
|
dnl
|
||||||
dnl
|
dnl
|
||||||
dnl
|
|
||||||
dnl Check for sigsetjmp()/siglongjmp() and _setjmp()/_longjmp() pairs.
|
dnl Check for sigsetjmp()/siglongjmp() and _setjmp()/_longjmp() pairs.
|
||||||
dnl Can't use simple library check as QNX 422 has _setjmp() but not _longjmp()
|
dnl Can't use simple library check as QNX 422 has _setjmp() but not _longjmp()
|
||||||
dnl (go figure).
|
dnl (go figure).
|
||||||
@ -135,7 +133,6 @@ AC_DEFUN(KSH_SETJMP,
|
|||||||
])dnl
|
])dnl
|
||||||
dnl
|
dnl
|
||||||
dnl
|
dnl
|
||||||
dnl
|
|
||||||
dnl Check for memset function. AC_CHECK_FUNCS() not used 'cause it confuses
|
dnl Check for memset function. AC_CHECK_FUNCS() not used 'cause it confuses
|
||||||
dnl some compilers that have memset builtin.
|
dnl some compilers that have memset builtin.
|
||||||
AC_DEFUN(KSH_MEMSET,
|
AC_DEFUN(KSH_MEMSET,
|
||||||
@ -158,7 +155,6 @@ AC_DEFUN(KSH_MEMSET,
|
|||||||
])dnl
|
])dnl
|
||||||
dnl
|
dnl
|
||||||
dnl
|
dnl
|
||||||
dnl
|
|
||||||
dnl Check for rlim_t in a few places, and if not found, figure out the
|
dnl Check for rlim_t in a few places, and if not found, figure out the
|
||||||
dnl size rlim_t should be by looking at struct rlimit.rlim_cur.
|
dnl size rlim_t should be by looking at struct rlimit.rlim_cur.
|
||||||
AC_DEFUN(KSH_RLIM_CHECK,
|
AC_DEFUN(KSH_RLIM_CHECK,
|
||||||
@ -193,7 +189,6 @@ AC_DEFUN(KSH_RLIM_CHECK,
|
|||||||
])dnl
|
])dnl
|
||||||
dnl
|
dnl
|
||||||
dnl
|
dnl
|
||||||
dnl
|
|
||||||
AC_DEFUN(KSH_DEV_FD,
|
AC_DEFUN(KSH_DEV_FD,
|
||||||
[AC_CACHE_CHECK(if you have /dev/fd/n, ksh_cv_dev_fd,
|
[AC_CACHE_CHECK(if you have /dev/fd/n, ksh_cv_dev_fd,
|
||||||
[AC_TRY_RUN([
|
[AC_TRY_RUN([
|
||||||
@ -229,7 +224,6 @@ AC_DEFUN(KSH_DEV_FD,
|
|||||||
])dnl
|
])dnl
|
||||||
dnl
|
dnl
|
||||||
dnl
|
dnl
|
||||||
dnl
|
|
||||||
dnl Check for sys_siglist[] declaration and existence.
|
dnl Check for sys_siglist[] declaration and existence.
|
||||||
AC_DEFUN(KSH_SYS_SIGLIST,
|
AC_DEFUN(KSH_SYS_SIGLIST,
|
||||||
[AC_DECL_SYS_SIGLIST
|
[AC_DECL_SYS_SIGLIST
|
||||||
@ -250,7 +244,6 @@ AC_DEFUN(KSH_SYS_SIGLIST,
|
|||||||
])dnl
|
])dnl
|
||||||
dnl
|
dnl
|
||||||
dnl
|
dnl
|
||||||
dnl
|
|
||||||
dnl Check for sys_errlist[] declaration and existence.
|
dnl Check for sys_errlist[] declaration and existence.
|
||||||
AC_DEFUN(KSH_SYS_ERRLIST,
|
AC_DEFUN(KSH_SYS_ERRLIST,
|
||||||
[AC_CACHE_CHECK(for sys_errlist declaration in errno.h, ksh_cv_decl_sys_errlist,
|
[AC_CACHE_CHECK(for sys_errlist declaration in errno.h, ksh_cv_decl_sys_errlist,
|
||||||
@ -276,7 +269,6 @@ AC_DEFUN(KSH_SYS_ERRLIST,
|
|||||||
])dnl
|
])dnl
|
||||||
dnl
|
dnl
|
||||||
dnl
|
dnl
|
||||||
dnl
|
|
||||||
dnl Check if time() declared in time.h
|
dnl Check if time() declared in time.h
|
||||||
AC_DEFUN(KSH_TIME_DECLARED,
|
AC_DEFUN(KSH_TIME_DECLARED,
|
||||||
[AC_CACHE_CHECK(time() declaration in time.h, ksh_cv_time_delcared,
|
[AC_CACHE_CHECK(time() declaration in time.h, ksh_cv_time_delcared,
|
||||||
@ -289,7 +281,6 @@ AC_DEFUN(KSH_TIME_DECLARED,
|
|||||||
])dnl
|
])dnl
|
||||||
dnl
|
dnl
|
||||||
dnl
|
dnl
|
||||||
dnl
|
|
||||||
dnl Check for working times (ie, it exists and doesn't always return 0).
|
dnl Check for working times (ie, it exists and doesn't always return 0).
|
||||||
dnl Defines TIMES_BROKEN if it doesn't exist or if it always returns 0
|
dnl Defines TIMES_BROKEN if it doesn't exist or if it always returns 0
|
||||||
dnl (also checks for existance of getrusage if times doesn't work).
|
dnl (also checks for existance of getrusage if times doesn't work).
|
||||||
@ -329,7 +320,6 @@ AC_DEFUN(KSH_TIMES_CHECK,
|
|||||||
])dnl
|
])dnl
|
||||||
dnl
|
dnl
|
||||||
dnl
|
dnl
|
||||||
dnl
|
|
||||||
AC_DEFUN(KSH_C_VOID,
|
AC_DEFUN(KSH_C_VOID,
|
||||||
[AC_CACHE_CHECK(if compiler understands void, ksh_cv_c_void,
|
[AC_CACHE_CHECK(if compiler understands void, ksh_cv_c_void,
|
||||||
[AC_TRY_COMPILE(
|
[AC_TRY_COMPILE(
|
||||||
@ -346,7 +336,6 @@ AC_DEFUN(KSH_C_VOID,
|
|||||||
])dnl
|
])dnl
|
||||||
dnl
|
dnl
|
||||||
dnl
|
dnl
|
||||||
dnl
|
|
||||||
dnl Early MIPS compilers (used in Ultrix 4.2) don't like
|
dnl Early MIPS compilers (used in Ultrix 4.2) don't like
|
||||||
dnl "int x; int *volatile a = &x; *a = 0;"
|
dnl "int x; int *volatile a = &x; *a = 0;"
|
||||||
AC_DEFUN(KSH_C_VOLATILE,
|
AC_DEFUN(KSH_C_VOLATILE,
|
||||||
@ -363,7 +352,6 @@ AC_DEFUN(KSH_C_VOLATILE,
|
|||||||
])dnl
|
])dnl
|
||||||
dnl
|
dnl
|
||||||
dnl
|
dnl
|
||||||
dnl
|
|
||||||
dnl Check if C compiler understands gcc's __attribute((...)).
|
dnl Check if C compiler understands gcc's __attribute((...)).
|
||||||
dnl checks for noreturn, const, and format(type,fmt,param), also checks
|
dnl checks for noreturn, const, and format(type,fmt,param), also checks
|
||||||
dnl that the compiler doesn't die when it sees an unknown attribute (this
|
dnl that the compiler doesn't die when it sees an unknown attribute (this
|
||||||
@ -388,7 +376,6 @@ void test_uk() { return; }
|
|||||||
])dnl
|
])dnl
|
||||||
dnl
|
dnl
|
||||||
dnl
|
dnl
|
||||||
dnl
|
|
||||||
dnl Check if dup2() does not clear the close on exec flag
|
dnl Check if dup2() does not clear the close on exec flag
|
||||||
AC_DEFUN(KSH_DUP2_CLEXEC_CHECK,
|
AC_DEFUN(KSH_DUP2_CLEXEC_CHECK,
|
||||||
[AC_CACHE_CHECK([if dup2() works (ie, resets the close-on-exec flag)], ksh_cv_dup2_clexec_ok,
|
[AC_CACHE_CHECK([if dup2() works (ie, resets the close-on-exec flag)], ksh_cv_dup2_clexec_ok,
|
||||||
@ -428,7 +415,6 @@ main()
|
|||||||
])dnl
|
])dnl
|
||||||
dnl
|
dnl
|
||||||
dnl
|
dnl
|
||||||
dnl
|
|
||||||
dnl Check type of signal routines (posix, 4.2bsd, 4.1bsd or v7)
|
dnl Check type of signal routines (posix, 4.2bsd, 4.1bsd or v7)
|
||||||
AC_DEFUN(KSH_SIGNAL_CHECK,
|
AC_DEFUN(KSH_SIGNAL_CHECK,
|
||||||
[AC_CACHE_CHECK(flavour of signal routines, ksh_cv_signal_check,
|
[AC_CACHE_CHECK(flavour of signal routines, ksh_cv_signal_check,
|
||||||
@ -565,7 +551,6 @@ AC_DEFUN(KSH_SIGNAL_CHECK,
|
|||||||
])dnl
|
])dnl
|
||||||
dnl
|
dnl
|
||||||
dnl
|
dnl
|
||||||
dnl
|
|
||||||
dnl What kind of process groups: POSIX, BSD, SYSV or none
|
dnl What kind of process groups: POSIX, BSD, SYSV or none
|
||||||
dnl BSD uses setpgrp(pid, pgrp), getpgrp(pid)
|
dnl BSD uses setpgrp(pid, pgrp), getpgrp(pid)
|
||||||
dnl POSIX uses setpid(pid, pgrp), getpgrp(void)
|
dnl POSIX uses setpid(pid, pgrp), getpgrp(void)
|
||||||
@ -668,7 +653,6 @@ AC_DEFUN(KSH_PGRP_CHECK,
|
|||||||
])dnl
|
])dnl
|
||||||
dnl
|
dnl
|
||||||
dnl
|
dnl
|
||||||
dnl
|
|
||||||
dnl Check if the pgrp of setpgrp() can't be the pid of a zombie process.
|
dnl Check if the pgrp of setpgrp() can't be the pid of a zombie process.
|
||||||
dnl On some systems, the kernel doesn't count zombie processes when checking
|
dnl On some systems, the kernel doesn't count zombie processes when checking
|
||||||
dnl if a process group is valid, which can cause problems in creating the
|
dnl if a process group is valid, which can cause problems in creating the
|
||||||
@ -730,7 +714,6 @@ AC_DEFUN(KSH_PGRP_SYNC,
|
|||||||
])dnl
|
])dnl
|
||||||
dnl
|
dnl
|
||||||
dnl
|
dnl
|
||||||
dnl
|
|
||||||
dnl Check to see if opendir will open non-directories (not a nice thing)
|
dnl Check to see if opendir will open non-directories (not a nice thing)
|
||||||
AC_DEFUN(KSH_OPENDIR_CHECK,
|
AC_DEFUN(KSH_OPENDIR_CHECK,
|
||||||
[AC_CACHE_CHECK(if opendir() fails to open non-directories, ksh_cv_opendir_ok,
|
[AC_CACHE_CHECK(if opendir() fails to open non-directories, ksh_cv_opendir_ok,
|
||||||
@ -779,7 +762,6 @@ AC_DEFUN(KSH_OPENDIR_CHECK,
|
|||||||
])dnl
|
])dnl
|
||||||
dnl
|
dnl
|
||||||
dnl
|
dnl
|
||||||
dnl
|
|
||||||
dnl Like AC_HAVE_HEADER(unistd.h) but only defines HAVE_UNISTD_H if
|
dnl Like AC_HAVE_HEADER(unistd.h) but only defines HAVE_UNISTD_H if
|
||||||
dnl the header file is sane (MIPS RISC/os 5.0 (and later?) has a unistd.h
|
dnl the header file is sane (MIPS RISC/os 5.0 (and later?) has a unistd.h
|
||||||
dnl in the bsd43 environ that is incorrect - it defines POSIX_VERSION even
|
dnl in the bsd43 environ that is incorrect - it defines POSIX_VERSION even
|
||||||
@ -799,7 +781,6 @@ AC_DEFUN(KSH_UNISTD_H,
|
|||||||
])dnl
|
])dnl
|
||||||
dnl
|
dnl
|
||||||
dnl
|
dnl
|
||||||
dnl
|
|
||||||
dnl Several OSes need to be detected and symbols defined so the shell can
|
dnl Several OSes need to be detected and symbols defined so the shell can
|
||||||
dnl deal with them. This is a bit kludgy, but...
|
dnl deal with them. This is a bit kludgy, but...
|
||||||
dnl Currently tests for:
|
dnl Currently tests for:
|
||||||
@ -1024,7 +1005,6 @@ README file for work arounds.]))dnl
|
|||||||
])dnl
|
])dnl
|
||||||
dnl
|
dnl
|
||||||
dnl
|
dnl
|
||||||
dnl
|
|
||||||
dnl Some systems (eg, SunOS 4.0.3) have <termios.h> and <termio.h> but don't
|
dnl Some systems (eg, SunOS 4.0.3) have <termios.h> and <termio.h> but don't
|
||||||
dnl have the related functions/defines (eg, tcsetattr(), TCSADRAIN, etc.)
|
dnl have the related functions/defines (eg, tcsetattr(), TCSADRAIN, etc.)
|
||||||
dnl or the functions don't work well with tty process groups. Sun's bad
|
dnl or the functions don't work well with tty process groups. Sun's bad
|
||||||
@ -1081,7 +1061,6 @@ dnl fi
|
|||||||
])dnl
|
])dnl
|
||||||
dnl
|
dnl
|
||||||
dnl
|
dnl
|
||||||
dnl
|
|
||||||
dnl Check if lstat() is available - special test needed 'cause lstat only
|
dnl Check if lstat() is available - special test needed 'cause lstat only
|
||||||
dnl becomes visable if <sys/stat.h> is included (linux 1.3.x)...
|
dnl becomes visable if <sys/stat.h> is included (linux 1.3.x)...
|
||||||
AC_DEFUN(KSH_FUNC_LSTAT,
|
AC_DEFUN(KSH_FUNC_LSTAT,
|
||||||
|
75
chvt.c
75
chvt.c
@ -1,75 +0,0 @@
|
|||||||
/** $MirBSD: src/bin/ksh/chvt.c,v 2.1 2004/12/10 18:09:41 tg Exp $ */
|
|
||||||
|
|
||||||
/*-
|
|
||||||
* Copyright (c) 2004
|
|
||||||
* Thorsten "mirabile" Glaser <tg@66h.42h.de>
|
|
||||||
*
|
|
||||||
* Licensee is hereby permitted to deal in this work without restric-
|
|
||||||
* tion, including unlimited rights to use, publicly perform, modify,
|
|
||||||
* merge, distribute, sell, give away or sublicence, provided all co-
|
|
||||||
* pyright notices above, these terms and the disclaimer are retained
|
|
||||||
* in all redistributions or reproduced in accompanying documentation
|
|
||||||
* or other materials provided with binary redistributions.
|
|
||||||
*
|
|
||||||
* Licensor hereby provides this work "AS IS" and WITHOUT WARRANTY of
|
|
||||||
* any kind, expressed or implied, to the maximum extent permitted by
|
|
||||||
* applicable law, but with the warranty of being written without ma-
|
|
||||||
* licious intent or gross negligence; in no event shall licensor, an
|
|
||||||
* author or contributor be held liable for any damage, direct, indi-
|
|
||||||
* rect or other, however caused, arising in any way out of the usage
|
|
||||||
* of this work, even if advised of the possibility of such damage.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "sh.h"
|
|
||||||
#include <sys/ioctl.h>
|
|
||||||
#include "ksh_stat.h"
|
|
||||||
|
|
||||||
__RCSID("$MirBSD: src/bin/ksh/chvt.c,v 2.1 2004/12/10 18:09:41 tg Exp $");
|
|
||||||
|
|
||||||
char *
|
|
||||||
chvt(char *f)
|
|
||||||
{
|
|
||||||
#ifdef HAVE_SETSID
|
|
||||||
#ifdef TIOCSCTTY
|
|
||||||
int fd;
|
|
||||||
|
|
||||||
if (chown(f, 0, 0))
|
|
||||||
return "chown";
|
|
||||||
if (chmod(f, 0600))
|
|
||||||
return "chmod";
|
|
||||||
#if defined(HAVE_REVOKE) && !defined(linux)
|
|
||||||
if (revoke(f))
|
|
||||||
return "revoke";
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if ((fd = open(f, O_RDWR)) == -1) {
|
|
||||||
sleep(1);
|
|
||||||
if ((fd = open(f, O_RDWR)) == -1)
|
|
||||||
return "open";
|
|
||||||
}
|
|
||||||
switch (fork()) {
|
|
||||||
case -1:
|
|
||||||
return "fork";
|
|
||||||
case 0:
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
_exit(0);
|
|
||||||
}
|
|
||||||
if (setsid() == -1)
|
|
||||||
return "setsid";
|
|
||||||
if (ioctl(fd, TIOCSCTTY, NULL) == -1)
|
|
||||||
return "ioctl";
|
|
||||||
dup2(fd, 0);
|
|
||||||
dup2(fd, 1);
|
|
||||||
dup2(fd, 2);
|
|
||||||
if (fd > 2)
|
|
||||||
close(fd);
|
|
||||||
|
|
||||||
return NULL;
|
|
||||||
#else
|
|
||||||
return "ioctl - TIOCSCTTY not implemented";
|
|
||||||
#endif
|
|
||||||
#else
|
|
||||||
return "setsid not implemented";
|
|
||||||
#endif
|
|
||||||
}
|
|
42
main.c
42
main.c
@ -1,4 +1,4 @@
|
|||||||
/** $MirBSD: src/bin/ksh/main.c,v 2.2 2004/12/13 16:48:54 tg Exp $ */
|
/** $MirBSD: src/bin/ksh/main.c,v 2.3 2004/12/13 18:53:25 tg Exp $ */
|
||||||
/* $OpenBSD: main.c,v 1.28 2004/08/23 14:56:32 millert Exp $ */
|
/* $OpenBSD: main.c,v 1.28 2004/08/23 14:56:32 millert Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -11,14 +11,42 @@
|
|||||||
#include "ksh_stat.h"
|
#include "ksh_stat.h"
|
||||||
#include "ksh_time.h"
|
#include "ksh_time.h"
|
||||||
|
|
||||||
__RCSID("$MirBSD: src/bin/ksh/main.c,v 2.2 2004/12/13 16:48:54 tg Exp $");
|
/*
|
||||||
|
* shell version
|
||||||
|
*/
|
||||||
|
|
||||||
extern char **environ;
|
__RCSID("$MirBSD: src/bin/ksh/main.c,v 2.3 2004/12/13 18:53:25 tg Exp $");
|
||||||
|
|
||||||
|
static const char version_param[] =
|
||||||
|
#ifdef KSH
|
||||||
|
"KSH_VERSION"
|
||||||
|
#else /* KSH */
|
||||||
|
"SH_VERSION"
|
||||||
|
#endif /* KSH */
|
||||||
|
;
|
||||||
|
|
||||||
|
const char ksh_version[] =
|
||||||
|
"@(#)PD KSH v5.2.14 MirOS R19 in "
|
||||||
|
#ifdef MIRBSD_NATIVE
|
||||||
|
"native "
|
||||||
|
#endif
|
||||||
|
#ifdef KSH
|
||||||
|
"KSH"
|
||||||
|
#else
|
||||||
|
"POSIX"
|
||||||
|
#endif
|
||||||
|
" mode"
|
||||||
|
#ifndef MIRBSD_NATIVE
|
||||||
|
" as mksh"
|
||||||
|
#endif
|
||||||
|
;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* global data
|
* global data
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
extern char **environ;
|
||||||
|
|
||||||
static void reclaim(void);
|
static void reclaim(void);
|
||||||
static void remove_temps(struct temp *tp);
|
static void remove_temps(struct temp *tp);
|
||||||
static int is_restricted(char *name);
|
static int is_restricted(char *name);
|
||||||
@ -31,14 +59,6 @@ static const char initifs[] = "IFS= \t\n";
|
|||||||
|
|
||||||
static const char initsubs[] = "${PS2=> } ${PS3=#? } ${PS4=+ }";
|
static const char initsubs[] = "${PS2=> } ${PS3=#? } ${PS4=+ }";
|
||||||
|
|
||||||
static const char version_param[] =
|
|
||||||
#ifdef KSH
|
|
||||||
"KSH_VERSION"
|
|
||||||
#else /* KSH */
|
|
||||||
"SH_VERSION"
|
|
||||||
#endif /* KSH */
|
|
||||||
;
|
|
||||||
|
|
||||||
static const char *const initcoms [] = {
|
static const char *const initcoms [] = {
|
||||||
"typeset", "-x", "SHELL", "PATH", "HOME", NULL,
|
"typeset", "-x", "SHELL", "PATH", "HOME", NULL,
|
||||||
"typeset", "-r", version_param, NULL,
|
"typeset", "-r", version_param, NULL,
|
||||||
|
59
misc.c
59
misc.c
@ -1,4 +1,4 @@
|
|||||||
/** $MirBSD: src/bin/ksh/misc.c,v 2.1 2004/12/10 18:09:41 tg Exp $ */
|
/** $MirBSD: src/bin/ksh/misc.c,v 2.2 2004/12/13 18:53:25 tg Exp $ */
|
||||||
/* $OpenBSD: misc.c,v 1.20 2003/10/22 07:40:38 jmc Exp $ */
|
/* $OpenBSD: misc.c,v 1.20 2003/10/22 07:40:38 jmc Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -10,8 +10,10 @@
|
|||||||
#ifdef HAVE_LIMITS_H
|
#ifdef HAVE_LIMITS_H
|
||||||
# include <limits.h>
|
# include <limits.h>
|
||||||
#endif
|
#endif
|
||||||
|
#include <sys/ioctl.h>
|
||||||
|
#include "ksh_stat.h"
|
||||||
|
|
||||||
__RCSID("$MirBSD: src/bin/ksh/misc.c,v 2.1 2004/12/10 18:09:41 tg Exp $");
|
__RCSID("$MirBSD: src/bin/ksh/misc.c,v 2.2 2004/12/13 18:53:25 tg Exp $");
|
||||||
|
|
||||||
#ifndef UCHAR_MAX
|
#ifndef UCHAR_MAX
|
||||||
# define UCHAR_MAX 0xFF
|
# define UCHAR_MAX 0xFF
|
||||||
@ -1334,10 +1336,60 @@ ksh_get_wd(char *buf, int bsize)
|
|||||||
}
|
}
|
||||||
|
|
||||||
#ifdef KSH
|
#ifdef KSH
|
||||||
#include "ksh_stat.h"
|
|
||||||
|
#if !defined(HAVE_SETSID)
|
||||||
|
#define NO_CHVT "setsid not implemented"
|
||||||
|
#elif !defined(TIOCSCTTY)
|
||||||
|
#define NO_CHVT "no TIOCSCTTY ioctl"
|
||||||
|
#else
|
||||||
|
static char *
|
||||||
|
chvt(char *f)
|
||||||
|
{
|
||||||
|
int fd;
|
||||||
|
|
||||||
|
if (chown(f, 0, 0))
|
||||||
|
return "chown";
|
||||||
|
if (chmod(f, 0600))
|
||||||
|
return "chmod";
|
||||||
|
#if defined(HAVE_REVOKE) && !defined(linux)
|
||||||
|
if (revoke(f))
|
||||||
|
return "revoke";
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if ((fd = open(f, O_RDWR)) == -1) {
|
||||||
|
sleep(1);
|
||||||
|
if ((fd = open(f, O_RDWR)) == -1)
|
||||||
|
return "open";
|
||||||
|
}
|
||||||
|
switch (fork()) {
|
||||||
|
case -1:
|
||||||
|
return "fork";
|
||||||
|
case 0:
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
_exit(0);
|
||||||
|
}
|
||||||
|
if (setsid() == -1)
|
||||||
|
return "setsid";
|
||||||
|
if (ioctl(fd, TIOCSCTTY, NULL) == -1)
|
||||||
|
return "ioctl";
|
||||||
|
dup2(fd, 0);
|
||||||
|
dup2(fd, 1);
|
||||||
|
dup2(fd, 2);
|
||||||
|
if (fd > 2)
|
||||||
|
close(fd);
|
||||||
|
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
static int
|
static int
|
||||||
parse_T(char *fn)
|
parse_T(char *fn)
|
||||||
{
|
{
|
||||||
|
#ifdef NO_CHVT
|
||||||
|
warningf(0, "chvt: %s", NO_CHVT);
|
||||||
|
return -1;
|
||||||
|
#else
|
||||||
char *rv, dv[20];
|
char *rv, dv[20];
|
||||||
struct stat sb;
|
struct stat sb;
|
||||||
|
|
||||||
@ -1361,5 +1413,6 @@ parse_T(char *fn)
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
68
missing.c
68
missing.c
@ -1,4 +1,4 @@
|
|||||||
/** $MirBSD: src/bin/ksh/missing.c,v 2.1 2004/12/10 18:09:41 tg Exp $ */
|
/** $MirBSD: src/bin/ksh/missing.c,v 2.2 2004/12/13 18:53:25 tg Exp $ */
|
||||||
/* $OpenBSD: missing.c,v 1.5 2003/05/16 18:49:46 jsyn Exp $ */
|
/* $OpenBSD: missing.c,v 1.5 2003/05/16 18:49:46 jsyn Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -9,6 +9,8 @@
|
|||||||
#include "ksh_stat.h"
|
#include "ksh_stat.h"
|
||||||
#include "ksh_dir.h"
|
#include "ksh_dir.h"
|
||||||
|
|
||||||
|
__RCSID("$MirBSD: src/bin/ksh/missing.c,v 2.2 2004/12/13 18:53:25 tg Exp $");
|
||||||
|
|
||||||
#ifndef HAVE_MEMSET
|
#ifndef HAVE_MEMSET
|
||||||
void *
|
void *
|
||||||
memset(d, c, n)
|
memset(d, c, n)
|
||||||
@ -289,3 +291,67 @@ dup2(oldd, newd)
|
|||||||
return fcntl(oldd, F_DUPFD, newd);
|
return fcntl(oldd, F_DUPFD, newd);
|
||||||
}
|
}
|
||||||
#endif /* !HAVE_DUP2 */
|
#endif /* !HAVE_DUP2 */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Random functions
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef HAVE_SRANDOM
|
||||||
|
#undef HAVE_RANDOM
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef KSH
|
||||||
|
|
||||||
|
int rnd_state;
|
||||||
|
|
||||||
|
void
|
||||||
|
rnd_seed(long newval)
|
||||||
|
{
|
||||||
|
rnd_put(newval);
|
||||||
|
rnd_state = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
long
|
||||||
|
rnd_get(void)
|
||||||
|
{
|
||||||
|
#ifdef HAVE_ARC4RANDOM
|
||||||
|
if (!rnd_state)
|
||||||
|
return arc4random() & 0x7FFF;
|
||||||
|
#endif
|
||||||
|
#ifdef HAVE_RANDOM
|
||||||
|
return random() & 0x7FFF;
|
||||||
|
#else
|
||||||
|
return rand();
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
rnd_put(long newval)
|
||||||
|
{
|
||||||
|
long sv;
|
||||||
|
|
||||||
|
rnd_state = 1 | rnd_get();
|
||||||
|
sv = (rnd_get() << (newval & 7)) ^ newval;
|
||||||
|
|
||||||
|
#if defined(HAVE_ARC4RANDOM_PUSH)
|
||||||
|
arc4random_push(sv);
|
||||||
|
#elif defined(HAVE_ARC4RANDOM_ADDRANDOM)
|
||||||
|
arc4random_addrandom((char *)&sv, sizeof(sv));
|
||||||
|
#endif
|
||||||
|
#ifdef HAVE_ARC4RANDOM
|
||||||
|
sv ^= arc4random();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef HAVE_RANDOM
|
||||||
|
srandom(sv);
|
||||||
|
#else
|
||||||
|
srand(sv);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
while (rnd_state) {
|
||||||
|
rnd_get();
|
||||||
|
rnd_state >>= 1;
|
||||||
|
}
|
||||||
|
rnd_state = 1;
|
||||||
|
}
|
||||||
|
#endif /* def KSH */
|
||||||
|
12
proto.h
12
proto.h
@ -1,4 +1,4 @@
|
|||||||
/** $MirBSD: src/bin/ksh/proto.h,v 2.2 2004/12/13 16:48:54 tg Exp $ */
|
/** $MirBSD: src/bin/ksh/proto.h,v 2.3 2004/12/13 18:53:25 tg Exp $ */
|
||||||
/* $OpenBSD: proto.h,v 1.11 2003/05/16 19:58:57 jsyn Exp $ */
|
/* $OpenBSD: proto.h,v 1.11 2003/05/16 19:58:57 jsyn Exp $ */
|
||||||
/* $From: proto.h,v 1.3 1994/05/19 18:32:40 michael Exp michael $ */
|
/* $From: proto.h,v 1.3 1994/05/19 18:32:40 michael Exp michael $ */
|
||||||
|
|
||||||
@ -54,8 +54,6 @@ int c_exec(char **wp);
|
|||||||
int c_builtin(char **wp);
|
int c_builtin(char **wp);
|
||||||
/* c_test.c */
|
/* c_test.c */
|
||||||
int c_test(char **wp);
|
int c_test(char **wp);
|
||||||
/* chvt.c */
|
|
||||||
char * chvt(char *);
|
|
||||||
/* edit.c: most prototypes in edit.h */
|
/* edit.c: most prototypes in edit.h */
|
||||||
void x_init(void);
|
void x_init(void);
|
||||||
int x_read(char *buf, size_t len);
|
int x_read(char *buf, size_t len);
|
||||||
@ -205,16 +203,16 @@ char *str_zcpy(char *dst, const char *src, int dsize);
|
|||||||
int blocking_read(int fd, char *buf, int nbytes);
|
int blocking_read(int fd, char *buf, int nbytes);
|
||||||
int reset_nonblock(int fd);
|
int reset_nonblock(int fd);
|
||||||
char *ksh_get_wd(char *buf, int bsize);
|
char *ksh_get_wd(char *buf, int bsize);
|
||||||
|
/* missing.c */
|
||||||
|
long rnd_get(void);
|
||||||
|
void rnd_put(long);
|
||||||
|
void rnd_seed(long);
|
||||||
/* path.c */
|
/* path.c */
|
||||||
int make_path(const char *cwd, const char *file,
|
int make_path(const char *cwd, const char *file,
|
||||||
char **pathlist, XString *xsp, int *phys_pathp);
|
char **pathlist, XString *xsp, int *phys_pathp);
|
||||||
void simplify_path(char *path);
|
void simplify_path(char *path);
|
||||||
char *get_phys_path(const char *path);
|
char *get_phys_path(const char *path);
|
||||||
void set_current_wd(char *path);
|
void set_current_wd(char *path);
|
||||||
/* rnd.c */
|
|
||||||
long rnd_get(void);
|
|
||||||
void rnd_put(long);
|
|
||||||
void rnd_seed(long);
|
|
||||||
/* syn.c */
|
/* syn.c */
|
||||||
void initkeywords(void);
|
void initkeywords(void);
|
||||||
struct op * compile(Source *s);
|
struct op * compile(Source *s);
|
||||||
|
86
rnd.c
86
rnd.c
@ -1,86 +0,0 @@
|
|||||||
/** $MirBSD: src/bin/ksh/rnd.c,v 2.1 2004/12/10 18:09:42 tg Exp $ */
|
|
||||||
|
|
||||||
/*-
|
|
||||||
* Copyright (c) 2004
|
|
||||||
* Thorsten "mirabile" Glaser <tg@66h.42h.de>
|
|
||||||
*
|
|
||||||
* Licensee is hereby permitted to deal in this work without restric-
|
|
||||||
* tion, including unlimited rights to use, publicly perform, modify,
|
|
||||||
* merge, distribute, sell, give away or sublicence, provided all co-
|
|
||||||
* pyright notices above, these terms and the disclaimer are retained
|
|
||||||
* in all redistributions or reproduced in accompanying documentation
|
|
||||||
* or other materials provided with binary redistributions.
|
|
||||||
*
|
|
||||||
* Licensor hereby provides this work "AS IS" and WITHOUT WARRANTY of
|
|
||||||
* any kind, expressed or implied, to the maximum extent permitted by
|
|
||||||
* applicable law, but with the warranty of being written without ma-
|
|
||||||
* licious intent or gross negligence; in no event shall licensor, an
|
|
||||||
* author or contributor be held liable for any damage, direct, indi-
|
|
||||||
* rect or other, however caused, arising in any way out of the usage
|
|
||||||
* of this work, even if advised of the possibility of such damage.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "sh.h"
|
|
||||||
#include "proto.h"
|
|
||||||
|
|
||||||
__RCSID("$MirBSD: src/bin/ksh/rnd.c,v 2.1 2004/12/10 18:09:42 tg Exp $");
|
|
||||||
|
|
||||||
#ifndef HAVE_SRANDOM
|
|
||||||
#undef HAVE_RANDOM
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef KSH
|
|
||||||
|
|
||||||
int rnd_state;
|
|
||||||
|
|
||||||
void
|
|
||||||
rnd_seed(long newval)
|
|
||||||
{
|
|
||||||
rnd_put(newval);
|
|
||||||
rnd_state = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
long
|
|
||||||
rnd_get(void)
|
|
||||||
{
|
|
||||||
#ifdef HAVE_ARC4RANDOM
|
|
||||||
if (!rnd_state)
|
|
||||||
return arc4random() & 0x7FFF;
|
|
||||||
#endif
|
|
||||||
#ifdef HAVE_RANDOM
|
|
||||||
return random() & 0x7FFF;
|
|
||||||
#else
|
|
||||||
return rand();
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
rnd_put(long newval)
|
|
||||||
{
|
|
||||||
long sv;
|
|
||||||
|
|
||||||
rnd_state = 1 | rnd_get();
|
|
||||||
sv = (rnd_get() << (newval & 7)) ^ newval;
|
|
||||||
|
|
||||||
#if defined(HAVE_ARC4RANDOM_PUSH)
|
|
||||||
arc4random_push(sv);
|
|
||||||
#elif defined(HAVE_ARC4RANDOM_ADDRANDOM)
|
|
||||||
arc4random_addrandom((char *)&sv, sizeof(sv));
|
|
||||||
#endif
|
|
||||||
#ifdef HAVE_ARC4RANDOM
|
|
||||||
sv ^= arc4random();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef HAVE_RANDOM
|
|
||||||
srandom(sv);
|
|
||||||
#else
|
|
||||||
srand(sv);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
while (rnd_state) {
|
|
||||||
rnd_get();
|
|
||||||
rnd_state >>= 1;
|
|
||||||
}
|
|
||||||
rnd_state = 1;
|
|
||||||
}
|
|
||||||
#endif /* def KSH */
|
|
42
version.c
42
version.c
@ -1,42 +0,0 @@
|
|||||||
/** $MirBSD: src/bin/ksh/version.c,v 2.1 2004/12/10 18:09:42 tg Exp $ */
|
|
||||||
/* $OpenBSD: version.c,v 1.12 1999/07/14 13:37:24 millert Exp $ */
|
|
||||||
|
|
||||||
/*-
|
|
||||||
* Copyright (c) 2004
|
|
||||||
* Thorsten "mirabile" Glaser <tg@66h.42h.de>
|
|
||||||
*
|
|
||||||
* Licensee is hereby permitted to deal in this work without restric-
|
|
||||||
* tion, including unlimited rights to use, publicly perform, modify,
|
|
||||||
* merge, distribute, sell, give away or sublicence, provided all co-
|
|
||||||
* pyright notices above, these terms and the disclaimer are retained
|
|
||||||
* in all redistributions or reproduced in accompanying documentation
|
|
||||||
* or other materials provided with binary redistributions.
|
|
||||||
*
|
|
||||||
* Licensor hereby provides this work "AS IS" and WITHOUT WARRANTY of
|
|
||||||
* any kind, expressed or implied, to the maximum extent permitted by
|
|
||||||
* applicable law, but with the warranty of being written without ma-
|
|
||||||
* licious intent or gross negligence; in no event shall licensor, an
|
|
||||||
* author or contributor be held liable for any damage, direct, indi-
|
|
||||||
* rect or other, however caused, arising in any way out of the usage
|
|
||||||
* of this work, even if advised of the possibility of such damage.
|
|
||||||
*-
|
|
||||||
* value of $KSH_VERSION (or $SH_VERSION)
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "sh.h"
|
|
||||||
|
|
||||||
const char ksh_version[] =
|
|
||||||
"@(#)PD KSH v5.2.14 MirOS R19 in "
|
|
||||||
#ifdef MIRBSD_NATIVE
|
|
||||||
"native "
|
|
||||||
#endif
|
|
||||||
#ifdef KSH
|
|
||||||
"KSH"
|
|
||||||
#else
|
|
||||||
"POSIX"
|
|
||||||
#endif
|
|
||||||
" mode"
|
|
||||||
#ifdef MKSH
|
|
||||||
" as mksh"
|
|
||||||
#endif
|
|
||||||
;
|
|
Reference in New Issue
Block a user