sdl12-compat: GetExeName() tidy-ups.

From c08447e6dca1f01856f48222233c0f99dc3df7aa Mon Sep 17 00:00:00 2001
From: Ozkan Sezer <[EMAIL REDACTED]>
Date: Fri, 18 Mar 2022 20:03:28 +0300
Subject: [PATCH] GetExeName() tidy-ups.

---
 src/SDL12_compat.c | 54 ++++++++++++++++++++++++++++++++++------------
 1 file changed, 40 insertions(+), 14 deletions(-)

diff --git a/src/SDL12_compat.c b/src/SDL12_compat.c
index 4c132c7..1cf39fa 100644
--- a/src/SDL12_compat.c
+++ b/src/SDL12_compat.c
@@ -59,10 +59,23 @@
 
 #define SDL_BlitSurface SDL_UpperBlit
 
-#ifdef __LINUX__
+#ifdef __linux__
 #include <unistd.h> /* for readlink() */
 #endif
 
+#if defined(__unix__) || defined(__APPLE__)
+#ifndef PATH_MAX
+#define PATH_MAX 1024
+#endif
+#define SDL12_MAXPATH PATH_MAX
+#elif defined _WIN32
+#define SDL12_MAXPATH MAX_PATH
+#elif defined __OS2__
+#define SDL12_MAXPATH CCHMAXPATH
+#else
+#define SDL12_MAXPATH 1024
+#endif
+
 #ifdef __cplusplus
 extern "C" {
 #endif
@@ -1157,25 +1170,38 @@ static QuirkEntryType quirks[] = {
 #endif
 };
 
+#ifdef __linux__
+static void OS_GetExeName(char *buf, const unsigned maxpath) {
+    buf[0] = '\0';
+    readlink("/proc/self/exe", buf, maxpath);
+}
+#elif defined(_WIN32)
+static void OS_GetExeName(char *buf, const unsigned maxpath) {
+    buf[0] = '\0';
+    GetModuleFileName(NULL, buf, maxpath);
+}
+#elif defined(__OS2__)
+static void OS_GetExeName(char *buf, const unsigned maxpath) {
+    PPIB pib;
+    DosGetInfoBlocks(NULL, &pib);
+    buf[0] = '\0';
+    DosQueryModuleName(pib->pib_hmte, maxpath, buf);
+}
+#else /* FIXME */
+static void OS_GetExeName(char *buf, const unsigned maxpath) {
+    buf[0] = '\0';
+    (void)maxpath;
+}
+#endif
+
 static const char *
 SDL12Compat_GetExeName(void)
 {
     static const char *exename = NULL;
     if (exename == NULL) {
-        static char path_buf[260];
+        static char path_buf[SDL12_MAXPATH];
         static char *base_path;
-#ifdef _WIN32
-        GetModuleFileName(NULL, path_buf, 260);
-#elif defined(__linux__)
-        readlink("/proc/self/exe", path_buf, 260);
-#elif defined(__OS2__)
-        PTIB tib;
-        PPIB pib;
-        DosGetInfoBlocks(&tib, &pib);
-        DosQueryModuleName(pib->pib_hmte, 260, path_buf);
-#else
-        path_buf[0] = '\0';
-#endif
+        OS_GetExeName(path_buf, SDL12_MAXPATH);
         base_path = SDL20_strrchr(path_buf, *DIRSEP);
         if (base_path) {
             /* We have a '\\' component. */