From f8a807e3bb515a676147fb2d972ab5a6e18c7329 Mon Sep 17 00:00:00 2001
From: Christoph Oelckers <coelckers@users.noreply.github.com>
Date: Sat, 25 Jan 2020 10:56:30 +0100
Subject: [PATCH] - cleaned out a tiny bit of the garbage that has accumulated
 in compat.h.

This file really needs to go away, we do not need this kind of "compatibility".
---
 source/blood/src/demo.cpp      |   2 +-
 source/build/include/build.h   |   1 -
 source/build/include/compat.h  | 116 ++-------------------------------
 source/build/src/common.cpp    |   2 +-
 source/build/src/engine.cpp    |  75 +--------------------
 source/build/src/engine_priv.h |   2 +-
 source/duke3d/src/cmdline.cpp  |   2 +-
 source/duke3d/src/demo.cpp     |   2 +-
 source/rr/src/cmdline.cpp      |   2 +-
 source/rr/src/demo.cpp         |   2 +-
 10 files changed, 14 insertions(+), 192 deletions(-)

diff --git a/source/blood/src/demo.cpp b/source/blood/src/demo.cpp
index 52291ce88..0848561bd 100644
--- a/source/blood/src/demo.cpp
+++ b/source/blood/src/demo.cpp
@@ -400,7 +400,7 @@ void CDemo::LoadDemoInfo(void)
     auto pDemo = &pFirstDemo;
     at59ef = 0;
     char zFN[BMAX_PATH];
-    Bsnprintf(zFN, BMAX_PATH, "%s%s*.dem", M_GetDemoPath().GetChars(), BloodIniPre);
+    snprintf(zFN, BMAX_PATH, "%s%s*.dem", M_GetDemoPath().GetChars(), BloodIniPre);
 	TArray<FString> demos;
 	D_AddWildFile(demos, zFN);
 	for (auto &filename : demos)
diff --git a/source/build/include/build.h b/source/build/include/build.h
index a1b4ea091..0cd932d5f 100644
--- a/source/build/include/build.h
+++ b/source/build/include/build.h
@@ -829,7 +829,6 @@ int32_t    engineInit(void);
 int32_t enginePostInit(void);
 void   engineUnInit(void);
 void   initspritelists(void);
-int32_t engineFatalError(char const * msg);
 
 int32_t   engineLoadBoard(const char *filename, char flags, vec3_t *dapos, int16_t *daang, int16_t *dacursectnum);
 int32_t   engineLoadMHK(const char *filename);
diff --git a/source/build/include/compat.h b/source/build/include/compat.h
index fc984603c..1b4a2b3c4 100644
--- a/source/build/include/compat.h
+++ b/source/build/include/compat.h
@@ -447,28 +447,6 @@ typedef int32_t ssize_t;
 typedef size_t bsize_t;
 typedef ssize_t bssize_t;
 
-typedef FILE BFILE;
-
-#define BO_BINARY O_BINARY
-#define BO_TEXT   O_TEXT
-#define BO_RDONLY O_RDONLY
-#define BO_WRONLY O_WRONLY
-#define BO_RDWR   O_RDWR
-#define BO_APPEND O_APPEND
-#define BO_CREAT  O_CREAT
-#define BO_TRUNC  O_TRUNC
-#define BS_IRGRP  S_IRGRP
-#define BS_IWGRP  S_IWGRP
-#define BS_IEXEC  S_IEXEC
-#define BS_IFIFO  S_IFIFO
-#define BS_IFCHR  S_IFCHR
-#define BS_IFBLK  S_IFBLK
-#define BS_IFDIR  S_IFDIR
-#define BS_IFREG  S_IFREG
-#define BSEEK_SET SEEK_SET
-#define BSEEK_CUR SEEK_CUR
-#define BSEEK_END SEEK_END
-
 #define BMAX_PATH 256
 
 #define Bassert assert
@@ -498,45 +476,13 @@ typedef FILE BFILE;
 #define Btoupper toupper
 #define Btolower tolower
 #define Bmemcpy memcpy
-#define Bmemmove memmove
-#define Bmemchr memchr
 #define Bmemset memset
 #define Bmemcmp memcmp
-#define Bscanf scanf
-#define Bprintf printf
-#define Bsscanf sscanf
 #define Bsprintf sprintf
