Changes that improve compatibility w/ the Sixth Edition (V6) UNIX
Thompson shell are marked w/ a `C:' in the details below.

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

-------------------------------------------------------------------------------
[etsh-5.1.5] (latest):
	* Please see etsh-5.1.5-git.log for information about changes.

-------------------------------------------------------------------------------
[etsh-5.1.0]:
	* Write up CHANGES*, and release!?.
	  But in the meantime, to not delay release, please see the
	  commit log at https://etsh.io/src/etsh-5.1.0-git.log or ...

		https://github.com/JNeitzel/v6shell/commits/etsh-5.1.0

	  .

-------------------------------------------------------------------------------
[etsh-5.0.2]:
defs.h:
	* Added ALIASMAX with a value of 2.

err.h:
	* Changed ERR_ALIASLOOP to ERR_ALIASTMNA.

etsh.c:
	* In syn3(), removed some blank lines, used ALIASMAX & ERR_ALIASTMNA,
	  and added another alias debugging message.  All for cleanliness.

etsh.1:
	* Changed where tsh(1) appears in `SEE ALSO' so that it is
	  a little more alphabetical, and document the alias changes
	  that are described above.

examples/.etshrc, libexec.etsh/etshdir:
	* Tweaked/Synced .../.etshrc with .../etshdir, changing
	  rmod (for remove OSHDIR) to rmed (for remove ETSHDIR).

-------------------------------------------------------------------------------
[etsh-5.0.1]:
Makefile:
	* We now remove the examples.install temporary directory via
	  the clean target, not the install-exp target.  This allows
	  the user to see the state of this directory if desired after
	  running make ... install-exp .

	* Changed the install-exp commentary so it makes more sense.

-------------------------------------------------------------------------------
[etsh-5.0.0]:
	* Trimmed CHANGES ( see https://etsh.io/src/CHANGES-trim
	  as noted below ).

