2008-10-13 21:30 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)

* harbour/include/hbwince.h
  * harbour/source/common/hbwince.c
    ! fixed LastError overwriting inside WinCE wrapper functions
This commit is contained in:
Przemyslaw Czerpak
2008-10-13 19:30:38 +00:00
parent b9e2e7b6f0
commit f97d4e1cda
3 changed files with 67 additions and 17 deletions

View File

@@ -8,6 +8,11 @@
2008-12-31 13:59 UTC+0100 Foo Bar (foo.bar foobar.org)
*/
2008-10-13 21:30 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbwince.h
* harbour/source/common/hbwince.c
! fixed LastError overwriting inside WinCE wrapper functions
2008-10-13 20:21 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/source/rdd/wacore.c
; updated comments about xbase++ behavior in dbRelease()

View File

@@ -68,7 +68,6 @@ extern clock_t clock( void );
#endif
extern int remove( const char *filename );
extern int access( const char *pathname, int mode );
extern int system( const char *string );
extern char *strerror( int errnum );

View File

@@ -135,21 +135,6 @@ int remove( const char *filename )
return DeleteFileA( filename ) ? 0 : -1;
}
int access( const char *filename, int mode )
{
WIN32_FIND_DATAW wdata;
LPWSTR wfilename;
HANDLE h;
HB_SYMBOL_UNUSED( mode );
wfilename = hb_mbtowc( filename );
h = FindFirstFileW( wfilename, &wdata );
hb_xfree( wfilename );
return h != INVALID_HANDLE_VALUE;
}
int system( const char *cmd )
{
LPWSTR wcmd;
@@ -368,74 +353,92 @@ HANDLE WINAPI CreateFileA( LPCSTR filename, DWORD access,
DWORD sharing, LPSECURITY_ATTRIBUTES sa,
DWORD creation, DWORD attributes, HANDLE tmplt )
{
DWORD dwError;
LPWSTR wfilename;
HANDLE h;
wfilename = hb_mbtowc( filename );
h = CreateFileW( wfilename, access, sharing, sa, creation, attributes, tmplt );
dwError = GetLastError();
hb_xfree( wfilename );
SetLastError( dwError );
return h;
}
BOOL WINAPI MoveFileA( LPCSTR fn1, LPCSTR fn2 )
{
DWORD dwError;
LPWSTR wfn1, wfn2;
BOOL b;
wfn1 = hb_mbtowc( fn1 );
wfn2 = hb_mbtowc( fn2 );
b = MoveFileW( wfn1, wfn2 );
dwError = GetLastError();
hb_xfree( wfn1 );
hb_xfree( wfn2 );
SetLastError( dwError );
return b;
}
BOOL WINAPI DeleteFileA( LPCSTR path )
{
DWORD dwError;
LPWSTR wpath;
BOOL b;
wpath = hb_mbtowc( path );
b = DeleteFileW( wpath );
dwError = GetLastError();
hb_xfree( wpath );
SetLastError( dwError );
return b;
}
BOOL WINAPI RemoveDirectoryA( LPCSTR path )
{
DWORD dwError;
LPWSTR wpath;
BOOL b;
wpath = hb_mbtowc( path );
b = RemoveDirectoryW( wpath );
dwError = GetLastError();
hb_xfree( wpath );
SetLastError( dwError );
return b;
}
BOOL WINAPI CreateDirectoryA( LPCSTR path, LPSECURITY_ATTRIBUTES attr )
{
DWORD dwError;
LPWSTR wpath;
BOOL b;
wpath = hb_mbtowc( path );
b = CreateDirectoryW( wpath, attr );
dwError = GetLastError();
hb_xfree( wpath );
SetLastError( dwError );
return b;
}
BOOL WINAPI SetFileAttributesA( LPCSTR filename, DWORD attr )
{
DWORD dwError;
LPWSTR wfilename;
BOOL b;
wfilename = hb_mbtowc( filename );
b = SetFileAttributesW( wfilename, attr );
dwError = GetLastError();
hb_xfree( wfilename );
SetLastError( dwError );
return b;
}
@@ -456,6 +459,7 @@ BOOL WINAPI OemToCharBuffA( LPCSTR src, LPSTR dst, DWORD len )
HANDLE WINAPI FindFirstFileA( LPCSTR path, WIN32_FIND_DATAA * data )
{
DWORD dwError;
WIN32_FIND_DATAW wdata;
LPWSTR wpath;
LPSTR mb;
@@ -463,8 +467,8 @@ HANDLE WINAPI FindFirstFileA( LPCSTR path, WIN32_FIND_DATAA * data )
wpath = hb_mbtowc( path );
h = FindFirstFileW( wpath, &wdata );
dwError = GetLastError();
hb_xfree( wpath );
mb = hb_wctomb( wdata.cFileName );
hb_strncpy( data->cFileName, mb, sizeof( data->cFileName ) - 1 );
hb_xfree( mb );
@@ -474,17 +478,20 @@ HANDLE WINAPI FindFirstFileA( LPCSTR path, WIN32_FIND_DATAA * data )
data->ftLastWriteTime = wdata.ftLastWriteTime;
data->nFileSizeHigh = wdata.nFileSizeHigh;
data->nFileSizeLow = wdata.nFileSizeLow;
SetLastError( dwError );
return h;
}
BOOL WINAPI FindNextFileA( HANDLE handle, WIN32_FIND_DATAA * data )
{
DWORD dwError;
WIN32_FIND_DATAW wdata;
LPSTR mb;
BOOL b;
b = FindNextFileW( handle, &wdata );
dwError = GetLastError();
mb = hb_wctomb( wdata.cFileName );
hb_strncpy( data->cFileName, mb, sizeof( data->cFileName ) - 1 );
hb_xfree( mb );
@@ -494,18 +501,22 @@ BOOL WINAPI FindNextFileA( HANDLE handle, WIN32_FIND_DATAA * data )
data->ftLastWriteTime = wdata.ftLastWriteTime;
data->nFileSizeHigh = wdata.nFileSizeHigh;
data->nFileSizeLow = wdata.nFileSizeLow;
SetLastError( dwError );
return b;
}
DWORD WINAPI GetFileAttributesA( LPCSTR path )
{
DWORD dwError;
LPWSTR wpath;
DWORD dw;
wpath = hb_mbtowc( path );
dw = GetFileAttributesW( wpath );
dwError = GetLastError();
hb_xfree( wpath );
SetLastError( dwError );
return dw;
}
@@ -514,12 +525,15 @@ UINT WINAPI GetDriveTypeA( LPCSTR path )
{
/* temporary disabled - not all WinCE compilers support GetDriveTypeW() */
#if 0
DWORD dwError;
LPWSTR wpath;
UINT ui;
wpath = hb_mbtowc( path );
ui = GetDriveTypeW( wpath );
dwError = GetLastError();
hb_xfree( wpath );
SetLastError( dwError );
return ui;
#else
@@ -531,11 +545,13 @@ UINT WINAPI GetDriveTypeA( LPCSTR path )
BOOL WINAPI GetVersionExA( OSVERSIONINFOA * v )
{
DWORD dwError;
OSVERSIONINFOW wv;
LPSTR mb;
BOOL b;
b = GetVersionExW( &wv );
dwError = GetLastError();
mb = hb_wctomb( wv.szCSDVersion );
hb_strncpy( v->szCSDVersion, mb, sizeof( v->szCSDVersion ) - 1 );
hb_xfree( mb );
@@ -544,6 +560,7 @@ BOOL WINAPI GetVersionExA( OSVERSIONINFOA * v )
v->dwMinorVersion = wv.dwMinorVersion;
v->dwBuildNumber = wv.dwBuildNumber;
v->dwPlatformId = wv.dwPlatformId;
SetLastError( dwError );
return b;
}
@@ -565,45 +582,55 @@ DWORD WINAPI GetFileType( HANDLE handle )
HMODULE WINAPI GetModuleHandleA( LPCSTR modulename )
{
DWORD dwError;
LPWSTR wmodulename;
HMODULE h;
wmodulename = hb_mbtowc( modulename );
h = GetModuleHandleW( wmodulename );
dwError = GetLastError();
hb_xfree( wmodulename );
SetLastError( dwError );
return h;
}
HINSTANCE WINAPI LoadLibraryA( LPCSTR libname )
{
DWORD dwError;
LPWSTR wlibname;
HINSTANCE h;
wlibname = hb_mbtowc( libname );
h = LoadLibraryW( wlibname );
dwError = GetLastError();
hb_xfree( wlibname );
SetLastError( dwError );
return h;
}
DWORD WINAPI GetTempPathA( DWORD size, LPSTR buffer )
{
DWORD dwError;
WCHAR wbuffer[MAX_PATH] = { 0 };
char *abuffer;
DWORD dw;
dw = GetTempPathW( MAX_PATH, wbuffer );
dwError = GetLastError();
abuffer = hb_wctomb( wbuffer );
hb_strncpy( buffer, abuffer, size );
hb_xfree( abuffer );
SetLastError( dwError );
return dw;
}
UINT WINAPI GetTempFileNameA( LPCSTR tmpdir, LPCSTR prefix, UINT unique, LPSTR filename )
{
DWORD dwError;
LPWSTR wtmpdir, wprefix;
WCHAR wfilename[ MAX_PATH ] = { 0 };
UINT u;
@@ -611,6 +638,7 @@ UINT WINAPI GetTempFileNameA( LPCSTR tmpdir, LPCSTR prefix, UINT unique, LPSTR f
wtmpdir = hb_mbtowc( tmpdir );
wprefix = hb_mbtowc( prefix );
u = GetTempFileNameW( wtmpdir, wprefix, unique, wfilename );
dwError = GetLastError();
hb_xfree( wtmpdir );
hb_xfree( wprefix );
@@ -621,6 +649,7 @@ UINT WINAPI GetTempFileNameA( LPCSTR tmpdir, LPCSTR prefix, UINT unique, LPSTR f
hb_strncpy( filename, afilename, _POSIX_PATH_MAX );
hb_xfree( afilename );
}
SetLastError( dwError );
return u;
}
@@ -737,6 +766,22 @@ BOOL WINAPI FloodFill( HDC h, int x, int y, COLORREF c )
*/
#if 0
#if defined(__MINGW32CE__)
int access( const char *filename, int mode )
{
WIN32_FIND_DATAW wdata;
LPWSTR wfilename;
HANDLE h;
HB_SYMBOL_UNUSED( mode );
wfilename = hb_mbtowc( filename );
h = FindFirstFileW( wfilename, &wdata );
hb_xfree( wfilename );
return h != INVALID_HANDLE_VALUE;
}
clock_t clock( void )
{
SYSTEMTIME st;
@@ -760,6 +805,7 @@ BOOL WINAPI GetDiskFreeSpaceA( LPCSTR path, PDWORD pdwSectorsPerCluster,
return FALSE;
}
#endif /* 0 */
#endif /* HB_WINCE */