-#define Bvfprintf vfprintf
-#define Bgetenv getenv
-#define Butime utime
 
 
 ////////// Standard library wrappers //////////
 
-#ifdef __ANDROID__
-# define BS_IWRITE S_IWUSR
-# define BS_IREAD  S_IRUSR
-#else
-# define BS_IWRITE S_IWRITE
-# define BS_IREAD  S_IREAD
-#endif
-
-#if defined(__cplusplus) && defined(_MSC_VER)
-# define Bstrdup _strdup
-# define Bchdir _chdir
-# define Bgetcwd _getcwd
-#else
-# define Bstrdup strdup
-# define Bchdir chdir
-# define Bgetcwd getcwd
-#endif
-
-#if defined(__GNUC__)
-# define Btell(h) lseek(h,0,SEEK_CUR)
-#else
-# define Btell tell
-#endif
-
 #if defined(_MSC_VER)
 # define Bstrcasecmp _stricmp
 # define Bstrncasecmp _strnicmp
@@ -548,67 +494,22 @@ typedef FILE BFILE;
 # define Bstrncasecmp strncasecmp
 #endif
 
-#ifdef _MSC_VER
-# define Bsnprintf _snprintf
-# define Bvsnprintf _vsnprintf
-#else
-# define Bsnprintf snprintf
-# define Bvsnprintf vsnprintf
-#endif
-
-#define Btime() time(NULL)
-
-#if defined(_WIN32)
-# define Bmkdir(s,x) mkdir(s)
-#else
-# define Bmkdir mkdir
-#endif
-
-// XXX: different across 32- and 64-bit archs (e.g.
-// parsing the decimal representation of 0xffffffff,
-// 4294967295 -- long is signed, so strtol would
-// return LONG_MAX (== 0x7fffffff on 32-bit archs))
-
-static FORCE_INLINE int32_t atoi_safe(const char *str) { return (int32_t)Bstrtol(str, NULL, 10); }
+static inline int32_t atoi_safe(const char *str) { return (int32_t)strtoll(str, NULL, 10); }
 
 #define Batoi(x) atoi_safe(x)
 #define Batol(str) (strtol(str, NULL, 10))
-#define Batof(str) (strtod(str, NULL))
 
-#if defined BITNESS64 && (defined __SSE2__ || defined _MSC_VER)
-#include <emmintrin.h>
-static FORCE_INLINE int32_t Blrintf(const float x)
+static constexpr inline int Blrintf(const double x)
 {
-    __m128 xx = _mm_load_ss(&x);
-    return _mm_cvtss_si32(xx);
+    return int(x);
 }
-#elif defined (_MSC_VER)
-static FORCE_INLINE int32_t Blrintf(const float x)
-{
-    int n;
-    __asm fld x;
-    __asm fistp n;
-    return n;
-}
-#else
-#define Blrintf(x) ((int32_t)lrintf(x))
-#endif
 
 #if defined(__arm__)
-# define Bsqrt __builtin_sqrt
 # define Bsqrtf __builtin_sqrtf
 #else
-# define Bsqrt sqrt
 # define Bsqrtf sqrtf
 #endif
 
