Initial import of the CDE 2.1.30 sources from the Open Group.

This commit is contained in:
Peter Howkins
2012-03-10 18:21:40 +00:00
commit 83b6996daa
18978 changed files with 3945623 additions and 0 deletions

View File

@@ -0,0 +1,80 @@
XCOMM $XConsortium: Imakefile /main/7 1996/05/09 17:33:38 drk $
LOCAL_LIBRARIES =
SRCS =
SUBCFLAGS = -O
UFLAGS = $(SUBCFLAGS)
ULDFLAGS =
#ifdef RsArchitecture
CCFLAGS = CCFLAGS=" "
#else
CCFLAGS =
#endif
#ifdef SunArchitecture
.NO_PARALLEL:
#endif /* SunArchitecture */
FORCE_SHIP = -E
MALLOCOBJ =
KSHSRC = ./src/cmd/ksh93
KSHLIBS = \
$(KSHSRC)/../../lib/libcmd/libcmd.a
KSH_OBJS = \
$(KSHSRC)/main.o \
$(KSHSRC)/timers.o \
$(KSHLIBS)
OBJS = $(KSH_OBJS) $(KSH_LIBS)
SUIDEXECDEFINES = \
-DPROFILEPATH=\"$(CDE_CONFIGURATION_TOP)/config/profile\" \
-DSUIDPROFILEPATH=\"$(CDE_CONFIGURATION_TOP)/config/suid_profile\" \
-DSUIDEXECPATH=\"$(CDE_INSTALLATION_TOP)/bin/suid_exec\" \
-DCDE_INSTALLATION_TOP=\"$(CDE_INSTALLATION_TOP)\"
CCFLAGS = $(CDEBUGFLAGS) $(SUIDEXECDEFINES) $(STD_DEFINES) $(ANSI_DEFINES)
all:: ksh93src ksh93.o
XCOMM
XCOMM A temporary hack until we get Imakefiles in the base of ksh-93.
XCOMM
XCOMM We test for presense of /bin/ksh because on HP/UX there is a
XCOMM limitation in the size of environment variables that prevents the
XCOMM ksh-93 build scripts from functioning. That will be worked around
XCOMM in a near future release of ksh-93 as well, but then again this
XCOMM whole target will change anyway.
XCOMM
SHIP_DIR = ship
ALL_SUBS = *
ksh93src:
$(RM) $(SHIP_DIR)/$(ALL_SUBS)/$(ALL_SUBS)/BUILT; \
if [ -f /bin/ksh ]; \
then \
SHELL=/bin/ksh CC=$(CC) CCFLAGS="$(CCFLAGS)" /bin/ksh ship/shipin $(FORCE_SHIP); \
elif [ -f /bin/sh ]; \
then \
SHELL=/bin/sh CC=$(CC) CCFLAGS="$(CCFLAGS)" /bin/sh ship/shipin $(FORCE_SHIP); \
else \
SHELL="" CC=$(CC) CCFLAGS="$(CCFLAGS)" ship/shipin $(FORCE_SHIP); \
fi
ksh93.o: $(OBJS)
$(LD) -r -o $@ $(OBJS)
clobber:: clobmine
clobmine:
$(RM) -f libksh93.a
depend::
install::

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,351 @@
.\" $XConsortium: nval.3 /main/2 1995/07/17 14:27:24 drk $
.TH NVAL 3 "12 Nov 1992"
.PP
\fBNAME\fP
.PP
\fBnval\fR \- a \f5ksh\fP name/value library
.PP
\fBSYNOPSIS\fP
.ta .8i 1.6i 2.4i 3.2i 4.0i 4.8i
.PP
.nf
.ft 5
#include <nval.h>
Namval_t *nv_namset(const char *\fIname\fP, Hashtab_t *\fItable\fP, int \fItype\fP);
Namval_t *nv_search(const char *\fIname\fP, Hashtab_t *\fItable\fP, int \fItype\fP);
void nv_free(Namval_t *\fInp\fP);
char *nv_name(Namval_t *\fInp\fP);
char *nv_getval(Namval_t *\fInp\fP);
double nv_getnum(Namval_t *\fInp\fP);
void nv_putval(Namval_t *\fInp\fP, const char *\fIval\fP, int \fItype\fP);
Namfun_t *nv_stack(Namval_t *\fInp\fP, Namfun_t *\fIfp\fP);
char *nv_getv(Namval_t *\fInp\fP, Namfun_t *\fIfp\fP);
double nv_getn(Namval_t *\fInp\fP, Namfun_t *\fIfp\fP);
void nv_putv(Namval_t *\fInp\fP, const char *\fIval\fP, int \fItype\fP, Namfun_t *\fIfp\fP);
char *nv_settrap(Namval_t *\fInp\fP, const char *\fIe\fP, Namval_t *\fIa\fP, Namfun_t *\fIfp\fP);
Namval_t *nv_create(Namval_t *\fInp\fP, const char *\fIname\fP, Namfun_t *\fIfp\fP);
void nv_newtype(Namval_t *\fInp\fP, unsigned \fItype\fP, int \fIsize\fP);
unsigned nv_istype(Namval_t *\fInp\fP, unsigned \fItype\fP);
int nv_scan(Hashtab_t *\fItable\fP, void(*\fIfn\fP)(Namval_t*,int,int));
Namarr_t *nv_setarray(Namval_t *\fInp\fP,void*(*\fIfun\fP)(Namval_t*,const char*,int));
Namval_t *nv_putsub(Namval_t *\fInp\fP, char *\fIname\fP, long \fImode\fP);
char *nv_getsub(Namval_t *\fInp\fP);
int nv_nextsub(Namval_t *\fInp\fP);
int nv_aindex(Namval_t *\fInp\fP);
void nv_setref(Namval_t *\fInp\fP);
void nv_setvtree(Namval_t *\fInp\fP);
.fR
.fi
.PP
\fBDESCRIPTION\fP
.PP
\fINval\fP is a library of functions for interacting with name-value
pairs as used in \f5ksh\fP.
It is built on top an the extensible hashing library facility
in \f5libast\fP.
Each name-value pair is represented by a
type named \f5Namval_t\fP.
A \f5Namval_t\fP contains the name, value and
attributes of a variable.
The following attributes can be associated with a name-value pair:
.IP
\f5NV_EXPORT\fP:
The export attribute.
.IP
\f5NV_RDONLY\fP:
The readonly attribute.
.IP
\f5NV_LTOU\fP:
Lower case characters are converted to upper case characters.
.IP
\f5NV_UTOL\fP:
Upper case characters are converted to lower case characters.
.IP
\f5NV_RJUST\fP:
Right justify and blank fill.
This attribute has an associated size that defines the
string length of the value.
.IP
\f5NV_LJUST\fP:
Left justify and blank fill.
This attribute has an associated size that defines the
string length of the value.
.IP
\f5NV_ZFILL\fP:
Without \f5NV_LJUST\fP, right justifies and fills with leading zeros.
With \f5NV_LJUST\fP, left justify and strip leading zeros.
Left justify and blank fill.
This attribute has an associated size that defines the
string length of the value.
.IP
\f5NV_TAGGED\fP:
Indicates the tagged attribute.
.IP
\f5NV_INTEGER\fP:
Causes value to be represented by a number.
This attribute has an associated number that defines the
arithmetic base to be used when the value is expanded as a string.
.IP
\f5NV_DOUBLE\fP:
Used in conjunction with \f5NV_INTEGER\fP to cause value
to be stored as a double precision floating point number.
This attribute has an associated number that defines the
number of places after the decimal point to be used when
the value is expanded as a string.
.IP
\f5NV_EXPNOTE\fP:
Used in conjunction with \f5NV_INTEGER\fP and \f5NV_DOUBLE\fP to
cause the value to be represented in scientific notation when
expanded as a string.
This attribute has an associated number that defines the
the precision of the mantissa.
.IP
\f5NV_REF\fP:
The name-value pair is a name reference variable.
.PP
The function \f5nv_namset()\fP returns a pointer to a name-value
pair corresponding to the given \fIname\fP.
If a name-value pair by this name does not already exist, it is
created unless \fItype\fP contains the \f5NV_NOADD\fP flag.
If the first identifier in \fIname\fP is a reference and is not
preceded by a \fB.\fP,
it will be replaced by the value of the reference
to find the name of a variable.
Unless \fItype\fP contains the \f5NV_REF\fP flag,
if the name-value pair give by \fIname\fP has the \f5NV_REF\fP
attribute, it will be replaced by the variable whose name
is the value of this name-value pair.
Unless prohibited by the \fItype\fP argument,
the \f5name\fP variable can contain an \f5=\fP
and a value that will be assigned to the name-value pair.
The argument \fItable\fP defines the table to search.
A \f5NULL\fP value causes the shell variable table to be searched.
The \fItype\fP argument consists of the bitwise-or of zero or more
of the following and zero or more of the attributes listed above.
.IP
\f5NV_VARNAME\fP:
An invalid variable name causes an error.
.IP
\f5NV_IDENTIFIER\fP:
An variable name that is not an identifier causes an error.
.IP
\f5NV_NOASSIGN\fP:
The \f5name\fP argument cannot contain an assignment.
.IP
\f5NV_ARRAY\fP:
The \f5name\fP argument cannot contain a subscript.
.IP
\f5NV_REF\fP:
Do not follow references when finding the name-value pair.
.IP
\f5NV_NOADD\fP:
The name-value pair will not be added if it doesn't exist.
Instead a \f5NULL\fP pointer will be returned.
.IP
\f5NV_NOSCOPE\fP:
Only the top level scope is used.
.PP
The \f5nv_search()\fP function returns a pointer
pointer to the name-value pair corresponding to the given name.
The \fItable\fP argument must always be specified.
The \fItype\fP argument must either be \f50\fP or \f5NV_ADD\fP.
A value of \f50\fP causes a \f5NULL\fP pointer to be returned
if the name-value pair does not already exist, whereas the value
\f5NV_ADD\fP causes the name-value pair to be created if it
does not already exist.
There is no validity check performed on the \fIname\fP argument.
.PP
The \f5nv_name()\fP function returns the name of the given name-value
pair \fInp\fP.
The \f5nv_getval()\fP function returns the value of the given
name-value pair as a string. A \f5NULL\fP return value indicates
that the name-value pair is unset.
The \f5nv_getnum()\fP function returns the value of the given
name-value pair as a double precision number.
For name-value pairs without the \f5NV_INTEGER\fP attribute,
the string value is evaluated as an arithmetic expression to
arrive at a numerical value.
.PP
The \f5nv_putval()\fP function is used to assign a \fIvalue\fP to
the name-value pair \fInp\fP.
The \fItype\fP argument consists zero or more of the bitwise-or
of \f5NV_INTEGER\fP and \f5NV_RDONLY\fP.
The presence of \f5NV_RDONLY\fP allows the assignment to occur
even if the name-value pair has the \f5NV_RDONLY\fP attribute.
The presence of \f5NV_INTEGER\fP indicates that the \fIvalue\fP
argument is actually a pointer to a double precision number
containing the value for this name-value pair.
In all cases, a copy of the value is stored as the value for
\fInp\fP.
.PP
The \f5nv_istype()\fP function can test whether or not any of
the attributes given by \fItype\fP is set.
The attribute \f5NV_ARRAY\fP can be used to test whether
or not the given name-value pair is an array.
The \f5nv_newtype()\fP function can be used to change the
attributes of the given name-value pair.
The \fIsize\fP argument is needed for attributes that require
an additional argument.
Changing the attribute may require changing the value
to agree with the new type.
For an array variable, each of the values will be changed.
.PP
A user can intercept the lookup and assignment operations by
supplying their own discipline.
A discipline is a set of functions that override the getting
and putting of values to a name-value pair.
A discipline is defined by the type
\f5Namfun_t\fP which contains the following public fields:
.nf
\f5void (*putval)();\fP
\f5char *(*getval)();\fP
\f5double (*getnum)();\fP
\f5char (*settrap)();\fP
\f5Namval_t (*create)();\fP
.fi
To create a discipline, a user creates an instance of the type
\f5Namfun_t\fP and assigns functions to one or more of these
fields. The remaining fields must be \f50\fP.
The instance must be at the beginning of a structure that contains
additional fields that are used within the discipline functions.
The discipline is installed or removed with the
\f5nv_stack()\fP function.
The \fIgetval\fP\f5()\fP discipline function is called with a pointer
to the name-value pair, \fInp\fP, and a pointer to the discipline,
\fIfp\fP.
Inside the \fIgetval\fP\f5()\fP function, the \f5nv_get()\fP function
can be used to get the value of the name-value pair that
would have resulted if the discipline were not used.
The \fIgetnum()\fP discipline is called whenever a numerical
value is needed for the name-value pair \fInp\fP.
The \fIputval\fP\f5()\fP discipline function is used to
override the assignment of values
to a name-value pair. When a name-value pair is unset, \fIputval\fP\f5()\fP
is called with \fIvalue\fP set to \f5NULL\fP.
The \f5nv_putv()\fP function is used within the \fIputval\fP\f5()\fP
to perform the assignment that would have occurred
if the discipline has not been installed.
.PP
The \fIcreate\fP\f5()\fP discipline function is called from
\f5nv_namset\fP\f5()\fP when the name-value pair for name containing a
.B \s+2.\s-2
doesn't exist.
This function is passed the name-value pointer of the longest
parent name-value pair that exists, plus the remaining string.
The \fIcreate\fP\f5()\fP discipline function
must return the created name-value pair, otherwise the default action
will be taken.
The \f5nv_create()\fP function may be called within
the \fIcreate\fP\f5()\fP
discipline function
to perform the action that would have occurred
by an earlier discipline.
.PP
The \fIsettrap\fP\f5()\fP discipline function is used in conjunction with
user defined discipline shell functions whose are of the form
\fIvarname\fP\f5.\fP\fIevent\fP.
Whenever a function whose name is of the form \fIvarname\fP\f5.\fP\fIevent\fP,
is defined the \fIsettrap\fP\f5()\fP function is invoked with the same
argument format as \f5nv_settrap\fP\f5()\fP.
If the given event \fIe\fP is known by this discipline,
then the value of the action associated without the event should be returned.
Otherwise, this discipline function
should return the value of \f5nv_settrap()\fP. The \f5nv_settrap()\fP invokes
earlier disciplines to find the given event.
If the event \fIe\fP is NULL, the \fIsettrap\fP\f5()\fP must return the
name of the trap that follows the event name given by
\fIa\fP. If \fIa\fP is also NULL, the name of the first event
must be returned.
.PP
The \f5nv_scan()\fP function is used to walk through
all name-value pairs in the table given by \fItable\fP.
If \fIfn\fP is non-zero, then this function will be executed
for each name-value pair in the table.
The number of elements in the table will be returned.
.PP
The \f5nv_aindex()\fP function returns
the current index for
the indexed array given by the name-value pair pointer \fInp\fP.
The return value is negative if \fInp\fP refers to
an associative array.
.PP
The \f5nv_setarray()\fP function is used to create an associative array
from a name-value pair node.
The function \fIfun\fP defines the semantics of the associative
array.
Using \fIfun\fP equal to \f5nv_associative()\fP implements the default
associative array semantics
that is used with \f5typeset\ -A\fP.
This function \fIfun\fP will be called with third argument as follows:
.IP
\f5NV_AINIT\fP:
This will be called at initialization.
The function you supply must return a pointer to a structure
that contains the type \f5Namarr_t\fP as the first element.
All other calls receive this value as an argument.
.IP
\f5NV_AFREE\fP:
This will be called after all elements of the name-value pair have been
deleted and the array is to be freed.
.IP
\f5NV_ADELETE\fP:
The current element should be deleted.
.IP
\f5NV_ANEXT\fP:
This means that the array subscript should be advanced to the
next subscript. A \f5NULL\fP return indicates that there are
no more subscripts.
.IP
\f5NV_ANAME\fP:
The name of the current subscript must be returned.
.PP
If \fInp\fP refers to an array,
the \f5nv_getsub()\fP returns a pointer to
the name of the current subscript.
Otherwise, \f5nv_subscript()\fP
returns \f5NULL\fP.
.PP
The \f5nv_putsub()\fP function is used to
set the subscript for the next reference to \f5np\fP.
If the \f5name\fP argument is not \f5NULL\fP,
it defines the value of the next subscript.
The \f5mode\fP argument can contain one or more of the following flags:
.IP
\f5ARRAY_ADD\fP:
Add the subscript if not found.
Otherwise, \f5nv_putsub()\fP returns \f5NULL\fP if the
given subscript is not found.
.IP
\f5ARRAY_SCAN\fP:
Begin a walk through the subscripts starting at the subscript
given by \f5name\fP if given. Otherwise,
the walk is started from the beginning.
The \f5nv_nextsub()\fP function is used to advance to the
next subscript.
It returns 0 if there are no more subscripts or if called
when not in a scan.
.IP
\f5ARRAY_UNDEF\fP:
This causes any current scan to terminate and leaves the
subscript in an undefined state.
.PP
If \f5ARRAY_ADD\fP is not given and the subscript
does not exist, a \f5NULL\fP value is returned.
.PP
The \f5nv_setref()\fP function makes the name-value pair \f5np\fP
into a reference to the variable whose name is given by
the value of \f5np\fP.
.PP
The \f5nv_setvtree()\fP function makes the name-value pair \f5np\fP
into a tree structured variable so that \f5nv_getval()\fP
will return a string containing all the names and values of
children nodes in a format that can be used in
a shell compound assignment.
.PP
\fBAUTHOR\fP
David G. Korn (dgk@research.att.com).

