Author: Mark Moraes <moraes@computer.org>
Date:   Fri Aug  7 02:43:53 2026 -0400

    5.0.0: SEMVER from now on
    [vixie] moved to c89, rely on posix headers declaring standard functions
    will not compile with classic C compilers -- if you still use an ancient
    machine without c89+posix, stay with 4.17.*. gcc15 and clang19 no 
    longer complain or error, so c2x now works.

    avoid testdeb on debian older than 10 (debian 8 needs
    --force-yes because of some expired keys, and debian 9
    cannot find /usr/share/dpkg/buildtools.mk)
    
    get rid of warning for environ on MinGW

    pkg/deb/testdeb.sh no longer needs/uses pbuilder, uses standard crossbuild
    testbuild.sh runs it to produce .deb on ubuntu or debian platforms
    seems to work for x86_64, i386 and arm64 on github (tested by hand for
    armhf too)

    Makefile tgz can override name with JOVETAR variable for convenience,
    used by pkg/deb/testdeb.sh.  get some common fields from debian/control
    for dsc in pkg/deb/testdeb.sh.

    newer gcc apparently do some sort of overloaded function
    declaration so strchr and strrchr return type is the same as
    the first arg, fix that in io.c:backup_name, util.c:jbasename and
    c.c:m_paren.
    
    testbuild.yml: updated platforms, put OS names on .github/workflows DIST artifacts
    run testdeb.sh from testbuild.sh (no need for pbuilder) for ubuntu or debian

    pkg/dos/ to automate the build with OpenWatcom under doxbox
    tune.h fix so this compiles with OpenWatcom/dosbox again
    tweak to testbuild so mingw crosscompiles for Windows work
    (linker needs -lssp_nonshared)

    fixed the main jove doc to reflect new abbreviation codes
    that match the abbreviation commands consistently (change
    made in 4.17.5.5)

    fix jspec.in to also specify groff-base
    try groff-base for yum, hope that works on rocky8

    fix: a function declaration without a prototype is deprecated in all versions of C (clang19)

    remove ttyname declaration (systems that want biff
    support had either better have fstat+fchmod or declare
    ttyname in unistd.h) nuked ancient biff/comsatd support.
    if you remember what that is, congratulations.

    delete popen declaration, who has OSF/1 and I very much
    doubt c2x Jove compiles/works on it anyway, old systems need
    to stay with 4.17.

    remove more ancient/pre-POSIX/untested stuff: TERMIO, SGTTY,
    USE_GETWD/USE_PWD, WAIT3 or BSD_WAIT.

    updated sysdep.txt to delete obsolete config options

    removed one more unnecessary extern for _exit()

    removed all declarations that would appear in C89 or POSIX.1 standard headers
    (I think POSIX.1 1988 ought to be fine, though hard to say since all machines
    I can test are far more modern and conform to 2001)
    
    restored JSSIZE_T so Windows builds again.
    
    Tweaks to testbuild.sh to test mingw and pipeprocs.

    no longer use -u on jmake since it causes a spurious failure in some situations

    [vixie] remove spurious abort()

    [vixie] stop calling strdup, make some Bufpos "const"

    [cord] Update jove.nr.  replaced .UX Macro,
    rewrapped to max 80 chars, removed trailing whitespace

    ensure that testbuild PIPEPROCS installs portsrv via PORTSRVINST=1

    fix windows cross-compile issues from Fill redefinition,
    new brew location for MacOS

    nix will need more experimenting (probably some nix-channel stuff) because
    otherwise, testbuild cannot run, there is no uname, so will need to install
    coreutils (perhaps if /nix exists or suchlike, tbd)
    
    add Darwin to jmake.sh

    newer macos need to get groff from brew.  try nixos container as well


Author: Mark Moraes <moraes@computer.org>
Date:   Thu Feb 27 08:50:25 2025 -0500

    4.17.5.5: restore mode-line indicator for show-match-mode, rename
    all strings to provide clue to the command to turn them off.
    update to debian Brazilian translation
    https://github.com/jonmacs/jove/issues/25
    NOARGS macro for functions with no arguments
    replace bool with jbool for c23 (bool is a keyword)
    jmake.sh: ask for c89 (hopefully avoids complaints re:
    old-style protos). Search for gcc on SunOS to address
    https://github.com/jonmacs/jove/issues/23
    add tmux terminal to builtin jtc
    fix some github actions bitrot

Author: Mark Moraes <moraes@computer.org>
Date:   Thu Nov 30 02:48:10 2023 -0500

    4.17.5.4 continued: get rid of ubuntu containers since docker pull fails,
    not sure why. fix workflows typos and skip ctags for Rocky
    even more elaborate hackery to fixup apt sources.list
    for archived debians like 8 and 9. add rockylinux:9
    removal of sys/stat inclusion in recover.c broke mingw (and probably DOS)
    fixed it (in scandir.c) to work in both (probably also now works
    for the not-tested-in-years classic Mac port)
    testbuild: debian 9 regression no longer gets all the security repos,
    so continue if apt update fails

Author: Mark Moraes <moraes@computer.org>
Date:   Tue Nov 28 22:52:00 2023 -0500

    4.17.5.4 made jove compile and run on a BSD4.3 image
    running under simh. A few modernisms had crept in,
    but one bug (trying to use sg[].t_susp instead of ls[].t_susp
    in kbd_sig, send_oxc in iproc.c) seems to date back to 4.16beta!
    Fun things I had forgotten:
    * mkdir -p, test -d did not exist
    * ! and type did not exist in the shell
    * UL suffix did not exist for constants
    * ternary cannot have two different pointer types (void * vs char *)
    * include files are not protected against double inclusion
    * did not have S_ISDIR(x), use (x * S_IFMT) == S_IFDIR)
    * recover.c used strerror

Author: Mark Moraes <moraes@computer.org>
Date:   Sun Mar 19 16:58:00 2023 -0500

    4.17.5.3 put qref and example.rc in DDOCDIR (e.g
    /usr/share/doc/jove), update README to mention docs.

Author: Mark Moraes <moraes@computer.org>
Date:   Sun Feb 26 17:31:00 2023 -0500

    4.17.5.2 fix https://github.com/jonmacs/jove/issues/15
    macros in joverc run immediately after the execute-macro
    command is processed (disallow macros from sourcing joverc
    to avoid a corner case that seems of low value), added
    doc/test*.rc to test rc handling.

    fix https://github.com/jonmacs/jove/issues/20 trims
    trailing whitespace off empty lines between paragraphs
    in comments

    per @C0RD for Debian conventions (probably other Linux too),
    Makefile now installs jove.man.pdf and jove.man.txt to
    DOCDIR, defined as $JOVEHOME/share/doc/jove by default
    (instead of SHAREDIR), fixed pkg/deb/debian/jove.docs to
    match.

    Added a few NOTREACHED after complain() and finish().

Author: Mark Moraes <moraes@computer.org>
Date:   Thu Feb 23 16:56:50 2023 -0500

    4.17.5.1 remove doc/jem.rc, add doc/test.rc (some
    regression tests for joverc processing)

    fix https://github.com/jonmacs/jove/issues/17 and
    https://github.com/jonmacs/jove/issues/18 (often fails
    to fill last word in para) by reverting one change from 4.16.0.74.

    remove keychart. (causes trouble on Windows/DOS, not needed)

    rename *.doc to *.txt since everything expects .doc to
    be Microsoft Word files. Delete generated file before copying
    new one over it.  remove cleanall target, added distclean synonym
    for clobber. install teach-jove and jove.qref with cmds.doc
    target for simplicity.  generate jove.man.pdf rather than jove.man.ps.
    rename jove.man to jove.man.txt for consistency (redhat pkg did this
    already)

Author: Mark Moraes <moraes@computer.org>
Date:   Mon Feb 20 19:19:35 2023 -0500

    4.17.5.0 continued: forgot to put Beginner_Help call in jove.rc.in,
    (renamed jem1.txt to jem.text, and removed jem1.hlp, since new teach-jove
    command can replace about-jove mini-description). No real need for full
    jem.rc (those function key bindings clash with others, which would be
    confusing, and don't work in modern window systems anyway, since many of
    those function keys are intercepted by the desktop!)

    install jove.qref and jem.txt in SHAREDIR

    lower threshold to move objects from near to far in Makefile.wat so we can
    raise stack DOS build from 11000 to 18000 (since 11000 caused a stack
    overflow at least once -- 11500 did not, but seems worth some headroom;
    still handles about 35000 lines in a 200K executable)

    fix jexecpath bugs on NetBSD, FreeBSD (typos, stdbool clash),
    OpenIndiana (need getCWD before fixrelpath is called)

Author: Mark Moraes <moraes@computer.org>
Date:   Mon Feb 20 13:55:43 2023 -0500

    4.17.5.0 continued: WIN64 (x86_64-w64-mingw32) should build and work
    (JRWSIZE_T definition, avoid couple of ptr->unsigned long casts in
    debug printf)
    avoid "Unexpected" or "malformed" complaint when "else"
    or "endif" is followed by whitespace in joverc
    remove couple of dups in jove.qref
    fix typo ('0' should be '\0' in getvar(), fixes ifvar)
    adopt Debian jem* files if no .joverc or env var JOVENOHELP is not set to 1

Author: Mark Moraes <moraes@computer.org>
Date:   Wed Jan 25 00:16:41 2023 -0500

    4.17.5.0 continued: If SHAREDIR or LIBDIR are relative paths, interpret
    them as relative to the directory from which the jove binary was run
    (i.e. BINDIR) which makes more sense in most situations, does
    not get confused if one uses cd or pushd, and allows us to
    create relocatable/portable Jove installations (particularly
    useful on Windows or DOS)
    increase 9 to 15 for MAXBASENAMELEN so that .exe and teach-jove fit.
    ensure that SyncRec is called after a buffer is unmodified
    (usually because it was saved) to avoid being asked to recover
    buffers with contents older than the saved version after a
    system or jove crash/kill.
    Use jamstrcat instead of jamstrsub for features, also use
    jamstr* to check some string ops in PathParse (though they are
    probably ok)
    Update teach-jove tutorial somewhat.
    Remove redundant install and DESTDIR in Debian pkg sample, since
    dh_auto_install adds those anyway.
    Some tweaks to sysdep.h and tune.h
    i686-w64-mingw and alpine static in testbuild use
    relative SHAREDIR & LIBDIR so those can be copied and run
    anywhere without installation.
    JMAKE_RELATIVE=1 env var causes jmake.sh to set DESTDIR, JBINDIR,
    JSHAREDIR, JLIBDIR appropriately to exploit relative
    SHAREDIR, LIBDIR
    Added mingw and musl-static builds to jmake.sh (both use
    relative) and simplified testbuild.sh
    Copy ChangeLog to DOS zip as changelg.txt, and doc/teach-jove
    as teachjov.txt
    teach-jove and relative features mean slightly smaller stack for DOS
    Updated README.dos and README.win
    Tried to make WIN64 (x86_64-w64-mingw32) build work, still does not work.
    some cleanup reported by pedantic on win32.c, proc.c, 

Author: Mark Moraes <moraes@computer.org>
Date:   Mon Jan 9 22:34:02 2023 -0500

    4.17.5.0 unnoticed bugfix to joverc, just build and test tweaks
    
    Makefile tweak so nothing is written to pwd on install
    target if the all target was already run with the same
    variables by generating files in tmp before copying if
    different.
    
    created pkg/rpm and pkg/deb dirs, moved jspec.in to pkg/rpm
    added a sample derived from Cord's debian packaging info to
    pkg/deb along with a testdeb.sh script that runs pbuilder to
    generate pkgs for amd64, arm64 and armhf as a test of cross-build.
    Add pkg to tgz, plus some other .filelist cleanup (include jove.spec)

    added some notes to pkg/RELEASE about tagging and building a release
    on github.

    updated some of the test environments in github actions to
    more recent ones.
    
    put old/ back into github automatic release tarballs since
    it is mentioned in README as a source for info about older sysdep.
    
    testbuild.sh: try to put human-friendly distro name and ver
    in output.  automate sudo guesswork and provide env var SUDO
    override, no need for --sudo-preinstall option.  add
    --force-yes in addition to -y to avoid interaction for apt
    install of prereqs.  Invoke pbuilder if available to
    generate deb pkgs (but we do not add it automatically as a
    prereq, pretty expensive, plus seems unhappy inside container)
    use gzip instead of bzip2 since latter is sometimes missing on
    some platforms.

    joverc handling (commands.*, vars.*, keys.txt) Backed
    out of bsearch that I tried in 35dc21ae 4.17.3.2 since
    it does not provide the first-unambiguous-match
    behaviour.  But now generate cmdidx and varidx in
    setmaps for a little less code in Jove.

    added teach-jove command and -T option to Jove to invoke it,
    removed standalone teachjove executable which was a nuisance
    (relied on cp so did not work on Windows/DOS). replaced
    teachjove.c with teachjove shell script for compatibility,
    but wonder if we can just get rid of those, less namespace
    pollution.

    removed duplicate/obsolete config from
    pkg/deb/debian/jove.rc (which goes in /etc/jove/jove.rc
    on Debian)

Author: Mark Moraes <moraes@computer.org>
Date:   Sun Dec 18 02:52:09 2022 -0500

   4.17.4.9 screen.c remove vestigial unused variable 'col'
   (causes complaints on FreeBSD 13.1)

Author: Mark Moraes <moraes@computer.org>
Date:   Sun Dec 11 16:27:21 2022 -0500

   4.17.4.8 jmake.sh: pass CC through, accept JMAKE_UNAME
   as override for uname. only use CC=gcc for Linux
   reverted a bit of da9018786dcb2e4a30f3f63ecd5081fc710d50e1
   to use SYSDEFS instead of CPPFLAGS, because FreeBSD does not have the
   latter as part of .c.o, sigh.  So we're back to SYSDEFS for -D or -I
   and OPTFLAGS for -O or other oddball compiler flags.
   default to gcc-style optflags, only change that for SunOS or unknown.

   testbuild.sh --preinstallonly or --sudo-preinstallonly
   exits after prereq package install without building, useful for
   updating containers. make rpm more robust for old containers
   that may have an previously installed jove, use TB_MACH instead
   of hardwired x86_64

