diff options
Diffstat (limited to 'xmlhelp/source/cxxhelp/provider/db.cxx')
-rwxr-xr-x[-rw-r--r--] | xmlhelp/source/cxxhelp/provider/db.cxx | 45 |
1 files changed, 32 insertions, 13 deletions
diff --git a/xmlhelp/source/cxxhelp/provider/db.cxx b/xmlhelp/source/cxxhelp/provider/db.cxx index abc5acc6381c..3db8f5a3da87 100644..100755 --- a/xmlhelp/source/cxxhelp/provider/db.cxx +++ b/xmlhelp/source/cxxhelp/provider/db.cxx @@ -35,6 +35,8 @@ #include "com/sun/star/io/XSeekable.hpp" +#include "osl/file.hxx" +#include "osl/thread.hxx" #ifdef TEST_DBHELP #include <osl/time.h> #endif @@ -115,21 +117,25 @@ void testWriteKeyValue( FILE* pFile, const KeyValPair& rKeyValPair ) fprintf( pFile, "%c", cLF ); } -bool DBHelp::testAgainstDb( const rtl::OString& fileName, bool bOldDbAccess ) +bool DBHelp::testAgainstDb( const rtl::OUString& fileURL, bool bOldDbAccess ) { bool bSuccess = true; KeyValPairVector avKeyValPair; - rtl::OString aOutFileName = fileName; - aOutFileName += "_TestOut"; + rtl::OUString aOutFileName = fileURL; + aOutFileName += rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("_TestOut")); if( bOldDbAccess ) - aOutFileName += "_Old"; - FILE* pFile = fopen( aOutFileName.getStr(), "wb" ); - + aOutFileName += rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("_Old")); +#ifdef WNT + FILE* pFile = _wfopen( aOutFileName.getStr(), L"wb" ); +#else + rtl::OString sFile = rtl::OUStringToOString(aOutFileName, osl_getThreadTextEncoding()); + FILE* pFile = fopen( sFile.getStr(), "wb" ); +#endif // Get all values Db table; - if( 0 == table.open( 0,fileName.getStr(),0,DB_BTREE,DB_RDONLY,0644 ) ) + if( 0 == table.open( 0,fileURL,DB_BTREE,DB_RDONLY,0644 ) ) { bool first = true; @@ -206,7 +212,7 @@ bool DBHelp::testAgainstDb( const rtl::OString& fileName, bool bOldDbAccess ) { if( bFirst ) { - if( tableTest.open( 0,fileName.getStr(),0,DB_BTREE,DB_RDONLY,0644 ) ) + if( tableTest.open( 0,fileURL, DB_BTREE,DB_RDONLY,0644 ) ) { if( pFile != NULL ) fprintf( pFile, "Cannot open database\n" ); @@ -305,11 +311,11 @@ void DBHelp::createHashMap( bool bOptimizeForPerformance ) m_pStringToValPosMap = new StringToValPosMap(); } - Reference< XInputStream > xIn = m_xSFA->openFileRead( m_aFileName ); + Reference< XInputStream > xIn = m_xSFA->openFileRead( m_aFileURL ); if( xIn.is() ) { Sequence< sal_Int8 > aData; - sal_Int32 nSize = m_xSFA->getSize( m_aFileName ); + sal_Int32 nSize = m_xSFA->getSize( m_aFileURL ); sal_Int32 nRead = xIn->readBytes( aData, nSize ); const char* pData = (const char*)aData.getConstArray(); @@ -388,7 +394,7 @@ bool DBHelp::getValueForKey( const rtl::OString& rKey, DBData& rValue ) int iValuePos = rValPair.first; int nValueLen = rValPair.second; - Reference< XInputStream > xIn = m_xSFA->openFileRead( m_aFileName ); + Reference< XInputStream > xIn = m_xSFA->openFileRead( m_aFileURL ); if( xIn.is() ) { Reference< XSeekable > xXSeekable( xIn, UNO_QUERY ); @@ -436,9 +442,9 @@ bool DBHelp::startIteration( void ) { bool bSuccess = false; - sal_Int32 nSize = m_xSFA->getSize( m_aFileName ); + sal_Int32 nSize = m_xSFA->getSize( m_aFileURL ); - Reference< XInputStream > xIn = m_xSFA->openFileRead( m_aFileName ); + Reference< XInputStream > xIn = m_xSFA->openFileRead( m_aFileURL ); if( xIn.is() ) { m_nItRead = xIn->readBytes( m_aItData, nSize ); @@ -519,6 +525,19 @@ int Db::open(DB_TXN *txnid, return db_internal::check_error( err,"Db::open" ); } +int Db::open(DB_TXN *txnid, + ::rtl::OUString const & fileURL, + DBTYPE type, + u_int32_t flags, + int mode) +{ + ::rtl::OUString ouPath; + ::osl::FileBase::getSystemPathFromFileURL(fileURL, ouPath); + const ::rtl::OString sPath = ::rtl::OUStringToOString(ouPath, osl_getThreadTextEncoding()); + return open(txnid, sPath.getStr(), 0, type, flags, mode); +} + + int Db::get(DB_TXN *txnid, Dbt *key, Dbt *data, u_int32_t flags) { |