xref: /freebsd/usr.bin/vgrind/vgrind.sh (revision f0adf7f5cdd241db2f2c817683191a6ef64a4e95)
1#!/bin/sh
2#
3# Copyright (c) 1980, 1993
4#	The Regents of the University of California.  All rights reserved.
5#
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.
21#
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.
33#
34#       @(#)vgrind.sh	8.1 (Berkeley) 6/6/93
35#
36# $FreeBSD$
37#
38
39voptions=""
40options=""
41files=""
42f=""
43head=""
44vf="/usr/libexec/vfontedpr"
45tm="/usr/share/tmac"
46postproc="psroff"
47
48# Parse args
49while test $# -gt 0; do
50	case $1 in
51	-f)
52		f="filter"
53		options="$options -f"
54	;;
55	-t)
56		voptions="$voptions -t"
57	;;
58	-o*)
59		voptions="$voptions $1"
60	;;
61	-W)
62		voptions="$voptions -W"
63	;;
64	-d)
65		if test $# -lt 2; then
66			echo "$0: option $1 must have argument" >&2
67			exit 1
68		fi
69		options="$options $1 $2"
70		shift
71	;;
72	-h)
73		if test $# -lt 2; then
74			echo "$0: option $1 must have argument" >&2
75			exit 1
76		fi
77		head="$2"
78		shift
79	;;
80	-p)
81		if test $# -lt 2; then
82			echo "$0: option $1 must have argument" >&2
83			exit 1
84		fi
85		postproc="$2"
86		shift
87	;;
88	-*)
89		options="$options $1"
90	;;
91	*)
92		files="$files $1"
93	;;
94	esac
95	shift
96done
97
98if test -r index; then
99	echo > nindex
100	for i in $files; do
101		#       make up a sed delete command for filenames
102		#       being careful about slashes.
103		echo "? $i ?d" | sed -e "s:/:\\/:g" -e "s:?:/:g" >> nindex
104	done
105	sed -f nindex index > xindex
106	if test "x$f" = xfilter; then
107		if test "x$head" != x; then
108			$vf $options -h "$head" $files
109		else
110			$vf $options $files
111		fi | cat $tm/tmac.vgrind -
112	else
113		if test "x$head" != x; then
114			$vf $options -h "$head" $files
115		else
116			$vf $options $files
117		fi | sh -c "$postproc -rx1 $voptions -i -mvgrind 2>> xindex"
118	fi
119	sort -df -k 1,2 xindex > index
120	rm nindex xindex
121else
122	if test "x$f" = xfilter; then
123		if test "x$head" != x; then
124			$vf $options -h "$head" $files
125		else
126			$vf $options $files
127		fi | cat $tm/tmac.vgrind -
128	else
129		if test "x$head" != x; then
130			$vf $options -h "$head" $files
131		else
132			$vf $options $files
133		fi | $postproc -i $voptions -mvgrind
134	fi
135fi
136