Author: Mark Moraes <moraes@computer.org>
Date:   Fri Dec 4 20:20:45 2022 -0500

   4.17.4.7 recover.c: changed copystr to copystrs in to
   avoid sprintf to fixed size buffer that generated
   many complaints.
   setbuf on pipe seems unnecessary on modern machines/libc.
   missing space in error message

   testbuild.sh: for apt case, use OPTFLAGS from Cord debian hardening

Author: Mark Moraes <moraes@computer.org>
Date:   Fri Jul 8 03:39:05 2022 -0400

    4.17.4.6 ifdef jove-{compiled,linked}-with variables for
    UNIX or MINGW in vars.tab, to match jove.h (the variables
    get defined by lines appended by the Unix Makefile to keys.c)

    fix missing case where long line did not set the
    error flag and therefore did not rename the buffer to a
    temporary name (same issue noted by Adam Sjøgren,
    partly fixed in commit
    2a256983c9d4026c5745f4ea333d9140f9a6c24a, Mar 14, 2020)
    
    clean removes */*.tmp files
    
    jmake.sh looks for pkgconf before pkg-config since it's the
    new cool thing...
    
    some /etc/*-release are symlinks, testbuild.sh was skipping those.

Author: Mark Moraes <moraes@computer.org>
Date:   Tue Jul 8 00:38:41 2022 -0400

   4.17.4.5 apt case in testbuild installs bzip2 and dpkg-dev
   Replace buildflags.sh complexity with jmake.sh
   Makefile uses modern CPPFLAGS, CFLAGS, 
   LDLIBS convention instead of SYSDEFS, OPTFLAGS and
   TERMCAPLIB, EXTRALIBS (though the latter should still
   work if the former aren't used).  
   Changed from repeated invocation of buildflags.sh
   to a single jmake.sh wrapper (also easier to bypass
   completely), jmake.sh will invoke
   dpkg-buildflags if it exists, per
   https://github.com/jonmacs/jove/issues/11 and
   https://wiki.debian.org/HardeningWalkthrough
   Added jove-compiled-with and 
   jove-linked-with variables to make it a bit
   easier to find out post-facto what the flags
   and libraries and compiler/linker options were.
   Fix spurious uninitialized-variable complaint in io.c
   Ensure initial modeline update on Windows

Author: Mark Moraes <moraes@computer.org>
Date:   Sun Jun 5 20:19:02 2022 -0400

   4.17.4.4 incorrect regexp in doc/jove.rc
   add documentation for insert-variable
   remove the -ms docs from the all: target since
   many Linux do not install -ms macros with groff,
   and those are only needed for formatted manuals,
   not the online help.  fdocs target will build them.

commit 6482cdc0d5cb7ee6e50fb18b8cf0369be769c33d
Author: Mark Moraes <moraes@computer.org>
Date:   Sun Jun 5 20:19:02 2022 -0400

   4.17.4.3 fix testbuild.sh to run on Debian Hurd.

commit 71fe53cf1a864ce0a60120a7a3d06f583ce4fc81
Author: Mark Moraes <moraes@computer.org>
Date:   Sun Jun 5 19:33:42 2022 -0400

   4.17.4.2 move preinstall from testbuild.yml to testbuild.sh
   to reduce duplicate code

   generate binaries and docs in DIST artifacts from github actions
   as part of all test builds

   move more old platform comments (Xenix, OSF/1 etc) for
   other compiler and link flags from Makefile to README for consistency.

   use only spaces in version.h to make it simpler for BSD
   sed (no \t, did not want to put literal TAB in Makefile,
   something might eat or munge it)

   update buildflags for Debian Hurd

commit b36f587cf4990a266812d48a38ae73bbdb3ef12a
Author: Mark Moraes <moraes@computer.org>
Date:   Mon May 30 01:51:27 2022 -0400

    4.17.4.1 fixed sysdep.h, buildflags.h and jspec.in so Linux
    now uses GLIBCPTY (aka OPENPTY, BSDPOSIX_STDC rather than
    SYSVR4) since modern Linux (Debian 10 on, Alpine 3.13) seem
    to hit the issue reported in
    https://github.com/jonmacs/jove/issues/6 where the exit of
    interactive shells (when they see an EOF) confuses Jove.
    
    Added CentOS, Fedora, Alpine to the github actions build matrix.

commit bba72938670cc350c45adc47222827382a5ea4a2
Author: Mark Moraes <moraes@computer.org>
Date:   Sat May 28 17:05:45 2022 -0400

    4.17.4.0 fix nasty bug I introduced to recover in 4.17.2.8,
    forgot to pass buflist to erealloc, resulted in uniitalized
    memory references, would mess up badly on recovery files
    after the first set.  Now passes valgrind cleanly.  Also
    simplified option parsing a bit, added -r to also override
    the RecDir from cmdline, accept double-dash options as well,
    produce Usage for any unknown option, heuristic to detect
    missing argument.  Use emalloc in place of malloc in a few places.

commit 716ee39f1503f162aa2add7b387da0cfb7596867
Author: Mark Moraes <moraes@computer.org>
Date:   Mon Dec 6 00:00:59 2021 -0500

    4.17.3.9 ignore switch "--" on command-line so that visudo works
    https://github.com/jonmacs/jove/issues/7

commit 89aa22d940cbc72386b59599ce403e96a64830ee
Author: Mark Moraes <moraes@computer.org>
Date:   Tue Jul 6 22:51:29 2021 -0400

    fix build on precise

commit a155b00139e1c6ca7da676a2dccf8548b93ae3a8
Author: Mark Moraes <moraes@computer.org>
Date:   Fri Mar 19 23:51:37 2021 -0400

    4.17.3.8
    
    Added ChangeLog and LICENSE to MISC so 'make tgz' gets them
    Skip old/* for github autogeneration
    Mark *.ico binary

commit 1417da64acb0ba9c8a0232d854f6d9b467c688cd
Author: Mark Moraes <moraes@computer.org>
Date:   Mon Mar 15 00:50:16 2021 -0400

    4.17.3.8
    
    Do not fail build if ctags is missing.
    
    Improve error message from MakeTemp failure to show what
    caused it.
    
    MINGW needs NO_MKSTEMP because Windows mkstemp unlinks the
    filename, which is needed for filter-*.
    
    Fix two long-standing bug in Windows: shell-command used to
    crash on Win10 with code c0000005 because close(0) seemed to
    mess up input events, and filter-region did not work because
    InFName was not being being honored in the WIN32 ifdef.
    
    Tried to fix problem where Win10 waits for first event
    to update mode line.  Helped sometimes, but still does
    not work consistently.

commit b969d8967ebefb678131dcfc4f70cfe054b31bb2
Author: Mark Moraes <moraes@computer.org>
Date:   Mon Feb 22 20:05:50 2021 -0500

    4.17.3.8 in-progress
    
    remove update flag for travis homebrew to see if that's fixed,
    should speed up Mac builds a lot.

commit 043aaab5c8d4e71d4f40449a062dc870cf360e1c
Author: Mark Moraes <moraes@computer.org>
Date:   Fri Feb 12 19:10:59 2021 -0500

    4.17.3.8 in-progress
    
    Fix buildflags.sh for SunOS aka OpenIndiana.
    
    Add +e to end of script so internal travis errors do not cause
    regression to fail.

commit 71b074fdf0dbfeede6b4b79323ef9d40f65a3b2f
Author: Mark Moraes <moraes@computer.org>
Date:   Fri Feb 12 18:52:49 2021 -0500

    4.17.3.8 in-progress
    
    Updated Makefile to support 7z or other zip/archiver commands for 'make zip'
    
    Improved buildflags pkg-config test slightly
    
    Updated README to describe package prereqs on many distros,
    clarify that buildflags defaults to/fallsback to JTC in many cases.

commit 4b549fd67ba113afc14a89217b21dc483b377ce8
Author: Mark Moraes <moraes@computer.org>
Date:   Fri Feb 12 02:03:29 2021 -0500

    4.17.3.8 in-progress
    
    fix mention of README.w32 -> README.win in README
    
    remove s390x from test platforms, seems to take a very long
    time and has never yet exposed a problem that other
    platforms didn't also expose.

commit 81f448aab8899b05ca6d8921e344f434ce3a9986
Author: Mark Moraes <moraes@computer.org>
Date:   Thu Feb 11 22:59:07 2021 -0500

    4.17.3.8 in-progress
    
    travis ubuntu precise seems to fail (though log shows it succeed?!), works
    on docker of 12.04, so switching to trusty for old ubuntu and add focal
    for newest.

commit a9985e2bf0a62eb3c7cbb1a7e95872a954c40f28
Author: Mark Moraes <moraes@computer.org>
Date:   Thu Feb 11 01:52:24 2021 -0500

    4.17.3.8 in-progress
    
    remove tabs from .travis.yml

commit 0b927d2ac1158889c02cc904c5095994b80bab25
Author: Mark Moraes <moraes@computer.org>
Date:   Thu Feb 11 01:45:17 2021 -0500

    4.17.3.8 in-progress
    
    Rename PPchar in setmaps to PPkey to avoid duplicate in tags.
    
    Add testmailer.sh to test recover -syscrash, also added support
    for JOVERECDIR to override default recover -syscrash destination
    (and code to mkdir it if needed).  Other recover cleanup
    for error messages.

commit ed750ba32e364e2dde0cf889f466a6e216938f86
Author: Mark Moraes <moraes@computer.org>
Date:   Thu Feb 11 01:40:07 2021 -0500

    4.17.3.8 in-progress
    
    Added buildflags.sh utility script to intuit typical SYSDEFS
    (via --cflags) and TERMCAPLIB (via --libs) for most modern
    systems (*BSD, Linux, Solaris, MacOS X).  The small overhead
    on each compile line seems well worth the ability for most
    people to not have to read the build docs.  Updated .travis.yml
    
    Renamed README.w32 to README.win (clearer), moved README.cyg
    to old (normal README is fine for modern Cygwin)
    
    Removed EXPERIMENTAL comment on JTC, I've been happy with it
    for a year on a few systems (mainly Linux).
    
    Other documentation touch-ups.

commit a6b7300941c02d75da4df3ed12aa81e58bfb0e20
Author: Mark Moraes <moraes@computer.org>
Date:   Thu Feb 11 01:35:34 2021 -0500

    4.17.3.8 in-progress
    
    updated comment to indicate mac.c historical status
    
    moved README.mac to old to avoid confusing modern Mac users.

commit 9eee27ae206ff8fc0960fc923d85e4d02f795455
Author: Mark Moraes <moraes@computer.org>
Date:   Fri Jan 29 11:30:14 2021 -0500

    4.17.3.8 in-progress
    
    fixed branch name for travis

commit ffaffa2acfd837a985aa2a1f5bed538d5d8fa551
Author: Mark Moraes <moraes@computer.org>
Date:   Fri Jan 29 00:59:47 2021 -0500

    4.17.3.8
    
    Jove now cross-compiles with MinGW (mingw-w64 4.0.4-2 on
    Ubuntu 16.04) for WIN32.  Native WIN32 still seems to work.
    
    Fixed a bug in setmaps build that probably messed up most
    cross-compiles (setmaps must have exactly the same feature
    defines enabled when it includes commands.tab for local
    compile as will be used for the cross-compilation target platform)

commit dcc4ffd4578e0a1513a1f9e287720bd307d6e0c9
Author: Mark Moraes <moraes@computer.org>
Date:   Fri Jan 29 00:12:27 2021 -0500

    4.17.3.8 in-progress
    
    switched order of EXTRALIBS so that can link with -lasan -lubsan for
    address sanitizers which must be the first libraries.
    
    renamed SSIZE_T to JSSIZE_T to avoid MSVC clash, removes some ugliness
    from sysdep.h and removes problem building with mingw (work in progress)
    
    win32/mingw: add len arg to win32.c getcwd call
    fix signature for scandir jscandir in WIN32 branch
    remove couple of complaints when building with MSVC vcvars64
    (in MSVC read/write 3rd arg remains unsigned int, not size_t for
    both vcvars32 and vcvars64).  fprintf format complaint in recover.c,
    spawnve complaint in proc.c
    lowercase jjove.ico works for both native and mingw cross.

commit 0ff14839ed1d4550d8441afa09e5e73820328fd2
Author: Mark Moraes <moraes@computer.org>
Date:   Sun Apr 5 14:17:37 2020 -0400

    4.17.3.7 added left-right scroll to the minibuf. this is
    somewhat different logic than normal lines (does not use the
    Scroll* variables) because, well, so much about the minibuf
    is already so different from regular lines.  Once it needs
    to scroll, tries to give the prompt no more than half the
    width (things like query-replace-search can have big
    prompts) and keeps the curchar at approx 3/4 of the width.
    Seems to look reasonable on both tiny and large screens.
    Also fixed a couple of code indentation weirdnesses I
    noticed in disp and reapp.

commit 796bdcc55214740db5fc77becf744b1bff45f074
Author: Mark Moraes <moraes@computer.org>
Date:   Tue Mar 31 00:54:19 2020 -0400

    4.17.3.6 put a '*' after the 6 digits of line number (if
    number-lines-in-window is on) if buffer has more than a
    million lines.  Avoid recursion when formatting numbers.
    calculate percentage without risk of overflow.  Add note
    that we avoid unsigned long because of ancient C compiler,
    be nice if we could format it since we can then use it for
    byte count, dot, etc (currently, io_chars e.g. as displayed
    in the message after writing a file goes negative on 32bit
    machines once one crosses 2GB of text, which can happen on
    modern machines, though unlikely in files one normally edits)

commit b69684e31644db2c092337e5c233d5e0f37ff490
Author: Mark Moraes <moraes@computer.org>
Date:   Wed Mar 18 00:14:15 2020 -0400

    4.17.3.5 fix type promotion bug in my bno_to_seek_off macro,
    results in bogus recovery and also some tmp file corruption
    above 32K lines for short daddr (i.e. only on DOS or pdp11)
    
    move DOS/WIN process.h inclusions to sysprocs.h and io.h to
    externs.h for simplification (removes a warning)
    
    Use EXIT macro everywhere that matters, defined as exit
    or _exit based on USE_EXIT.
    
    Updated README.{dos,w32} to proposed binary distributions
    joveNNN{s,w,m,l}.zip

commit 8f16e4ec6ee90b36cda27815aab5db5b2dc6305c
Author: Mark Moraes <moraes@computer.org>
Date:   Tue Mar 17 23:21:28 2020 -0400

    deleted tbsearch.c, was a one-time test.

commit d9b7034bb91bc5a52ef3f2c6a52d6f468c3c3424
Author: Mark Moraes <moraes@computer.org>
Date:   Tue Mar 17 23:20:55 2020 -0400

    added test program for jbsearch for historical record

commit 0e3d0f56f35f47deafc1316157c22427eb87db97
Author: Mark Moraes <moraes@computer.org>
Date:   Sun Mar 15 00:58:48 2020 -0400

    Make jove -r work on Windows (better to exec/spawn it before we
    mess with the terminal; plus windows wants P_WAIT, for some reason
    P_OVERLAY does not work)
    
    Added jamstrcat (strcat with size check, and safe for overlap)
    utility function.

commit 4012090145ad5778fdf4c42927c6292cd7daf582
Author: Mark Moraes <moraes@computer.org>
Date:   Sun Mar 15 00:56:40 2020 -0400

    Fix to earlier 2a256983c9d4026c5745f4ea333d9140f9a6c24a
    commit, to leave buffers with null file names (e.g. Main)
    alone during read.
    
    Added proto decls for callbacks that MSVC seems to need
    (and fix one from ptrproto to proto)

commit 3423a19158769f6fa5b167b45e101469a953e0c7
Author: Mark Moraes <moraes@computer.org>
Date:   Sat Mar 14 16:46:13 2020 -0400

    Cord has been using LG_JBUFSIZ of 14 for Debian for a while
    anyway, seems a good time to bump this default to 15 (i.e.
    32K, so max linesize is now that).  It's 2020, VM on
    machines with >1GB of DRAM is the norm, I think a 2MB
    b_cache footprint for Jove is now quite acceptable.  (Non-VM
    machines almost certainly need to use JSMALL anyway, or can
    override this).

commit ba7736ce73911589c541f85afd067ac5876646f9
Author: Mark Moraes <moraes@computer.org>
Date:   Sat Mar 14 16:44:39 2020 -0400

    removed the S_ISREG(m) macro hack and replaced with the
    underlying (m&S_IFMT) == S_IFREG idiom since that is in
    other jove code already.

commit 2a256983c9d4026c5745f4ea333d9140f9a6c24a
Author: Mark Moraes <moraes@computer.org>
Date:   Sat Mar 14 15:55:13 2020 -0400

    4.17.3.4 Fixed issue noted by Adam Sjøgren, that a
    buffer with truncated lines can still be saved to the
    original file, which seems bad (fairly sure I've made that
    mistake at least once, accidentally starting a compile-it
    and saving files with truncated long lines that I had not
    noticed, or hadn't yet fixed).  This change puts a temporary
    filename #FILENAME+~ on the buffer and marks it as SCRATCH
    (if new) till the read successfully finishes, switches the
    read to bail out on a Long line.  insert-file changes the
    name but but does not mark the buffer scratch.  shell
    processes stop at the long line as they used to (arguably
    also a bug that should be fixed, but that would require
    folding or truncating the lines -- I vaguely remember a fix
    that did that, anyone recall?)

commit b09a9a05b0aa49d187cc0a7e993e7b6734755acb
Author: Mark Moraes <moraes@computer.org>
Date:   Sat Mar 14 15:48:43 2020 -0400

    may be gratuitous, but seemed pretty low-cost to protect
    truncstrsub from overlapping copies, for safety/consistency
    with jamstrsub. (One day, I'd really like to change all
    strcpy to jamstrsub, maybe rename it to jstrcpy, since
    copying to fixed-size buffers without size checks just
    creeps me out, I don't feel at all confident we can always
    get them just right by reasoning about them)

commit 35dc21ae366f128e54a610af38e6d4af110b1c3b
Author: Mark Moraes <moraes@computer.org>
Date:   Sat Mar 14 01:53:30 2020 -0400

    4.17.3.2 Build recover on Win32, couple of tweaks to make it work.
    
    Fix Makefile.wat setmaps target that I broke in previous commit
    
    Use bsearch for commands instead of the single character
    hash, should be fewer steps for most common commands, since
    distribution is not even by character.  Also use it for vars
    (has jbsearch for older systems)
    
    Added jove-features (read-only) variable with a
    colon-separated list of feature tokens, and an ifvar
    directive for joverc to use that, so can keep the same
    jove.rc file and not get errors on different platforms.
    probably useful for bug reports too.

commit 222bda4921ded2795124ea9c2f4e74aa51a27e2a
Author: Mark Moraes <moraes@computer.org>
Date:   Sun Mar 8 00:27:02 2020 -0500

    removed negative line number bug from README

commit ec656ce154f0994296368499687fa33b6511c2b3
Author: Mark Moraes <moraes@computer.org>
Date:   Sun Mar 8 00:06:47 2020 -0500

    4.17.3.1 annotated error and len_error as NEVER_RETURNS too
    
    added /* NOTREACHED */ comment after those and a bunch of complain calls