View File

@@ -0,0 +1,154 @@
/* $XConsortium: README /main/2 1996/07/15 14:13:29 drk $ */
Software shipment information. [better documentation forthcoming ...]
All files and directories, except for those in /usr/spool/uucppublic,
are rooted at the shipment/installation directory named by
$INSTALLROOT. The $INSTALLROOT hierarchy is similar to the System V
/usr hierarchy.
The $INSTALLROOT/ship subdirectory is automatically maintained by
shipin and shipout. If you expect to receive future shipments then
do not change files in this directory.
pax is the Bell Labs implementation of the proposed POSIX (01/90)
portable archive interchange command. The default output format is
`cpio -c'. The pax delta format is a Bell Labs extension.
The following assumes:
INSTALLROOT=<path name of software installation root directory>
After each shipment:
<follow specific shipment instructions>
cd $INSTALLROOT
ship/shipin
`ship/shipin -n' shows actions but does not unbundle or build.
`ship/shipin -s <dir>' unbundles from <dir> rather than /usr/spool/uucppublic.
`ship/shipin -u' unbundles the shipment but does not build.
`ship/shipin -i' copies from spool area but does not unbundle or build.
`ship/shipin -E' rebuild components that failed last time (use after fixes).
Any non-option arguments to shipin are passed as arguments to the
generating make or shell script for each component.
To pass the shipment to another machine (requires ksh):
# rcp # TO=host:ship
# uucp # TO=machine!user
# list of files # TO=%list
# remote dk pull script # TO=%pull
cd $INSTALLROOT
ship/shipin -i # if not installed on this machine
cd ship
shipout $TO
{rcp,uucp} initiate copies whereas {list,pull} generate information on
stdout. {uucp} copies to an intermediate spool area on the other machine
whereas {rcp,list,pull} are relative to $INSTALLROOT on the other machine.
To copy a command <cmd> from $INSTALLROOT to a new root you must copy:
$INSTALLROOT/bin/<cmd>
$INSTALLROOT/lib/<cmd>
to the new root directory for all interdependent <cmd>'s. Depending on
<cmd>, only one of the above files/directories may exist.
Be sure to maintain a different $INSTALLROOT for each machine architecture.
If the same $INSTALLROOT/ship must be reused for a different architecture
then delete everything except ship from $INSTALLROOT and run ship/shipin -F.
An alternative would be to use nmake and optionally 3d to viewpath a new
architecture hierarchy on top of $INSTALLROOT. In this case nmake would
be run from within the $INSTALLROOT/src/(cmd|lib) hierarchy.
The files below may appear on the shipment side, the installation side,
or both. <installer-login> and <shipper-system> are defined in the
shipment mail announcement.
Each shipment is identified by a two part version number [R]YYMMDD
R release -- if specified then it must match for compatibility
YYMMDD shipment year, month and day number
/usr/spool/uucppublic/<installer-login>/<shipper-system> directory hierarchy:
<shipper-login>.<YYMMDD> shipment control directory
<shipper-login>.<YYMMDD>/manifest list of all files in shipment
$INSTALLROOT directory hierarchy:
bin/ executable binaries and scripts
include/ common header files
lib/ object archives a common data
man/ man page subtree
man1/ command man pages
man3/ library man pages
man8/ adminstration and maintenance man pages
src/ source subtree
cmd/ command source
lib/ library source
ship/ shipment and installation info
$INSTALLROOT/ship contents:
README installation info
!<mach_user> shipment installation message for machine!user
ship.body optional shipment announcement main body
ship.head optional shipment announcement header
ship.tail optional shipment announcement trailer
shipcost show relative cost of delta/update shipment
shipcrate crate all components for shipout
shipin unbundle, build and install shipment
shiplist shipout using name-tool list
shipop shipin/shipout support executable
shipout split and send shipment
shipslog shipment log and recipient address info
shipswab clean old stuff from the ship area
shipyard shipment support tools component name
lib* library components
* command components
$INSTALLROOT/ship/<component> contents:
<[R]YYMMDD> information for the <[R]YYMMDD> shipment
base link to the newest pax base archive
delta link to the newest pax delta archive
in.log shipin log
items required components (excluding this one)
list optional list of persons to send to
message optional message to include in shipment announcement
owner mail address for installation report
release the the current shipment release number
report optional list of $INSTALLROOT relative files to report
$INSTALLROOT/ship/<component>/<[R]YYMMDD> contents:
<[R]YYMMDD> pax delta archive for ../[R]YYMMDD/base
<[R]YYMMDD>.<NNN> delta archive split for uucp
BUILT present if release build succeeded
ERROR present if release build failed
GENERATED present if base archive was generated from a delta
UNCRATED present if release uncrate succeeded
base pax base archive
base.<NNN> base archive split for uucp
items items for this release
message message for this release
owner owner for this release
report report for this release
Each component $NAME is extracted into either $INSTALLROOT/src/lib/$NAME
or $INSTALLROOT/src/cmd/$NAME. The following are attempted, in order,
to build and install $NAME under $INSTALLROOT:
$INSTALLROOT/bin/nmake -f Makefile install
mamexec install < Mamfile # mamexec is built into ship/shipin
make -f makefile install
sh Makescript
where Mamfile, Makescript and makefile are usually generated from the
corresponding nmake Makefile.
Glenn Fowler ulysses!gsf
David Korn ulysses!dgk

