Changes that improve compatibility w/ the Version 6 (V6) UNIX Thompson shell are marked w/ a `C:' in the details below. ------------------------------------------------------------------------------- [etsh-current] (development): * Work In Progress ( see https://etsh.nl/src/current/ ) ------------------------------------------------------------------------------- [etsh-5.4.0] (latest): * Bumped copyright/license year ranges from ...-2018 to ...-2019 . README: * Updated supported systems with OpenBSD 6.5-beta, NetBSD 8.0_STABLE, GNU/Linux Fedora 29, Ubuntu 18.04 LTS, and Ubuntu 19.04. * OpenIndiana: Hipster 2018.04: previously/currently supported. Could someone please let me know if the same is true for OpenIndiana: Hipster 2018.10: or not? I would appreciate it! =) link/url follows - https://www.openindiana.org/2018/10/24/openindiana-hipster-2018-10-is-here/ (= AUTHORS: * Replaced "Sixth Edition" with "Version 6". INSTALL Makefile Makefile.config: * 1) Tweaked INSTALL, adding more info to CC description; 2) Removed -DETSH_VNUM=[...] from Makefile & ETSH_VNUM=[...] from Makefile.config; . LICENSE defs.h etsh.c: * etsh.c: Added SIZE_T_EOVERFLOW(num, siz) as an example. * Please see CHANGES-tsh+ about whether it's needed here or not. mkconfig defs.h: * Added a compile test to mkconfig that defines HAVE_BSD_STYLE with a value of 1 or 0, and added its complement to defs.h to handle the case of if/when the compile test defines HAVE_BSD_STYLE as 0. sh.h: * Changed struct tnode { ... } by moving nested enum { ... } ntype found there out of tnode to a separate declaration of its own. Now, enum tntype is directly above the struct tnode declaration. This change affects both etsh.c and tsh.c; it makes struct tnode easier to read (for me at least). * Updated the IS_VARNAME(v) macro to disallow s ($s) as a variable. Now, doing a `set s value' will result in a "set: s: bad name" diagnostic. etsh.[1c]: * Since s ($s) is no longer used as a variable, it can instead be used to represent the SHELL environment variable as $s in the same way that $p represents PATH, $e represents EXECSHELL, and so forth. * Added relevant documentation to etsh.1 about SHELL and $s. etsh.c: * Added a new case to the switch in get_dolp(...) to implement the new SHELL environment variable -> $s feature. * Changed how -V and -VV behave; I removed the code that wrote the etsh version and the etsh url to standard error. I originally thought it would be useful, but instead, it was just annoying. I left the version and url for the -VVV usage error message, as it is actually useful. That was my original intent. etsh.c util.c lib.c lib.h sh_err.c: * Replaced instances of UChar with u_char, UCHAR with U_CHAR, and UCPTR with U_CPTR to sync with defs.h . * */.* */*: * Replaced ') io>|etsh\.io' with ') nl>|etsh.nl'. * Replaced "Sixth Edition" with "Version 6", and similar variations, such as "V6 Thompson shell". History/*: * Removed. You can find it on the website in various forms. That said, I need to update https://etsh.nl/history/ to make the files in question visible. At the same time, I will remove the terribly formatted and styled manuals that are there now and replace them with outputs from my mancnv script. I use it to generate the online manuals for the etsh project. libexec.etsh/pev libexec.etsh/README Makefile: * Added a new script, .../pev, to the project, and updated .../README to describe and document what it does. It prints etsh & tsh (package) version & info about its components; it's not really new; I wrote it long ago and figured I should clean it up and include it as part of the project itself. * Updated the Makefile to install libexec.etsh/pev . examples/etsh.login: * Fixed an incorrect PATH in the etlocal section. This isn't a default like /usr/local, by the way. I use /usr/local/etlocal as the install PREFIX for etsh-current most of the time. That way it doesn't conflict with the OpenBSD shells/etsh port, which uses /usr/local by default. examples/.etsh.prompt: * There is a section that previously tested: *) if $t != /dev/ttyC1 -a $t != /dev/ttyp1; This changed to: *) if $t != /dev/ttyC0 -a $t != /dev/tty00; It makes a bit more sense to me given the way I use OpenBSD. * Also, updated it with 2 more simple non-default prompt examples. [5] & [5 identical] add the short form hostname ($H) and precede the prompt with a '\n' character. [6] & [6 identical] simply precede the prompt with a '\n' character. For me, the preceding newline helps reduce the visual noise on my terminals. The previous example, without the preceding '\n' character, moved to [7] & [7 identical]. -------- cvs commit log messages -------- Release as etsh-5.4.0, making it available via https://etsh.nl/src/ on Thursday, 2019-03-28 (before 18:00 UTC). -------- ------------------------------------------------------------------------------- [etsh-5.3.1]: README: * Updated supported systems: *) Replaced OpenBSD 6.3-current with 6.4-beta; *) Replaced NetBSD 8.0_RC1 with 8.0; mkconfig: * Changed #define _XOPEN_SOURCE from 600L to 700 for OpenIndiana. defs.h: * Removed ULong typedef & inclusion of , both unused. defs.h etsh.c tsh.c: * Removed the UInt typedef of unsigned int; it's already available as u_int on supported systems. Replaced instances of UInt with u_int in etsh.c & tsh.c . lib.c: prompt_debug(): * Changed the type of cnt, a counter, from unsigned to u_int. pexec.c sh_err.h util.c: * Added a missing error message, ": too large", found in the original V6 Thompson shell source code; see History/sh.c for more information. * C: This error message is available in both etsh & tsh. * Also, defined PWD_USAGE; sbi_pwd(), in util.c, uses it. if.c strtoint.[ch] util.c: strtoint(): * Changed long to long int; it's not exactly a change, but it's better to be explicit than not; e3(), in if.c & util.c, uses strtoint() and has the same long to long int change. examples/{.*,*}: * Synced URLs - https://etsh.io/examples - with website again. tests/{README,run,test0[1-8]}: * Synced URLs - https://etsh.io/tests - with website again. ------------------------------------------------------------------------------- [etsh-5.3.0]: * Commits.log - Moved to https://etsh.io/src/old/Commits.log . INSTALL: * Updated in order to sync with the Makefile, and tidied up & clarified (the Footnotes:) a bit. * Improved the OpenIndiana example. LICENSE: * Added a new license for the pwd built-in command's simple documentation; I used an adaptation of it in etsh.1 & util.c . Makefile: * Added 'CC?='. Makefile, examples/ready_rc_files: * Changed the name of the examples.install temporary directory to exp instead. PROJECT: * Updated / synced this file with the Etsh Project website. It has its own https://etsh.io/Project page too. All for good fun and utility. README: * Added OpenIndiana Hipster 2018.04 to supported systems. sh.h etsh.[1c] util.c: * Added a new special built-in command, pwd; it prints the absolute pathname of the current working directory to the standard output. See its function, sbi_pwd(), in util.c . * Added documentation for it to the "Special commands" subsection of etsh.1 . * Changed the size of the local buf buffer in get_set_cwd() from PATHMAX to PATHMAX + 1 to include a byte for the terminating NUL; sbi_pwd() uses the same size for its local buffer as well. tests/run: * Updated accordingly to generate, and test against, the new logs. tests/test0[67]_etsh.log: * Regenerated the logs for 'make check*'; it was necessary, as cvs added CVS directories when moving the v6shell repository back to cvs, of course. tests/test0[67]_etsh_nocvsdir.log: * Added these 2 new log files; doing so allows 'make check*' to be run and work correctly from both a cvs checked out source tree & a released one; CVS directories get removed when I run the etsh release script. examples/.etshrc: * Changed VISUAL from /usr/local/bin/vim to /usr/local/bin/nvi . ------------------------------------------------------------------------------- [etsh-5.2.0]: * For information about changes I've not included here, please see https://etsh.io/src/etsh-5.2.0-commit.log on the etsh project (v6shell) website. * I moved the project from a git repository hosted by GitHub to a fossil repository hosted by me on my own machine(s) at the beginning of June 2018 (the 4th to be exact). * (all files): * Due to the project movement mentioned above, all of the ident strings (for the files that had them) got nullified for some reason. Not a problem really. I just created new ones manually. Now, I just have to remember to update them manually as well. Possible. AUTHORS, CHANGES, CHANGES-tsh+: * Updated. README: * Updated supported systems: *) Replaced OpenBSD 6.2-current with 6.3-current; *) Replaced NetBSD 8.0_BETA with 8.0_RC1; *) Replaced Fedora 27 with 28; *) Removed Centos and Linpus, since I don't know if they still are; Makefile: * Added DOCFILES macro for project documentation files to be installed into DOCDIR (DESTDOCDIR in its final form). The default value (now) is: README PROJECT NOTES LICENSE DEDICATIONS AUTHORS. mkconfig: * Updated to use the proper secure idiom for awk printf statements. *.[1ch]: * There are some changes, but I'm too tired to write about them coherently again. * Please see https://etsh.io/src/etsh-5.2.0-commit.log instead. libexec.etsh/history: * Made a few changes: 1) Update the 2 aliases fd2ncat & ncat to fd2lncat & lncat to keep history in sync with the change in v6scripts from ncat to lncat; the noted v6scripts change was to avoid a name conflict with the `ncat' command that is installed with `nmap'; the alias names in the `history' command file don't conflict, but it's better for me to keep stuff like this in sync when possible; 2) Change the SIGPIPE (13) trap from using '' to : ; 3) Realign stuff by adding a few tabs after the changes mentioned in 1) above; examples/(.*|*): * Made various updates / improvements to the following 4 files: *) .etsh.logout, .etshrc, etsh.etshrc, and etsh.login; ------------------------------------------------------------------------------- [etsh-5.1.5]: * Removed etsh-5.1.5-git.log, as it's on the etsh project (v6shell) website at https://etsh.io/src/etsh-5.1.5-git.log ; please see it for information about changes. ------------------------------------------------------------------------------- [etsh-5.1.0]: * Write up CHANGES*, and release!?. But in the meantime, to not delay release, please see the git commit log at https://etsh.io/src/etsh-5.1.0-git.log ; ------------------------------------------------------------------------------- [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