-// redefined for apple/ppc, which chokes on stderr when linking...
-#if defined EDUKE32_OSX && defined __BIG_ENDIAN__
-# define ERRprintf(fmt, ...) printf(fmt, ## __VA_ARGS__)
-#else
-# define ERRprintf(fmt, ...) fprintf(stderr, fmt, ## __VA_ARGS__)
-#endif
-
 class ExitEvent : public std::exception
 {
 	int reason;
@@ -715,15 +616,6 @@ struct integers_of_size<sizeof(int64_t)>
 
 ////////// Typedefs //////////
 
-#ifdef __cplusplus
-// for use in SFINAE constructs in place of the pointer trick (to which 0 can unintentionally be implicitly cast)
-struct Dummy FINAL
-{
-    FORCE_INLINE CONSTEXPR Dummy() : dummy(0) { }
-    char dummy;
-};
-#endif
-
 #if defined(__x86_64__)
 // for 32-bit pointers in x86_64 code, such as `gcc -mx32`
 typedef uint64_t reg_t;
@@ -1118,7 +1010,7 @@ void *handle_memerr(void *);
 
 static FORCE_INLINE char *xstrdup(const char *s)
 {
-    char *ptr = Bstrdup(s);
+    char *ptr = strdup(s);
     return (EDUKE32_PREDICT_TRUE(ptr != NULL)) ? ptr : (char *)handle_memerr(ptr);
 }
 
diff --git a/source/build/src/common.cpp b/source/build/src/common.cpp
index 6e160c739..17c59e161 100644
--- a/source/build/src/common.cpp
+++ b/source/build/src/common.cpp
@@ -69,7 +69,7 @@ int32_t maybe_append_ext(char *wbuf, int32_t wbufsiz, const char *fn, const char
     Bassert((intptr_t)wbuf != (intptr_t)fn);  // no aliasing
 
     // If 'fn' has no extension suffixed, append one.
-    return (Bsnprintf(wbuf, wbufsiz, "%s%s", fn, haveext ? "" : ext) >= wbufsiz);
+    return (snprintf(wbuf, wbufsiz, "%s%s", fn, haveext ? "" : ext) >= wbufsiz);
 }
 
 
diff --git a/source/build/src/engine.cpp b/source/build/src/engine.cpp
index 7740d4f76..4c4abb605 100644
--- a/source/build/src/engine.cpp
+++ b/source/build/src/engine.cpp
@@ -6847,63 +6847,6 @@ psky_t * tileSetupSky(int32_t const tilenum)
     return newPsky;
 }
 
-//
-// Exported Engine Functions
-//
-
-#if !defined _WIN32 && defined DEBUGGINGAIDS && !defined GEKKO
-#ifdef GEKKO
-#define __rtems__
-#define _POSIX_REALTIME_SIGNALS
-#endif
-#include <signal.h>
-static void sighandler(int sig, siginfo_t *info, void *ctx)
-{
-    const char *s;
-    UNREFERENCED_PARAMETER(ctx);
-    switch (sig)
-    {
-    case SIGFPE:
-        switch (info->si_code)
-        {
-        case FPE_INTDIV:
-            s = "FPE_INTDIV (integer divide by zero)"; break;
-        case FPE_INTOVF:
-            s = "FPE_INTOVF (integer overflow)"; break;
-        case FPE_FLTDIV:
-            s = "FPE_FLTDIV (floating-point divide by zero)"; break;
-        case FPE_FLTOVF:
-            s = "FPE_FLTOVF (floating-point overflow)"; break;
-        case FPE_FLTUND:
-            s = "FPE_FLTUND (floating-point underflow)"; break;
-        case FPE_FLTRES:
-            s = "FPE_FLTRES (floating-point inexact result)"; break;
-        case FPE_FLTINV:
-            s = "FPE_FLTINV (floating-point invalid operation)"; break;
-        case FPE_FLTSUB:
-            s = "FPE_FLTSUB (floating-point subscript out of range)"; break;
-        default:
-            s = "?! (unknown)"; break;
-        }
-        ERRprintf("Caught SIGFPE at address %p, code %s. Aborting.\n", info->si_addr, s);
-        break;
-    default:
-        break;
-    }
-    abort();
-}
-#endif
-
-//
-// E_FatalError
-//
-int32_t engineFatalError(char const * const msg)
-{
-    engineerrstr = msg;
-    initprintf("ERROR: %s\n", engineerrstr);
-    return -1;
-}
-
 //
 // preinitengine
 //
@@ -7002,18 +6945,6 @@ int32_t engineInit(void)
     if (!mdinited) mdinit();
 #endif
 
-#ifdef LUNATIC
-    if (L_CreateState(&g_engState, "eng", NULL))
-        return engineFatalError("Failed creating engine Lua state!");
-
-    {
-        static char const * const luastr = "_LUNATIC_AUX=true; decl=require('ffi').cdef; require'defs_common'";
-
-        if (L_RunString(&g_engState, luastr, -1, "eng"))
-            return engineFatalError("Failed setting up engine Lua state");
-    }
-#endif
-
     return 0;
 }
 
