| Index: third_party/xdg-utils/scripts/xdg-email.in
|
| ===================================================================
|
| --- third_party/xdg-utils/scripts/xdg-email.in (revision 0)
|
| +++ third_party/xdg-utils/scripts/xdg-email.in (revision 0)
|
| @@ -0,0 +1,292 @@
|
| +#!/bin/bash
|
| +#---------------------------------------------
|
| +# xdg-email
|
| +#
|
| +# Utility script to open the users favorite email program, using the
|
| +# RFC 2368 mailto: URI spec
|
| +#
|
| +# Refer to the usage() function below for usage.
|
| +#
|
| +# Copyright 2006, Kevin Krammer <kevin.krammer@gmx.at>
|
| +# Copyright 2006, Jeremy White <jwhite@codeweavers.com>
|
| +#
|
| +# LICENSE:
|
| +#
|
| +#---------------------------------------------
|
| +
|
| +manualpage()
|
| +{
|
| +cat << _MANUALPAGE
|
| +_MANUALPAGE
|
| +}
|
| +
|
| +usage()
|
| +{
|
| +cat << _USAGE
|
| +_USAGE
|
| +}
|
| +
|
| +#@xdg-utils-common@
|
| +
|
| +open_kde()
|
| +{
|
| + local client
|
| + if [ -f /etc/SuSE-release ] ; then
|
| + # Workaround for SUSE 10.0
|
| + client=`kreadconfig --file emaildefaults --group PROFILE_Default --key EmailClient| cut -d ' ' -f 1`
|
| + [ -z $client ] && client="kmail"
|
| + if ! which $client > /dev/null 2> /dev/null; then
|
| + DEBUG 3 "KDE has $client configured as email client which isn't installed"
|
| + if which gnome-open > /dev/null 2> /dev/null && which evolution > /dev/null 2> /dev/null; then
|
| + DEBUG 3 "Try gnome-open instead"
|
| + open_gnome "$1"
|
| + fi
|
| + fi
|
| + fi
|
| + DEBUG 1 "Running kmailservice \"$1\""
|
| + # KDE uses locale's encoding when decoding the URI, so set it to UTF-8
|
| + LC_ALL=C.UTF-8 kmailservice "$1"
|
| + kfmclient_fix_exit_code $?
|
| +
|
| + if [ $? -eq 0 ]; then
|
| + exit_success
|
| + else
|
| + exit_failure_operation_failed
|
| + fi
|
| +}
|
| +
|
| +open_gnome()
|
| +{
|
| + DEBUG 1 "Running gnome-open \"$1\""
|
| + gnome-open "$1"
|
| +
|
| + if [ $? -eq 0 ]; then
|
| + exit_success
|
| + else
|
| + exit_failure_operation_failed
|
| + fi
|
| +}
|
| +
|
| +
|
| +open_xfce()
|
| +{
|
| + DEBUG 1 "Running exo-open \"$1\""
|
| + exo-open "$1"
|
| +
|
| + if [ $? -eq 0 ]; then
|
| + exit_success
|
| + else
|
| + exit_failure_operation_failed
|
| + fi
|
| +}
|
| +
|
| +open_generic()
|
| +{
|
| + IFS=":"
|
| + for browser in $BROWSER; do
|
| + if [ x"$browser" != x"" ]; then
|
| +
|
| + IFS=' '
|
| + browser_with_arg=${browser//'%s'/"$1"}
|
| +
|
| + if [ x"$browser_with_arg" = x"$browser" ]; then "$browser" "$1";
|
| + else $browser_with_arg;
|
| + fi
|
| +
|
| + if [ $? -eq 0 ]; then exit_success;
|
| + fi
|
| + fi
|
| + done
|
| +
|
| + exit_failure_operation_impossible "no method available for opening '$1'"
|
| +}
|
| +
|
| +url_encode()
|
| +{
|
| +result=$(echo "$1" | $utf8 | awk '
|
| + BEGIN {
|
| + for ( i=1; i<=255; ++i ) ord [ sprintf ("%c", i) "" ] = i + 0
|
| + e = ""
|
| + linenr = 1
|
| + }
|
| + {
|
| + if ( linenr++ != 1 ) {
|
| + e = e "%0D%0A"
|
| + }
|
| + for ( i=1; i<=length ($0); ++i ) {
|
| + c = substr ($0, i, 1)
|
| + if ( ord [c] > 127 ) {
|
| + e = e "%" sprintf("%02X", ord [c])
|
| + } else if ( c ~ /[@a-zA-Z0-9.-]/ ) {
|
| + e = e c
|
| + } else {
|
| + e = e "%" sprintf("%02X", ord [c])
|
| + }
|
| + }
|
| + }
|
| + END {
|
| + print e
|
| + }
|
| +')
|
| +}
|
| +
|
| +options=
|
| +mailto=
|
| +utf8="iconv -t utf8"
|
| +while [ $# -gt 0 ] ; do
|
| + parm="$1"
|
| + shift
|
| +
|
| + case "$parm" in
|
| + --utf8)
|
| + utf8="cat"
|
| + ;;
|
| +
|
| + --to)
|
| + if [ -z "$1" ] ; then
|
| + exit_failure_syntax "email address argument missing for --to"
|
| + fi
|
| + url_encode "$1"
|
| + options="${options}to=${result}&"
|
| + shift
|
| + ;;
|
| +
|
| + --cc)
|
| + if [ -z "$1" ] ; then
|
| + exit_failure_syntax "email address argument missing for --cc"
|
| + fi
|
| + url_encode "$1"
|
| + options="${options}cc=${result}&"
|
| + shift
|
| + ;;
|
| +
|
| + --bcc)
|
| + if [ -z "$1" ] ; then
|
| + exit_failure_syntax "email address argument missing for --bcc"
|
| + fi
|
| + url_encode "$1"
|
| + options="${options}bcc=${result}&"
|
| + shift
|
| + ;;
|
| +
|
| + --subject)
|
| + if [ -z "$1" ] ; then
|
| + exit_failure_syntax "text argument missing for --subject option"
|
| + fi
|
| + url_encode "$1"
|
| + options="${options}subject=${result}&"
|
| + shift
|
| + ;;
|
| +
|
| + --body)
|
| + if [ -z "$1" ] ; then
|
| + exit_failure_syntax "text argument missing for --body option"
|
| + fi
|
| + url_encode "$1"
|
| + options="${options}body=${result}&"
|
| + shift
|
| + ;;
|
| +
|
| + --attach)
|
| + if [ -z "$1" ] ; then
|
| + exit_failure_syntax "file argument missing for --attach option"
|
| + fi
|
| + check_input_file "$1"
|
| + file=`readlink -f "$1"` # Normalize path
|
| + if [ -z "$file" -o ! -f "$file" ] ; then
|
| + exit_failure_file_missing "file '$1' does not exist"
|
| + fi
|
| +
|
| + url_encode "$file"
|
| + options="${options}attach=${result}&"
|
| + shift
|
| + ;;
|
| +
|
| + -*)
|
| + exit_failure_syntax "unexpected option '$parm'"
|
| + ;;
|
| +
|
| + mailto:*)
|
| + mailto="$parm"
|
| + ;;
|
| +
|
| + *@*)
|
| + url_encode "$parm"
|
| + if [ -z "${mailto}" ] ; then
|
| + mailto="mailto:"${result}"?"
|
| + else
|
| + options="${options}to=${result}&"
|
| + fi
|
| + ;;
|
| +
|
| + *)
|
| + exit_failure_syntax "unexpected argument '$parm'"
|
| + ;;
|
| + esac
|
| +done
|
| +
|
| +if [ -z "${mailto}" ] ; then
|
| + # TO address is optional
|
| + mailto="mailto:?"
|
| +fi
|
| +
|
| +case $mailto in
|
| + *\?)
|
| + mailto="${mailto}${options}"
|
| + ;;
|
| +
|
| + *\?*)
|
| + mailto="${mailto}&${options}"
|
| + ;;
|
| +
|
| + *)
|
| + mailto="${mailto}?${options}"
|
| + ;;
|
| +esac
|
| +
|
| +# Strip trailing ? and &
|
| +mailto=`echo "${mailto}"| sed 's/[?&]$//'`
|
| +
|
| +# Shouldn't happen
|
| +[ x"${mailto}" != x"" ] || exit_failure_syntax
|
| +
|
| +if which @NAME@-hook.sh > /dev/null 2> /dev/null; then
|
| + @NAME@-hook.sh "${mailto}"
|
| + if [ $? -eq 0 ]; then
|
| + exit_success
|
| + else
|
| + exit_failure_operation_failed
|
| + fi
|
| +fi
|
| +
|
| +detectDE
|
| +
|
| +if [ x"$DE" = x"" ]; then
|
| + # if BROWSER variable is not set, check some well known browsers instead
|
| + if [ x"$BROWSER" = x"" ]; then
|
| + BROWSER=firefox:mozilla:netscape
|
| + fi
|
| + DE=generic
|
| +fi
|
| +
|
| +case "$DE" in
|
| + kde)
|
| + open_kde "${mailto}"
|
| + ;;
|
| +
|
| + gnome)
|
| + open_gnome "${mailto}"
|
| + ;;
|
| +
|
| + xfce)
|
| + open_xfce "${mailto}"
|
| + ;;
|
| +
|
| + generic)
|
| + open_generic "${mailto}"
|
| + ;;
|
| +
|
| + *)
|
| + exit_failure_operation_impossible "no method available for opening '${mailto}'"
|
| + ;;
|
| +esac
|
|
|