mirror of
https://github.com/reactos/reactos.git
synced 2025-04-25 08:00:24 +00:00
- Fix 11 tests for OpenFile
svn path=/trunk/; revision=38374
This commit is contained in:
parent
128f584a7d
commit
683099598f
1 changed files with 47 additions and 13 deletions
|
@ -236,7 +236,33 @@ OpenFile(LPCSTR lpFileName,
|
|||
|
||||
if (lpReOpenBuff == NULL)
|
||||
{
|
||||
return FALSE;
|
||||
return HFILE_ERROR;
|
||||
}
|
||||
|
||||
lpReOpenBuff->cBytes = sizeof(OFSTRUCT);
|
||||
lpReOpenBuff->nErrCode = 0;
|
||||
|
||||
if (uStyle & OF_REOPEN) lpFileName = lpReOpenBuff->szPathName;
|
||||
|
||||
if (!lpFileName)
|
||||
{
|
||||
return HFILE_ERROR;
|
||||
}
|
||||
|
||||
if (!GetFullPathNameA(lpFileName,
|
||||
sizeof(lpReOpenBuff->szPathName),
|
||||
lpReOpenBuff->szPathName,
|
||||
NULL))
|
||||
{
|
||||
lpReOpenBuff->nErrCode = GetLastError();
|
||||
return HFILE_ERROR;
|
||||
}
|
||||
|
||||
if (uStyle & OF_PARSE)
|
||||
{
|
||||
lpReOpenBuff->fFixedDisk = (GetDriveTypeA(lpReOpenBuff->szPathName) != DRIVE_REMOVABLE);
|
||||
TRACE("(%s): OF_PARSE, res = '%s'\n", lpFileName, lpReOpenBuff->szPathName);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if ((uStyle & OF_CREATE) == OF_CREATE)
|
||||
|
@ -280,9 +306,21 @@ OpenFile(LPCSTR lpFileName,
|
|||
|
||||
if (Len == 0 || Len > OFS_MAXPATHNAME)
|
||||
{
|
||||
lpReOpenBuff->nErrCode = GetLastError();
|
||||
return (HFILE)INVALID_HANDLE_VALUE;
|
||||
}
|
||||
|
||||
if (uStyle & OF_DELETE)
|
||||
{
|
||||
if (!DeleteFileW(PathNameW))
|
||||
{
|
||||
lpReOpenBuff->nErrCode = GetLastError();
|
||||
return HFILE_ERROR;
|
||||
}
|
||||
TRACE("(%s): OF_DELETE return = OK\n", lpFileName);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
FileName.Buffer = lpReOpenBuff->szPathName;
|
||||
FileName.Length = 0;
|
||||
FileName.MaximumLength = OFS_MAXPATHNAME;
|
||||
|
@ -306,14 +344,6 @@ OpenFile(LPCSTR lpFileName,
|
|||
// FILE_SHARE_READ
|
||||
// FILE_NO_INTERMEDIATE_BUFFERING
|
||||
|
||||
if ((uStyle & OF_PARSE) == OF_PARSE)
|
||||
{
|
||||
RtlFreeHeap(RtlGetProcessHeap(),
|
||||
0,
|
||||
FileNameString.Buffer);
|
||||
return (HFILE)NULL;
|
||||
}
|
||||
|
||||
ObjectAttributes.Length = sizeof(OBJECT_ATTRIBUTES);
|
||||
ObjectAttributes.RootDirectory = NULL;
|
||||
ObjectAttributes.ObjectName = &FileNameString;
|
||||
|
@ -328,11 +358,9 @@ OpenFile(LPCSTR lpFileName,
|
|||
FILE_SHARE_READ,
|
||||
FILE_NON_DIRECTORY_FILE|FILE_SYNCHRONOUS_IO_NONALERT);
|
||||
|
||||
RtlFreeHeap(RtlGetProcessHeap(),
|
||||
0,
|
||||
FileNameString.Buffer);
|
||||
RtlFreeHeap(RtlGetProcessHeap(), 0, FileNameString.Buffer);
|
||||
|
||||
lpReOpenBuff->nErrCode = (WORD)RtlNtStatusToDosError(errCode);
|
||||
lpReOpenBuff->nErrCode = RtlNtStatusToDosError(errCode);
|
||||
|
||||
if (!NT_SUCCESS(errCode))
|
||||
{
|
||||
|
@ -340,6 +368,12 @@ OpenFile(LPCSTR lpFileName,
|
|||
return (HFILE)INVALID_HANDLE_VALUE;
|
||||
}
|
||||
|
||||
if (uStyle & OF_EXIST)
|
||||
{
|
||||
NtClose(FileHandle);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
return (HFILE)FileHandle;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue