#!/bin/sh # Arguments: # $1 = directory to search in # $2 = filename to produce # $3- = search string if test -z "$1"; then echo "Search error : missing files to search" exit -1 fi if test -z "$2"; then echo "Search error : missing target filename" exit -1 fi if test -z "$3"; then echo "Search error : missing search string" exit -1 fi # Build the search criteria string...not so funky, but works SEARCH_CRITERIA="$3" SEARCH_WORDS="$3" if test -n "$4"; then SEARCH_WORDS="$SEARCH_WORDS $4" SEARCH_CRITERIA="$SEARCH_CRITERIA AND $4" fi if test -n "$5"; then SEARCH_WORDS="$SEARCH_WORDS $5" SEARCH_CRITERIA="$SEARCH_CRITERIA AND $5" fi if test -n "$6"; then SEARCH_WORDS="$SEARCH_WORDS $6" SEARCH_CRITERIA="$SEARCH_CRITERIA AND $6" fi if test -n "$7"; then SEARCH_WORDS="$SEARCH_WORDS $7" SEARCH_CRITERIA="$SEARCH_CRITERIA AND $7" fi if test -n "$8"; then SEARCH_WORDS="$SEARCH_WORDS $8" SEARCH_CRITERIA="$SEARCH_CRITERIA AND $8" fi if test -n "$9"; then SEARCH_WORDS="$SEARCH_WORDS $9" SEARCH_CRITERIA="$SEARCH_CRITERIA AND $9" fi DOCUMENT=" Search results KVirc documentation

" FILES_TO_SEARCH=`find $1 -name "*.html"` if test -z "$FILES_TO_SEARCH"; then DOCUMENT="$DOCUMENT Internal error: no files to search

Search results for \"$SEARCH_CRITERIA\"


Main index" echo "$DOCUMENT" > $2 exit 0 fi # Now grep the files SEARCH_RESULT="" for a_word in $SEARCH_WORDS; do if test -z "$SEARCH_RESULT"; then SEARCH_RESULT=`grep -i -l $a_word $FILES_TO_SEARCH` else SEARCH_RESULT=`grep -i -l $a_word $SEARCH_RESULT` fi if test -z "$SEARCH_RESULT"; then DOCUMENT="$DOCUMENT No matches found
Main index" echo "$DOCUMENT" > $2 exit 0 fi done DOCS_COUNT="0" for a_file in $SEARCH_RESULT; do RESULT_DESCRIPTION="[" for a_word in $SEARCH_WORDS; do WORD_MATCHES=`grep -i -h -c $a_word "$a_file"` RESULT_DESCRIPTION="$RESULT_DESCRIPTION $a_word:$WORD_MATCHES " done RESULT_DESCRIPTION="$RESULT_DESCRIPTION ]" DOC_TITLE=`grep -i -h "" "$a_file" | sed -e 's/title/b/g'` if test -z "$DOC_TITLE"; then DOC_TITLE="<b>Untitled</b>" fi DOC_PREMATCH=`grep -i -h -A 30 "searchbody" "$a_file" | tac | tail -n 30 | tac` DOC_MATCH=`echo "$DOC_PREMATCH" | sed -e 's/<[a-zA-Z0-9 _ \=\"\#\%\&\/\.]*>/ /g'` DOC_MATCH=`echo "$DOC_MATCH" | sed -e 's/</\</g'` DOC_MATCH=`echo "$DOC_MATCH" | sed -e 's/>/\>/g'` DOC_MATCH=`echo "$DOC_MATCH" | grep -h "[a-zA-Z0-9{}]"` DOC_MATCH=`echo "$DOC_MATCH" | sed -e 's/^[ ]*//'` DOC_MATCH=`echo "$DOC_MATCH" | tac | tail -n 10 | tac` if test -z "$DOC_MATCH"; then DOC_MATCH="No document body found" fi DOCS_COUNT=`expr $DOCS_COUNT + 1` DOCUMENT="$DOCUMENT <tr bgcolor=\"#F0F0F0\"><td><a href=\"$a_file\"><b>$DOCS_COUNT</b>. $DOC_TITLE</a><br><br><I>...$DOC_MATCH...</I><br><br><b>$RESULT_DESCRIPTION</b></td></tr>" done DOCUMENT="$DOCUMENT</table><hr><br>Found $DOCS_COUNT matches</html>" echo "$DOCUMENT" > $2