#!/bin/sh -u # # Search for stuff with mairix and then run up the result in mutt. # - Cameron Simpson 01jan2003 # : ${TMPDIR:=/tmp} : ${MAILDIR:=$HOME/mail} cmd=`basename "$0"` usage="Usage: $cmd [-A] Update mairix index. $cmd [-A] mairix-search-args... Search and display. $cmd -I [-A|foldersets...] Index the specified foldersets." # help? [ $# -gt 0 ] && [ "x$*" = x-h -o "x$1" = 'x-?' ] && { echo "$usage"; exit 0; } maildirs= tflag=-t alldirs= indexmode= trace= vflag= [ -t 1 ] && { vflag=-v trace=set-x; } badopts= while [ $# -gt 0 ] do case "$1" in -A) alldirs=1 ;; -I) indexmode=1 ;; -n) trace=echo ;; -t) tflag=$1 ;; +t) tflag= ;; -v) vflag=-v ;; -x) trace=set-x ;; --) shift; break ;; -?*)echo "$cmd: unrecognised option: $1" >&2 badopts=1 ;; *) break ;; esac shift done [ $# -gt 0 ] || indexmode=1 # update indices? if [ $indexmode ] then if [ $# = 0 ] then if [ $alldirs ] then set -- "$MAILDIR" "$MAILDIR/OLD/"[0-9]* else set -- "$MAILDIR" fi fi xit=0 for dir do rc=$dir/.mairixrc [ -s "$rc" ] || mkmairixrc -d "$dir" >"$rc" || { xit=1; continue; } $trace mairix $vflag -f "$rc" || xit=1 done exit $xit fi res=`mkdirn $TMPDIR/mairix` || exit 1 trap 'rm -rf -- "$res"' 1 2 13 15 maildir "$res" || exit 1 # save old arguments because we trash $@ qargs=`shqstr "$@"` || exit 1 if [ $alldirs ] then set -- "$MAILDIR" "$MAILDIR/OLD/"[0-9]* else set -- "$MAILDIR" fi xit=0 for dir do rc=$dir/.mairixrc db=$dir/.mairix.db [ -s "$rc" -a -s "$db" ] || { echo "$cmd: skipping $dir: missing $rc or $db" >&2 continue } eval "$trace mairix -f '$rc' -o '$res' -a $tflag $qargs" || xit=1 done + -e "set header_cache=$res" +t -f "$res" || xit=1 rm -r "$res" exit $xit