xref: /freebsd/usr.bin/vgrind/vgrind.sh (revision aa1a8ff2d6dbc51ef058f46f3db5a8bb77967145)
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
32voptions=""
33options=""
34files=""
35f=""
36head=""
37vf="/usr/libexec/vfontedpr"
38tm="/usr/share/tmac"
39postproc="psroff"
40
41# Parse args
42while 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
89done
90
91if 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
114else
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
128fi
129