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