1
0
mirror of https://github.com/Interlisp/maiko.git synced 2026-03-17 07:17:16 +00:00

Compare commits

...

14 Commits

Author SHA1 Message Date
Nick Briggs
c391641691 Eliminate warnings for ignored fprintf() result when printing messages to stderr 2024-04-24 11:41:46 -07:00
Nick Briggs
38862ddb08 Ignore snprintf() result where OK to do so, convert sprintf() to snprintf() 2024-04-23 21:49:38 -07:00
Nick Briggs
8d34f0869a Problem with directory caching, #1661, disable until it is solved. 2024-04-13 11:12:10 -07:00
Anarchos
e2e2c7e394 Haiku OS port (#485)
* Haiku OS port
* haiku with X11 backend
* haiku has stpncpy
* Haiku is not Linux.
* X not stable enough on Haiku
* Haiku : settimeofday is a no-op
* Haiku : no need to define settimeofday at all (pointed by nbriggs)

---------

Signed-off-by: Anarchos <sylvain_kerjean@hotmail.com>
2024-04-10 20:14:46 -07:00
Nick Briggs
2e86450fad Improve the file lookup performance for {DSK} files (#498)
The directory caching for file lookup on {DSK} was disabled due to a
bug in SunOS - this is no longer relevant, so the cache can be reenabled.
2024-04-03 21:10:54 -07:00
Nick Briggs
400ccab637 exit with non-zero status if unable to open sysout or... (#496) 2024-03-31 09:55:26 -07:00
Nick Briggs
95f4ac8167 Update UNIX-GETPARM to return values for OSNAME and ARCH (#495)
Calls to UNIX-GETPARM with argument "OSNAME" or "ARCH" now return
values derived from the compile-time settings in inc/maiko/platform.h

The current return values are
OSNAME:
    "macOS"
    "Cygwin"
    "DragonFly BSD"
    "FreeBSD"
    "Linux"
    "NetBSD"
    "OpenBSD"
    "AmigaOS 3"
    "Solaris"
    "Windows"
    "Emscripten"
ARCH:
    "WebAssembly"
    "x86_64"
    "arm"
    "arm64"
    "x86"
    "PowerPC"
    "RISC-V"
    "SPARC"
    "Motorola68K"
2024-03-25 15:26:31 -07:00
Nick Briggs
40f6488ee4 Merge pull request #494 from Interlisp/color-code-cleanup
Color code cleanup
2024-03-19 21:09:44 -07:00
Nick Briggs
3c3fc94246 Clean up rawcolor code so it at least compiles without error 2024-03-19 09:10:29 -07:00
Nick Briggs
559ba779b2 Missing definition for taking_mouse_up() 2024-03-19 09:09:36 -07:00
Nick Briggs
afd6cf4b80 Merge pull request #493 from Interlisp/stack-debug-01
Cleanup of stack-related code
2024-03-18 16:30:06 -07:00
Nick Briggs
68baf6fb30 Use ...FromStackOffset functions where appropriate
Rather than adding/or-ing the STK_OFFSET constant into a stack offset
to convert it to a pointer in general Lisp memory and then converting
from that to a native address... use the functions specifically
present to do those conversions with embedded checks on stack offset
validity.
2024-03-07 10:45:38 -08:00
Nick Briggs
939c23c03b Additional check for bad stack offset calculation
Pointer difference calculations on an inappropriate stack pointer could
result in a negative offset, not just an offset that is too large to fit
in 16 bits.  Complain if either case occurs.
2024-03-07 10:01:19 -08:00
Nick Briggs
55591557b6 Clarify the expected size/packing of bit fields in stack structures
While packing is not guaranteed, and most compilers will combine
adjacent bit fields regardless of the alignment requirements of the
datatype that is being divided, here we can be clearer that we
expect packing into 16-bit fields and we do not require (and must not
have) 32-bit alignment of the collections of bitfields.
2024-03-07 09:30:59 -08:00
36 changed files with 298 additions and 224 deletions

View File

@@ -0,0 +1,19 @@
# Options for Haiku, Intel x86_64 and SDL
CC = gcc -m64 $(GCC_CFLAGS)
# CC = clang -m64 $(CLANG_CFLAGS)
XFILES = $(OBJECTDIR)sdl.o
XFLAGS = -DSDL
# OPTFLAGS is normally -O2.
OPTFLAGS = -O2 -g3
DFLAGS = $(XFLAGS) -DRELEASE=351
LDFLAGS = -lSDL2 -lnetwork
LDELDFLAGS = -lnetwork -lbsd
OBJECTDIR = ../$(RELEASENAME)/
default : ../$(OSARCHNAME)/lde ../$(OSARCHNAME)/ldesdl

View File

@@ -12,6 +12,7 @@ case "$os" in
*-*-openbsd*) echo openbsd ;;
*-*-freebsd*) echo freebsd ;;
*-*-cygwin*) echo cygwin ;;
*-*-haiku*) echo haiku ;;
esac
### Don't leave the variable set.
unset os

View File

