/////////////////////////////////////////////////////////////////////////////
-// Name: filefn.cpp
+// Name: src/msw/wince/filefn.cpp
// Purpose: File- and directory-related functions
// Author: Julian Smart
// Modified by:
// 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 <ctype.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
-#include <fcntl.h>
#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;
{
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) )
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)
{
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);
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;
}
}
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);
__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))