#!/bin/csh -f

# Grep/fgrep/egrep/etc. only in files from argument list that contain
# text or a script (according to "file" command).
# When a directory is encountered, search recursively in the files
# in that directory.

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+asciirec++'`

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

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

foreach file ($argv[2-])
  set noglob
  set filetype = (`file -h "$file" | sed 's+.*:[	 ]*++'`)
  unset noglob
  if ($debug) echo file: "$file", filetype: "$filetype"
  switch ("$filetype")
  case "*No such*":
     echo "grepasciirec: ${file}: $filetype"
     breaksw
  case "*symbolic link*":
     if ($debug) echo "grepasciirec: ${file}: $filetype not followed"
     breaksw
  case *text*:
  case *script*:
     $greptype $opts "$1" "$file" /dev/null
     breaksw
  case *directory*:
     echo "grepasciirec: Recurring in $file"
     grepasciirec $opts "$1" $file/* /dev/null*
  endsw
end