View File

@@ -0,0 +1,5 @@
AT&T Bell Laboratories
Advanced Software Technology Department
{ulysses,attmail}!dgk
dgk@ulysses.att.com
David Korn 908-582-7975

View File

@@ -0,0 +1 @@
libcmd libast

View File

@@ -0,0 +1 @@
liszt!easy!liszt!easy!usl!att!gryphon!dgk

View File

@@ -0,0 +1,5 @@
AT&T Bell Laboratories
Advanced Software Technology Department
{ulysses,attmail}!dgk
dgk@ulysses.att.com
David Korn 908-582-7975

View File

@@ -0,0 +1 @@
libcmd libast

View File

@@ -0,0 +1 @@
liszt!easy!liszt!easy!usl!att!gryphon!dgk

View File

@@ -0,0 +1,5 @@
AT&T Bell Laboratories
Advanced Software Technology Department
{research,attmail}!dgk
dgk@research.att.com
David Korn 908-582-7975

View File

@@ -0,0 +1 @@
libcmd libast

View File

@@ -0,0 +1,32 @@
The is the fourth point release for ksh-93. The RELEASEa
file contains a list of changes since the first release for ksh-93.
The file RELEASE lists the major changes since ksh-88. I have updated
the man page, sh.1, and the introductory memo, sh.memo. I have also
started to write a guideline for adding runtime builtins, builtins.mm.
This release should correspond very closely to the information in the
New KornShell Command and Programming Language book, by Bolsky
and Korn.
This official release is being distributed and supported by the
Software Technology Center. They are the distributor of
ksh93 within AT&T and will provide support. I will only be
supplying ksh93 for research needs and for machine architectures
that are not supported by the Software Technology Center.
You can contact the STC by sending mail to ksh@mozart.att.com.
I have fixed most of the bugs that have been reported in
the previous release. Let me know about any remaining bugs.
There continues to be very few reports of compatibility
problems. The file COMPATIBILITY lists the known incompatibilities.
Please let me know about any script which runs under ksh-88 but
does not run under ksh-93.
Please look at the man page (troff -man) and the sh.memo
file (troff -mm) and let me know what problems you find.
I encourage you to run ksh -n script on each of your scripts
since the -n option produces warning messages for obsolete
features that you are using in the script. The file
OBSOLETE, written by Kevin Wall, contains a list of
obsolete features.

