#!/bin/bash
#                          ksearch

# cerca a partire dalla directory /usr/src/linux tutti i file 
# di tipo *.c, *.S e  *.h che contengono una stringa prefissata 
# usando il parametro -a la ricerca si effettua su tutte le  
# directory dell'albero, usando invece l'opzione -a la ricerca  
# non considera la directory drivers (oltre il 30% del codice) 
# e qualche altra directory 

if [ ! ${ECHO} ]; then
  ECHO=/bin/echo
fi
if [ ! ${FIND} ]; then
  FIND=/usr/bin/find
fi
if [ ! ${GREP} ]; then
  GREP=/usr/bin/grep
fi
if [ ! ${LINUXHOME} ]; then
  LINUXHOME=/usr/src/linux
fi
cd ${LINUXHOME}
if [ "$1" = "-a" ]; then
  shift
  ${ECHO} Searching in all subdirs \"$*\":
  ${FIND} . -name \*.[chS] -exec ${GREP} -l -- "$*" {} \;
else
  ${ECHO} Searching \"$*\":
  ${FIND} . \( -path './kernel/*' -o -path './include/linux/*' \
     -o -path './include/asm-i386/*' \
     -o -path './include/asm-generic/*' \
     -o -path './arch/i386/*' \
     -o -path './mm/*' -o -path './lib/*' -o -path './init/*' \
     -o -path './ipc/*' -o -path './fs/*' \
     -o -path './security/*' \) \
     -name \*.[chS] -exec ${GREP} -l -- "$*" {} \;
fi
${ECHO} Done.
