diff options
author | Andras Timar <atimar@suse.com> | 2012-11-11 18:24:14 +0100 |
---|---|---|
committer | Andras Timar <atimar@suse.com> | 2012-11-11 18:24:14 +0100 |
commit | 06ec1c089519ef3249464aa09eadf03a8db93a39 (patch) | |
tree | 85b2eb6d8ba6ca95e18e1ff82151224cb14106f6 /shell | |
parent | 8e0d67bed54633d555a4601a5d79e2d5ba7ab2bb (diff) | |
parent | 3f899eae02eaad0b967de749fe09b869ba93ad6d (diff) |
Merge branch 'master' into feature/killsdf
Conflicts:
Repository.mk
RepositoryFixes.mk
connectivity/prj/build.lst
extensions/prj/build.lst
filter/prj/build.lst
fpicker/prj/build.lst
l10ntools/StaticLibrary_transex.mk
saxon/build.xml
shell/prj/build.lst
solenv/gbuild/AllLangResTarget.mk
solenv/gbuild/Configuration.mk
solenv/gbuild/UI.mk
ucb/source/ucp/webdav/webdavcontent.cxx
Diffstat (limited to 'shell')
-rw-r--r-- | shell/Library_losessioninstall.mk | 36 | ||||
-rw-r--r-- | shell/Library_ooofilt_x64.mk | 4 | ||||
-rw-r--r-- | shell/Library_propertyhdl_x64.mk | 4 | ||||
-rw-r--r-- | shell/Library_shlxthdl_x64.mk | 4 | ||||
-rw-r--r-- | shell/Module_shell.mk | 8 | ||||
-rw-r--r-- | shell/StaticLibrary_shlxthandler_common_x64.mk | 4 | ||||
-rw-r--r-- | shell/StaticLibrary_xmlparser_x64.mk | 2 | ||||
-rw-r--r-- | shell/prj/build.lst | 2 | ||||
-rw-r--r-- | shell/source/cmdmail/cmdmailsuppl.cxx | 11 | ||||
-rw-r--r-- | shell/source/sessioninstall/SyncDbusSessionHelper.cxx | 113 | ||||
-rw-r--r-- | shell/source/sessioninstall/SyncDbusSessionHelper.hxx | 60 | ||||
-rw-r--r-- | shell/source/sessioninstall/losessioninstall.component | 15 | ||||
-rw-r--r-- | shell/source/sessioninstall/services.cxx | 31 | ||||
-rw-r--r-- | shell/source/unix/misc/senddoc.sh | 60 |
14 files changed, 284 insertions, 70 deletions
diff --git a/shell/Library_losessioninstall.mk b/shell/Library_losessioninstall.mk new file mode 100644 index 000000000000..65dee35586e6 --- /dev/null +++ b/shell/Library_losessioninstall.mk @@ -0,0 +1,36 @@ +# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*- +# +# 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/. +# + +$(eval $(call gb_Library_Library,losessioninstall)) + +$(eval $(call gb_Library_set_componentfile,losessioninstall,shell/source/sessioninstall/losessioninstall)) + +$(eval $(call gb_Library_use_api,losessioninstall,\ + offapi \ + udkapi \ +)) + +$(eval $(call gb_Library_use_libraries,losessioninstall,\ + comphelper \ + cppu \ + cppuhelper \ + sal \ +)) + +$(eval $(call gb_Library_use_externals,losessioninstall,\ + dbus \ + gio \ +)) + +$(eval $(call gb_Library_add_exception_objects,losessioninstall,\ + shell/source/sessioninstall/SyncDbusSessionHelper \ + shell/source/sessioninstall/services \ +)) + +# vim:set shiftwidth=4 softtabstop=4 expandtab: diff --git a/shell/Library_ooofilt_x64.mk b/shell/Library_ooofilt_x64.mk index 9c3cb655758d..e3baee3faced 100644 --- a/shell/Library_ooofilt_x64.mk +++ b/shell/Library_ooofilt_x64.mk @@ -54,8 +54,8 @@ $(eval $(call gb_Library_add_defs,ooofilt_x64,\ )) $(eval $(call gb_Library_use_externals,ooofilt_x64,\ - expat_utf16 \ - zlib \ + expat_utf16_x64 \ + zlib_x64 \ )) $(eval $(call gb_Library_use_system_win32_libs,ooofilt_x64,\ diff --git a/shell/Library_propertyhdl_x64.mk b/shell/Library_propertyhdl_x64.mk index f12ba0c29af6..e6e9c591e44f 100644 --- a/shell/Library_propertyhdl_x64.mk +++ b/shell/Library_propertyhdl_x64.mk @@ -54,8 +54,8 @@ $(eval $(call gb_Library_add_defs,propertyhdl_x64,\ )) $(eval $(call gb_Library_use_externals,propertyhdl_x64,\ - expat_utf16 \ - zlib \ + expat_utf16_x64 \ + zlib_x64 \ )) $(eval $(call gb_Library_use_system_win32_libs,propertyhdl_x64,\ diff --git a/shell/Library_shlxthdl_x64.mk b/shell/Library_shlxthdl_x64.mk index e5deaa9cc46e..33656b49ae8d 100644 --- a/shell/Library_shlxthdl_x64.mk +++ b/shell/Library_shlxthdl_x64.mk @@ -54,8 +54,8 @@ $(eval $(call gb_Library_add_defs,shlxthdl_x64,\ )) $(eval $(call gb_Library_use_externals,shlxthdl_x64,\ - expat_utf16 \ - zlib \ + expat_utf16_x64 \ + zlib_x64 \ )) $(eval $(call gb_Library_use_system_win32_libs,shlxthdl_x64,\ diff --git a/shell/Module_shell.mk b/shell/Module_shell.mk index f520aea372a7..3726c4fa1c1a 100644 --- a/shell/Module_shell.mk +++ b/shell/Module_shell.mk @@ -32,6 +32,14 @@ $(eval $(call gb_Module_add_targets,shell,\ Library_localebe \ )) +ifeq ($(OS),LINUX) +ifeq ($(ENABLE_GIO),TRUE) +$(eval $(call gb_Module_add_targets,shell,\ + Library_losessioninstall \ +)) +endif +endif + ifeq ($(ENABLE_GCONF),TRUE) $(eval $(call gb_Module_add_targets,shell,\ Library_gconfbe \ diff --git a/shell/StaticLibrary_shlxthandler_common_x64.mk b/shell/StaticLibrary_shlxthandler_common_x64.mk index 175f8ee7b738..41b1ae623184 100644 --- a/shell/StaticLibrary_shlxthandler_common_x64.mk +++ b/shell/StaticLibrary_shlxthandler_common_x64.mk @@ -53,8 +53,8 @@ $(eval $(call gb_StaticLibrary_add_defs,shlxthandler_common_x64,\ )) $(eval $(call gb_StaticLibrary_use_externals,shlxthandler_common_x64,\ - expat_utf16 \ - zlib \ + expat_utf16_x64 \ + zlib_x64 \ )) $(eval $(call gb_StaticLibrary_add_x64_generated_exception_objects,shlxthandler_common_x64,\ diff --git a/shell/StaticLibrary_xmlparser_x64.mk b/shell/StaticLibrary_xmlparser_x64.mk index 2f5f510bdd94..bbf7a4a40207 100644 --- a/shell/StaticLibrary_xmlparser_x64.mk +++ b/shell/StaticLibrary_xmlparser_x64.mk @@ -35,7 +35,7 @@ $(eval $(call gb_StaticLibrary_set_include,shell_xmlparser_x64,\ )) $(eval $(call gb_StaticLibrary_use_externals,shell_xmlparser_x64,\ - expat_utf16 \ + expat_utf16_x64 \ )) $(eval $(call gb_StaticLibrary_add_x64_generated_exception_objects,shell_xmlparser_x64,\ diff --git a/shell/prj/build.lst b/shell/prj/build.lst index 771af1cb0a64..83c4a9195064 100644 --- a/shell/prj/build.lst +++ b/shell/prj/build.lst @@ -1,2 +1,2 @@ -sl shell : offapi DESKTOP:rdbmaker tools sal EXPAT:expat LIBXSLT:libxslt NULL +sl shell : offapi tools sal EXPAT:expat LIBXSLT:libxslt NULL sl shell\prj nmake - all sl_prj NULL diff --git a/shell/source/cmdmail/cmdmailsuppl.cxx b/shell/source/cmdmail/cmdmailsuppl.cxx index 5c0a5bb4c032..d64f0d10e002 100644 --- a/shell/source/cmdmail/cmdmailsuppl.cxx +++ b/shell/source/cmdmail/cmdmailsuppl.cxx @@ -28,6 +28,7 @@ #include "cmdmailmsg.hxx" #include <com/sun/star/system/SimpleMailClientFlags.hpp> #include <com/sun/star/container/XNameAccess.hpp> +#include <com/sun/star/configuration/theDefaultProvider.hpp> #include <com/sun/star/beans/PropertyValue.hpp> #include <com/sun/star/beans/XPropertySet.hpp> #include <com/sun/star/uno/XComponentContext.hpp> @@ -57,6 +58,7 @@ using namespace cppu; using namespace com::sun::star::system::SimpleMailClientFlags; using namespace com::sun::star::uno; using namespace com::sun::star::lang; +using namespace com::sun::star::configuration; #define COMP_IMPL_NAME "com.sun.star.comp.system.SimpleCommandMail2" @@ -80,14 +82,7 @@ namespace // private CmdMailSuppl::CmdMailSuppl( const Reference< XComponentContext >& xContext ) : WeakImplHelper3< XSimpleMailClientSupplier, XSimpleMailClient, XServiceInfo >() { - Reference< XMultiComponentFactory > xServiceManager = xContext->getServiceManager(); - - if ( xServiceManager.is() ) { - m_xConfigurationProvider = Reference< XMultiServiceFactory > ( - xServiceManager->createInstanceWithContext( - OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.configuration.ConfigurationProvider")), xContext ), - UNO_QUERY ); - } + m_xConfigurationProvider = theDefaultProvider::get(xContext); } //------------------------------------------------- diff --git a/shell/source/sessioninstall/SyncDbusSessionHelper.cxx b/shell/source/sessioninstall/SyncDbusSessionHelper.cxx new file mode 100644 index 000000000000..47f0749400a4 --- /dev/null +++ b/shell/source/sessioninstall/SyncDbusSessionHelper.cxx @@ -0,0 +1,113 @@ +/* -*- 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/. + */ + +#include <SyncDbusSessionHelper.hxx> + +#include <comphelper/stlunosequence.hxx> +#include <gio/gio.h> +#include <vector> +#include <boost/shared_ptr.hpp> + +using namespace ::com::sun::star::lang; +using namespace ::com::sun::star::uno; +using namespace ::comphelper; +using namespace ::std; +using namespace ::rtl; + +namespace +{ + struct GVariantDeleter { void operator()(GVariant* pV) { g_variant_unref(pV); } }; + struct GVariantBuilderDeleter { void operator()(GVariantBuilder* pVB) { g_variant_builder_unref(pVB); } }; + template <typename T> struct GObjectDeleter { void operator()(T* pO) { g_object_unref(pO); } }; + class GErrorWrapper + { + GError* m_pError; + public: + GErrorWrapper(GError* pError) : m_pError(pError) {} + ~GErrorWrapper() + { + if(!m_pError) + return; + OUString sMsg = OUString::createFromAscii(m_pError->message); + g_error_free(m_pError); + throw RuntimeException(sMsg, NULL); + } + GError** getRef() { return &m_pError; } + }; + static inline GDBusProxy* lcl_GetPackageKitProxy(const OUString sInterface) + { + const OString sFullInterface = rtl::OUStringToOString("org.freedesktop.PackageKit." + sInterface, RTL_TEXTENCODING_ASCII_US); + GErrorWrapper error(NULL); + GDBusProxy* proxy = NULL; + proxy = g_dbus_proxy_new_for_bus_sync (G_BUS_TYPE_SESSION, + G_DBUS_PROXY_FLAGS_NONE, NULL, + "org.freedesktop.PackageKit", + "/org/freedesktop/PackageKit", + reinterpret_cast<const gchar*>(sFullInterface.getStr()), + NULL, + error.getRef()); + if(!proxy) + throw RuntimeException(OUString("couldnt get a proxy!"),NULL); + return proxy; + } +} + +namespace shell { namespace sessioninstall +{ + SyncDbusSessionHelper::SyncDbusSessionHelper(Reference<XComponentContext> const&) + { + g_type_init (); + } + void SAL_CALL SyncDbusSessionHelper::InstallPackageNames( const ::sal_uInt32 nXid, const Sequence< OUString >& vPackages, const OUString& sInteraction ) throw (RuntimeException) + { + vector< OString > vPackagesOString; + vPackagesOString.reserve(vPackages.getLength()); + boost::shared_ptr<GVariantBuilder> pBuilder(g_variant_builder_new(G_VARIANT_TYPE ("as")), GVariantBuilderDeleter()); + for( const OUString* pPackage = stl_begin(vPackages); pPackage != stl_end(vPackages); ++pPackage) + { + vPackagesOString.push_back(rtl::OUStringToOString(*pPackage, RTL_TEXTENCODING_ASCII_US)); + g_variant_builder_add(pBuilder.get(), "s", vPackagesOString.back().getStr()); + } + + const OString sInteractionAscii = OUStringToOString(sInteraction, RTL_TEXTENCODING_ASCII_US); + boost::shared_ptr<GDBusProxy> proxy(lcl_GetPackageKitProxy("Modify"), GObjectDeleter<GDBusProxy>()); + GErrorWrapper error(NULL); + g_dbus_proxy_call_sync (proxy.get(), + "InstallPackageNames", + g_variant_new ("(uass)", + sal::static_int_cast<guint32>(nXid), + pBuilder.get(), + sInteractionAscii.getStr()), + G_DBUS_CALL_FLAGS_NONE, + -1, /* timeout */ + NULL, /* cancellable */ + error.getRef()); + } + + void SAL_CALL SyncDbusSessionHelper::IsInstalled( const OUString& sPackagename, const OUString& sInteraction, ::sal_Bool& o_isInstalled ) throw (RuntimeException) + { + const OString sPackagenameAscii = OUStringToOString(sPackagename, RTL_TEXTENCODING_ASCII_US); + const OString sInteractionAscii = OUStringToOString(sInteraction, RTL_TEXTENCODING_ASCII_US); + boost::shared_ptr<GDBusProxy> proxy(lcl_GetPackageKitProxy("Query"), GObjectDeleter<GDBusProxy>()); + GErrorWrapper error(NULL); + boost::shared_ptr<GVariant> result(g_dbus_proxy_call_sync (proxy.get(), + "IsInstalled", + g_variant_new ("(ss)", + sPackagenameAscii.getStr(), + sInteractionAscii.getStr()), + G_DBUS_CALL_FLAGS_NONE, + -1, /* timeout */ + NULL, /* cancellable */ + error.getRef()),GVariantDeleter()); + if(result.get()) + o_isInstalled = g_variant_get_boolean(g_variant_get_child_value(result.get(),0)) ? sal_True : sal_False; + } +}} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/shell/source/sessioninstall/SyncDbusSessionHelper.hxx b/shell/source/sessioninstall/SyncDbusSessionHelper.hxx new file mode 100644 index 000000000000..4aab68c49851 --- /dev/null +++ b/shell/source/sessioninstall/SyncDbusSessionHelper.hxx @@ -0,0 +1,60 @@ +/* -*- 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/. + */ + +#ifndef SHELL_SESSIONINSTALL_SYNCDBUSSESSIONHELPER_HXX +#define SHELL_SESSIONINSTALL_SYNCDBUSSESSIONHELPER_HXX + +#include <com/sun/star/lang/XMultiServiceFactory.hpp> +#include <com/sun/star/uno/XComponentContext.hpp> +#include <org/freedesktop/PackageKit/XSyncDbusSessionHelper.hpp> +#include <cppuhelper/implbase1.hxx> + +namespace shell { namespace sessioninstall +{ + class SyncDbusSessionHelper : public ::cppu::WeakImplHelper1< ::org::freedesktop::PackageKit::XSyncDbusSessionHelper > + { + public: + SyncDbusSessionHelper(::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext> const&); + virtual ~SyncDbusSessionHelper() {} + // XModify Methods + virtual void SAL_CALL InstallPackageNames( ::sal_uInt32 /* xid */, const ::com::sun::star::uno::Sequence< ::rtl::OUString >& /* packages */, const ::rtl::OUString& /* interaction */ ) throw (::com::sun::star::uno::RuntimeException); + + virtual void SAL_CALL InstallPackageFiles( ::sal_uInt32 /* xid */, const ::com::sun::star::uno::Sequence< ::rtl::OUString >& /* files */, const ::rtl::OUString& /* interaction */ ) throw (::com::sun::star::uno::RuntimeException) + { throw ::com::sun::star::uno::RuntimeException(); } // not implemented + virtual void SAL_CALL InstallProvideFiles( ::sal_uInt32 /* xid */, const ::com::sun::star::uno::Sequence< ::rtl::OUString >& /* files */, const ::rtl::OUString& /* interaction */ ) throw (::com::sun::star::uno::RuntimeException) + { throw ::com::sun::star::uno::RuntimeException(); } // not implemented + virtual void SAL_CALL InstallCatalogs( ::sal_uInt32 /* xid */, const ::com::sun::star::uno::Sequence< ::rtl::OUString >& /* files */, const ::rtl::OUString& /* interaction */ ) throw (::com::sun::star::uno::RuntimeException) + { throw ::com::sun::star::uno::RuntimeException(); } // not implemented + virtual void SAL_CALL InstallMimeTypes( ::sal_uInt32 /* xid */, const ::com::sun::star::uno::Sequence< ::rtl::OUString >& /* mime_types */, const ::rtl::OUString& /* interaction */ ) throw (::com::sun::star::uno::RuntimeException) + { throw ::com::sun::star::uno::RuntimeException(); } // not implemented + virtual void SAL_CALL InstallFontconfigRessources( ::sal_uInt32 /* xid */, const ::com::sun::star::uno::Sequence< ::rtl::OUString >& /* resources */, const ::rtl::OUString& /* interaction */ ) throw (::com::sun::star::uno::RuntimeException) + { throw ::com::sun::star::uno::RuntimeException(); } // not implemented + virtual void SAL_CALL InstalliGStreamerRessources( ::sal_uInt32 /* xid */, const ::com::sun::star::uno::Sequence< ::rtl::OUString >& /* resources */, const ::rtl::OUString& /* interaction */ ) throw (::com::sun::star::uno::RuntimeException) + { throw ::com::sun::star::uno::RuntimeException(); } // not implemented + virtual void SAL_CALL InstallRessources( ::sal_uInt32 /* xid */, const ::com::sun::star::uno::Sequence< ::rtl::OUString >& /* types */, const ::com::sun::star::uno::Sequence< ::rtl::OUString >& /* resources */, const ::rtl::OUString& /* interaction */ ) throw (::com::sun::star::uno::RuntimeException) + { throw ::com::sun::star::uno::RuntimeException(); } // not implemented + virtual void SAL_CALL RemovePackageByFiles( SAL_UNUSED_PARAMETER ::sal_uInt32 /* xid */, const ::com::sun::star::uno::Sequence< ::rtl::OUString >& /* files */, const ::rtl::OUString& /* interaction */ ) throw (::com::sun::star::uno::RuntimeException) + { throw ::com::sun::star::uno::RuntimeException(); } // not implemented + virtual void SAL_CALL InstallPrinterDrivers( ::sal_uInt32 /* xid */, const ::com::sun::star::uno::Sequence< ::rtl::OUString >& /* files */, const ::rtl::OUString& /* interaction */ ) throw (::com::sun::star::uno::RuntimeException) + { throw ::com::sun::star::uno::RuntimeException(); } // not implemented + // XQuery Methods + virtual void SAL_CALL IsInstalled( const ::rtl::OUString& /* package_name */, const ::rtl::OUString& /* interaction */, ::sal_Bool& /* installed */ ) throw (::com::sun::star::uno::RuntimeException); + + virtual void SAL_CALL SearchFile( const ::rtl::OUString& /* file_name */, const ::rtl::OUString& /* interaction */, ::sal_Bool& /* installed */, ::rtl::OUString& /* package_name */ ) throw (::com::sun::star::uno::RuntimeException) + { throw ::com::sun::star::uno::RuntimeException(); } // not implemented + + private: + SyncDbusSessionHelper(); // never implemented + SyncDbusSessionHelper( const SyncDbusSessionHelper& ); // never implemented + SyncDbusSessionHelper& operator=( const SyncDbusSessionHelper& ); // never implemented + }; +}} + +#endif // SHELL_SESSIONINSTALL_SYNCDBUSSESSIONHELPER_HXX +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/shell/source/sessioninstall/losessioninstall.component b/shell/source/sessioninstall/losessioninstall.component new file mode 100644 index 000000000000..d01c357ef6cb --- /dev/null +++ b/shell/source/sessioninstall/losessioninstall.component @@ -0,0 +1,15 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + * 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/. + * +--> +<component loader="com.sun.star.loader.SharedLibrary" + xmlns="http://openoffice.org/2010/uno-components"> + <implementation name="org.libreoffice.comp.shell.sessioninstall.SyncDbusSessionHelper"> + <service name="org.freedesktop.PackageKit.SyncDbusSessionHelper"/> + </implementation> +</component> diff --git a/shell/source/sessioninstall/services.cxx b/shell/source/sessioninstall/services.cxx new file mode 100644 index 000000000000..caf332197a96 --- /dev/null +++ b/shell/source/sessioninstall/services.cxx @@ -0,0 +1,31 @@ +/* -*- 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/. + */ + +#include <SyncDbusSessionHelper.hxx> +#include <comphelper/servicedecl.hxx> +#include <uno/environment.h> + +namespace sdecl = ::comphelper::service_decl; + +sdecl::class_< ::shell::sessioninstall::SyncDbusSessionHelper> SyncDbusSessionHelperServiceImpl; + +const sdecl::ServiceDecl SyncDbusSessionHelperServiceDecl( + SyncDbusSessionHelperServiceImpl, + "org.libreoffice.comp.shell.sessioninstall.SyncDbusSessionHelper", + "org.freedesktop.PackageKit.SyncDbusSessionHelper"); + +COMPHELPER_SERVICEDECL_EXPORTS1(losessioninstall, SyncDbusSessionHelperServiceDecl); +extern "C" +{ + SAL_DLLPUBLIC_EXPORT void* SAL_CALL component_getFactory( sal_Char const* pImplName, ::com::sun::star::lang::XMultiServiceFactory* pServiceManager, ::com::sun::star::registry::XRegistryKey* pRegistryKey ) + { return losessioninstall_component_getFactory(pImplName, pServiceManager, pRegistryKey); } +} + + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/shell/source/unix/misc/senddoc.sh b/shell/source/unix/misc/senddoc.sh index 5a755d7042c5..0ff15943d6ce 100644 --- a/shell/source/unix/misc/senddoc.sh +++ b/shell/source/unix/misc/senddoc.sh @@ -369,62 +369,18 @@ case `basename "$MAILER" | sed 's/-.*$//'` in /usr/bin/open -a "${MAILER}" ${ATTACH} ;; - "") - - # DESKTOP_LAUNCH, see http://freedesktop.org/pipermail/xdg/2004-August/004489.html - if [ -n "$DESKTOP_LAUNCH" ]; then - while [ "$1" != "" ]; do - case $1 in - --to) - if [ "${TO}" != "" ]; then - MAILTO="${MAILTO:-}${MAILTO:+&}to=$2" - else - TO="$2" - fi - shift - ;; - --cc) - MAILTO="${MAILTO:-}${MAILTO:+&}cc="`echo "$2" | ${URI_ENCODE}` - shift - ;; - --bcc) - MAILTO="${MAILTO:-}${MAILTO:+&}bcc="`echo "$2" | ${URI_ENCODE}` - shift - ;; - --subject) - MAILTO="${MAILTO:-}${MAILTO:+&}subject="`echo "$2" | ${URI_ENCODE}` - shift - ;; - --body) - MAILTO="${MAILTO:-}${MAILTO:+&}body="`echo "$2" | ${URI_ENCODE}` - shift - ;; - --attach) - MAILTO="${MAILTO:-}${MAILTO:+&}attachment="`echo "$2" | ${URI_ENCODE}` - shift - ;; - *) - ;; - esac - shift; - done - - MAILTO="mailto:${TO}?${MAILTO}" - ${DESKTOP_LAUNCH} "${MAILTO}" & - else - echo "Could not determine a mail client to use." - exit 2 - fi - ;; - *) - # LO is configured to use something we do not recognize. + + # LO is configured to use something we do not recognize, or is not configured. # Try to be smart, and send the mail anyway, if we have the # possibility to do so. - if [ -n "$KDE_FULL_SESSION" -a -x /usr/bin/kde-open ] ; then + if [ -n "$DESKTOP_LAUNCH" ]; then + # http://lists.freedesktop.org/pipermail/xdg/2004-August/002873.html + MAILER=${DESKTOP_LAUNCH} + elif [ -n "$KDE_FULL_SESSION" -a -x /usr/bin/kde-open ] ; then MAILER=/usr/bin/kde-open - elif [ -x /usr/bin/gnome-open ] ; then + elif [ -n "$GNOME_DESKTOP_SESSION_ID" -a -x /usr/bin/gnome-open ] ; then MAILER=/usr/bin/gnome-open elif [ -x /usr/bin/xdg-open ] ; then MAILER=/usr/bin/xdg-open @@ -460,7 +416,7 @@ case `basename "$MAILER" | sed 's/-.*$//'` in shift ;; --attach) - MAILTO="${MAILTO:-}${MAILTO:+&}attach="`echo "file://$2" | ${URI_ENCODE}` + MAILTO="${MAILTO:-}${MAILTO:+&}attachment="`echo "file://$2" | ${URI_ENCODE}` shift ;; *) |