View File

@@ -0,0 +1 @@
dgk

View File

@@ -0,0 +1,146 @@
.SA 1
.sp 2
.H 1 "KSH-93 - The KornShell Command and Programming Language"
.sp 2
.al
.P
KSH-93 is the most recent version of the KornShell Language
described in
"The KornShell Command and Programming Language,"
by Morris Bolsky and David Korn of AT&T Bell Laboratories.
The KornShell is a shell programming language,
which is upward compatible with "sh" (the Bourne Shell),
and is intended to conform to the IEEE P1003.2/ISO 9945.2 Shell and
Utilities standard.
KSH-93 provides an enhanced programming environment in
addition to the major command-entry features of the BSD
shell "csh". With KSH-93, medium-sized programming tasks can be
performed at shell-level without a significant loss in performance.
In addition, "sh" scripts can be run on KSH-93 without modification.
.P
The code should conform to the IEEE POSIX 1003.1 standard and to the
proposed ANSI-C standard so that it should be portable to all
such systems. Like the previous version, KSH-88,
it is designed to accept eight bit character sets
transparently, thereby making it internationally compatible.
It can support multi-byte characters sets with some characteristics
of the character set given at run time.
.P
KSH-93 provides the following features, many of which were also inherent
in KSH-88:
.BL
.LI
Enhanced Command Re-entry Capability: The KSH-93 history
function records commands entered at any shell level and stores
them, up to a user-specified limit, even after you log off.
This allows you to re-enter long commands with a few keystrokes
- even those commands you entered yesterday.
The history file allows for eight bit characters in
commands and supports essentially unlimited size histories.
.LI
In-line Editing: In "sh", the only way to fix mistyped
commands is to backspace or retype the line. KSH-93 allows you
to edit a command line using a choice of EMACS-TC or "vi"
functions.
You can use the in-line editors to complete filenames as
you type them.
You may also use this editing feature when entering
command lines from your history file.
A user can capture keystrokes and rebind keys to customize the
editing interface.
.LI
Extended I/O Capabilities: KSH-93 provides several I/O
capabilities not available in "sh", including the ability to:
.BL
.LI
specify a file descriptor for input and output
.LI
start up and run co-processes
.LI
produce a prompt at the terminal before a read
.LI
easily format and interpret responses to a menu
.LI
echo lines exactly as output without escape processing
.LI
format output using printf formats.
.LI
read and echo lines ending in "\e".
.LE
.LI
Improved performance: KSH-93 executes many scripts faster
than the System V Bourne shell. A major reason for this is
that many of the standard utilities are built-in.
To reduce the time to initiate a command, KSH-93 allows
commands to be added as built-ins at run time
on systems that support dynamic loading such as System V Release 4.
.LI
Arithmetic: KSH-93 allows you to do integer arithmetic in any
base from two to sixty-four. You can also do double
precision floating point arithmetic.
Almost the complete set of C language operators are available
with the same syntax and precedence.
Arithmetic expressions can be used to as an argument expansion
or as a separate command.
In addition there is an arithmetic for command that works
like the for statement in C.
.LI
Arrays: KSH-93 supports both indexed and associative arrays.
The subscript for an indexed array is an arithmetic expression,
whereas, the subscript for an associative array is a string.
.LI
Shell Functions and Aliases: Two mechanisms - functions and
aliases - can be used to assign a user-selected identifier to
an existing command or shell script.
Functions allow local variables and provide scoping
for exception handling.
Functions can be searched for and loaded on first reference the
way scripts are.
.LI
Substring Capabilities: KSH-93 allows you to create a
substring of any given string either by specifying the starting
offset and length, or by stripping off leading
or trailing substrings during parameter substitution.
You can also specify attributes, such as upper and lower case,
field width, and justification to shell variables.
.LI
More pattern matching capabilities: KSH-93 allows you to specify
extended regular expressions for file and string matches.
.LI
KSH-93 uses a hierarchal name space for variables.
Compound variables can be defined and variables can
be passed by reference. In addition, each variable
can have one or more disciplines associated with
it to intercept assignments and references.
.LI
Improved debugging: KSH-93 can generate line numbers on execution
traces. Also, I/O redirections are now traced.
There is a DEBUG trap that gets evaluated after each command
so that errors can be localized.
.LI
Job Control: On systems that support job control, including
System V Release 4, KSH-93
provides a job-control mechanism almost identical to that of
the BSD "csh", version 4.1.
This feature allows you
to stop and restart programs, and to move programs between the
foreground and the background.
.LI
Added security:
KSH-93 can execute scripts which do not have read permission
and scripts which have the setuid and/or setgid set when
invoked by name, rather than as an argument to the shell.
It is possible to log or control the execution of setuid and/or
setgid scripts.
The noclobber option prevents you from accidentally erasing
a file by redirecting to an existing file.
.LI
KSH-93 can be extended by adding built-in commands at run time.
In addition, KSH-93 can be used as a library that can
be embedded into an application to allow scripting.
.LE
Documentation for KSH-93 consists of an "Introduction to KSH-93",
"Compatibility with the Bourne Shell" and a manual page and a
README file. In addition, the "New KornShell Command and Programming
Language," book is available from Prentice Hall.

