summaryrefslogtreecommitdiff
path: root/connectivity
diff options
context:
space:
mode:
Diffstat (limited to 'connectivity')
-rw-r--r--connectivity/Library_mork.mk3
-rw-r--r--connectivity/source/drivers/mork/MConnection.cxx7
-rw-r--r--connectivity/source/drivers/mork/MConnection.hxx3
-rw-r--r--connectivity/source/drivers/mork/MDriver.cxx25
-rw-r--r--connectivity/source/drivers/mork/MDriver.hxx2
-rw-r--r--connectivity/source/drivers/mork/MNSFolders.cxx160
-rw-r--r--connectivity/source/drivers/mork/MNSFolders.hxx34
-rw-r--r--connectivity/source/drivers/mork/MNSINIParser.cxx95
-rw-r--r--connectivity/source/drivers/mork/MNSINIParser.hxx68
-rw-r--r--connectivity/source/drivers/mork/MNSProfileDiscover.cxx173
-rw-r--r--connectivity/source/drivers/mork/MNSProfileDiscover.hxx85
-rw-r--r--connectivity/source/drivers/mork/mork_helper.cxx27
12 files changed, 38 insertions, 644 deletions
diff --git a/connectivity/Library_mork.mk b/connectivity/Library_mork.mk
index 18917c572978..dd655ca751cc 100644
--- a/connectivity/Library_mork.mk
+++ b/connectivity/Library_mork.mk
@@ -44,9 +44,6 @@ $(eval $(call gb_Library_use_sdk_api,mork))
$(eval $(call gb_Library_add_exception_objects,mork, \
connectivity/source/drivers/mork/MColumns \
connectivity/source/drivers/mork/MColumnAlias \
- connectivity/source/drivers/mork/MNSFolders \
- connectivity/source/drivers/mork/MNSINIParser \
- connectivity/source/drivers/mork/MNSProfileDiscover \
connectivity/source/drivers/mork/MorkParser \
connectivity/source/drivers/mork/MCatalog \
connectivity/source/drivers/mork/MConnection \
diff --git a/connectivity/source/drivers/mork/MConnection.cxx b/connectivity/source/drivers/mork/MConnection.cxx
index e836938ca6c1..3016c79706d9 100644
--- a/connectivity/source/drivers/mork/MConnection.cxx
+++ b/connectivity/source/drivers/mork/MConnection.cxx
@@ -7,7 +7,6 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
-#include "MNSProfileDiscover.hxx"
#include "MConnection.hxx"
#include "MDriver.hxx"
#include "MDatabaseMetaData.hxx"
@@ -51,7 +50,6 @@ OConnection::OConnection(MorkDriver* _pDriver)
,m_aColumnAlias( _pDriver->getFactory() )
{
m_pDriver->acquire();
- m_pProfileAccess = new ProfileAccess();
m_pBook = new MorkParser();
m_pHistory = new MorkParser();
}
@@ -62,7 +60,6 @@ OConnection::~OConnection()
close();
m_pDriver->release();
m_pDriver = nullptr;
- delete m_pProfileAccess;
delete m_pBook;
delete m_pHistory;
}
@@ -121,9 +118,7 @@ void OConnection::construct(const OUString& url,const Sequence< PropertyValue >&
// production?
if (unittestIndex == -1)
{
- OUString defaultProfile = m_pProfileAccess->getDefaultProfile(::com::sun::star::mozilla::MozillaProductType_Thunderbird);
- OUString path = m_pProfileAccess->getProfilePath(::com::sun::star::mozilla::MozillaProductType_Thunderbird, defaultProfile);
- SAL_INFO("connectivity.mork", "DefaultProfile: " << defaultProfile);
+ OUString path = m_pDriver->getProfilePath();
SAL_INFO("connectivity.mork", "ProfilePath: " << path);
abook = path + "/abook.mab";
history = path + "/history.mab";
diff --git a/connectivity/source/drivers/mork/MConnection.hxx b/connectivity/source/drivers/mork/MConnection.hxx
index ad65d18258d6..fd101a20e249 100644
--- a/connectivity/source/drivers/mork/MConnection.hxx
+++ b/connectivity/source/drivers/mork/MConnection.hxx
@@ -30,7 +30,6 @@ namespace connectivity
namespace mork
{
class MorkDriver;
- class ProfileAccess;
class ErrorDescriptor;
typedef connectivity::OMetaConnection OConnection_BASE; // implements basics and text encoding
@@ -48,8 +47,6 @@ namespace connectivity
MorkDriver* m_pDriver; // Pointer to the owning
// driver object
OColumnAlias m_aColumnAlias;
- // Profile Access
- ProfileAccess* m_pProfileAccess;
// Mork Parser (abook)
MorkParser* m_pBook;
// Mork Parser (history)
diff --git a/connectivity/source/drivers/mork/MDriver.cxx b/connectivity/source/drivers/mork/MDriver.cxx
index 4c944b90650e..58da828842b6 100644
--- a/connectivity/source/drivers/mork/MDriver.cxx
+++ b/connectivity/source/drivers/mork/MDriver.cxx
@@ -10,7 +10,9 @@
#include <cppuhelper/supportsservice.hxx>
#include "MDriver.hxx"
#include "MConnection.hxx"
-#include "MNSProfileDiscover.hxx"
+
+#include <com/sun/star/mozilla/XMozillaBootstrap.hpp>
+#include <com/sun/star/mozilla/MozillaProductType.hpp>
#include "resource/mork_res.hrc"
#include "resource/common_res.hrc"
@@ -33,8 +35,6 @@ MorkDriver::MorkDriver(css::uno::Reference< css::uno::XComponentContext > const
m_xFactory(context_->getServiceManager(), css::uno::UNO_QUERY)
{
SAL_INFO("connectivity.mork", "=> MorkDriver::MorkDriver()" );
-// css::uno::Reference< com::sun::star::lang::XMultiServiceFactory > xServiceFactory(;
- assert(context.is());
}
// static ServiceInfo
@@ -77,6 +77,25 @@ css::uno::Reference< css::sdbc::XConnection > MorkDriver::connect(
SAL_INFO("connectivity.mork", "=> MorkDriver::connect()" );
(void) url; (void) info; // avoid warnings
+
+ // Profile discovery
+ css::uno::Reference<css::uno::XInterface> xInstance = context_->getServiceManager()->createInstanceWithContext("com.sun.star.mozilla.MozillaBootstrap", context_);
+ OSL_ENSURE( xInstance.is(), "failed to create instance" );
+
+ css::uno::Reference<::com::sun::star::mozilla::XMozillaBootstrap> xMozillaBootstrap(xInstance, css::uno::UNO_QUERY);
+ OSL_ENSURE( xMozillaBootstrap.is(), "failed to create instance" );
+
+ if (xMozillaBootstrap.is())
+ {
+ OUString defaultProfile = xMozillaBootstrap->getDefaultProfile(::com::sun::star::mozilla::MozillaProductType_Thunderbird);
+
+ if (!defaultProfile.isEmpty())
+ {
+ m_sProfilePath = xMozillaBootstrap->getProfilePath(::com::sun::star::mozilla::MozillaProductType_Thunderbird, defaultProfile);
+ SAL_INFO("connectivity.mork", "Using Thunderbird profile " << m_sProfilePath);
+ }
+ }
+
css::uno::Reference< css::sdbc::XConnection > xCon;
OConnection* pCon = new OConnection(this);
xCon = pCon; // important here because otherwise the connection could be deleted inside (refcount goes -> 0)
diff --git a/connectivity/source/drivers/mork/MDriver.hxx b/connectivity/source/drivers/mork/MDriver.hxx
index 63480bdec364..7f3e75e6d225 100644
--- a/connectivity/source/drivers/mork/MDriver.hxx
+++ b/connectivity/source/drivers/mork/MDriver.hxx
@@ -58,6 +58,7 @@ public:
throw (css::uno::RuntimeException);
css::uno::Reference< com::sun::star::lang::XMultiServiceFactory > getFactory(){return m_xFactory;}
+ OUString getProfilePath() {return m_sProfilePath;}
private:
virtual ~MorkDriver() {}
@@ -94,6 +95,7 @@ private:
css::uno::Reference< css::uno::XComponentContext > context_;
css::uno::Reference< com::sun::star::lang::XMultiServiceFactory > m_xFactory;
+ OUString m_sProfilePath;
};
} }
diff --git a/connectivity/source/drivers/mork/MNSFolders.cxx b/connectivity/source/drivers/mork/MNSFolders.cxx
deleted file mode 100644
index 46da642c288f..000000000000
--- a/connectivity/source/drivers/mork/MNSFolders.cxx
+++ /dev/null
@@ -1,160 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*
- * This file is part of the LibreOffice project.
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * This file incorporates work covered by the following license notice:
- *
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed
- * with this work for additional information regarding copyright
- * ownership. The ASF licenses this file to you under the Apache
- * License, Version 2.0 (the "License"); you may not use this file
- * except in compliance with the License. You may obtain a copy of
- * the License at http://www.apache.org/licenses/LICENSE-2.0 .
- */
-
-#include "MNSFolders.hxx"
-
-#ifdef UNIX
-#include <sys/types.h>
-#include <strings.h>
-#include <string.h>
-#endif // End UNIX
-
-#ifdef WNT
-#include "pre_include_windows.h"
-#include <windows.h>
-#include <stdlib.h>
-#include <shlobj.h>
-#include <objidl.h>
-#include "post_include_windows.h"
-#endif // End WNT
-#include <osl/security.hxx>
-#include <osl/file.hxx>
-#include <osl/thread.h>
-
-using namespace ::com::sun::star::mozilla;
-
-namespace
-{
-
- static OUString lcl_getUserDataDirectory()
- {
- ::osl::Security aSecurity;
- OUString aConfigPath;
-
- #if defined(WNT) || defined(MACOSX)
- aSecurity.getConfigDir( aConfigPath );
- #else
- //This is to find the dir under which .mozilla/.thunderbird is created.
- //mozilla doesn't honour XDG_CONFIG_HOME, so raw home dir required here
- //not xdg-config dir
- aSecurity.getHomeDir( aConfigPath );
- #endif
-
- return aConfigPath + "/";
- }
-
-
- const size_t NB_PRODUCTS = 3;
- const size_t NB_CANDIDATES = 4;
-
- // The order (index) of entries in DefaultProductDir and
- // ProductRootEnvironmentVariable *must* match the constants
- // (minus 1) in offapi/com/sun/star/mozilla/MozillaProductType.idl
- // DO NOT CHANGE THE ORDER; ADD ONLY TO THE END
- static const char* DefaultProductDir[NB_PRODUCTS][NB_CANDIDATES] =
- {
- #if defined(WNT)
- { "Mozilla/SeaMonkey/", NULL, NULL, NULL },
- { "Mozilla/Firefox/", NULL, NULL, NULL },
- { "Thunderbird/", "Mozilla/Thunderbird/", NULL, NULL }
- #elif defined(MACOSX)
- { "../Mozilla/SeaMonkey/", nullptr, nullptr, nullptr },
- { "Firefox/", nullptr, nullptr, nullptr },
- { "../Thunderbird/", nullptr, nullptr, nullptr }
- #else
- { ".mozilla/seamonkey/", nullptr, nullptr, nullptr },
- { ".mozilla/firefox/", nullptr, nullptr, nullptr },
- { ".thunderbird/", ".mozilla-thunderbird/", ".mozilla/thunderbird/", ".icedove/" }
- #endif
- };
-
- static const char* ProductRootEnvironmentVariable[NB_PRODUCTS] =
- {
- "MOZILLA_PROFILE_ROOT",
- "MOZILLA_FIREFOX_PROFILE_ROOT",
- "MOZILLA_THUNDERBIRD_PROFILE_ROOT",
- };
-
-
- static OUString lcl_guessProfileRoot( MozillaProductType _product )
- {
- size_t productIndex = _product - 1;
-
- static OUString s_productDirectories[NB_PRODUCTS];
-
- if ( s_productDirectories[ productIndex ].isEmpty() )
- {
- OUString sProductPath;
-
- // check whether we have an anevironment variable which helps us
- const char* pProfileByEnv = getenv( ProductRootEnvironmentVariable[ productIndex ] );
- if ( pProfileByEnv )
- {
- sProductPath = OUString( pProfileByEnv, rtl_str_getLength( pProfileByEnv ), osl_getThreadTextEncoding() );
- // assume that this is fine, no further checks
- }
- else
- {
- OUString sProductDirCandidate;
- const char* pProfileRegistry = "profiles.ini";
-
- // check all possible candidates
- for ( size_t i=0; i<NB_CANDIDATES; ++i )
- {
- if ( nullptr == DefaultProductDir[ productIndex ][ i ] )
- break;
-
- sProductDirCandidate = lcl_getUserDataDirectory() +
- OUString::createFromAscii( DefaultProductDir[ productIndex ][ i ] );
-
- // check existence
- ::osl::DirectoryItem aRegistryItem;
- ::osl::FileBase::RC result = ::osl::DirectoryItem::get( sProductDirCandidate + OUString::createFromAscii( pProfileRegistry ), aRegistryItem );
- if ( result == ::osl::FileBase::E_None )
- {
- ::osl::FileStatus aStatus( osl_FileStatus_Mask_Validate );
- result = aRegistryItem.getFileStatus( aStatus );
- if ( result == ::osl::FileBase::E_None )
- {
- // the registry file exists
- break;
- }
- }
- }
-
- ::osl::FileBase::getSystemPathFromFileURL( sProductDirCandidate, sProductPath );
- }
-
- s_productDirectories[ productIndex ] = sProductPath;
- }
-
- return s_productDirectories[ productIndex ];
- }
-}
-
-
-OUString getRegistryDir(MozillaProductType product)
-{
- if (product == MozillaProductType_Default)
- return OUString();
-
- return lcl_guessProfileRoot( product );
-}
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/connectivity/source/drivers/mork/MNSFolders.hxx b/connectivity/source/drivers/mork/MNSFolders.hxx
deleted file mode 100644
index ade47dab4e05..000000000000
--- a/connectivity/source/drivers/mork/MNSFolders.hxx
+++ /dev/null
@@ -1,34 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*
- * This file is part of the LibreOffice project.
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * This file incorporates work covered by the following license notice:
- *
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed
- * with this work for additional information regarding copyright
- * ownership. The ASF licenses this file to you under the Apache
- * License, Version 2.0 (the "License"); you may not use this file
- * except in compliance with the License. You may obtain a copy of
- * the License at http://www.apache.org/licenses/LICENSE-2.0 .
- */
-
-#ifndef INCLUDED_CONNECTIVITY_SOURCE_DRIVERS_MORK_MNSFOLDERS_HXX
-#define INCLUDED_CONNECTIVITY_SOURCE_DRIVERS_MORK_MNSFOLDERS_HXX
-
-#include <sal/types.h>
-#include <osl/diagnose.h>
-#include <osl/conditn.hxx>
-#include <com/sun/star/mozilla/MozillaProductType.hpp>
-
-#include <rtl/ustring.hxx>
-
-OUString getRegistryDir(::com::sun::star::mozilla::MozillaProductType product);
-
-#endif
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/connectivity/source/drivers/mork/MNSINIParser.cxx b/connectivity/source/drivers/mork/MNSINIParser.cxx
deleted file mode 100644
index 585b58497b52..000000000000
--- a/connectivity/source/drivers/mork/MNSINIParser.cxx
+++ /dev/null
@@ -1,95 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*
- * This file is part of the LibreOffice project.
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * This file incorporates work covered by the following license notice:
- *
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed
- * with this work for additional information regarding copyright
- * ownership. The ASF licenses this file to you under the Apache
- * License, Version 2.0 (the "License"); you may not use this file
- * except in compliance with the License. You may obtain a copy of
- * the License at http://www.apache.org/licenses/LICENSE-2.0 .
- */
-
-#include "MNSINIParser.hxx"
-#include <rtl/byteseq.hxx>
-
-IniParser::IniParser(OUString const & rIniName) throw(com::sun::star::io::IOException )
-{
- OUString iniUrl;
- oslFileError fileError = osl_getFileURLFromSystemPath(
- rIniName.pData, &iniUrl.pData);
- if (fileError != osl_File_E_None)
- {
- SAL_WARN(
- "connectivity.mork",
- "InitParser, getFileURLFromSystemPath(" << rIniName << "): "
- << +fileError);
- return;
- }
-
- SAL_INFO("connectivity.mork", "IniParser: " << iniUrl);
- oslFileHandle handle=nullptr;
- fileError = osl_openFile(iniUrl.pData, &handle, osl_File_OpenFlag_Read);
-
- if (osl_File_E_None == fileError)
- {
- rtl::ByteSequence seq;
- sal_uInt64 nSize = 0;
-
- osl_getFileSize(handle, &nSize);
- OUString sectionName( "no name section" );
- while (true)
- {
- sal_uInt64 nPos;
- if (osl_File_E_None != osl_getFilePos(handle, &nPos) || nPos >= nSize)
- break;
- if (osl_File_E_None != osl_readLine(handle , reinterpret_cast<sal_Sequence **>(&seq)))
- break;
- OString line( reinterpret_cast<const char *>(seq.getConstArray()), seq.getLength() );
- sal_Int32 nIndex = line.indexOf('=');
- if (nIndex >= 1)
- {
- ini_Section *aSection = &mAllSection[sectionName];
- struct ini_NameValue nameValue;
- nameValue.sName = OStringToOUString(
- line.copy(0,nIndex).trim(), RTL_TEXTENCODING_ASCII_US );
- nameValue.sValue = OStringToOUString(
- line.copy(nIndex+1).trim(), RTL_TEXTENCODING_UTF8 );
-
- aSection->lList.push_back(nameValue);
-
- }
- else
- {
- sal_Int32 nIndexStart = line.indexOf('[');
- sal_Int32 nIndexEnd = line.indexOf(']');
- if ( nIndexEnd > nIndexStart && nIndexStart >=0)
- {
- sectionName = OStringToOUString(
- line.copy(nIndexStart + 1,nIndexEnd - nIndexStart -1).trim(), RTL_TEXTENCODING_ASCII_US );
- if (sectionName.isEmpty())
- sectionName = "no name section";
-
- ini_Section *aSection = &mAllSection[sectionName];
- aSection->sName = sectionName;
- }
- }
- }
- osl_closeFile(handle);
- }
- else
- {
- SAL_INFO(
- "connectivity.mork",
- "IniParser couldn't open file " << iniUrl << ": " << +fileError);
- }
-}
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/connectivity/source/drivers/mork/MNSINIParser.hxx b/connectivity/source/drivers/mork/MNSINIParser.hxx
deleted file mode 100644
index fd3c518b190f..000000000000
--- a/connectivity/source/drivers/mork/MNSINIParser.hxx
+++ /dev/null
@@ -1,68 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*
- * This file is part of the LibreOffice project.
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * This file incorporates work covered by the following license notice:
- *
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed
- * with this work for additional information regarding copyright
- * ownership. The ASF licenses this file to you under the Apache
- * License, Version 2.0 (the "License"); you may not use this file
- * except in compliance with the License. You may obtain a copy of
- * the License at http://www.apache.org/licenses/LICENSE-2.0 .
- */
-
-#ifndef INCLUDED_CONNECTIVITY_SOURCE_DRIVERS_MORK_MNSINIPARSER_HXX
-#define INCLUDED_CONNECTIVITY_SOURCE_DRIVERS_MORK_MNSINIPARSER_HXX
-
-#include <rtl/ustring.hxx>
-#include <com/sun/star/io/IOException.hpp>
-#include <osl/process.h>
-
-#include <map>
-#include <list>
-
-struct ini_NameValue
-{
- OUString sName;
- OUString sValue;
-
- inline ini_NameValue()
- {}
- inline ini_NameValue(
- OUString const & name, OUString const & value )
- : sName( name ),
- sValue( value )
- {}
-};
-
-typedef std::list<
- ini_NameValue
-> NameValueList;
-
-struct ini_Section
-{
- OUString sName;
- NameValueList lList;
-};
-typedef std::map<OUString,
- ini_Section
- >IniSectionMap;
-
-
-class IniParser
-{
- IniSectionMap mAllSection;
-public:
- IniSectionMap& getAllSection() { return mAllSection; }
- explicit IniParser(OUString const & rIniName) throw(com::sun::star::io::IOException);
-};
-
-#endif
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/connectivity/source/drivers/mork/MNSProfileDiscover.cxx b/connectivity/source/drivers/mork/MNSProfileDiscover.cxx
deleted file mode 100644
index ada471aeb904..000000000000
--- a/connectivity/source/drivers/mork/MNSProfileDiscover.cxx
+++ /dev/null
@@ -1,173 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*
- * This file is part of the LibreOffice project.
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * This file incorporates work covered by the following license notice:
- *
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed
- * with this work for additional information regarding copyright
- * ownership. The ASF licenses this file to you under the Apache
- * License, Version 2.0 (the "License"); you may not use this file
- * except in compliance with the License. You may obtain a copy of
- * the License at http://www.apache.org/licenses/LICENSE-2.0 .
- */
-
-
-#include "MNSProfileDiscover.hxx"
-
-#include "MNSFolders.hxx"
-#include "MNSINIParser.hxx"
-
-namespace connectivity
-{
- namespace mork
- {
- ProfileStruct::ProfileStruct(MozillaProductType aProduct, const OUString& aProfileName,
- const OUString& aProfilePath
- )
- {
- product=aProduct;
- profileName = aProfileName;
- profilePath = aProfilePath;
- }
-
- ProfileAccess::~ProfileAccess()
- {
- }
- ProfileAccess::ProfileAccess()
- {
- LoadProductsInfo();
- }
-
- sal_Int32 ProfileAccess::LoadProductsInfo()
- {
- //tdf#39279: LO should search Thunderbird first then Seamonkey and finally Firefox
- //load thunderbird profiles to m_ProductProfileList
- sal_Int32 count = LoadXPToolkitProfiles(MozillaProductType_Thunderbird);
-
- //load SeaMonkey 2 profiles to m_ProductProfileList
- count += LoadXPToolkitProfiles(MozillaProductType_Mozilla);
-
- //load firefox profiles to m_ProductProfileList
- //firefox profile does not containt address book, but maybe others need them
- count += LoadXPToolkitProfiles(MozillaProductType_Firefox);
- return count;
- }
- //Thunderbird and firefox profiles are saved in profiles.ini
- sal_Int32 ProfileAccess::LoadXPToolkitProfiles(MozillaProductType product)
- {
- sal_Int32 index=product;
- ProductStruct &m_Product = m_ProductProfileList[index];
-
- OUString regDir = getRegistryDir(product);
- OUString profilesIni = regDir + "profiles.ini";
- IniParser parser( profilesIni );
- IniSectionMap &mAllSection = parser.getAllSection();
-
- IniSectionMap::iterator iBegin = mAllSection.begin();
- IniSectionMap::iterator iEnd = mAllSection.end();
- for(;iBegin != iEnd;++iBegin)
- {
- ini_Section *aSection = &(*iBegin).second;
- OUString profileName;
- OUString profilePath;
- OUString sIsRelative;
- OUString sIsDefault;
-
- for(NameValueList::iterator itor=aSection->lList.begin();
- itor != aSection->lList.end();
- ++itor)
- {
- struct ini_NameValue * aValue = &(*itor);
- if ( aValue->sName == "Name" )
- {
- profileName = aValue->sValue;
- }
- else if ( aValue->sName == "IsRelative" )
- {
- sIsRelative = aValue->sValue;
- }
- else if ( aValue->sName == "Path" )
- {
- profilePath = aValue->sValue;
- }
- else if ( aValue->sName == "Default" )
- {
- sIsDefault = aValue->sValue;
- }
- }
- if (!(profileName.isEmpty() && profilePath.isEmpty()))
- {
- sal_Int32 isRelative = 0;
- if (!sIsRelative.isEmpty())
- {
- isRelative = sIsRelative.toInt32();
- }
-
- OUString fullProfilePath;
- if(isRelative)
- {
- fullProfilePath = regDir + profilePath;
- }
- else
- {
- fullProfilePath = profilePath;
- }
-
- m_Product.mProfileList[profileName] = ProfileStruct(product,profileName,
- fullProfilePath
- );
-
- sal_Int32 isDefault = 0;
- if (!sIsDefault.isEmpty())
- {
- isDefault = sIsDefault.toInt32();
- }
- if (isDefault)
- m_Product.mCurrentProfileName = profileName;
-
- }
-
- }
- return static_cast< ::sal_Int32 >(m_Product.mProfileList.size());
- }
-
- OUString ProfileAccess::getProfilePath( ::com::sun::star::mozilla::MozillaProductType product, const OUString& profileName ) throw (::com::sun::star::uno::RuntimeException)
- {
- sal_Int32 index=product;
- ProductStruct &m_Product = m_ProductProfileList[index];
- if (m_Product.mProfileList.empty() || m_Product.mProfileList.find(profileName) == m_Product.mProfileList.end())
- {
- //Profile not found
- return OUString();
- }
- else
- return m_Product.mProfileList[profileName].getProfilePath();
- }
-
- OUString ProfileAccess::getDefaultProfile( ::com::sun::star::mozilla::MozillaProductType product ) throw (::com::sun::star::uno::RuntimeException)
- {
- sal_Int32 index=product;
- ProductStruct &m_Product = m_ProductProfileList[index];
- if (!m_Product.mCurrentProfileName.isEmpty())
- {
- //default profile setted in mozilla registry
- return m_Product.mCurrentProfileName;
- }
- if (m_Product.mProfileList.empty())
- {
- //there are not any profiles
- return OUString();
- }
- return (*m_Product.mProfileList.begin()).second.getProfileName();
- }
- }
-}
-
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/connectivity/source/drivers/mork/MNSProfileDiscover.hxx b/connectivity/source/drivers/mork/MNSProfileDiscover.hxx
deleted file mode 100644
index a7aae562a254..000000000000
--- a/connectivity/source/drivers/mork/MNSProfileDiscover.hxx
+++ /dev/null
@@ -1,85 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*
- * This file is part of the LibreOffice project.
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * This file incorporates work covered by the following license notice:
- *
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed
- * with this work for additional information regarding copyright
- * ownership. The ASF licenses this file to you under the Apache
- * License, Version 2.0 (the "License"); you may not use this file
- * except in compliance with the License. You may obtain a copy of
- * the License at http://www.apache.org/licenses/LICENSE-2.0 .
- */
-
-#ifndef INCLUDED_CONNECTIVITY_SOURCE_DRIVERS_MORK_MNSPROFILEDISCOVER_HXX
-#define INCLUDED_CONNECTIVITY_SOURCE_DRIVERS_MORK_MNSPROFILEDISCOVER_HXX
-
-#include <sal/types.h>
-#include <osl/diagnose.h>
-#include <osl/conditn.hxx>
-#include <com/sun/star/mozilla/MozillaProductType.hpp>
-#include <com/sun/star/uno/RuntimeException.hpp>
-#include <com/sun/star/uno/Sequence.hxx>
-#include <rtl/ustring.hxx>
-
-#include <vector>
-#include <map>
-
-#include "dllapi.h"
-
-using namespace com::sun::star::mozilla;
-
-namespace connectivity
-{
- namespace mork
- {
- class ProfileStruct
- {
- public:
- ProfileStruct(MozillaProductType aProduct = MozillaProductType_Default, const OUString& aProfileName = OUString(),
- const OUString &aProfilePath = OUString()
- );
- OUString getProfileName(){ return profileName;}
- OUString getProfilePath() { return profilePath; }
- protected:
- MozillaProductType product;
- OUString profileName;
- OUString profilePath;
- };
-
- typedef ::std::map < OUString, ProfileStruct > ProfileList;
-
- class ProductStruct
- {
- public:
- OUString mCurrentProfileName;
- ProfileList mProfileList;
- };
-
- //Used to query profiles information
- class LO_DLLPUBLIC_MORK ProfileAccess
- {
- public:
-
- virtual ~ProfileAccess();
- ProfileAccess();
- OUString getProfilePath( ::com::sun::star::mozilla::MozillaProductType product, const OUString& profileName ) throw (::com::sun::star::uno::RuntimeException);
- OUString getDefaultProfile( ::com::sun::star::mozilla::MozillaProductType product ) throw (::com::sun::star::uno::RuntimeException);
- protected:
- ProductStruct m_ProductProfileList[4];
- sal_Int32 LoadProductsInfo();
- sal_Int32 LoadXPToolkitProfiles(MozillaProductType product);
- };
-
- }
-}
-
-#endif // INCLUDED_CONNECTIVITY_SOURCE_DRIVERS_MORK_MNSPROFILEDISCOVER_HXX
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/connectivity/source/drivers/mork/mork_helper.cxx b/connectivity/source/drivers/mork/mork_helper.cxx
index 8231d716a620..d2779cf4c5b5 100644
--- a/connectivity/source/drivers/mork/mork_helper.cxx
+++ b/connectivity/source/drivers/mork/mork_helper.cxx
@@ -1,9 +1,7 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-#include "MNSProfileDiscover.hxx"
-#include "MorkParser.hxx"
-
-using namespace connectivity::mork;
+#include "MorkParser.hxx"
+#include <iostream>
bool openAddressBook(const std::string& path)
{
@@ -35,20 +33,21 @@ bool openAddressBook(const std::string& path)
return true;
}
-int main(void)
+int main(int argc, char* argv[])
{
- ProfileAccess* access = new ProfileAccess();
- OUString defaultProfile = access->getDefaultProfile(::com::sun::star::mozilla::MozillaProductType_Thunderbird);
- SAL_INFO("connectivity.mork", "DefaultProfile: " << defaultProfile);
+ if (argc < 2)
+ {
+ std::cerr << "Usage: " << argv[0] << " <path-to>/abook.mab" << std::endl;
+ std::cerr << "Example: " << argv[0] << " /home/johndoe/.thunderbird/m0tpqlky.default/abook.mab" << std::endl;
- OUString profilePath = access->getProfilePath(::com::sun::star::mozilla::MozillaProductType_Thunderbird, defaultProfile);
- SAL_INFO("connectivity.mork", "ProfilePath: " << profilePath);
+ return 1;
+ }
- profilePath += "/abook.mab";
+ OString aOString(argv[1]);
+ SAL_INFO("connectivity.mork", "abook.mab: " << aOString);
+ openAddressBook(aOString.getStr());
- SAL_INFO("connectivity.mork", "abook.mab: " << profilePath);
- OString aOString = OUStringToOString( profilePath, RTL_TEXTENCODING_UTF8 );
- openAddressBook(aOString.getStr());
+ return 0;
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */