Author: Mark Moraes <mark.moraes@deshawresearch.com>
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)
    
    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
[--snip--]
