From d3dfd7f4646801f351ad12dacd44f4ac6a775665 Mon Sep 17 00:00:00 2001 From: "Gregory S. Read" <18175637+readgs@users.noreply.github.com> Date: Wed, 8 May 2002 00:02:35 +0000 Subject: [PATCH] -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 | 40 ++++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/platform/win32.c b/platform/win32.c index 0f566e0..458d5aa 100644 --- a/platform/win32.c +++ b/platform/win32.c @@ -471,9 +471,8 @@ int __PHYSFS_platformInit(void) 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...) */ @@ -657,19 +656,19 @@ PHYSFS_sint64 __PHYSFS_platformTell(void *opaque) /* Get current position */ if(((LowOrderPos = SetFilePointer(FileHandle, 0, &HighOrderPos, FILE_CURRENT)) == INVALID_SET_FILE_POINTER) && (GetLastError() != NO_ERROR)) - { - /* 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; } + else + { + /* Combine the high/low order to create the 64-bit position value */ + retval = HighOrderPos; + retval = retval << 32; + retval |= LowOrderPos; + } /*!!! Can't find a file pointer routine?!?!?!!?!?*/ return retval; @@ -684,22 +683,23 @@ PHYSFS_sint64 __PHYSFS_platformFileLength(void *handle) /* 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)) - { - /* 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; } + else + { + /* Combine the high/low order to create the 64-bit position value */ + retval = FileSizeHigh; + retval = retval << 32; + retval |= FileSizeLow; + } return retval; } @@ -716,8 +716,8 @@ int __PHYSFS_platformEOF(void *opaque) /* 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;