@@ -63,8 +63,8 @@ static inline DLword StackOffsetFromNative(void *SAddr)
{
/* Stack offsets are expressed as an offset in DLwords from the stack base */
ptrdiff_t hoffset = (DLword *)SAddr - Stackspace;
if (hoffset > 0xffff) {
printf("Stack offset is too large: 0x%tx\n", hoffset);
if (hoffset > 0xffff || hoffset < 0) {
printf("Stack offset is out of range: 0x%tx\n", hoffset);
}
return (DLword)hoffset;
}

View File

@@ -4,6 +4,7 @@
void process_io_events(void);
void kb_trans(u_short keycode, u_short upflg);
void taking_mouse_down(void);
void taking_mouse_up(int newx, int newy);
void copy_cursor(int newx, int newy);
void cursor_hidden_bitmap(int x, int y);
#endif

View File

@@ -166,6 +166,12 @@
# define MAIKO_ARCH_DETECTED 1
#endif
#ifdef __HAIKU__
# define MAIKO_OS_HAIKU 1
# define MAIKO_OS_NAME "Haiku"
# define MAIKO_OS_UNIX_LIKE 1
# define MAIKO_OS_DETECTED 1
#endif
/* Modern GNU C, Clang, Sun Studio provide __BYTE_ORDER__
* Older GNU C (ca. 4.0.1) provides __BIG_ENDIAN__/__LITTLE_ENDIAN__
*/

View File

@@ -37,7 +37,7 @@
#define FastRetCALL \
do { \
/* Get IVar from Returnee's IVAR offset slot(BF) */ \
IVar = NativeAligned2FromLAddr(STK_OFFSET | GETWORD((DLword *)CURRENTFX -1)); \
IVar = NativeAligned2FromStackOffset(GETWORD((DLword *)CURRENTFX - 1)); \
/* Get FuncObj from Returnee's FNHEAD slot in FX */ \
FuncObj = (struct fnhead *)NativeAligned4FromLAddr(FX_FNHEADER); \
/* Get PC from Returnee's pc slot in FX */ \
@@ -47,7 +47,7 @@
#define FastRetCALL \
do { \
/* Get IVar from Returnee's IVAR offset slot(BF) */ \
IVar = NativeAligned2FromLAddr(STK_OFFSET | GETWORD((DLword *)CURRENTFX -1)); \
IVar = NativeAligned2FromStackOffset(GETWORD((DLword *)CURRENTFX - 1)); \
/* Get FuncObj from Returnee's FNHEAD slot in FX */ \
FuncObj = (struct fnhead *)NativeAligned4FromLAddr(FX_FNHEADER); \
/* Get PC from Returnee's pc slot in FX */ \

View File

@@ -79,22 +79,22 @@ typedef struct fnhead {
} FNHEAD;
typedef struct frameex1 {
unsigned flags : 3;
unsigned fast : 1;
unsigned nil2 : 1; /* not used, prev: This frame treats N-func */
unsigned incall : 1;
unsigned validnametable : 1;
unsigned short flags : 3;
unsigned short fast : 1;
unsigned short nil2 : 1; /* not used, prev: This frame treats N-func */
unsigned short incall : 1;
unsigned short validnametable : 1;
/* 0: look for FunctionHeader
1: look for NameTable on this FrameEx */
unsigned nopush : 1;
unsigned usecount : 8;
unsigned short nopush : 1;
unsigned short usecount : 8;
DLword alink; /* alink pointer (Low addr) */
#ifdef BIGVM
LispPTR fnheader; /* pointer to FunctionHeader (Hi2 addr) */
#else
DLword lofnheader; /* pointer to FunctionHeader (Low addr) */
unsigned hi1fnheader : 8; /* pointer to FunctionHeader (Hi1 addr) */
unsigned hi2fnheader : 8; /* pointer to FunctionHeader (Hi2 addr) */
unsigned short hi1fnheader : 8; /* pointer to FunctionHeader (Hi1 addr) */
unsigned short hi2fnheader : 8; /* pointer to FunctionHeader (Hi2 addr) */
#endif /* BIGVM */
DLword nextblock; /* pointer to FreeStackBlock */
DLword pc; /* Program counter */
@@ -102,23 +102,23 @@ typedef struct frameex1 {
LispPTR nametable; /* ptr to NameTable of this FrameEx (Hi2 addr) */
#else
DLword lonametable; /* ptr to NameTable of this FrameEx (Low addr) */
unsigned hi1nametable : 8; /* ptr to NameTable of this FrameEx (Hi1 addr) */
unsigned hi2nametable : 8; /* ptr to NameTable of this FrameEx (Hi2 addr) */
unsigned short hi1nametable : 8; /* ptr to NameTable of this FrameEx (Hi1 addr) */
unsigned short hi2nametable : 8; /* ptr to NameTable of this FrameEx (Hi2 addr) */
#endif /* BIGVM */
DLword blink; /* blink pointer (Low addr) */
DLword clink; /* clink pointer (Low addr) */
} FX;
typedef struct frameex2 {
unsigned flags : 3;
unsigned fast : 1;
unsigned nil2 : 1; /* not used, prev: This frame treats N-func */
unsigned incall : 1;
unsigned validnametable : 1;
unsigned short flags : 3;
unsigned short fast : 1;
unsigned short nil2 : 1; /* not used, prev: This frame treats N-func */
unsigned short incall : 1;
unsigned short validnametable : 1;
/* 0: look for FunctionHeader
1: look for NameTable on this FrameEx */
unsigned nopush : 1;
unsigned usecount : 8;
unsigned short nopush : 1;
unsigned short usecount : 8;
DLword alink; /* alink pointer (Low addr) */
LispPTR fnheader; /* pointer to FunctionHeader */
DLword nextblock; /* pointer to FreeStackBlock */
@@ -135,11 +135,11 @@ typedef struct fxblock {
} FXBLOCK;
typedef struct basic_frame {
unsigned flags : 3;
unsigned nil : 3;
unsigned residual : 1;
unsigned padding : 1;
unsigned usecnt : 8;
unsigned short flags : 3;
unsigned short nil : 3;
unsigned short residual : 1;
unsigned short padding : 1;
unsigned short usecnt : 8;
DLword ivar; /* stk offset of IVARs for this frame ?? */
} Bframe;
@@ -185,33 +185,33 @@ typedef struct fnhead {
unsigned nil3 : 2; /* not used */
unsigned nil2 : 2; /* not used */
#endif /* BIGVM */
unsigned argtype : 2; /* ?? */
unsigned byteswapped : 1; /* code was reswapped. */
unsigned nil4 : 1; /* not used, prev: native translated? */
unsigned fvaroffset : 8;
unsigned short argtype : 2; /* ?? */
unsigned short byteswapped : 1; /* code was reswapped. */
unsigned short nil4 : 1; /* not used, prev: native translated? */
unsigned short fvaroffset : 8;
/* DLword offset from head of NameTable */
unsigned nlocals : 8; /* ?? */
unsigned short nlocals : 8; /* ?? */
DLword ntsize; /* size of NameTable */
/* NameTable of variable length is following with this structure. */
} FNHEAD;
typedef struct frameex1 {
DLword alink; /* alink pointer (Low addr) */
unsigned usecount : 8;
unsigned nopush : 1;
unsigned validnametable : 1;
unsigned short usecount : 8;
unsigned short nopush : 1;
unsigned short validnametable : 1;
/* 0: look for FunctionHeader
1: look for NameTable on this FrameEx */
unsigned incall : 1;
unsigned nil2 : 1; /* not used, prev: This frame treats N-func */
unsigned fast : 1;
unsigned flags : 3; /* hi word */
unsigned short incall : 1;
unsigned short nil2 : 1; /* not used, prev: This frame treats N-func */
unsigned short fast : 1;
unsigned short flags : 3; /* hi word */
#ifdef BIGVM
LispPTR fnheader; /* pointer to FunctionHeader (Hi2 addr) */
#else
unsigned hi2fnheader : 8; /* pointer to FunctionHeader (Hi2 addr) */
unsigned hi1fnheader : 8; /* pointer to FunctionHeader (Hi1 addr) */
unsigned short hi2fnheader : 8; /* pointer to FunctionHeader (Hi2 addr) */
unsigned short hi1fnheader : 8; /* pointer to FunctionHeader (Hi1 addr) */
DLword lofnheader; /* pointer to FunctionHeader (Low addr) */
#endif /* BIGVM */
@@ -221,8 +221,8 @@ typedef struct frameex1 {
#ifdef BIGVM
LispPTR nametable; /* pointer to NameTable of this FX (Hi2 addr) */
#else
unsigned hi2nametable : 8; /* pointer to NameTable of this FX (Hi2 addr) */
unsigned hi1nametable : 8; /* pointer to NameTable of this FX (Hi1 addr) */
unsigned short hi2nametable : 8; /* pointer to NameTable of this FX (Hi2 addr) */
unsigned short hi1nametable : 8; /* pointer to NameTable of this FX (Hi1 addr) */
DLword lonametable; /* pointer to NameTable of this FX (Low addr) */
#endif /* BIGVM */
@@ -232,15 +232,15 @@ typedef struct frameex1 {
typedef struct frameex2 {
DLword alink; /* alink pointer (Low addr) */
unsigned usecount : 8;
unsigned nopush : 1;
unsigned validnametable : 1;
unsigned short usecount : 8;
unsigned short nopush : 1;
unsigned short validnametable : 1;
/* 0: look for FunctionHeader
1: look for NameTable on this FrameEx */
unsigned incall : 1;
unsigned nil2 : 1; /* not used, prev: This frame treats N-func */
unsigned fast : 1;
unsigned flags : 3;
unsigned short incall : 1;
unsigned short nil2 : 1; /* not used, prev: This frame treats N-func */
unsigned short fast : 1;
unsigned short flags : 3;
LispPTR fnheader; /* pointer to FunctionHeader (swapped) */
@@ -261,11 +261,11 @@ typedef struct fxblock {
typedef struct basic_frame {
DLword ivar;
unsigned usecnt : 8;
unsigned padding : 1;
unsigned residual : 1;
unsigned nil : 3;
unsigned flags : 3;
unsigned short usecnt : 8;
unsigned short padding : 1;
unsigned short residual : 1;
unsigned short nil : 3;
unsigned short flags : 3;
} Bframe;

View File

@@ -1664,7 +1664,7 @@ void ccfuncall(unsigned int atom_index, int argnum, int bytenum)
CURRENTFX->nextblock = (LAddrFromNative(CurrentStackPTR) & 0x0ffff) - (argnum << 1) + 4 /* +3 */;
/* Setup IVar */ /* XXX: is it really only 2-byte aligned? */
IVar = NativeAligned2FromLAddr((((LispPTR)(CURRENTFX->nextblock)) | STK_OFFSET));
IVar = NativeAligned2FromStackOffset(CURRENTFX->nextblock);
/* Set PC to the Next Instruction and save into FX */
CURRENTFX->pc = ((UNSIGNED)PC - (UNSIGNED)FuncObj) + bytenum;

View File

@@ -64,14 +64,14 @@ LispPTR Uraid_mess = NIL;
int error(const char *cp) {
char *ptr;
if (device_before_raid() < 0) {
fprintf(stderr, "Can't Enter URAID.\n");
(void)fprintf(stderr, "Can't Enter URAID.\n");
exit(-1);
}
/* comm read */
URaid_errmess = cp;
fprintf(stderr, "\n*Error* %s\n", cp);
(void)fprintf(stderr, "\n*Error* %s\n", cp);
fflush(stdin);
fprintf(stderr, "Enter the URaid\n");
(void)fprintf(stderr, "Enter the URaid\n");
print(Uraid_mess);
putchar('\n');
/* XXX: make sure output is flushed so we can see where we are */

View File

@@ -303,14 +303,14 @@ int sf(struct frameex1 *fx_addr68k) {
if (((fx_addr68k)->alink & 1) == 0) { /* FAST */
bf = (Bframe *)(((DLword *)fx_addr68k) - 2);
} else { /* SLOW */
bf = (Bframe *)NativeAligned4FromLAddr(((fx_addr68k)->blink + STK_OFFSET));
bf = (Bframe *)NativeAligned4FromStackOffset((fx_addr68k)->blink);
}
/* Print IVARs */
printf("IVAR -------\n");
BT_morep;
ptr = NativeAligned2FromLAddr(STK_OFFSET + bf->ivar);
ptr = NativeAligned2FromStackOffset(bf->ivar);
i = 0;
while (ptr != (DLword *)bf) {
ptrlo = ptr + 1;
@@ -475,7 +475,7 @@ int sf(struct frameex1 *fx_addr68k) {
i++;
}
if (fx_addr68k->alink == 11) /* for contextsw */
next68k = (DLword *)NativeAligned2FromLAddr((fx_addr68k->nextblock + STK_OFFSET));
next68k = NativeAligned2FromStackOffset(fx_addr68k->nextblock);
else
next68k = CurrentStackPTR;
@@ -493,7 +493,7 @@ int sf(struct frameex1 *fx_addr68k) {
return (-1);
}
next68k = (DLword *)NativeAligned2FromLAddr((fx_addr68k->nextblock + STK_OFFSET));
next68k = NativeAligned2FromStackOffset(fx_addr68k->nextblock);
ptr = (DLword *)(fx_addr68k + 1);
i = 0;

View File

@@ -188,7 +188,7 @@ int setup_dlpi_dev(char *device)
dlbindreq(fd, 0x0600, 0, DL_CLDLS, 0, 0);
if (dlbindack(fd, buf) < 0) {
fprintf(stderr, "%s: dlbindack failed.\n", pname);
(void)fprintf(stderr, "%s: dlbindack failed.\n", pname);
return (-1);
}
@@ -202,14 +202,14 @@ int setup_dlpi_dev(char *device)
dlpromisconreq(fd, DL_PROMISC_SAP);
if (dlokack(fd, buf) < 0) {
fprintf(stderr, "%s: DL_PROMISC_SAP failed.\n", pname);
(void)fprintf(stderr, "%s: DL_PROMISC_SAP failed.\n", pname);
return (-1);
}
dlpromisconreq(fd, DL_PROMISC_MULTI);
if (dlokack(fd, buf) < 0) {
fprintf(stderr, "%s: DL_PROMISC_MULTI failed.\n", pname);
(void)fprintf(stderr, "%s: DL_PROMISC_MULTI failed.\n", pname);
return (-1);
}
@@ -329,8 +329,8 @@ int dlpi_devtype(int fd)
case DL_FDDI: return (DLT_FDDI);
#endif
default:
fprintf(stderr, "%s: DLPI MACtype %ld unknown, ", pname, (long)dlp->info_ack.dl_mac_type);
fprintf(stderr, "assuming ethernet.\n");
(void)fprintf(stderr, "%s: DLPI MACtype %ld unknown, ", pname, (long)dlp->info_ack.dl_mac_type);
(void)fprintf(stderr, "assuming ethernet.\n");
return (DLT_EN10MB);
}
}
@@ -585,7 +585,7 @@ static int strgetmsg(int fd, struct strbuf *ctlp, struct strbuf *datap, int *fla
/*
* sigalrm - handle alarms.
*/
static void sigalrm(int sig) { (void)fprintf(stderr, "dlpi: timeout\n"); }
static void sigalrm(int sig) { (void)(void)fprintf(stderr, "dlpi: timeout\n"); }
/*
* savestr - save string in dynamic memory.
@@ -595,7 +595,7 @@ static char *savestr(char *s)
char *t;
if ((t = malloc(strlen(s) + 1)) == NULL) {
(void)fprintf(stderr, "%s: out of memory.\n", pname);
(void)(void)fprintf(stderr, "%s: out of memory.\n", pname);
(void)exit(1);
}

View File

@@ -3053,10 +3053,8 @@ static int get_version_array(char *dir, char *file, FileName *varray, CurrentVAr
FileName *svarray;
DIR *dirp;
struct dirent *dp;
/* Used in commented out code below:
int rval;
struct stat sbuf;
*/
/*
* First of all, prepare a lower cased file name for the case insensitive
@@ -3066,20 +3064,14 @@ static int get_version_array(char *dir, char *file, FileName *varray, CurrentVAr
separate_version(lcased_file, ver, 1);
DOWNCASE(lcased_file);
/*
TIMEOUT(rval = stat(dir, &sbuf));
if (rval == -1) {
*Lisp_errno = errno;
return(0);
}
*/
TIMEOUT(rval = stat(dir, &sbuf));
if (rval == -1) {
*Lisp_errno = errno;
return(0);
}
/*
* If the cached version array is still valid, we can return immediately.
*/
/*
* Cache mechanism is not used now, because of the bug of Sun OS.
* Cache mechanism was not used because of a bug in Sun OS.
* Sometimes just after unlinking a file on a directory, the st_mtime
* of the directory does not change. This will make Maiko believe
* cached version array is still valid, although it is already invalid.
@@ -3087,9 +3079,15 @@ static int get_version_array(char *dir, char *file, FileName *varray, CurrentVAr
*/
/*
if ((sbuf.st_mtime == cache->mtime) && strcmp(dir, cache->path) == 0
&& strcmp(lcased_file, cache->file) == 0) return(1);
*/
* If the cached version array is still valid, we can return immediately.
*/
#if 0
/* there is a (different?) problem (#1661) with the caching - disable until it's solved */
if ((sbuf.st_mtime == cache->mtime) && strcmp(dir, cache->path) == 0
&& strcmp(lcased_file, cache->file) == 0) return(1);
#endif
errno = 0;
TIMEOUT0(dirp = opendir(dir));
if (dirp == NULL) {
@@ -3140,11 +3138,9 @@ static int get_version_array(char *dir, char *file, FileName *varray, CurrentVAr
/*
* Update cache information.
*/
/*
strcpy(cache->path, dir);
strcpy(cache->file, lcased_file);
cache->mtime = sbuf.st_mtime;
*/
strcpy(cache->path, dir);
strcpy(cache->file, lcased_file);
cache->mtime = sbuf.st_mtime;
TIMEOUT(closedir(dirp));
return (1);
#endif /* DOS */

View File

@@ -59,8 +59,8 @@ void make_dsp_instance(DspInterface dsp, char *lispbitmap, int width_hint, int h
} else if (VGA_p()) {
VGA_init(dsp, 0, 0, 0, depth_hint);
} else { /* Can't set *ANY* video mode! */
(void)fprintf(stderr, "No portable graphics mode supported by this host.\n");
(void)fprintf(stderr, "\n-Expected VESA or VGA.\n");
(void)(void)fprintf(stderr, "No portable graphics mode supported by this host.\n");
(void)(void)fprintf(stderr, "\n-Expected VESA or VGA.\n");
exit(1);
}
break;
@@ -69,7 +69,7 @@ void make_dsp_instance(DspInterface dsp, char *lispbitmap, int width_hint, int h
#elif XWINDOW
/* lispbitmap is 0 when we call X_init the first time. */
if (X_init(dsp, 0, LispDisplayRequestedWidth, LispDisplayRequestedHeight, depth_hint) == NULL) {
fprintf(stderr, "Can't open display.");
(void)fprintf(stderr, "Can't open display.");
exit(-1);
}
#endif /* DOS | XWINDOW */
@@ -87,7 +87,7 @@ void GenericReturnVoid(void *d) {(void)d; return; }
void GenericPanic(void *d) {
(void)d;
TPRINT(("Enter GenericPanic\n"));
fprintf(stderr, "Panic! Call to uninitialized display slot!");
(void)fprintf(stderr, "Panic! Call to uninitialized display slot!");
exit(0);
}

View File

@@ -45,7 +45,7 @@ LispPTR N_OP_findkey(LispPTR tos, int byte) {
#endif
if (CURRENTFX->alink & 1) { /* slow case */
find_end = (DLword *)NativeAligned2FromLAddr(STK_OFFSET | (CURRENTFX->blink - 4));
find_end = NativeAligned2FromStackOffset(CURRENTFX->blink - 4);
} else { /* Fast cae */
find_end = ((DLword *)CURRENTFX) - 2 - 4;
}

View File

@@ -107,8 +107,14 @@ LispPTR subr_TCP_ops(int op, LispPTR nameConn, LispPTR proto, LispPTR length, Li
addr_class = LispNumToCInt(nameConn);
protocol = LispNumToCInt(proto);
result = socket(addr_class, protocol, 0);
#ifndef MAIKO_OS_HAIKU
fcntl(result, F_SETFL, fcntl(result, F_GETFL, 0) | O_ASYNC | O_NONBLOCK);
#else
fcntl(result, F_SETFL, fcntl(result, F_GETFL, 0) | O_NONBLOCK);
#endif
#ifdef F_SETOWN
fcntl(result, F_SETOWN, getpid());
#endif
return (GetSmallp(result));
case TCPconnect: /* args: hostname or (fixp)address, socket# */
@@ -131,7 +137,9 @@ LispPTR subr_TCP_ops(int op, LispPTR nameConn, LispPTR proto, LispPTR length, Li
return (NIL);
}
fcntl(result, F_SETFL, fcntl(result, F_GETFL, 0) | O_NONBLOCK);
#ifdef F_SETOWN
fcntl(result, F_SETOWN, getpid());
#endif
return (GetSmallp(result));
@@ -197,13 +205,20 @@ LispPTR subr_TCP_ops(int op, LispPTR nameConn, LispPTR proto, LispPTR length, Li
sigset_t signals;
sigemptyset(&signals);
#ifndef MAIKO_OS_HAIKU
sigaddset(&signals, SIGIO);
#endif
sigprocmask(SIG_BLOCK, &signals, NULL);
#ifndef MAIKO_OS_HAIKU
fcntl(result, F_SETFL, fcntl(result, F_GETFL, 0) | O_ASYNC | O_NONBLOCK);
fcntl(result, F_SETOWN, getpid());
#else
fcntl(result, F_SETFL, fcntl(result, F_GETFL, 0) | O_NONBLOCK);
#endif
#ifdef F_SETOWN
fcntl(result, F_SETOWN, getpid());
#endif
if (listen(result, 5) == -1) {
perror("TCP Listen");
close(result);
@@ -225,8 +240,9 @@ LispPTR subr_TCP_ops(int op, LispPTR nameConn, LispPTR proto, LispPTR length, Li
return (NIL);
}
fcntl(result, F_SETFL, fcntl(result, F_GETFL, 0) | O_NONBLOCK);
#ifdef F_SETOWN
fcntl(result, F_SETOWN, getpid());
#endif
return (GetSmallp(result));
case INETpeername: /* socket#, buffer for name string */
@@ -259,9 +275,14 @@ LispPTR subr_TCP_ops(int op, LispPTR nameConn, LispPTR proto, LispPTR length, Li
close(result);
return (NIL);
}
#ifndef MAIKO_OS_HAIKU
fcntl(result, F_SETFL, fcntl(result, F_GETFL, 0) | O_ASYNC | O_NONBLOCK);
#else
fcntl(result, F_SETFL, fcntl(result, F_GETFL, 0) | O_NONBLOCK);
#endif
#ifdef F_SETOWN
fcntl(result, F_SETOWN, getpid());
#endif
FD_SET(result, &LispIOFds); /* so we get interrupts */
FD_SET(result, &LispReadFds);
DBPRINT(("LispIOFds = %p\n", (void *)&LispIOFds));

View File

@@ -124,7 +124,7 @@ void init_ifpage(unsigned sysout_size) {
new_lastvmem = (sysout_size * PAGES_IN_MBYTE) - 1;
if ((!Storage_expanded) && (InterfacePage->dllastvmempage != new_lastvmem)) {
fprintf(stderr, "You can't expand VMEM\n");
(void)fprintf(stderr, "You can't expand VMEM\n");
exit(-1);
} else { /* Set value which will be set to \\LASTVMEMFILEPAGE in LISP */
InterfacePage->dllastvmempage = new_lastvmem;
@@ -140,9 +140,9 @@ void init_ifpage(unsigned sysout_size) {
#endif /* BIGVM */
/* unfortunately, Lisp only looks at a 16 bit serial number */
#ifndef DOS
#if !defined(DOS) && !defined(MAIKO_OS_HAIKU)
InterfacePage->serialnumber = 0xffff & gethostid();
#endif /* DOS */
#endif /* DOS MAIKO_OS_HAIKU */
/* get user name and stuff into vmem; this is the VMEM buffer;
This is a BCPL string -- it starts with a length count. C strings

View File

@@ -93,7 +93,7 @@ int main(int argc, char *argv[]) {
for (i = 1; i < argc; i++) {
if ((strcmp(argv[i], "-d") == 0) || (strcmp(argv[i], "-display") == 0)) {
if (i == argc - 1) {
fprintf(stderr, "Missing argument to -display option.\n");
(void)fprintf(stderr, "Missing argument to -display option.\n");
exit(1);
}
displayName = argv[++i];
@@ -138,7 +138,7 @@ int main(int argc, char *argv[]) {
filetorun = LDEX;
goto run;
} else {
fprintf(stderr, "Unable to open X11 display %s\n",
(void)fprintf(stderr, "Unable to open X11 display %s\n",
displayName ? displayName : "from DISPLAY");
exit(1);
}
@@ -147,7 +147,7 @@ int main(int argc, char *argv[]) {
#ifdef USESUNSCREEN
if ((FrameBufferFd = open("/dev/fb", O_RDWR)) < 0) {
fprintf(stderr, "lde: can't open FrameBuffer\n");
(void)fprintf(stderr, "lde: can't open FrameBuffer\n");
exit(1);
}
if (ioctl(FrameBufferFd, FBIOGTYPE, &my_screen) < 0) {
@@ -187,7 +187,7 @@ int main(int argc, char *argv[]) {
run:
if (filetorun == NULL) {
fprintf(stderr, "Unable to determine what display program to run.\n");
(void)fprintf(stderr, "Unable to determine what display program to run.\n");
exit(1);
}
@@ -201,6 +201,7 @@ int main(int argc, char *argv[]) {
} else {
/* copy up to and including the final "/" in the path */
dirsepp = stpncpy(filetorunpath, argv[0], dirsepp + 1 - argv[0]);
/* dirsepp now points to the trailing null in the copy */
strncpy(dirsepp, filetorun, PATH_MAX - (dirsepp - filetorunpath));
argv[0] = filetorunpath;

View File

@@ -121,14 +121,14 @@ unsigned sysout_loader(const char *sysout_file_name, unsigned sys_size) {
*/
#ifndef NOVERSION
if (ifpage.lversion < LVERSION) {
fprintf(stderr, "Lisp VM is too old for this emulator.\n");
fprintf(stderr, "(version is %d, must be at least %d.)\n", ifpage.lversion, LVERSION);
(void)fprintf(stderr, "Lisp VM is too old for this emulator.\n");
(void)fprintf(stderr, "(version is %d, must be at least %d.)\n", ifpage.lversion, LVERSION);
exit(-1);
}
if (ifpage.minbversion > MINBVERSION) {
fprintf(stderr, "Emulator is too old for this Lisp VM.\n");
fprintf(stderr, "(version is %d, must be at least %d.)\n", MINBVERSION, ifpage.minbversion);
(void)fprintf(stderr, "Emulator is too old for this Lisp VM.\n");
(void)fprintf(stderr, "(version is %d, must be at least %d.)\n", MINBVERSION, ifpage.minbversion);
exit(-1);
}
#endif /* NOVERSION */
@@ -157,9 +157,9 @@ unsigned sysout_loader(const char *sysout_file_name, unsigned sys_size) {
/* Hence we have to observe the display protocol. */
VESA_errorexit(tmp);
#else
fprintf(stderr, "sysout_loader: You can't specify the process size.\n");
fprintf(stderr, "Because, secondary space is already used.\n");
fprintf(stderr, "(size is %d, you specified %d.)\n", ifpage.process_size, sys_size);
(void)fprintf(stderr, "sysout_loader: You can't specify the process size.\n");
(void)fprintf(stderr, "Because, secondary space is already used.\n");
(void)fprintf(stderr, "(size is %d, you specified %d.)\n", ifpage.process_size, sys_size);
exit(-1);
#endif /* DOS */
}
@@ -176,7 +176,7 @@ unsigned sysout_loader(const char *sysout_file_name, unsigned sys_size) {
lispworld_scratch = mmap(0, sys_size * MBYTE, PROT_READ|PROT_WRITE, MAP_ANON | MAP_PRIVATE, -1, 0);
if (lispworld_scratch == MAP_FAILED) {
fprintf(stderr, "sysout_loader: can't allocate Lisp %dMBytes VM \n", sys_size);
(void)fprintf(stderr, "sysout_loader: can't allocate Lisp %dMBytes VM \n", sys_size);
exit(-1);
}

View File

@@ -26,7 +26,7 @@
#include "gcarraydefs.h" // for get_package_atom
#include "gcdata.h" // for FRPLPTR
#include "lispemul.h" // for LispPTR, state, CurrentStackPTR, NIL_PTR, NIL
#include "lispmap.h" // for S_POSITIVE, STK_OFFSET
#include "lispmap.h" // for S_POSITIVE
#include "loopsopsdefs.h" // for lcfuncall, LCFetchMethod, LCFetchMethodOrHelp
#include "lspglob.h"
#include "lsptypes.h" // for GetDTD, GetTypeNumber, dtd, Listp, GETWORD
@@ -358,7 +358,7 @@ LispPTR lcfuncall(unsigned int atom_index, int argnum, int bytenum)
CURRENTFX->nextblock = (LAddrFromNative(CurrentStackPTR) & 0x0ffff) - (argnum << 1) + 4 /* +3 */;
/* Setup IVar */
IVar = NativeAligned2FromLAddr((((LispPTR)(CURRENTFX->nextblock)) | STK_OFFSET));
IVar = NativeAligned2FromStackOffset(CURRENTFX->nextblock);
/* Set PC to the Next Instruction and save into FX */
CURRENTFX->pc = ((UNSIGNED)PC - (UNSIGNED)FuncObj) + bytenum;

View File

@@ -364,7 +364,7 @@ int main(int argc, char *argv[])
}
if (argv[i] && ((strcmp(argv[i], "-help") == 0) || (strcmp(argv[i], "-HELP") == 0))) {
fprintf(stderr, "%s%s", helpstring, nethubHelpstring);
(void)fprintf(stderr, "%s%s", helpstring, nethubHelpstring);
exit(0);
}
@@ -387,7 +387,7 @@ int main(int argc, char *argv[])
}
if (access(sysout_name, R_OK)) {
perror("Couldn't find a sysout to run");
fprintf(stderr, "%s%s", helpstring, nethubHelpstring);
(void)fprintf(stderr, "%s%s", helpstring, nethubHelpstring);
exit(1);
}
/* OK, sysout name is now in sysout_name, and i is moved past a supplied name */
@@ -403,11 +403,11 @@ int main(int argc, char *argv[])
if (errno == 0 && tmpint > 0) {
TIMER_INTERVAL = tmpint;
} else {
fprintf(stderr, "Bad value for -t (integer > 0)\n");
(void)fprintf(stderr, "Bad value for -t (integer > 0)\n");
exit(1);
}
} else {
fprintf(stderr, "Missing argument after -t\n");
(void)fprintf(stderr, "Missing argument after -t\n");
exit(1);
}
}
@@ -419,11 +419,11 @@ int main(int argc, char *argv[])
if (errno == 0 && tmpint > 0) {
sysout_size = (unsigned)tmpint;
} else {
fprintf(stderr, "Bad value for -m (integer > 0)\n");
(void)fprintf(stderr, "Bad value for -m (integer > 0)\n");
exit(1);
}
} else {
fprintf(stderr, "Missing argument after -m\n");
(void)fprintf(stderr, "Missing argument after -m\n");
exit(1);
}
}
@@ -462,22 +462,22 @@ int main(int argc, char *argv[])
if (argc > ++i) {
int read = sscanf(argv[i], "%dx%d", &width, &height);
if(read != 2) {
fprintf(stderr, "Could not parse -sc argument %s\n", argv[i]);
(void)fprintf(stderr, "Could not parse -sc argument %s\n", argv[i]);
exit(1);
}
} else {
fprintf(stderr, "Missing argument after -sc\n");
(void)fprintf(stderr, "Missing argument after -sc\n");
exit(1);
}
} else if ((strcmp(argv[i], "-pixelscale") == 0) || (strcmp(argv[i], "-PIXELSCALE") == 0)) {
if (argc > ++i) {
int read = sscanf(argv[i], "%d", &pixelscale);
if(read != 1) {
fprintf(stderr, "Could not parse -pixelscale argument %s\n", argv[i]);
(void)fprintf(stderr, "Could not parse -pixelscale argument %s\n", argv[i]);
exit(1);
}
} else {
fprintf(stderr, "Missing argument after -pixelscale\n");
(void)fprintf(stderr, "Missing argument after -pixelscale\n");
exit(1);
}
} else if ((strcmp(argv[i], "-t") == 0) || (strcmp(argv[i], "-T") == 0)
@@ -485,7 +485,7 @@ int main(int argc, char *argv[])
if (argc > ++i) {
windowtitle = argv[i];
} else {
fprintf(stderr, "Missing argument after -title\n");
(void)fprintf(stderr, "Missing argument after -title\n");
exit(1);
}
}
@@ -511,7 +511,7 @@ int main(int argc, char *argv[])
ether_host[4] = b4;
ether_host[5] = b5;
} else {
fprintf(stderr, "Missing or bogus -E argument\n");
(void)fprintf(stderr, "Missing or bogus -E argument\n");
ether_fd = -1;
exit(1);
}
@@ -524,7 +524,7 @@ int main(int argc, char *argv[])
if (argc > ++i) {
setNethubHost(argv[i]);
} else {
fprintf(stderr, "Missing argument after -nh-host\n");
(void)fprintf(stderr, "Missing argument after -nh-host\n");
exit(1);
}
}
@@ -535,11 +535,11 @@ int main(int argc, char *argv[])
if (errno == 0 && tmpint > 0) {
setNethubPort(tmpint);
} else {
fprintf(stderr, "Bad value for -nh-port\n");
(void)fprintf(stderr, "Bad value for -nh-port\n");
exit(1);
}
} else {
fprintf(stderr, "Missing argument after -nh-port\n");
(void)fprintf(stderr, "Missing argument after -nh-port\n");
exit(1);
}
}
@@ -549,11 +549,11 @@ int main(int argc, char *argv[])
if (sscanf(argv[i], "%x-%x-%x-%x-%x-%x", &b0, &b1, &b2, &b3, &b4, &b5) == 6) {
setNethubMac(b0, b1, b2, b3, b4, b5);
} else {
fprintf(stderr, "Invalid argument for -nh-mac\n");
(void)fprintf(stderr, "Invalid argument for -nh-mac\n");
exit(1);
}
} else {
fprintf(stderr, "Missing argument after -nh-mac\n");
(void)fprintf(stderr, "Missing argument after -nh-mac\n");
exit(1);
}
}
@@ -564,11 +564,11 @@ int main(int argc, char *argv[])
if (errno == 0 && tmpint >= 0) {
setNethubLogLevel(tmpint);
} else {
fprintf(stderr, "Bad value for -nh-loglevel\n");
(void)fprintf(stderr, "Bad value for -nh-loglevel\n");
exit(1);
}
} else {
fprintf(stderr, "Missing argument after -nh-loglevel\n");
(void)fprintf(stderr, "Missing argument after -nh-loglevel\n");
exit(1);
}
}
@@ -582,11 +582,11 @@ int main(int argc, char *argv[])
if (errno == 0 && tmpint > 1000) {
insnsCountdownForTimerAsyncEmulation = tmpint;
} else {
fprintf(stderr, "Bad value for -intr-emu-insns (integer > 1000)\n");
(void)fprintf(stderr, "Bad value for -intr-emu-insns (integer > 1000)\n");
exit(1);
}
} else {
fprintf(stderr, "Missing argument after -intr-emu-insns\n");
(void)fprintf(stderr, "Missing argument after -intr-emu-insns\n");
exit(1);
}
}
@@ -600,11 +600,11 @@ int main(int argc, char *argv[])
if (errno == 0 && tmpint > 0) {
maxpages = (unsigned)tmpint;
} else {
fprintf(stderr, "Bad value for -xpages (integer > 0)\n");
(void)fprintf(stderr, "Bad value for -xpages (integer > 0)\n");
exit(1);
}
} else {
fprintf(stderr, "Missing argument after -xpages\n");
(void)fprintf(stderr, "Missing argument after -xpages\n");
exit(1);
}
}
@@ -615,9 +615,9 @@ int main(int argc, char *argv[])
probemouse(); /* See if the mouse is connected. */
#else
if (getuid() != geteuid()) {
fprintf(stderr, "Effective user is not real user. Resetting uid\n");
(void)fprintf(stderr, "Effective user is not real user. Resetting uid\n");
if (setuid(getuid()) == -1) {
fprintf(stderr, "Unable to reset user id to real user id\n");
(void)fprintf(stderr, "Unable to reset user id to real user id\n");
exit(1);
}
}
@@ -641,7 +641,7 @@ int main(int argc, char *argv[])
if (FindUnixPipes()) /* must call the routine to allocate storage, */
{ /* in case we're re-starting a savevm w/open ptys */
if (please_fork) fprintf(stderr, "Failed to find UNIXCOMM file handles; no processes\n");
if (please_fork) (void)fprintf(stderr, "Failed to find UNIXCOMM file handles; no processes\n");
}
#endif /* DOS */
@@ -665,7 +665,7 @@ int main(int argc, char *argv[])
/* file system directory enumeration stuff */
if (!init_finfo()) {
fprintf(stderr, "Cannot allocate internal data.\n");
(void)fprintf(stderr, "Cannot allocate internal data.\n");
exit(1);
}
#ifdef RS232
@@ -727,9 +727,9 @@ void start_lisp(void) {
TopOfStack = 0;
Error_Exit = 0;
PVar = (DLword *)NativeAligned2FromLAddr(STK_OFFSET | InterfacePage->currentfxp) + FRAMESIZE;
PVar = NativeAligned2FromStackOffset(InterfacePage->currentfxp) + FRAMESIZE;
freeptr = next68k = NativeAligned2FromLAddr(STK_OFFSET | CURRENTFX->nextblock);
freeptr = next68k = NativeAligned2FromStackOffset(CURRENTFX->nextblock);
if (GETWORD(next68k) != STK_FSB_WORD) error("Starting Lisp: Next stack block isn't free!");

View File

@@ -25,8 +25,8 @@
/************************************************************************/
void perrorn(char *s, int n) {
if (s != NULL && *s != '\0') { fprintf(stderr, "%s: ", s); }
fprintf(stderr, "%s\n", strerror(n));
if (s != NULL && *s != '\0') { (void)fprintf(stderr, "%s: ", s); }
(void)fprintf(stderr, "%s\n", strerror(n));
}
/************************************************************************/
@@ -42,7 +42,7 @@ void err_mess(char *from, int no) {
int save_errno = errno; /* Save errno around OSMESSAGE_PRINT */
OSMESSAGE_PRINT({
fprintf(stderr, "System call error: %s errno=%d ", from, no);
(void)fprintf(stderr, "System call error: %s errno=%d ", from, no);
perror("");
});

View File

@@ -37,9 +37,11 @@
#include "gcarraydefs.h"
#include "testtooldefs.h"
#include "lineblt8defs.h"
#include "lsthandldefs.h"
#include "car-cdrdefs.h"
#include "keyeventdefs.h"
#include "rawcolordefs.h"
#define IMIN(x, y) (((x) > (y)) ? (y) : (x))
#define IMAX(x, y) (((x) > (y)) ? (x) : (y))
@@ -72,6 +74,15 @@ LispPTR SLOWBLTCHAR_index;
return; \
}
static void ColorizeFont8(BITMAP *sBM, DLword sXOffset, DLword sYOffset,
BITMAP *dBM, DLword dXOffset, DLword dYOffset,
DLword width, DLword height, u_char col0, u_char col1,
LispPTR sourcetype, LispPTR operation);
static void ColorizeFont8_BIGBM(BITMAP *sBM, DLword sXOffset, DLword sYOffset,
BIGBM *dBM, DLword dXOffset, DLword dYOffset,
DLword width, DLword height, u_char col0, u_char col1,
LispPTR sourcetype, LispPTR operation);
/***********************************************************/
/*
C_slowbltchar
@@ -302,7 +313,7 @@ void C_slowbltchar(LispPTR *args)
u_int ColorizedFont8CACHE[MAXFONTHEIGHT / BITSPERNIBBLE * MAXFONTWIDTH / BITSPERNIBBLE];
void ColorizeFont8(BITMAP *sBM, DLword sXOffset, DLword sYOffset, BITMAP *dBM, DLword dXOffset, DLword dYOffset, DLword width, DLword height, u_char col0, u_char col1,
static void ColorizeFont8(BITMAP *sBM, DLword sXOffset, DLword sYOffset, BITMAP *dBM, DLword dXOffset, DLword dYOffset, DLword width, DLword height, u_char col0, u_char col1,
LispPTR sourcetype, LispPTR operation)
{
DLword *nbase;
@@ -312,10 +323,10 @@ void ColorizeFont8(BITMAP *sBM, DLword sXOffset, DLword sYOffset, BITMAP *dBM, D
sYOffset = sBM->bmheight - (sYOffset + height);
dYOffset = dBM->bmheight - (dYOffset + height);
nbase = (DLword *)NativeAligned2FromLAddr(sBM->bmbase) + (sBM->bmrasterwidth * sYOffset);
(DLword *)dbase = (DLword *)NativeAligned2FromLAddr(dBM->bmbase) + (dBM->bmrasterwidth * dYOffset);
nbase = NativeAligned2FromLAddr(sBM->bmbase) + (sBM->bmrasterwidth * sYOffset);
dbase = (u_char *)NativeAligned2FromLAddr(dBM->bmbase) + (dBM->bmrasterwidth * dYOffset);
for (i = 0, dbase += dXOffset; /* 8bpp */
i < height; i++, nbase += sBM->bmrasterwidth, ((DLword *)dbase) += dBM->bmrasterwidth) {
i < height; i++, nbase += sBM->bmrasterwidth, dbase += dBM->bmrasterwidth * BYTESPER_DLWORD) {
lineBlt8(nbase, (int)sXOffset, dbase, (int)width, col0, col1, sourcetype, operation);
} /* for end */
@@ -332,7 +343,7 @@ void ColorizeFont8(BITMAP *sBM, DLword sXOffset, DLword sYOffset, BITMAP *dBM, D
/* */
/************************************************************************/
void ColorizeFont8_BIGBM(BITMAP *sBM, DLword sXOffset, DLword sYOffset, BIGBM *dBM, DLword dXOffset, DLword dYOffset, DLword width, DLword height, u_char col0, u_char col1,
static void ColorizeFont8_BIGBM(BITMAP *sBM, DLword sXOffset, DLword sYOffset, BIGBM *dBM, DLword dXOffset, DLword dYOffset, DLword width, DLword height, u_char col0, u_char col1,
LispPTR sourcetype, LispPTR operation)
{
DLword *nbase;
@@ -375,14 +386,13 @@ loop:
dest_h = dest_fragbottom - (dest_fragtop + dest_yoffset);
} /* end if */
dbase =
(DLword *)NativeAligned2FromLAddr(dest_frag->bmbase) + (dest_frag->bmrasterwidth * dest_yoffset);
nbase = (DLword *)NativeAligned2FromLAddr(sBM->bmbase) + (sBM->bmrasterwidth * sYOffset);
dbase = (u_char *)NativeAligned2FromLAddr(dest_frag->bmbase) + (dest_frag->bmrasterwidth * dest_yoffset);
nbase = NativeAligned2FromLAddr(sBM->bmbase) + (sBM->bmrasterwidth * sYOffset);
sYOffset += (DLword)dest_h; /* next src yoffset */
for (i = 0, dbase += dXOffset; i < dest_h;
i++, nbase += sBM->bmrasterwidth, ((DLword *)dbase) += dest_frag->bmrasterwidth) {
i++, nbase += sBM->bmrasterwidth, dbase += dest_frag->bmrasterwidth * BYTESPER_DLWORD) {
lineBlt8(nbase, (int)sXOffset, dbase, (int)width, col0, col1, sourcetype, operation);
}
@@ -415,8 +425,8 @@ void newColorizeFont8(PILOTBBT *pbt, u_char backcolor, u_char forecolor, LispPTR
u_char *dbase;
int i;
nbase = (DLword *)NativeAligned2FromLAddr((pbt->pbtsourcehi << 16) | (pbt->pbtsourcelo));
(DLword *)dbase = (DLword *)NativeAligned2FromLAddr((pbt->pbtdesthi << 16) | (pbt->pbtdestlo));
nbase = NativeAligned2FromLAddr((pbt->pbtsourcehi << 16) | (pbt->pbtsourcelo));
dbase = (u_char *)NativeAligned2FromLAddr((pbt->pbtdesthi << 16) | (pbt->pbtdestlo));
dbase += pbt->pbtdestbit;
for (i = 0; i < pbt->pbtheight;
i++, nbase += pbt->pbtsourcebpl / 16, dbase += pbt->pbtdestbpl / 8) {
@@ -494,7 +504,7 @@ void Uncolorize_Bitmap(LispPTR args[])
if ((x & 0xF) != 0) *(d_base++) = word;
if (y != (s_height - 1)) { (DLword *)s_base += s_rasterwidth; } /* end if( y ) */
if (y != (s_height - 1)) { s_base += s_rasterwidth * BYTESPER_DLWORD; } /* end if( y ) */
} /* end for( y ) */
@@ -532,11 +542,11 @@ LispPTR Colorize_Bitmap(LispPTR args[])
s_base = (DLword *)NativeAligned2FromLAddr(s_bitmap->bmbase) +
s_bitmap->bmrasterwidth * (s_bitmap->bmheight - (s_bottom + height));
(DLword *)d_base = (DLword *)NativeAligned2FromLAddr(d_bitmap->bmbase) +
d_base = (u_char *)NativeAligned2FromLAddr(d_bitmap->bmbase) +
d_bitmap->bmrasterwidth * (d_bitmap->bmheight - (d_bottom + height));
for (i = 0, d_base += d_left; i < height;
i++, s_base += s_bitmap->bmrasterwidth, (DLword *)d_base += d_bitmap->bmrasterwidth) {
i++, s_base += s_bitmap->bmrasterwidth, d_base += d_bitmap->bmrasterwidth * BYTESPER_DLWORD) {
lineBlt8(s_base, s_left, d_base, width, (u_char)color0, (u_char)color1, INPUT_atom,
REPLACE_atom);

View File

@@ -129,7 +129,7 @@ void contextsw(DLword fxnum, DLword bytenum, DLword flags)
Midpunt(fxnum); /* exchanging FX */
next68k = (DLword *)NativeAligned2FromLAddr(STK_OFFSET | CURRENTFX->nextblock);
next68k = NativeAligned2FromStackOffset(CURRENTFX->nextblock);
if (GETWORD(next68k) != STK_FSB_WORD) error("contextsw(): MP9316");
freeptr = next68k;

View File

@@ -57,7 +57,7 @@
#include "gcarraydefs.h" // for aref1
#include "kprintdefs.h" // for print, prindatum
#include "lispemul.h" // for DLword, LispPTR, DLbyte, state, T, ConsCell
#include "lispmap.h" // for STK_OFFSET, ATOMS_HI
#include "lispmap.h" // for ATOMS_HI
#include "lspglob.h" // for Package_from_Index_word, Stackspace
#include "lsptypes.h" // for GETWORD, dtd, GETBYTE, NEWSTRINGP, GetType...
#include "mkatomdefs.h" // for compare_chars, make_atom
@@ -852,7 +852,7 @@ void dump_bf(Bframe *bf) {
if (BFRAMEPTR(bf)->residual) { goto printflags; }
ptr = NativeAligned2FromLAddr(STK_OFFSET + bf->ivar);
ptr = NativeAligned2FromStackOffset(bf->ivar);
if ((((DLword *)bf - ptr) > 512) || (((UNSIGNED)ptr & 1) != 0)) {
printf("\nInvalid basic frame");
return;
@@ -910,7 +910,7 @@ void dump_fx(struct frameex1 *fx_addr68k) {
/* should pay attention to the name table like RAID does */
next68k = (DLword *)NativeAligned2FromLAddr((fx_addr68k->nextblock + STK_OFFSET));
next68k = NativeAligned2FromStackOffset(fx_addr68k->nextblock);
if (fx_addr68k == CURRENTFX) { next68k = CurrentStackPTR + 2; }
if ((next68k < ptr) || (((UNSIGNED)next68k & 1) != 0)) {
@@ -937,7 +937,7 @@ void dump_stackframe(struct frameex1 *fx_addr68k) {
if ((fx_addr68k->alink & 1) == 0) { /* FAST */
bf = (Bframe *)(((DLword *)fx_addr68k) - 2);
} else { /* SLOW */
bf = (Bframe *)NativeAligned4FromLAddr((fx_addr68k->blink + STK_OFFSET));
bf = (Bframe *)NativeAligned4FromStackOffset(fx_addr68k->blink);
}
dump_bf(bf);
dump_fx((struct frameex1 *)fx_addr68k);
@@ -1104,12 +1104,12 @@ void all_stack_dump(DLword start, DLword end, DLword silent)
if (start == 0)
start68k = Stackspace + InterfacePage->stackbase;
else
start68k = NativeAligned2FromLAddr(STK_OFFSET | start);
start68k = NativeAligned2FromStackOffset(start);
if (end == 0)
end68k = Stackspace + InterfacePage->endofstack;
else
end68k = NativeAligned2FromLAddr(STK_OFFSET | end);
end68k = NativeAligned2FromStackOffset(end);
stkptr = (STKH *)start68k;
@@ -1156,7 +1156,7 @@ void all_stack_dump(DLword start, DLword end, DLword silent)
printf(" <-***current***");
size = EndSTKP - (DLword *)stkptr;
} else {
size = NativeAligned2FromLAddr(STK_OFFSET | ((FX *)stkptr)->nextblock) - (DLword *)stkptr;
size = NativeAligned2FromStackOffset(((FX *)stkptr)->nextblock) - (DLword *)stkptr;
}
goto checksize;
default:

View File

@@ -47,6 +47,10 @@ unsigned long tick_count = 0; /* approx 18 ticks per sec */
#include <sys/time.h>
#endif /* DOS */
#ifdef MAIKO_OS_HAIKU
#include <OS.h>
#endif
#if defined(USE_DLPI)
#include <stropts.h>
extern int ether_fd;
@@ -301,6 +305,8 @@ void subr_settime(LispPTR args[])
dosday.year = uxtime.tm_year;
dosday.dayofweek = uxtime.tm_wday;
_dos_setdate(&dosday);
#elif defined(MAIKO_OS_HAIKU)
(void)args[0];
#elif defined(MAIKO_OS_EMSCRIPTEN)
(void)args[0];
#else
@@ -556,17 +562,19 @@ static void int_io_service(int sig)
/************************************************************************/
static void int_io_init(void) {
#ifndef DOS
#if !defined(DOS) || !defined(MAIKO_OS_HAIKU)
struct sigaction io_action;
io_action.sa_handler = int_io_service;
sigemptyset(&io_action.sa_mask);
io_action.sa_flags = 0;
#ifndef MAIKO_OS_HAIKU
if (sigaction(SIGIO, &io_action, NULL) == -1) {
perror("sigaction: SIGIO");
} else {
DBPRINT(("I/O interrupts enabled\n"));
}
#endif
#if defined(USE_DLPI)
DBPRINT(("INIT ETHER: Doing I_SETSIG.\n"));
@@ -578,7 +586,7 @@ static void int_io_init(void) {
return;
}
#endif /* USE_DLPI */
#endif /* DOS */
#endif /* DOS MAIKO_OS_HAIKU */
}
/************************************************************************/
@@ -600,7 +608,9 @@ void int_block(void) {
sigset_t signals;
sigemptyset(&signals);
sigaddset(&signals, SIGVTALRM);
#ifndef MAIKO_OS_HAIKU
sigaddset(&signals, SIGIO);
#endif
sigaddset(&signals, SIGALRM);
sigaddset(&signals, SIGXFSZ);
#ifdef FLTINT
@@ -628,7 +638,9 @@ void int_unblock(void) {
sigset_t signals;
sigemptyset(&signals);
sigaddset(&signals, SIGVTALRM);
#ifndef MAIKO_OS_HAIKU
sigaddset(&signals, SIGIO);
#endif
sigaddset(&signals, SIGALRM);
sigaddset(&signals, SIGXFSZ);
#ifdef FLTINT

View File

@@ -73,7 +73,7 @@ void check_sysout(char *sysout_file_name, int verbose) {
}
void usage(char *prog) {
fprintf(stderr, "Usage: %s [-v] sysout-filename\n", prog);
(void)fprintf(stderr, "Usage: %s [-v] sysout-filename\n", prog);
exit(-1);
}

View File

@@ -51,7 +51,11 @@ void tty_open(void)
if (TTY_Fd < 0) {
if ((TTY_Fd = open(TTY_Dev, O_RDWR)) >= 0) {
tcgetattr(TTY_Fd, &options);
#ifndef MAIKO_OS_HAIKU
options.c_iflag &= ~(IMAXBEL|IXOFF|INPCK|BRKINT|PARMRK|ISTRIP|INLCR|IGNCR|ICRNL|IXON|IGNPAR);
#else
options.c_iflag &= ~(IXOFF|INPCK|BRKINT|PARMRK|ISTRIP|INLCR|IGNCR|ICRNL|IXON|IGNPAR);
#endif
options.c_iflag |= IGNBRK;
options.c_oflag &= ~OPOST;
options.c_lflag &= ~(ECHO|ECHOE|ECHOK|ECHONL|ICANON|ISIG|IEXTEN|NOFLSH|TOSTOP);

View File

@@ -107,7 +107,7 @@ void ufn(DLword bytecode)
(LAddrFromNative(CurrentStackPTR) & 0x0ffff) - (entry68k->arg_num << 1) + 2 /** +1 **/;
/* Setup IVar */
IVar = NativeAligned2FromLAddr((((LispPTR)(CURRENTFX->nextblock)) | STK_OFFSET));
IVar = NativeAligned2FromStackOffset(CURRENTFX->nextblock);
#ifdef LISPTRACE
print(entry68k->atom_name);

View File

@@ -219,7 +219,9 @@ int fork_Unix(void) {
/* interrupts need to be blocked here so subprocess won't see them */
sigemptyset(&signals);
sigaddset(&signals, SIGVTALRM);
#ifndef MAIKO_OS_HAIKU
sigaddset(&signals, SIGIO);
#endif
sigaddset(&signals, SIGALRM);
sigaddset(&signals, SIGXFSZ);
sigaddset(&signals, SIGFPE);
@@ -234,19 +236,23 @@ int fork_Unix(void) {
/* JRB - fork_Unix is now called in ldeboot; leave UnixPipe{In,Out} open
and put their numbers in the environment so parent can find them */
/* JDS - NB that sprintf doesn't always return a string! */
/* NHB - if the return value of snprintf() is greater than or equal to the
* size argument, the string was too short and some of the printed
* characters were discarded. However we're printing numbers, so we know
* that the buffer is big enough
*/
char tempstring[30];
snprintf(tempstring, sizeof(tempstring), "%d", UnixToLisp[0]);
(void)snprintf(tempstring, sizeof(tempstring), "%d", UnixToLisp[0]);
setenv("LDEPIPEIN", tempstring, 1);
snprintf(tempstring, sizeof(tempstring), "%d", LispToUnix[1]);
(void)snprintf(tempstring, sizeof(tempstring), "%d", LispToUnix[1]);
setenv("LDEPIPEOUT", tempstring, 1);
snprintf(tempstring, sizeof(tempstring), "%ld", StartTime);
(void)snprintf(tempstring, sizeof(tempstring), "%ld", StartTime);
setenv("LDESTARTTIME", tempstring, 1);
snprintf(tempstring, sizeof(tempstring), "%d", UnixPID);
(void)snprintf(tempstring, sizeof(tempstring), "%d", UnixPID);
setenv("LDEUNIXPID", tempstring, 1);
close(LispToUnix[0]);
@@ -273,7 +279,7 @@ int fork_Unix(void) {
DBPRINT(("Input packet wrong length: %zd", len));
exit(1);
}
slot = IOBuf[3];
slot = (int)IOBuf[3];
IOBuf[3] = 1; /* Start by signalling success in return-code */
switch (IOBuf[0]) {
@@ -349,7 +355,7 @@ int fork_Unix(void) {
perror("slave socket");
exit(1);
}
sprintf(PipeName, "/tmp/LPU%ld-%d", StartTime, slot);
(void)snprintf(PipeName, sizeof(PipeName), "/tmp/LPU%ld-%d", StartTime, slot);
memset(&addr, 0, sizeof(struct sockaddr_un));
addr.sun_family = AF_UNIX;
strcpy(addr.sun_path, PipeName);

View File

@@ -776,7 +776,7 @@ LispPTR uraid_commands(void) {
break;
case 's': /* SHELL */
switch (vfork()) {
case -1: (void)fprintf(stderr, "uraid: Fork failed.\n"); exit(1);
case -1: (void)(void)fprintf(stderr, "uraid: Fork failed.\n"); exit(1);
case 0: (void)execl("/bin/sh", "sh", "-i", NULL); exit(1);
@@ -864,7 +864,9 @@ int device_before_raid(void) {
#ifdef XWINDOW
/* So X events still get recognized. */
sigemptyset(&signals);
#ifndef MAIKO_OS_HAIKU
sigaddset(&signals, SIGIO);
#endif
sigprocmask(SIG_UNBLOCK, &signals, NULL);
#endif
@@ -901,7 +903,7 @@ char *alloc_hideDISP(int size)
{
case SFS_NOTSWITCHABLE :
if((retaddr =malloc(size)) ==0){
fprintf(stderr,"can't alloc hide space\n");
(void)fprintf(stderr,"can't alloc hide space\n");
}
break;
case 0 :
@@ -925,7 +927,7 @@ char *alloc_hideDISP(int size)
printf("Hidespace inside Lisp(4)\n");
}
else if((retaddr=malloc(size)) ==0){
fprintf(stderr,"can't alloc hide disp\n");
(void)fprintf(stderr,"can't alloc hide disp\n");
}
printf("Hidespace new\n");
break;

View File

@@ -204,18 +204,10 @@ LispPTR unix_getparm(LispPTR *args) {
#else
envvalue = "mc68020";
#endif
} else if (strcmp(envname, "OSNAME") == 0) {
envvalue = MAIKO_OS_NAME;
} else if (strcmp(envname, "ARCH") == 0) {
#if defined(sparc)
envvalue = "sun4";
#elif defined(DOS)
envvalue = "dos";
#elif defined(MAIKO_OS_MACOS)
envvalue = "i386";
#else
envvalue = "sun3";
#endif
envvalue = MAIKO_ARCH_NAME;
} else if (strcmp(envname, "DISPLAY") == 0) {
#if defined(XWINDOW)
envvalue = "X";
@@ -239,10 +231,13 @@ LispPTR unix_getparm(LispPTR *args) {
struct passwd *pwd;
if ((pwd = getpwuid(getuid())) == NULL) return NIL;
envvalue = pwd->pw_gecos;
} else if (strcmp(envname, "HOSTID") == 0) {
}
#ifndef MAIKO_OS_HAIKU
else if (strcmp(envname, "HOSTID") == 0) {
snprintf(result, sizeof(result), "%lx", gethostid());
envvalue = result;
}
#endif /* MAIKO_OS_HAIKU */
#endif /* DOS */
else
return NIL;

View File

@@ -235,7 +235,7 @@ void VESA_enter(DspInterface dsp)
if (VESA_describemode(dsp->graphicsmode) != 0) {
_setvideomode(_DEFAULTMODE);
_clearscreen(_GCLEARSCREEN);
fprintf(stderr, "Can't set VESA mode %o.\n", dsp->graphicsmode);
(void)fprintf(stderr, "Can't set VESA mode %o.\n", dsp->graphicsmode);
exit(0);
}
/* Get the segaddr. An addr. is a seg shifted 4 bits! */
@@ -326,7 +326,7 @@ VESA_errorexit(char *s, int errno)
{
_setvideomode(_DEFAULTMODE);
_clearscreen(_GCLEARSCREEN);
fprintf(stderr, s);
(void)fprintf(stderr, s);
fflush(stderr);
exit(errno);
}

View File

@@ -34,7 +34,7 @@ void VGA_setmax(DspInterface dsp)
struct videoconfig vc;
if (!_setvideomode(_MAXRESMODE)) {
fprintf(stderr, "Can't set graphics mode.\n");
(void)fprintf(stderr, "Can't set graphics mode.\n");
exit(1);
}
_getvideoconfig(&vc);

View File

@@ -487,7 +487,7 @@ LispPTR vmem_save(char *sysout_file_name)
TIMEOUT(rval = rename(tempname, sysout_file_name));
if (rval == -1) {
fprintf(stderr, "sysout is saved to temp file, %s.", tempname);
(void)fprintf(stderr, "sysout is saved to temp file, %s.", tempname);
return (FILECANNOTWRITE);
}

View File

@@ -136,8 +136,8 @@ Pixmap make_Xicon(DspInterface dsp)
Lisp_icon_height);
} else if (value == BitmapFileInvalid)
fprintf(stderr, "Iconpixmapfile %s contains invalid bitmap data\n", iconpixmapfile);
(void)fprintf(stderr, "Iconpixmapfile %s contains invalid bitmap data\n", iconpixmapfile);
else if (value == BitmapNoMemory)
fprintf(stderr, "Not enough memory to allocate icon pixmap\n");
(void)fprintf(stderr, "Not enough memory to allocate icon pixmap\n");
return (IconPixmap);
} /* end make_Xicon */

View File

@@ -110,30 +110,30 @@ extern struct sockaddr_nit snit;
void print_Xusage(const char *prog)
{
fprintf(stderr, " %s options:\n", prog);
fprintf(stderr, " [-sysout] [<sysout>] -path to the Medley image\n");
fprintf(stderr, " -h[elp] -prints this text\n");
fprintf(stderr, " -info -prints configuration info\n");
fprintf(stderr, " -d[isplay] <host>:<display>.<screen>\n");
fprintf(stderr,
(void)fprintf(stderr, " %s options:\n", prog);
(void)fprintf(stderr, " [-sysout] [<sysout>] -path to the Medley image\n");
(void)fprintf(stderr, " -h[elp] -prints this text\n");
(void)fprintf(stderr, " -info -prints configuration info\n");
(void)fprintf(stderr, " -d[isplay] <host>:<display>.<screen>\n");
(void)fprintf(stderr,
" -g[eometry] <geom> -size & placement for the medley window on your X "
"screen\n");
fprintf(stderr,
(void)fprintf(stderr,
" -sc[reen] <geom> -size & placement for the medley display\n");
fprintf(stderr, " -t[itle] <string> -titlebar text for the window manager\n");
fprintf(stderr, " -icontitle <string> | -it <string> -text for the medley icon\n");
fprintf(stderr, " -iconbitmap <path> | -ibm <path> -bitmap for the medley icon\n");
fprintf(stderr,
(void)fprintf(stderr, " -t[itle] <string> -titlebar text for the window manager\n");
(void)fprintf(stderr, " -icontitle <string> | -it <string> -text for the medley icon\n");
(void)fprintf(stderr, " -iconbitmap <path> | -ibm <path> -bitmap for the medley icon\n");
(void)fprintf(stderr,
" -xsync -turn XSynchronize on. (default is off)\n\n");
#if defined(MAIKO_ENABLE_NETHUB)
fprintf(stderr,"\
(void)fprintf(stderr,"\
-nh-host dodo-host Hostname for Dodo Nethub (no networking if missing)\n\
-nh-port port-number Port for Dodo Nethub (optional, default: 3333)\n\
-nh-mac XX-XX-XX-XX-XX-XX Machine-ID for Maiko-VM (optional, default: CA-FF-EE-12-34-56) \n\
-nh-loglevel level Loglevel for Dodo networking (0..2, optional, default: 0)\n\n");
#endif
fprintf(stderr, "Please refer to the manual for further information.\n\n");
exit(0);
(void)fprintf(stderr, "Please refer to the manual for further information.\n\n");
exit(EXIT_FAILURE);
} /* end print_Xusage() */
/************************************************************************/
@@ -206,9 +206,9 @@ void read_Xoption(int *argc, char *argv[])
if (XrmGetResource(commandlineDB, "ldex.display", "Ldex.Display", str_type, &value) == True) {
(void)strncpy(Display_Name, value.addr, value.size);
} else if (getenv("DISPLAY") == (char *)NULL) {
fprintf(stderr, "Can't find a display. Either set the shell\n");
fprintf(stderr, "variable DISPLAY to an appropriate display\n");
fprintf(stderr, "or provide a -display argument.\n");
(void)fprintf(stderr, "Can't find a display. Either set the shell\n");
(void)fprintf(stderr, "variable DISPLAY to an appropriate display\n");
(void)fprintf(stderr, "or provide a -display argument.\n");
print_Xusage(argv[0]);
} else {
envname = getenv("DISPLAY");
@@ -228,7 +228,7 @@ void read_Xoption(int *argc, char *argv[])
}
XCloseDisplay(xdisplay);
} else {
fprintf(stderr, "Open_Display: cannot connect to display %s.", XDisplayName(Display_Name));
(void)fprintf(stderr, "Open_Display: cannot connect to display %s.", XDisplayName(Display_Name));
exit(-1);
}
@@ -248,7 +248,7 @@ void read_Xoption(int *argc, char *argv[])
(void)strncpy(sysout_name, value.addr, value.size);
}
if (sysout_name[0] == '\0') {
fprintf(stderr, "Couldn't find a sysout to run;\n");
(void)fprintf(stderr, "Couldn't find a sysout to run;\n");
print_Xusage(argv[0]);
}
@@ -329,7 +329,7 @@ void read_Xoption(int *argc, char *argv[])
ether_host[4] = b4;
ether_host[5] = b5;
} else {
fprintf(stderr, "Missing or bogus -E argument\n");
(void)fprintf(stderr, "Missing or bogus -E argument\n");
ether_fd = -1;
exit(1);
}