No functional difference. Replaces a few leftover references to a prior
project name for the C implementation of the Lisp Virtual Machine with the
current name.
The fix to allow compiling for Alpine Linux caused breakage on Solaris
because MAXNAMLEN is defined in <dirent.h> which was now NOT included.
Pending a conversion to POSIX NAME_MAX, include <dirent.h> in "locfile.h".
* Changes needed to compile maiko on Alpine Linux with clang. Switching to Alpine on github actions to streamline maiko release builds
* Changes needed to compile maiko on Alpine Linux with clang.
Switching to Alpine on github actions to streamline maiko release builds.
* ether_nethub.c missing a couple of includes, and incorrectly including
<sys/poll.h> instead of plain <poll.h>
* <dirent.h> does not define MAXNAMLEN on Alpine Linux, but "locfile.h"
compensates for this already, if it is modified to include <limits.h>,
so use this in "dirdefs.h".
---------
Co-authored-by: Nick Briggs <nicholas.h.briggs@gmail.com>
The Lisp implementation distinguishes between 0 and NIL as the result of
the gcscan1/gcscan2 opcodes, however the C implementation did not, since
NIL and 0 are indistinguishable.
CSTKPTR is "LispPTR *" while CurrentStackPTR is "DLword *", cast to "void *" to
silence the warning, add comment pointing out size difference to explain the
"- 1" vs "+ 2" adjustments when saving/restoring.
Creating a free block or guard block on the stack with an odd number of 16-bit words
will cause the system to break badly. Always check that and report an error.
Because the stack pointer is declared as "DLword *" (16-bit) for pointer arithmetic,
although it is always maintained as a pointer to a 32-bit boundary, the compiler generates
spurious warnings on casting the stack pointer to structures that require 32-bit alignment.
Silence those warnings by casting through (void *).
The "fillpointer" and "totalsize" fields of the array header and the "offst"
of the sequence descriptor were declared as LispPTR, an unsigned type that
represents an offset into the Lisp memory, however the Lisp datatype
declaration indicates that these are FIXP (int32_t) rather than pointers.
GCC treats the size of a void as 1 for the purposes of arithmetic on
a pointer to void. Since this was provoked by an explicit cast to
pointer to void we can replace it with a cast to pointer to char for
the same effect.
Correct various warning: implicit conversion loses integer precision (30)
Correct parameter type declaration error for N_OP_aset1()
Ensure that appropriate types and casts are used in aref_switch()
Remove requirement for declaring "int new" when using aset_switch() macro
Initialize MaxTypeNumber_word from address of value cell of \MaxTypeNumber in initsout.c
Correctly extract value of \MaxTypeNumber where used in gcmaptable() (though gcmaptable() itself is unused at this time)
Update GetDTD() macro to return (void *), result will be cast to (struct dtd *) where it is needed. Alignment should always be sufficiently large.
createcell68k(typecode) returns a pointer that is aligned for the typecode
argument. Changing the return type to "void *" puts the onus on the caller
to cast the result to an appropriately aligned object. All current uses
in the maiko source ask for 4-byte objects (TYPE_FIXP, TYPE_FLOATP).
* sort_fptovp() and twowords() can be static and are sometimes (depending on flags)
not needed at all
* roundup() macro is unused and can be removed
* maxpages can be unsigned (affects main.c)
* variables used for return values of system calls should be correctly declared
* pointers into Lisp_world should be DLword* rather than char*, and
computations must take that into account.
* ENOSPC and EDQUOT errors on write should return NOFILESPACE instead of FILECANNOTWRITE error.
Note that one might analyze the order of the variables in the bitblt inner loops and
adjust so that items accessed together are in the same cache-line.
The global variable holding the native address of the I/O page is spelled "IOPage"
The global variable "IOPage" is declared extern by "lspglob.h"
The structure pointed to by IOPage is named IOPAGE and is defined in "iopage.h"
If there is no direct reference to the IOPAGE struct do not include "iopage.h"