2 * created: Boudewijn Dekker
5 * todo: check the _lopen for correctness
8 #undef WIN32_LEAN_AND_MEAN
22 DWORD NumberOfBytesRead
;
23 if ( ReadFile((HANDLE
)hFile
,(LPCVOID
)lpBuffer
,(DWORD
)lBytes
,&NumberOfBytesRead
, NULL
) == FALSE
)
26 return NumberOfBytesRead
;
30 UINT STDCALL
_lread(HFILE fd
,LPVOID buffer
,UINT count
)
32 return _hread(fd
,buffer
, count
);
43 DWORD NumberOfBytesWritten
;
45 if ( SetEndOfFile((HANDLE
) hFile
) == FALSE
)
50 if ( WriteFile((HANDLE
)hFile
,(LPCVOID
)lpBuffer
,(DWORD
)lBytes
, &NumberOfBytesWritten
,NULL
) == FALSE
)
53 return NumberOfBytesWritten
;
65 return _hwrite(hFile
,lpBuffer
,uBytes
);
68 #define OF_OPENMASK (OF_READ|OF_READWRITE|OF_WRITE|OF_CREATE)
69 #define OF_FILEMASK (OF_DELETE|OF_PARSE)
70 #define OF_MASK (OF_OPENMASK|OF_FILEMASK)
72 HFILE
_open( LPCSTR lpPathName
, int iReadWrite
)
83 /* Don't assume a 1:1 relationship between OF_* modes and O_* modes */
84 /* Here we translate the read/write permission bits (which had better */
85 /* be the low 2 bits. If not, we're in trouble. Other bits are */
86 /* passed through unchanged */
88 nFunction
= wFunction
& 3;
90 switch (wFunction
& 3) {
92 nFunction
|= O_RDONLY
;
98 nFunction
|= O_WRONLY
;
101 //ERRSTR((LF_ERROR, "_lopen: bad file open mode %x\n", wFunction));
105 fd
= CreateFileA( filename
,nFunction
,OPEN_EXISTING
,
106 NULL
,OPEN_EXISTING
,NULL
,NULL
);
107 if (fd
== INVALID_HANDLE_VALUE
)
112 int _creat(const char *filename
, int pmode
)
115 return CreateFileA( filename
,GENERIC_READ
& GENERIC_WRITE
,FILE_SHARE_WRITE
,
116 NULL
,CREATE_ALWAYS
,pmode
& 0x00003FB7,NULL
);
124 if ( CloseHandle((HANDLE
)hFile
) )
136 return SetFilePointer((HANDLE
) hFile
, lOffset
, NULL
,(DWORD
)iOrigin
);