#!/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

