home *** CD-ROM | disk | FTP | other *** search
- #!/bin/sh
-
- #
- # Copyright (c) 1993 by Panagiotis Tsirigotis
- #
-
- #
- # $Id: sysinc,v 1.3 1993/10/27 17:06:11 panos Exp panos $
- #
-
- #
- # Usage: sysinc -d clone_dir *.[ch]
- #
-
- script_name=`basename $0`
- usage="Usage: $script_name [-d clone_dir] *.[ch]"
-
- if test $# -eq 0 ; then echo "$usage" ; exit ; fi
-
- if test "X$1" = "X-d" ; then
- shift
- if test $# -eq 0 ; then echo "$usage" ; exit ; fi
- clone_dir=$1
- shift
- fi
-
- prefix=/tmp/si
- suffix=$$
-
- unique_names=$prefix.uniq.$suffix
- dir_names=$prefix.dir.$suffix
-
- files="$*"
-
- #
- # Step 1: find names of all system include files
- #
- awk '/^#include/ { if ( substr( $2, 1, 1 ) == "<" ) print substr( $2, 2, length( $2 ) - 2 ) }' $files | sort | uniq > $unique_names
-
- uniq_names=`cat $unique_names`
- rm $unique_names
-
- if test "$clone_dir" = "" ; then
- echo "$uniq_names"
- exit
- fi
-
- #
- # Step 2: Find names of subdirectories (we assume that all include files
- # are specified as relative pathnames)
- #
- rm -f $dir_names
- for i in $uniq_names
- do
- path=$i
- dir=`expr "$path" : "\(.*\)/.*"`
- if test "$dir" ; then echo $dir >> $dir_names ; fi
- done
-
- uniq_dirs=`sort $dir_names | uniq`
- rm $dir_names
-
- #
- # Step 3: Create clone tree
- #
- mkdir $clone_dir
- ( cd $clone_dir ; mkdir $uniq_dirs )
-
- std_dir=/usr/include
-
- for i in $uniq_names
- do
- v=_XX_`echo $i | sed 's/\//_/g' | sed 's/\./_/' `
- file=$clone_dir/$i
- echo > $file
- echo "#ifndef $v" >> $file
- echo "#define $v" >> $file
- if test -f $std_dir/$i ; then
- echo "#include <$std_dir/$i>" >> $file
- fi
- echo "#endif" >> $file
- done
-
-