diff --git a/CMakeLists.txt b/CMakeLists.txt index 0a21b87..6837b25 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -25,6 +25,10 @@ configure_file( "${PROJECT_BINARY_DIR}/config.h" ) +macro(set_option option value) + set(${option} ${value} CACHE INTERNAL "" FORCE) +endmacro() + if (EXISTS "${PROJECT_SOURCE_DIR}/steamworks_c_wrapper/sdk") MESSAGE ( STATUS "Steam SDK located, Steam build enabled") set(STEAM 1) @@ -105,6 +109,8 @@ if (NOT LUA_FOUND OR STEAM) endif () if (NOT PHYSFS_FOUND OR STEAM) + set_option(PHYSFS_BUILD_SHARED off) + set_option(PHYSFS_BUILD_TEST off) add_subdirectory(physfs-3.0) include_directories(physfs-3.0/src) set(PHYSFS_LIBRARY physfs-static) diff --git a/physfs-3.0/.hg_archival.txt b/physfs-3.0/.hg_archival.txt deleted file mode 100644 index f119afa..0000000 --- a/physfs-3.0/.hg_archival.txt +++ /dev/null @@ -1,4 +0,0 @@ -repo: 7672c9962ce627edaaa67ff54fe4ad8f9a46dc2b -node: fa8e38bcc3545000a38704b65b604a2c1b764d10 -branch: stable-3.0 -tag: release-3.0.1 diff --git a/physfs-3.0/.hgignore b/physfs-3.0/.hgignore deleted file mode 100644 index d015a85..0000000 --- a/physfs-3.0/.hgignore +++ /dev/null @@ -1,2 +0,0 @@ -syntax:glob -cmake-build diff --git a/physfs-3.0/.hgtags b/physfs-3.0/.hgtags deleted file mode 100644 index e0b54b1..0000000 --- a/physfs-3.0/.hgtags +++ /dev/null @@ -1,15 +0,0 @@ -0bb92a5f0fffd2452cc737346e8b796c213a5688 release-0.1.1 -2f2afcbd8abd784f738ac45b0368044763d63748 release-0.1.0 -3c7cf50a58fbf220154acd4bdfdf00a21f259eb7 release-0.1.8 -473b50402f55b2340fc286775d1b78d18a810362 release-0.1.3 -60b5f566a2585d78b2ffadd8d9c16299d0340820 release-1.0.0 -67aff4091bf129f7167ed87f937b15f31093e19e release-0.1.9 -6ad1722bbcaec1265cb74c9b7be13fe02a547d37 release-0.1.7 -8f3ccaaea1cd5dc19235882494d6102e5e9176fb release-0.1.2 -c966316c89981bea6ccaa2c2909bb303bfeeb82b release-0.1.6 -d2f04ab4b4127757234af6b30bfc98ad4ee9cb15 release-0.1.4 -d94f1ccac8095509c57ad640d54796aea0d260f0 release-0.1.5 -fe0c1d6f40afa6fca09a277a1ade59231f16c66f release-1.1.1 -5d70fca3be361258edfb59c3edaba5abe75a1e88 release-2.0.0 -df04959950eb3830c39adfa983789f70f86062d7 release-1.1.0 -3396e6dd19fbb52a3fa7e171ffb38ed9acb285a4 release-2.1.1 diff --git a/physfs-3.0/CMakeLists.txt b/physfs-3.0/CMakeLists.txt index eb377d2..9373a03 100644 --- a/physfs-3.0/CMakeLists.txt +++ b/physfs-3.0/CMakeLists.txt @@ -168,7 +168,7 @@ if(PHYSFS_BUILD_STATIC) set(PHYSFS_INSTALL_TARGETS ${PHYSFS_INSTALL_TARGETS} ";physfs-static") endif() -option(PHYSFS_BUILD_SHARED "Build shared library" FALSE) +option(PHYSFS_BUILD_SHARED "Build shared library" TRUE) if(PHYSFS_BUILD_SHARED) add_library(physfs SHARED ${PHYSFS_SRCS}) set_target_properties(physfs PROPERTIES MACOSX_RPATH 1) @@ -192,7 +192,7 @@ if(PHYSFS_BUILD_SHARED AND PHYSFS_BUILD_STATIC AND NOT WINDOWS) set_target_properties(physfs-static PROPERTIES CLEAN_DIRECT_OUTPUT 1) endif() -option(PHYSFS_BUILD_TEST "Build stdio test program." FALSE) +option(PHYSFS_BUILD_TEST "Build stdio test program." TRUE) mark_as_advanced(PHYSFS_BUILD_TEST) if(PHYSFS_BUILD_TEST) find_path(READLINE_H readline/readline.h) diff --git a/physfs-3.0/LICENSE.txt b/physfs-3.0/LICENSE.txt index 90018f2..a3de2bb 100644 --- a/physfs-3.0/LICENSE.txt +++ b/physfs-3.0/LICENSE.txt @@ -1,5 +1,5 @@ - Copyright (c) 2001-2017 Ryan C. Gordon and others. + Copyright (c) 2001-2018 Ryan C. Gordon and others. This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from diff --git a/physfs-3.0/docs/CREDITS.txt b/physfs-3.0/docs/CREDITS.txt index f7da37f..c88c50b 100644 --- a/physfs-3.0/docs/CREDITS.txt +++ b/physfs-3.0/docs/CREDITS.txt @@ -164,6 +164,9 @@ CMake fixes: Bug fixes, RĂ©mi Verschelde +Bug fixes: + Rob Loach + Other stuff: Your name here! Patches go to icculus@icculus.org ... diff --git a/physfs-3.0/extras/ignorecase.c b/physfs-3.0/extras/ignorecase.c index 3a58f1b..869c213 100644 --- a/physfs-3.0/extras/ignorecase.c +++ b/physfs-3.0/extras/ignorecase.c @@ -50,18 +50,22 @@ static int locateOneElement(char *buf) ptr++; /* point past dirsep to entry itself. */ } /* else */ - for (i = rc; *i != NULL; i++) + if (rc != NULL) { - if (PHYSFS_utf8stricmp(*i, ptr) == 0) + for (i = rc; *i != NULL; i++) { - strcpy(ptr, *i); /* found a match. Overwrite with this case. */ - PHYSFS_freeList(rc); - return 1; - } /* if */ - } /* for */ + if (PHYSFS_utf8stricmp(*i, ptr) == 0) + { + strcpy(ptr, *i); /* found a match. Overwrite with this case. */ + PHYSFS_freeList(rc); + return 1; + } /* if */ + } /* for */ + + PHYSFS_freeList(rc); + } /* if */ /* no match at all... */ - PHYSFS_freeList(rc); return 0; } /* locateOneElement */ diff --git a/physfs-3.0/extras/physfsrwops.c b/physfs-3.0/extras/physfsrwops.c index 8e5857c..a8654ab 100644 --- a/physfs-3.0/extras/physfsrwops.c +++ b/physfs-3.0/extras/physfsrwops.c @@ -32,10 +32,16 @@ #endif #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) diff --git a/physfs-3.0/src/physfs.c b/physfs-3.0/src/physfs.c index 19148ad..d0d5444 100644 --- a/physfs-3.0/src/physfs.c +++ b/physfs-3.0/src/physfs.c @@ -879,13 +879,20 @@ static DirHandle *openDirectory(PHYSFS_Io *io, const char *d, int forWriting) if (io == NULL) { + /* file doesn't exist, etc? Just fail out. */ + PHYSFS_Stat statbuf; + BAIL_IF_ERRPASS(!__PHYSFS_platformStat(d, &statbuf, 1), NULL); + /* DIR gets first shot (unlike the rest, it doesn't deal with files). */ - retval = tryOpenDir(io, &__PHYSFS_Archiver_DIR, d, forWriting, &claimed); - if (retval || claimed) - return retval; + if (statbuf.filetype == PHYSFS_FILETYPE_DIRECTORY) + { + retval = tryOpenDir(io, &__PHYSFS_Archiver_DIR, d, forWriting, &claimed); + if (retval || claimed) + return retval; + } /* if */ io = __PHYSFS_createNativeIo(d, forWriting ? 'w' : 'r'); - BAIL_IF_ERRPASS(!io, 0); + BAIL_IF_ERRPASS(!io, NULL); created_io = 1; } /* if */ @@ -2662,7 +2669,6 @@ static int closeHandleInOpenList(FileHandle **list, FileHandle *handle) { FileHandle *prev = NULL; FileHandle *i; - int rc = 1; for (i = *list; i != NULL; i = i->next) { @@ -2670,9 +2676,16 @@ static int closeHandleInOpenList(FileHandle **list, FileHandle *handle) { PHYSFS_Io *io = handle->io; PHYSFS_uint8 *tmp = handle->buffer; - rc = PHYSFS_flush((PHYSFS_File *) handle); - if (!rc) + + /* send our buffer to io... */ + if (!PHYSFS_flush((PHYSFS_File *) handle)) return -1; + + /* ...then have io send it to the disk... */ + else if (io->flush && !io->flush(io)) + return -1; + + /* ...then close the underlying file. */ io->destroy(io); if (tmp != NULL) /* free any associated buffer. */ @@ -2970,7 +2983,7 @@ int PHYSFS_flush(PHYSFS_File *handle) rc = io->write(io, fh->buffer + fh->bufpos, fh->buffill - fh->bufpos); BAIL_IF_ERRPASS(rc <= 0, 0); fh->bufpos = fh->buffill = 0; - return io->flush ? io->flush(io) : 1; + return 1; } /* PHYSFS_flush */ diff --git a/physfs-3.0/src/physfs.h b/physfs-3.0/src/physfs.h index 9169607..d18cbb9 100644 --- a/physfs-3.0/src/physfs.h +++ b/physfs-3.0/src/physfs.h @@ -225,11 +225,11 @@ extern "C" { #if defined(PHYSFS_DECL) /* do nothing. */ -#elif (defined _MSC_VER) +#elif defined(_MSC_VER) #define PHYSFS_DECL __declspec(dllexport) -#elif (defined __SUNPRO_C) +#elif defined(__SUNPRO_C) #define PHYSFS_DECL __global -#elif ((__GNUC__ >= 3) && (!__EMX__) && (!sun)) +#elif ((__GNUC__ >= 3) && (!defined(__EMX__)) && (!defined(sun))) #define PHYSFS_DECL __attribute__((visibility("default"))) #else #define PHYSFS_DECL diff --git a/physfs-3.0/src/physfs_archiver_7z.c b/physfs-3.0/src/physfs_archiver_7z.c index f35a0b1..914f691 100644 --- a/physfs-3.0/src/physfs_archiver_7z.c +++ b/physfs-3.0/src/physfs_archiver_7z.c @@ -203,6 +203,8 @@ static void SZIP_closeArchive(void *opaque) SZIPinfo *info = (SZIPinfo *) opaque; if (info) { + if (info->io) + info->io->destroy(info->io); SzArEx_Free(&info->db, &SZIP_SzAlloc); __PHYSFS_DirTreeDeinit(&info->tree); allocator.Free(info); diff --git a/physfs-3.0/src/physfs_platform_apple.m b/physfs-3.0/src/physfs_platform_apple.m index fe50f4b..e6207f5 100644 --- a/physfs-3.0/src/physfs_platform_apple.m +++ b/physfs-3.0/src/physfs_platform_apple.m @@ -50,7 +50,7 @@ char *__PHYSFS_platformCalcPrefDir(const char *org, const char *app) { NSArray *paths = NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, TRUE); BAIL_IF(!paths, PHYSFS_ERR_OS_ERROR, NULL); - NSString *path = (NSString *) paths[0]; + NSString *path = (NSString *) [paths objectAtIndex:0]; BAIL_IF(!path, PHYSFS_ERR_OS_ERROR, NULL); size_t len = [path lengthOfBytesUsingEncoding:NSUTF8StringEncoding]; const size_t applen = strlen(app); diff --git a/physfs-3.0/src/physfs_platform_windows.c b/physfs-3.0/src/physfs_platform_windows.c index e777235..7235f2a 100644 --- a/physfs-3.0/src/physfs_platform_windows.c +++ b/physfs-3.0/src/physfs_platform_windows.c @@ -566,7 +566,6 @@ char *__PHYSFS_platformCalcUserDir(void) else { DWORD psize = 0; - WCHAR dummy = 0; LPWSTR wstr = NULL; BOOL rc = 0; @@ -575,7 +574,7 @@ char *__PHYSFS_platformCalcUserDir(void) * psize. Also note that the second parameter can't be * NULL or the function fails. */ - rc = pGetDir(accessToken, &dummy, &psize); + rc = pGetDir(accessToken, NULL, &psize); GOTO_IF(rc, PHYSFS_ERR_OS_ERROR, done); /* should have failed! */ /* Allocate memory for the profile directory */