fix all cabinet fdi winetests (except the ones marked as (todo_wine)

svn path=/trunk/; revision=35973
This commit is contained in:
Christoph von Wittich 2008-09-06 06:35:07 +00:00
parent 9e8367f15e
commit b0a663b4a6

View file

@ -392,7 +392,7 @@ SetFilePointer(HANDLE hFile,
if(IsConsoleHandle(hFile))
{
SetLastError(ERROR_INVALID_HANDLE);
return -1;
return INVALID_SET_FILE_POINTER;
}
if (lpDistanceToMoveHigh)
@ -408,34 +408,48 @@ SetFilePointer(HANDLE hFile,
switch(dwMoveMethod)
{
case FILE_CURRENT:
NtQueryInformationFile(hFile,
errCode = NtQueryInformationFile(hFile,
&IoStatusBlock,
&FilePosition,
sizeof(FILE_POSITION_INFORMATION),
FilePositionInformation);
FilePosition.CurrentByteOffset.QuadPart += Distance.QuadPart;
if (!NT_SUCCESS(errCode))
{
if (lpDistanceToMoveHigh != NULL)
*lpDistanceToMoveHigh = -1;
SetLastErrorByStatus(errCode);
return INVALID_SET_FILE_POINTER;
}
break;
case FILE_END:
NtQueryInformationFile(hFile,
errCode = NtQueryInformationFile(hFile,
&IoStatusBlock,
&FileStandard,
sizeof(FILE_STANDARD_INFORMATION),
FileStandardInformation);
FilePosition.CurrentByteOffset.QuadPart =
FileStandard.EndOfFile.QuadPart + Distance.QuadPart;
if (!NT_SUCCESS(errCode))
{
if (lpDistanceToMoveHigh != NULL)
*lpDistanceToMoveHigh = -1;
SetLastErrorByStatus(errCode);
return INVALID_SET_FILE_POINTER;
}
break;
case FILE_BEGIN:
FilePosition.CurrentByteOffset.QuadPart = Distance.QuadPart;
break;
default:
SetLastError(ERROR_INVALID_PARAMETER);
return -1;
return INVALID_SET_FILE_POINTER;
}
if(FilePosition.CurrentByteOffset.QuadPart < 0)
{
SetLastError(ERROR_NEGATIVE_SEEK);
return -1;
return INVALID_SET_FILE_POINTER;
}
if (lpDistanceToMoveHigh == NULL && FilePosition.CurrentByteOffset.HighPart != 0)
@ -443,7 +457,7 @@ SetFilePointer(HANDLE hFile,
/* If we're moving the pointer outside of the 32 bit boundaries but
the application only passed a 32 bit value we need to bail out! */
SetLastError(ERROR_INVALID_PARAMETER);
return -1;
return INVALID_SET_FILE_POINTER;
}
errCode = NtSetInformationFile(hFile,
@ -457,7 +471,7 @@ SetFilePointer(HANDLE hFile,
*lpDistanceToMoveHigh = -1;
SetLastErrorByStatus(errCode);
return -1;
return INVALID_SET_FILE_POINTER;
}
if (lpDistanceToMoveHigh != NULL)