From 4a4b3fb8f15a18175806b53499b1d87dc175f3d0 Mon Sep 17 00:00:00 2001 From: nhmall Date: Sun, 2 Dec 2018 09:56:44 -0500 Subject: [PATCH] add a macro to ease conditional testing based on active window port Add WINDOWPORT macro example: if (WINDOWPORT("tty")) pline("Look at me, I'm on tty at the moment!"); --- include/winprocs.h | 5 +++++ src/bones.c | 2 +- src/cmd.c | 2 +- src/files.c | 2 +- src/restore.c | 6 +++--- src/save.c | 4 ++-- sys/share/pcmain.c | 4 ++-- sys/share/pcunix.c | 4 ++-- sys/share/unixtty.c | 16 ++++++++-------- sys/winnt/winnt.c | 17 ++++++++++------- 10 files changed, 35 insertions(+), 27 deletions(-) diff --git a/include/winprocs.h b/include/winprocs.h index 326f44eb2..316af5171 100644 --- a/include/winprocs.h +++ b/include/winprocs.h @@ -260,6 +260,11 @@ struct wc_Opt { unsigned long wc_bit; }; +/* Macro for the currently active Window Port whose function + pointers have been loaded */ +#define WINDOWPORT(wn) \ + (windowprocs.name && !strncmpi((wn), windowprocs.name, strlen((wn)))) + /* role selection by player_selection(); this ought to be in the core... */ #define RS_NAME 0 #define RS_ROLE 1 diff --git a/src/bones.c b/src/bones.c index 77fc27124..7aadc3967 100644 --- a/src/bones.c +++ b/src/bones.c @@ -190,7 +190,7 @@ sanitize_name(namebuf) char *namebuf; { int c; - boolean strip_8th_bit = (!strcmp(windowprocs.name, "tty") + boolean strip_8th_bit = (WINDOWPORT("tty") && !iflags.wc_eight_bit_input); /* it's tempting to skip this for single-user platforms, since diff --git a/src/cmd.c b/src/cmd.c index e5ac4993f..20327366c 100644 --- a/src/cmd.c +++ b/src/cmd.c @@ -1049,7 +1049,7 @@ wiz_show_wmodes(VOID_ARGS) int x, y; char row[COLNO + 1]; struct rm *lev; - boolean istty = !strcmp(windowprocs.name, "tty"); + boolean istty = WINDOWPORT("tty"); win = create_nhwindow(NHW_TEXT); if (istty) diff --git a/src/files.c b/src/files.c index bec88904f..3dd137743 100644 --- a/src/files.c +++ b/src/files.c @@ -1279,7 +1279,7 @@ boolean uncomp; int i = 0; int f; #ifdef TTY_GRAPHICS - boolean istty = !strncmpi(windowprocs.name, "tty", 3); + boolean istty = WINDOWPORT("tty"); #endif Strcpy(cfn, filename); diff --git a/src/restore.c b/src/restore.c index f26379967..25604f10d 100644 --- a/src/restore.c +++ b/src/restore.c @@ -828,7 +828,7 @@ register int fd; #ifdef AMII_GRAPHICS { extern struct window_procs amii_procs; - if (windowprocs.win_init_nhwindows == amii_procs.win_init_nhwindows) { + if (WINDOWPORT("amii") { extern winid WIN_BASE; clear_nhwindow(WIN_BASE); /* hack until there's a hook for this */ } @@ -844,7 +844,7 @@ register int fd; curs(WIN_MAP, 1, 1); dotcnt = 0; dotrow = 2; - if (strncmpi("X11", windowprocs.name, 3)) + if (!WINDOWPORT("X11")) putstr(WIN_MAP, 0, "Restoring:"); #endif restoreprocs.mread_flags = 1; /* return despite error */ @@ -859,7 +859,7 @@ register int fd; dotrow++; dotcnt = 0; } - if (strncmpi("X11", windowprocs.name, 3)) { + if (!WINDOWPORT("X11")) { putstr(WIN_MAP, 0, "."); } mark_synch(); diff --git a/src/save.c b/src/save.c index bca03c49e..095890f05 100644 --- a/src/save.c +++ b/src/save.c @@ -178,7 +178,7 @@ dosave0() dotcnt = 0; dotrow = 2; curs(WIN_MAP, 1, 1); - if (strncmpi("X11", windowprocs.name, 3)) + if (!WINDOWPORT("X11")) putstr(WIN_MAP, 0, "Saving:"); #endif #ifdef MFLOPPY @@ -242,7 +242,7 @@ dosave0() dotrow++; dotcnt = 0; } - if (strncmpi("X11", windowprocs.name, 3)) { + if (!WINDOWPORT("X11")) { putstr(WIN_MAP, 0, "."); } mark_synch(); diff --git a/sys/share/pcmain.c b/sys/share/pcmain.c index 20b73f728..8651ae8fe 100644 --- a/sys/share/pcmain.c +++ b/sys/share/pcmain.c @@ -499,12 +499,12 @@ _CrtSetReportFile(_CRT_ASSERT, _CRTDBG_FILE_STDERR);*/ #ifdef WIN32 /* - if (!strncmpi(windowprocs.name, "mswin", 5)) + if (WINDOWPORT("mswin")) NHWinMainInit(); else */ #ifdef TTY_GRAPHICS - if (!strncmpi(windowprocs.name, "tty", 3)) { + if (WINDOWPORT("tty")) { iflags.use_background_glyph = FALSE; nttty_open(1); } else { diff --git a/sys/share/pcunix.c b/sys/share/pcunix.c index 22bc4ae4e..bb746ca92 100644 --- a/sys/share/pcunix.c +++ b/sys/share/pcunix.c @@ -198,7 +198,7 @@ getlock() #ifndef SELF_RECOVER if (eraseoldlocks()) { #if defined(WIN32) && defined(TTY_GRAPHICS) - if (!strncmpi(windowprocs.name, "tty", 3)) + if (WINDOWPORT("tty")) clear_screen(); /* display gets fouled up otherwise */ #endif goto gotlock; @@ -212,7 +212,7 @@ getlock() #else /*SELF_RECOVER*/ if (recover_savefile()) { #if defined(WIN32) && defined(TTY_GRAPHICS) - if (!strncmpi(windowprocs.name, "tty", 3)) + if (WINDOWPORT("tty")) clear_screen(); /* display gets fouled up otherwise */ #endif goto gotlock; diff --git a/sys/share/unixtty.c b/sys/share/unixtty.c index 00d473204..39a859e79 100644 --- a/sys/share/unixtty.c +++ b/sys/share/unixtty.c @@ -305,7 +305,7 @@ void intron() /* enable kbd interupts if enabled when game started */ { #ifdef TTY_GRAPHICS /* Ugly hack to keep from changing tty modes for non-tty games -dlc */ - if (!strcmp(windowprocs.name, "tty") && intr_char != nonesuch + if (WINDOWPORT("tty") && intr_char != nonesuch && curttyb2.intr_sym != '\003') { curttyb2.intr_sym = '\003'; setctty(); @@ -317,7 +317,7 @@ void introff() /* disable kbd interrupts if required*/ { #ifdef TTY_GRAPHICS /* Ugly hack to keep from changing tty modes for non-tty games -dlc */ - if (!strcmp(windowprocs.name, "tty") && curttyb2.intr_sym != nonesuch) { + if (WINDOWPORT("tty") && curttyb2.intr_sym != nonesuch) { curttyb2.intr_sym = nonesuch; setctty(); } @@ -345,7 +345,7 @@ void sco_mapon() { #ifdef TTY_GRAPHICS - if (!strcmp(windowprocs.name, "tty") && sco_flag_console) { + if (WINDOWPORT("tty") && sco_flag_console) { if (sco_map_valid != -1) { ioctl(0, LDSMAP, sco_chanmap_buf); } @@ -358,7 +358,7 @@ void sco_mapoff() { #ifdef TTY_GRAPHICS - if (!strcmp(windowprocs.name, "tty") && sco_flag_console) { + if (WINDOWPORT("tty") && sco_flag_console) { sco_map_valid = ioctl(0, LDGMAP, sco_chanmap_buf); if (sco_map_valid != -1) { ioctl(0, LDNMAP, (char *) 0); @@ -379,7 +379,7 @@ void init_sco_cons() { #ifdef TTY_GRAPHICS - if (!strcmp(windowprocs.name, "tty") && sco_flag_console) { + if (WINDOWPORT("tty") && sco_flag_console) { atexit(sco_mapon); sco_mapoff(); load_symset("IBMGraphics", PRIMARY); @@ -409,7 +409,7 @@ void linux_mapon() { #ifdef TTY_GRAPHICS - if (!strcmp(windowprocs.name, "tty") && linux_flag_console) { + if (WINDOWPORT("tty") && linux_flag_console) { write(1, "\033(B", 3); } #endif @@ -419,7 +419,7 @@ void linux_mapoff() { #ifdef TTY_GRAPHICS - if (!strcmp(windowprocs.name, "tty") && linux_flag_console) { + if (WINDOWPORT("tty") && linux_flag_console) { write(1, "\033(U", 3); } #endif @@ -439,7 +439,7 @@ void init_linux_cons() { #ifdef TTY_GRAPHICS - if (!strcmp(windowprocs.name, "tty") && linux_flag_console) { + if (WINDOWPORT("tty") && linux_flag_console) { atexit(linux_mapon); linux_mapoff(); #ifdef TEXTCOLOR diff --git a/sys/winnt/winnt.c b/sys/winnt/winnt.c index 5b0fd8bc8..0be1da094 100644 --- a/sys/winnt/winnt.c +++ b/sys/winnt/winnt.c @@ -216,7 +216,7 @@ VA_DECL(const char *, s) /* error() may get called before tty is initialized */ if (iflags.window_inited) end_screen(); - if (windowprocs.name != NULL && !strncmpi(windowprocs.name, "tty", 3)) { + if (WINDOWPORT("tty")) { buf[0] = '\n'; (void) vsprintf(&buf[1], s, VA_ARGS); Strcat(buf, "\n"); @@ -239,6 +239,11 @@ Delay(int ms) void win32_abort() { + boolean is_tty = FALSE; + +#ifdef TTY_GRAPHICS + is_tty = WINDOWPORT("tty"); +#endif if (wizard) { int c, ci, ct; @@ -248,13 +253,11 @@ win32_abort() msmsg("Execute debug breakpoint wizard?"); while ((ci = nhgetch()) != '\n') { if (ct > 0) { -#ifdef TTY_GRAPHICS - backsp(); /* \b is visible on NT */ -#endif + if (is_tty) + backsp(); /* \b is visible on NT console */ (void) putchar(' '); -#ifdef TTY_GRAPHICS - backsp(); -#endif + if (is_tty) + backsp(); ct = 0; c = 'n'; } -- 2.40.0