Skip to content
Permalink
Browse files
-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.
  • Loading branch information
readgs committed May 8, 2002
1 parent c06e3ca commit d3dfd7f4646801f351ad12dacd44f4ac6a775665
Showing with 20 additions and 20 deletions.
  1. +20 −20 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;

0 comments on commit d3dfd7f

Please sign in to comment.