minor corrections to match the behavior of wine's implementation

svn path=/trunk/; revision=15037
This commit is contained in:
Thomas Bluemel 2005-05-06 11:02:47 +00:00
parent 6687b53ab8
commit 5ff8364d66

View file

@ -28,15 +28,14 @@ _hread(
{ {
DWORD NumberOfBytesRead; DWORD NumberOfBytesRead;
if (ReadFile( if ( !ReadFile(
(HANDLE) hFile, (HANDLE) hFile,
(LPVOID) lpBuffer, (LPVOID) lpBuffer,
(DWORD) lBytes, (DWORD) lBytes,
& NumberOfBytesRead, & NumberOfBytesRead,
NULL NULL) )
) == FALSE)
{ {
return -1; return HFILE_ERROR;
} }
return NumberOfBytesRead; return NumberOfBytesRead;
} }
@ -57,21 +56,20 @@ _hwrite (
if (lBytes == 0) if (lBytes == 0)
{ {
if ( SetEndOfFile((HANDLE) hFile ) == FALSE ) if ( !SetEndOfFile((HANDLE) hFile ) )
{ {
return -1; return HFILE_ERROR;
} }
return 0; return 0;
} }
if ( WriteFile( if ( !WriteFile(
(HANDLE) hFile, (HANDLE) hFile,
(LPVOID) lpBuffer, (LPVOID) lpBuffer,
(DWORD) lBytes, (DWORD) lBytes,
& NumberOfBytesWritten, & NumberOfBytesWritten,
NULL NULL) )
) == FALSE )
{ {
return -1; return HFILE_ERROR;
} }
return NumberOfBytesWritten; return NumberOfBytesWritten;
} }
@ -97,16 +95,15 @@ _lopen (
else if ( (iReadWrite & OF_WRITE ) == OF_WRITE ) else if ( (iReadWrite & OF_WRITE ) == OF_WRITE )
dwAccessMask = GENERIC_WRITE; dwAccessMask = GENERIC_WRITE;
if ((iReadWrite & OF_SHARE_COMPAT) == OF_SHARE_COMPAT ) if ((iReadWrite & OF_SHARE_DENY_READ) == OF_SHARE_DENY_READ)
dwShareMode = FILE_SHARE_WRITE | FILE_SHARE_READ | FILE_SHARE_DELETE; dwShareMode = FILE_SHARE_WRITE;
else if ((iReadWrite & OF_SHARE_DENY_NONE) == OF_SHARE_DENY_NONE)
dwShareMode = FILE_SHARE_WRITE | FILE_SHARE_READ | FILE_SHARE_DELETE;
else if ((iReadWrite & OF_SHARE_DENY_READ) == OF_SHARE_DENY_READ)
dwShareMode = FILE_SHARE_WRITE | FILE_SHARE_DELETE;
else if ((iReadWrite & OF_SHARE_DENY_WRITE) == OF_SHARE_DENY_WRITE ) else if ((iReadWrite & OF_SHARE_DENY_WRITE) == OF_SHARE_DENY_WRITE )
dwShareMode = FILE_SHARE_READ | FILE_SHARE_DELETE; dwShareMode = FILE_SHARE_READ;
else if ((iReadWrite & OF_SHARE_EXCLUSIVE) == OF_SHARE_EXCLUSIVE) else if ((iReadWrite & OF_SHARE_EXCLUSIVE) == OF_SHARE_EXCLUSIVE)
dwShareMode = 0; dwShareMode = 0;
else
/* OF_SHARE_DENY_NONE, OF_SHARE_COMPAT and everything else */
dwShareMode = FILE_SHARE_READ | FILE_SHARE_WRITE;
return (HFILE) CreateFileA( return (HFILE) CreateFileA(
lpPathName, lpPathName,
@ -129,13 +126,14 @@ _lcreat (
int iAttribute int iAttribute
) )
{ {
iAttribute &= FILE_ATTRIBUTE_READONLY | FILE_ATTRIBUTE_HIDDEN | FILE_ATTRIBUTE_SYSTEM;
return (HFILE) CreateFileA( return (HFILE) CreateFileA(
lpPathName, lpPathName,
GENERIC_ALL, GENERIC_READ | GENERIC_WRITE,
(FILE_SHARE_READ | FILE_SHARE_WRITE), (FILE_SHARE_READ | FILE_SHARE_WRITE),
NULL, NULL,
CREATE_ALWAYS, CREATE_ALWAYS,
iAttribute & FILE_ATTRIBUTE_VALID_FLAGS, iAttribute,
NULL); NULL);
} }
@ -153,7 +151,7 @@ _lclose (
{ {
return 0; return 0;
} }
return -1; return HFILE_ERROR;
} }