View File

@@ -0,0 +1,5 @@
src/cmd/ksh93/FEATURE/options
src/cmd/ksh93/FEATURE/ttys
src/cmd/ksh93/FEATURE/dymamic
src/cmd/ksh93/FEATURE/externs
src/cmd/ksh93/FEATURE/poll

View File

@@ -0,0 +1,5 @@
AT&T Bell Laboratories
Advanced Software Technology Department
{ulysses,attmail}!dgk
dgk@ulysses.att.com
David Korn 908-582-7975

View File

@@ -0,0 +1,6 @@
type=proprietary
corporation=AT&T
company="Bell Laboratories"
organization="Software Engineering Research Department"
license=http://www.research.att.com/orgs/ssr/book/reuse
contact=gsf@research.att.com

View File

@@ -0,0 +1 @@
gsf

View File

@@ -0,0 +1,5 @@
AT&T Bell Laboratories
Software Engineering Research Department
advsoft@research.att.com
Randy Hackbarth 908-582-5245
Dave Belanger 908-582-7427

View File

@@ -0,0 +1 @@
liszt!easy!liszt!easy!usl!att!gryphon!gsf

View File

@@ -0,0 +1,5 @@
AT&T Bell Laboratories
Software Engineering Research Department
advsoft@research.att.com
Randy Hackbarth 908-582-5245
Dave Belanger 908-582-7427

