use sprintf in PHYSFSX_getRealPath() because I couldn't figure out why the previous...
authorBradley Bell <btb@icculus.org>
Fri, 3 Dec 2004 07:29:32 +0000 (07:29 +0000)
committerBradley Bell <btb@icculus.org>
Fri, 3 Dec 2004 07:29:32 +0000 (07:29 +0000)
ChangeLog
include/physfsx.h

index 3c4e0fa..55485db 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2004-12-02  Bradley Bell  <btb@icculus.org>
+
+       * include/physfsx.h: use sprintf in PHYSFSX_getRealPath() because
+       I couldn't figure out why the previous code kept segfaulting under
+       linux.
+
 2004-12-02  Martin Schaffner  <maschaffner@gmx.ch>
 
        * configure.ac: require PhysicsFS header and library
index 2ca3cf9..25126fc 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: physfsx.h,v 1.4 2004-12-02 09:48:57 btb Exp $ */
+/* $Id: physfsx.h,v 1.5 2004-12-03 07:29:32 btb Exp $ */
 
 /*
  *
@@ -21,6 +21,8 @@
 
 #include <physfs.h>
 
+#include "error.h"
+
 static inline int PHYSFSX_readString(PHYSFS_file *file, char *s)
 {
        char *ptr = s;
@@ -77,19 +79,14 @@ static inline int PHYSFSX_putc(PHYSFS_file *file, int c)
 static inline int PHYSFSX_getRealPath(char *stdPath, char *realPath)
 {
        const char *realDir = PHYSFS_getRealDir(stdPath);
-       char *p;
        char sep = *PHYSFS_getDirSeparator();
 
        if (!realDir)
                return 0;
        
-       strncpy(realPath, realDir, PATH_MAX);   // some compilers (like MPW) don't have snprintf
-       p = realPath + strlen(realPath);
-       *p++ = sep;
-       *p = '\0';
-       strncat(realPath, stdPath, PATH_MAX - strlen(realPath));
-       while ((p = strchr(p, '/')))
-               *p++ = sep;
+       Assert(strlen(realDir) + 1 + strlen(stdPath) < PATH_MAX);
+
+       sprintf(realPath, "%s%c%s", realDir, sep, stdPath);
 
        return 1;
 }