freebsd-dev/usr.bin/vgrind/vgrind.sh
Andrey A. Chernov 73be6d69ef Make it work with POSIX sort (POS arg).
All old sorts understand -k too.
2002-09-24 19:05:40 +00:00

158 lines
4.0 KiB
Bash

#!/bin/csh -f
#
# Copyright (c) 1980, 1993
# The Regents of the University of California. All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# 1. Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
# 3. All advertising materials mentioning features or use of this software
# must display the following acknowledgement:
# This product includes software developed by the University of
# California, Berkeley and its contributors.
# 4. Neither the name of the University nor the names of its contributors
# may be used to endorse or promote products derived from this software
# without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
#
# @(#)vgrind.sh 8.1 (Berkeley) 6/6/93
#
# $FreeBSD$
#
set voptions=
set options=
set files=
set f=''
set head=""
set vf=/usr/libexec/vfontedpr
set tm=/usr/share/tmac
set postproc=psroff
top:
if ($#argv > 0) then
switch ($1:q)
case -f:
set f='filter'
set options = "$options $1:q"
shift
goto top
case -t:
set voptions = "$voptions -t"
shift
goto top
case -o*:
set voptions="$voptions $1:q"
shift
goto top
case -W:
set voptions = "$voptions -W"
shift
goto top
case -d:
if ($#argv < 2) then
echo "vgrind: $1:q option must have argument"
goto done
else
set options = ($options $1:q $2)
shift
shift
goto top
endif
case -h:
if ($#argv < 2) then
echo "vgrind: $1:q option must have argument"
goto done
else
set head="$2"
shift
shift
goto top
endif
case -p:
if ($#argv < 2) then
echo "vgrind: $1:q option must have argument"
goto done
else
set postproc="$2"
shift
shift
goto top
endif
case -*:
set options = "$options $1:q"
shift
goto top
default:
set files = "$files $1:q"
shift
goto top
endsw
endif
if (-r index) then
echo > nindex
foreach i ($files)
# make up a sed delete command for filenames
# being careful about slashes.
echo "? $i ?d" | sed -e "s:/:\\/:g" -e "s:?:/:g" >> nindex
end
sed -f nindex index >xindex
if ($f == 'filter') then
if ("$head" != "") then
$vf $options -h "$head" $files | cat $tm/tmac.vgrind -
else
$vf $options $files | cat $tm/tmac.vgrind -
endif
else
if ("$head" != "") then
$vf $options -h "$head" $files | \
sh -c "$postproc -rx1 $voptions -i -mvgrind 2>> xindex"
else
$vf $options $files | \
sh -c "$postproc -rx1 $voptions -i -mvgrind 2>> xindex"
endif
endif
sort -df -k 1,2 xindex >index
rm nindex xindex
else
if ($f == 'filter') then
if ("$head" != "") then
$vf $options -h "$head" $files | cat $tm/tmac.vgrind -
else
$vf $options $files | cat $tm/tmac.vgrind -
endif
else
if ("$head" != "") then
$vf $options -h "$head" $files | $postproc -i $voptions -mvgrind
else
$vf $options $files | $postproc -i $voptions -mvgrind
endif
endif
endif
done: