Skip to content
Permalink
Browse files
Fixes for BeOS and gcc2.
  • Loading branch information
icculus committed Mar 12, 2007
1 parent 1da70fd commit 1a6f1787fa2320f361f7c4879cbf32d4625bedd7
Showing with 15 additions and 7 deletions.
  1. +7 −1 CMakeLists.txt
  2. +4 −4 archivers/lzma.c
  3. +4 −2 physfs.c
@@ -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
@@ -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;
@@ -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);

0 comments on commit 1a6f178

Please sign in to comment.