Re: Effect of widely differing volumes on ifile classification

"clemens fischer" <[email protected]> 20 Mar 2003 20:16:11 +0100
Newsgroups gmane.mail.ifile.general
Message-ID <[email protected]>
"Brett Nemeroff" <[email protected]>:

> I know this is slightly off topic, but I was wondering if you had
> custom scripts you could share that would report accuracy as you
> have in this post?

most of us use some shell script accounting refiles.  so you don't
use ifile directly, but through a script that calls ifile and counts,
and another script also calling ifile for refiles this time, updating
another counter.

i have these:

--- 8< ---
#!/bin/sh
# $Header: /root/bin/RCS/ifile-l,v 1.1.1.4 2002/08/20 18:15:59 root Exp root $
/usr/local/bin/ifile -cQ && /root/bin/ifile-ll ifile || echo "${1:-ERROR}"

--- 8< ---
#!/bin/sh
# $Header: /root/bin/RCS/ifile-ll,v 1.1.1.1 2002/03/13 13:57:14 root Exp $
# accuracy update
debug=true
#debug=echo
case "${1:-ifile}" in
ifile)
	bumpifile=1
	bumpirefile=0
	;;
irefile)
	bumpifile=0
	bumpirefile=1
	;;
*)
	bumpifile=0
	bumpirefile=0
	;;
esac
accfn="${HOME}/.idata.acc"
acclck="${HOME}/.idata.acclck"
if [ -f "${accfn}" ]; then
	if lockfile -r0 -l1024 "$acclck" 2>/dev/null; then
		trap "rm -f ${acclck}" 1 2 3 13 15
		accifile=$(head -1 "$accfn")
		accirefile=$(tail -1 "$accfn")
		$debug acc: $accifile $accirefile
		$debug bump: $bumpifile $bumpirefile
		accifile=$(($accifile + $bumpifile))
		accirefile=$(($accirefile + $bumpirefile))
		$debug acc: $accifile $accirefile
		echo $accifile > $accfn
		echo $accirefile >> $accfn
	fi
elif lockfile -r0 -l1024 "$acclck" 2>/dev/null; then
	trap "rm -f ${acclck}" 1 2 3 13 15
	accfn="${HOME}/.idata.acc"
	echo 1 > $accfn
	echo 0 >> $accfn
fi
rm -f "${acclck}"

--- 8< ---
#!/bin/sh
# $Header: /root/bin/RCS/irefile,v 0.1.1.7 2002/09/01 16:00:21 root Exp root $

#debug=echo
debug=true

usage () {
	echo "usage: $0 <from> [<to>].  this will take the message
on stdin out the <from>-folder and into <to>.  in two-folder anti-spam
systems the <to>-folder is implied, but has to be confirmed."
}

case "$0" in
*inbox) exec irefile INBOX
	;;
*spam)	exec irefile spam
	;;
esac

[ "x$1" = "x" ] && {
	usage
	exit 1
}

idata=${HOME}/.idata
from="$1" to="$2"

TMPDIR=${TMPDIR:=/tmp}
TMPFILE=`mktemp -t irefile` || exit 1
cat > $TMPFILE

confirm=true
[ "x$2" = "x" ] && {
	confirm=echo
}

folders=$(head -1 $idata)
nfolders=0
for i in $folders; do nfolders=$(($nfolders + 1)); done

[ "x$to" = "x" ] && {
	[ $nfolders -gt 2 ] && {
		echo "nfolders: $nfolders, no implicit <to> possible."
		exit 2
	}
	case "$from" in
	"spam") to=INBOX
		;;
	"INBOX") to=spam
		;;
	*)
		echo "from: $from, must be {spam, INBOX}."
		exit 2
		;;
	esac
}
#setlock /tmp/ifile.lck ifile -d "$from" < $TMPFILE &&
#setlock /tmp/ifile.lck ifile -i "$to" < $TMPFILE &&
#ifile -d "$from" -u "$to" < $TMPFILE &&
ifile -d "$from" -i "$to" < $TMPFILE &&
ifile -q < $TMPFILE &&
rm -f $TMPFILE &&
ifile-ll irefile &&
$confirm "$0: ok." &&
exit 0

ex=$?
$confirm "$0 returned $ex: not ok, $TMPFILE not removed."
exit $ex
--- 8< ---

  clemens