]> git.llucax.com Git - software/mutt-debian.git/commitdiff
added the firefox mailto handler (Closes: 406850)
authorAntonio Radici <antonio@dyne.org>
Wed, 17 Jun 2009 19:23:21 +0000 (20:23 +0100)
committerAntonio Radici <antonio@dyne.org>
Wed, 17 Jun 2009 19:23:21 +0000 (20:23 +0100)
debian/changelog
debian/extra/lib/mailto-mutt [new file with mode: 0644]
debian/mutt.install

index 4b6a9a6af5503b2f2be39cfe228666e492858a7b..6cbae153ad1a1bc594728408b3ada27ffcaa2e02 100644 (file)
@@ -7,6 +7,8 @@ mutt (1.5.20-2) unstable; urgency=low
   * debian/control:
     + added default-mta to Recommends, removed exim4 (Closes: 533442)
     + added elinks-lite to B-D, removed links (Closes: 533445)
+  * debian/mutt.install and debian/extra/lib/mailto-mutt: 
+    + added the firefox mailto handler (Closes: 406850)
 
  -- Antonio Radici <antonio@dyne.org>  Tue, 16 Jun 2009 23:20:32 +0100
 
diff --git a/debian/extra/lib/mailto-mutt b/debian/extra/lib/mailto-mutt
new file mode 100644 (file)
index 0000000..82f3067
--- /dev/null
@@ -0,0 +1,117 @@
+#!/bin/sh
+#
+# mailto-mutt -- wrapper to be able to use mutt as mailto handler from firefox
+#
+# To use, surf to Firefox's about:config page and configure the following
+# three values:
+#   network.protocol-handler.external.mailto boolean true
+#   network.protocol-handler.app.mailto string '/path/to/handler'
+#   network.protocol-handler.warn-external.mailto boolean false
+#
+# Copyright © martin f. krafft <madduck@madduck.net>
+# Released under the terms of the Artistic Licence 2.0
+# 
+# Revision: $Id: mailto-mutt 498 2007-05-12 12:02:10Z madduck $
+# 
+set -eu
+
+case "${1:-}" in
+  -d) debug=1; shift;;
+  '') exit 0;;
+  *) :;;
+esac
+
+url_unescape()
+{
+  perl -e 'use URI::Escape; while(<>) { print uri_unescape($_); }'
+}
+
+MAILTO="${@%%\?*}"
+ARGS="${@#*\?}"
+[ "$ARGS" = "$MAILTO" ] && unset ARGS
+MAILTO="$(echo "${MAILTO#mailto:}" | url_unescape)"
+
+subject=
+cc=
+bcc=
+body=
+mutt_commands=
+
+IFS_store="$IFS"
+IFS='&'
+
+for arg in ${ARGS:-}; do
+  value="$(echo "${arg#*=}" | url_unescape | sed -e "s,',\',")"
+
+  case "${arg%%=*}" in
+    subject|Subject|SUBJECT) subject="$value";;
+    cc|Cc|CC) cc="$value";;
+    bcc|Bcc|BCC) bcc="$value";;
+    body|Body|BODY) body="$value";;
+    *)
+      mutt_commands="${mutt_commands:+${mutt_commands}
+        }-e\"my_hdr ${arg%%=*}: $value\""
+      ;;
+  esac
+done
+
+IFS="$IFS_store"
+
+break_at_commas()
+{
+  local atom
+  for i; do
+    atom="${atom:+$atom }$i"
+    case "${atom:-}" in
+      *,) echo "${atom%,}"; unset atom;;
+    esac
+  done
+  [ -n "${atom:-}" ] && echo "${atom%,}"
+}
+
+get_addr_args()
+{
+  local type
+  case "$1" in
+    -*) type="$1"; shift;;
+    *) unset type;;
+  esac
+
+  break_at_commas "$@" | while read addr; do
+    echo -n "${type:-}\"$addr\" "
+  done
+}
+
+if [ -n "$mutt_commands" ]; then
+  mutt_args="${mutt_args:+$mutt_args }$mutt_commands"
+fi
+
+if [ -n "$subject" ]; then
+  mutt_args="${mutt_args:+$mutt_args }-s\"$subject\""
+fi
+
+mutt_args="${mutt_args:+$mutt_args }$(get_addr_args -c $cc)"
+mutt_args="${mutt_args:+$mutt_args }$(get_addr_args -b $bcc)"
+mutt_args="${mutt_args:+$mutt_args }$(get_addr_args $MAILTO)"
+
+run()
+{
+  if [ ${debug:-0} -eq 1 ]; then
+    echo "$@"
+  else
+    eval "$@"
+  fi
+}
+
+if [ -n "$body" ]; then
+  TMPFILE="$(tempfile -p mailto -d /tmp)"
+  echo "$body" > $TMPFILE
+  trap "rm -f $TMPFILE" 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
+  run x-terminal-emulator -e mutt${mutt_args:+ $mutt_args} -i $TMPFILE
+  ret=$?
+  rm -f $TMPFILE
+  trap - 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
+  exit $ret
+else
+  run exec x-terminal-emulator -e mutt${mutt_args:+ $mutt_args}
+fi
index 9f1c8e377b0d3b4478b0575d37ba54cab2eeaeb6..6986c8179efb1ce3167894188a9e662ebae12d2d 100644 (file)
@@ -8,6 +8,7 @@ debian/tmp/usr/bin/pgpring              usr/lib/mutt
 debian/tmp/usr/bin/pgpewrap            usr/lib/mutt
 debian/extra/lib/source-muttrc.d       usr/lib/mutt
 debian/extra/lib/debian-ldap-query     usr/lib/mutt
+debian/extra/lib/mailto-mutt            usr/lib/mutt
 
 debian/tmp/Muttrc                      etc
 debian/tmp/gpg.rc                      etc/Muttrc.d