Patched to compile with latest Platform SDK.
authorRyan C. Gordon <icculus@icculus.org>
Mon, 19 Mar 2007 07:44:04 +0000
changeset 836 6514fba91816
parent 835 3facf34844bc
child 837 2f323231c6c3
Patched to compile with latest Platform SDK.
CMakeLists.txt
archivers/lzma.c
lzma/7zIn.c
physfs_internal.h
platform/windows.c
--- a/CMakeLists.txt	Mon Mar 19 06:58:49 2007 +0000
+++ b/CMakeLists.txt	Mon Mar 19 07:44:04 2007 +0000
@@ -62,6 +62,11 @@
     ENDIF(PHYSFS_IS_GCC4)
 ENDIF(CMAKE_COMPILER_IS_GNUCC)
 
+IF(MSVC)
+    # VS.NET 8.0 got really really anal about strcpy, etc, which even if we
+    #  cleaned up our code, zlib, etc still use...so disable the warning.
+    ADD_DEFINITIONS(-D_CRT_SECURE_NO_WARNINGS=1)
+ENDIF(MSVC)
 
 # Basic chunks of source code ...
 
--- a/archivers/lzma.c	Mon Mar 19 06:58:49 2007 +0000
+++ b/archivers/lzma.c	Mon Mar 19 07:44:04 2007 +0000
@@ -86,7 +86,7 @@
     PHYSFS_uint32 fileIndex; /* Index of file in archive */
     PHYSFS_uint32 folderIndex; /* Index of folder in archive */
     size_t offset; /* Offset in folder */
-    PHYSFS_uint32 position; /* Current "virtual" position in file */
+    PHYSFS_uint64 position; /* Current "virtual" position in file */
 } LZMAentry;
 
 
@@ -116,13 +116,13 @@
                         size_t *processedSize)
 {
     CFileInStream *s = (CFileInStream *)object;
-    size_t processedSizeLoc;
+    PHYSFS_sint64 processedSizeLoc;
     if (maxReqSize > kBufferSize)
         maxReqSize = kBufferSize;
     processedSizeLoc = __PHYSFS_platformRead(s->File, g_Buffer, 1, maxReqSize);
     *buffer = g_Buffer;
-    if (processedSize != 0)
-        *processedSize = processedSizeLoc;
+    if (processedSize != NULL)
+        *processedSize = (size_t) processedSizeLoc;
     return SZ_OK;
 } /* SzFileReadImp */
 
@@ -313,10 +313,11 @@
     } /* if */
 
     /* Copy wanted bytes over from cache to outBuffer */
-    strncpy(outBuffer,
+/* !!! FIXME: strncpy for non-string data? */
+	strncpy(outBuffer,
             (void*) (entry->archive->folder[entry->folderIndex].cache +
                      entry->offset + entry->position),
-            wantedSize);
+            (size_t) wantedSize);
     entry->position += wantedSize;
     return objCount;
 } /* LZMA_read */
@@ -465,7 +466,7 @@
      * Init with 0 so we know when a folder is already cached
      * Values will be set by LZMA_read()
      */
-    memset(archive->folder, 0, len);
+    memset(archive->folder, 0, (size_t) len);
 
     return(archive);
 } /* LZMA_openArchive */
--- a/lzma/7zIn.c	Mon Mar 19 06:58:49 2007 +0000
+++ b/lzma/7zIn.c	Mon Mar 19 07:44:04 2007 +0000
@@ -188,8 +188,9 @@
     size -= processedSize;
     do
     {
-      *data++ = *(Byte*)inBuffer++;
-    }
+      *(data++) = *((Byte*)inBuffer);
+      inBuffer = ((Byte*) inBuffer) + 1;
+	}
     while (--processedSize != 0);
   }
   #else
--- a/physfs_internal.h	Mon Mar 19 06:58:49 2007 +0000
+++ b/physfs_internal.h	Mon Mar 19 07:44:04 2007 +0000
@@ -24,6 +24,11 @@
 #define assert(x)
 #endif
 
+/* !!! FIXME: remove this when revamping stack allocation code... */
+#ifdef _MSC_VER
+#include <malloc.h>
+#endif
+
 #ifdef __cplusplus
 extern "C" {
 #endif
@@ -32,7 +37,7 @@
 #define malloc(x) Do not use malloc() directly.
 #define realloc(x, y) Do not use realloc() directly.
 #define free(x) Do not use free() directly.
-
+/* !!! FIXME: add alloca check here. */
 
 /* The LANG section. */
 /*  please send questions/translations to Ryan: icculus@icculus.org. */
--- a/platform/windows.c	Mon Mar 19 06:58:49 2007 +0000
+++ b/platform/windows.c	Mon Mar 19 07:44:04 2007 +0000
@@ -21,10 +21,12 @@
 
 #include "physfs_internal.h"
 
-#if (defined _MSC_VER)
-    #define alloca(x) _alloca(x)
-#elif (defined __MINGW32__)  /* scary...hopefully this is okay. */
-    #define alloca(x) __builtin_alloca(x) 
+#if (!defined alloca)
+    #if ((defined _MSC_VER)
+        #define alloca(x) _alloca(x)
+    #elif (defined __MINGW32__)  /* scary...hopefully this is okay. */
+        #define alloca(x) __builtin_alloca(x) 
+    #endif
 #endif
 
 #define LOWORDER_UINT64(pos) (PHYSFS_uint32) \