# HG changeset patch # User nemo # Date 1662586088 14400 # Node ID 3513c9122882c515dc4a27039107fb176267b4b6 # Parent c4561095666adbc64ca83140690e6d5293a4170a# Parent 139a1887f83e66d8ed6abec01eda6fc71666f16a merge to trunk diff -r c4561095666a -r 3513c9122882 .hgtags --- a/.hgtags Tue Jul 26 12:37:17 2022 +0200 +++ b/.hgtags Wed Sep 07 17:28:08 2022 -0400 @@ -89,4 +89,9 @@ afc089c39556bdd895892fa36ed47aaec83c3825 0.9.24.1-release 195208deff1dd3e22d303d4a92c2ba14be3b6623 Hedgewars-iOS-2.1 5e28098fb59379357a145b73380a1cd3839f643f 0.9.25-release -3102d95a870e61385ee6951e30dc3be739210093 1.0.0-release +88770c206c31dfdebf67271c0c980312a752eb84 1.0.0-release +fcea0f51d94f11bd327af582c78a781740e8786a 1.0.1-release +fcea0f51d94f11bd327af582c78a781740e8786a 1.0.1-release +0000000000000000000000000000000000000000 1.0.1-release +0000000000000000000000000000000000000000 1.0.1-release +9dceb83331d59c1d383318c6bfd72ec277092fd3 1.0.1-release diff -r c4561095666a -r 3513c9122882 CMakeLists.txt diff -r c4561095666a -r 3513c9122882 misc/libphyslayer/physfsrwops.c --- a/misc/libphyslayer/physfsrwops.c Tue Jul 26 12:37:17 2022 +0200 +++ b/misc/libphyslayer/physfsrwops.c Wed Sep 07 17:28:08 2022 -0400 @@ -16,7 +16,7 @@ * Please see LICENSE.txt in the root of the source tree. * * SDL 1.2 falls under the LGPL license. SDL 1.3+ is zlib, like PhysicsFS. - * You can get SDL at http://www.libsdl.org/ + * You can get SDL at https://www.libsdl.org/ * * This file was written by Ryan C. Gordon. (icculus@icculus.org). */ @@ -24,22 +24,35 @@ #include /* used for SEEK_SET, SEEK_CUR, SEEK_END ... */ #include "physfsrwops.h" -/* SDL's RWOPS interface changed a little in SDL 1.3... */ +/* SDL's RWOPS interface changed a little in SDL 2.0... */ #if defined(SDL_VERSION_ATLEAST) -#if SDL_VERSION_ATLEAST(1, 3, 0) -#define TARGET_SDL13 1 +#if SDL_VERSION_ATLEAST(2, 0, 0) +#define TARGET_SDL2 1 #endif #endif -#if TARGET_SDL13 +#if !TARGET_SDL2 +#ifndef RW_SEEK_SET +#define RW_SEEK_SET SEEK_SET +#endif +#ifndef RW_SEEK_CUR +#define RW_SEEK_CUR SEEK_CUR +#endif +#ifndef RW_SEEK_END +#define RW_SEEK_END SEEK_END +#endif +#endif + +#if TARGET_SDL2 static Sint64 SDLCALL physfsrwops_size(struct SDL_RWops *rw) { PHYSFS_File *handle = (PHYSFS_File *) rw->hidden.unknown.data1; - return PHYSFS_fileLength(handle); -} + return (Sint64) PHYSFS_fileLength(handle); +} /* physfsrwops_size */ #endif -#if TARGET_SDL13 + +#if TARGET_SDL2 static Sint64 SDLCALL physfsrwops_seek(struct SDL_RWops *rw, Sint64 offset, int whence) #else static int physfsrwops_seek(SDL_RWops *rw, int offset, int whence) @@ -48,9 +61,10 @@ PHYSFS_File *handle = (PHYSFS_File *) rw->hidden.unknown.data1; PHYSFS_sint64 pos = 0; - if (whence == SEEK_SET) + if (whence == RW_SEEK_SET) pos = (PHYSFS_sint64) offset; - else if (whence == SEEK_CUR) + + else if (whence == RW_SEEK_CUR) { const PHYSFS_sint64 current = PHYSFS_tell(handle); if (current == -1) @@ -62,8 +76,8 @@ if (offset == 0) /* this is a "tell" call. We're done. */ { - #if TARGET_SDL13 - return (long) current; + #if TARGET_SDL2 + return (Sint64) current; #else return (int) current; #endif @@ -72,7 +86,7 @@ pos = current + ((PHYSFS_sint64) offset); } /* else if */ - else if (whence == SEEK_END) + else if (whence == RW_SEEK_END) { const PHYSFS_sint64 len = PHYSFS_fileLength(handle); if (len == -1) @@ -95,22 +109,22 @@ SDL_SetError("Attempt to seek past start of file."); return -1; } /* if */ - + if (!PHYSFS_seek(handle, (PHYSFS_uint64) pos)) { SDL_SetError("PhysicsFS error: %s", PHYSFS_getErrorByCode(PHYSFS_getLastErrorCode())); return -1; } /* if */ - #if TARGET_SDL13 - return (long) pos; + #if TARGET_SDL2 + return (Sint64) pos; #else return (int) pos; #endif } /* physfsrwops_seek */ -#if TARGET_SDL13 +#if TARGET_SDL2 static size_t SDLCALL physfsrwops_read(struct SDL_RWops *rw, void *ptr, size_t size, size_t maxnum) #else @@ -123,18 +137,26 @@ if (rc != ((PHYSFS_sint64) readlen)) { if (!PHYSFS_eof(handle)) /* not EOF? Must be an error. */ + { SDL_SetError("PhysicsFS error: %s", PHYSFS_getErrorByCode(PHYSFS_getLastErrorCode())); + + #if TARGET_SDL2 + return 0; + #else + return -1; + #endif + } /* if */ } /* if */ - #if TARGET_SDL13 - return (size_t) rc; + #if TARGET_SDL2 + return (size_t) rc / size; #else - return (int) rc; + return (int) rc / size; #endif } /* physfsrwops_read */ -#if TARGET_SDL13 +#if TARGET_SDL2 static size_t SDLCALL physfsrwops_write(struct SDL_RWops *rw, const void *ptr, size_t size, size_t num) #else @@ -147,7 +169,7 @@ if (rc != ((PHYSFS_sint64) writelen)) SDL_SetError("PhysicsFS error: %s", PHYSFS_getErrorByCode(PHYSFS_getLastErrorCode())); - #if TARGET_SDL13 + #if TARGET_SDL2 return (size_t) rc; #else return (int) rc; @@ -180,9 +202,9 @@ retval = SDL_AllocRW(); if (retval != NULL) { -#if TARGET_SDL13 && !defined(EMSCRIPTEN) + #if TARGET_SDL2 retval->size = physfsrwops_size; -#endif + #endif retval->seek = physfsrwops_seek; retval->read = physfsrwops_read; retval->write = physfsrwops_write; diff -r c4561095666a -r 3513c9122882 misc/libphyslayer/physfsrwops.h --- a/misc/libphyslayer/physfsrwops.h Tue Jul 26 12:37:17 2022 +0200 +++ b/misc/libphyslayer/physfsrwops.h Wed Sep 07 17:28:08 2022 -0400 @@ -15,7 +15,8 @@ * Unless otherwise stated, the rest of PhysicsFS falls under the zlib license. * Please see LICENSE.txt in the root of the source tree. * - * SDL falls under the LGPL license. You can get SDL at http://www.libsdl.org/ + * SDL 1.2 falls under the LGPL license. SDL 1.3+ is zlib, like PhysicsFS. + * You can get SDL at https://www.libsdl.org/ * * This file was written by Ryan C. Gordon. (icculus@icculus.org). */ @@ -24,11 +25,8 @@ #define _INCLUDE_PHYSFSRWOPS_H_ #include "physfs.h" - #include "SDL.h" -#include "physfscompat.h" - #ifdef __cplusplus extern "C" { #endif @@ -41,7 +39,7 @@ * * @param filename File to open in platform-independent notation. * @return A valid SDL_RWops structure on success, NULL on error. Specifics - * of the error can be gleaned from PHYSFS_getLastErrorCode(). + * of the error can be gleaned from PHYSFS_getLastError(). */ PHYSFS_DECL SDL_RWops *PHYSFSRWOPS_openRead(const char *fname); @@ -53,7 +51,7 @@ * * @param filename File to open in platform-independent notation. * @return A valid SDL_RWops structure on success, NULL on error. Specifics - * of the error can be gleaned from PHYSFS_getLastErrorCode(). + * of the error can be gleaned from PHYSFS_getLastError(). */ PHYSFS_DECL SDL_RWops *PHYSFSRWOPS_openWrite(const char *fname); @@ -65,7 +63,7 @@ * * @param filename File to open in platform-independent notation. * @return A valid SDL_RWops structure on success, NULL on error. Specifics - * of the error can be gleaned from PHYSFS_getLastErrorCode(). + * of the error can be gleaned from PHYSFS_getLastError(). */ PHYSFS_DECL SDL_RWops *PHYSFSRWOPS_openAppend(const char *fname); @@ -77,7 +75,7 @@ * * @param handle a valid PhysicsFS file handle. * @return A valid SDL_RWops structure on success, NULL on error. Specifics - * of the error can be gleaned from PHYSFS_getLastErrorCode(). + * of the error can be gleaned from PHYSFS_getLastError(). */ PHYSFS_DECL SDL_RWops *PHYSFSRWOPS_makeRWops(PHYSFS_File *handle);