shell/source/unix/misc/senddoc.sh |  222 ++++++++++++++------------------------
 1 file changed, 85 insertions(+), 137 deletions(-)

New commits:
commit b88a3f1f16f1eba6f5aabeedc8b4d5df8d54958a
Author:     Mike Kaganski <[email protected]>
AuthorDate: Tue Dec 17 13:00:12 2024 +0100
Commit:     Mike Kaganski <[email protected]>
CommitDate: Tue Dec 17 14:38:09 2024 +0100

    Simplify and deduplicate a bit
    
    Change-Id: I3f7fac31e7f15562c39b453c67735d7386c86f7e
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/178658
    Tested-by: Jenkins
    Reviewed-by: Mike Kaganski <[email protected]>

diff --git a/shell/source/unix/misc/senddoc.sh 
b/shell/source/unix/misc/senddoc.sh
index 65345297e41c..350e53fd0bf4 100755
--- a/shell/source/unix/misc/senddoc.sh
+++ b/shell/source/unix/misc/senddoc.sh
@@ -29,28 +29,6 @@ fi
 # do not confuse the system mail clients with OOo and Java libraries
 unset LD_LIBRARY_PATH
 
-# checks for the original mozilla start script(s)
-# and restrict the "-remote" semantics to those.
-run_mozilla() {
-    # find mozilla script in PATH if necessary
-    if [ "$(basename "$1")" = "$1" ]; then
-        moz=$(command -v "$1")
-    else
-        moz=$1
-    fi
-
-    if file $FOPTS "$moz" | grep "script" > /dev/null && grep "[NM]PL" "$moz" 
> /dev/null; then
-        "$moz" -remote 'ping()' 2>/dev/null >/dev/null
-        if [ $? -eq 2 ]; then
-            "$1" -compose "$2" &
-        else
-            "$1" -remote "xfeDoCommand(composeMessage,$2)" &
-        fi
-    else
-        "$1" -compose "$2" &
-    fi
-}
-
 if [ "$1" = "--mailclient" ]; then
     shift
     MAILER=$1
@@ -58,9 +36,81 @@ if [ "$1" = "--mailclient" ]; then
 fi
 
 # autodetect mail client from executable name
-case $(basename "$MAILER" | sed 's/-.*$//') in
+
+MAILER_TYPE=$(basename "$MAILER")
+case $(printf %s "$MAILER_TYPE" | sed 's/-.*$//') in
 
     iceape | mozilla | netscape | seamonkey | icedove | thunderbird | 
betterbird)
+        # find mozilla script in PATH if necessary
+        if [ "$MAILER_TYPE" = "$MAILER" ]; then
+            moz=$(command -v "$MAILER")
+        else
+            moz=$MAILER
+        fi
+
+        MAILER_TYPE=mozilla
+        # checks for the original mozilla start script(s)
+        # and restrict the "-remote" semantics to those.
+        if file $FOPTS "$moz" | grep "script" > /dev/null && grep "[NM]PL" 
"$moz" > /dev/null; then
+            "$moz" -remote 'ping()' 2>/dev/null >/dev/null
+            if [ $? -ne 2 ]; then
+                MAILER_TYPE=mozilla-remote
+            fi
+        fi
+        ;;
+
+    kmail)
+        MAILER_TYPE=kmail
+        ;;
+
+    mutt)
+        MAILER_TYPE=mutt
+        ;;
+
+    evolution | gnome | groupwise | xdg) # NB. shortened from the dash on
+        MAILER_TYPE=generic-mailto
+        ;;
+
+    dtmail)
+        MAILER_TYPE=dtmail
+        ;;
+
+    sylpheed | claws)
+        MAILER_TYPE=sylpheed
+        ;;
+
+    Mail | Thunderbird | Betterbird | *.app )
+        MAILER_TYPE=apple
+        ;;
+
+    *)
+        # 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 [ -x /usr/bin/xdg-email ] ; then
+            MAILER=/usr/bin/xdg-email
+        elif [ -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/xdg-open ] ; then
+            MAILER=/usr/bin/xdg-open
+        elif command -v xdg-open >/dev/null 2>&1 ; then
+            MAILER=$(command -v xdg-open)
+        else
+            echo "Unsupported mail client: $MAILER"
+            exit 2
+        fi
+
+        MAILER_TYPE=generic-mailto
+        ;;
+esac
+
+case $MAILER_TYPE in
+
+    mozilla | mozilla-remote)
 
         while [ "$1" != "" ]; do
             case $1 in
@@ -113,7 +163,11 @@ case $(basename "$MAILER" | sed 's/-.*$//') in
             COMMAND=${COMMAND:+${COMMAND},}attachment=\'${ATTACH}\'
         fi
 
-        run_mozilla "$MAILER" "$COMMAND"
+        if [ "$MAILER_TYPE" = "mozilla" ]; then
+            "$MAILER" -compose "$COMMAND" &
+        else
+            "$MAILER" -remote "xfeDoCommand(composeMessage,$COMMAND)" &
+        fi
         ;;
 
     kmail)
@@ -215,7 +269,7 @@ case $(basename "$MAILER" | sed 's/-.*$//') in
         rm -f "$BODY"
         ;;
 