View File

@@ -0,0 +1 @@
libAST

View File

@@ -0,0 +1 @@
liszt!easy!liszt!easy!usl!att!gryphon!gsf

View File

@@ -0,0 +1,5 @@
AT&T Bell Laboratories
Software Engineering Research Department
advsoft@research.att.com
Randy Hackbarth 908-582-5245
Dave Belanger 908-582-7427

View File

@@ -0,0 +1 @@
lib0ast

View File

@@ -0,0 +1 @@
liszt!easy!liszt!easy!usl!att!gryphon!gsf

View File

@@ -0,0 +1,6 @@
type=proprietary
corporation=AT&T
company="Bell Laboratories"
organization="Software Engineering Research Department"
license=http://www.research.att.com/orgs/ssr/book/reuse
contact=gsf@research.att.com

View File

@@ -0,0 +1 @@
lib0ast

View File

@@ -0,0 +1 @@
gsf

View File

@@ -0,0 +1,5 @@
AT&T Bell Laboratories
Software Engineering Research Department
advsoft@research.att.com
Randy Hackbarth 908-582-5245
Dave Belanger 908-582-7427

View File

@@ -0,0 +1 @@
libast

View File

@@ -0,0 +1 @@
liszt!easy!liszt!easy!usl!att!gryphon!gsf

