Annotation of gcc/fixinc.dgux, revision 1.1.1.3

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
1.1.1.3 ! root       21: # the Free Software Foundation, 59 Temple Place - Suite 330,
        !            22: # Boston, MA 02111-1307, USA.
1.1       root       23: #
                     24: #
                     25: #      See README-fixinc for more information.
                     26: 
                     27: # Directory containing the original header files.
                     28: INPUT=${2-${INPUT-/usr/include}}
                     29: 
                     30: # Fail if no arg to specify a directory for the output.
                     31: if [ x$1 = x ]
                     32: then echo fixincludes: no output directory specified
                     33: exit 1
                     34: fi
                     35: 
                     36: # Directory in which to store the results.
                     37: LIB=${1?"fixincludes: output directory not specified"}
                     38: 
                     39: # Make sure it exists.
                     40: if [ ! -d $LIB ]; then
                     41:   mkdir $LIB || exit 1
                     42: fi
                     43: 
                     44: ORIG_DIR=`pwd`
                     45: 
                     46: # Make LIB absolute if it is relative.
                     47: # Don't do this if not necessary, since may screw up automounters.
                     48: case $LIB in
                     49: /*)
                     50:        ;;
                     51: *)
                     52:        cd $LIB; LIB=`${PWDCMD-pwd}`
                     53:        ;;
                     54: esac
                     55: 
                     56: echo 'Building fixincludes in ' ${LIB}
                     57: 
                     58: # Determine whether this filesystem has symbolic links.
                     59: if ln -s X $LIB/ShouldNotExist 2>/dev/null; then
                     60:   rm -f $LIB/ShouldNotExist
                     61:   LINKS=true
                     62: else
                     63:   LINKS=false
                     64: fi
                     65: 
                     66: echo 'Making directories:'
                     67: cd ${INPUT}
                     68: if $LINKS; then
                     69:   files=`ls -LR | sed -n s/:$//p`
                     70: else
                     71:   files=`find . -type d -print | sed '/^.$/d'`
                     72: fi
                     73: for file in $files; do
                     74:   rm -rf $LIB/$file
                     75:   if [ ! -d $LIB/$file ]
                     76:   then mkdir $LIB/$file
                     77:   fi
                     78: done
                     79: 
                     80: # treetops gets an alternating list
                     81: # of old directories to copy
                     82: # and the new directories to copy to.
                     83: treetops="${INPUT} ${LIB}"
                     84: 
                     85: if $LINKS; then
                     86:   echo 'Making internal symbolic directory links'
                     87:   for file in $files; do
                     88:     dest=`ls -ld $file | sed -n 's/.*-> //p'`
                     89:     if [ "$dest" ]; then    
                     90:       cwd=`pwd`
                     91:       # In case $dest is relative, get to $file's dir first.
                     92:       cd ${INPUT}
                     93:       cd `echo ./$file | sed -n 's&[^/]*$&&p'`
                     94:       # Check that the target directory exists.
                     95:       # Redirections changed to avoid bug in sh on Ultrix.
                     96:       (cd $dest) > /dev/null 2>&1
                     97:       if [ $? = 0 ]; then
                     98:        cd $dest
                     99:        # X gets the dir that the link actually leads to.
                    100:        x=`pwd`
                    101:        # If link leads back into ${INPUT},
                    102:        # make a similar link here.
                    103:        if expr $x : "${INPUT}/.*" > /dev/null; then
                    104:          # Y gets the actual target dir name, relative to ${INPUT}.
                    105:          y=`echo $x | sed -n "s&${INPUT}/&&p"`
                    106:          # DOTS is the relative path from ${LIB}/$file's dir back to ${LIB}.
                    107:          dots=`echo "$file" |
                    108:            sed -e 's@^./@@' -e 's@/./@/@g' -e 's@[^/][^/]*@..@g' -e 's@..$@@'`
                    109:          echo $file '->' $dots$y ': Making link'
                    110:          rm -fr ${LIB}/$file > /dev/null 2>&1
                    111:          ln -s $dots$y ${LIB}/$file > /dev/null 2>&1
                    112:        else
                    113:          # If the link is to outside ${INPUT},
                    114:          # treat this directory as if it actually contained the files.
                    115: # This line used to have $dest instead of $x.
                    116: # $dest seemed to be wrong for links found in subdirectories
                    117: # of ${INPUT}.  Does this change break anything?
                    118:          treetops="$treetops $x ${LIB}/$file"
                    119:        fi
                    120:       fi
                    121:       cd $cwd
                    122:     fi
                    123:   done
                    124: fi
                    125: 
                    126: # Completely replace <_int_varargs.h> with a file that defines
                    127: # va_list and gnuc_va_list
                    128: 
                    129: file=_int_varargs.h
                    130: if [ -r ${INPUT}/$file ]; then
                    131:   echo Replacing $file
                    132:   cat > ${LIB}/$file << EOF
                    133: /* This file was generated by fixinc.dgux.  */
                    134: #ifndef __INT_VARARGS_H
                    135: #define __INT_VARARGS_H
                    136: 
                    137: #if defined(__m88k__) && defined (__DGUX__)
                    138: #ifndef __GNUC_VA_LIST
                    139: #define __GNUC_VA_LIST
                    140: typedef struct
                    141: {
                    142:   int  __va_arg;               /* argument number */
                    143:   int *__va_stk;               /* start of args passed on stack */
                    144:   int *__va_reg;               /* start of args passed in regs */
                    145: } __gnuc_va_list;
                    146: #endif /* not __GNUC_VA_LIST */
                    147: #endif /* 88k && dgux */
                    148: 
                    149: #ifndef _VA_LIST_
                    150: #define _VA_LIST_
                    151: typedef __gnuc_va_list va_list;
                    152: #endif /* _VA_LIST_ */
                    153: 
                    154: #endif /* __INT_VARARGS_H */
                    155: 
                    156: EOF
                    157:   chmod a+r ${LIB}/$file
                    158: fi
                    159: 
                    160: echo 'Removing unneeded directories:'
                    161: cd $LIB
                    162: files=`find . -type d -print | sort -r`
                    163: for file in $files; do
                    164:   rmdir $LIB/$file > /dev/null 2>&1
                    165: done
                    166: 
                    167: if $LINKS; then
                    168:   echo 'Making internal symbolic non-directory links'
                    169:   cd ${INPUT}
                    170:   files=`find . -type l -print`
                    171:   for file in $files; do
                    172:     dest=`ls -ld $file | sed -n 's/.*-> //p'`
                    173:     if expr "$dest" : '[^/].*' > /dev/null; then    
                    174:       target=${LIB}/`echo file | sed "s|[^/]*\$|$dest|"`
                    175:       if [ -f $target ]; then
                    176:         ln -s $dest ${LIB}/$file >/dev/null 2>&1
                    177:       fi
                    178:     fi
                    179:   done
                    180: fi
                    181: 
                    182: cd ${ORIG_DIR}
                    183: 
                    184: exit 0
                    185: 

unix.superglobalmegacorp.com

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