#!/bin/sh
set -eu
+ME="${0##*/}"
+
+about()
+{
+ echo "$ME -- resubmit messages to the mail filter"
+ echo "Copyright © martin f. krafft <madduck@madduck.net>"
+ echo "Released under the terms of the Artistic Licence 2.0"
+}
+
+usage()
+{
+ echo "Usage: $ME [options] <Maildir> [<Maildir> ...]"
+ echo
+ echo "Valid options are:"
+ cat <<-_eof | column -s\& -t
+ -V|--version & show version information.
+ -h|--help & show this output.
+ -l|--list & process the argument list (even if empty), never stdin
+ _eof
+}
+
+SHORTOPTS=Vhl
+LONGOPTS=version,help,list
+
+list=0
+files=
+
+for opt in $(getopt -n $ME -o $SHORTOPTS -l $LONGOPTS -u -- "$@"); do
+ case "$opt" in
+ -V|--version) about; exit 0;;
+ -h|--help) about; echo; usage; exit 0;;
+ -l|--list) list=1;;
+ --) :;;
+ *)
+ if [ -f "$opt" ] && [ -r "$opt" ]; then
+ files="$files $opt"
+ else
+ echo "E: unknown argument: $opt" >&2
+ exit 1
+ fi
+ ;;
+ esac
+done
+
PROCMAIL=$HOME/.etc/mailfilter/procmail/procmailrc
-FORMAIL="/usr/bin/formail -I'X-Resubmitted: $(date -R)'"
+# execute the date -R only during the eval, not immediately
+FILTER='/usr/bin/formail -I"X-Resubmitted: $(date -R)"'
-if [ -z "${1:-}" ]; then
- eval $FORMAIL | exec $PROCMAIL
+if [ -z "${1:-}" ] && [ $list -eq 0 ]; then
+ eval $FILTER | exec $PROCMAIL
else
- if [ ! -f "$1" ]; then
- echo "E: no such file: $1" >&2
- exit 1
- fi
- eval $FORMAIL < "$1" | $PROCMAIL && rm -f "$1"
+ for f in $files; do
+ eval $FILTER < "$f" | $PROCMAIL && rm -f "$f"
+ done
fi
exit 0