RELEASE 2.2	December 1st 1993	RELEASE 2.2	December 1st 1993

Version 2.2 Release Notes:

Release 2.2 has a few bugs fixed and some OS/2 functionality changed.
Well, at least thats the way it started.

Changes Functionality:

220 Beta Release

    1.	The Lexical analyser and Word Expansion code have been completely
        replaced, courtesy of Simon J. Gerraty who allowed me to take the
	initial code from his PD version of the ksh.  This means that the
	8th bit problem has been disappeared and meta-character processing
	should be fixed.
    2.  Array parameters have been implemented.
    3.  A bug in keyboard handling for Swedish keyboards has been fixed.
    4.  When preparing the parameters for a command, the convert option
	converts / following a - now to a \ which it didn't before.
    5.  The time command has been implemented, for what it's worth.
    6.  Csh type alternations ({..,...,}) are supported.  They must be enabled
	using set -o alternation.  They can be disabled using
	set +o alternation.
    7.  Numeric values inside a numeric expression are now of the format
	base#value instead of the old [base]value.  This conforms to the
	versions of the ksh I have.
    8.  When a tilde subsitution is performed, double slashes are reduced
	to one.

221 Beta Release

    9.	Fixed bug in Filename completion when the string to expand is empty.

   10.	Fixed bug which generated the 'too many files open' message.

   11.  Fixed bug which caused $() pipelines to not write the final output
        to stdout.

222 Beta Release

   12.  Fix bug in doecho which causes a memory overflow with long parameters

   13.  Fix bug in sh4.c which causes a memory violation if the first
        argument expands to a (char *)NULL.

   14.  OS/2 Native Port for IBM C Set/2 1.0 CSD 40.  Future releases
        contain three executables:

	   shdos.exe - MSDOS version
	   sh16.exe  - OS/2 16-bit version
	   sh32.exe  - OS/2 32-bit version

   15.  Fix a bug in FileName Completion so that HPFSs are handled correctly.

   16.  Ensure I/O streams (cf. fopen) are closed correctly.

   17.  Fix cursor position on last line of screen when inserting characters.
        Also ensure cursor is placed on the next blank line when input in
	completed.

   18.  Fix a bug in the processing of Aliases.  The word following a alias
	was always checked for alias, which should only happen if the last
	character of the alias is a space (c = CHAR_TAB, instead of c ==
	CHAR_TAB).

   19.  Allow the title of a OS/2 window to be changed from MS Shell by 
	setting the WINTITLE environment variable.

   20.  Fix bug in display functions which caused memory violation on case
   	statements.

   21.  Fix bug in Swap failure under MSDOS

   22.  Fix bug in \nnn processing.  Only convert if the n's are octal and
        there are three of them.

   23.  Fix bug in if..then..else..fi where Exit status not set correctly.

   24.  Support script files ending in .ksh as well as .sh.

   25.  Fix bug with ; ; as a command line

   26.  Fix bug with IFS values not reset correctly after subshell.

   27.  Fix bug in IsCommandBuiltIn which did not return the correct value
        for a drive change.

   28.  Under OS/2, protect against drive not ready errors.

   29.  Fixed a bug which seemed to have been around since 1.4 which
        stopped 'sh -x script' from executing.

   30.  Fixed a bug caused an interactive shell to start in response to
        'sh -c'.

   31.  Improved the syntax error reporting.

   32.  Fixed a bug with 'sh -s' which did not match the manual page.

   33.  Changed the way programs are DosExecPgm'd in OS/2 so that
        interrupts do not kill background tasks and foreground tasks are
        interruptable, and the interrupt does not kill the shell!

   34.  Directory Listing looks more like Korn Shell now.

   35.	A sort of version of times for OS/2 2.x 32-bit version.

   36.	Start work on VI and EMACS.  VI tested.  EMACS completely untested
	and not enabled.

   37.  Fixed a optimiser bug in doexec, which caused exec to hang the
	PC under MSDOS.

   38.  Support for Borland Turbo C added (still requires Microsoft MASM).
        You need to edit tsh.lnk to reflect library and CRT locations.

   39.  Support for WatCom C/386 added (incomplete).  I've not had enough
        time to explore this compiler.

   40.  Move stdargv.c into sh8.c to reduce size of MSDOS version to 170K.

223 Beta Release

   41.  Fixed processing of Profile so that $HOME can be set in /etc/profile.

   42.  Fixed processing of history file so that it is loaded after processing
   	the profiles.

   43.  Completed VI code.

   44.  Fixed some other bugs introduced by 'quick fixes'.

   44.  Fixed bug with EOF key.

   45.  Add option to remove case sensitivity for OS/2 on HPFS (set -o
        ignorecase)

