diff options
Diffstat (limited to 'extensions/source')
33 files changed, 1190 insertions, 40 deletions
diff --git a/extensions/source/bibliography/framectr.cxx b/extensions/source/bibliography/framectr.cxx index a2084b8ec073..2d03ac1b82b4 100644 --- a/extensions/source/bibliography/framectr.cxx +++ b/extensions/source/bibliography/framectr.cxx @@ -408,7 +408,7 @@ sal_Bool BibFrameController_Impl::SaveModified(const Reference< form::runtime::X } catch(Exception&) { - DBG_ERROR("SaveModified: Exception occured!"); + DBG_ERROR("SaveModified: Exception occurred!"); } bInserted = bIsNew && bResult; diff --git a/extensions/source/inc/componentmodule.hxx b/extensions/source/inc/componentmodule.hxx index dd0795f1e424..216722f41be8 100644 --- a/extensions/source/inc/componentmodule.hxx +++ b/extensions/source/inc/componentmodule.hxx @@ -24,7 +24,7 @@ #ifndef _EXTENSIONS_COMPONENT_MODULE_HXX_ #define _EXTENSIONS_COMPONENT_MODULE_HXX_ -/** you may find this file helpfull if you implement a component (in it's own library) which can't use +/** you may find this file helpful if you implement a component (in it's own library) which can't use the usual infrastructure.<br/> More precise, you find helper classes to ease the use of resources and the registration of services. <p> diff --git a/extensions/source/logging/loghandler.hxx b/extensions/source/logging/loghandler.hxx index 1d383eb13f9b..ca96a8fdc109 100644 --- a/extensions/source/logging/loghandler.hxx +++ b/extensions/source/logging/loghandler.hxx @@ -118,13 +118,13 @@ namespace logging /** retrieves our formatter's heading, encoded with our encoding - @return <TRUE/> in case of success, <FALSE/> if any error occured + @return <TRUE/> in case of success, <FALSE/> if any error occurred */ bool getEncodedHead( ::rtl::OString& _out_rHead ) const; /** retrieves our formatter's tail, encoded with our encoding - @return <TRUE/> in case of success, <FALSE/> if any error occured + @return <TRUE/> in case of success, <FALSE/> if any error occurred */ bool getEncodedTail( ::rtl::OString& _out_rTail ) const; diff --git a/extensions/source/macosx/spotlight/OOoContentDataParser.m b/extensions/source/macosx/spotlight/OOoContentDataParser.m index d9e3a452563c..39f37afbeb32 100644 --- a/extensions/source/macosx/spotlight/OOoContentDataParser.m +++ b/extensions/source/macosx/spotlight/OOoContentDataParser.m @@ -106,7 +106,7 @@ - (void)parser:(NSXMLParser *)parser parseErrorOccurred:(NSError *)parseError { //NSLog(@"parsing finished with error"); - NSLog([NSString stringWithFormat:@"An error occured parsing the document. (Error %i, Description: %@, Line: %i, Column: %i)", [parseError code], + NSLog([NSString stringWithFormat:@"An error occurred parsing the document. (Error %i, Description: %@, Line: %i, Column: %i)", [parseError code], [[parser parserError] localizedDescription], [parser lineNumber], [parser columnNumber]]); diff --git a/extensions/source/macosx/spotlight/unzip.h b/extensions/source/macosx/spotlight/unzip.h index 90d234a5267c..5bcf349def09 100644 --- a/extensions/source/macosx/spotlight/unzip.h +++ b/extensions/source/macosx/spotlight/unzip.h @@ -143,8 +143,8 @@ extern int ZEXPORT unzStringFileNameCompare OF ((const char* fileName1, int iCaseSensitivity)); /* Compare two filename (fileName1,fileName2). - If iCaseSenisivity = 1, comparision is case sensitivity (like strcmp) - If iCaseSenisivity = 2, comparision is not case sensitivity (like strcmpi + If iCaseSenisivity = 1, comparison is case sensitivity (like strcmp) + If iCaseSenisivity = 2, comparison is not case sensitivity (like strcmpi or strcasecmp) If iCaseSenisivity = 0, case sensitivity is defaut of your operating system (like 1 on Unix, 2 on Windows) diff --git a/extensions/source/macosx/spotlight/unzip.m b/extensions/source/macosx/spotlight/unzip.m index 9c5b58ddf7ac..79035803ff2c 100644 --- a/extensions/source/macosx/spotlight/unzip.m +++ b/extensions/source/macosx/spotlight/unzip.m @@ -176,7 +176,7 @@ typedef struct /* =========================================================================== Read a byte from a gz_stream; update next_in and avail_in. Return EOF for end of file. - IN assertion: the stream s has been sucessfully opened for reading. + IN assertion: the stream s has been successfully opened for reading. */ @@ -312,8 +312,8 @@ local int strcmpcasenosensitive_internal (fileName1,fileName2) /* Compare two filename (fileName1,fileName2). - If iCaseSenisivity = 1, comparision is case sensitivity (like strcmp) - If iCaseSenisivity = 2, comparision is not case sensitivity (like strcmpi + If iCaseSenisivity = 1, comparison is case sensitivity (like strcmp) + If iCaseSenisivity = 2, comparison is not case sensitivity (like strcmpi or strcasecmp) If iCaseSenisivity = 0, case sensitivity is defaut of your operating system (like 1 on Unix, 2 on Windows) diff --git a/extensions/source/mozbootstrap/MMozillaBootstrap.cxx b/extensions/source/mozbootstrap/MMozillaBootstrap.cxx new file mode 100644 index 000000000000..410c55df9a12 --- /dev/null +++ b/extensions/source/mozbootstrap/MMozillaBootstrap.cxx @@ -0,0 +1,233 @@ +/************************************************************** + * + * 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 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + * + *************************************************************/ + +// MARKER(update_precomp.py): autogen include statement, do not remove +#include "precompiled_extensions.hxx" + +#include "MMozillaBootstrap.hxx" + +using namespace com::sun::star::uno; +using namespace com::sun::star::lang; +using namespace com::sun::star::mozilla; +using namespace connectivity::mozab; +#include <MNSFolders.hxx> +#include "MNSProfileDiscover.hxx" + +static MozillaBootstrap *pMozillaBootstrap=NULL; +static Reference<XMozillaBootstrap> xMozillaBootstrap; +extern "C" SAL_DLLPUBLIC_EXPORT void* SAL_CALL OMozillaBootstrap_CreateInstance(const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _rxFactory) +{ + if (!pMozillaBootstrap) + { + pMozillaBootstrap=new connectivity::mozab::MozillaBootstrap( _rxFactory ); + pMozillaBootstrap->Init(); + xMozillaBootstrap = pMozillaBootstrap; + } + return pMozillaBootstrap; +} + +// -------------------------------------------------------------------------------- + + +// -------------------------------------------------------------------------------- +MozillaBootstrap::MozillaBootstrap( + const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _rxFactory) + : OMozillaBootstrap_BASE(m_aMutex), m_xMSFactory( _rxFactory ) +{ +} +// ----------------------------------------------------------------------------- +MozillaBootstrap::~MozillaBootstrap() +{ +} +// ----------------------------------------------------------------------------- +void MozillaBootstrap::Init() +{ + sal_Bool aProfileExists=sal_False; + + (void)aProfileExists; /* avoid warning about unused parameter */ + + m_ProfileAccess = new ProfileAccess(); + bootupProfile(::com::sun::star::mozilla::MozillaProductType_Mozilla,rtl::OUString()); +} + +// -------------------------------------------------------------------------------- +void MozillaBootstrap::disposing() +{ + ::osl::MutexGuard aGuard(m_aMutex); + OMozillaBootstrap_BASE::disposing(); +} + +// static ServiceInfo +//------------------------------------------------------------------------------ +rtl::OUString MozillaBootstrap::getImplementationName_Static( ) throw(RuntimeException) +{ + return rtl::OUString::createFromAscii(MOZAB_MozillaBootstrap_IMPL_NAME); +} +//------------------------------------------------------------------------------ +Sequence< ::rtl::OUString > MozillaBootstrap::getSupportedServiceNames_Static( ) throw (RuntimeException) +{ + // which service is supported + // for more information @see com.sun.star.mozilla.MozillaBootstrap + Sequence< ::rtl::OUString > aSNS( 1 ); + aSNS[0] = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.mozilla.MozillaBootstrap")); + return aSNS; +} + +//------------------------------------------------------------------ +::rtl::OUString SAL_CALL MozillaBootstrap::getImplementationName( ) throw(RuntimeException) +{ + return getImplementationName_Static(); +} + +//------------------------------------------------------------------ +sal_Bool SAL_CALL MozillaBootstrap::supportsService( const ::rtl::OUString& _rServiceName ) throw(RuntimeException) +{ + Sequence< ::rtl::OUString > aSupported(getSupportedServiceNames()); + const ::rtl::OUString* pSupported = aSupported.getConstArray(); + const ::rtl::OUString* pEnd = pSupported + aSupported.getLength(); + for (;pSupported != pEnd && !pSupported->equals(_rServiceName); ++pSupported) + ; + + return pSupported != pEnd; +} + +//------------------------------------------------------------------ +Sequence< ::rtl::OUString > SAL_CALL MozillaBootstrap::getSupportedServiceNames( ) throw(RuntimeException) +{ + return getSupportedServiceNames_Static(); +} + + +// XProfileDiscover +::sal_Int32 SAL_CALL MozillaBootstrap::getProfileCount( ::com::sun::star::mozilla::MozillaProductType product) throw (::com::sun::star::uno::RuntimeException) +{ + return m_ProfileAccess->getProfileCount(product); +} +::sal_Int32 SAL_CALL MozillaBootstrap::getProfileList( ::com::sun::star::mozilla::MozillaProductType product, ::com::sun::star::uno::Sequence< ::rtl::OUString >& list ) throw (::com::sun::star::uno::RuntimeException) +{ + return m_ProfileAccess->getProfileList(product,list); +} +::rtl::OUString SAL_CALL MozillaBootstrap::getDefaultProfile( ::com::sun::star::mozilla::MozillaProductType product ) throw (::com::sun::star::uno::RuntimeException) +{ + return m_ProfileAccess->getDefaultProfile(product); +} +::rtl::OUString SAL_CALL MozillaBootstrap::getProfilePath( ::com::sun::star::mozilla::MozillaProductType product, const ::rtl::OUString& profileName ) throw (::com::sun::star::uno::RuntimeException) +{ + return m_ProfileAccess->getProfilePath(product,profileName); +} +::sal_Bool SAL_CALL MozillaBootstrap::isProfileLocked( ::com::sun::star::mozilla::MozillaProductType product, const ::rtl::OUString& profileName ) throw (::com::sun::star::uno::RuntimeException) +{ + return m_ProfileAccess->isProfileLocked(product,profileName); +} +::sal_Bool SAL_CALL MozillaBootstrap::getProfileExists( ::com::sun::star::mozilla::MozillaProductType product, const ::rtl::OUString& profileName ) throw (::com::sun::star::uno::RuntimeException) +{ + return m_ProfileAccess->getProfileExists(product,profileName); +} + +// XProfileManager +::sal_Int32 SAL_CALL MozillaBootstrap::bootupProfile( ::com::sun::star::mozilla::MozillaProductType product, const ::rtl::OUString& profileName ) throw (::com::sun::star::uno::RuntimeException) +{ + (void)product; /* avoid warning about unused parameter */ + (void)profileName; /* avoid warning about unused parameter */ + return -1; +} +::sal_Int32 SAL_CALL MozillaBootstrap::shutdownProfile( ) throw (::com::sun::star::uno::RuntimeException) +{ + return -1; +} +::com::sun::star::mozilla::MozillaProductType SAL_CALL MozillaBootstrap::getCurrentProduct( ) throw (::com::sun::star::uno::RuntimeException) +{ + return ::com::sun::star::mozilla::MozillaProductType_Default; +} +::rtl::OUString SAL_CALL MozillaBootstrap::getCurrentProfile( ) throw (::com::sun::star::uno::RuntimeException) +{ + return ::rtl::OUString(); +} +::sal_Bool SAL_CALL MozillaBootstrap::isCurrentProfileLocked( ) throw (::com::sun::star::uno::RuntimeException) +{ + return true; +} +::rtl::OUString SAL_CALL MozillaBootstrap::setCurrentProfile( ::com::sun::star::mozilla::MozillaProductType product, const ::rtl::OUString& profileName ) throw (::com::sun::star::uno::RuntimeException) +{ + (void)product; /* avoid warning about unused parameter */ + (void)profileName; /* avoid warning about unused parameter */ + return ::rtl::OUString(); +} + +// XProxyRunner +::sal_Int32 SAL_CALL MozillaBootstrap::Run( const ::com::sun::star::uno::Reference< ::com::sun::star::mozilla::XCodeProxy >& aCode ) throw (::com::sun::star::uno::RuntimeException) +{ + (void)aCode; /* avoid warning about unused parameter */ + return -1; +} + + +#include <cppuhelper/factory.hxx> +using ::com::sun::star::uno::Reference; +using ::com::sun::star::uno::Sequence; +using ::com::sun::star::lang::XSingleServiceFactory; +using ::com::sun::star::lang::XMultiServiceFactory; + +extern "C" SAL_DLLPUBLIC_EXPORT void SAL_CALL +component_getImplementationEnvironment( + const sal_Char **ppEnvTypeName, + uno_Environment ** /*ppEnv*/ + ) +{ + *ppEnvTypeName = CPPU_CURRENT_LANGUAGE_BINDING_NAME; +} + +static Reference< XInterface > SAL_CALL createInstance( const Reference< XMultiServiceFactory >& rServiceManager ) +{ + MozillaBootstrap * pBootstrap = reinterpret_cast<MozillaBootstrap*>(OMozillaBootstrap_CreateInstance(rServiceManager)); + return *pBootstrap; +} + +extern "C" SAL_DLLPUBLIC_EXPORT void* SAL_CALL component_getFactory( + const sal_Char* pImplementationName, + void* pServiceManager, + void* /*pRegistryKey*/) +{ + void* pRet = 0; + + if (pServiceManager) + { + ::rtl::OUString aImplName( ::rtl::OUString::createFromAscii( pImplementationName ) ); + Reference< XSingleServiceFactory > xFactory; + if (aImplName.equals( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.comp.mozilla.MozillaBootstrap")) )) + { + Sequence< ::rtl::OUString > aSNS( 1 ); + aSNS[0] = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.mozilla.MozillaBootstrap")); + + xFactory = ::cppu::createSingleFactory( + reinterpret_cast< XMultiServiceFactory* > ( pServiceManager), + aImplName, createInstance, aSNS ); + } + if ( xFactory.is() ) + { + xFactory->acquire(); + pRet = xFactory.get(); + } + } + + return pRet; +}; + diff --git a/extensions/source/mozbootstrap/MMozillaBootstrap.hxx b/extensions/source/mozbootstrap/MMozillaBootstrap.hxx new file mode 100644 index 000000000000..afc2ccdbf7c0 --- /dev/null +++ b/extensions/source/mozbootstrap/MMozillaBootstrap.hxx @@ -0,0 +1,97 @@ +/************************************************************** + * + * 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 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + * + *************************************************************/ + + +#ifndef _SMOZILLABOOTSTRAP_HXX +#define _SMOZILLABOOTSTRAP_HXX + +#include <com/sun/star/mozilla/XMozillaBootstrap.hpp> +#include <com/sun/star/lang/XServiceInfo.hpp> +#include <cppuhelper/compbase2.hxx> +#include <osl/module.h> + + +#define MOZAB_MozillaBootstrap_IMPL_NAME "com.sun.star.comp.mozilla.MozillaBootstrap" + +namespace connectivity +{ + namespace mozab + { + typedef ::cppu::WeakComponentImplHelper2< ::com::sun::star::mozilla::XMozillaBootstrap, + ::com::sun::star::lang::XServiceInfo > OMozillaBootstrap_BASE; + class ProfileAccess; + class ProfileManager; + class MozillaBootstrap : public OMozillaBootstrap_BASE + { + protected: + const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > m_xMSFactory; + + ::osl::Mutex m_aMutex; // mutex is need to control member access + virtual ~MozillaBootstrap(); + protected: + ProfileAccess * m_ProfileAccess; + ProfileManager * m_ProfileManager; + public: + + void Init(); + MozillaBootstrap(const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _rxFactory); + + // OComponentHelper + virtual void SAL_CALL disposing(void); + // XInterface + static ::rtl::OUString getImplementationName_Static( ) throw(::com::sun::star::uno::RuntimeException); + static ::com::sun::star::uno::Sequence< ::rtl::OUString > getSupportedServiceNames_Static( ) throw (::com::sun::star::uno::RuntimeException); + + // XServiceInfo + virtual ::rtl::OUString SAL_CALL getImplementationName( ) throw(::com::sun::star::uno::RuntimeException); + virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) throw(::com::sun::star::uno::RuntimeException); + virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames( ) throw(::com::sun::star::uno::RuntimeException); + + // XMozillaBootstrap + + // XProfileDiscover + virtual ::sal_Int32 SAL_CALL getProfileCount( ::com::sun::star::mozilla::MozillaProductType product) throw (::com::sun::star::uno::RuntimeException); + virtual ::sal_Int32 SAL_CALL getProfileList( ::com::sun::star::mozilla::MozillaProductType product, ::com::sun::star::uno::Sequence< ::rtl::OUString >& list ) throw (::com::sun::star::uno::RuntimeException); + virtual ::rtl::OUString SAL_CALL getDefaultProfile( ::com::sun::star::mozilla::MozillaProductType product ) throw (::com::sun::star::uno::RuntimeException); + virtual ::rtl::OUString SAL_CALL getProfilePath( ::com::sun::star::mozilla::MozillaProductType product, const ::rtl::OUString& profileName ) throw (::com::sun::star::uno::RuntimeException); + virtual ::sal_Bool SAL_CALL isProfileLocked( ::com::sun::star::mozilla::MozillaProductType product, const ::rtl::OUString& profileName ) throw (::com::sun::star::uno::RuntimeException); + virtual ::sal_Bool SAL_CALL getProfileExists( ::com::sun::star::mozilla::MozillaProductType product, const ::rtl::OUString& profileName ) throw (::com::sun::star::uno::RuntimeException); + + // XProfileManager + virtual ::sal_Int32 SAL_CALL bootupProfile( ::com::sun::star::mozilla::MozillaProductType product, const ::rtl::OUString& profileName ) throw (::com::sun::star::uno::RuntimeException); + virtual ::sal_Int32 SAL_CALL shutdownProfile( ) throw (::com::sun::star::uno::RuntimeException); + virtual ::com::sun::star::mozilla::MozillaProductType SAL_CALL getCurrentProduct( ) throw (::com::sun::star::uno::RuntimeException); + virtual ::rtl::OUString SAL_CALL getCurrentProfile( ) throw (::com::sun::star::uno::RuntimeException); + virtual ::sal_Bool SAL_CALL isCurrentProfileLocked( ) throw (::com::sun::star::uno::RuntimeException); + virtual ::rtl::OUString SAL_CALL setCurrentProfile( ::com::sun::star::mozilla::MozillaProductType product, const ::rtl::OUString& profileName ) throw (::com::sun::star::uno::RuntimeException); + + // XProxyRunner + virtual ::sal_Int32 SAL_CALL Run( const ::com::sun::star::uno::Reference< ::com::sun::star::mozilla::XCodeProxy >& aCode ) throw (::com::sun::star::uno::RuntimeException); + + const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > + & getMSFactory(void) const { return m_xMSFactory; } + + }; + } + +} + +#endif // _SMozillaBootstrap_HXX diff --git a/extensions/source/mozbootstrap/MNSFolders.cxx b/extensions/source/mozbootstrap/MNSFolders.cxx new file mode 100644 index 000000000000..c16d36c8f746 --- /dev/null +++ b/extensions/source/mozbootstrap/MNSFolders.cxx @@ -0,0 +1,147 @@ +/************************************************************** + * + * 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 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + * + *************************************************************/ + +// MARKER(update_precomp.py): autogen include statement, do not remove +#include "precompiled_extensions.hxx" +#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 ::rtl::OUString lcl_getUserDataDirectory() + { + ::osl::Security aSecurity; + ::rtl::OUString aConfigPath; + + aSecurity.getConfigDir( aConfigPath ); + return aConfigPath + ::rtl::OUString::createFromAscii( "/" ); + } + + // ------------------------------------------------------------------- + static const char* DefaultProductDir[3][3] = + { + #if defined(XP_WIN) + { "Mozilla/SeaMonkey/", NULL, NULL }, + { "Mozilla/Firefox/", NULL, NULL }, + { "Thunderbird/", "Mozilla/Thunderbird/", NULL } + #elif(MACOSX) + { "../Mozilla/SeaMonkey/", NULL, NULL }, + { "Firefox/", NULL, NULL }, + { "../Thunderbird/", NULL, NULL } + #else + { ".mozilla/seamonkey/", NULL, NULL }, + { ".mozilla/firefox/", NULL, NULL }, + { ".thunderbird/", ".mozilla-thunderbird/", ".mozilla/thunderbird/" } + #endif + }; + + static const char* ProductRootEnvironmentVariable[3] = + { + "MOZILLA_PROFILE_ROOT", + "MOZILLA_FIREFOX_PROFILE_ROOT", + "MOZILLA_THUNDERBIRD_PROFILE_ROOT", + }; + + // ------------------------------------------------------------------- + static ::rtl::OUString lcl_guessProfileRoot( MozillaProductType _product ) + { + size_t productIndex = _product - 1; + + static ::rtl::OUString s_productDirectories[3]; + + if ( !s_productDirectories[ productIndex ].getLength() ) + { + ::rtl::OUString sProductPath; + + // check whether we have an anevironment variable which helps us + const char* pProfileByEnv = getenv( ProductRootEnvironmentVariable[ productIndex ] ); + if ( pProfileByEnv ) + { + sProductPath = ::rtl::OUString( pProfileByEnv, rtl_str_getLength( pProfileByEnv ), osl_getThreadTextEncoding() ); + // asume that this is fine, no further checks + } + else + { + ::rtl::OUString sProductDirCandidate; + const char* pProfileRegistry = "profiles.ini"; + + // check all possible candidates + for ( size_t i=0; i<3; ++i ) + { + if ( NULL == DefaultProductDir[ productIndex ][ i ] ) + break; + + sProductDirCandidate = lcl_getUserDataDirectory() + + ::rtl::OUString::createFromAscii( DefaultProductDir[ productIndex ][ i ] ); + + // check existence + ::osl::DirectoryItem aRegistryItem; + ::osl::FileBase::RC result = ::osl::DirectoryItem::get( sProductDirCandidate + ::rtl::OUString::createFromAscii( pProfileRegistry ), aRegistryItem ); + if ( result == ::osl::FileBase::E_None ) + { + ::osl::FileStatus aStatus( FileStatusMask_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 ]; + } +} + +// ----------------------------------------------------------------------- +::rtl::OUString getRegistryDir(MozillaProductType product) +{ + if (product == MozillaProductType_Default) + return ::rtl::OUString(); + + return lcl_guessProfileRoot( product ); +} diff --git a/extensions/source/mozbootstrap/MNSFolders.hxx b/extensions/source/mozbootstrap/MNSFolders.hxx new file mode 100644 index 000000000000..64582d868856 --- /dev/null +++ b/extensions/source/mozbootstrap/MNSFolders.hxx @@ -0,0 +1,39 @@ +/************************************************************** + * + * 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 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + * + *************************************************************/ + + + +#ifndef _MNSFOLDERS_HXX_ +#define _MNSFOLDERS_HXX_ + +#include <sal/types.h> +#include <osl/diagnose.h> +#include <osl/conditn.hxx> +#ifndef _COM_SUN_STAR_MOZILLA_MOZILLPRODUCTTYPE_HPP_ +#include <com/sun/star/mozilla/MozillaProductType.hpp> +#endif + +#include <rtl/ustring.hxx> + +::rtl::OUString getRegistryDir(::com::sun::star::mozilla::MozillaProductType product); + +#endif + diff --git a/extensions/source/mozbootstrap/MNSINIParser.cxx b/extensions/source/mozbootstrap/MNSINIParser.cxx new file mode 100644 index 000000000000..b1671c2a7a66 --- /dev/null +++ b/extensions/source/mozbootstrap/MNSINIParser.cxx @@ -0,0 +1,133 @@ +/************************************************************** + * + * 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 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + * + *************************************************************/ + +// MARKER(update_precomp.py): autogen include statement, do not remove +#include "precompiled_extensions.hxx" +#include <MNSINIParser.hxx> +#include <rtl/byteseq.hxx> + +IniParser::IniParser(OUString const & rIniName) throw(com::sun::star::io::IOException ) +{ + OUString iniUrl; + if (osl_File_E_None != osl_getFileURLFromSystemPath(rIniName.pData, &iniUrl.pData)) + return; + + +#if OSL_DEBUG_LEVEL > 0 + OString sFile = OUStringToOString(iniUrl, RTL_TEXTENCODING_ASCII_US); + OSL_TRACE(__FILE__" -- parser() - %s\n", sFile.getStr()); +#endif + oslFileHandle handle=NULL; + oslFileError fileError = osl_File_E_INVAL; + try{ + if (iniUrl.getLength()) + fileError = osl_openFile(iniUrl.pData, &handle, osl_File_OpenFlag_Read); + } + catch(::com::sun::star::io::IOException e) + { +#if OSL_DEBUG_LEVEL > 0 + OString file_tmp = OUStringToOString(iniUrl, RTL_TEXTENCODING_ASCII_US); + OSL_TRACE( __FILE__" -- couldn't open file: %s", file_tmp.getStr() ); +#endif + } + + if (osl_File_E_None == fileError) + { + rtl::ByteSequence seq; + sal_uInt64 nSize = 0; + + osl_getFileSize(handle, &nSize); + OUString sectionName = OUString::createFromAscii("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 , (sal_Sequence **) &seq)) + break; + OString line( (const sal_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.getLength()) + sectionName = OUString::createFromAscii("no name section"); + + ini_Section *aSection = &mAllSection[sectionName]; + aSection->sName = sectionName; + } + } + } + osl_closeFile(handle); + } +#if OSL_DEBUG_LEVEL > 0 + else + { + OString file_tmp = OUStringToOString(iniUrl, RTL_TEXTENCODING_ASCII_US); + OSL_TRACE( __FILE__" -- couldn't open file: %s", file_tmp.getStr() ); + } +#endif +} +#if OSL_DEBUG_LEVEL > 0 +void IniParser::Dump() +{ + IniSectionMap::iterator iBegin = mAllSection.begin(); + IniSectionMap::iterator iEnd = mAllSection.end(); + for(;iBegin != iEnd;iBegin++) + { + ini_Section *aSection = &(*iBegin).second; + OString sec_name_tmp = OUStringToOString(aSection->sName, RTL_TEXTENCODING_ASCII_US); + for(NameValueList::iterator itor=aSection->lList.begin(); + itor != aSection->lList.end(); + itor++) + { + struct ini_NameValue * aValue = &(*itor); + OString name_tmp = OUStringToOString(aValue->sName, RTL_TEXTENCODING_ASCII_US); + OString value_tmp = OUStringToOString(aValue->sValue, RTL_TEXTENCODING_UTF8); + OSL_TRACE( + " section=%s name=%s value=%s\n", + sec_name_tmp.getStr(), + name_tmp.getStr(), + value_tmp.getStr() ); + + } + } + +} +#endif + diff --git a/extensions/source/mozbootstrap/MNSINIParser.hxx b/extensions/source/mozbootstrap/MNSINIParser.hxx new file mode 100644 index 000000000000..f2aaaf4805b9 --- /dev/null +++ b/extensions/source/mozbootstrap/MNSINIParser.hxx @@ -0,0 +1,79 @@ +/************************************************************** + * + * 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 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + * + *************************************************************/ + + +#ifndef __MNSINIPARSER_HXX__ +#define __MNSINIPARSER_HXX__ + +#include <rtl/ustring.hxx> +#include <com/sun/star/io/IOException.hpp> +#include <osl/process.h> +using namespace rtl; + +#include <map> +#include <list> + +#if OSL_DEBUG_LEVEL > 0 +#include <stdio.h> +#endif + +struct ini_NameValue +{ + rtl::OUString sName; + rtl::OUString sValue; + + inline ini_NameValue() SAL_THROW( () ) + {} + inline ini_NameValue( + OUString const & name, OUString const & value ) SAL_THROW( () ) + : sName( name ), + sValue( value ) + {} +}; + +typedef std::list< + ini_NameValue +> NameValueList; + +struct ini_Section +{ + rtl::OUString sName; + NameValueList lList; +}; +typedef std::map<rtl::OUString, + ini_Section + >IniSectionMap; + + +class IniParser +{ + IniSectionMap mAllSection; +public: + IniSectionMap * getAllSection(){return &mAllSection;}; + IniParser(OUString const & rIniName) throw(com::sun::star::io::IOException ); +#if OSL_DEBUG_LEVEL > 0 + void Dump(); +#endif + +}; + +#endif + diff --git a/extensions/source/mozbootstrap/MNSProfileDiscover.cxx b/extensions/source/mozbootstrap/MNSProfileDiscover.cxx new file mode 100644 index 000000000000..ee7d43f47d6b --- /dev/null +++ b/extensions/source/mozbootstrap/MNSProfileDiscover.cxx @@ -0,0 +1,221 @@ +/************************************************************** + * + * 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 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + * + *************************************************************/ + +// MARKER(update_precomp.py): autogen include statement, do not remove +#include "precompiled_extensions.hxx" +#include "MNSProfileDiscover.hxx" + +// Registry Keys + +static ::rtl::OUString szProfileSubtreeString=::rtl::OUString::createFromAscii("Profiles"); +static ::rtl::OUString szCurrentProfileString= ::rtl::OUString::createFromAscii("CurrentProfile"); +static ::rtl::OUString szDirectoryString =::rtl::OUString::createFromAscii("directory"); + +#ifndef MAXPATHLEN +#define MAXPATHLEN 1024 +#endif +#include <MNSFolders.hxx> +#include <MNSINIParser.hxx> + +namespace connectivity +{ + namespace mozab + { + ProfileStruct::ProfileStruct(MozillaProductType aProduct,::rtl::OUString aProfileName, + const ::rtl::OUString& aProfilePath) + { + product=aProduct; + profileName = aProfileName; + profilePath = aProfilePath; + } + ::rtl::OUString ProfileStruct::getProfilePath() + { + return profilePath; + } + + ProfileAccess::~ProfileAccess() + { + } + ProfileAccess::ProfileAccess() + { + LoadProductsInfo(); + } + + sal_Int32 ProfileAccess::LoadProductsInfo() + { + //load SeaMonkey 2 profiles to m_ProductProfileList + sal_Int32 count = LoadXPToolkitProfiles(MozillaProductType_Mozilla); + + //load thunderbird profiles to m_ProductProfileList + count += LoadXPToolkitProfiles(MozillaProductType_Thunderbird); + + //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]; + + ::rtl::OUString regDir = getRegistryDir(product); + ::rtl::OUString profilesIni( regDir ); + profilesIni += ::rtl::OUString::createFromAscii( "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; + ::rtl::OUString profileName; + ::rtl::OUString profilePath; + ::rtl::OUString sIsRelative; + ::rtl::OUString sIsDefault; + + for(NameValueList::iterator itor=aSection->lList.begin(); + itor != aSection->lList.end(); + itor++) + { + struct ini_NameValue * aValue = &(*itor); + if (aValue->sName.equals(::rtl::OUString::createFromAscii("Name"))) + { + profileName = aValue->sValue; + } + else if (aValue->sName.equals(::rtl::OUString::createFromAscii("IsRelative"))) + { + sIsRelative = aValue->sValue; + } + else if (aValue->sName.equals(::rtl::OUString::createFromAscii("Path"))) + { + profilePath = aValue->sValue; + } + else if (aValue->sName.equals(::rtl::OUString::createFromAscii("Default"))) + { + sIsDefault = aValue->sValue; + } + } + if (profileName.getLength() != 0 || profilePath.getLength() != 0) + { + sal_Int32 isRelative = 0; + if (sIsRelative.getLength() != 0) + { + isRelative = sIsRelative.toInt32(); + } + + ProfileStruct* profileItem = new ProfileStruct(product,profileName, + regDir + profilePath); + m_Product.mProfileList[profileName] = profileItem; + + sal_Int32 isDefault = 0; + if (sIsDefault.getLength() != 0) + { + isDefault = sIsDefault.toInt32(); + } + if (isDefault) + m_Product.mCurrentProfileName = profileName; + + } + + } + return static_cast< ::sal_Int32 >(m_Product.mProfileList.size()); + } + + ::rtl::OUString ProfileAccess::getProfilePath( ::com::sun::star::mozilla::MozillaProductType product, const ::rtl::OUString& profileName ) throw (::com::sun::star::uno::RuntimeException) + { + sal_Int32 index=product; + ProductStruct &m_Product = m_ProductProfileList[index]; + if (!m_Product.mProfileList.size() || m_Product.mProfileList.find(profileName) == m_Product.mProfileList.end()) + { + //Profile not found + return ::rtl::OUString(); + } + else + return m_Product.mProfileList[profileName]->getProfilePath(); + } + + ::sal_Int32 ProfileAccess::getProfileCount( ::com::sun::star::mozilla::MozillaProductType product) throw (::com::sun::star::uno::RuntimeException) + { + sal_Int32 index=product; + ProductStruct &m_Product = m_ProductProfileList[index]; + return static_cast< ::sal_Int32 >(m_Product.mProfileList.size()); + } + ::sal_Int32 ProfileAccess::getProfileList( ::com::sun::star::mozilla::MozillaProductType product, ::com::sun::star::uno::Sequence< ::rtl::OUString >& list ) throw (::com::sun::star::uno::RuntimeException) + { + sal_Int32 index=product; + ProductStruct &m_Product = m_ProductProfileList[index]; + list.realloc(static_cast<sal_Int32>(m_Product.mProfileList.size())); + sal_Int32 i=0; + for(ProfileList::iterator itor=m_Product.mProfileList.begin(); + itor != m_Product.mProfileList.end(); + itor++) + { + ProfileStruct * aProfile = (*itor).second; + list[i] = aProfile->getProfileName(); + i++; + } + + return static_cast< ::sal_Int32 >(m_Product.mProfileList.size()); + } + + ::rtl::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.getLength() != 0) + { + //default profile setted in mozilla registry + return m_Product.mCurrentProfileName; + } + if (m_Product.mProfileList.size() == 0) + { + //there are not any profiles + return ::rtl::OUString(); + } + ProfileStruct * aProfile = (*m_Product.mProfileList.begin()).second; + return aProfile->getProfileName(); + } + + ::sal_Bool ProfileAccess::isProfileLocked( ::com::sun::star::mozilla::MozillaProductType product, const ::rtl::OUString& profileName ) throw (::com::sun::star::uno::RuntimeException) + { + (void)product; /* avoid warning about unused parameter */ + (void)profileName; /* avoid warning about unused parameter */ + return sal_True; + } + + ::sal_Bool ProfileAccess::getProfileExists( ::com::sun::star::mozilla::MozillaProductType product, const ::rtl::OUString& profileName ) throw (::com::sun::star::uno::RuntimeException) + { + sal_Int32 index=product; + ProductStruct &m_Product = m_ProductProfileList[index]; + if (!m_Product.mProfileList.size() || m_Product.mProfileList.find(profileName) == m_Product.mProfileList.end()) + { + return sal_False; + } + else + return sal_True; + } + } +} + + diff --git a/extensions/source/mozbootstrap/MNSProfileDiscover.hxx b/extensions/source/mozbootstrap/MNSProfileDiscover.hxx new file mode 100644 index 000000000000..916b8e437651 --- /dev/null +++ b/extensions/source/mozbootstrap/MNSProfileDiscover.hxx @@ -0,0 +1,98 @@ +/************************************************************** + * + * 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 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + * + *************************************************************/ + +#ifndef __MNSProfileDiscover_h___ +#define __MNSProfileDiscover_h___ + +#include <sal/types.h> +#include <osl/diagnose.h> +#include <osl/conditn.hxx> +#ifndef _COM_SUN_STAR_MOZILLA_MOZILLPRODUCTTYPE_HPP_ +#include <com/sun/star/mozilla/MozillaProductType.hpp> +#endif +#include <com/sun/star/uno/RuntimeException.hpp> +#include <com/sun/star/uno/Sequence.hxx> +#include <rtl/ustring.hxx> + +#include <vector> +#include <map> + +using namespace com::sun::star::mozilla; +namespace connectivity +{ + namespace mozab + { + class ProfileStruct; + } +} +typedef ::std::map < ::rtl::OUString, ::connectivity::mozab::ProfileStruct* > ProfileList; +namespace connectivity +{ + namespace mozab + { + class ProfileStruct + { + public: + ProfileStruct(MozillaProductType aProduct,::rtl::OUString aProfileName, + const ::rtl::OUString &aProfilePath ); + MozillaProductType getProductType() { return product;} + ::rtl::OUString getProfileName(){ return profileName;} + ::rtl::OUString getProfilePath() ; + protected: + MozillaProductType product; + ::rtl::OUString profileName; + ::rtl::OUString profilePath; + }; + + class ProductStruct + { + public: + void setCurrentProfile(::rtl::OUString aProfileName){mCurrentProfileName = aProfileName;} + + ::rtl::OUString mCurrentProfileName; + + ProfileList mProfileList; + }; + + //Used to query profiles information + class ProfileAccess + { + public: + + virtual ~ProfileAccess(); + ProfileAccess(); + ::rtl::OUString getProfilePath( ::com::sun::star::mozilla::MozillaProductType product, const ::rtl::OUString& profileName ) throw (::com::sun::star::uno::RuntimeException); + ::sal_Int32 getProfileCount( ::com::sun::star::mozilla::MozillaProductType product ) throw (::com::sun::star::uno::RuntimeException); + ::sal_Int32 getProfileList( ::com::sun::star::mozilla::MozillaProductType product, ::com::sun::star::uno::Sequence< ::rtl::OUString >& list ) throw (::com::sun::star::uno::RuntimeException); + ::rtl::OUString getDefaultProfile( ::com::sun::star::mozilla::MozillaProductType product ) throw (::com::sun::star::uno::RuntimeException); + ::sal_Bool SAL_CALL isProfileLocked( ::com::sun::star::mozilla::MozillaProductType product, const ::rtl::OUString& profileName ) throw (::com::sun::star::uno::RuntimeException); + ::sal_Bool SAL_CALL getProfileExists( ::com::sun::star::mozilla::MozillaProductType product, const ::rtl::OUString& profileName ) throw (::com::sun::star::uno::RuntimeException); + protected: + ProductStruct m_ProductProfileList[4]; + sal_Int32 LoadProductsInfo(); + sal_Int32 LoadXPToolkitProfiles(MozillaProductType product); + }; + + } +} + +#endif // __MNSProfileDiscover_h___ + diff --git a/extensions/source/mozbootstrap/makefile.mk b/extensions/source/mozbootstrap/makefile.mk new file mode 100644 index 000000000000..a6ec4bb4a54e --- /dev/null +++ b/extensions/source/mozbootstrap/makefile.mk @@ -0,0 +1,76 @@ +#************************************************************** +# +# 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 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# +#************************************************************** + +CALL_CDECL=TRUE + +PRJ=..$/.. +PRJNAME=extensions +TARGET=mozbootstrap + +.IF "$(OS)" == "OS2" || "$(OS)" == "WNT" +all: + @echo " Not building under Windows / OS/2" +.ENDIF + +# --- Settings ---------------------------------- + +LIBTARGET=NO +ENABLE_EXCEPTIONS=TRUE +VISIBILITY_HIDDEN=TRUE + +.INCLUDE : settings.mk + +# no "lib" prefix +DLLPRE = + +# --- Files ------------------------------------- + +SLOFILES += \ + $(SLO)$/MNSINIParser.obj \ + $(SLO)$/MNSProfileDiscover.obj \ + $(SLO)$/MMozillaBootstrap.obj \ + $(SLO)$/MNSFolders.obj + +# CDEFS+=-DMINIMAL_PROFILEDISCOVER + +SHL1TARGET=$(TARGET).uno +SHL1VERSIONMAP=$(SOLARENV)/src/component.map +SHL1OBJS=$(SLOFILES) +SHL1DEF=$(MISC)$/$(SHL1TARGET).def +DEF1NAME=$(SHL1TARGET) + +SHL1STDLIBS=\ + $(CPPULIB) \ + $(CPPUHELPERLIB) \ + $(SALLIB) \ + $(COMPHELPERLIB) + +ALLTAR : $(MISC)/mozbootstrap.component + +$(MISC)/mozbootstrap.component .ERRREMOVE : \ + $(SOLARENV)/bin/createcomponent.xslt mozbootstrap.component + $(XSLTPROC) --nonet --stringparam uri \ + '$(COMPONENTPREFIX_BASIS_NATIVE)$(SHL1TARGETN:f)' -o $@ \ + $(SOLARENV)/bin/createcomponent.xslt mozbootstrap.component + +# --- Targets ---------------------------------- + +.INCLUDE : target.mk diff --git a/extensions/source/mozbootstrap/mozbootstrap.component b/extensions/source/mozbootstrap/mozbootstrap.component new file mode 100644 index 000000000000..618a4b4f3d4a --- /dev/null +++ b/extensions/source/mozbootstrap/mozbootstrap.component @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!--*********************************************************** + * + * 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 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + * + ***********************************************************--> +<component loader="com.sun.star.loader.SharedLibrary" + xmlns="http://openoffice.org/2010/uno-components"> + <implementation name="com.sun.star.comp.mozilla.MozillaBootstrap"> + <service name="com.sun.star.mozilla.MozillaBootstrap"/> + </implementation> +</component> diff --git a/extensions/source/ole/unoconversionutilities.hxx b/extensions/source/ole/unoconversionutilities.hxx index d17883b712ec..2b1bfcff51f1 100644 --- a/extensions/source/ole/unoconversionutilities.hxx +++ b/extensions/source/ole/unoconversionutilities.hxx @@ -1026,7 +1026,7 @@ void UnoConversionUtilities<T>::anyToVariant(VARIANT* pVariant, const Any& rAny) } // Creates an SAFEARRAY of the specified element and if necessary -// creates a SAFEARRAY whith multiple dimensions. +// creates a SAFEARRAY with multiple dimensions. // Used by sal_Bool anyToVariant(VARIANT* pVariant, const Any& rAny, VARTYPE type); template<class T> SAFEARRAY* UnoConversionUtilities<T>::createUnoSequenceWrapper(const Any& rSeq, VARTYPE elemtype) @@ -1255,7 +1255,7 @@ size_t UnoConversionUtilities<T>::getOleElementSize( VARTYPE type) // param rSeq - an Any that has to contain a Sequence // param dim - the dimension for which the number of elements is being determined, // must be one. -// param seqElementCounts - countains the maximum number of elements for each +// param seqElementCounts - contains the maximum number of elements for each // dimension. Index 0 contains the number of dimension one. // After return the Sequence contains the maximum number of // elements for each dimension. @@ -1403,7 +1403,7 @@ void UnoConversionUtilities<T>::createUnoObjectWrapper(const Any & rObj, VARIANT } } // Is the object a COM wrapper ( either XInvocation, or Adapter object) - // or does it suppy an IDispatch by its own ? + // or does it supply an IDispatch by its own ? else { Reference<XInterface> xIntComWrapper = xInt; diff --git a/extensions/source/ole/unoobjw.cxx b/extensions/source/ole/unoobjw.cxx index eb2323e7ab71..50ff7d65872e 100644 --- a/extensions/source/ole/unoobjw.cxx +++ b/extensions/source/ole/unoobjw.cxx @@ -326,7 +326,7 @@ STDMETHODIMP InterfaceOleWrapper_Impl::GetIDsOfNames(REFIID /*riid*/, // A. Type Information // ----------------------------------------------------------------------------- // With the help of type information the kind of parameter can be exactly determined -// and an appropriate conversion can be choosen. A problem arises if a method expects +// and an appropriate conversion can be chosen. A problem arises if a method expects // an Any. Then the type info does not tell what the type of the value, that is kept // by the any, should be. In this situation the decision wheter the param is a // sequence or an object is made upon the fact if the object has a property "0" @@ -344,7 +344,7 @@ STDMETHODIMP InterfaceOleWrapper_Impl::GetIDsOfNames(REFIID /*riid*/, // can easily find out that a param is such an object by queriing for the // IJScriptValue interface. By this interface one the type and kind ( out, in/out) // can be determined and the right conversion can be applied. -// Using ValueObjects we spare us the effort of aquiring and examining type information +// Using ValueObjects we spare us the effort of acquiring and examining type information // in order to figure out what the an IDispatch parameter is meant for. // Normal JScript object parameter can be mixed with JScriptValue object. If an @@ -1662,7 +1662,7 @@ static HRESULT mapCannotConvertException( CannotConvertException e, unsigned int // is VT_DISPATCH. The function is used from o2u_createUnoObjectWrapper // and the result is put into the constructor of the uno - wrapper // object. If a client asks the object for DISPID_VALUE and this -// funtion returned VT_DISPATCH then the IDispatch of the same +// function returned VT_DISPATCH then the IDispatch of the same // object is being returned. // See InterfaceOleWrapper_Impl::Invoke, InterfaceOleWrapper_Impl::m_defaultValueType const VARTYPE getVarType( const Any& value) diff --git a/extensions/source/oooimprovement/myconfigurationhelper.hxx b/extensions/source/oooimprovement/myconfigurationhelper.hxx index f2d9b2f72090..e6f4a43cdb7d 100644 --- a/extensions/source/oooimprovement/myconfigurationhelper.hxx +++ b/extensions/source/oooimprovement/myconfigurationhelper.hxx @@ -39,7 +39,7 @@ namespace oooimprovement #error css defined globally #endif #define css ::com::sun::star - // Copy from comphelper module, we cant use that directly from an extension + // Copy from comphelper module, we can't use that directly from an extension class MyConfigurationHelper { public: @@ -82,7 +82,7 @@ namespace oooimprovement * * @param eMode * specify the open mode for the returned configuration access. - * It's interpreted as a flag field and can be any usefull combination + * It's interpreted as a flag field and can be any useful combination * of values of EConfigurationModes. * * @throw css::uno::Any exceptions the underlying configuration can throw. @@ -177,7 +177,7 @@ namespace oooimprovement * Because it opens the specified configuration package, reads the key and * closes the configuration again. * - * So its not very usefull to use this method for reading multiple keys at the same time. + * So its not very useful to use this method for reading multiple keys at the same time. * (Excepting these keys exists inside different configuration packages ...)) */ static css::uno::Any readDirectKey( @@ -194,7 +194,7 @@ namespace oooimprovement * Because it opens the specified configuration package, writes the key, flush * all changes and closes the configuration again. * - * So its not very usefull to use this method for writing multiple keys at the same time. + * So its not very useful to use this method for writing multiple keys at the same time. * (Excepting these keys exists inside different configuration packages ...)) */ static void writeDirectKey( diff --git a/extensions/source/propctrlr/browserlistbox.cxx b/extensions/source/propctrlr/browserlistbox.cxx index 607d4155fde3..865e9e405cc9 100644 --- a/extensions/source/propctrlr/browserlistbox.cxx +++ b/extensions/source/propctrlr/browserlistbox.cxx @@ -167,7 +167,7 @@ namespace pcr */ void SAL_CALL dispose(); - /** sets the notification mode, so that notifications recieved from the controls are + /** sets the notification mode, so that notifications received from the controls are forwarded to our IControlContext either synchronously or asynchronously @param _eMode the new notification mode diff --git a/extensions/source/propctrlr/cellbindinghandler.hxx b/extensions/source/propctrlr/cellbindinghandler.hxx index fccd9029dfef..9b1369cb4c52 100644 --- a/extensions/source/propctrlr/cellbindinghandler.hxx +++ b/extensions/source/propctrlr/cellbindinghandler.hxx @@ -86,7 +86,7 @@ namespace pcr However, it can also result in a more complex change: The current (UI) state might depend on the value of more than one other property. Those dependent properties (their - UI, more precisly) are updated in this method. + UI, more precisely) are updated in this method. @param _nPropid the ->PropertyId of the dependent property whose UI state is to be updated diff --git a/extensions/source/propctrlr/cellbindinghelper.hxx b/extensions/source/propctrlr/cellbindinghelper.hxx index 08c45f6a1b05..dbbbdd42f262 100644 --- a/extensions/source/propctrlr/cellbindinghelper.hxx +++ b/extensions/source/propctrlr/cellbindinghelper.hxx @@ -116,7 +116,7 @@ namespace pcr @precond The binding is a valid cell binding, or <NULL/> @return - <FALSE/> if and only if an error occured and no valid address could be obtained + <FALSE/> if and only if an error occurred and no valid address could be obtained @see isCellBinding */ bool getAddressFromCellBinding( @@ -200,7 +200,7 @@ namespace pcr ) const; /** retrieves the index of the sheet which our control belongs to - @return the index of the sheet which our control belongs to or -1, if an error occured + @return the index of the sheet which our control belongs to or -1, if an error occurred */ sal_Int16 getControlSheetIndex( ::com::sun::star::uno::Reference< ::com::sun::star::sheet::XSpreadsheet >& _out_rxSheet @@ -265,7 +265,7 @@ namespace pcr the AddressConversion service @return - <TRUE/> if any only if the conversion was successfull + <TRUE/> if any only if the conversion was successful @see com::sun::star::table::CellAddressConversion @see com::sun::star::table::CellRangeAddressConversion diff --git a/extensions/source/propctrlr/eventhandler.cxx b/extensions/source/propctrlr/eventhandler.cxx index 0c2f4b0da7de..36e2d2f48809 100644 --- a/extensions/source/propctrlr/eventhandler.cxx +++ b/extensions/source/propctrlr/eventhandler.cxx @@ -914,7 +914,7 @@ namespace pcr pEventHolder->addEvent( event->second.nId, event->second.sListenerMethodName, aAssignedScript ); } - // the inital selection in the dialog + // the initial selection in the dialog Sequence< ::rtl::OUString > aNames( pEventHolder->getElementNames() ); const ::rtl::OUString* pChosenEvent = ::std::find( aNames.getConstArray(), aNames.getConstArray() + aNames.getLength(), rForEvent.sListenerMethodName ); sal_uInt16 nInitialSelection = (sal_uInt16)( pChosenEvent - aNames.getConstArray() ); diff --git a/extensions/source/propctrlr/eventhandler.hxx b/extensions/source/propctrlr/eventhandler.hxx index efd650245c69..6edc3b064290 100644 --- a/extensions/source/propctrlr/eventhandler.hxx +++ b/extensions/source/propctrlr/eventhandler.hxx @@ -147,7 +147,7 @@ namespace pcr private: /** returns the script events associated with our introspectee @param _out_rEvents - Takes, upon successfull return, the events currently associated with the introspectee + Takes, upon successful return, the events currently associated with the introspectee @precond Our introspectee is a form component */ @@ -157,7 +157,7 @@ namespace pcr /** returns the script events associated with our introspectee @param _out_rEvents - Takes, upon successfull return, the events currently associated with the introspectee + Takes, upon successful return, the events currently associated with the introspectee @precond Our introspectee is a dialog element */ @@ -181,7 +181,7 @@ namespace pcr /** returns the types of the listeners which can be registered at our introspectee @param _out_rTypes - Takes, upon successfull return, the types of possible listeners at the introspectee + Takes, upon successful return, the types of possible listeners at the introspectee */ void impl_getCopmonentListenerTypes_nothrow( ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type >& _out_rTypes diff --git a/extensions/source/propctrlr/fontdialog.cxx b/extensions/source/propctrlr/fontdialog.cxx index e7d2eb263899..0b0fdb50bb75 100644 --- a/extensions/source/propctrlr/fontdialog.cxx +++ b/extensions/source/propctrlr/fontdialog.cxx @@ -575,7 +575,7 @@ namespace pcr const SvxFontListItem& rFontListItem = static_cast<const SvxFontListItem&>(_rpPool->GetDefaultItem(CFID_FONTLIST)); const FontList* pFontList = rFontListItem.GetFontList(); - // _first_ delete the set (refering the pool) + // _first_ delete the set (referring the pool) if (_rpSet) { delete _rpSet; diff --git a/extensions/source/propctrlr/formcomponenthandler.cxx b/extensions/source/propctrlr/formcomponenthandler.cxx index 12f443a03e45..40915c92e56f 100644 --- a/extensions/source/propctrlr/formcomponenthandler.cxx +++ b/extensions/source/propctrlr/formcomponenthandler.cxx @@ -2439,7 +2439,7 @@ namespace pcr { DBG_ERROR( "FormComponentPropertyHandler::impl_ensureRowsetConnection_nothrow: caught an exception during error handling!" ); } - // additional info about what happended + // additional info about what happened String sInfo( PcrRes( RID_STR_UNABLETOCONNECT ) ); INetURLObject aParser( sDataSourceName ); if ( aParser.GetProtocol() != INET_PROT_NOT_VALID ) diff --git a/extensions/source/propctrlr/formcomponenthandler.hxx b/extensions/source/propctrlr/formcomponenthandler.hxx index 1337ea707e16..3bb0faf65865 100644 --- a/extensions/source/propctrlr/formcomponenthandler.hxx +++ b/extensions/source/propctrlr/formcomponenthandler.hxx @@ -405,7 +405,7 @@ namespace pcr However, it can also result in a more complex change: The current (UI) state might depend on the value of more than one other property. Those dependent properties (their - UI, more precisly) are updated in this method. + UI, more precisely) are updated in this method. @param _nPropid the ->PropertyId of the dependent property whose UI state is to be updated diff --git a/extensions/source/propctrlr/pcrcomponentcontext.hxx b/extensions/source/propctrlr/pcrcomponentcontext.hxx index 08f9a1c5ef34..8e518bf8a3bb 100644 --- a/extensions/source/propctrlr/pcrcomponentcontext.hxx +++ b/extensions/source/propctrlr/pcrcomponentcontext.hxx @@ -97,7 +97,7 @@ namespace pcr @throws ::com::sun::star::lang::ServiceNotRegisteredException if the given service is not registered @throws Exception - if an exception occured during creating the component + if an exception occurred during creating the component @return the newly created component. Is never <NULL/>. */ @@ -108,7 +108,7 @@ namespace pcr @throws ::com::sun::star::lang::ServiceNotRegisteredException if the given service is not registered @throws Exception - if an exception occured during creating the component + if an exception occurred during creating the component @return the newly created component. Is never <NULL/>. */ diff --git a/extensions/source/scanner/twain.cxx b/extensions/source/scanner/twain.cxx index 19f1d77222ad..8efdce688ed7 100644 --- a/extensions/source/scanner/twain.cxx +++ b/extensions/source/scanner/twain.cxx @@ -401,7 +401,7 @@ void ImpTwain::ImplXfer() GlobalFree( (HGLOBAL) hDIB ); #endif // OS2 - // set resolution of bitmap if neccessary + // set resolution of bitmap if necessary if ( ( nXRes != -1 ) && ( nYRes != - 1 ) && ( nWidth != - 1 ) && ( nHeight != - 1 ) ) { const MapMode aMapMode( MAP_100TH_INCH, Point(), Fraction( 100, nXRes ), Fraction( 100, nYRes ) ); diff --git a/extensions/source/update/check/download.cxx b/extensions/source/update/check/download.cxx index 070bdeeba795..0e3ea017a239 100644 --- a/extensions/source/update/check/download.cxx +++ b/extensions/source/update/check/download.cxx @@ -270,7 +270,7 @@ bool curl_run(const rtl::OUString& rURL, OutData& out, const rtl::OString& aProx curl_easy_setopt(pCURL, CURLOPT_WRITEDATA, &out); curl_easy_setopt(pCURL, CURLOPT_WRITEFUNCTION, &write_function); - // progress handler - Condition::check unfortunatly is not defined const + // progress handler - Condition::check unfortunately is not defined const curl_easy_setopt(pCURL, CURLOPT_NOPROGRESS, 0); curl_easy_setopt(pCURL, CURLOPT_PROGRESSFUNCTION, &progress_callback); curl_easy_setopt(pCURL, CURLOPT_PROGRESSDATA, &out); diff --git a/extensions/source/update/check/updatecheck.cxx b/extensions/source/update/check/updatecheck.cxx index 642d7940291f..f2d00b2fad01 100644 --- a/extensions/source/update/check/updatecheck.cxx +++ b/extensions/source/update/check/updatecheck.cxx @@ -820,7 +820,7 @@ UpdateCheck::initialize(const uno::Sequence< beans::NamedValue >& rValues, if( nDownloadSize > 0 ) { - if ( nDownloadSize <= nFileSize ) // we have already downloaded everthing + if ( nDownloadSize <= nFileSize ) // we have already downloaded everything { bContinueDownload = false; bDownloadAvailable = true; diff --git a/extensions/source/update/check/updatecheckconfig.hxx b/extensions/source/update/check/updatecheckconfig.hxx index 926efbf9cee8..27262b2cb0cc 100755 --- a/extensions/source/update/check/updatecheckconfig.hxx +++ b/extensions/source/update/check/updatecheckconfig.hxx @@ -32,7 +32,7 @@ #include "updatecheckconfiglistener.hxx" #include "updateinfo.hxx" -/* Interface to acess configuration data read-only */ +/* Interface to access configuration data read-only */ struct IByNameAccess { virtual ::com::sun::star::uno::Any getValue(const sal_Char * pName) = 0; @@ -217,7 +217,7 @@ T getValue( const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::Name { for( sal_Int32 n=0; n < rNamedValues.getLength(); n++ ) { - // Unfortunatly gcc-3.3 does not like Any.get<T>(); + // Unfortunately gcc-3.3 does not like Any.get<T>(); if( rNamedValues[n].Name.equalsAscii( pszName ) ) { T value = T(); diff --git a/extensions/source/update/ui/updatecheckui.cxx b/extensions/source/update/ui/updatecheckui.cxx index cb93496f3d7e..7fc0cb686d3a 100644 --- a/extensions/source/update/ui/updatecheckui.cxx +++ b/extensions/source/update/ui/updatecheckui.cxx @@ -772,7 +772,7 @@ IMPL_LINK( UpdateCheckUI, WindowEventHdl, VclWindowEvent*, pEvent ) Point aWinPos = aIconRect.BottomCenter(); mpBubbleWin->SetTipPosPixel( aWinPos ); if ( mpBubbleWin->IsVisible() ) - mpBubbleWin->Show(); // This will recalc the screen positon of the bubble + mpBubbleWin->Show(); // This will recalc the screen position of the bubble } } |