From 1a6f1787fa2320f361f7c4879cbf32d4625bedd7 Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Mon, 12 Mar 2007 03:41:20 +0000 Subject: [PATCH] Fixes for BeOS and gcc2. --- CMakeLists.txt | 8 +++++++- archivers/lzma.c | 8 ++++---- physfs.c | 6 ++++-- 3 files changed, 15 insertions(+), 7 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 39ec6379..83c57d25 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -42,7 +42,12 @@ ENDIF(MACOSX) # Add some gcc-specific command lines. IF(CMAKE_COMPILER_IS_GNUCC) # Always build with debug symbols...you can strip it later. - ADD_DEFINITIONS(-g -pipe -Wall -Werror -fsigned-char) + ADD_DEFINITIONS(-g -pipe -Werror -fsigned-char) + + # Stupid BeOS generates warnings in the system headers. + IF(NOT BEOS) + ADD_DEFINITIONS(-Wall) + ENDIF(NOT BEOS) CHECK_C_SOURCE_COMPILES(" #if ((defined(__GNUC__)) && (__GNUC__ >= 4)) @@ -92,6 +97,7 @@ IF(BEOS) # We add this explicitly, since we don't want CMake to think this # is a C++ project unless we're on BeOS. SET(PHYSFS_BEOS_SRCS platform/beos.cpp) + SET(OPTIONAL_LIBRARY_LIBS ${OPTIONAL_LIBRARY_LIBS} be root) ENDIF(BEOS) # Almost everything is "compiled" here, but things that don't apply to the diff --git a/archivers/lzma.c b/archivers/lzma.c index 71ccc873..d9c61987 100644 --- a/archivers/lzma.c +++ b/archivers/lzma.c @@ -265,6 +265,10 @@ static PHYSFS_sint64 LZMA_read(fvoid *opaque, void *outBuffer, PHYSFS_sint64 wantedSize = objSize*objCount; PHYSFS_sint64 remainingSize = entry->file->Size - entry->position; + size_t fileSize; + ISzAlloc allocImp; + ISzAlloc allocTempImp; + BAIL_IF_MACRO(wantedSize == 0, NULL, 0); /* quick rejection. */ BAIL_IF_MACRO(remainingSize == 0, ERR_PAST_EOF, 0); @@ -276,10 +280,6 @@ static PHYSFS_sint64 LZMA_read(fvoid *opaque, void *outBuffer, __PHYSFS_setError(ERR_PAST_EOF); /* this is always true here. */ } /* if */ - size_t fileSize; - ISzAlloc allocImp; - ISzAlloc allocTempImp; - /* Prepare callbacks for 7z */ allocImp.Alloc = SzAllocPhysicsFS; allocImp.Free = SzFreePhysicsFS; diff --git a/physfs.c b/physfs.c index 42882689..c73acdee 100644 --- a/physfs.c +++ b/physfs.c @@ -1503,10 +1503,12 @@ static void enumerateFromMountPoint(DirHandle *i, const char *arcfname, const char *_fname, void *data) { size_t len = strlen(arcfname); + char *ptr = NULL; + char *end = NULL; char *mountPoint = (char *) alloca(strlen(i->mountPoint) + 1); strcpy(mountPoint, i->mountPoint); - char *ptr = mountPoint + ((len) ? len + 1 : 0); - char *end = strchr(ptr, '/'); + ptr = mountPoint + ((len) ? len + 1 : 0); + end = strchr(ptr, '/'); assert(end); /* should always find a terminating '/'. */ *end = '\0'; callback(data, _fname, ptr);