224 Beta Release

   46.  WATCOM 32-bit mode DOS available.  So we now have four versions!!

	   shdos16.exe - MSDOS 16-bit version
	   shdos32.exe - MSDOS 32-bit version
	   shos216.exe - OS/2 16-bit version
	   shos232.exe - OS/2 32-bit version

	Added new environment variable SHMODE which gives the Shell mode
	- 16 or 32 bit.

   47.  Fixed bug in startup code under MSC 6 which expects the stdargv
	code to set up _osmajor and _osminor under MSDOS.

   48.  Changed the Interrupt 24 handling for DOS 32 version.

   49.  cd -L/P and pwd -L/P supported under DOS.  Gets the truename of 
	a directory, ignoring SUBST drives etc.

   50.  Fix bug in startup code for DOS which does not process the length
        of the command string correctly - KERMIT problem.  Also, if EMX
	mode has been used, do not correct /c command string.  Check for
	double quotes on the command string if in argument 0 (original DOS
	or OS/2 command line).

   51.  Set -m now runs background jobs in separate process group - OS/2
        only.  The old -m functionality is obtained from -M.

   52.  Fix Input so that prompt appears for interactive shell when input
        is not from the console.  Note that editing is not available for
	such input.

   53.	Set up I/O streams buffering for stdout and stderr to line and none
        respectively.

   55.  Implement track all command which was missing.

   56.	Fix another bug in file handler for sub-shells.  Use a map instead
        of the next available file descriptor at a particular sub-shell level.

   57.  Under OS/2, if file descriptor 0 and 1 are pipes and there are no
        arguments to the shell, the interactive flag is set.  This is to
	allow the shell to run under EMACS.

225 Beta Release

   58.  Fix a bug with Root shells and the EOF key which caused the shell to
        loop on the no exit message.

   59.  Replaced all the isatty functions with an explicit test so we get
        the same results on DOS and OS/2 and independent of the compiler.

   60.  In the test (dotest) code, if the current string is a unary operator
        and the next string is a binary operator, assume the current string is a
	parameter to the binary operator and not a unary operator. And not
	the other way round.

   61.  Fix bug in dotrap which prevented traps from being unset.

   62.  Add support for signal names and UNIX to DOS mappings in trap.  If
        the signal number is numeric, it is a UNIX signal number and is mapped
	to the DOS value.  Also add 'trap -l' to list the signal names
	which are not the same as the kill names.

   63.  Allow test and set of VERIFY and BREAK status using set -o etc.

   64.  Move interrupt check from sh0.asm to sh9.c

   65.  Update manual pages

226 Beta Release

Final Release 2.2


Missing POSIX Shell functionality:

    I've looked at three different version of ksh (under AIX, HP UX and ICL's
    DN/X) and each one has something slightly different.  In general, I believe
    the following functionality is missing from the shell, some of which can not
    be implemented under either MSDOS or OS/2.

    1.  Filename generation currently matches the Bourne and not the Korn shell
    2.  EMACS command line editting is not tested

    Missing, not supportable.

    1.  The ulimit command - no MSDOS or OS/2 equivalent
    2.  The bg and fg commands are not implemented - no equivalent
	functionality.
    3.  The set -p (disable $HOME/.profile processing) has not been implemented.
    4.  The ~ at the start of a word only supports the $HOME, $PWD or $OLDPWD
        substitutions.  There's no /etc/passwd.
    5.  TMOUT is not implemented, what's functionality under MSDOS or OS/2 I
	ask?
    6.  jobs under MSDOS - HA!
    7.  Co-processes.  Again, really difficult to implement under MSDOS
        and OS/2 (I think).

The following enhancements/bugs remain outstanding:

    1.  Interrupting a swap at the wrong time may cause the shell to hang.
	I've not been able to track this down.  I think it may be some funny
	interaction with Quaterdesk's QEMM memory manager, since it does
	not happen with any other memory manager.

    2.  Under IBM's OS/2 C Set/2, the umask API does not work correctly.
	umask (0) returns an error, when it should return the current
	value.
    
    3.  Under WATCOM and OS/2, the DosQProcStatus API causes a core dump,
	so the jobs function is disabled in versions built with WATCOM.
	WATCOM have been informed - no response.  Use ps.exe instead.
	The shell fex's ps.exe so if you use jobs, stick ps.exe in your
	path.
    
    4.  Under OS/2 in 16-bit mode, the DosStartSession API causes the
	system to died with dependent sessions.  Sessions are always
	independent.  IBM (UK) have been informed - no response.  Microsoft
	haven't.

    5.	The only the VI command line edit function is enabled.  I've not
	done any testing on the EMACS version (next release). 

    6.  I've built and run the Borland Turbo C version, but not really done
	extensive testing on it.  The main development and release compiler
	remains Microsoft C5.1 (for MSDOS) and C6.0 (for OS/2).  Actually,
	it's stopped working at the moment!

    7.  I've built and tested the OS/2 2.x 32-bit version using IBM C Set/2
	(CSD 40), and extensively tested using that version.  However, I am
	no longer in a position to build using this compiler.  Problems from
	36 onwards (see notes file) have not been fully tested for the IBM
	C Set/2 OS/2 32-bit version.

Thanks are due to

    rreiner@nexus.yorku.ca 
    dkonkin@datap.ca 
    leisner@eso.mc.xerox.com
    sshoe@IX.Net
    mallman@oucsace.cs.ohiou.edu
    hankedr@mail.auburn.edu
    beckerr@pyrite.SOM.CWRU.Edu
    tripos!rhea!edmond@wupost.wustl.edu
    Eric.van.der.Maarel@cwi.nl
    kjt@cs.stir.ac.uk
    qualtrak@netcom.com
    hoh@lorelei.approve.se
    rma@pnet51.orb.mn.org 
    Carl_Hauser.PARC@xerox.com
    matth@bedford.progress.COM
    mattes@azu.informatik.uni-stuttgart.de 
    dasch@darkwing.uoregon.edu
    rommel@ars.muc.de

for their comments, fixes, tolerance etc in testing release 2.2

Ian Stewartson.
(istewart@datlog.co.uk)
