Index: third_party/xdg-utils/scripts/xdg-email.in |
=================================================================== |
--- third_party/xdg-utils/scripts/xdg-email.in (revision 57942) |
+++ third_party/xdg-utils/scripts/xdg-email.in (working copy) |
@@ -1,4 +1,4 @@ |
-#!/bin/bash |
+#!/bin/sh |
#--------------------------------------------- |
# xdg-email |
# |
@@ -28,14 +28,71 @@ |
#@xdg-utils-common@ |
+run_thunderbird() |
+{ |
+ local THUNDERBIRD MAILTO NEWMAILTO TO CC BCC SUBJECT BODY ATTACH |
+ THUNDERBIRD="$1" |
+ MAILTO=$(echo "$2" | sed 's/^mailto://') |
+ echo "$MAILTO" | grep -qs "^?" |
+ if [ "$?" = "0" ] ; then |
+ MAILTO=$(echo "$MAILTO" | sed 's/^?//') |
+ else |
+ MAILTO=$(echo "$MAILTO" | sed 's/^/to=/' | sed 's/?/\&/') |
+ fi |
+ |
+ MAILTO=$(echo "$MAILTO" | sed 's/&/\n/g') |
+ TO=$(echo "$MAILTO" | grep '^to=' | sed 's/^to=//' | awk '{ printf "%s,",$0 }') |
+ CC=$(echo "$MAILTO" | grep '^cc=' | sed 's/^cc=//' | awk '{ printf "%s,",$0 }') |
+ BCC=$(echo "$MAILTO" | grep '^bcc=' | sed 's/^bcc=//' | awk '{ printf "%s,",$0 }') |
+ SUBJECT=$(echo "$MAILTO" | grep '^subject=' | tail -n 1) |
+ BODY=$(echo "$MAILTO" | grep '^body=' | tail -n 1) |
+ ATTACH=$(echo "$MAILTO" | sed 's/^attach=/\n\nfile:\/\//g' | awk '/^file:/ { printf "%s,",$0 }') |
+ |
+ if [ -z "$TO" ] ; then |
+ NEWMAILTO= |
+ else |
+ NEWMAILTO="to='$TO'" |
+ fi |
+ if [ -n "$CC" ] ; then |
+ NEWMAILTO="${NEWMAILTO},cc='$CC'" |
+ fi |
+ if [ -n "$BCC" ] ; then |
+ NEWMAILTO="${NEWMAILTO},bcc='$BCC'" |
+ fi |
+ if [ -n "$SUBJECT" ] ; then |
+ NEWMAILTO="${NEWMAILTO},$SUBJECT" |
+ fi |
+ if [ -n "$BODY" ] ; then |
+ NEWMAILTO="${NEWMAILTO},$BODY" |
+ fi |
+ |
+ if [ -n "$ATTACH" ] ; then |
+ NEWMAILTO="${NEWMAILTO},attachment='${ATTACH}'" |
+ fi |
+ |
+ NEWMAILTO=$(echo "$NEWMAILTO" | sed 's/^,//') |
+ DEBUG 1 "Running $THUNDERBIRD -compose \"$NEWMAILTO\"" |
+ "$THUNDERBIRD" -compose "$NEWMAILTO" |
+ if [ $? -eq 0 ]; then |
+ exit_success |
+ else |
+ exit_failure_operation_failed |
+ fi |
+} |
+ |
open_kde() |
{ |
local client |
+ client=`kreadconfig --file emaildefaults --group PROFILE_Default --key EmailClient | cut -d ' ' -f 1` |
+ echo $client | grep thunderbird > /dev/null 2>&1 |
+ if [ $? -eq 0 ] ; then |
+ run_thunderbird "$client" "$1" |
+ fi |
+ |
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 |
+ [ -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" |
@@ -62,9 +119,21 @@ |
open_gnome() |
{ |
- DEBUG 1 "Running gnome-open \"$1\"" |
- gnome-open "$1" |
+ local client |
+ client=`gconftool-2 --get /desktop/gnome/url-handlers/mailto/command | cut -d ' ' -f 1` || "" |
+ echo $client | grep thunderbird > /dev/null 2>&1 |
+ if [ $? -eq 0 ] ; then |
+ run_thunderbird "$client" "$1" |
+ fi |
+ if gvfs-open --help 2>/dev/null 1>&2; then |
+ DEBUG 1 "Running gvfs-open \"$1\"" |
+ gvfs-open "$1" |
+ else |
+ DEBUG 1 "Running gnome-open \"$1\"" |
+ gnome-open "$1" |
+ fi |
+ |
if [ $? -eq 0 ]; then |
exit_success |
else |
@@ -91,8 +160,9 @@ |
for browser in $BROWSER; do |
if [ x"$browser" != x"" ]; then |
- IFS=' ' |
- browser_with_arg=${browser//'%s'/"$1"} |
+ browser_with_arg=`printf "$browser" "$1" 2>/dev/null` |
+ if [ $? -ne 0 ]; then browser_with_arg=$browser; |
+ fi |
if [ x"$browser_with_arg" = x"$browser" ]; then "$browser" "$1"; |
else $browser_with_arg; |
@@ -122,7 +192,7 @@ |
c = substr ($0, i, 1) |
if ( ord [c] > 127 ) { |
e = e "%" sprintf("%02X", ord [c]) |
- } else if ( c ~ /[@a-zA-Z0-9.-]/ ) { |
+ } else if ( c ~ /[@a-zA-Z0-9.-\\/]/ ) { |
e = e c |
} else { |
e = e "%" sprintf("%02X", ord [c]) |
@@ -267,13 +337,17 @@ |
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 |
+# if BROWSER variable is not set, check some well known browsers instead |
+if [ x"$BROWSER" = x"" ]; then |
+ BROWSER=links2:links:lynx:w3m |
+ if [ -n "$DISPLAY" ]; then |
+ BROWSER=firefox:mozilla:epiphany:konqueror:chromium-browser:google-chrome:$BROWSER |
+ fi |
+fi |
+ |
case "$DE" in |
kde) |
open_kde "${mailto}" |