summaryrefslogtreecommitdiffstats
path: root/xmlhelp/source/cxxhelp/provider/databases.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'xmlhelp/source/cxxhelp/provider/databases.cxx')
-rwxr-xr-xxmlhelp/source/cxxhelp/provider/databases.cxx44
1 files changed, 16 insertions, 28 deletions
diff --git a/xmlhelp/source/cxxhelp/provider/databases.cxx b/xmlhelp/source/cxxhelp/provider/databases.cxx
index 6ae161656bbc..eb0ca7e6d886 100755
--- a/xmlhelp/source/cxxhelp/provider/databases.cxx
+++ b/xmlhelp/source/cxxhelp/provider/databases.cxx
@@ -419,9 +419,6 @@ rtl::OUString Databases::getInstallPathAsSystemPath()
return m_aInstallDirectoryAsSystemPath;
}
-
-
-
rtl::OUString Databases::getInstallPathAsURL()
{
osl::MutexGuard aGuard( m_aMutex );
@@ -645,28 +642,24 @@ Db* Databases::getBerkeley( const rtl::OUString& Database,
{
Db* table = new Db();
- rtl::OUString fileNameOU;
+ rtl::OUString fileURL;
if( pExtensionPath )
- {
- rtl::OUString aExpandedURL = expandURL( *pExtensionPath );
- aExpandedURL += Language + dbFileName;
- osl::FileBase::getSystemPathFromFileURL( aExpandedURL, fileNameOU );
- }
+ fileURL = expandURL(*pExtensionPath) + Language + dbFileName;
else
- fileNameOU = getInstallPathAsSystemPath() + key;
-
+ fileURL = getInstallPathAsURL() + key;
- rtl::OString fileName( fileNameOU.getStr(),fileNameOU.getLength(),osl_getThreadTextEncoding() );
-
- rtl::OUString fileNameDBHelp( fileNameOU );
+ rtl::OUString fileNameDBHelp( fileURL );
+ //Extensions always use the new format
if( pExtensionPath != NULL )
fileNameDBHelp += rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "_" ));
+ //SimpleFileAccess takes file URLs as arguments!!! Using filenames works accidentally but
+ //fails for example when using long path names on Windows (starting with \\?\)
if( m_xSFA->exists( fileNameDBHelp ) )
{
DBHelp* pDBHelp = new DBHelp( fileNameDBHelp, m_xSFA );
table->setDBHelp( pDBHelp );
}
- else if( table->open( 0,fileName.getStr(),0,DB_BTREE,DB_RDONLY,0644 ) )
+ else if( table->open( 0,fileURL, DB_BTREE,DB_RDONLY,0644 ) )
{
table->close( 0 );
delete table;
@@ -944,17 +937,13 @@ KeywordInfo* Databases::getKeyword( const rtl::OUString& Database,
std::vector<KeywordInfo::KeywordElement> aVector;
KeyDataBaseFileIterator aDbFileIt( m_xContext, *this, Database, Language );
- rtl::OUString fileNameOU;
+ rtl::OUString fileURL;
bool bExtension = false;
- while( (fileNameOU = aDbFileIt.nextDbFile( bExtension )).getLength() > 0 )
+ while( (fileURL = aDbFileIt.nextDbFile( bExtension )).getLength() > 0 )
{
- rtl::OString fileName( fileNameOU.getStr(),
- fileNameOU.getLength(),
- osl_getThreadTextEncoding() );
-
Db table;
- rtl::OUString fileNameDBHelp( fileNameOU );
+ rtl::OUString fileNameDBHelp( fileURL );
if( bExtension )
fileNameDBHelp += rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "_" ));
if( m_xSFA->exists( fileNameDBHelp ) )
@@ -1001,7 +990,7 @@ KeywordInfo* Databases::getKeyword( const rtl::OUString& Database,
}
}
- else if( 0 == table.open( 0,fileName.getStr(),0,DB_BTREE,DB_RDONLY,0644 ) )
+ else if( 0 == table.open( 0,fileURL,DB_BTREE,DB_RDONLY,0644 ) )
{
Db* idmap = getBerkeley( Database,Language );
@@ -1853,6 +1842,7 @@ Db* DataBaseIterator::implGetDbFromPackage( Reference< deployment::XPackage > xP
//===================================================================
// class KeyDataBaseFileIterator
+//returns a file URL
rtl::OUString KeyDataBaseFileIterator::nextDbFile( bool& o_rbExtension )
{
rtl::OUString aRetFile;
@@ -1863,7 +1853,7 @@ rtl::OUString KeyDataBaseFileIterator::nextDbFile( bool& o_rbExtension )
{
case INITIAL_MODULE:
aRetFile =
- m_rDatabases.getInstallPathAsSystemPath() +
+ m_rDatabases.getInstallPathAsURL() +
m_rDatabases.processLang( m_aLanguage ) + aSlash + m_aInitialModule +
rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( ".key" ));
@@ -1921,16 +1911,14 @@ rtl::OUString KeyDataBaseFileIterator::nextDbFile( bool& o_rbExtension )
return aRetFile;
}
+//Returns a file URL, that does not contain macros
rtl::OUString KeyDataBaseFileIterator::implGetDbFileFromPackage
( Reference< deployment::XPackage > xPackage )
{
rtl::OUString aExpandedURL =
implGetFileFromPackage( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( ".key" )), xPackage );
- rtl::OUString aRetFile;
- osl::FileBase::getSystemPathFromFileURL( aExpandedURL, aRetFile );
-
- return aRetFile;
+ return aExpandedURL;
}