RELEASE 2.1		Dec 12th 1992		RELEASE 2.1	Dec 12th 1992

Version 2.1 Release Notes:

Release 2.1 has a few bugs fixed and some OS/2 functionality changed.

Changes Functionality:

New in 210 Beta

    1.  Using the -R switch, causes the .ini file to be read just before
	the first keyboard input.  This allows the location to be changed
	by changing the value of the SHELL environment variable.
    
    2.  The job command in OS/2 will print the OS/2 process tree info.

	    job -p		Print the process tree info for the shell
	    job -P id		Print the tree for process id.
    
    3.  Binary trees are used in a number of places instead of linked lists.

    4.	The OS/2 command line limit is now 32000 bytes.  Parameters with
	white space in a quoted for parameters to a command passed via spawn
	or exec.  This does not apply if the command supports indirect files.

    5.  case statements in functions nolonger corrupt memory.

    6.  OS/2 uses either files or pipes to pipe data.  The mode is selected
	either via the command line (-P switch) or the set -/+o realpipes
	command.  Note that using real pipes for more complex command strings
	than a simple pipeline (a | b | c) might not work because of the
	differences in the process models.  I'm not ready to introduce
	multi-threading into the shell, yet.
    
    7.	kill now supports %job number.

New in 211 BETA.

    8.	Function keys to clear the screen and print the shell's process
	tree (OS/2 only) have been added.
    
    9.  The cd command correctly handles directory names ending in a /.

New in 212 BETA.

   10.	ALT keys can now be specified in the sh.ini file.  Use 0xff to
        specify and ALT key as opposed to 0 to specify a function key.

   11.  set -w enables the display of warning messages, +w disables it.

   12.  The shell checks for valid DOS filenames (single dot, not at the
        beginning).  Invalid dots are converted to ~.  A warning message is
	given.

   13.  The transpose and quote functions have been added to the command
        line editor.
   
   14.  A bug in the sub-shell processing prevented exit 0 from exitting
        with zero has been fixed.

   15.	All buffers are flushed before reading input.

   16.  A bug in the [[ ... ]] processing prevented it from working.

New in 213 BETA.

   17.  Unsetting special variables removes their meaning (RANDOM, SECONDS etc).

   18.  dos () { command -c $*; } did not convert the slashes correctly.

   19.  Fix format of function command to be POSIX - function name {} and
        not function name () {}.

   20.  Set up LINES environment variable correctly

   21.	Fix bug in read so that "ls | while read n; do echo $n; done"
        prints something other than just the first filename.

   22.  Set up HISTSIZE environment variable correctly and process it.

   23.	Disable checking of MCB chain above 0x9ffe0.

New in 214 BETA.

   24.	Pass parameters to script when executing dot files (. name 1 2 3).

   25.  Fix [ ] so that an empty expression returns false.

   26.  ${COMSPEC} is parsed and split on white space to allow addition
        parameters to be passed to command.com.  Thus the default
	environment size could be set to 1000 by setting
	COMSPEC=command /e:1000.

   27.  The size of the retained history can be specified using HISTSIZE.

   28.  Fix bug in OS/2 real pipes where the shell does not wait for the
        correct process to terminate.
   
   29.  Implement wait command for OS/2.

   30.  Null argument to a command generates "" in the command line.

   31.  Under OS/2, Sessions are nolonger logged as jobs with no way of
        removing the job entry.
    
   32.  A bad command inside `` or $(...) terminates the current command
        expression, instead of generating a null parameter to the command.

   33.  Add support in OS2 version for Eberhard Mattes EMX interface to
        commands.  In the ${EXTENDED_LINE} file, emx instead of unix
	selects this interface format.  In addition, add support in the
	alternative stdargv.c.  If the EMX interface is used, stdargv
	detects this and processes according.  Otherwise, the standard
	interfaces are assumed.

   34.  Fix escaping of double quotes in the command line argument.

   35.	Add %number & %?string to job support commands (wait, kill).  Thats
        about as far as full job support goes I think.

   36.  Implement 'getopts' command.

New in 215 BETA.

   37.	Now we cleanup all filenames before using them

   38.  Fixed 33 as default for OS/2.

   39.  Completed %[-+%] for jobs

   40.	Nothing new added since 215

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.  ksh-style command line editing.  MS_shell has it's own style.
    2.  Array parameters
    3.  Filename generation currently matches the Bourne and not the Korn shell
    4.  The correct processing of the escape character (\) inside double quotes.

Missing, not supportable.

    1.  The ulimit command - no MSDOS or OS/2 equivalent
    2.  The times command is not implemented - no equivalent functionality
    3.  The bg and fg commands are not implemented - no equivalent
	functionality.
    4.  cd -L/P is not supported.  No symbolic links under MSDOS or OS/2
    5.  pwd -L/P is not supported.  No symbolic links under MSDOS or OS/2
    6.  The set -p (disable $HOME/.profile processing) and set -m (run
        background jobs in separate process group) have not been implemented.
    7.  The ~ at the start of a word only supports the $HOME, $PWD or $OLDPWD
        substitutions.  There's no /etc/passwd.
    8.  TMOUT is not implemented, what's functionality under MSDOS or OS/2 I
	ask?
    9.  The time pipeline command - no MSDOS or OS/2 equivalent
   10.  jobs under MSDOS - HA!
   11.  Co-processes.  Again, really difficult to implement under MSDOS
        and OS/2 (I think).

The following enhancements/bugs remain outstanding:

    1.  The processing of the escape character (\) is not consistent with the
	Korn shell.  The MS-Shell always strips the first escape character.
	The Korn shell only strips escape characters when it detects a shell
	special character following.

	ie.  echo "\033[H" works under Korn however echo "\\033[H" is required
	     in the MSDOS shell.

	This problem requires a large amount of rework to one 30K source file
	and I haven't been able to start on it yet.

    2.  8 Bit character are not supported.  This is tied in with the processing
	of escape characters.  The shell uses the 8-bit to mark escaped
	characters.
    
    3.  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.
    
Thanks are due to


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

Ian Stewartson.