commit fa51970657fd31496f7c9f934d410da49c38478c
Author: Mark Moraes <moraes@computer.org>
Date:   Sat Mar 7 23:15:45 2020 -0500

    4.17.3.0 better version of NULLPROC/cmdproc_t initialization from Hugh
    
    Found and fixed couple more such complaints (from resetsighandler)
    
    Fixed couple of innocuous gcc complaints about uninitialized value
    (only if chr_to_* complains)

commit 0966d6f4c750e618f7baf31759b5e560951125eb
Author: Mark Moraes <moraes@computer.org>
Date:   Wed Mar 4 16:23:34 2020 -0500

    recover.c: some machines off_t is long long, so cast correctly for debug printf
    
    wind.c: downcast long arg_val to int for grow/shrink, should be safe (int can
    hold the increment we plan to grow/shrink a window by)

commit 8b93a409a987e553d584e53cc85bad8b44f08780
Merge: 3f0c245 d76b939
Author: Mark Moraes <moraes@computer.org>
Date:   Tue Mar 3 22:32:43 2020 -0500

    Merge branch 'long-line-num' into moraes

commit d76b9390c0f790b417ebbe81ebcd85150cb92b44
Author: Mark Moraes <moraes@computer.org>
Date:   Fri Feb 21 00:49:31 2020 -0500

    4.17.2.9 try to use long for line numbers, so we do not see negative
    line numbers on platforms where int is 16bit, and can use
    arg > 32K to move forward, backward lines/chars/words, or goto
    line numbers.
    
    JLGBUFSIZ is now LG_JBUFSIZ to match other LG* constant names.
    
    Simplified blkio indirection and check lseek in tmp file for error.
    Improve tmp file too large message to show some numbers to
    help with understanding.
    
    Move a few constants from sysdep.h to jove.h to be with similar
    things, and vice-versa (so most JSMALL settings are in one block
    in sysdep.h). Rename CHAR_BITS to CHAR_BIT so we use the standard
    manifest if avail.

commit 8601ea19036fd3dc8b54589c4cc4fb71eca7907e
Author: Mark Moraes <moraes@computer.org>
Date:   Sun Mar 1 19:16:23 2020 -0500

    4.17.2.8 DOS + recover cleanup
    
    rename SMALL manifest to JSMALL to reduce confusion with DOS
    memory mode. make MAXCOLS small (132) if JSMALL is defined
    
    recover cleanup: record JLGBUFSIZ and LG_CHUNK_SIZES to in
    header.  compiles on DOS with OWC, some int -> long and
    other related fixes to make it work.  tmpfile names now 8 chars.
    handle short reads of tmpfile more gracefully because
    there are some bogus daddrs in recfile when we reach out
    of memory (bug in rec or insert.c code, perhaps?)
    
    make recover header a bit more portable/robust across
    different configs of jove by storing more info in RECMAGIC
    and using only long rather than a mix of types. In
    principle, this opens the door to restoring rec files from
    any config of jove with the same program.
    
    move -D earlier in jove main so we can emit debug in
    functions called earlier.  Add -D to recover so we can debug
    it more easily.
    
    define FULL_UNISTD for OWCDOS, it seems well-prototyped
    
    mention jove-users at freelists

commit 3f0c24580ceda849cf2607f7a281c7cf76884681
Author: Mark Moraes <moraes@computer.org>
Date:   Sun Mar 1 19:16:23 2020 -0500

    4.17.1.8 DOS + recover cleanup
    
    rename SMALL manifest to JSMALL to reduce confusion with DOS
    memory mode. make MAXCOLS small (132) if JSMALL is defined
    
    recover cleanup: record JLGBUFSIZ and LG_CHUNK_SIZES to in
    header.  compiles on DOS with OWC, some int -> long and
    other related fixes to make it work.  tmpfile names now 8 chars.
    handle short reads of tmpfile more gracefully because
    there are some bogus daddrs in recfile when we reach out
    of memory (bug in rec or insert.c code, perhaps?)
    
    make recover header a bit more portable/robust across
    different configs of jove by storing more info in RECMAGIC
    and using only long rather than a mix of types. In
    principle, this opens the door to restoring rec files from
    any config of jove with the same program.
    
    move -D earlier in jove main so we can emit debug in
    functions called earlier.  Add -D to recover so we can debug
    it more easily.
    
    define FULL_UNISTD for OWCDOS, it seems well-prototyped
    
    mention jove-users at freelists

commit 0a5e0ff4649c5fa9bcbea54873bcdcfbc90c6206
Author: Mark Moraes <moraes@computer.org>
Date:   Thu Feb 27 16:57:52 2020 -0500

    distrib target becomes tgz, jovedos.zip becomes zip and
    makes joveVVVs.zip, distrib now makes both tgz and zip,
    clean does not remove tgz, clobber removes tgz and zip

commit 3be5eb0f05f1caf2276a85e5b37bedde163f3e08
Author: Mark Moraes <moraes@computer.org>
Date:   Tue Feb 25 00:59:14 2020 -0500

    4.17.2.7 Since -DLinux is default in Makefile, make TERMCAPLIB be -lncurses
    to match.  That's a better default for most modern systems.
    
    Fix Makefile.wat to have bigger stacksize, needed for -ml.  Added -os
    for default (which shrinks code slightly, but still not enough for -ms to
    work, sorry)
    
    Tried to skip failures for jove.rc on commands that might not exist.
    
    Use -D command-line option rather than JOVEDEBUG env var for debug filename,
    avoids security hazard.  Hugh cleanup of jdprintf.  Add some missing newlines.
    Put F_LOCKED on debug file so it doesn't get trashed.  Print pid as long.
    
    Some cleanup of portsrv (takes --kbd as arg 1 to make it easier to run
    from shell for testing, fix signal handling for linux so kbd restarts
    correctly) Add RETRY_ERRNO macro to simplify (and not miss) all the places the
    retry-after-syscall is needed.
    
    jtc needs select, just make it non-conditional to help me
    build it under travis on more architectures.

commit b1d6aac94aefba38b07460161ac3a45ab270e7de
Author: Mark Moraes <moraes@computer.org>
Date:   Sun Feb 23 12:42:46 2020 -0500

    per Hugh, missing space before opening paren

commit f89cde8132df58dbbe61947cd5a658568cb0b33a
Author: Mark Moraes <moraes@computer.org>
Date:   Sat Feb 22 01:27:08 2020 -0500

    looks like all homebrew invocations need the update first, till
    https://github.com/travis-ci/packer-templates-mac/pull/13
    makes it to production.
    
    simplified getconf logic to reduce chance it gets forgotten or copy/pasted.

commit 67b24b81c5dc6dd83064d174e8f9b79e6dd6c258
Author: Mark Moraes <moraes@computer.org>
Date:   Sat Feb 22 01:13:59 2020 -0500

    travis (well, yaml) does not like tabs, sigh

commit d95f12d65ea36386199c4322c8f842602fe24b3d
Author: Mark Moraes <moraes@computer.org>
Date:   Sat Feb 22 01:08:55 2020 -0500

    fix travis indentation for homebrew, added flag that Darwin needs

commit c27bb4b3b1055926376a1b63bfc5db21f3a7b21f
Author: Mark Moraes <moraes@computer.org>
Date:   Sat Feb 22 00:52:52 2020 -0500

    4.17.2.6 doc cleanup, removed email addresses in favor of github
    
    more travis cleanup, re-tested on alpine, fedora, gentoo, openindiana, *BSD
    rearranged test builds a bit
    
    Makefile quiet zip chatter
    
    OpenIndiana/Solaris compiler does not like promotion from
    void* to pointer-to-function, so added some typedefs and
    *NULLPROC definitions to quiet it down in commands.tab,
    disp.*, screen.*, setmaps
    
    ttystate.h simplified an ancient SUNOS4* ifdef

commit 93b835ea412fd100c98e82765aa728a1dd6bb73b
Author: Mark Moraes <moraes@computer.org>
Date:   Fri Feb 21 19:31:05 2020 -0500

    odd "Error: Unknown command: bundle" error from homebrew,
    trying workaround proposed in
    https://travis-ci.community/t/macos-build-fails-because-of-homebrew-bundle-unknown-command/7296/13

