diff options
author | Mike Kaganski <mike.kaganski@collabora.com> | 2024-12-17 13:00:12 +0100 |
---|---|---|
committer | Mike Kaganski <mike.kaganski@collabora.com> | 2024-12-17 14:38:09 +0100 |
commit | b88a3f1f16f1eba6f5aabeedc8b4d5df8d54958a (patch) | |
tree | 45e7c078cb37e2b3933b7fa3f4bd0d1312dd4e6c | |
parent | 3504cb5364c77849b63c1228a164e537380ea62b (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-x | shell/source/unix/misc/senddoc.sh | 222 |
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 |