Fix compilation on Haiku OS (#183)

* add haiku defines in q_platform.h and sys_sdl.c

* linuxisms in sys_sdl.c and sv_sys_unix.c

* more linuxisms in sv_sys_unix.c
This commit is contained in:
erysdren 2023-06-12 01:14:36 -05:00 committed by GitHub
parent 7e39cdd689
commit 8482809f18
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 13 additions and 11 deletions

View file

@ -11,7 +11,7 @@
#ifndef WIN32 #ifndef WIN32
#include <fcntl.h> #include <fcntl.h>
#include <sys/stat.h> #include <sys/stat.h>
#if defined(__unix__) || defined(__unix) || (defined(__APPLE__) && defined(__MACH__)) //apple make everything painful. #if defined(__unix__) || defined(__unix) ||defined(__HAIKU__) || (defined(__APPLE__) && defined(__MACH__)) //apple make everything painful.
#include <unistd.h> #include <unistd.h>
#endif #endif
#else #else
@ -646,7 +646,7 @@ int Sys_EnumerateFiles (const char *gpath, const char *match, int (QDECL *func)(
strcat(fullmatch, match); strcat(fullmatch, match);
return Sys_EnumerateFiles2(fullmatch, start, start, func, parm, spath); return Sys_EnumerateFiles2(fullmatch, start, start, func, parm, spath);
} }
#elif defined(linux) || defined(__unix__) || defined(__MACH__) #elif defined(linux) || defined(__unix__) || defined(__MACH__) || defined(__HAIKU__)
#include <dirent.h> #include <dirent.h>
#include <errno.h> #include <errno.h>
static int Sys_EnumerateFiles2 (const char *truepath, int apathofs, const char *match, int (*func)(const char *, qofs_t, time_t modtime, void *, searchpathfuncs_t *), void *parm, searchpathfuncs_t *spath) static int Sys_EnumerateFiles2 (const char *truepath, int apathofs, const char *match, int (*func)(const char *, qofs_t, time_t modtime, void *, searchpathfuncs_t *), void *parm, searchpathfuncs_t *spath)
@ -961,8 +961,8 @@ int QDECL main(int argc, char **argv)
parms.manifest = CONFIG_MANIFEST_TEXT; parms.manifest = CONFIG_MANIFEST_TEXT;
#endif #endif
#ifndef WIN32 #if !defined(WIN32)
fcntl(0, F_SETFL, fcntl (0, F_GETFL, 0) | FNDELAY); fcntl(0, F_SETFL, fcntl (0, F_GETFL, 0) | O_NDELAY);
#endif #endif
COM_InitArgv (parms.argc, parms.argv); COM_InitArgv (parms.argc, parms.argv);

View file

@ -291,7 +291,7 @@ void Sys_Error (const char *error, ...)
if (!noconinput) if (!noconinput)
{ {
tcsetattr(STDIN_FILENO, TCSADRAIN, &orig); tcsetattr(STDIN_FILENO, TCSADRAIN, &orig);
fcntl (STDIN_FILENO, F_SETFL, fcntl (STDIN_FILENO, F_GETFL, 0) & ~FNDELAY); fcntl (STDIN_FILENO, F_SETFL, fcntl (STDIN_FILENO, F_GETFL, 0) & ~O_NDELAY);
} }
//we used to fire sigsegv. this resulted in people reporting segfaults and not the error message that appeared above. resulting in wasted debugging. //we used to fire sigsegv. this resulted in people reporting segfaults and not the error message that appeared above. resulting in wasted debugging.
@ -593,7 +593,7 @@ void Sys_Quit (void)
if (!noconinput) if (!noconinput)
{ {
tcsetattr(STDIN_FILENO, TCSADRAIN, &orig); tcsetattr(STDIN_FILENO, TCSADRAIN, &orig);
fcntl (STDIN_FILENO, F_SETFL, fcntl (STDIN_FILENO, F_GETFL, 0) & ~FNDELAY); fcntl (STDIN_FILENO, F_SETFL, fcntl (STDIN_FILENO, F_GETFL, 0) & ~O_NDELAY);
} }
exit (0); // appkit isn't running exit (0); // appkit isn't running
} }
@ -700,9 +700,9 @@ char *Sys_ConsoleInput (void)
#if defined(__linux__) #if defined(__linux__)
{ {
int fl = fcntl (STDIN_FILENO, F_GETFL, 0); int fl = fcntl (STDIN_FILENO, F_GETFL, 0);
if (!(fl & FNDELAY)) if (!(fl & O_NDELAY))
{ {
fcntl(STDIN_FILENO, F_SETFL, fl | FNDELAY); fcntl(STDIN_FILENO, F_SETFL, fl | O_NDELAY);
// Sys_Printf(CON_WARNING "stdin flags became blocking - gdb bug?\n"); // Sys_Printf(CON_WARNING "stdin flags became blocking - gdb bug?\n");
} }
} }
@ -996,8 +996,8 @@ static int Sys_CheckChRoot(void)
static void SigCont(int code) static void SigCont(int code)
{ //lets us know when we regained foreground focus. { //lets us know when we regained foreground focus.
int fl = fcntl (STDIN_FILENO, F_GETFL, 0); int fl = fcntl (STDIN_FILENO, F_GETFL, 0);
if (!(fl & FNDELAY)) if (!(fl & O_NDELAY))
fcntl(STDIN_FILENO, F_SETFL, fl | FNDELAY); fcntl(STDIN_FILENO, F_SETFL, fl | O_NDELAY);
noconinput &= ~2; noconinput &= ~2;
} }
#endif #endif

View file

@ -163,7 +163,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
//================================================================= LINUX === //================================================================= LINUX ===
#if defined(__linux__) || defined(__FreeBSD_kernel__) || defined(ANDROID) || defined(__ANDROID__) #if defined(__linux__) || defined(__FreeBSD_kernel__) || defined(ANDROID) || defined(__ANDROID__) || defined(__HAIKU__)
#include <endian.h> #include <endian.h>
@ -171,6 +171,8 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
#define OS_STRING "android" #define OS_STRING "android"
#elif defined(__linux__) #elif defined(__linux__)
#define OS_STRING "linux" #define OS_STRING "linux"
#elif defined(__HAIKU__)
#define OS_STRING "Haiku"
#else #else
#define OS_STRING "kFreeBSD" #define OS_STRING "kFreeBSD"
#endif #endif