commit 9524fec978b38167b252c2dd7973a56ac422431f
Author: Mark Moraes <moraes@computer.org>
Date:   Fri Feb 21 17:30:55 2020 -0500

    still fixing .travis.yml!

commit 335f3e2e02efcfb778752e0b3c12c108a78f069d
Author: Mark Moraes <moraes@computer.org>
Date:   Fri Feb 21 17:12:35 2020 -0500

    .travis.yml fix mktemp portability quirk for old xcode, specify apts for jobs.include linuxes

commit d5df0cf29d58f17cfa65290444077c74ff3b0792
Author: Mark Moraes <moraes@computer.org>
Date:   Fri Feb 21 16:44:46 2020 -0500

    forgot to change one Makefile name

commit 502392783dcde9f9ade4c87d8722eb9516515956
Author: Mark Moraes <moraes@computer.org>
Date:   Fri Feb 21 16:40:20 2020 -0500

    Makefile: fix install dependencies so that -j works correctly.
    
    .travis.yml: try real gcc on osx, plus newer and older linux/osx images.
    
    Makefile.wat, sysdep.h and README.dos: describe medium vs large
    executables

commit 00f751a50ab23c565a860d56e0702fcc4a2b6b4d
Author: Mark Moraes <moraes@computer.org>
Date:   Fri Feb 21 00:53:06 2020 -0500

    4.17.2.5: Use long for buffer-position line calculation, so
    can show more than 32K lines correctly on OWCDOS.  This is a
    small localized change, and does not resolve the bigger
    issue that Jove uses int for line number calculations, which
    goes wrong in OWCDOS, which uses 16bit ints, so after 32K
    lines, number-lines-in-window starts showing negative line
    numbers.  Fixing that, and goto-line (or arg-count) is a
    more extensive patch, debatable whether it is worth the
    change (large files are rare anyway, particularly on DOS,
    and does JOVE have enough usage on DOS to make this worth
    it?).  With medium model, Jove can handle about 48K lines
    (around a 2.1MB file), and is pretty slow at that point.
    With large model, it handles only 31K lines (about a 1.4MB
    file), because we give more data space to the Jove buffer
    cache for increased speed.
    
    default UNIX to USE_GETWD if nothing else defined.

commit 7ec53195363f98499340502a1b8a94add264a293
Author: Mark Moraes <moraes@computer.org>
Date:   Fri Feb 21 00:51:38 2020 -0500

    per Hugh comment, Changed WATCOMC define OWCDOS so it is
    clearer that it is our symbol and only for DOS, not a
    compiler pre-def.

commit 7a73b8d45fe6836ef0e273bf3e8979f848fc1cff
Author: Mark Moraes <moraes@computer.org>
Date:   Fri Feb 21 00:13:00 2020 -0500

    added note about memory models to Makefile.wat
    
    use FAR_LINES for all models in sysdep.h even if SMALL is not defined.

commit f6a63db7f0dc1bfacb8cd593082afd17c0f2dd3f
Author: Mark Moraes <moraes@computer.org>
Date:   Fri Feb 21 00:06:17 2020 -0500

    fix Hugh comment re: SunOS, so this will complain on SunOS4
    (who runs it now?!), and automatically add -DGRANTPT_BUG on
    SunOS5.0 (who ran it for more than a few minutes after
    SunOS5.1 came out?! Yes, I remember both SunOS4.0 nd 5.0
    quite well, I still get nightmares about them...!)
    
    Add comment re: /usr/gnu/bin/install for modern Solaris/OpenIndiana

commit 8769d7664ae167645ba0dd6a666924879cd79b00
Author: Mark Moraes <moraes@computer.org>
Date:   Wed Feb 19 20:58:34 2020 -0500

    body on next line of if, per Hugh

commit 6791a128dbc329b7f00b92890c445d4fa6f32593
Author: Mark Moraes <moraes@computer.org>
Date:   Tue Feb 18 23:16:57 2020 -0500

    4.17.2.4 removed tags from all target, only needed for distrib and
    jovedoss.zip

commit 02ca8173d987be68fababc748a33b721e35bcf60
Author: Mark Moraes <moraes@computer.org>
Date:   Tue Feb 18 00:35:17 2020 -0500

    make travis now works on OpenIndiana (which really needs REALSTDC to work)