View File

@@ -0,0 +1,5 @@
AT&T Bell Laboratories
Software Engineering Research Department
advsoft@research.att.com
Randy Hackbarth 908-582-5245
Dave Belanger 908-582-7427

View File

@@ -0,0 +1 @@
libast

View File

@@ -0,0 +1 @@
liszt!easy!liszt!easy!usl!att!gryphon!gsf

View File

@@ -0,0 +1,6 @@
type=proprietary
corporation=AT&T
company="Bell Laboratories"
organization="Software Engineering Research Department"
license=http://www.research.att.com/orgs/ssr/book/reuse
contact=gsf@research.att.com

View File

@@ -0,0 +1 @@
lib0ast

View File

@@ -0,0 +1 @@
gsf

View File

@@ -0,0 +1,5 @@
AT&T Bell Laboratories
Advanced Software Technology Department
{ulysses,attmail}!advsoft
Randy Hackbarth 908-582-5245
Dave Belanger 908-582-7427

View File

@@ -0,0 +1 @@
libast

View File

@@ -0,0 +1 @@
liszt!easy!liszt!easy!usl!att!gryphon!gsf

View File

@@ -0,0 +1,5 @@
AT&T Bell Laboratories
Advanced Software Technology Department
{ulysses,attmail}!advsoft
Randy Hackbarth 908-582-5245
Dave Belanger 908-582-7427

