X-Git-Url: https://git.madduck.net/etc/mailfilter.git/blobdiff_plain/eddb5ee317cb1d447bc5d9fa74de6287f2838a59..1b246c55c3879b9b16e39ae30d768e08fc0fe214:/bin/resubmit diff --git a/bin/resubmit b/bin/resubmit index 01990b2..6227584 100755 --- a/bin/resubmit +++ b/bin/resubmit @@ -1,10 +1,68 @@ #!/bin/sh set -eu +ME="${0##*/}" + +about() +{ + echo "$ME -- resubmit messages to the mail filter" + echo "Copyright © martin f. krafft " + echo "Released under the terms of the Artistic Licence 2.0" +} + +usage() +{ + echo "Usage: $ME [options] [ ...]" + 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 + -r|--deliver-read & mark messages read on delivery + _eof +} + +SHORTOPTS=Vhlr +LONGOPTS=version,help,list,deliver-read + +list=0 +mark_read=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;; + -r|--deliver-read) mark_read=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 -if [ -z "$1" ]; then - cat | exec $PROCMAIL +if [ "$mark_read" -eq 1 ]; then + PROCMAIL="$PROCMAIL DELIVER_READ=1" +fi + +# execute the date -R only during the eval, not immediately +FILTER='/usr/bin/formail -I"X-Resubmitted: $(date -R)"' + +if [ -z "${files:-}" ] && [ $list -eq 0 ]; then + eval $FILTER | exec $PROCMAIL else - exec $PROCMAIL < "$1" + for f in $files; do + eval $FILTER < "$f" | $PROCMAIL && rm -f "$f" + done fi + +exit 0