summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Kaganski <mike.kaganski@collabora.com>2024-12-17 13:00:12 +0100
committerMike Kaganski <mike.kaganski@collabora.com>2024-12-17 14:38:09 +0100
commitb88a3f1f16f1eba6f5aabeedc8b4d5df8d54958a (patch)
tree45e7c078cb37e2b3933b7fa3f4bd0d1312dd4e6c
parent3504cb5364c77849b63c1228a164e537380ea62b (diff)
Simplify and deduplicate a bit
Change-Id: I3f7fac31e7f15562c39b453c67735d7386c86f7e Reviewed-on: https://gerrit.libreoffice.org/c/core/+/178658 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
-rwxr-xr-xshell/source/unix/misc/senddoc.sh222
1 files changed, 85 insertions, 137 deletions
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