View File

@@ -0,0 +1 @@
libast

View File

@@ -0,0 +1 @@
liszt!easy!liszt!easy!usl!att!gryphon!gsf

View File

@@ -0,0 +1,6 @@
type=proprietary
corporation=AT&T
company="Bell Laboratories"
organization="Software Engineering Research Department"
license=http://www.research.att.com/orgs/ssr/book/reuse
contact=gsf@research.att.com

View File

@@ -0,0 +1 @@
libast

View File

@@ -0,0 +1 @@
gsf

View File

@@ -0,0 +1 @@
libast

View File

@@ -0,0 +1,6 @@
type=proprietary
corporation=AT&T
company="Bell Laboratories"
organization="Software Engineering Research Department"
license=http://www.research.att.com/orgs/ssr/book/reuse
contact=gsf@research.att.com

View File

@@ -0,0 +1 @@
libast

View File

@@ -0,0 +1 @@
gsf

View File

@@ -0,0 +1,5 @@
AT&T Bell Laboratories
Software Engineering Research Department
advsoft@research.att.com
Randy Hackbarth 908-582-5245
Dave Belanger 908-582-7427

View File

@@ -0,0 +1 @@
libodelta libast

View File

@@ -0,0 +1 @@
liszt!easy!liszt!easy!usl!att!gryphon!gsf

View File

@@ -0,0 +1,5 @@
AT&T Bell Laboratories
Software Engineering Research Department
advsoft@research.att.com
Randy Hackbarth 908-582-5245
Dave Belanger 908-582-7427

Some files were not shown because too many files have changed in this diff Show More