--- /dev/null
+#!/bin/sh
+#
+# edit-header - helper script to append/replace/remove headers with mutt
+#
+# Based on an idea by David Champion <dgc at uchicago.edu>
+#
+# Copyright © 2008 martin f. krafft <madduck@madduck.net>
+# Released under the terms of the Artistic Licence 2.0
+#
+set -euvx
+
+if [ ! -x "$(command -v formail)" ]; then
+ echo E: formail not installed. >&2
+ exit 1
+fi
+
+header="${1:-}"
+if [ -z "$header" ]; then
+ echo "E: no header specified" >&2
+ exit 1
+fi
+
+get_header_contents()
+{
+ local contents
+ printf "Enter ${1:-header} contents: " >/dev/tty
+ read contents </dev/tty
+ echo "$contents"
+}
+
+script="${0%/*}/${2:-}"
+if [ -f "$script" ] && [ -x "$script" ]; then
+ contents_source="$script"
+ shift
+else
+ contents_source=get_header_contents
+fi
+
+editor=
+case "$0" in
+ *append-header|*supersede-header|*replace-header)
+ contents="${2:-}"
+ [ -n "$contents" ] || contents="$(eval $contents_source $header)"
+ case "$0" in
+ *append-header) flag=-A;;
+ *supersede-header) flag=-i;;
+ *replace-header) flag=-I;;
+ esac
+ editor="${0%/*}/filter-proxy formail $flag \'$header: $contents\'"
+ ;;
+
+ *remove-header)
+ editor="${0%/*}/filter-proxy formail -I \'$header:\'"
+ ;;
+
+ *)
+ echo "E: unknown invocation: ${0##*/}" >&2
+ exit 1
+ ;;
+
+esac
+
+echo "set my_editor=\"\$editor\'"
+echo "set editor=\"$editor\""
+echo "push <tag-prefix><edit>"
+# we need to push this so it happens after the editing
+echo "push :set editor=\"\$my_editor\"<enter>"
--- /dev/null
+#!/bin/sh
+#
+# filter-proxy - enable filters to work on real files (using tmpfiles)
+#
+# Copyright © 2008 martin f. krafft <madduck@madduck.net>
+# Released under the terms of the Artistic Licence 2.0
+#
+set -euvx
+
+cmd=
+file=
+while [ -n "${1:-}" ]; do
+ if [ -z "${2:-}" ]; then
+ file="$1"
+ else
+ case "$1" in
+ *' '*) cmd="$cmd '$1'";;
+ *) cmd="$cmd $1";;
+ esac
+ fi
+ shift
+done
+
+TMPFILE="$(tempfile -p proxy)"
+trap "rm -f $TMPFILE" 0 1 2 3 4 5 6 7 8 10 11 12 13 14 15
+
+eval $cmd <"$file" >$TMPFILE
+cat $TMPFILE >"$file"
+
+rm -f $TMPFILE
+trap - 0 1 2 3 4 5 6 7 8 10 11 12 13 14 15
--- /dev/null
+#!/bin/sh
+#
+# get-timestamp - helper script to obtain a timestamp from the user
+#
+# Copyright © 2008 martin f. krafft <madduck@madduck.net>
+# Released under the terms of the Artistic Licence 2.0
+#
+set -eu
+
+printf 'When should I tickle you about this message? ' >/dev/tty
+read timespec </dev/tty
+
+case "$timespec" in
+ @[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]|*' '*)
+ date="$timespec";;
+ *[0-9]y) date="now + ${timespec%y} years 00:00";;
+ *[0-9]m) date="now + ${timespec%m} months 00:00";;
+ *[0-9]w) date="now + ${timespec%w} weeks 00:00";;
+ *[0-9]d) date="now + ${timespec%d} days 00:00";;
+ *[0-9]h) date="now + ${timespec%h} hours";;
+ *[!0-9]*)
+ echo "E: invalid timespec: $timespec" >&2
+ exit 1
+ ;;
+ *) date="now + $timespec days 00:00";;
+esac
+
+exec date +'%s (%c)' -d "$date"