HAMMER VFS - Refactor merged search function to try to avoid missed entries
[dragonfly.git] / usr.bin / vgrind / vgrind.sh
blob043cae9be1cc3d713ac3be141487f2adce38f222
1 #!/bin/sh
3 # Copyright (c) 1980, 1993
4 # The Regents of the University of California. All rights reserved.
6 # Redistribution and use in source and binary forms, with or without
7 # modification, are permitted provided that the following conditions
8 # are met:
9 # 1. Redistributions of source code must retain the above copyright
10 # notice, this list of conditions and the following disclaimer.
11 # 2. Redistributions in binary form must reproduce the above copyright
12 # notice, this list of conditions and the following disclaimer in the
13 # documentation and/or other materials provided with the distribution.
14 # 3. All advertising materials mentioning features or use of this software
15 # must display the following acknowledgement:
16 # This product includes software developed by the University of
17 # California, Berkeley and its contributors.
18 # 4. Neither the name of the University nor the names of its contributors
19 # may be used to endorse or promote products derived from this software
20 # without specific prior written permission.
22 # THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
23 # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
24 # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
25 # ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
26 # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
27 # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
28 # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
29 # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
30 # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
31 # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
32 # SUCH DAMAGE.
34 # @(#)vgrind.sh 8.1 (Berkeley) 6/6/93
36 # $FreeBSD: src/usr.bin/vgrind/vgrind.sh,v 1.2.8.1 2003/06/14 14:26:25 schweikh Exp $
37 # $DragonFly: src/usr.bin/vgrind/vgrind.sh,v 1.2 2003/06/17 04:29:33 dillon Exp $
40 voptions=""
41 options=""
42 files=""
43 f=""
44 head=""
45 vf="/usr/libexec/vfontedpr"
46 tm="/usr/share/tmac"
47 postproc="psroff"
49 # Parse args
50 while test $# -gt 0; do
51 case $1 in
52 -f)
53 f="filter"
54 options="$options -f"
56 -t)
57 voptions="$voptions -t"
59 -o*)
60 voptions="$voptions $1"
62 -W)
63 voptions="$voptions -W"
65 -d)
66 if test $# -lt 2; then
67 echo "$0: option $1 must have argument" >&2
68 exit 1
70 options="$options $1 $2"
71 shift
73 -h)
74 if test $# -lt 2; then
75 echo "$0: option $1 must have argument" >&2
76 exit 1
78 head="$2"
79 shift
81 -p)
82 if test $# -lt 2; then
83 echo "$0: option $1 must have argument" >&2
84 exit 1
86 postproc="$2"
87 shift
89 -*)
90 options="$options $1"
93 files="$files $1"
95 esac
96 shift
97 done
99 if test -r index; then
100 echo > nindex
101 for i in $files; do
102 # make up a sed delete command for filenames
103 # being careful about slashes.
104 echo "? $i ?d" | sed -e "s:/:\\/:g" -e "s:?:/:g" >> nindex
105 done
106 sed -f nindex index > xindex
107 if test "x$f" = xfilter; then
108 if test "x$head" != x; then
109 $vf $options -h "$head" $files
110 else
111 $vf $options $files
112 fi | cat $tm/tmac.vgrind -
113 else
114 if test "x$head" != x; then
115 $vf $options -h "$head" $files
116 else
117 $vf $options $files
118 fi | sh -c "$postproc -rx1 $voptions -i -mvgrind 2>> xindex"
120 sort -df -k 1,2 xindex > index
121 rm nindex xindex
122 else
123 if test "x$f" = xfilter; then
124 if test "x$head" != x; then
125 $vf $options -h "$head" $files
126 else
127 $vf $options $files
128 fi | cat $tm/tmac.vgrind -
129 else
130 if test "x$head" != x; then
131 $vf $options -h "$head" $files
132 else
133 $vf $options $files
134 fi | $postproc -i $voptions -mvgrind