@ -196,6 +196,61 @@
}
# ifdef _WIN32_WCE
FT_LOCAL_DEF ( HANDLE )
CreateFileA ( LPCSTR lpFileName ,
DWORD dwDesiredAccess ,
DWORD dwShareMode ,
LPSECURITY_ATTRIBUTES lpSecurityAttributes ,
DWORD dwCreationDisposition ,
DWORD dwFlagsAndAttributes ,
HANDLE hTemplateFile )
{
int len ;
LPWSTR lpFileNameW ;
/* allocate memory space for converted path name */
len = MultiByteToWideChar ( CP_ACP , MB_ERR_INVALID_CHARS ,
lpFileName , - 1 , NULL , 0 ) ;
lpFileNameW = ( LPWSTR ) _alloca ( len * sizeof ( WCHAR ) ) ;
if ( ! len | | ! lpFileNameW )
{
FT_ERROR ( ( " FT_Stream_Open: cannot convert file name to LPWSTR \n " ) ) ;
return INVALID_HANDLE_VALUE ;
}
/* now it is safe to do the translation */
MultiByteToWideChar ( CP_ACP , MB_ERR_INVALID_CHARS ,
lpFileName , - 1 , lpFileNameW , len ) ;
/* open the file */
return CreateFileW ( lpFileNameW , dwDesiredAccess , dwShareMode ,
lpSecurityAttributes , dwCreationDisposition ,
dwFlagsAndAttributes , hTemplateFile ) ;
}
FT_LOCAL_DEF ( BOOL )
GetFileSizeEx ( HANDLE hFile ,
PLARGE_INTEGER lpFileSize )
{
lpFileSize - > u . LowPart = GetFileSize ( hFile ,
( DWORD * ) & lpFileSize - > u . HighPart ) ;
if ( lpFileSize - > u . LowPart = = INVALID_FILE_SIZE & &
GetLastError ( ) ! = NO_ERROR )
return FALSE ;
else
return TRUE ;
}
# endif /* _WIN32_WCE */
/* documentation is in ftobjs.h */
FT_BASE_DEF ( FT_Error )
@ -211,36 +266,16 @@
return FT_THROW ( Invalid_Stream_Handle ) ;
/* open the file */
file = CreateFile ( ( LPCT STR ) filepathname , GENERIC_READ , FILE_SHARE_READ ,
NULL , OPEN_EXISTING , FILE_ATTRIBUTE_NORMAL , 0 ) ;
file = CreateFileA ( ( LPCSTR ) filepathname , GENERIC_READ , FILE_SHARE_READ ,
NULL , OPEN_EXISTING , FILE_ATTRIBUTE_NORMAL , 0 ) ;
if ( file = = INVALID_HANDLE_VALUE )
{
/* fall back on the alernative interface */
# ifdef UNICODE
file = CreateFileA ( ( LPCSTR ) filepathname , GENERIC_READ , FILE_SHARE_READ ,
NULL , OPEN_EXISTING , FILE_ATTRIBUTE_NORMAL , 0 ) ;
# else
file = CreateFileW ( ( LPCWSTR ) filepathname , GENERIC_READ , FILE_SHARE_READ ,
NULL , OPEN_EXISTING , FILE_ATTRIBUTE_NORMAL , 0 ) ;
# endif
if ( file = = INVALID_HANDLE_VALUE )
{
FT_ERROR ( ( " FT_Stream_Open: " ) ) ;
FT_ERROR ( ( " could not open `%s' \n " , filepathname ) ) ;
return FT_THROW ( Cannot_Open_Resource ) ;
}
FT_ERROR ( ( " FT_Stream_Open: " ) ) ;
FT_ERROR ( ( " could not open `%s' \n " , filepathname ) ) ;
return FT_THROW ( Cannot_Open_Resource ) ;
}
# if defined _WIN32_WCE || defined _WIN32_WINDOWS || \
( defined _WIN32_WINNT & & _WIN32_WINNT < = 0x0400 )
/* Use GetFileSize() for legacy Windows */
size . u . LowPart = GetFileSize ( file , ( DWORD * ) & size . u . HighPart ) ;
if ( size . u . LowPart = = INVALID_FILE_SIZE & & GetLastError ( ) ! = NO_ERROR )
# else
/* Use GetFileSizeEx() for modern Windows */
if ( GetFileSizeEx ( file , & size ) = = FALSE )
# endif
{
FT_ERROR ( ( " FT_Stream_Open: " ) ) ;
FT_ERROR ( ( " could not retrieve size of file `%s' \n " , filepathname ) ) ;