The following list describes the changes made to the original source
code for the Sixth Edition (V6) UNIX Thompson shell and global
command in porting them to run on modern UNIX systems.

-------------------------------------------------------------------------------
[etsh-current] (development):
	* Work In Progress ( see https://etsh.io/src/current/ )

-------------------------------------------------------------------------------
[etsh-5.1.5] (latest):
	* Please see CHANGES.

-------------------------------------------------------------------------------
[etsh-5.1.0]:
	* Please see CHANGES.

-------------------------------------------------------------------------------
[etsh-5.0.2]:
tsh.1:
	* Changed where etsh(1) appears in `SEE ALSO' so that it is
	  a little more alphabetical.

-------------------------------------------------------------------------------
[etsh-5.0.1]:
tsh.1:
	* Substituted @LIBEXECDIRSH6@ with @LIBEXECDIRTSH@ so that the
	  installed manual contains the correct directory name instead
	  of an unexpanded macro.

-------------------------------------------------------------------------------
[etsh-5.0.0]:
	* Trimmed CHANGES6 ( see https://etsh.io/src/CHANGES6-trim
	  as noted below ), and moved CHANGES6 to CHANGES-tsh+ .

	* Moved sh6.[1c] to tsh.[1c], and made all associated
	  changes that this required (e.g., to the Makefile and so forth).
	  See CHANGES for more details about the Makefile changes.

	* C: Removed (+) from `Broken pipe' termination message in etsh.1,
	     and added `Broken pipe' termination message to tsh.1 and tsh.c
	     for compatibility reasons.  The original V6 Thompson shell did
	     not print this termination message when its process received a
	     SIGPIPE signal.  It was documented but not implemented.  For
	     etsh and tsh though, it is both documented and implemented.

-------------------------------------------------------------------------------
[etsh-4.9.0]:
sh6.c, defs.h:
	* Increased size of line buffer & word pointer array.

	  Previously, line only allowed a maximum of 2042 characters in each
	  command line.  It now allows 2063 and gives a "Too many characters"
	  error at 2064 and beyond.  For word, instead of allowing a maximum
	  of 1018 arguments/words per command line and giving "Too many args"
	  at 1019 and beyond, it now allows 1026 and errors at 1027 and beyond.

glob.c, sh6.c, sh.h, err.h, defs.h:
	* Had what amounted to being a cleanup fest of sorts...

	  Without going into too much detail, this provided a good opportunity
	  to revisit, check, and fix a couple of problems (not problems).  Many
	  of the cleanups were because of reports by splint(1) only when the
	  shell was in full DEBUG mode.  This gave me a chance to change
	  some splint annotations.

if.[1c]:
	* For the if(1) - conditional command of sh6/tsh,
	  made == a synonym for =.

	  1) The rationale is simple; 'if s1 == s2 echo equal' evaluates
	     the expression for equality; 'if s1 = s2 echo equal' does
	     too, but it looks like an assignment.

	  2) In effect, this improves if(1) syntax compatibility between
	     sh6/tsh and csh/tcsh.

-------------------------------------------------------------------------------
[etsh-4.8.0]:
sh6.c:
	* Added 3 comments in main() to allow easier comparison with osh.c .

-------------------------------------------------------------------------------
[etsh-4.7.0]:
*:
	* Changed v6shell (dot) org references to etsh (dot) io,
	  and v6shell.org references to etsh.io too, almost a
	  s/v6shell.org/etsh.io/ in effect, but not quite.

	* No code changes.

sh6.1:
	* Reworded the description of how an interactive shell prompts
	  the user for the sake of clarity.

-------------------------------------------------------------------------------
[etsh-4.6.0]:
if.1, if.c:
	* Added two new primaries, -n to test for non-zero length string &
	  -z to test for zero length string, like the same primaries found
	  in test(1).

-------------------------------------------------------------------------------
[etsh-4.5.1]:
	* No changes.

-------------------------------------------------------------------------------
[etsh-4.5.0]:
	* See CHANGES.

-------------------------------------------------------------------------------
[osh-4.4.0]:
[fgis]*.1:
	* Changed osh and sh6 references to match their binary names
	  set in *.1.out by configure.

fd2.c, glob.c, goto.c, if.c, sh6.c:
	* No code changes.

-------------------------------------------------------------------------------
[osh-4.3.2]:
	* No changes.

-------------------------------------------------------------------------------
[osh-4.3.1]:
[fgis]*.1:
	* s/General Commands/General Commands Manual/

fd2.c, glob.c, goto.c, if.c, sh6.c:
	* No code changes.

-------------------------------------------------------------------------------
[osh-4.3.0]:
	* Changed LIBEXECDIR layout to support both sh6 & osh.  The
	  sh6(1) external utilities moved into a new sh6 subdirectory.  A
	  new osh subdirectory exists for osh support scripts & files; these
	  files came (and will be removed) from the V6Scripts Collection.

mkconfig, sh6.c, goto.c:
	* Disabled sh6 compilation on Ubuntu 16.(04|10).

sh6.c:
	* Updated sh_magic() & xgetc() to make it behave more like osh.
	  This protects the user and her / his terminal from getting
	  fouled up if/when accidentally trying to execute binary
	  files as shell scripts / command files.

-------------------------------------------------------------------------------
[osh-4.2.1 - osh-060124]:
	* Changes for these releases are at https://etsh.io/src/CHANGES6-trim .

-------------------------------------------------------------------------------
[Unreleased]:
	The following ports of the original Sixth Edition UNIX source code
	were never released to the public.

sh6.c	1.1 (jneitzel) 2004/01/26:
	* Changed the source file name from `sh.c' to `sh6.c' and the
	  resulting binary name from `sh' to `sh6' to avoid name conflict
	  and confusion with the system shell, sh(1), on modern UNIX systems.

	* Transformed the source code from K&R C into ANSI C.

	* This is nothing more than a simple port to modern UNIX systems.
	  It is now 64-bit clean.  At least, this is true for the 64-bit
	  systems to which the porter has access.

	* Removed support for the shell's accounting of process times (see
	  times(3)) which allowed the shell to record command execution data
	  in a log file.

	* Fixed a buffer overflow in the word() function.

