blob: bf962f1c06c2bf92f9227f67706aa0233e2389d4 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
|
#!/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="<html>
<head><title>Search results</title></head>
<body bgcolor=\"#FFFFFF\" text=\"#000000\">
KVirc documentation<br>
<hr>
<table bgcolor=\"#A0A0A0\" width=\"100%\">
<tr>
<td><h1>Search results for \"$SEARCH_CRITERIA\"</h1></td>
</tr>
"
FILES_TO_SEARCH=`find $1 -name "*.html"`
if test -z "$FILES_TO_SEARCH"; then
DOCUMENT="$DOCUMENT <tr bgcolor=\"#F0F0F0\"></td><b>Internal error: no files to search</b></td></tr></table><hr><a href=\"index.html\">Main index</a></html>"
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 <tr bgcolor=\"#F0F0F0\"><td><b>No matches found</b></td></tr></table><hr><a href=\"index.html\">Main index</a></html>"
echo "$DOCUMENT" > $2
exit 0
fi
done
DOCS_COUNT="0"
for a_file in $SEARCH_RESULT; do
RESULT_DESCRIPTION="<b>["
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 ]</b>"
DOC_TITLE=`grep -i -h "<title>" "$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
|