ncplane_destroy() needs to call ncplane_reparent_family(), not
ncplane_reparent() as it was doing (closes#1291). ->absy and
->absx actually are absolute; return them directly for an O(1)
ncplane_abs_yx() (down from O(N), huzzah). Add some unit tests
related to destroying and reparenting (#1286). Add ncplane_abs_y()
and ncplane_abs_x(), document them, etc.
We've been using #ifdefs and such to check for libc
Unicode 13 support at compile time. Instead, execute
a wcwidth() using a sextant. If it comes back -1, the
libc lacks support; disable sextants. Otherwise, let
it go. This ought allow us to support sextants on BSD
as soon as it has support; it furthermore allows us to
properly disable them on Linuxes lacking such support.
Closes#1289.
Use 74 columns for infoplane, handling longer model names.
Match /etc/os-release fields whether delimited by tabs or
spaces. Properly extract only the names from /etc/os-release.
/proc/cpuinfo doesn't always declare a Model Name, but
it seems to have a vendor_id everywhere I've been able
to check (s390x etc.). fall back to vendor_id in the
absence of a model name. count cores based off instances
of core id while we're at it (likewise fixes s390x).
I've created the new files src/compat/compat.{hc}. These
are available to all binaries by adding src to the include
directories, and src/compat/compat.c to the sources. Several
functions are implemented here which one or more target
operating systems are missing, right now all related to time.
This includes clock_nanosleep(), which is missing on OS X and
DragonFly BSD. Eliminate the other three definitions of
timespec_to_ns() and friends. Standardize on NANOSECS_IN_SEC
rather than the more opaque GIG. Progress on #1121.