[Libreoffice-commits] core.git: shell/Library_syssh.mk shell/source

Noel Grandin (via logerrit) logerrit at kemper.freedesktop.org
Wed Jul 15 06:47:25 UTC 2020


 shell/Library_syssh.mk                    |    1 
 shell/source/unix/exec/shellexec.cxx      |   16 +++----
 shell/source/unix/exec/shellexecentry.cxx |   68 ------------------------------
 shell/source/unix/exec/syssh.component    |    5 +-
 4 files changed, 12 insertions(+), 78 deletions(-)

New commits:
commit b9707b5e3a3256c8b58486e500a7270e9e7c7446
Author:     Noel Grandin <noelgrandin at gmail.com>
AuthorDate: Mon Jul 13 20:13:31 2020 +0200
Commit:     Noel Grandin <noel.grandin at collabora.co.uk>
CommitDate: Wed Jul 15 08:46:32 2020 +0200

    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 at collabora.co.uk>

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>


More information about the Libreoffice-commits mailing list