- Fix OpenFile for OF_CREATE case.

svn path=/trunk/; revision=10270
This commit is contained in:
Filip Navara 2004-07-24 01:27:54 +00:00
parent 8033e5b560
commit 05f0512081

View file

@ -1,4 +1,4 @@
/* $Id: file.c,v 1.55 2004/05/28 13:17:32 weiden Exp $ /* $Id: file.c,v 1.56 2004/07/24 01:27:54 navaraf Exp $
* *
* COPYRIGHT: See COPYING in the top level directory * COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS system libraries * PROJECT: ReactOS system libraries
@ -82,6 +82,28 @@ OpenFile(LPCSTR lpFileName,
return FALSE; return FALSE;
} }
if ((uStyle & OF_CREATE) == OF_CREATE)
{
DWORD Sharing;
switch (uStyle & 0x70)
{
case OF_SHARE_EXCLUSIVE: Sharing = 0; break;
case OF_SHARE_DENY_WRITE: Sharing = FILE_SHARE_READ; break;
case OF_SHARE_DENY_READ: Sharing = FILE_SHARE_WRITE; break;
case OF_SHARE_DENY_NONE:
case OF_SHARE_COMPAT:
default:
Sharing = FILE_SHARE_READ | FILE_SHARE_WRITE;
}
return (HFILE) CreateFileA (lpFileName,
GENERIC_READ | GENERIC_WRITE,
Sharing,
NULL,
CREATE_ALWAYS,
FILE_ATTRIBUTE_NORMAL,
0);
}
RtlInitAnsiString (&FileName, (LPSTR)lpFileName); RtlInitAnsiString (&FileName, (LPSTR)lpFileName);
/* convert ansi (or oem) string to unicode */ /* convert ansi (or oem) string to unicode */
@ -90,8 +112,6 @@ OpenFile(LPCSTR lpFileName,
else else
RtlOemStringToUnicodeString (&FileNameU, &FileName, TRUE); RtlOemStringToUnicodeString (&FileNameU, &FileName, TRUE);
if ((uStyle & OF_CREATE) == 0)
{
Len = SearchPathW (NULL, Len = SearchPathW (NULL,
FileNameU.Buffer, FileNameU.Buffer,
NULL, NULL,
@ -105,7 +125,6 @@ OpenFile(LPCSTR lpFileName,
{ {
return (HFILE)INVALID_HANDLE_VALUE; return (HFILE)INVALID_HANDLE_VALUE;
} }
}
FileName.Buffer = lpReOpenBuff->szPathName; FileName.Buffer = lpReOpenBuff->szPathName;
FileName.Length = 0; FileName.Length = 0;
@ -136,28 +155,6 @@ OpenFile(LPCSTR lpFileName,
return (HFILE)NULL; return (HFILE)NULL;
} }
if ((uStyle & OF_CREATE) == OF_CREATE)
{
DWORD Sharing;
switch (uStyle & 0x70)
{
case OF_SHARE_EXCLUSIVE: Sharing = 0; break;
case OF_SHARE_DENY_WRITE: Sharing = FILE_SHARE_READ; break;
case OF_SHARE_DENY_READ: Sharing = FILE_SHARE_WRITE; break;
case OF_SHARE_DENY_NONE:
case OF_SHARE_COMPAT:
default:
Sharing = FILE_SHARE_READ | FILE_SHARE_WRITE;
}
return (HFILE) CreateFileA (lpFileName,
GENERIC_READ | GENERIC_WRITE,
Sharing,
NULL,
CREATE_ALWAYS,
FILE_ATTRIBUTE_NORMAL,
0);
}
ObjectAttributes.Length = sizeof(OBJECT_ATTRIBUTES); ObjectAttributes.Length = sizeof(OBJECT_ATTRIBUTES);
ObjectAttributes.RootDirectory = NULL; ObjectAttributes.RootDirectory = NULL;
ObjectAttributes.ObjectName = &FileNameString; ObjectAttributes.ObjectName = &FileNameString;