#! /bin/sh # $Header: /home/jerry/.bin/RCS/search,v 1.5 92/08/09 23:26:35 jerry mh_contrib $ ### search - search for mail containing some regular expression(s) ### Usage: search { 'regexp' -a 'regexp' ... } [+folder] [messages] ## ## search MAKES THE pick -search COMMAND LINE EASIER TO TYPE. ## search REPLACES "{" WITH "-lbrace" and "}" WITH "-rbrace". ## IF YOU USE -a AND -o, IT PASSES THEM ON TO pick. ## BUG: YOU NEED TO PUT SPACE AROUND { AND } SO THIS SCRIPT CAN SEE THEM. ## OTHER ARGUMENTS BETWEEN { AND } HAVE -search ADDED BEFORE THEM. ## FOR MORE INFO, TYPE man pick. ## ## IF THE REGULAR EXPRESSION DOESN'T HAVE BAD CHARACTERS, YOU DON'T ## NEED TO QUOTE IT. HERE'S A SIMPLE SEARCH -- FINDING MESSAGES ## THAT CONTAIN THE WORD fred IN UPPER OR LOWER CASE: ## % search { fred } ## 465 10/04 Joe Mertz MH questions<&2 "$myname: Sorry; $arg needs space between text and brace." exit 1 ;; [+@]*) case "$nesting" in 0) folder="$arg" ;; *) pickline="$pickline -search \"$arg\"" ;; esac ;; -a*) pickline="$pickline -and" ;; -o*) pickline="$pickline -or" ;; -*) pickline="$pickline $arg" ;; *) case "$nesting" in 0) pickline="$pickline $arg" ;; *) pickline="$pickline -search \"$arg\"" ;; esac ;; esac shift done case "$nesting" in 0) if eval $mh/pick $folder $pickline -sequence picked then $mh/scan picked exit else exit # WITH STATUS FROM pick (MUST DO WITH else NOT AFTER fi) fi ;; *) echo 1>&2 "$myname: unmatched brace." exit 1 ;; esac