glob6.c	1.1 (jneitzel) 2004/01/26:
	* Changed the source file name from `glob.c' to `glob6.c' and
	  the resulting binary name from `glob' to `glob6', matching
	  the similar change to the name of the shell (see above).

	* Transformed the source code from K&R C into ANSI C.

	* This is nothing more than a simple port to modern UNIX systems.

	* Fixed possible overflow of the argument-list buffers
	  in the cat() function.

-------------------------------------------------------------------------------
[Original]:
	Here is some pertinent information about the original files.

The following description refers to Sixth Edition (V6) UNIX obtained from:

	http://www.tuhs.org/Archive/Distributions/Research/Dennis_v6/

...
A portion of the `http://www.tuhs.org/Archive/Distributions/DETAILS'
file reads as follows:

Dennis_v6
---------

v6root.gz, v6src.gz and v6doc.gz are a set of three RK05 images of Sixth
Edition with root, /usr and documentation, from Dennis Ritchie. The tape
bootstraps are not included. The most recent timestamp on any file is
July 19th 1975.

v6root.tar.gz, v6src.tar.gz and v6doc.tar.gz are tar archives of the
three RK05 images.

...
The following files and the corresponding manual pages were all
obtained from the tar archives described above:

sh.c:
    What: Original source code for the Sixth Edition (V6) UNIX Thompson shell
    Date: July 17, 1975
    From: Sixth Edition UNIX /usr/source/s2/sh.c

glob.c:
    What: Original source code for the Sixth Edition (V6) UNIX global command
    Date: May 14, 1975
    From: Sixth Edition UNIX /usr/source/s1/glob.c

Jeffrey Allen Neitzel						2018/04/24

@(#)$Id: e5328111141c51f0d0048581809ab265835d5bba $
