minor corrections to match the behavior of wine's implementation
Modified: trunk/reactos/lib/kernel32/file/lfile.c

Modified: trunk/reactos/lib/kernel32/file/lfile.c
--- trunk/reactos/lib/kernel32/file/lfile.c	2005-05-06 10:45:24 UTC (rev 15036)
+++ trunk/reactos/lib/kernel32/file/lfile.c	2005-05-06 11:02:47 UTC (rev 15037)
@@ -28,15 +28,14 @@
 {
 	DWORD	NumberOfBytesRead;
 	
-	if (ReadFile(
+	if ( !ReadFile(
 		(HANDLE) hFile,
 		(LPVOID) lpBuffer,
 		(DWORD) lBytes,
 		& NumberOfBytesRead,
-		NULL
-		) == FALSE)
+		NULL) )
 	{
-		return -1;
+		return HFILE_ERROR;
 	}
 	return NumberOfBytesRead;
 }
@@ -57,21 +56,20 @@
 	
 	if (lBytes == 0)
 	{
-		if ( SetEndOfFile((HANDLE) hFile ) == FALSE )
+		if ( !SetEndOfFile((HANDLE) hFile ) )
 		{
-			return -1;
+			return HFILE_ERROR;
 		}
 		return 0;
 	}
-	if ( WriteFile(
+	if ( !WriteFile(
 		(HANDLE) hFile,
 		(LPVOID) lpBuffer,
 		(DWORD) lBytes,
 		& NumberOfBytesWritten,
-		NULL
-		) == FALSE )
+		NULL) )
 	{
-		return -1;
+		return HFILE_ERROR;
 	}
 	return NumberOfBytesWritten;
 }
@@ -97,16 +95,15 @@
 	else if ( (iReadWrite & OF_WRITE ) == OF_WRITE )
 		dwAccessMask = GENERIC_WRITE;
 
-	if ((iReadWrite & OF_SHARE_COMPAT) == OF_SHARE_COMPAT )
-		dwShareMode = FILE_SHARE_WRITE | FILE_SHARE_READ | FILE_SHARE_DELETE;
-	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;
+	if ((iReadWrite & OF_SHARE_DENY_READ) == OF_SHARE_DENY_READ)
+		dwShareMode = FILE_SHARE_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)
 		dwShareMode = 0;
+	else
+		/* OF_SHARE_DENY_NONE, OF_SHARE_COMPAT and everything else */
+                dwShareMode = FILE_SHARE_READ | FILE_SHARE_WRITE;
 
 	return (HFILE) CreateFileA(
 			lpPathName,
@@ -129,13 +126,14 @@
 	int	iAttribute
 	)
 {
+	iAttribute &= FILE_ATTRIBUTE_READONLY | FILE_ATTRIBUTE_HIDDEN | FILE_ATTRIBUTE_SYSTEM;
 	return (HFILE) CreateFileA(
 			lpPathName,
-			GENERIC_ALL,
+			GENERIC_READ | GENERIC_WRITE,
 			(FILE_SHARE_READ | FILE_SHARE_WRITE),
 			NULL,
 			CREATE_ALWAYS,
-			iAttribute & FILE_ATTRIBUTE_VALID_FLAGS,
+			iAttribute,
 			NULL);
 }
 
@@ -153,7 +151,7 @@
 	{
 		return 0;
 	}
-	return -1;
+	return HFILE_ERROR;
 }