home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / unix / volume27 / clc / part03 / sysinc
Encoding:
Text File  |  1993-11-28  |  1.5 KB  |  84 lines

  1. #!/bin/sh
  2.  
  3. #
  4. # Copyright (c) 1993 by Panagiotis Tsirigotis
  5. #
  6.  
  7. #
  8. # $Id: sysinc,v 1.3 1993/10/27 17:06:11 panos Exp panos $
  9. #
  10.  
  11. #
  12. # Usage: sysinc -d clone_dir *.[ch]
  13. #
  14.  
  15. script_name=`basename $0`
  16. usage="Usage: $script_name [-d clone_dir] *.[ch]"
  17.  
  18. if test $# -eq 0 ; then echo "$usage" ; exit ; fi
  19.  
  20. if test "X$1" = "X-d" ; then 
  21.     shift
  22.     if test $# -eq 0 ; then echo "$usage" ; exit ; fi
  23.     clone_dir=$1
  24.     shift
  25. fi
  26.  
  27. prefix=/tmp/si
  28. suffix=$$
  29.  
  30. unique_names=$prefix.uniq.$suffix
  31. dir_names=$prefix.dir.$suffix
  32.  
  33. files="$*"
  34.  
  35. #
  36. # Step 1: find names of all system include files
  37. #
  38. awk '/^#include/ { if ( substr( $2, 1, 1 ) == "<" ) print substr( $2, 2, length( $2 ) - 2 ) }' $files | sort | uniq > $unique_names
  39.  
  40. uniq_names=`cat $unique_names`
  41. rm $unique_names
  42.  
  43. if test "$clone_dir" = "" ; then
  44.     echo "$uniq_names"
  45.     exit
  46. fi
  47.  
  48. #
  49. # Step 2: Find names of subdirectories (we assume that all include files
  50. #             are specified as relative pathnames)
  51. #
  52. rm -f $dir_names
  53. for i in $uniq_names
  54. do
  55.     path=$i
  56.     dir=`expr "$path" : "\(.*\)/.*"`
  57.     if test "$dir" ; then echo $dir >> $dir_names ; fi
  58. done
  59.  
  60. uniq_dirs=`sort $dir_names | uniq`
  61. rm $dir_names
  62.  
  63. #
  64. # Step 3: Create clone tree
  65. #
  66. mkdir $clone_dir
  67. ( cd $clone_dir ; mkdir $uniq_dirs )
  68.  
  69. std_dir=/usr/include
  70.  
  71. for i in $uniq_names
  72. do
  73.     v=_XX_`echo $i | sed 's/\//_/g' | sed 's/\./_/' `
  74.     file=$clone_dir/$i
  75.     echo > $file
  76.     echo "#ifndef $v" >> $file
  77.     echo "#define $v" >> $file
  78.     if test -f $std_dir/$i ; then
  79.         echo "#include <$std_dir/$i>" >> $file
  80.     fi
  81.     echo "#endif" >> $file
  82. done
  83.  
  84.