]>
git.madduck.net Git - etc/mailfilter.git/blobdiff - bin/retrain
madduck's git repository
Every one of the projects in this repository is available at the canonical
URL git://git.madduck.net/madduck/pub/<projectpath> — see
each project's metadata for the exact URL.
All patches and comments are welcome. Please squash your changes to logical
commits before using git-format-patch and git-send-email to
patches@ git. madduck. net .
If you'd read over the Git project's submission guidelines and adhered to them,
I'd be especially grateful.
SSH access, as well as push access can be individually
arranged .
If you use my repositories frequently, consider adding the following
snippet to ~/.gitconfig and using the third clone URL listed for each
project:
[url "git://git.madduck.net/madduck/"]
insteadOf = madduck:
-NICE='nice -20'
-PROCMAIL="$HOME/.etc/mailfilter/procmail/procmailrc"
+NICE='/usr/bin/nice -20'
+NICE=''
+
+RESUBMIT="$NICE $HOME/.etc/mailfilter/bin/resubmit"
PAUSETIME=10
HAM=0
SPAM=0
PAUSETIME=10
HAM=0
SPAM=0
for i in "$@"; do
case "$i" in
--ham) HAM=1;;
--spam) SPAM=1;;
*)
for i in "$@"; do
case "$i" in
--ham) HAM=1;;
--spam) SPAM=1;;
*)
- if [ -n "$MAILDIR" ]; then
- echo "E: Maildir already specified: $i" >&2
- exit 1
+ if [ -f "$i" ] && [ -r "$i" ]; then
+ files="$files $i"
elif [ -d "$i"/cur ] && [ -d "$i"/new ] && [ -d "$i"/tmp ]; then
elif [ -d "$i"/cur ] && [ -d "$i"/new ] && [ -d "$i"/tmp ]; then
+ if [ -n "$maildir" ]; then
+ echo "E: Maildir already specified: $i" >&2
+ exit 1
+ fi
+ maildir="$i"
else
echo "E: unknown argument: $i" >&2
exit 255
else
echo "E: unknown argument: $i" >&2
exit 255
-LOCKFILE="$MAILDIR/.retrain.lock"
-trap "rm -f $LOCKFILE" 1 2 3 4 5 6 7 8 10 11 12 13 14 15
-if ! lockfile -0 -r0 -l 3600 "$LOCKFILE" 2>/dev/null; then
- echo "E: another retrain process is already running over that Maildir." >&2
- exit 1
+if [ -n "$maildir" ]; then
+ ME="${0##*/}"
+ LOCKFILE="$maildir/.$ME.lock"
+ trap "rm -f $LOCKFILE" 1 2 3 4 5 6 7 8 10 11 12 13 14 15
+ if ! lockfile -0 -r0 -l 3600 "$LOCKFILE" 2>/dev/null; then
+ echo "E: another $ME process is already running over that Maildir." >&2
+ trap - 0 1 2 3 4 5 6 7 8 10 11 12 13 14 15
+ exit 1
+ fi
+
+ files="$files $(find $MAILDIR/cur $MAILDIR/new -type f)"
-find $MAILDIR/cur $MAILDIR/new -type f | while read msg ; do
- $NICE ${0%/*}/train $ARG "$msg" | $PROCMAIL || ret=$?
+for msg in $files ; do
+ $NICE ${0%/*}/train $ARG "$msg" | $RESUBMIT || ret=$?
case "${ret:-0}" in
0|75) :;;
case "${ret:-0}" in
0|75) :;;
+ *)
+ echo "E: resubmission returned with exit code $ret" >&2
+ continue
+ ;;
esac
rm -f "$msg"
sleep $PAUSETIME
done
esac
rm -f "$msg"
sleep $PAUSETIME
done
-rm -f "$LOCKFILE"
-trap - 1 2 3 4 5 6 7 8 10 11 12 13 14 15
+if [ -n "${LOCKFILE:-}" ]; then
+ rm -f "$LOCKFILE"
+ trap - 1 2 3 4 5 6 7 8 10 11 12 13 14 15
+fi