X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/08c63240955ba156a1c73024c65f28ddc1a660ac..89d94e046d82725ac0b6d266c3d6263237ab2e47:/src/msw/wince/filefnwce.cpp diff --git a/src/msw/wince/filefnwce.cpp b/src/msw/wince/filefnwce.cpp index a1163cfee9..f990d7e332 100644 --- a/src/msw/wince/filefnwce.cpp +++ b/src/msw/wince/filefnwce.cpp @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: filefn.cpp +// Name: src/msw/wince/filefn.cpp // Purpose: File- and directory-related functions // Author: Julian Smart // Modified by: @@ -17,28 +17,24 @@ // headers // ---------------------------------------------------------------------------- -#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) - #pragma implementation "filefn.h" -#endif - // For compilers that support precompilation, includes "wx.h". #include "wx/wxprec.h" -#include "wx/defs.h" -#include "wx/file.h" #ifdef __BORLANDC__ #pragma hdrstop #endif +#include "wx/file.h" + #include #include #include #include -#include #ifdef __WXWINCE__ +#include "wx/msw/wince/missing.h" -int wxOpen(const wxChar *filename, int oflag, int WXUNUSED(pmode)) +int wxCRT_Open(const wxChar *filename, int oflag, int WXUNUSED(pmode)) { DWORD access = 0; DWORD shareMode = 0; @@ -48,16 +44,19 @@ int wxOpen(const wxChar *filename, int oflag, int WXUNUSED(pmode)) { access = GENERIC_READ; shareMode = FILE_SHARE_READ|FILE_SHARE_WRITE; - disposition |= OPEN_EXISTING; + disposition = OPEN_EXISTING; } else if ((oflag & (O_RDONLY | O_WRONLY | O_RDWR)) == O_WRONLY) { access = GENERIC_WRITE; + disposition = OPEN_ALWAYS; } else if ((oflag & (O_RDONLY | O_WRONLY | O_RDWR)) == O_RDWR) { access = GENERIC_READ|GENERIC_WRITE; + disposition = OPEN_ALWAYS; } + if (oflag & O_APPEND) { if ( wxFile::Exists(filename) ) @@ -66,16 +65,16 @@ int wxOpen(const wxChar *filename, int oflag, int WXUNUSED(pmode)) shareMode = FILE_SHARE_READ; disposition = OPEN_EXISTING; } - //else: fall through as write_append is the same as write if the - // file doesn't exist else + { oflag |= O_TRUNC; + } } if (oflag & O_TRUNC) { access |= GENERIC_WRITE; shareMode = 0; - disposition = (oflag & O_CREAT) ? CREATE_ALWAYS : TRUNCATE_EXISTING; + disposition = oflag & O_CREAT ? CREATE_ALWAYS : TRUNCATE_EXISTING; } else if (oflag & O_CREAT) { @@ -101,7 +100,7 @@ int wxOpen(const wxChar *filename, int oflag, int WXUNUSED(pmode)) return fd; } -int wxAccess(const wxChar *name, int WXUNUSED(how)) +int wxCRT_Access(const wxChar *name, int WXUNUSED(how)) { HANDLE fileHandle = ::CreateFile(name, 0, FILE_SHARE_DELETE | FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0); @@ -123,21 +122,19 @@ int wxClose(int fd) int wxEof(int fd) { - LONG high0 = 0; - DWORD off0 = SetFilePointer((HANDLE) fd, 0, &high0, FILE_CURRENT); + DWORD off0 = SetFilePointer((HANDLE) fd, 0, NULL, FILE_CURRENT); if (off0 == 0xFFFFFFFF && GetLastError() != NO_ERROR) return -1; - - LONG high1 = 0; - DWORD off1 = SetFilePointer((HANDLE) fd, 0, &high0, FILE_END); + + DWORD off1 = SetFilePointer((HANDLE) fd, 0, NULL, FILE_END); if (off1 == 0xFFFFFFFF && GetLastError() != NO_ERROR) return -1; - - if (off0 == off1 && high0 == high1) + + if (off0 == off1) return 1; else { - SetFilePointer((HANDLE) fd, off0, &high0, FILE_BEGIN); + SetFilePointer((HANDLE) fd, off0, NULL, FILE_BEGIN); return 0; } } @@ -182,8 +179,7 @@ __int64 wxSeek(int fd, __int64 offset, int origin) break; } - LONG high = 0; - DWORD res = SetFilePointer((HANDLE) fd, offset, &high, method) ; + DWORD res = SetFilePointer((HANDLE) fd, offset, NULL, method) ; if (res == 0xFFFFFFFF && GetLastError() != NO_ERROR) { wxLogSysError(_("can't seek on file descriptor %d"), fd); @@ -195,15 +191,16 @@ __int64 wxSeek(int fd, __int64 offset, int origin) __int64 wxTell(int fd) { - LONG high = 0; - DWORD res = SetFilePointer((HANDLE) fd, 0, &high, FILE_CURRENT) ; + // WinCE apparently doesn't support lpDistanceToMoveHigh. + // LONG high = 0; + DWORD res = SetFilePointer((HANDLE) fd, 0, NULL, FILE_CURRENT) ; if (res == 0xFFFFFFFF && GetLastError() != NO_ERROR) { wxLogSysError(_("can't get seek position on file descriptor %d"), fd); return wxInvalidOffset; } else - return res + (((__int64)high) << 32); + return res ; // + (((__int64)high) << 32); } int wxFsync(int WXUNUSED(fd))