@@ -7023,11 +6954,11 @@ int32_t engineInit(void)
 int32_t enginePostInit(void)
 {
     if (!(paletteloaded & PALETTE_MAIN))
-        return engineFatalError("No palette found.");
+        I_FatalError("No palette found.");
     if (!(paletteloaded & PALETTE_SHADE))
-        return engineFatalError("No shade table found.");
+        I_FatalError("No shade table found.");
     if (!(paletteloaded & PALETTE_TRANSLUC))
-        return engineFatalError("No translucency table found.");
+        I_FatalError("No translucency table found.");
 
     palettePostLoadTables();
 
diff --git a/source/build/src/engine_priv.h b/source/build/src/engine_priv.h
index d0a78da50..a6955688d 100644
--- a/source/build/src/engine_priv.h
+++ b/source/build/src/engine_priv.h
@@ -178,7 +178,7 @@ static FORCE_INLINE int32_t yax_isislandwall(int32_t line, int32_t cf) { return
 #ifdef YAX_DEBUG
 extern char m32_debugstr[64][128];
 extern int32_t m32_numdebuglines;
-# define yaxdebug(fmt, ...)  do { if (m32_numdebuglines<64) Bsnprintf(m32_debugstr[m32_numdebuglines++], 128, fmt, ##__VA_ARGS__); } while (0)
+# define yaxdebug(fmt, ...)  do { if (m32_numdebuglines<64) snprintf(m32_debugstr[m32_numdebuglines++], 128, fmt, ##__VA_ARGS__); } while (0)
 # define yaxprintf(fmt, ...) do { initprintf(fmt, ##__VA_ARGS__); } while (0)
 #else
 # define yaxdebug(fmt, ...)
diff --git a/source/duke3d/src/cmdline.cpp b/source/duke3d/src/cmdline.cpp
index 05920b0b0..4d822cd55 100644
--- a/source/duke3d/src/cmdline.cpp
+++ b/source/duke3d/src/cmdline.cpp
@@ -47,7 +47,7 @@ static void G_AddDemo(const char* param)
         // -d<filename>:<num>[,<num>]
         // profiling options
         *(colon++) = 0;
-        Bsscanf(colon, "%d,%d", &framespertic, &numrepeats);
+        sscanf(colon, "%d,%d", &framespertic, &numrepeats);
     }
 
     Demo_SetFirst(tempbuf);
diff --git a/source/duke3d/src/demo.cpp b/source/duke3d/src/demo.cpp
index f9aa415d5..9e36f88d9 100644
--- a/source/duke3d/src/demo.cpp
+++ b/source/duke3d/src/demo.cpp
@@ -375,7 +375,7 @@ static void Demo_DisplayProfStatus(void)
     lastpercent = percent;
 
     videoClearScreen(0);
-    Bsnprintf(buf, sizeof(buf), "timing... %d/%d game tics (%d %%)",
+    snprintf(buf, sizeof(buf), "timing... %d/%d game tics (%d %%)",
               g_demo_cnt, g_demo_totalCnt, percent);
     gametext_center(60, buf);
     videoNextPage();
diff --git a/source/rr/src/cmdline.cpp b/source/rr/src/cmdline.cpp
index 5b5a067c2..0ebb07f0b 100644
--- a/source/rr/src/cmdline.cpp
+++ b/source/rr/src/cmdline.cpp
@@ -45,7 +45,7 @@ static void G_AddDemo(const char* param)
         // -d<filename>:<num>[,<num>]
         // profiling options
         *(colon++) = 0;
-        Bsscanf(colon, "%d,%d", &framespertic, &numrepeats);
+        sscanf(colon, "%d,%d", &framespertic, &numrepeats);
     }
 
     Demo_SetFirst(tempbuf);
diff --git a/source/rr/src/demo.cpp b/source/rr/src/demo.cpp
index 1d7c98801..efcdb66e8 100644
--- a/source/rr/src/demo.cpp
+++ b/source/rr/src/demo.cpp
@@ -375,7 +375,7 @@ static void Demo_DisplayProfStatus(void)
     lastpercent = percent;
 
     videoClearScreen(0);
-    Bsnprintf(buf, sizeof(buf), "timing... %d/%d game tics (%d %%)",
+    snprintf(buf, sizeof(buf), "timing... %d/%d game tics (%d %%)",
               g_demo_cnt, g_demo_totalCnt, percent);
     gametext_center(60, buf);
     videoNextPage();