|
|
1.1 ! root 1: #!/bin/sh ! 2: # ! 3: # modified for dgux by [email protected] based on ! 4: # ! 5: # fixinc.svr4 written by Ron Guilmette ([email protected]). ! 6: # ! 7: # This file is part of GNU CC. ! 8: # ! 9: # GNU CC is free software; you can redistribute it and/or modify ! 10: # it under the terms of the GNU General Public License as published by ! 11: # the Free Software Foundation; either version 2, or (at your option) ! 12: # any later version. ! 13: # ! 14: # GNU CC is distributed in the hope that it will be useful, ! 15: # but WITHOUT ANY WARRANTY; without even the implied warranty of ! 16: # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ! 17: # GNU General Public License for more details. ! 18: # ! 19: # You should have received a copy of the GNU General Public License ! 20: # along with GNU CC; see the file COPYING. If not, write to ! 21: # the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. ! 22: # ! 23: # ! 24: # See README-fixinc for more information. ! 25: ! 26: # Directory where gcc sources (and sometimes special include files) live. ! 27: SRCDIR=${3-${SRCDIR-.}} ! 28: ! 29: # Directory containing the original header files. ! 30: INPUT=${2-${INPUT-/usr/include}} ! 31: ! 32: # Fail if no arg to specify a directory for the output. ! 33: if [ x$1 = x ] ! 34: then echo fixincludes: no output directory specified ! 35: exit 1 ! 36: fi ! 37: ! 38: # Directory in which to store the results. ! 39: LIB=${1?"fixincludes: output directory not specified"} ! 40: ! 41: # Make sure it exists. ! 42: if [ ! -d $LIB ]; then ! 43: mkdir $LIB || exit 1 ! 44: fi ! 45: ! 46: ORIG_DIR=`pwd` ! 47: ! 48: # Make LIB absolute if it is relative. ! 49: # Don't do this if not necessary, since may screw up automounters. ! 50: case $LIB in ! 51: /*) ! 52: ;; ! 53: *) ! 54: cd $LIB; LIB=`${PWDCMD-pwd}` ! 55: ;; ! 56: esac ! 57: ! 58: echo 'Building fixincludes in ' ${LIB} ! 59: ! 60: # Determine whether this filesystem has symbolic links. ! 61: if ln -s X $LIB/ShouldNotExist 2>/dev/null; then ! 62: rm -f $LIB/ShouldNotExist ! 63: LINKS=true ! 64: else ! 65: LINKS=false ! 66: fi ! 67: ! 68: echo 'Making directories:' ! 69: cd ${INPUT} ! 70: if $LINKS; then ! 71: files=`ls -LR | sed -n s/:$//p` ! 72: else ! 73: files=`find . -type d -print | sed '/^.$/d'` ! 74: fi ! 75: for file in $files; do ! 76: rm -rf $LIB/$file ! 77: if [ ! -d $LIB/$file ] ! 78: then mkdir $LIB/$file ! 79: fi ! 80: done ! 81: ! 82: # treetops gets an alternating list ! 83: # of old directories to copy ! 84: # and the new directories to copy to. ! 85: treetops="${INPUT} ${LIB}" ! 86: ! 87: if $LINKS; then ! 88: echo 'Making internal symbolic directory links' ! 89: for file in $files; do ! 90: dest=`ls -ld $file | sed -n 's/.*-> //p'` ! 91: if [ "$dest" ]; then ! 92: cwd=`pwd` ! 93: # In case $dest is relative, get to $file's dir first. ! 94: cd ${INPUT} ! 95: cd `echo ./$file | sed -n 's&[^/]*$&&p'` ! 96: # Check that the target directory exists. ! 97: # Redirections changed to avoid bug in sh on Ultrix. ! 98: (cd $dest) > /dev/null 2>&1 ! 99: if [ $? = 0 ]; then ! 100: cd $dest ! 101: # X gets the dir that the link actually leads to. ! 102: x=`pwd` ! 103: # If link leads back into ${INPUT}, ! 104: # make a similar link here. ! 105: if expr $x : "${INPUT}/.*" > /dev/null; then ! 106: # Y gets the actual target dir name, relative to ${INPUT}. ! 107: y=`echo $x | sed -n "s&${INPUT}/&&p"` ! 108: # DOTS is the relative path from ${LIB}/$file's dir back to ${LIB}. ! 109: dots=`echo "$file" | ! 110: sed -e 's@^./@@' -e 's@/./@/@g' -e 's@[^/][^/]*@..@g' -e 's@..$@@'` ! 111: echo $file '->' $dots$y ': Making link' ! 112: rm -fr ${LIB}/$file > /dev/null 2>&1 ! 113: ln -s $dots$y ${LIB}/$file > /dev/null 2>&1 ! 114: else ! 115: # If the link is to outside ${INPUT}, ! 116: # treat this directory as if it actually contained the files. ! 117: # This line used to have $dest instead of $x. ! 118: # $dest seemed to be wrong for links found in subdirectories ! 119: # of ${INPUT}. Does this change break anything? ! 120: treetops="$treetops $x ${LIB}/$file" ! 121: fi ! 122: fi ! 123: cd $cwd ! 124: fi ! 125: done ! 126: fi ! 127: ! 128: # Completely replace <_int_varargs.h> with a file that defines ! 129: # va_list and gnuc_va_list ! 130: ! 131: file=_int_varargs.h ! 132: if [ -r ${INPUT}/$file ]; then ! 133: echo Replacing $file ! 134: cat > ${LIB}/$file << EOF ! 135: /* This file was generated by fixinc.dgux. */ ! 136: #ifndef __INT_VARARGS_H ! 137: #define __INT_VARARGS_H ! 138: ! 139: #if defined(__m88k__) && defined (__DGUX__) ! 140: #ifndef __GNUC_VA_LIST ! 141: #define __GNUC_VA_LIST ! 142: typedef struct ! 143: { ! 144: int __va_arg; /* argument number */ ! 145: int *__va_stk; /* start of args passed on stack */ ! 146: int *__va_reg; /* start of args passed in regs */ ! 147: } __gnuc_va_list; ! 148: #endif /* not __GNUC_VA_LIST */ ! 149: #endif /* 88k && dgux */ ! 150: ! 151: #ifndef _VA_LIST_ ! 152: #define _VA_LIST_ ! 153: typedef __gnuc_va_list va_list; ! 154: #endif /* _VA_LIST_ */ ! 155: ! 156: #endif /* __INT_VARARGS_H */ ! 157: ! 158: EOF ! 159: chmod a+r ${LIB}/$file ! 160: fi ! 161: ! 162: echo 'Removing unneeded directories:' ! 163: cd $LIB ! 164: files=`find . -type d -print | sort -r` ! 165: for file in $files; do ! 166: rmdir $LIB/$file > /dev/null 2>&1 ! 167: done ! 168: ! 169: if $LINKS; then ! 170: echo 'Making internal symbolic non-directory links' ! 171: cd ${INPUT} ! 172: files=`find . -type l -print` ! 173: for file in $files; do ! 174: dest=`ls -ld $file | sed -n 's/.*-> //p'` ! 175: if expr "$dest" : '[^/].*' > /dev/null; then ! 176: target=${LIB}/`echo file | sed "s|[^/]*\$|$dest|"` ! 177: if [ -f $target ]; then ! 178: ln -s $dest ${LIB}/$file >/dev/null 2>&1 ! 179: fi ! 180: fi ! 181: done ! 182: fi ! 183: ! 184: cd ${ORIG_DIR} ! 185: ! 186: exit 0 ! 187:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.