diff options
author | Noel Grandin <noelgrandin@gmail.com> | 2020-07-13 20:13:31 +0200 |
---|---|---|
committer | Noel Grandin <noel.grandin@collabora.co.uk> | 2020-07-15 08:46:32 +0200 |
commit | b9707b5e3a3256c8b58486e500a7270e9e7c7446 (patch) | |
tree | 6cd7ab4eb267fc54b58fe9a64ba2f5365a2590ea /shell | |
parent | 91a6aeab9da5ef8f98390ce7661ee6acf0841aec (diff) |
shell/syssh: create instances with uno constructors
See tdf#74608 for motivation.
Change-Id: I94d0d68133877ab68e67607715afe78313bf1faf
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/98681
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Diffstat (limited to 'shell')
-rw-r--r-- | shell/Library_syssh.mk | 1 | ||||
-rw-r--r-- | shell/source/unix/exec/shellexec.cxx | 16 | ||||
-rw-r--r-- | shell/source/unix/exec/shellexecentry.cxx | 68 | ||||
-rw-r--r-- | shell/source/unix/exec/syssh.component | 5 |
4 files changed, 12 insertions, 78 deletions
diff --git a/shell/Library_syssh.mk b/shell/Library_syssh.mk index cd64791f1cd5..15406cb9c1ab 100644 --- a/shell/Library_syssh.mk +++ b/shell/Library_syssh.mk @@ -42,7 +42,6 @@ $(eval $(call gb_Library_set_componentfile,syssh,shell/source/unix/exec/syssh)) $(eval $(call gb_Library_add_exception_objects,syssh,\ shell/source/unix/exec/shellexec \ - shell/source/unix/exec/shellexecentry \ )) endif # OS diff --git a/shell/source/unix/exec/shellexec.cxx b/shell/source/unix/exec/shellexec.cxx index 0bcec84297e1..7d4e9cb36fb6 100644 --- a/shell/source/unix/exec/shellexec.cxx +++ b/shell/source/unix/exec/shellexec.cxx @@ -49,12 +49,6 @@ using namespace cppu; namespace { - Sequence< OUString > ShellExec_getSupportedServiceNames() - { - Sequence< OUString > aRet { "com.sun.star.system.SystemShellExecute" }; - return aRet; - } - void escapeForShell( OStringBuffer & rBuffer, const OString & rURL) { sal_Int32 nmax = rURL.getLength(); @@ -246,7 +240,15 @@ sal_Bool SAL_CALL ShellExec::supportsService( const OUString& ServiceName ) Sequence< OUString > SAL_CALL ShellExec::getSupportedServiceNames( ) { - return ShellExec_getSupportedServiceNames(); + return { "com.sun.star.system.SystemShellExecute" }; } +extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface* +shell_ShellExec_get_implementation( + css::uno::XComponentContext* context, css::uno::Sequence<css::uno::Any> const&) +{ + return cppu::acquire(new ShellExec(context)); +} + + /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/shell/source/unix/exec/shellexecentry.cxx b/shell/source/unix/exec/shellexecentry.cxx deleted file mode 100644 index dbd9cba0a80a..000000000000 --- a/shell/source/unix/exec/shellexecentry.cxx +++ /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 . - */ - -#include <cppuhelper/factory.hxx> -#include <com/sun/star/lang/XSingleComponentFactory.hpp> -#include "shellexec.hxx" - -using namespace ::com::sun::star::uno; -using namespace ::com::sun::star::lang; -using namespace ::com::sun::star::registry; -using namespace ::cppu; -using com::sun::star::system::XSystemShellExecute; - -#define SHELLEXEC_SERVICE_NAME "com.sun.star.system.SystemShellExecute" -#define SHELLEXEC_IMPL_NAME "com.sun.star.comp.system.SystemShellExecute" - -namespace -{ - Reference< XInterface > createInstance(const Reference< XComponentContext >& xContext) - { - return Reference< XInterface >( static_cast< XSystemShellExecute* >( new ShellExec(xContext) ) ); - } -} - -extern "C" -{ - -SAL_DLLPUBLIC_EXPORT void* syssh_component_getFactory( - const char* pImplName, - SAL_UNUSED_PARAMETER void* /*pSrvManager*/, - SAL_UNUSED_PARAMETER void* /*pRegistryKey*/ ) -{ - Reference< XSingleComponentFactory > xFactory; - - if (0 == ::rtl_str_compare( pImplName, SHELLEXEC_IMPL_NAME )) - { - xFactory = ::cppu::createSingleComponentFactory( - createInstance, - SHELLEXEC_IMPL_NAME, - Sequence< OUString > { SHELLEXEC_SERVICE_NAME } ); - - } - - if (xFactory.is()) - xFactory->acquire(); - - return xFactory.get(); -} - -} // extern "C" - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/shell/source/unix/exec/syssh.component b/shell/source/unix/exec/syssh.component index 0530fd5739ca..a41328d342cc 100644 --- a/shell/source/unix/exec/syssh.component +++ b/shell/source/unix/exec/syssh.component @@ -18,8 +18,9 @@ --> <component loader="com.sun.star.loader.SharedLibrary" environment="@CPPU_ENV@" - prefix="syssh" xmlns="http://openoffice.org/2010/uno-components"> - <implementation name="com.sun.star.comp.system.SystemShellExecute"> + xmlns="http://openoffice.org/2010/uno-components"> + <implementation name="com.sun.star.comp.system.SystemShellExecute" + constructor="shell_ShellExec_get_implementation"> <service name="com.sun.star.system.SystemShellExecute"/> </implementation> </component> |