void * hb_libSymAddr( PHB_ITEM pDynLib, const char * pszSymbol ) { void * hDynLib = hb_libHandle( pDynLib ); if( hDynLib ) { #if defined( HB_OS_WIN_CE ) LPTSTR lpSymbol = hb_mbtowc( pszSymbol ); void * hFuncAddr = ( void * ) GetProcAddress( ( HMODULE ) hDynLib, lpSymbol ); hb_xfree( lpSymbol ); return hFuncAddr; #elif defined( HB_OS_WIN ) return ( void * ) GetProcAddress( ( HMODULE ) hDynLib, pszSymbol ); #elif defined( HB_OS_OS2 ) PFN pProcAddr = NULL; if( DosQueryProcAddr( ( HMODULE ) hDynLib, 0, ( PCSZ ) pszSymbol, &pProcAddr ) == NO_ERROR ) return ( void * ) pProcAddr; #elif defined( HB_HAS_DLFCN ) return dlsym( hDynLib, pszSymbol ); #elif defined( HB_CAUSEWAY_DLL ) return GetProcAddress( hDynLib, pszSymbol ); #else HB_SYMBOL_UNUSED( pszSymbol ); #endif } return NULL; }
HB_WCHAR * hb_fsNameConvU16( const char * szFileName ) { char * pszBuffer = NULL; HB_WCHAR * lpwFileName; if( s_fFnTrim || s_cDirSep != HB_OS_PATH_DELIM_CHR || s_iFileCase != HB_SET_CASE_MIXED || s_iDirCase != HB_SET_CASE_MIXED ) { PHB_FNAME pFileName; HB_SIZE nLen; szFileName = pszBuffer = hb_strncpy( ( char * ) hb_xgrab( HB_PATH_MAX ), szFileName, HB_PATH_MAX - 1 ); if( s_cDirSep != HB_OS_PATH_DELIM_CHR ) { char * p = ( char * ) szFileName; while( *p ) { if( *p == s_cDirSep ) *p = HB_OS_PATH_DELIM_CHR; p++; } } pFileName = hb_fsFNameSplit( szFileName ); /* strip trailing and leading spaces */ if( s_fFnTrim ) { if( pFileName->szName ) { nLen = strlen( pFileName->szName ); while( nLen && pFileName->szName[ nLen - 1 ] == ' ' ) --nLen; while( nLen && pFileName->szName[ 0 ] == ' ' ) { ++pFileName->szName; --nLen; } ( ( char * ) pFileName->szName )[ nLen ] = '\0'; } if( pFileName->szExtension ) { nLen = strlen( pFileName->szExtension ); while( nLen && pFileName->szExtension[ nLen - 1 ] == ' ' ) --nLen; while( nLen && pFileName->szExtension[ 0 ] == ' ' ) { ++pFileName->szExtension; --nLen; } ( ( char * ) pFileName->szExtension )[ nLen ] = '\0'; } } /* FILECASE */ if( s_iFileCase == HB_SET_CASE_LOWER ) { if( pFileName->szName ) hb_strlow( ( char * ) pFileName->szName ); if( pFileName->szExtension ) hb_strlow( ( char * ) pFileName->szExtension ); } else if( s_iFileCase == HB_SET_CASE_UPPER ) { if( pFileName->szName ) hb_strupr( ( char * ) pFileName->szName ); if( pFileName->szExtension ) hb_strupr( ( char * ) pFileName->szExtension ); } /* DIRCASE */ if( pFileName->szPath ) { if( s_iDirCase == HB_SET_CASE_LOWER ) hb_strlow( ( char * ) pFileName->szPath ); else if( s_iDirCase == HB_SET_CASE_UPPER ) hb_strupr( ( char * ) pFileName->szPath ); } hb_fsFNameMerge( ( char * ) szFileName, pFileName ); hb_xfree( pFileName ); } lpwFileName = hb_mbtowc( szFileName ); if( pszBuffer ) hb_xfree( pszBuffer ); return lpwFileName; }
HB_WCHAR * hb_osStrU16Encode( const char * pszName ) { return hb_mbtowc( pszName ); }