History/* (new files):
	* Added the original V6 UNIX source code from which this project
	  originated to the tree (as a historical reference).

INSTALL:
	* Updated due to changes in the Makefile and so forth.

	* If you do more than a `./configure ; make ; doas make install'
	  or equivalent, you will want to familiarize yourself with its
	  changes and/or the changes in the Makefile (see below).

Makefile:
	* The changes were primarily string substitutions.  They basically
	  boiled down to...
		'(SH6|sh6)' getting replaced with '(TSH|tsh)'
	  and:
		'(OSH|osh)' getting replaced with '(ETSH|etsh)'
	  ...
	  between the old Makefile and the new Makefile.

README:
	* Added NetBSD 8.0_BETA & OpenBSD 6.2-current to supported systems.

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

	  Strictly speaking, osh (as in old shell) no longer exists.

	* 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.[1c]:
	* Added : as another action for trap to ignore signals
	  on the shell and user's behalf, and document it as well.  It is
	  preferable to use : instead of the empty string, as '' and/or ""
	  are used for quoting.  No worries, trap '' signal_number ... will
	  continue to ignore the specified signals as it always has.

	* Changed examples/* and tests/* trap invocations to use : .

*.1:
	* Other manual page changes were related to moving sh6 to tsh
	  and osh to etsh as well.

*.[ch]:
	* Other code changes were related to the above
	  Makefile changes / bin name changes as well.

tests/...:
	* Updated regression tests as needed, and regenerated test logs.

-------------------------------------------------------------------------------
[etsh-4.9.0]:
README:
	* Updated supported systems to include NetBSD 7.1.

Makefile:
	* Clarify the comment for the install-exp target.

	* Simplified what the install-doc target installs and where,
	  only the project README into a default DOCDIR that uses
	  the same name that OpenBSD ports/packages does.

osh.c, err.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.

osh.c:
	* Fixed a problem that prevented -n & -v from working as expected
	  when the shell was invoked "without args" [1] and reading command
	  lines from the standard input via a pipe or file.  The correct
	  post-fix behaviour is shown in the following examples:

		% echo \' | etsh -nv
		-n: noexec
		-v: verbose
		'
		etsh: syntax error

		% etsh -nv <file
		-n: noexec
		-v: verbose
		'
		etsh: 1: syntax error

	  ...
	  [1]: "without args" - this means without any shell flags, options,
	       or command-line arguments except for -n and/or -v (or the
	       combination thereof).

osh.c, lib.c, sh.h, err.[ch], 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) in the
	  atrim() and gtrim() functions.  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], util.c:
	* For the if(1) - conditional command of osh/etsh,
	  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
	     osh/etsh and csh/tcsh.

	  3) Tweak some in "History (+)" subsection of osh.1 manual page.

tests/...:
	* Updated regression tests, and regenerate test logs.

-------------------------------------------------------------------------------
[etsh-4.8.0]:
osh.[1c], err.h:
	* Added a new -n (noexec) flag/option to allow syntax checking
	  while not executing command lines.  Notice that this only checks
	  syntax with the shell's input and command-line parsing routines,
	  not including glob, if, goto, and fd2 errors.
	  For example, an if example follows:

	  % etsh -vn -c 'if { test -r "$1" -a -w "$1" echo "rw: $1;"' /dev/null
	  -n: noexec
	  -v: verbose
	  if { test -r "/dev/null" -a -w "/dev/null" echo "rw: /dev/null;"

	  % etsh -v -c 'if { test -r "$1" -a -w "$1" echo "rw: $1;"' /dev/null
	  -v: verbose
	  if { test -r "/dev/null" -a -w "/dev/null" echo "rw: /dev/null;"
	  if: {: } expected

	  % etsh -c 'if { test -r "$1" -a -w "$1" echo "rw: $1;"' /dev/null
	  if: {: } expected

	  % etsh -c 'if { test -r "$1" -a -w "$1" } echo "rw: $1;"' /dev/null
	  rw: /dev/null;

-------------------------------------------------------------------------------
[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.

osh.[1c]:
	* New feature; user can set the shell command prompt,
	  and the shell will prompt the user with it.  Doing
	  a `set P value' will get you rolling.

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

libexec.etsh/SetP:
	* Added this new command file to help users set P on the fly.

-------------------------------------------------------------------------------
[etsh-4.6.0]:
*:
	* Changed all URLs {https://} from: v6shell.org to: etsh.io {/*} .

defs.h, osh.1, osh.c, sh.h:
	* Added $g as a new etsh / osh parameter / variable.
	  Like $u is the effective user name of the current user,
	  $g is the effective group name.

if.1, util.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).

tests/...:
	* Moved (or renamed) tests/run.osh to tests/run, made some needed
	  changes due to the new name, and regenerated the test logs.

examples/...:
	* ready_rc_files - new sh(1) script to preprocess the example rc files
	  for the install-exp Makefile target.

	* Made many changes revolving around the idea of simplification.

README:
	* CentOS 7.3 is supported.

INSTALL:
	* Made many necessary updates, nothing earth-shattering though.

mkconfig:
	* Renamed the CONFIG_UBUNTU_16 macro to CONFIG_BROKEN.  The reason
	  is simple.  Not just Ubuntu 16.xx and 17.xx are broken.  Debian 9.x
	  is too, which is extremely troubling to me.

	  NOTE: I use the term broken, not to offend, but simply to state that
		I, or sh6.c and goto.c more specifically, do not support them.

	  Thus, I am left with the following open question(s):

		Is the sh6 and goto problem caused by a problem in sh6.c
		and goto.c, by systemd, by gcc-6.3.0, or by something else
		that is unrelated?

		Finally, does it make any sense at all that particular
		GNU/Linux operating systems are now unable to run the
		original UNIX shell and have it successfully perform
		one of its most basic functions, executing goto in a
		command file (aka script) in order to jump to a new
		offset via lseek(2) and then allow sh6 to continue
		on its merry way as it always has?

	  I welcome all feedback on this topic.  Thank you.

-------------------------------------------------------------------------------
[etsh-4.5.1]:
osh.c:
	* Changed OSHDIR to ETSHDIR.  ETSHDIR was documented in osh.1,
	  but I forgot to change the code.  This resulted in a broken /
	  nonfunctional etshdir script.

-------------------------------------------------------------------------------
[etsh-4.5.0]:
	* Building on the changes found in osh-4.4.0 (see below),
	  all changes in the tree transition this project from using
	  osh and sh6 to using etsh and tsh for the default binary names
	  of the shells upon installation instead.

	  So then...  What's in a name anyway??  Good question!

-------------------------------------------------------------------------------
[osh-4.4.0]:
	* New files: config.rc, configure, and mkconfig.tmp

	  These help work around a binary name conflict that need not exist.

	  It was a conflict between the osh and .oshrc files, found in the
	  Osh Project [1], and files with the same names, found in the OMake
	  build system [2].  Fixed the problem by moving osh and its .oshrc
	  to etsh (enhanced Thompson shell) and .etshrc I did.  The benefit
	  is that omake and osh can now be installed side by side on the
	  same machine without conflict.

	  etsh and .etshrc are simply the new defaults going forward; you can
	  always change config.rc or do `./configure osh sh6' if you prefer to
	  install osh and sh6 with their original names.

	  1. https://v6shell.org/
	  2.  http://omake.metaprl.org/

Makefile.config:
	* Bumped minor from 3 to 4 due to adding a ./configure step to the
	  build and install instructions.

Makefile:
	* Included macros from mkconfig.tmp to change the osh and sh6
	  binary names and to generate the manual pages as needed for
	  build and install.

mkconfig, osh.c:
	* The FILE_DOT_OSHRC macro is now defined via mkconfig and found
	  in config.h, not osh.c, after configure is run.

*.1:
	* Changed osh and sh6 references to match their binary names
	  set in *.1.out by configure.

examples/etc.osh.oshrc:
	* Added comments for clarity, and improved PATH handling.

-------------------------------------------------------------------------------
[osh-4.3.2]:
Makefile:
	* Removed the -Os optimization flag.  This should allow shells/osh
	  in OpenBSD Ports to not need a patch in order to compile with the
	  -O2 flag by default.

	* Changed -fstack-protector to -fstack-protector-strong.  This option
	  was always commented out as it, -fstack-protector, has been enabled
	  by default in OpenBSD's gcc for ages.  With OpenBSD's newly imported
	  clang, version 4.0.0 (tags/RELEASE_400/final) (based on LLVM 4.0.0),
	  the equivalent of -fstack-protector-strong is enabled by default.
	  This option is still commented out by default; it can cause problem
	  elsewhere (e.g., cc: error: unrecognized command line option).
	  Elsewhere, meaning not OpenBSD, the reference operating system
	  for this project.

-------------------------------------------------------------------------------
[osh-4.3.1]:
	* Changed http:// to https:// where appropriate, as v6shell.org
	  is now served via HTTPS (SSL/TLS) thanks to Let's Encrypt.

osh.c, sh.h:
	* Removed the `version' special built-in command; it is redundant
	  after adding `osh -VV' in osh-4.3.0.

osh.c, err.h:
	* Added an osh usage error for the `-V' and `-VV' options.
	  The text of the error message is identical to the SYNOPSIS
	  both in the osh(1) manual and in the osh.c main() comment.

err.c:
	* Increased the length of FMTMAX to allow for OSH_USAGE.

osh.1:
	* Removed documentation for the `version' special built-in command.

	* Improved the descriptions for the `-V' and `-VV' options,
	  and moved them both to the end of the option list.

*.1, libexec.osh/history.help:
	* s/General Commands/General Commands Manual/

examples/etc.osh.oshrc:
	* Updated for osh-4.3.1.

examples/dot.oshrc:
	* Removed the v and v1 aliases, and replaced them with V and VV.

	* Added a jobs alias to remind us that osh is not a job-control shell.

-------------------------------------------------------------------------------
[osh-4.3.0]:
	* Reorganized files: examples/*

	* New files: lib.[hc] (osh library routines)

	* New directory & files: libexec.osh/* (osh support scripts & files)

	* 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 (see above);
	  these files came (and will be removed) from the V6Scripts Collection.

INSTALL:
	* Synced with Makefile.

README:
	* Updated supported systems: Debian 8.7 (jessie), (Net|Open)BSD, OS X.

Makefile:
	* Removed "share/" from the default MANDIR.

	* Added check-(osh|oshall) & check-(sh6|sh6all) targets for consistency.

Makefile, tests/run.osh:
	* Fixed `make check' so it doesn't require doing `make install' first.

tests/bin/now:
	* Changed this script from sh6 to sh so the regression tests
	  can pass even if/when sh6 isn't installed on the system.

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

pexec.c:
	* Set esh_argv to NULL after free(3) for consistency.

osh.c, lib.[hc]:
	* Moved osh library routines from osh.c to lib.[hc].

osh.[1c]:
	* Added Version [-V | -VV] command-line flags / options.

	* Added & documented a new special built-in command, `verbose'.
	  It works like / with the `-v' command-line flag / option,
	  allowing the user to make osh verbose or not and to better
	  control on-the-fly debugging.

osh.1:
	* Added & updated [Hh]istory* documentation as needed.

*.1:
	* Did some manual page cleanup.  Notice that these legacy manuals
	  are written in man(7) format, not mdoc(7)..  Perhaps someday...

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

-------------------------------------------------------------------------------
[osh-030730]:
	* This is the initial maintenance release by Jeffrey Allen Neitzel.

osh.c:
	* Added '#ifdef CLONE' so the desired command search behavior
	  can be chosen at build time.

	* Fixed segfault when command line contains only whitespace.
	  We simply ignore this situation now.

	* Fixed segfault when redirections are used w/o a command.
	  This will now result in a syntax error.

	* Fixed segfault when redirecting a command w/o a filename.
	  This will now result in a syntax error.

	* Fixed a small memory leak when using redirection arguments.

	* Made osh correctly detect when a command line contains
	  too many arguments.  This allows command lines to have a
	  maximum of 255 arguments.

if.c:
	* Added '#ifdef CLONE' to make if(1) search for external commands
	  the same way osh(1) does.

goto.c:
	* Fixed a bug where goto should produce a 'label not found' error
	  but would instead go into an infinite loop at the end of the
	  command file.  We now correctly detect EOF and successfully
	  report 'label not found' errors.

-------------------------------------------------------------------------------
[osh-020214]:
	* All releases of osh prior to and including 020214 were authored
	  and maintained by Gunnar Ritter.

Jeffrey Allen Neitzel						2018/04/24

@(#)$Id: f3b03d0e1306658b1a6973dd5fe38d224ad26524 $