commit f3c70d3c43dc91d5f1558473b72c53f8cfd087ba
Author: Mark Moraes <moraes@computer.org>
Date:   Tue Feb 18 00:16:04 2020 -0500

    further travis script fix (trying to see if 'make travis' works on
    platforms other than those available on travis-ci to make my
    virtualbox/docker testing easier

commit 7058d46080e60cfcacd8ae4f3d53f1e4d0b9dd33
Author: Mark Moraes <moraes@computer.org>
Date:   Tue Feb 18 00:13:13 2020 -0500

    further travis tweaks

commit 9ffbacd3e03e95e4850ab8fa0237ab24c830d593
Author: Mark Moraes <moraes@computer.org>
Date:   Mon Feb 17 22:28:17 2020 -0500

    another travis tweak

commit 8f2d6dc0d2d3af17d7b5498e661564a670fa55be
Author: Mark Moraes <moraes@computer.org>
Date:   Mon Feb 17 22:06:36 2020 -0500

    have to turn set -u back on, since travis post-script functions break, sigh

commit 6a45834003d06f9a7e30f5f196ea4733028ef011
Author: Mark Moraes <moraes@computer.org>
Date:   Mon Feb 17 21:44:48 2020 -0500

    4.17.2.3 fix -DSMALL daddr/s_id ugliness, plus minor tweaks
    exposed by some of the new travis variants.
    
    travis: no need to use gcc+clang (they are the same thing on
    OS X by default, so rely on OSX for clang coverage, and
    Linux for gcc coverage, reduces build matrix)
    
    test some variants only on Linux for coverage (GLIBCPTY
    which mimics CYGWIN, and BSDPOSIX)
    
    Added 'make travis' target to try the travis script on local machine.

commit 5b998c89d148fe1282dd7372eaeb78310b03702b
Author: Mark Moraes <moraes@computer.org>
Date:   Mon Feb 17 12:56:51 2020 -0500

    added .version, *.zip and some patterns for typical debris to .gitignore
    
    updated Makefile with 'make depend'
    
    updated .travis.yml to build a couple more variants, made it multiline so
    easier to read
    
    check Makefile works right without cmp

commit f57a5d8da644abe1fab04a9a08a29268f257a435
Author: Mark Moraes <moraes@computer.org>
Date:   Mon Feb 17 02:07:00 2020 -0500

    added ctags dependency to .travis.yml

commit 18366d49bada3cc242928eef22267188df78ffc0
Author: Mark Moraes <moraes@computer.org>
Date:   Mon Feb 17 02:00:59 2020 -0500

    4.17.2.2 builds on dosbox with Open Watcom 1.9.0
    
    OW is fussy about char declarations for old-style function params,
    switched those to DAPchar (only a handful, gcc seems ok with this)
    
    ifdef out environ declaration (conflict with type) and exec*
    (usual confusion with consts not matching our interpretation of POSIX)
    
    Much fiddling with Makefile and Makefile.wat and Makefile.msc.
    
    Moved sysdepo.h to old/sysdep.h and Makefile.{bcc,zor} to old/
    renamed paragraph.[ch] to para.[ch] to get rid of 8.3 hackery
    
    Made WIN32=1 default for Makefile.msc (it does not build for DOS,
    and I don't have the energy to figure out if that's even possible,
    it blows a type size assertion in the Windows headers.
    
    Updated README.dos to reflect current state.
    
    Cleaner X_OK hackery (define J_X_OK rather than redefining X_OK)
    
    Keep tags for PC jovedoss.zip, helpful when looking at src there
    (reduces need for distribs to have ctags).  tags cleanup moved
    to clobber target.

commit 72a05b6423a59651635e4b9e1669a29af457bc52
Author: Mark Moraes <moraes@computer.org>
Date:   Sun Feb 16 18:10:47 2020 -0500

    4.17.2.1 addition: switched default Makefile OPTFLAGS back
    to -O so this does not blow up on non-gcc/clang platforms
    
    avoid fc31 gcc complaint re: ambiguous else.
    
    update jove.rc.in to avoid colors in i-shell busybox (e.g. alpine)

commit 7eb35f8dda8af2dd0fafccfde7f8dded9fe767d1
Author: Mark Moraes <moraes@computer.org>
Date:   Sun Feb 16 18:01:16 2020 -0500

    4.17.2.1 now works on openindiana (solaris) hipster x86_64
    2019.11 (tested on the console in virtualbox)
    
        define NULL to 0 to avoid OpenIndiana (and likely other
        Solaris) complaints from initializing with their own
        NULL which is defined to (void *)0.
    
        cleanup of child iproc debug
    
        improve the logic for dup and close of slvptyfd
    
        I was clearly over-enthusiastic about CLOEXECs, since
        dup2 (on Solaris) copies the flag (Linux seems not to?)
        so I undid some that seem wrong in hindsight.
    
        important for OpenIndiana (likely many Solaris or SunOS5
        or SYSVR4): ioctl TIOCSCTTY fails with ENOTTY, so cannot
        exit the child on that error, have to ignore it (this
        check was added 4.16.0.31, used to 'correctly' ignore
        that error return before .31, sigh! It's 2020 and ptys
        are still a portability nightmare)

commit ff064e0dbad9a00c59e3e83c01747234b9423752
Author: Mark Moraes <moraes@computer.org>
Date:   Thu Feb 13 14:46:33 2020 -0500

    4.17.2.0: found and fixed the causes of shell-command
    crashes on WIN32; one is that access(file, X_OK) with X_OK
    == 1 (the traditional/historical value) crashes.  Set X_OK
    to F_OK for MS platforms.  After that, the close/dup
    sequence to restore fds crashes (no idea why, just switched
    them to dup2 and it worked), switched spawnv to spawnve
    while I was at it so proc-env vars get passed through.

commit cc795b7c76b01b4fc7759c87eb050f00a9151af2
Author: Mark Moraes <moraes@computer.org>
Date:   Thu Feb 13 14:42:13 2020 -0500

    remove old files before redirecting onto them so that CYGWIN
    bug on vbox shared folders does not bite.

commit cbcb072c900e7efd22e52fd2ed88130ac75ec679
Author: Mark Moraes <moraes@computer.org>
Date:   Wed Feb 12 23:25:11 2020 -0500

    4.17.1.11: to catch .gitattributes (deleted pre-release 4.17.1.10)

commit 6d3d348a53bad852c81acb7458b5cdf5c7652a08
Author: Mark Moraes <moraes@computer.org>
Date:   Wed Feb 12 23:21:32 2020 -0500

    added .gitattibutes to exclude stuff from the github tarball

commit 60a9cff1fb98c460fae513fdca96dbcd42e34eb7
Author: Mark Moraes <moraes@computer.org>
Date:   Wed Feb 12 22:42:19 2020 -0500

    4.17.1.10 Removed afxres.h and resource.h and references to
    them from jjove.rc, they do not seem to be needed by Visual
    Studio 2019.  MSVC also complains about exec* prototypes,
    like the comment said for Zortech and Borland, added
    _MSC_VER to that ifdef.  Now builds cleanly on WIN32, but
    still crashes on subshell (push-shell works)
    
    Fixed weird and severe problem with Cygwin and VirtualBox
    saving files:  open(...O_TRUNC) does *not* truncate a file
    that is on a VirtualBox shared folder (which is where I
    build jove src), so saving a file after deleting a few
    chars/lines results in old debris since it still stays the
    original size.  open(O_TRUNC) works as expected on local
    disk.  Windows open(O_TRUNC) works fine on both local disk
    and file in vbox shared folder.  ftruncate works on both
    too, so added a redundant ftruncate after open(O_TRUNC) with
    an O_TRUNC_BROKEN manifest. (I have a test program to
    reproduce, will file a Cygwin bug report, not clear if this
    affects all network folders or just vbox, I suspect the
    latter else others would have noticed)
    
    Hit an infinite busy wait on pty a couple of times (EIO on
    IO_NEW pty ad nauseum in jdbg output), seems bad to have
    that risk (which the comment points out), added the pty
    creation time to the struct process, and eof after a few seconds.

commit 301d3978f6b62de2c4f3885ba6763fc4d5b7f47b
Author: Mark Moraes <moraes@computer.org>
Date:   Tue Feb 11 09:31:16 2020 -0500

    added check that my new spell-command-format only contains
    one %s and no other % specifiers, so user error will not
    trash memory or crash jove.

commit 9bef4a1b44ea03f286b276cb9f87355d128822cd
Author: Mark Moraes <moraes@computer.org>
Date:   Mon Feb 10 22:03:18 2020 -0500

    4.17.1.9 move aspell to FreeBSD, since NetBSD and OpenBSD have spell.
    Also enable aspell for CYGWIN.

commit 8aa57e59b52ac5705dd96205b46537801b3db534
Author: Mark Moraes <moraes@computer.org>
Date:   Mon Feb 10 21:44:42 2020 -0500

    *BSD also has aspell, added to XBSD definition

commit 6ed0fbdb7b2da2680ab0b8e41c14798373bf3b8e
Author: Mark Moraes <moraes@computer.org>
Date:   Mon Feb 10 21:32:58 2020 -0500

    4.17.1.8: move various doc/jove.rc defauls (process-prompt,
    allow-^S-and-^Q, mode-line, disable-biff, pause-jove binding
    to ^[s ) to the code, they've been in doc/jove.rc for so
    long they can now be considered official, it reduces the
    number of weird differences when one just starts up the
    binary without SHAREDIR installed or for test.
    
    also leave allow-^S-and-^Q on for vt100.  I refuse to
    believe any such real terminals are operational and used for
    Jove, but far more terminal emulators (e.g. NetBSD console!)
    claim to be vt100.
    
    update ModeFmt and MAX_TYPEOUT to new MAXCOLS to support the
    sort of wide-terminal that I suspect most of us now use.  I
    think jove can afford the couple of hundred extra bytes
    (and when ported back to the PDP-11, MAXCOLS can be set lower,
    we can accept that fix when it is tested)

commit 3bd5eafa75b6407a8930116b705392919d2c9a96
Author: Mark Moraes <moraes@computer.org>
Date:   Mon Feb 10 21:12:54 2020 -0500

    Created spell-command-format variable, define it as aspell
    on Linux and *BSD, switch the SPELL manifest to the default
    value, documented.  Seems to work.  AFAIK, the old spell
    compatibility wrapper hasn't been shipped on most modern
    platforms.  (Admittedly, it's been a very long time since I
    used spell to check my thesis, but felt bad it wasn't
    working when I tried it)

commit e8d6b5690ff603d1c0b2efa6a7b88019ede38f2f
Author: Mark Moraes <moraes@computer.org>
Date:   Mon Feb 10 21:09:05 2020 -0500

    address-sanitize reported another overlapping strcpy, seems
    safest to make jamstrsub work for overlapping copies
    by calling memmove (it already has the string size),
    used byte_move() macro for portability and got rid of
    the ifdef around memmove in disp.c by making that a
    byte_move as well.  Left mac.c alone, that already has
    memcpy and probably isn't going to ever be compiled
    again (please feel free to prove me wrong)
    
    	#1 0x42cc7d in strcpy /usr/include/x86_64-linux-gnu/bits/string3.h:110
    	#2 0x42cc7d in jamstrsub /home/moraes/src/jove/github-jonmacs/jove/util.c:698
    	#3 0x44ca1f in setsearch /home/moraes/src/jove/github-jonmacs/jove/reapp.c:45
    	#4 0x44ca7d in search /home/moraes/src/jove/github-jonmacs/jove/reapp.c:64
    	#5 0x44ea6b in ForSearch /home/moraes/src/jove/github-jonmacs/jove/reapp.c:82

commit 314dc659b3db18d1ae8a332d576e1bb96010b3e1
Author: Mark Moraes <moraes@computer.org>
Date:   Mon Feb 10 21:02:43 2020 -0500

    Fix memory leak in recover.c reported by leak-sanitizer

commit db8e23cdcafa29f022f035f61008a0ce3030f110
Author: Mark Moraes <moraes@computer.org>
Date:   Mon Feb 10 20:56:50 2020 -0500

    Only remove formatted docs, generated jove.spec and jove.rc
    to on clobber, not clean.  That ensures that a tree sent via
    distrib to a PC/Windows won't result in missing docs when
    one does 'make clean'.  Fixed mis-documentation re: PORTSRVINST.

commit 4624e456a187afe169824704ec34e4d20bb70ac8
Author: Mark Moraes <moraes@computer.org>
Date:   Mon Feb 10 20:54:22 2020 -0500

    setting DEBUGCRASH had the unfortunate side-effect of
    causing ^] to exit jove immediately (SIGINT), and I hit that
    sometimes when going for ^\ (since I grew up on a terminal
    where ^S was XON!)  Since the main reason for DEBUGCRASH is
    to catch SEGV, BUS, etc, seems like HUP, INT, TERM should
    always be honored, moved those outside the ifdef.

commit 045b93977330a93513dd483d2b56f63ed8e9b257
Author: Mark Moraes <moraes@computer.org>
Date:   Sun Feb 9 12:50:30 2020 -0500

    4.17.1.7: removed redundant ifdef in proc.c since no real in
    the signal handling code for vfork and fork anymore (who
    knows if it's correct anyway), moved comment to vfork invocation.
    Ensure that environ is not changed in child (which might/will affect
    parent in the vfork case). Tested USE_VFORK briefly with Linux,
    seems to work for minimal testing.
    
    Added define for FreeBSD and OpenBSD in sysdep.h to save
    typing build flags, juse use
    	make SYSDEFS=$(uname)
    
    Moved all historical definitions that are not currently
    tested to sysdepo.h (not included or used anywhere)
    
    Updated notes in Makefile, sysdep.doc, sysdep.h

commit 8ed270b1e3125ab87bc0dc63f660d3e73bef1a1e
Author: Mark Moraes <moraes@computer.org>
Date:   Fri Feb 7 19:33:59 2020 -0500

    4.17.1.6 add TIOCGPTPEER for newer Linux (e.g. Alpine 3.9.4) which does
    not correctly set up pty (or ends up with wrong/bogus slvptyfd) without it!

commit 8f28956f7eb6f4041471f215d0967a90d0d0e3ea
Author: Mark Moraes <moraes@computer.org>
Date:   Thu Feb 6 09:12:04 2020 -0500

    4.17.1.5: cleanup of portsrv so that
    echo ls | ./portsrv.exe /bin/sh sh -is
    and
    echo ls | ./portsrv.exe kbd
    seem to work rather than hang.  pipeprocs still does not fully work on
    cygwin (neither does ptyprocs, TBD)
    
    tweaks to test pipeprocs on linux and *bsd as well, as a fallback option
    if (when?!) ptys fail, or just to keep an eye on portability to ancient
    systems.
    
    added a long-needed (IMHO) optional debug trace to jove in fmt.h,
    the jdprintf function and jdbg macro.  JOVEDEBUG environment variable
    as a filename activates the debug logging -- at the moment, produces
    a trace of twisty little maze of ifdefs for pty/iproc handling
    (a mind-boggling portability horror show), which finally uncovered
    for me that NetBSD (7.2, 8.1 at least) TIOCREMOTE does not work as Jove
    expects (can I just say broken!), unlike other BSD siblings.
    Added NETBSD define to sysdep.h with the helpful NO_TIOCREMOTE, thanks
    to whichever kind soul (Hugh?) documented the breakage so clearly in
    iproc.c.
    
    Added CLOEXEC (attempt at robustness for modern systems after fork),
    has portabiity #define that should work on ancient ones.
    
    Use slvptyfd returned by openpty, seems better than relying on opening
    the ttyname, though the latter did seem to work fine in *BSD. Maybe this
    will help cygwin or netbsd, not sure.
    
    Clarify 'Out of ptys' message so it will be easier to tell which branch
    of code is failing.
    
    separated currently tested SYSDEFS from uh, historical artifacts in Makefile
    
    update .gitignore with generated formatted docs

commit 98e7cba8e312fc7f40a3edcb0342e8d58b56e745
Author: Mark Moraes <moraes@computer.org>
Date:   Sun Feb 2 01:25:44 2020 -0500

    4.17.1.4 Makefile.msc clean works, WIN32 has own getcwd. builds on
    MSVC 2019 Community Edition, but shell-command still crashes.
    
    PIPEPROCS compiles on Cygwin but crashes jove on startup.
    PTYPROCS compiles on Cygwin but hangs in openpty, sigh.

commit 35905957a4d1763037ff014e32a014dee2017926
Author: Mark Moraes <moraes@computer.org>
Date:   Sat Feb 1 23:59:37 2020 -0500

    4.17.1.3 fix typo in sysdep.h XBSD for Darwin Mac OS X
    move popd ahead in doc/jove.rc.in
    build doc/jove.rc for all

commit 0b9729e6bdbd9983c16e04fd1782f84f05084041
Author: Mark Moraes <moraes@computer.org>
Date:   Sat Feb 1 23:17:36 2020 -0500

    4.17.1.2: rename README.c32 to README.cyg and update for latest Cygwin
    (generally works on both CYGWIN64 and CYGWIN32), update README*.
    
    Move DispDefFs outside F_COMPLETION ifdef to match vars.tab, -DBAREBONES
    now compiles
    
    make extern declaration of getcwd unconditional, should be safe, and
    removes a complaint when building -DBAREBONES
    
    fix portsrv to detach from controlling terminal, so it works
    on Linux (for testing PIPEPROCS; the machines that one
    needed portsrv for presumably never had job control or
    controlling terminals?)
    
    added a matching RECOVER ifdef in jove.c to get rid of another
    complaint when -DBAREBONES
    
    ifdef to protect WIFSTOPPED in sysprocs.h, avoids complaints when
    -DBAREBONES
    
    remove jjoveico.uue and check in jjove.ico since git can handle binary
    files, unlike RCS, simplified Makefile to not need uudecode.
    
    Save formatted docs in distrib

commit c404593b9eb6c1323e3f11296483e29310c524ab
Author: Mark Moraes <moraes@computer.org>
Date:   Thu Jan 30 15:08:54 2020 -0500

    4.7.1.1 tested on Cygwin 3.1.2, updated docs.

commit 42a4eb3489e4c99b32d1cc97883243a3e97c6b86
Author: Mark Moraes <moraes@computer.org>
Date:   Thu Jan 30 14:38:27 2020 -0500

    4.7.1.0 changes to build on Windows with MSVC 10.x. builds and mostly works (attempt to run shell command crashes)
    
    rename min, max to jmin, jmax, ReadOnly to BReadOnly, and
    undef CR before including windows.h to avoid clashes with MS
    macros or field names, sigh!
    
    move back to putting jversion in version.h (simpler for DOS/Windows)
    remove attempt at using git describe
    
    remove all targets and doc mentions of zoo format since zip
    is now ubiquitous
    
    use wsprintf instead of sprintf in win32 (MSVC libc
    apparently no longer provides sprintf by default)

commit e409235d03eb1da27b9e93635d76338425c5a165
Author: Mark Moraes <moraes@computer.org>
Date:   Tue Jan 28 09:28:10 2020 -0500

    4.17.0.9: fix stropts for latest Fedora/Arch, /etc/jove/jove.rc
    
    Cord requested a per-host jove.rc (jove already had a jove.local
    in sharedir, but that could be system-wide). Moved doc/jove.rc to
    doc/jove.rc.in, substituted ETCDIR (which defaults to /etc/jove),
    updated rpm package.
    
    Tested rpm on latest Fedora Docker image I could find (FC31),
    and discovered that it (and latest ArchLinux docker image) don't have
    stropts.h and do not define _XOPEN_STREAMS so added an if defined()
    check, now builds clean.
    
    Makefile fix to handle the situation of building in a brand new
    docker (i.e. no ~/rpmbuild directory to copy src into until one
    runs rpmbuild, chicken-v-egg) While  at it, prefixed the
    DESTDIR variants of (SHARE|LIB|BIN|...)DIR with D to detect
    avoid mistakes from using old command lines.
    
    rpm built and installed and worked in Fedora FC31 smoothly.
    I'll see if I have the energy/patience to produce a PKGBUILD
    for Arch pacman...

commit 8d22ba1d8e1b0d8a7b915b8de271f71512af9e99
Author: Mark Moraes <moraes@computer.org>
Date:   Mon Jan 27 13:19:26 2020 -0500

    4.17.0.8 fix a small irritation - if one runs (with
    compile-it or shell-command) a script that one is editing,
    jove wants to overwrite the scrpt source (it prompts, but
    only offers the option to overwrite the src buffer).  So put
    asterisks around names of process-output buffers, to match
    *minibuf* and *shell* to reduce the chance of a collision

commit 440b451af0b71cce78dcd7e6090749199b647229
Author: Mark Moraes <moraes@computer.org>
Date:   Mon Jan 27 13:18:09 2020 -0500

    4.17.0.7 typo in TMPDIR when renaming, so empty string in paths.h, fixed.

commit 88aacef72465a2ea78282336f9a4a87505ee0829
Author: Mark Moraes <moraes@computer.org>
Date:   Sat Jan 25 22:04:02 2020 -0500

    travis homebrew update seems to take a long time, try without it

commit b5b09391d96b50afe227ab72602126c82bb61569
Author: Mark Moraes <moraes@computer.org>
Date:   Sat Jan 25 22:00:23 2020 -0500

    need groff for some travis environments

commit 586ead6202ef045ebcf00cf18e6505b7ae700dd1
Author: Mark Moraes <moraes@computer.org>
Date:   Sat Jan 25 21:57:47 2020 -0500

    fixing travis script

commit a24407f72cb94e8d1aa317927d645b0ce80517f9
Author: Mark Moraes <moraes@computer.org>
Date:   Sat Jan 25 21:39:59 2020 -0500

    added .travis.yml to try some continuous-integration test builds.

commit 99665b8e7fbdaded198efb5fbb40258a6eb670c1
Author: Mark Moraes <moraes@computer.org>
Date:   Sat Jan 25 18:57:41 2020 -0500

    4.17.0.6: can now use
    	make rpm
    to build an rpm package, tested on CentOS7.4 (other Fedora or
    RedHat testing needed)

commit 33f1658f55419833bd56a49d44cea30a8a4fa8cb
Author: Mark Moraes <moraes@computer.org>
Date:   Sat Jan 25 16:34:45 2020 -0500

    4.17.0.5 fix version code to not duplicate version if that is the git tag

commit b55bde96f77fc95a976fd9f7c00cbe2f4d31a374
Author: Mark Moraes <moraes@computer.org>
Date:   Sat Jan 25 15:53:44 2020 -0500

    added jtc.c to C_SRC in Makefile

commit e194676383e3e9fde8b2c457643239caa710833f
Author: Mark Moraes <moraes@computer.org>
Date:   Fri Jan 24 22:34:06 2020 -0500

    4.17.0.4: fixed -Wformat-overflow in teachjove.c, made exit
    status positive numbers, errors to stderr.

commit de380c334a3348f72427d874af12d7a844ddcf30
Author: Mark Moraes <moraes@computer.org>
Date:   Fri Jan 24 21:53:05 2020 -0500

    4.17.0.3: use -Wall -pedantic in default OPTFLAGS (clang and
    gcc support it; time to recognize that those are the
    dominant two compilers)
    
    Added LOCALEXTRALIBS variable and use it for setmaps
    (so I could specify EXTRALIBS=-lasan -lubsan and test with
    -fsanitize=address -fsanitize=memory)
    
    Added XEXT to setmaps for consistency (how did this ever work
    on DOS -- did we just ship keys.c?)
    
    typo in sysdep.h.  (Note that -DXBSD probably covers all
    modern *BSD and Darwin, and -DXLINUX should probably cover
    all modern Linux, no need for the longer -DSYSVR...)
    
    fix sprintf buffer sizes so gcc 8.3 -Wall -pedantic
    (actually -Wformat-overflow) stops complaining (now builds
    on alpine with musl with clang 5 and gcc 8.3; also tested
    with clang 8 on CentOS7, and gcc 5 on Ubuntu 16.04)
    
    include errno.h (and optionally, stdio.h) in jove.h, to
    solve an include ordering fiasco in recover and setmaps,
    need tune.h to come first, so sysdep.h can specify _XOPEN_*
    or other features, before including any system includes.
    
    Adopt many of Cord's proposed changes from Debian package:
    DESTDIR prefix for all paths
    xjove/jovetool manuals not installed by default
    create and set permissions on missing *DIR install dirs
    switch to /var/tmp, it is not removed on reboot by FHS convention
    so recover -syscrash is not really needed.
    switch to groff options by default, who remembers ditroff!
    typo in doc/jove.nr

commit 06e2a1d91a60d7cb7fcaa5889f7fe04d3545a486
Author: Mark Moraes <moraes@computer.org>
Date:   Fri Jan 24 10:51:40 2020 -0500

    4.17.0.2 Back out of the reset-tabs sequence in jtc, does not work well
    on xterm and st (and konsole, per Paul Vixie)
    
    Fix all -Wall -pedantic complaints from gcc 5.5.0 (Ubuntu 16.04)
    	declare dummy var in jtc so no complaints re: empty translation unit
    
    	remove unused env_malloced variable from util.c
    	(probably leftover, the real flag is in the Env struct)
    
    	check setuid return in recover.c
    
    	avoid sprintf in setmaps.c for trivial character formatting
    	(still need to avoid sprintf in recover.c and teachjove.c,
    	per clang complaints reported by Paul Vixie)

Author: Mark Moraes <moraes@computer.org>
Date:   Thu Jan 23 23:01:00 2020 -0500

    4.17.0.1: Cursory update for README, tweaked XBSD and XLINUX in sysdep.h

commit aecc4dc618e68a39d9e53da0e68cb1dd15a3170a
Author: Mark Moraes <moraes@computer.org>
Date:   Wed Jan 22 21:16:34 2020 -0500

    4.17.0.0 candidate
    
    Some automatic version generation machinery in Makefile,
    uses git --describe.  Remove version.h, only place version
    is specified is now Makefile, which generates jove.spec from
    jspec.in, and puts jversion and jversion_lnum in paths.h,
    which was already auto-generated, and can be used by
    jjove.rc instead of version.h
    
    Added LICENSE for general conformance/convenience (same as
    boilerplate header for src) and moved version.h history
    to ChangeLog, also more conventional
    
    Updated jove.spec to github
    
    make clean removes the xjove/.filelist and distrib created by make distrib
    
    Removed bogus reference and docs for non-existent IPROC_TERM
    
    jtc.c resets tabs on VTALT, avoids nastiness of some kinds if terminal
    gets borked (Jove really likes using phystab of 8)
    
    Updated .gitignore

5Acommit 41c658c11eedfbf2fc09f6559c03215f1e60aa98
Author: Mark Moraes <moraes@computer.org>
Date:   Thu Jan 23 22:25:51 2020 -0500

    Updated jove.spec to github
    Clean removes the xjove/.filelist and distrib created by make distrib
    Removed bogus reference and docs for non-existent IPROC_TERM
    jtc.c resets tabs on VTALT, avoids nastiness of some kinds if terminal
    gets borked (Jove really likes using phystab of 8)

commit 6d62c645b543bf2b7aebd85c62d001fa3dfba077
Author: Mark Moraes <moraes@computer.org>
Date:   Wed Jan 22 21:16:34 2020 -0500

    Some automatic version generation machinery in Makefile,
    uses git --describe.  Remove version.h, only place version
    is specified is now Makefile, which generates jove.spec from
    jspec.in, and puts jversion and jversion_lnum in paths.h,
    which was already auto-generated, and can be used by
    jjove.rc instead of version.h
    
    Added LICENSE for general conformance/convenience (same as
    boilerplate header for src) and moved version.h history
    to ChangeLog, also more conventional

commit 586003424679800d75e78b534ef2bbcb61a705bd
Author: Mark Moraes <moraes@computer.org>
Date:   Wed Jan 22 08:32:26 2020 -0500

    ensure tune.h is first (move setjmp.h later) in jove.h
    (which is first everywhere else) so that system header
    features don't get defined, so we can now set
    _XOPEN_SOURCE or other features in sysdep.h or tune.h
    
    add XBSD and XLINUX to sysdep.h, for convenience on the two
    most common platforms around today (Darwin and Linux)

commit 1c6e9a713069e190701307e661d464eb67d1d983
Author: Mark Moraes <moraes@computer.org>
Date:   Thu Jan 16 17:38:22 2020 -0500

    tparm argument order seems wrong, needs to be l, c,
    since the definition for cm is %p1%d;%p2%d. tgoto is
    opposite and is c, l, presumably historical weirdness.

commit 1de95ea776dd242f5d3acab8a0395388b609350c
Author: Mark Moraes <moraes@computer.org>
Date:   Thu Jan 16 17:36:28 2020 -0500

    UNIX may as well have MALLOC_CACHE set to 1, reduces
    apparent bss size.

commit 5fbadda38f3b85ce71fb1acbc0c877d27e90d2a6
Author: Mark Moraes <moraes@computer.org>
Date:   Thu Jan 16 17:16:50 2020 -0500

    fix delay code and add flushscreen for vb to avoid
    calling SitFor

commit 996592ed7947c985538a187bdba75ab6c19d443e
Author: Mark Moraes <moraes@computer.org>
Date:   Mon Jan 13 14:46:12 2020 -0500

    switch from putpad to putstr since it is putting
    explicit escape sequences with no use of tputs syntax.

commit 91eec94450bcb591ec88de8b4d1d857386debd6b
Author: Mark Moraes <moraes@computer.org>
Date:   Sun Jan 12 12:45:08 2020 -0500

    vb contains padding delays like $<100/> on most modern
    terminals (vt220, xterm) between the switch to reverse
    video and back, so it needs to be output by putpad (i.e.
    tputs), not putstr. On gnome-terminal (Ubuntu 16.04),
    set visible-bell on and hit ^G, and jove will produce
    $<100/> on the screen rather than a visual bell flash.

commit 972f056a2ddc0d523c12fa2f3b9b585046476ac9
Author: Mark Moraes <moraes@computer.org>
Date:   Sun Jan 12 12:41:30 2020 -0500

    Increase MAXCOLS from 256 to 512 (I get 300+ column
    maximized xterms on my new 4K monitor)

commit 0ed38a00d06e4fb643bdfbcda9b963b291ac4f92
Author: Mark Moraes <moraes@computer.org>
Date:   Sat Jan 11 00:21:24 2020 -0500

    added jtc, which provides all the termcap/terminfo
    functionality that Jove needs but is limited to ANSI
    X.3/VT[1-5]xx/xterm/rxvt/... (does anyone run anything
    else now) This avoids the small annoyance of the
    termcap/terminfo/curses/ncurses/ncursesw external dependency.

commit 2fa2236ea50b22abc63e64b7532e0cc7e82db8a1
Author: Mark Moraes <moraes@computer.org>
Date:   Sat Jan 4 22:55:04 2020 -0500

    increase size of tspace, xterm pretty close to edge, and
    some terms are over.

commit e8390bd82e0305174c53e924a3de99193ff2e04f
Author: Mark Moraes <moraes@computer.org>
Date:   Sat Jan 4 14:11:52 2020 -0500

    correct TERM from emacs to dumb in README and mention
    {,i}proc-env* mention ncursesw and Alpine/docker note
    Changed jovehacks to jovedev email

commit 3934215398c6cead35d23bc181adf13934bd0886
Author: Mark Moraes <moraes@computer.org>
Date:   Wed Nov 18 14:31:30 2015 -0500

    added proc-env-{export,show,unset} to match iproc.
    changed jenvinit to more meaningful jenvdata. Fixed
    Makefile to use LANG=C for nroff etc so that it does not
    try smart hyphens (which break jove search)

commit 88fb4b035946c6c3f141b532181801378e17baa9
Author: Mark Moraes <moraes@computer.org>
Date:   Wed Nov 18 02:37:28 2015 -0500

    added iproc-env-{export,show,unset} commands to allow
    setting or unsetting env vars before interactive
    processes are started. Moved most code from
    set_process_env() to doc/jove.rc and added a few from
    jovedev email thread.

commit f5a5f9122946e9bddd803a7178bfba6b0883e9f4
Author: Mark Moraes <moraes@computer.org>
Date:   Wed Nov 18 00:08:47 2015 -0500

    Moved j{put,unsetenv}env from iproc.c to util.c, made
    them externally visible, declared in util.h, generalized
    them to take a ptr to an Env struct instead of modifying
    global state, keep one of those Env structs as iproc_env
    in iproc.c (preparatory to maintaining a separate one
    for proc.c)

commit dbd3fe96fad7f3e3b77f763949b725e6930cdd5b
Author: Paul Vixie <vixie@fsi.io>
Date:   Sat Mar 2 06:38:36 2019 +0000

    patch from github jonmacs/jove strcpy branch
	commit 2a6b24db99aa78351335583e133d1a970eeff583
	very light strcpy audit, mostly to fix casey leedom report
    [the strcpy in proc.c:344 is also reported by valgrind
    ==27906== Source and destination overlap in strcpy(0x63e540, 0x63e540)
    MakeName (proc.c:344)
    ShellCom (proc.c:490)
    ExecCmd (commands.c:164)
    dispatch (keymaps.c:926)
    DoKeys (jove.c:1465)
    main (jove.c:1777) - moraes]

commit 7f9e5d2b59ebfff8e4bfd5bb9b187c53465ba6c6
Author: paul vixie <paul@redbarn.org>
Date:   Sat Mar 9 12:48:51 2019 -0800

    use "do {}" rather than "do ;", for -pedantic (#5)

commit e2d5e98fbf0b2d303f1f1cb7383e25ccc3ca990b
Author: Mark Moraes <moraes@cs.toronto.edu>
Date:   Sun Mar 10 23:25:45 2019 -0400

    4.16.0.74:
    experimental release by Hugh on 2015-10-21 16:38
    ftp.cs.toronto.edu:/pub/hugh/jove-dev/experimental/jove4.16.0.74.tgz
    tarball sha256sum 168084a021c38058d01e2de30d22b198836b12077647bd1e98dc8a9be416dbbf
    
    unfortunately same version in version.h
    further cleanup on fill (new_kill function for common code)
    Note about OpenSuSE TERMCAPLIB

commit b8cb69213ee0c4f3200a203eda7aec39cfa4004f
Author: Mark Moraes <moraes@cs.toronto.edu>
Date:   Sun Mar 10 23:25:08 2019 -0400

    4.16.0.74-old1:
    experimental release by Hugh on 2015-10-15 14:30 (email Oct 15, 2015 at 7:19 PM)
    ftp.cs.toronto.edu:/pub/hugh/jove-dev/experimental/jove4.16.0.74-old1.tgz
    tarball sha256sum ca679b63c38b424eed3e16d3a2ab40e4463c70bbc16e83164ae4ad692de26da3
    
    Changes:
    - minor portability improvements
    - new jove.spec for Fedora and EPEL
    - fill-comment now handles paragraphs
    - fill-region can be undone via yank-pop
    - support for xterm-256color (same as xterm

Revision 1.423  2010/07/11 15:29:31  hugh
4.16.0.73:
- added NROFF="nroff -Tascii" to Makefile and jove.spec to force groff to use ASCII
- spelling corrections [Cord Beermann]
- remove -lolgx from xjove link [Cord Beermann]
- improve recover's email Subject [Cord Beermann]

Revision 1.422  2010/05/25 03:39:54  hugh
4.16.0.72:
- eliminate strcpy and byte_copy calls with overlapping source and destination
- fix setmaps.c misuse of fprintf

Revision 1.421  2010/05/17 02:38:38  hugh
- add new variable display-default-filenames (Casey Leedom)
- eliminate most GCC warnings; improve handling of some errors
- allow for Linux/glibc elimination of I_PUSH (pseudo TTY STREAMS)
- improve jove.spec for Red Hat packaging
- delete obsolete command process-dbx-output
- delete obsolete variables allow-bad-filenames, display-bad-filenames, internal-tabstop
- add bindings for more xterm function key variants

Revision 1.420  2006/04/30 21:51:40  hugh
don't crash when filename completion list is wider than screen

Revision 1.419  2005/10/01 00:34:41  hugh
4.16.0.69: fix minor errors introduced in 4.16.0.67

Revision 1.418  2005/09/28 18:41:49  hugh
Work around an xterm / termcap / terminfo bug involving SR.

Revision 1.417  2005/05/14 20:29:03  hugh
Generalize tags code to handle bizarre the mutations of tagfile format.
Contributed by Mark Moraes; "improved" by DHR.

Revision 1.416  2005/05/14 17:46:43  hugh
rpmbuild now requires "License" tag in place of "Copyright" tag in .spec

Revision 1.415  2004/07/11 20:04:32  hugh
- dodge yet another xterm bug in hilite mode
- set default buffer size to 4kB (ups line length limit to same)
- tweak documentation

Revision 1.414  2004/02/01 19:27:03  hugh
- introduce sysdef BSDPOSIX_STDC
- update README

Revision 1.413  2003/05/05 01:37:05  hugh
refine modified flag in list-buffers output

Revision 1.412  2003/03/09 23:49:55  hugh
4.16.0.62: fix for WIN32; note tested environments [Jim Patterson]

Revision 1.411  2003/02/01 02:02:08  hugh
4.16.0.61: increase MESG_SIZE to support wider terminals

Revision 1.410  2003/01/31 22:15:33  hugh
4.16.0.60: fix screen update bug involving scrolling region
Surprise: cursor location undefined after setting scrolling region

Revision 1.409  2003/01/31 22:01:40  hugh
4.16.0.59: add "distrib" and "signeddistrib" Makefile targets
tar file will now unpack into jove<version> directory

Revision 1.408  2003/01/09 02:07:15  hugh
adjust jove.spec for yet another new rpmbuild requirement

Revision 1.407  2002/12/13 01:52:47  hugh
- allow $TERM for iprocs to be configured
- adjust types of parameters of truncstrsub and jamstrsub (lint)
- refine jove.spec (for RPM building); iproc TERM=vanilla

Revision 1.406  2002/03/21 07:06:04  hugh
update Copyright to satisfy Debian

Revision 1.405  2002/02/12 20:14:08  hugh
- add style.doc to describe some coding conventions
- add a Makefile target to support Exuberant Ctags more conveniently
- add a note about overflow in calculating percentage in buffer-position
- change TERM and TERMCAP environment variables in iproc

Revision 1.404  2001/12/20 21:07:25  hugh
- fix Makefile problems with openpty configuration
- factor LIBS into TERMCAPLIB and EXTRALIBS

Revision 1.403  2001/12/17 22:24:14  hugh
- fix a few buffer overruns
- add "Quick summary" to README
- use "jmode_t" where mode_t is appropriate (old systems must define as int)
- use uid_t; hope this is portable
- added GCC_LINT to make it more pleasant to use gcc warning options

Revision 1.402  2001/07/15 19:14:23  hugh
improve jove.spec (for Redhat Package Manager)

Revision 1.401  2001/03/22 07:17:26  hugh
4.16.0.51: improve portability; use openpty on *BSD

Revision 1.400  2001/02/04 21:01:50  hugh
4.16.0.50 support groff; fix jove.spec for RPM creation

Revision 1.399  2000/11/10 07:58:22  hugh
[BET+DHR] support installation into a playpen; exploit when building RPM

Revision 1.398  2000/07/12 16:13:01  hugh
4.16.0.48: use SVR4_PTYS (AKA UNIX98 PTYS) for LINUX

Revision 1.397  1999/10/22 14:16:39  hugh
4.16.0.47: get file creation mode right; predelete backup file
Thanks to Rob McMahon <cudcv@csv.warwick.ac.uk>

Revision 1.396  1999/08/29 18:44:49  hugh
4.16.0.46: add save-on-exit [Rob.McMahon@warwick.ac.uk]

Revision 1.395  1999/08/25 19:47:30  hugh
4.16.0.45: detect and report file close errors [Rob.McMahon@warwick.ac.uk]

Revision 1.394  1999/08/19 02:14:13  hugh
4.16.0.44: add .spec for RPM creation

Revision 1.393  1999/08/18 23:17:20  hugh
4.16.0.43: make mkstemp code less brittle (Moraes)

Revision 1.392  1999/08/18 21:56:21  hugh
make USE_CTYPE implicit in BSDPOSIX (except for __convex__!)

Revision 1.391  1999/08/15 02:24:48  hugh
Support for Cygwin32 environment on MS Win32
(from Arlindo da Silva and Dave Curry)

Revision 1.390  1999/08/15 00:50:48  hugh
4.16.0.40: fix horrible umask security hole

Revision 1.389  1999/08/13 14:43:05  hugh
4.16.0.39: reflect Jim's (Jim.Patterson@Cognos.COM) work on Win32 and HPUX

Revision 1.388  1999/08/12 21:21:38  hugh
4.16.0.37: update Makefile and README to reflect modern systems

Revision 1.387  1999/08/12 19:14:11  hugh
4.16.0.37: scatter "const"; update copyright; tidy comments

Revision 1.386  1999/08/10 15:08:03  hugh
4.16.0.36: switch to safe creation of tempfiles.
Note: mode_t isn't used because argument promotion rules mess things up.
Some additional tidying.
Tested on MSDOS, SunOS 4.0, Solaris 2.6, RedHat5.2.

Revision 1.385  1999/08/09 05:50:51  hugh
4.16.0.35: fix nits in documentation

Revision 1.384  1999/08/06 19:02:27  hugh
4.16.0.34: fixed a bug that caused justification of the following line
to hang JOVE.  set right-margin 70.  Note whitespace at end.

Revision 1.383  1999/08/06 16:47:20  hugh
make xterm mouse code dodge metakey kludge (needed for xterms wider than 95)

Revision 1.382  1999/02/11 18:41:51  hugh
fix indented #ifdef: would confuse old compilers

Revision 1.381  1998/09/22 21:10:44  hugh
Rename SCO to SCO_ODT3 to be more specific.
Fix typo in SCO_ODT3 settings (cannot test!).
Thanks, Mark Moraes <moraes@staff.juno.com>

Revision 1.380  1998/09/22 03:47:03  hugh
glibc-2 (the GNU C library, used in some LINUX systems) has a
a unique (but probably not wrong) feature: stat, when it fails,
scribbles over the stat buffer.  This change lets JOVE deal
with this feature.
Thanks to Steve Thompson <stevet@ultratech.net>.

Revision 1.379  1998/09/21 21:19:05  hugh
Verify that other end of PTY can be opened before accepting it.
This is needed apparently needed under LINUX.  The test doesn't
work on old versions of BSDI/386, so BSDI_PTY_BUG will suppress.

Revision 1.378  1998/09/21 17:57:12  hugh
fix error message construction
[originally done 1998 March 29]

Revision 1.377  1998/09/21 17:52:15  hugh
avoid freeing already freed name list
[originally done 1998 January 25]

Revision 1.376  1998/09/21 17:48:10  hugh
Change xterm-bug-workaround to avoid changes made for XFree 3.2.
Without this change, mouse usage under the xterm of XFree 3.2
will leave mysterious blanks on the screen.

The relevant change to XFree 3.2's xterm is that the sequence ESC X is
now meaningful.  We had counted on this to be ignored.  Now we will
count on ESC DEL being ignored.
[originally done 1997 Sept 21]

Revision 1.375  1997/07/10 06:06:30  hugh
Add support for different meaning if im and ic with ncurses' termcap
(used with LINUX and other free systems).

Revision 1.374  1997/01/17 01:59:28  hugh
4.16.0.24: little touches
- allow var internal-tabstop to be set to 0 (tab-width already could)
- notes for porting to Digital UNIX
- spelling improvement

Revision 1.373  1997/01/16 22:08:26  hugh
4.16.0.23: handle symlinks in path canonicalization (PathParse)

Revision 1.372  1996/10/10 06:59:26  hugh
4.16.0.22: more pr_name static buffer bugs

Revision 1.371  1996/10/06 20:57:51  hugh
4.16.0.21: port to Digital UNIX V4.0 -- one JOVE bug, one OS bug

Revision 1.370  1996/09/19 02:09:39  hugh
4.16.0.20: fix bug in window resizing by mouse
To demonstrate bug:
- split a window that is viewing a non-empty buffer
- make upper window have a different dot.
- enlarge the upper window by dragging its mode line down (button 2)
The upper window's dot will be a copy of the lower window's.

Revision 1.369  1996/09/09 06:29:43  hugh
4.16.0.19: eliminate tricky aliasing bug in Source/ask_ford/PathParse

The bug to be fixed is the interaction of the following:
- PathParse must not have aliased args
- if ask_ford is called with def and buf aliased
  AND pr_name(def, YES) yields a pointer into def
  AND the user defaults the file name
  THEN PathParse will be called with aliased args
- Source calls ask_ford with def and buf aliased

To demonstrate:
- set environment variable HOME to "" or "/"
- run jove in some other directory
- issue "source" command and hit return to default the file name
- jove will attempt to source the file named ""

The fix: since pr_name sometimes returns a pointer to its static buffer,
the simplest change is to make it always return a pointer to its static
buffer.  At the same time, sprinkle a few comments about aliasing in the
relevant routines.

Incidental improvements:
- pr_name now complains about too-long file names
- pr_name will now choose to use ~ over cwd-relative naming if the
  resulting name is shorter

The apology: static buffers are evil (wasteful and error-prone) and
should be eliminated.  Unfortunately, this would require changes to
every use of pr_name.

Revision 1.368  1996/08/19 21:05:09  hugh
4.16.0.18: make dbx a minor mode (simplify, generalize)

Revision 1.367  1996/07/11 05:09:06  hugh
4.16.0.17: make jjove.rc use version.h

Revision 1.366  1996/07/07 22:18:22  hugh
4.16.0.16: fix bugs in commandline arg processing
There were several odd cases where the current buffer
would not be tied to the current window.
>> As a minor enhancement, the alternat buffer will now
be set to the last file not assigned a window.

Revision 1.365  1996/07/02 00:15:13  hugh
4.16.0.15: fix subtle screen maintenance bug
Without this, filename/command/etc completion would get
truncated when process windows were updated.

Revision 1.364  1996/06/16 15:56:45  hugh
4.16.0.14: fix MatchDir usage

Revision 1.363  1996/06/13 06:19:29  hugh
4.16.0.13: rename basename => jbasename (name taken by SVR4)

Revision 1.362  1996/05/23 03:08:41  hugh
4.16.0.12: fix nits in teach-jove

Revision 1.361  1996/05/20 01:57:36  hugh
4.16.0.11: in Makefile: use LDCC in appropriate places

Revision 1.360  1996/05/09 02:40:21  hugh
4.16.0.10: improve READMEs for DOS and WIN32

Revision 1.359  1996/05/08 18:15:13  hugh
4.16.0.9: support ConvexOS, istrip problems and all

Revision 1.358  1996/05/08 03:44:25  hugh
4.16.0.8: restore Zortech compatibility
Zortech 3.0 doesn't define EINTR; I don't think any MSDOS runtime
would generate it for a write().  (The code already reflects this
understanding for read().)

Revision 1.357  1996/05/07 04:28:18  hugh
4.16.0.7: fix backup-files code for MSFILESYSTEM

Revision 1.356  1996/04/22 06:49:45  hugh
4.16.0.6: remove unwarranted bug warning
The bug was caused by a virus on the test system.

Revision 1.355  1996/03/30 00:59:29  hugh
4.16.0.5: fix justification nits

Revision 1.354  1996/03/21 19:14:48  hugh
4.16.0.4: improve concatenation of pathname components
This change is needed to avoid accidental references to network files
under some Microsoft systems.
Took this oportunity to delete some obliquely related nonsense code
in scandir.c.

Revision 1.353  1996/03/21 17:02:10  hugh
4.16.0.3: correct case of OS in Makefile.msc

Revision 1.352  1996/03/20 08:00:59  hugh
4.16.0.2: Fix strange font usages in xjove (Charles)

Revision 1.351  1996/03/20 07:40:19  hugh
4.16.0.1: fix and use lint Makefile target

commit 702706df4025029f580bc2962b9fc407bd2ddc58

    version 4.16 released on ftp.cs.toronto.edu on 1996/03/30
    
    PC, Win32 and Un*x-specific code factored into ibmpcdos.c,
    win32.c and unix.c respectively.
    
    Retested on lots of platforms, this was the last major Jove
    release formally tested by all jove developers.  The release
    announcement/README was:
    
    4.16 has been widely ported, it features LOTS of changes, fixes,
    improvements.  Among other things, it should compile and work out of
    the box on most widely used Un*x and Posix variants, including AIX,
    BSDI, DGUX, HP-UX, Irix, Linux, OSF/1, QNX, SCO, Solaris, SunOS, SVR4,
    Ultrix.  Considerable work has gone into making it easier to port
    (functional ifdefs rather than system specific ones).  It now has
    simple mouse support under xterms, the documentation has been
    re-worked.
    
    This version of Jove also works under DOS, Win32 and the Mac with
    almost the same functionality as the Un*x version.

commit 6cf695fea5f3980fe41a2ce423122ef376446709

    version 4.16beta released on ftp.cs.toronto.edu on 1994/11/23
    
    many fixes, more portability, xjove, xterm mouse handling and
    jovetool appear courtesy Charles Lindsey.
    
    doc/jove.[123] become doc/intro.nr
    doc/jove.[45] become doc/cmds.nr
    doc/system.rc becomes doc/jove.rc*
    Readme.* become README.*
    Makefile.dos becomes Makefile.{bcc,msc,wat,zor} for various PC compilers
    tune.template is gone, those defines are set in Makefile

commit aab347b0f618ecd19dce73efbe2ea44101cae20f

    version 4.14.10 released on ftp.cs.toronto.edu on 1993/06/19
    
    Many bugfixes from Hugh Redelmeier who took on primary
    maintenance and Mark Moraes who did much of the portability
    revamp and testing on a wide range of Un*x variants
    available at UToronto at the time (MIPS, SGI Irix,
    SUNOS[34], BSD, Ultrix).  sysdep.h makes an appearance and
    the ifdef maze is now feature-based rather than ad-hoc.
    Much de-lintingh as a side-effect of testing with
    full-warnings on as many nit-picky compilers as possible.
    
    a few files renames appear as delete+new because of
    conversion: in particular, version.c now becomes version.h

commit 44a942827c9c2766d161668389d3edaea1a9dd8a

    revision 4.14
    date: 1989/10/17 10:20:31;  author: jpayne;  state: Exp;  lines: +1 -1
    Quick check-in for hugh and mark.

commit ba38dd8858356ade98ff351f46bdc0d7690ea5d4

    revision 4.12
    date: 1989/02/13 09:46:15;  author: jpayne;  state: Exp;  lines: +3 -1
    Ansi C-ified.  Also minor addition to scroll-region-{left,right}
    now uses numeric argument if one is supplied to figure out how
    far to indent.

commit 1028d6ba06536d582d289ab009748309853cfc59

    revision 4.11
    date: 1989/01/18 15:11:10;  author: jpayne;  state: Exp;  lines: +1 -1
    new c-mode, shift-region-{left,right}, dbx-mode,
    deleted find-files-read-only variable, uses getpwent
    to look up home directories.

commit ad842c38e45fbd09ba81e8cda51f73f92e8283c7

    revision 4.10
    date: 1988/10/21 14:22:54;  author: jpayne;  state: Exp;  lines: +1 -1
    added function proto-typing
    {f,s,}printf => {f,s,}writef
    numeric argument functions are macros now
    real keymaps now
    added RE_block structure for RE's.
    new mail checking algorithm
    better handling of modeline with SG's
    changed meaning of %e in modeline
    deleted ansi-codes
    read-only mode
    new pipeprocs mechanism
    cleaned up white space
    added C-X 4 C-T

commit a392c927e39e298e5298fccac90b752ac30dea4f

    revision 4.9
    date: 1988/03/14 19:13:38;  author: jpayne;  state: Exp;  lines: +7 -7
    -runs on the macintosh!
    -new variables display-bad-filenames, scroll-all-lines,
     error-format-string
    -new commands scroll-left, scroll-right, shell-command-no-buffer
     shell-command-with-typeout
    -deleted parse-special-errors (see error-format-string)
    -disable redisplay during screen Typeout
    -%w in modeline displays '>' if window is scrolled
    -unbind-key really works
    -tabs are inserted if at end of line in lisp mode
    -jove -tTagname works
    -jove windows are resized in proportion to the system window
     resize

commit 08e9e8903b0862b8f0c353fdb1fa6e0c62361a98

    revision 4.8.1.1
    date: 1988/01/18 13:12:48;  author: jpayne;  state: Exp;  lines: +1 -1
    Version 4.8b of JOVE, to be combined with the changes of Karl and Tim
    for PC jove.  See 4.9 entry for diff listing.

commit d547430ed201f1a5e614cf1359c55f7616f9a70c

    revision 4.8
    date: 1987/10/16 15:53:08;  author: jpayne;  state: Exp;  lines: +1 -1
    branches:  4.8.1;
    New text macros!!!
    IBM PC/MSDOS compatible!!!

commit 002e27a0a9fbe902043dd9a2b1bb0c8f4e392283

    revision 4.7
    date: 1987/07/16 11:11:47;  author: jpayne;  state: Exp;  lines: +7 -9
    -Changed arg count.
    -Added environment variable support.
    -Changed CTL() macro to conform to ansi C.
    -Changed file commands to use path relative form to speed
     up accesses.
    -Reverted to old fill-paragraph.
    -Added BL and NL (with stripped padding) termcap support.
    -Added %p on modeline (display process status).
    -Changed buffer-position.
    -Fixed fmt.c for BSD4.3 ctime(); cleaned up code.
    -Combinded ^U and ESC correctly.
    -find_tag uses binary search.
    -Changed rec file format.
    -Fixed load average for SUNS.

commit 64dff0fa821665f05019f064b187313f34ea9343

    revision 4.6.1.5
    date: 1987/04/18 12:22:56;  author: jpayne;  state: Exp;  lines: +1 -1
    -kill buffer doesn't delete any windows
    -fixed simple recursive keymap displaying bug
    -buffer-position doesn't die on 0 length buffers
    -added goto-window-with-buffer
    -fixed .joverc weirdness with 'P' vs. 'p', etc.
    -fixed iproc's dieing - now insert message AT END OF BUFFER
    -combined ^U and ESC # at last
    -fixed dosub \\\ bug
    -find tag works in wrap-search mode
    -fixed structure name conflicts
    -SysV vs. SysVRel2

commit 669c46e98fe44a691cbfcf58ecb410673c45acbe

    revision 4.6.1.4
    date: 1987/01/21 19:06:27;  author: jpayne;  state: Exp;  lines: +1 -1
    %m is changed on mode-line
    changed DoJustify to really use the right-margin

commit b819657159a742fd3f9e6968c27f5ce812a5a7b4

    revision 4.6.1.3
    date: 1986/12/22 14:29:26;  author: jpayne;  state: Exp;  lines: +1 -1
    Few bug fixes.

commit fa64b7627c24a9050cba5c044fb98c75e19c8624

    revision 4.6.1.2
    date: 1986/09/24 10:50:01;  author: jpayne;  state: Exp;  lines: +7 -9
    This is the version sent out to mod.sources.  Contains a
    few minor differences from the previous version, some of
    Hugh's bug fixes, couple new variables, etc.

commit f0263179fc74ce8a8c7f939aa51e204fdb8f9dc5

    revision 4.6.1.1
    date: 1986/08/26 19:20:49;  author: jpayne;  state: Exp;  lines: +1 -1
    -recover is no longer a top level command; use jove -r instead.
    -the jove tmp file is created upon demand now.
    -new variable type V_FILENAME, and new variable "tmp-file-path."
    -fixed typing C-V before initial file read is complete.
    -new command "add-lisp-special."
    -yes/no questions don't wait for return.
    -chk_mtime is called whenever a file is reselected.
    -the NORMC char code is followed by a # which is the # of NORMC's.

commit d225bd8f9c48a5ca79ada5cc68aaf4921581e177

    revision 4.6
    date: 1986/07/24 12:57:08;  author: jpayne;  state: Exp;  lines: +1 -1
    branches:  4.6.1;
    Fixed serious text munging bug (getblock() in IO.C).
    Made case independent search as fast as normal search.
    Fixed bug that caused JOVE to keep trying to write files even
        after an error.
    ESC 1 2 3 and ESC 1 ESC 2 ESC 3 do the same thing now.  So meta-key
        really works.
    Added some lisp commands.

commit f4ae519828d94f99bdb58ab304be6d1bf9e6871c

    revision 4.5
    date: 1986/03/27 20:40:14;  author: payne;  state: Exp;  lines: +1 -1
    This version has the new tmp file format.  Lines are don't go over
    block bounderies anymore to make things faster.  The search code is
    lots faster and the paren matching code is more accurate and MUCH
    faster.

commit ecfd7acb0074e7efd778999306ad3e27c0ca86ed

    revision 4.4.2.1	locked by: payne;
    date: 1986/03/18 00:08:32;  author: payne;  state: Exp;  lines: +1 -1
    This version has new paren  flash code, several bug fixes.

commit 660c8ad206ba229a7988b804fcc8f066e34be601

    no longer relies on sprintf returning char*
    
    revision 4.4.2.0
    date: 1986/02/28 17:00:49;  author: payne;  state: Exp;  lines: +1 -1
    This version has a fix for the sun problem.  On suns the C library
    version of malloc is used instead of the pdp11 version.

commit ef3be7a4243bd913aeca7614d3a4ab2b45c3997f

    tiny change to a complaint
    
    revision 4.4.1.2
    date: 1986/02/18 23:06:57;  author: payne;  state: Exp;  lines: +1 -1

commit 194b87c042a1d87e92068292d15f60cc05678984

    key bindings and setmaps
    
    revision 4.4.1.2
    date: 1986/02/18 23:06:57;  author: payne;  state: Exp;  lines: +1 -1

commit bd817796ebb8d403a2ed4fa54b3157bd2cb3f78d

    4.4.1.1 seems the rest of the fixes described in the 4.4 log message
    
    revision 4.4
    date: 1986/02/13 02:09:39;  author: payne;  state: Exp;  lines: +1 -1
    branches:  4.4.1;  4.4.2;
    Has file I/O enhancements.  Basically rewritten from scratch.  Some
    bug fixes.  Code to automatically convert macros in the old format
    to the new format.
    ----------------------------
    revision 4.4.1.1
    date: 1986/02/14 20:09:52;  author: payne;  state: Exp;  lines: +1 -1
    New version 4.4.1.1
    ----------------------------

commit 6011c1bbe8dc2472e907bd5b418115acf77d3898

    version.c updated to 4.3.1.1 but fixes seem to match branch 4.4
    
    revision 4.4
    date: 1986/02/13 02:09:39;  author: payne;  state: Exp;  lines: +1 -1
    branches:  4.4.1;  4.4.2;
    Has file I/O enhancements.  Basically rewritten from scratch.  Some
    bug fixes.  Code to automatically convert macros in the old format
    to the new format.

commit 0ae3c568851d6990665f5e1dbdbea67a63374c0c

    JOVE is Jonathan's Own Version of EMACS
    Written by Jonathan Payne circa 1982, originally at the
    Lincoln-Sudbury Regional High School, MA, USA.
    
    This version history (from an RCS archive) starts in
    1986 when Jonathan was finishing his CS undergrad
    at University of Rochester.  Version 4.3 was included in
    the BSD 4.3 distribution (the hardcopy manual is part
    of the User Software Distribution; USD17) Supposedly,
    an earlier version was included in a 1984 USENIX software
    tape along with Jay Fenlason's HACK.
    
    A later version 4.6.1.4 was posted to comp.sources.unix
    (mod.sources at the time?) in late-1986 or early-1987.
    
    Version 4.8 was ported to the IBM PC.
    
    Version 4.12 was available from cs.rochester.edu for a
    while.
    
    Hugh Redelmeier and Mark Moraes took over releases in 1989,
    circa jove 4.14, which eventually resulted in a long-lived
    4.16 release in 1996.  Many subsequent dot releases were
    never released formally, though they were available from
    ftp.cs.toronto.edu:/pub/hugh/ and some made their way into
    various Linux/BSD distributions.
    
    This git history reconstructed by Mark Moraes from an RCS archive
    that Jonathan sent and starts with:
    
    revision 4.3
    date: 1986/02/13 01:54:59;  author: payne;  state: Exp;
    As distributed with 4.3 BSD.
    
    https://groups.google.com/forum/#!msg/net.unix-wizards/9bPrVuHYlo8/s5Wm4N2-6KQJ
    (likely from Henry Spencer's archives, judging by the utzoo path entry)
    
    Message-ID: <bnews.sri-arpa.940>
    Newsgroups: net.unix-wizards
    Path: utzoo!decvax!decwrl!sun!megatest!fortune!hpda!hplabs!sri-unix!jpayne@BBN-UNIX
    From: jpayne@BBN-UNIX
    Date: Tue Apr 19 03:33:03 1983
    Subject: Weird file names and ...
    Posted: Mon Apr  4 07:14:46 1983
    Received: Tue Apr 19 03:33:03 1983
    
    At Lincoln-Sudbury High School, here in massachusetts, we are running
    2.81bsd UNIX.  My friends and I (high school students/graduates),
    recently had a lot of fun deleting a file with the character \240 in
    it.  The file name was so weird that ls couldn't even stat the file.
    
    ...
            Jonathan Payne
    
    P.S.
    
    Anyone out there interested in an EMACS style editor for the PDP11.
    Unfortunately it doesn't fit on non-split ID machines.  Some of its
    features include, multiple buffers and windows (as many that can fit
    in both cases), key binding (similar to Gosling's),  output from
    shell commands to buffer, filter-region (so you can sort your files
    or beatify your C), parse C/LINT/fgrep type error messages,
    spell-buffer (like error parsing), MACRO in the singular (haven't
    gotten around to making it more general).  I almost forgot to mention
    that it has optimized redisplay (NOT as good as Gosling's, but close),
    works on any reasonable display terminal (TERMCAP), has
    super/hyper/meta optimized cursor motion (I believe it does the best
    thing EVERY time with good response time) and aborts redisplay if you
    support the right ioctl.
    
    It limitations are 512 characters per line (it stores the file on the
    disk in a way similar to that of ed(1) and VI), about a total
    of 6500 lines at any time buffers.  I believe it hardly ever crashes
    i.e. it hasn't happened to anyone yet.  There is 10k of I space left and
    is, in my opinion, well written and easy to read, so you can modify
    it easily.
    
    It's called JOVE which stands for Jonathan's Own Version of Emacs...
    
    If you are interested you can reach me at jpayne@bbng or jpayne@bbn-unix
    
            Be seeing you...
    
    Newsgroups: comp.emacs,comp.sys.mac.programmer.tools,comp.unix.bsd.freebsd.announce
    Subject: Announcing JOVE version 4.16 (EMACS-like text editor)
    Keywords: EMACS, editor, JOVE
    References: <1996Apr13.021821.26744@jarvis.cs.toronto.edu>
    
    Jove (Jonathan's Own Version of Emacs) is an Emacs-like editor without
    Lisp.  It is comfortable to use, small, fast and portable.  It has
    been available for about a dozen years, and has been included in
    several BSD releases.
    
    4.16 (1996 Mar 19) is the latest released version.  The previous release was
    4.16beta (1994 Nov 23) and before that, 4.14.10.
    
    4.16 has been widely ported, it features LOTS of changes, fixes,
    improvements.  Among other things, it should compile and work out of
    the box on most widely used Un*x and Posix variants, including AIX,
    BSDI, DGUX, HP-UX, Irix, Linux, OSF/1, QNX, SCO, Solaris, SunOS, SVR4,
    Ultrix.  Considerable work has gone into making it easier to port
    (functional ifdefs rather than system specific ones).  It now has
    simple mouse support under xterms, the documentation has been
    re-worked.
    
    This version of Jove also works under MSDOS, Win32 (Windows NT and
    Windows 95) and the Macintosh with almost the same functionality as
    the Un*x version.
    
    The official source location for Jove is
    	github.com/jonmacs/jove
    (newest code in the moraes branch)
    The ftp location for Jove is
    	ftp.cs.toronto.edu:/pub/moraes/jove/
    The file jove.README describes the contents of this directory.
    Source is provided for all platforms, as are pre-compiled versions
    for MSDOS, MSWin32, and the Macintosh.
    
    Jove is supported by a group of users.  We can be
    reached on the github.com/jonmacs/jove bug tracker.  We
    welcome bug reports.  We also welcome reports on porting
    Jove.  We are even interested in suggestions for new
    features, but we are conservative in adopting them.
    
    Mark Moraes, Hugh Redelmeier (for Jovehacks)

