Annotation of gcc/fixincludes-V4, revision 1.1

1.1     ! root        1: #! /bin/sh
        !             2: # Install modified versions of certain ANSI-incompatible system header files
        !             3: # which are fixed to work correctly with ANSI C
        !             4: # and placed in a directory that GNU C will search.
        !             5: # This works properly on a Sun in system version 3.4;
        !             6: # for other versions, you had better check.
        !             7: 
        !             8: # Directory in which to store the results.
        !             9: LIB=${LIB-/usr/local/lib/gcc-include}
        !            10: 
        !            11: # Make sure it exists.
        !            12: if [ ! -d $LIB ]; then
        !            13:   mkdir $LIB || exit 1
        !            14: fi
        !            15: 
        !            16: # Determine whether this system has symbolic links.
        !            17: if ln -s X $LIB/ShouldNotExist 2>/dev/null; then
        !            18:   rm -f $LIB/ShouldNotExist
        !            19:   LINKS=true
        !            20: else
        !            21:   LINKS=false
        !            22: fi
        !            23: 
        !            24: echo 'Making directories:'
        !            25: cd /usr/include
        !            26: if $LINKS; then
        !            27:   files=`ls -LR | sed -n s/:$//p`
        !            28: else
        !            29:   files=`find . -type d -print | sed '/^.$/d'`
        !            30: fi
        !            31: for file in $files; do
        !            32:   rm -rf $LIB/$file
        !            33:   if [ ! -d $LIB/$file ]
        !            34:   then mkdir $LIB/$file
        !            35:   fi
        !            36: done
        !            37: 
        !            38: # treetops gets an alternating list
        !            39: # of old directories to copy
        !            40: # and the new directories to copy to.
        !            41: treetops="/usr/include ${LIB}"
        !            42: 
        !            43: if $LINKS; then
        !            44:   echo 'Making internal symbolic directory links'
        !            45:   for file in $files; do
        !            46:     dest=`ls -ld $file | sed -n 's/.*-> //p'`
        !            47:     if [ "$dest" ]; then    
        !            48:       cwd=`pwd`
        !            49:       # In case $dest is relative, get to $file's dir first.
        !            50:       cd /usr/include
        !            51:       cd `echo ./$file | sed -n 's&[^/]*$&&p'`
        !            52:       # Check that the target directory exists.
        !            53:       # Redirections changed to avoid bug in sh on Ultrix.
        !            54:       (cd $dest) > /dev/null 2>&1
        !            55:       if [ $? = 0 ]; then
        !            56:        cd $dest
        !            57:        # X gets the dir that the link actually leads to.
        !            58:        x=`pwd`
        !            59:        # If link leads back into /usr/include,
        !            60:        # make a similar link here.
        !            61:        if expr $x : '/usr/include/.*' > /dev/null; then
        !            62:          # Y gets the actual target dir name, relative to /usr/include.
        !            63:          y=`echo $x | sed -n 's&/usr/include/&&p'`
        !            64:          echo $file '->' $y ': Making link'
        !            65:          rm -fr ${LIB}/$file > /dev/null 2>&1
        !            66:          ln -s ${LIB}/$y ${LIB}/$file > /dev/null 2>&1
        !            67:        else
        !            68:          # If the link is to outside /usr/include,
        !            69:          # treat this directory as if it actually contained the files.
        !            70: # This line used to have $dest instead of $x.
        !            71: # $dest seemed to be wrong for links found in subdirectories
        !            72: # of /usr/include.  Does this change break anything?
        !            73:          treetops="$treetops $x ${LIB}/$file"
        !            74:        fi
        !            75:       fi
        !            76:       cd $cwd
        !            77:     fi
        !            78:   done
        !            79: fi
        !            80: 
        !            81: set - $treetops
        !            82: while [ $# != 0 ]; do
        !            83:   # $1 is an old directory to copy, and $2 is the new directory to copy to.
        !            84:   echo "Finding header files in $1:"
        !            85:   cd /usr/include
        !            86:   cd $1
        !            87:   files=`find . -name '*.h' -type f -print`
        !            88:   echo 'Checking header files:'
        !            89:   for file in $files; do
        !            90:     if egrep '[        ]_IO[A-Z]*\(|#define._IO|CTRL|#machine|#lint' $file > /dev/null; then
        !            91:       echo Fixing $file
        !            92:       if [ -r $file ]; then
        !            93:        cp $file $2/$file >/dev/null 2>&1       \
        !            94:        || echo "Can't copy $file"
        !            95:        chmod +w $2/$file
        !            96:        sed -e '
        !            97:                                   :loop
        !            98:          /\\$/                 N
        !            99:          /\\$/                 b loop
        !           100:          /[    ]_IO[A-Z]*[     ]*(/    s/(\(.\),/('\''\1'\'',/
        !           101:          /#define._IO/         s/'\''x'\''/x/g
        !           102:          /[^A-Z]CTRL[  ]*(/    s/\([^'\'']\))/'\''\1'\'')/
        !           103:          /#define.CTRL/                s/'\''c'\''/c/g
        !           104:          /#define._CTRL/               s/'\''c'\''/c/g
        !           105:          /^[   ]*#[    ]*if/   s/#machine/defined/g
        !           106:          /^[   ]*#[    ]*elif/ s/#machine/defined/g
        !           107:          /^[   ]*#[    ]*if/   s/#lint *(on)/defined(lint)/g
        !           108:          /^[   ]*#[    ]*elif/ s/#lint *(on)/defined(lint)/g
        !           109:        ' $2/$file > $2/$file.sed
        !           110:        mv $2/$file.sed $2/$file
        !           111:        if cmp $file $2/$file >/dev/null 2>&1; then
        !           112:           echo Deleting $2/$file\; no fixes were needed.
        !           113:           rm $2/$file
        !           114:        fi
        !           115:       fi
        !           116:     fi
        !           117:   done
        !           118:   shift; shift
        !           119: done
        !           120: 
        !           121: cd /usr/include
        !           122: 
        !           123: # Fix one other error in this file: a mismatched quote not inside a C comment.
        !           124: file=sundev/vuid_event.h
        !           125: if [ -r $file ]; then
        !           126:   if [ ! -r ${LIB}/$file ]; then
        !           127:     cp $file ${LIB}/$file >/dev/null 2>&1      \
        !           128:     || echo "Can't copy $file"
        !           129:     chmod +w ${LIB}/$file
        !           130:   fi
        !           131: fi
        !           132: 
        !           133: if [ -r ${LIB}/$file ]; then
        !           134:   echo Fixing $file comment
        !           135:   ex ${LIB}/$file <<EOF
        !           136:   g/doesn't/s/doesn't/does not/
        !           137:   wq
        !           138: EOF
        !           139:   if cmp $file ${LIB}/$file >/dev/null 2>&1; then
        !           140:     echo Deleting ${LIB}/$file\; no fixes were needed.
        !           141:     rm ${LIB}/$file
        !           142:   fi
        !           143: fi
        !           144: 
        !           145: # Fix an error in this file: a missing semi-colon at the end of the statsswtch
        !           146: # structure definition.
        !           147: file=rpcsvc/rstat.h
        !           148: if [ -r $file ]; then
        !           149:   if [ ! -r ${LIB}/$file ]; then
        !           150:     cp $file ${LIB}/$file >/dev/null 2>&1      \
        !           151:     || echo "Can't copy $file"
        !           152:     chmod +w ${LIB}/$file
        !           153:   fi
        !           154: fi
        !           155: 
        !           156: if [ -r ${LIB}/$file ]; then
        !           157:   echo Fixing $file, definition of statsswtch
        !           158:   ex ${LIB}/$file <<EOF
        !           159:   g/boottime$/s//&;/
        !           160:   wq
        !           161: EOF
        !           162:   if cmp $file $2/$file >/dev/null 2>&1; then
        !           163:     echo Deleting $2/$file\; no fixes were needed.
        !           164:     rm $2/$file
        !           165:   fi
        !           166: fi
        !           167: 
        !           168: # Deal with yet another challenge, this in X11/Xmu.h
        !           169: file=X11/Xmu.h
        !           170: if [ -r $file ]; then
        !           171:   if [ ! -r ${LIB}/$file ]; then
        !           172:     mkdir ${LIB}/X11 2>&-
        !           173:     cp $file ${LIB}/$file >/dev/null 2>&1      \
        !           174:     || echo "Can't copy $file"
        !           175:     chmod +w ${LIB}/$file
        !           176:   fi
        !           177: fi
        !           178: 
        !           179: if [ -r ${LIB}/$file ]; then
        !           180:   echo Fixing $file sprintf declaration
        !           181:   ex ${LIB}/$file <<EOF
        !           182:   /^extern char \*     sprintf();$/c
        !           183: #ifndef __STDC__
        !           184: extern char *  sprintf();
        !           185: #endif /* !defined __STDC__ */
        !           186: .
        !           187:   wq
        !           188: EOF
        !           189:   if cmp $file ${LIB}/$file >/dev/null 2>&1; then
        !           190:     echo Deleting ${LIB}/$file\; no fixes were needed.
        !           191:     rm ${LIB}/$file
        !           192:   fi
        !           193: fi
        !           194: 
        !           195: # Check for missing ';' in struct
        !           196: 
        !           197: file=netinet/ip.h
        !           198: if [ -r $file ]; then
        !           199:   if [ ! -r ${LIB}/$file ]; then
        !           200:     mkdir ${LIB}/netinet 2>&-
        !           201:     sed -e '/^struct/,/^};/s/}$/};/' $file > ${LIB}/$file
        !           202:     cmp $file ${LIB}/$file >&- && rm -f ${LIB}/$file
        !           203:   fi
        !           204: fi
        !           205: 
        !           206: # Fix the CAT macro in memvar.h.
        !           207: 
        !           208: file=pixrect/memvar.h
        !           209: if [ -r $file ]; then
        !           210:   if [ ! -r ${LIB}/$file ]; then
        !           211:     mkdir ${LIB}/pixrect 2>&-
        !           212:     sed -e '/^#define.CAT(a,b)/ s/IDENT(a)b/a##b/g' $file > ${LIB}/$file
        !           213:     cmp $file ${LIB}/$file >&- && rm -f ${LIB}/$file
        !           214:   fi
        !           215: fi
        !           216: 
        !           217: # Check for yet more missing ';' in struct (in SunOS 4.0.x)
        !           218: 
        !           219: file=rpcsvc/rusers.h
        !           220: if [ -r $file ]; then
        !           221:   if [ ! -r ${LIB}/$file ]; then
        !           222:     mkdir ${LIB}/rpcsvc 2>&-
        !           223:     sed -e '/^struct/,/^};/s/_cnt$/_cnt;/' $file > ${LIB}/$file
        !           224:     cmp $file ${LIB}/$file >&- && rm -f ${LIB}/$file
        !           225:   fi
        !           226: fi
        !           227: 
        !           228: # Check for yet more missing ';' in struct (in SunOS 4.0.x)
        !           229: 
        !           230: file=rpcsvc/rusers.h
        !           231: if [ -r $file ]; then
        !           232:   if [ ! -r ${LIB}/$file ]; then
        !           233:     mkdir ${LIB}/rpcsvc 2>&-
        !           234:     sed -e '/^struct/,/^};/s/_cnt$/_cnt;/' $file > ${LIB}/$file
        !           235:     cmp $file ${LIB}/$file >&- && rm -f ${LIB}/$file
        !           236:   fi
        !           237: fi
        !           238: 
        !           239: echo 'Removing unneeded directories:'
        !           240: cd $LIB
        !           241: files=`find . -type d -print | sort -r`
        !           242: for file in $files; do
        !           243:   rmdir $LIB/$file > /dev/null 2>&1
        !           244: done
        !           245: 
        !           246: if $LINKS; then
        !           247:   echo 'Making internal symbolic non-directory links'
        !           248:   cd /usr/include
        !           249:   files=`find . -type l -print`
        !           250:   for file in $files; do
        !           251:     dest=`ls -ld $file | sed -n 's/.*-> //p'`
        !           252:     if expr "$dest" : '[^/].*' > /dev/null; then    
        !           253:       target=${LIB}/`echo file | sed "s|[^/]*\$|$dest|"`
        !           254:       if [ -f $target ]; then
        !           255:         ln -s $dest ${LIB}/$file >/dev/null 2>&1
        !           256:       fi
        !           257:     fi
        !           258:   done
        !           259: fi
        !           260: 
        !           261: exit 0

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.