From b3388d5753705de3c6f580fe7497a12050835206 Mon Sep 17 00:00:00 2001 From: Anonymous Maarten Date: Sat, 28 Sep 2024 18:08:36 +0200 Subject: [PATCH] Haiku does not have fdatasync, but has fsync https://dev.haiku-os.org/ticket/17378 --- src/file/SDL_iostream.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/file/SDL_iostream.c b/src/file/SDL_iostream.c index 3622e9290..7fff91e16 100644 --- a/src/file/SDL_iostream.c +++ b/src/file/SDL_iostream.c @@ -488,8 +488,16 @@ static bool SDLCALL stdio_flush(void *userdata, SDL_IOStatus *status) } #elif defined(_POSIX_SYNCHRONIZED_IO) // POSIX defines this if fdatasync() exists, so we don't need a CMake test. #ifndef SDL_PLATFORM_RISCOS // !!! FIXME: however, RISCOS doesn't have the symbol...maybe we need to link to an extra library or something? - if (iodata->regular_file && (fdatasync(fileno(iodata->fp)) == -1)) { - return SDL_SetError("Error flushing datastream: %s", strerror(errno)); + if (iodata->regular_file) { + int sync_result; +#ifdef SDL_PLATFORM_HAIKU + sync_result = fsync(fileno(iodata->fp)); +#else + sync_result = fdatasync(fileno(iodata->fp)); +#endif + if (sync_result == -1) { + return SDL_SetError("Error flushing datastream: %s", strerror(errno)); + } } #endif #endif