#!/bin/csh -f

# Grep/fgrep/egrep/etc. after converting each file from htn format to ivm
# format and massage results back to appear like a grep on the htn files.

set debug = 0

set fullprogname = $0
set fullprogname = `echo $fullprogname | sed 's+^\([^/]\)+./\1+'`
set progdir = $fullprogname:h
set progname = $fullprogname:t

set greptype = `echo $progname | sed 's+ivm++'`

set noglob

set opts = ""
set leftdelim = ""
set rightdelim = ""
while ("$1" =~ -*)
  set opts = $opts $1
  if ("$1" == "-e" || "$1" == "-f") then
    set opts = $opts $2
    shift
  endif
  shift
end

set pattern = "$1"
shift

if ($debug) then
   echo progname: $progname, greptype: $greptype
   echo opts: $opts
   echo pattern: "$pattern"
endif

set tempdir = /tmp/grepivm.$user.$$
mkdir $tempdir

if ($#argv < 1) cat > $tempdir/stdin

set files = ""
foreach file ($* $tempdir/stdin)
  set newfile = "`echo $file:t | ehtnswap`"
  if (-e $file) ehtnswap $file > $tempdir/$newfile
  set files = "$files $newfile"
end

( cd $tempdir; \
  $greptype $opts "$pattern" $files \
    | sed 's+^\([^ :][^ :]*\):\(.*\)+\2:\1+' \
    | ehtnswap)

\rm -r $tempdir
