-Fixed a lot of the file functions error handling. Many were handling
authorGregory S. Read <zeph@clutteredmind.org>
Wed, 08 May 2002 00:02:35 +0000
changeset 211 e9a1d8b11e85
parent 210 f5507414f7b7
child 212 1d8fe77a5f27
-Fixed a lot of the file functions error handling. Many were handling success as failure, etc... -File position is 0 based, EOF was being tested as though position was 1 based. -All file i/o and archive i/o functions tested okay with physfs_test app.
platform/win32.c
--- a/platform/win32.c	Mon May 06 03:26:10 2002 +0000
+++ b/platform/win32.c	Wed May 08 00:02:35 2002 +0000
@@ -471,9 +471,8 @@
         return 0;
     }
 
-    /* TODO - Probably want to change this to something like the basedir */
-    /* Default profile directory */
-	ProfileDirectory = "C:\\";
+    /* Default profile directory is the exe path */
+	ProfileDirectory = getExePath(NULL);
 
 #ifndef DISABLE_NT_SUPPORT
     /* If running an NT system (NT/Win2k/XP, etc...) */
@@ -658,18 +657,18 @@
     if(((LowOrderPos = SetFilePointer(FileHandle, 0, &HighOrderPos, FILE_CURRENT))
         == INVALID_SET_FILE_POINTER) && (GetLastError() != NO_ERROR))
     {
+        /* Set the error to GetLastError */
+        __PHYSFS_setError(win32strerror());
+        /* We errored out */
+        retval = 0;
+    }
+    else
+    {
         /* Combine the high/low order to create the 64-bit position value */
         retval = HighOrderPos;
         retval = retval << 32;
         retval |= LowOrderPos;
     }
-    else
-    {
-        /* Set the error to GetLastError */
-        __PHYSFS_setError(win32strerror());
-        /* We errored out */
-        retval = 0;
-    }
 
     /*!!! Can't find a file pointer routine?!?!?!!?!?*/
     return retval;
@@ -684,22 +683,23 @@
 
     /* Cast the generic handle to a Win32 handle */
     FileHandle = (HANDLE)handle;
-    
+
+    /* Get the file size.  Condition evaluates to TRUE if an error occured */
     if(((FileSizeLow = GetFileSize(FileHandle, &FileSizeHigh))
         == INVALID_SET_FILE_POINTER) && (GetLastError() != NO_ERROR))
     {
+        /* Set the error to GetLastError */
+        __PHYSFS_setError(win32strerror());
+
+        retval = -1;
+    }
+    else
+    {
         /* Combine the high/low order to create the 64-bit position value */
         retval = FileSizeHigh;
         retval = retval << 32;
         retval |= FileSizeLow;
     }
-    else
-    {
-        /* Set the error to GetLastError */
-        __PHYSFS_setError(win32strerror());
-
-        retval = -1;
-    }
 
     return retval;
 }
@@ -716,8 +716,8 @@
     /* Get the current position in the file */
     if((FilePosition = __PHYSFS_platformTell(opaque)) != 0)
     {
-        /* Non-zero if EOF is equal to the file length - 1 */
-        retval = FilePosition == __PHYSFS_platformFileLength(opaque) - 1;
+        /* Non-zero if EOF is equal to the file length */
+        retval = FilePosition == __PHYSFS_platformFileLength(opaque);
     }
 
     return retval;