* Remove code for unsupported Sun display configurations
Initial cleanup removing all code that was #ifdef'd for SUNDISPLAY.
Other SunWindows dependent code may also be removeable
* prropstyle will never be defined with no SunWindows support and therefore no pixrect code
* Remove code that is ifndef NOPIXRECT, since pixrects are part of the obsolete Sun windows code.
There are still traces of pixrect dependent code that could be removed.
* Remove unnecessary calls to XLOCK/XUNLOCK
The X methods called by flush_display_region() and flush_display_lineregion() handle the
locking/unlocking, therefore it is unnecessary to invoke the locking here.
* Remove explict signals when doing XUNLOCK()
Call getXsignaldata() directly if a signal happened while X code
was locked, instead of generating a signal and then handling it.
Some macros and functions needed to pass the DspInterface instead of
extracting the X display and window and passing those so that the
correct structure was available for the XUNLOCK() call.
Until now, the only differentiation between using DLPI and using NIT for
the ethernet interface was expressed as a function of USE_DLPI.
This commit makes explicit when code is for the DLPI interface or the NIT
interface, with USE_DLPI and USE_NIT. This is setup for using the BPF
interface to the ethernet as an alternative.
* Fix buffer overrun vulnerability: use strncpy
read_Xoption uses a char buffer defined in main.c with length
MAXPATHLEN, aka PATH_MAX in POSIX. Unfortunately it was using strcpy to
copy from the command-line arguments (via argv) and the environment (via
getenv) without any bounds checking whatsoever. This could very easily
cause an overflow.
It's unlikely that a user will want to provide a path longer than
PATH_MAX-1 (a generous 1023 bytes on my machine). If they try, we should
stop them from causing any damage.
* Use strlcpy instead of strncpy
Thanks to Nick Briggs for the suggestion. It would be best to use
sizeof(sysout_name) instead of hardcoding a reference to the PATH_MAX
constant, but unfortunately sysout_name is an extern in xrdopt.c and so
the compiler doesn't know its size. I don't want to mess with that
coupling in this commit, because I assume there was a reason for doing
it that way rather than putting sysout_name in a header; I'll keep the
scope of the changes here small.
* Revert "Use strlcpy instead of strncpy"
Ah. This is not great. Turns out strlcpy is a nonstandard BSD extension
with its own set of problems
[https://en.wikibooks.org/wiki/C_Programming/C_Reference/nonstandard/strlcpy]
that we may be best served by avoiding. On Linux, it's only accessible
through libbsd, and we have no other reason (as far as I can tell) to
require that. Unless we want to provide our own strlcpy implementation,
we should stick with strncpy. It's far safer than what was there before
and doesn't present any edge cases in this scenario that are apparent to
me.
* Display atom name in error message if get_package_atom() fails
* Various fixes to package/atom handling in testtool.c
Remove S_TOPVAL and S_MAKEATOM which only existed to deal with an old issue
with dbx where you supposedly couldn't enter a string with "\" in it.
Remove countchar(), which is functionally identical to strlen(), and adjust
code that used it.
Adjust return type of MAKEATOM() to be the LispPTR that it should be, instead of int.
Limit find_package_from_name() to examining only the number of entries that are
present in the *PACKAGE-FROM-INDEX* array, instead of walking off the end.
MakeAtom68k() now drops into uraid() if asked to look up an atom that does not exist
(Make... is a misnomer, it will never *make* the atom, only lookup an existing
one)
Except where the expansion would be syntactically invalid,
for example "goto macroarg;" detection of which is a bug in clang-tidy,
so warn it off with a NOLINT...(bugprone-macro-parentheses)
* Remove unused `print_lispusage()`.
* Make some globals into function locals.
* Make the options table into a `static`. It can't be `const`
because `XrmParseCommand` wants a mutable pointer.
* Remove unused `homeDB`.
* Stop using `caddr_t`, use `XPointer`. `caddr_t` is not POSIX
and never made it past old obsolete BSD code.
* Remove unused `Master` argument.
* Update documentation.
* Remove unused `MasterFD` variable in caller.
* Remove `slot` variable in caller and use `Master` in each case.
* Make `FindAvailablePty` a static function.
The X options parser printed the info lines as well as the main options handler.
Add mention of the -info option in the -help usage information.
FixesInterlisp/medley#41
"warning: empty expression statement has no effect; remove unnecessary ';' to silence this warning" [-Wextra-semi-stmt]
occurred 254 times in xc.c when warnings were turned up.
Review this commit with "git diff -w ..." to make it easier to see changes other than indentation caused by
the addition of do { ... } while (0) around many macro definition bodies.
This was like `ldeether`, but for SunOS4 with a color display. It
isn't needed any longer as on Solaris, we have `ldeether`, no color
display, and that code already works, unlike this one.
This is not used in Medley (the MISCN-TABLE-LIST doesn't include
the required constants), nor does anything use or reference this
code. It also won't compile as it needs some routines that are
missing from our code.
* ForkUnixShell() can be a static procedure
* Restructure SAFEREAD() to be a little clearer
* Convert unixjob type field defines to an enum and fix related unhandled switch cases.
* Use local declaration of loop variables in for-loop, removing register attributes
* Restructure SAFEREAD() to be a little clearer
* Send and receive 2 additional bytes for pid.
* Prefer standard C99 "inline" over "__inline__" for SAFEREAD
* Switch from sgtty over to termios. All of the various
separate values that were copied individually before
can now be done at once.
* Fix compilation error with missing `&`.
* Fix compilation error with missing return value.
I haven't tested that this works as I don't know how to do that,
but at least it compiles now.
* `LOGINT` is only useful when `MAIKO_HANDLE_CONSOLE_MESSAGES`
is set.
* Only define some variables if `MAIKO_HANDLE_CONSOLE_MESSAGES`
is set. Flag them as static.
* Remove setting `LOGINT` from the build system as it isn't
needed because we aren't handling console messages.
This was a machine running SunOS 4, which we no longer support.
It had an odd display controller and a compiler with issues that
required workarounds. Those compiler issues aren't an issue in
today's world, so we don't need to keep the workarounds present
for reference.
It had a bit of inline assembly, but that is still present in
other files for other platforms.
The LowerRightX and LowerRightY were calculated as the X and Y coordinates of the
pixel to the right and below the last visible pixel, but are compared with the
last actually visible pixel in the source. They need an extra -1 offset to correct.
Add comments to explain what's going on. Fix the signature of the function to reflect
that the "dummy" passed for the display region is a pointer not an integer.