ID=$1; shift
echo "asm\nauto\nbreak\ncase\nchar\nconst\ncontinue"	         >tmp$ID.0
echo "default\ndo\ndouble\nelse\nentry\nenum\nextern"	        >>tmp$ID.0
echo "float\nfor\nfortran\ngoto\nif\nint\nlong"		  	>>tmp$ID.0
echo "register\nreturn\nshort\nsigned\nsizeof\nstatic\nstruct"  >>tmp$ID.0
echo "switch\ntypedef\nunion\nunsigned\nvoid\nvolatile\nwhile"  >>tmp$ID.0

allfiles=
cfiles=

for i
do
  case $i in
    *.c) cfiles="$cfiles $i";;
  esac

  if [ "$allfiles" ]
  then allfiles="$allfiles|$i"
  else allfiles="$i"
  fi
done

( sed -e 's/ .*$//' fifo.$ID | sort | uniq >>tmp$ID.0 )&

trap 'kill $!; exit 1' 1 2 3 15

allfiles=`echo $allfiles | sed -e 's/\./\\\\./g'`

cxref -s -c $cfiles |
  sed -e 's/()//g' |			# can be deleted under UNIX V.4
  awk -e '
  /^[a-z_A-Z]/ { printf "\n%s", $0 }
  /^[ 	]/ { printf "%s", $0 }
  ' |
  tr -s " 	" "[ *]" |
  tee fifo.$ID |
  egrep "($allfiles)[- 	0-9a-z_A-Z]*([0-9][=*]|\*[0-9])" |
  sed -e 's/ .*$//' |
  sort |
  uniq |
  comm -23 - funclist >tmp$ID.1
wait
exit 0