-    evolution | gnome | xdg) # NB. shortened from the dash on
+    generic-mailto)
 
         while [ "$1" != "" ]; do
             case $1 in
@@ -236,7 +290,7 @@ case $(basename "$MAILER" | sed 's/-.*$//') in
                     shift
                     ;;
                 --subject)
-                    MAILTO="${MAILTO:+${MAILTO}&}subject"=$(printf %s "$2" | 
"${URI_ENCODE}")
+                    MAILTO="${MAILTO:+${MAILTO}&}subject="$(printf %s "$2" | 
"${URI_ENCODE}")
                     shift
                     ;;
                 --body)
@@ -244,49 +298,9 @@ case $(basename "$MAILER" | sed 's/-.*$//') in
                     shift
                     ;;
                 --attach)
-                    MAILTO="${MAILTO:+${MAILTO}&}attach="$(printf file://%s 
"$2" | "${URI_ENCODE}")
-                    shift
-                    ;;
-                *)
-                    ;;
-            esac
-            shift;
-        done
-
-        MAILTO="mailto:${TO}?${MAILTO}";
-        ${MAILER} "${MAILTO}" &
-        ;;
-
-    groupwise)
-
-        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="$(printf %s "$2" | 
"${URI_ENCODE}")
-                    shift
-                    ;;
-                --bcc)
-                    MAILTO="${MAILTO:+${MAILTO}&}bcc="$(printf %s "$2" | 
"${URI_ENCODE}")
-                    shift
-                    ;;
-                --subject)
-                    MAILTO="${MAILTO:+${MAILTO}&}subject"=$(printf %s "$2" | 
"${URI_ENCODE}")
-                    shift
-                    ;;
-                --body)
-                    MAILTO="${MAILTO:+${MAILTO}&}body="$(printf %s "$2" | 
"${URI_ENCODE}")
-                    shift
-                    ;;
-                --attach)
-                    MAILTO="${MAILTO:+${MAILTO}&}attachment="$(printf 
file://%s "$2" | "${URI_ENCODE}")
+                    # Just add both attach and attachment "headers" - some 
apps use one, some the other
+                    ATTACH_URL=$(printf file://%s "$2" | "${URI_ENCODE}")
+                    
MAILTO="${MAILTO:+${MAILTO}&}attach=${ATTACH_URL}&attachment=${ATTACH_URL}"
                     shift
                     ;;
                 *)
@@ -320,7 +334,7 @@ case $(basename "$MAILER" | sed 's/-.*$//') in
         ${MAILER} ${TO:+-T ${TO}} ${ATTACH:+-a "${ATTACH}"}
         ;;
 
-    sylpheed | claws)
+    sylpheed)
 
         while [ "$1" != "" ]; do
             case $1 in
@@ -341,7 +355,7 @@ case $(basename "$MAILER" | sed 's/-.*$//') in
          ${MAILER} ${TO:+--compose ${TO}} ${ATTACH:+--attach ${ATTACH}}
         ;;
 
-    Mail | Thunderbird | Betterbird | *.app )
+    apple)
 
         while [ "$1" != "" ]; do
             case $1 in
@@ -357,70 +371,4 @@ case $(basename "$MAILER" | sed 's/-.*$//') in
         done
         /usr/bin/open -a "${MAILER}" ${ATTACH}
         ;;
-
-    *)
-
-        # 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 [ -x /usr/bin/xdg-email ] ; then
-            MAILER=/usr/bin/xdg-email
-        elif [ -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/xdg-open ] ; then
-            MAILER=/usr/bin/xdg-open
-        elif command -v xdg-open >/dev/null 2>&1 ; then
-            MAILER=$(command -v xdg-open)
-        else
-            echo "Unsupported mail client: $(basename $MAILER | sed 
's/-.*^//')"
-            exit 2
-        fi
-
-        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="$(printf %s "$2" | 
"${URI_ENCODE}")
-                    shift
-                    ;;
-                --bcc)
-                    MAILTO="${MAILTO:+${MAILTO}&}bcc="$(printf %s "$2" | 
"${URI_ENCODE}")
-                    shift
-                    ;;
-                --subject)
-                    MAILTO="${MAILTO:+${MAILTO}&}subject"=$(printf %s "$2" | 
"${URI_ENCODE}")
-                    shift
-                    ;;
-                --body)
-                    MAILTO="${MAILTO:+${MAILTO}&}body="$(printf %s "$2" | 
"${URI_ENCODE}")
-                    shift
-                    ;;
-                --attach)
-                    if [ "$MAILER" = "/usr/bin/xdg-email" ]; then
-                        MAILTO="${MAILTO:+${MAILTO}&}attach="$(printf 
file://%s "$2" | "${URI_ENCODE}")
-                    else
-                        MAILTO="${MAILTO:+${MAILTO}&}attachment="$(printf 
file://%s "$2" | "${URI_ENCODE}")
-                    fi
-                    shift
-                    ;;
-                *)
-                    ;;
-            esac
-            shift;
-        done
-
-        MAILTO="mailto:${TO}?${MAILTO}";
-        ${MAILER} "${MAILTO}" &
-        ;;
 esac

Reply via email to