Annotation of GNUtools/cc/fixincludes, 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: 
        !             6: # See README-fixinc for more information.
        !             7: 
        !             8: # Command to run gcc.
        !             9: GCCCMD=${4-${GCCCMD-gcc}}
        !            10: 
        !            11: # Directory where gcc sources (and sometimes special include files) live.
        !            12: # fixincludes doesn't use this, but fixinc.svr4 does, and I want to make
        !            13: # sure somebody doesn't try to use arg3 for something incompatible. -- gumby
        !            14: SRCDIR=${3-${SRCDIR-.}}
        !            15: 
        !            16: # Directory containing the original header files.
        !            17: # (This was named INCLUDES, but that conflicts with a name in Makefile.in.)
        !            18: INPUT=${2-${INPUT-/usr/include}}
        !            19: 
        !            20: # Directory in which to store the results.
        !            21: LIB=${1?"fixincludes: output directory not specified"}
        !            22: 
        !            23: # Define PWDCMD as a command to use to get the working dir
        !            24: # in the form that we want.
        !            25: PWDCMD=pwd
        !            26: case "`pwd`" in
        !            27: //*)
        !            28:        # On an Apollo, discard everything before `/usr'.
        !            29:        PWDCMD="eval pwd | sed -e 's,.*/usr/,/usr/,'"
        !            30:        ;;
        !            31: esac
        !            32: 
        !            33: # Original directory.
        !            34: ORIGDIR=`${PWDCMD}`
        !            35: 
        !            36: # Make sure it exists.
        !            37: if [ ! -d $LIB ]; then
        !            38:   mkdir $LIB || exit 1
        !            39: fi
        !            40: 
        !            41: # Make LIB absolute only if needed to avoid problems with the amd.
        !            42: case $LIB in
        !            43: /*)
        !            44:        ;;
        !            45: *)
        !            46:        cd $LIB; LIB=`${PWDCMD}`
        !            47:        ;;
        !            48: esac
        !            49: 
        !            50: # Make SRCDIR absolute only if needed to avoid problems with the amd.
        !            51: cd $ORIGDIR
        !            52: case $SRCDIR in
        !            53: /*)
        !            54:        ;;
        !            55: *)
        !            56:        cd $SRCDIR; SRCDIR=`${PWDCMD}`
        !            57:        ;;
        !            58: esac
        !            59: 
        !            60: # Fail if no arg to specify a directory for the output.
        !            61: if [ x$1 = x ]
        !            62: then echo fixincludes: no output directory specified
        !            63: exit 1
        !            64: fi
        !            65: 
        !            66: echo Building fixed headers in ${LIB}
        !            67: 
        !            68: # Determine whether this system has symbolic links.
        !            69: if ln -s X $LIB/ShouldNotExist 2>/dev/null; then
        !            70:   rm -f $LIB/ShouldNotExist
        !            71:   LINKS=true
        !            72: elif ln -s X /tmp/ShouldNotExist 2>/dev/null; then
        !            73:   rm -f /tmp/ShouldNotExist
        !            74:   LINKS=true
        !            75: else
        !            76:   LINKS=false
        !            77: fi
        !            78: 
        !            79: echo Finding directories and links to directories
        !            80: cd ${INPUT}
        !            81: # Find all directories and all symlinks that point to directories.
        !            82: # Put the list in $files.
        !            83: # Each time we find a symlink, add it to newdirs
        !            84: # so that we do another find within the dir the link points to.
        !            85: # Note that $files may have duplicates in it;
        !            86: # later parts of this file are supposed to ignore them.
        !            87: dirs="."
        !            88: levels=2
        !            89: while [ -n "$dirs" ] && [ $levels -gt 0 ]
        !            90: do
        !            91:     levels=`expr $levels - 1`
        !            92:     newdirs=
        !            93:     for d in $dirs
        !            94:     do
        !            95:        echo " Searching $INPUT/$d"
        !            96:        if [ "$d" != . ]
        !            97:        then
        !            98:            d=$d/.
        !            99:        fi
        !           100: 
        !           101:        # Find all directories under $d, relative to $d, excluding $d itself.
        !           102:         files="$files `find $d -type d -print | \
        !           103:                       sed -e '/\/\.$/d' -e '/^\.$/d'`"
        !           104:        # Find all links to directories.
        !           105:        # Using `-exec test -d' in find fails on some systems,
        !           106:        # and trying to run test via sh fails on others,
        !           107:        # so this is the simplest alternative left.
        !           108:        # First find all the links, then test each one.
        !           109:        theselinks=
        !           110:        $LINKS && \
        !           111:          theselinks=`find $d -type l -print`
        !           112:        for d1 in $theselinks --dummy--
        !           113:        do
        !           114:            # If the link points to a directory,
        !           115:            # add that dir to $newdirs
        !           116:            if [ -d $d1 ]
        !           117:            then
        !           118:                newdirs="$newdirs $d1"
        !           119:            fi
        !           120:        done
        !           121:     done
        !           122: 
        !           123:     files="$files $newdirs"
        !           124:     dirs="$newdirs"
        !           125: done
        !           126: 
        !           127: dirs=
        !           128: echo "All directories (including links to directories):"
        !           129: echo $files
        !           130: 
        !           131: for file in $files; do
        !           132:   rm -rf $LIB/$file
        !           133:   if [ ! -d $LIB/$file ]
        !           134:   then mkdir $LIB/$file
        !           135:   fi
        !           136: done
        !           137: mkdir $LIB/root
        !           138: 
        !           139: # treetops gets an alternating list
        !           140: # of old directories to copy
        !           141: # and the new directories to copy to.
        !           142: treetops="${INPUT} ${LIB}"
        !           143: 
        !           144: if $LINKS; then
        !           145:   echo 'Making symbolic directory links'
        !           146:   for file in $files; do
        !           147:     dest=`ls -ld $file | sed -n 's/.*-> //p'`
        !           148:     if [ "$dest" ]; then    
        !           149:       cwd=`${PWDCMD}`
        !           150:       # In case $dest is relative, get to $file's dir first.
        !           151:       cd ${INPUT}
        !           152:       cd `echo ./$file | sed -n 's&[^/]*$&&p'`
        !           153:       # Check that the target directory exists.
        !           154:       # Redirections changed to avoid bug in sh on Ultrix.
        !           155:       (cd $dest) > /dev/null 2>&1
        !           156:       if [ $? = 0 ]; then
        !           157:        cd $dest
        !           158:        # X gets the dir that the link actually leads to.
        !           159:        x=`${PWDCMD}`
        !           160:        # If a link points to ., make a similar link to .
        !           161:        if [ $x = $INPUT ]; then
        !           162:          echo $file '->' . ': Making link'
        !           163:          rm -fr ${LIB}/$file > /dev/null 2>&1
        !           164:          ln -s . ${LIB}/$file > /dev/null 2>&1
        !           165:        # If link leads back into ${INPUT},
        !           166:        # make a similar link here.
        !           167:        elif expr $x : "${INPUT}/.*" > /dev/null; then
        !           168:          # Y gets the actual target dir name, relative to ${INPUT}.
        !           169:          y=`echo $x | sed -n "s&${INPUT}/&&p"`
        !           170:          # DOTS is the relative path from ${LIB}/$file's dir back to ${LIB}.
        !           171:          dots=`echo "$file" |
        !           172:            sed -e 's@^./@@' -e 's@/./@/@g' -e 's@[^/][^/]*@..@g' -e 's@..$@@'`
        !           173:          echo $file '->' $dots$y ': Making link'
        !           174:          rm -fr ${LIB}/$file > /dev/null 2>&1
        !           175:          ln -s $dots$y ${LIB}/$file > /dev/null 2>&1
        !           176:        else
        !           177:          # If the link is to a dir $target outside ${INPUT},
        !           178:          # repoint the link at ${INPUT}/root$target
        !           179:          # and process $target into ${INPUT}/root$target
        !           180:          # treat this directory as if it actually contained the files.
        !           181:          echo $file '->' root$x ': Making link'
        !           182:          if [ -d $LIB/root$x ]
        !           183:          then true
        !           184:          else
        !           185:            dirname=root$x/
        !           186:            dirmade=.
        !           187:            cd $LIB
        !           188:            while [ x$dirname != x ]; do
        !           189:              component=`echo $dirname | sed -e 's|/.*$||'`
        !           190:              mkdir $component >/dev/null 2>&1
        !           191:              cd $component
        !           192:              dirmade=$dirmade/$component
        !           193:              dirname=`echo $dirname | sed -e 's|[^/]*/||'`
        !           194:            done
        !           195:          fi
        !           196:          # Duplicate directory structure created in ${LIB}/$file in new
        !           197:          # root area.
        !           198:          for file2 in $files; do
        !           199:            case $file2 in
        !           200:              $file/./*)
        !           201:                dupdir=${LIB}/root$x/`echo $file2 | sed -n "s|^${file}/||p"`
        !           202:                echo "Duplicating ${file}'s ${dupdir}"
        !           203:                if [ -d ${dupdir} ]
        !           204:                then true
        !           205:                else
        !           206:                  mkdir ${dupdir}
        !           207:                fi
        !           208:                ;;
        !           209:              *)
        !           210:                ;;
        !           211:            esac
        !           212:           done
        !           213:          # DOTS is the relative path from ${LIB}/$file's dir back to ${LIB}.
        !           214:          dots=`echo "$file" |
        !           215:            sed -e 's@^./@@' -e 's@/./@/@g' -e 's@[^/][^/]*@..@g' -e 's@..$@@'`
        !           216:          rm -fr ${LIB}/$file > /dev/null 2>&1
        !           217:          ln -s ${dots}root$x ${LIB}/$file > /dev/null 2>&1
        !           218:          treetops="$treetops $x ${LIB}/root$x"
        !           219:        fi
        !           220:       fi
        !           221:       cd $cwd
        !           222:     fi
        !           223:   done
        !           224: fi
        !           225: 
        !           226: required=
        !           227: set x $treetops
        !           228: shift
        !           229: while [ $# != 0 ]; do
        !           230:   # $1 is an old directory to copy, and $2 is the new directory to copy to.
        !           231:   cd ${INPUT}
        !           232:   cd $1
        !           233: # The same dir can appear more than once in treetops.
        !           234: # There's no need to scan it more than once.
        !           235:   if [ -f $2/DONE ]
        !           236:   then
        !           237:     files=
        !           238:   else
        !           239:     touch $2/DONE
        !           240:     echo Fixing directory $1 into $2
        !           241: # Check .h files which are symlinks as well as those which are files.
        !           242: # A link to a header file will not be processed by anything but this.
        !           243:     if $LINKS; then
        !           244:       files=`find . -name '*.h' \( -type f -o -type l \) -print`
        !           245:     else
        !           246:       files=`find . -name '*.h' -type f -print`
        !           247:     fi
        !           248:     echo Checking header files
        !           249:   fi
        !           250: # Note that BSD43_* are used on recent MIPS systems.
        !           251:   for file in $files; do
        !           252: # This call to egrep is essential, since checking a file with egrep
        !           253: # is much faster than actually trying to fix it.
        !           254: # It is also essential that most files *not* match!
        !           255: # Thus, matching every #endif is unacceptable.
        !           256: # But the argument to egrep must be kept small, or many versions of egrep
        !           257: # won't be able to handle it.
        !           258: #
        !           259: # We use the pattern [!-.0-~] instead of [^/   ] to match a noncomment
        !           260: # following #else or #endif because some buggy egreps think [^/] matches
        !           261: # newline, and they thus think `#else ' matches `#e[ndiflse]*[         ]+[^/   ]'.
        !           262: #
        !           263: # We use the pattern [^a-zA-Z0-9_][_a-ce-km-z][a-z0-9] to match an identifier
        !           264: # following #if or #elif that is not surrounded by __.  The `a-ce-km-z'
        !           265: # in this pattern lacks `d' and `l'; this means we don't worry about
        !           266: # identifiers starting with `d' or `l'.  This is OK, since none of the
        !           267: # identifiers below start with `d' or `l'.  It also greatly improves
        !           268: # performance, since many files contain lines of the form `#if ... defined ...'
        !           269: # or `#if lint'.
        !           270:     if egrep '//|[     _]_IO|CTRL|^#define.NULL|^#e[nl][ds][ief]*[     ]+[!-.0-~]|^#[el]*if.*[^a-zA-Z0-9_][_a-ce-km-z][a-z0-9]' $file >/dev/null; then
        !           271:       if [ -r $file ]; then
        !           272:        cp $file $2/$file >/dev/null 2>&1       \
        !           273:        || echo "Can't copy $file"
        !           274:        chmod +w $2/$file
        !           275:        chmod a+r $2/$file
        !           276:        # Here is how the sed commands in braces work.
        !           277:        # (It doesn't work to put the comments inside the sed commands.)
        !           278:                # Surround each word with spaces, to simplify matching below.
        !           279:                # ANSIfy each pre-ANSI machine-dependent symbol
        !           280:                # by surrounding it with __ __.
        !           281:                # Remove the spaces that we inserted around each word.
        !           282:        sed -e '
        !           283:                                   :loop
        !           284:          /\\$/                 N
        !           285:          /\\$/                 b loop
        !           286:          s%^\([        ]*#[    ]*else\)[       ]*/[^*].*%\1%
        !           287:          s%^\([        ]*#[    ]*else\)[       ]*[^/   ].*%\1%
        !           288:          s%^\([        ]*#[    ]*endif\)[      ]*/[^*].*%\1%
        !           289:          s%^\([        ]*#[    ]*endif\)[      ]*\*[^/].*%\1%
        !           290:          s%^\([        ]*#[    ]*endif\)[      ]*[^/*  ].*%\1%
        !           291:          /\/\/[^*]/                    s|//\(.*\)$|/*\1*/|
        !           292:          /[    ]_IO[A-Z]*[     ]*(/    s/\(_IO[A-Z]*[  ]*(\)\(.\),/\1'\''\2'\'',/
        !           293:          /[    ]BSD43__IO[A-Z]*[       ]*(/    s/(\(.\),/('\''\1'\'',/
        !           294:          /#define._IO/                 s/'\''\([cgxtf]\)'\''/\1/g
        !           295:          /#define.BSD43__IO/           s/'\''\([cgx]\)'\''/\1/g
        !           296:          /[^A-Z0-9_]CTRL[      ]*(/            s/\([^'\'']\))/'\''\1'\'')/
        !           297:          /[^A-Z0-9]_CTRL[      ]*(/            s/\([^'\'']\))/'\''\1'\'')/
        !           298:          /#define[     ]*[     ]CTRL/          s/'\''\([cgx]\)'\''/\1/g
        !           299:          /#define[     ]*[     ]_CTRL/         s/'\''\([cgx]\)'\''/\1/g
        !           300:          /#define.BSD43_CTRL/          s/'\''\([cgx]\)'\''/\1/g
        !           301:          /#[el]*if/{
        !           302:                s/[a-zA-Z0-9_][a-zA-Z0-9_]*/ & /g
        !           303: 
        !           304:                s/ bsd4\([0-9]\) / __bsd4\1__ /g
        !           305:                s/ _*i386 / __i386__ /g
        !           306:                s/ is68k / __is68k__ /g
        !           307:                s/ m68k / __m68k__ /g
        !           308:                s/ mc680\([0-9]\)0 / __mc680\10__ /g
        !           309:                s/ news\([0-9]*\) / __news\1__ /g
        !           310:                s/ ns32000 / __ns32000__ /g
        !           311:                s/ pyr / __pyr__ /g
        !           312:                s/ sony_news / __sony_news__ /g
        !           313:                s/ sparc / __sparc__ /g
        !           314:                s/ sun\([a-z0-9]*\) / __sun\1__ /g
        !           315:                s/ unix / __unix__ /g
        !           316:                s/ vax / __vax__ /g
        !           317: 
        !           318:                s/ \([a-zA-Z0-9_][a-zA-Z0-9_]*\) /\1/g
        !           319:          }
        !           320:          /^#define.NULL[       ]/      i\
        !           321:                #undef NULL
        !           322:        ' $2/$file > $2/$file.
        !           323:        mv $2/$file. $2/$file
        !           324:        if cmp $file $2/$file >/dev/null 2>&1; then
        !           325:           rm $2/$file
        !           326:        else
        !           327:           echo Fixed $file
        !           328:           # Find any include directives that use "file".
        !           329:           for include in `egrep '^[    ]*#[    ]*include[      ]*"[^/]' $2/$file | sed -e 's/^[        ]*#[    ]*include[      ]*"\([^"]*\)".*$/\1/'`; do
        !           330:              dir=`echo $file | sed -e s'|/[^/]*$||'`
        !           331:              required="$required $1 $dir/$include $2/$dir/$include"
        !           332:           done
        !           333:        fi
        !           334:       fi
        !           335:     fi
        !           336:   done
        !           337:   shift; shift
        !           338: done
        !           339: 
        !           340: cd ${INPUT}
        !           341: 
        !           342: # Install the proper definition of size_t in header files that it comes from.
        !           343: for file in sys/types.h stdlib.h sys/stdtypes.h; do
        !           344:   if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
        !           345:     cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
        !           346:     chmod +w ${LIB}/$file 2>/dev/null
        !           347:     chmod a+r ${LIB}/$file 2>/dev/null
        !           348:   fi
        !           349: 
        !           350:   if [ -r ${LIB}/$file ]; then
        !           351:     echo Fixing $file comment
        !           352:     # Get the definition of __SIZE_TYPE__, if any.
        !           353:     # (This file must be called something.c).
        !           354:     echo "__SIZE_TYPE__" > ${LIB}/types.c
        !           355:     foo=`${GCCCMD} -E -P ${LIB}/types.c`
        !           356:     rm -f ${LIB}/types.c
        !           357:     # Default to our preferred type.
        !           358:     if [ "$foo" = __SIZE_TYPE__ ]; then foo="unsigned long int"; fi
        !           359:     sed -e "s/typedef[         a-z_]*[         ]size_t/typedef $foo size_t/" ${LIB}/$file > ${LIB}/${file}.sed
        !           360:     rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
        !           361:     if cmp $file ${LIB}/$file >/dev/null 2>&1; then
        !           362:       rm ${LIB}/$file
        !           363:     fi
        !           364:   fi
        !           365: done
        !           366: 
        !           367: # Fix one other error in this file: a mismatched quote not inside a C comment.
        !           368: file=sundev/vuid_event.h
        !           369: if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
        !           370:   mkdir ${LIB}/sundev 2>/dev/null
        !           371:   cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
        !           372:   chmod +w ${LIB}/$file 2>/dev/null
        !           373:   chmod a+r ${LIB}/$file 2>/dev/null
        !           374: fi
        !           375: 
        !           376: if [ -r ${LIB}/$file ]; then
        !           377:   echo Fixing $file comment
        !           378:   sed -e "s/doesn't/does not/" ${LIB}/$file > ${LIB}/${file}.sed
        !           379:   rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
        !           380:   if cmp $file ${LIB}/$file >/dev/null 2>&1; then
        !           381:     rm ${LIB}/$file
        !           382:   fi
        !           383: fi
        !           384: 
        !           385: # Fix these Sun OS files to avoid an invalid identifier in an #ifdef.
        !           386: file=sunwindow/win_cursor.h
        !           387: if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
        !           388: #  mkdir ${LIB}/sunwindow 2>/dev/null
        !           389:   cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
        !           390:   chmod +w ${LIB}/$file 2>/dev/null
        !           391: fi
        !           392: if [ -r ${LIB}/$file ]; then
        !           393:   echo Fixing $file
        !           394:   sed -e "s/ecd.cursor/ecd_cursor/" ${LIB}/$file > ${LIB}/${file}.sed
        !           395:   rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
        !           396:   if cmp $file ${LIB}/$file >/dev/null 2>&1; then
        !           397:     rm ${LIB}/$file
        !           398:   fi
        !           399: fi
        !           400: file=sunwindow/win_lock.h
        !           401: if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
        !           402: #  mkdir ${LIB}/sunwindow 2>/dev/null
        !           403:   cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
        !           404:   chmod +w ${LIB}/$file 2>/dev/null
        !           405: fi
        !           406: if [ -r ${LIB}/$file ]; then
        !           407:   echo Fixing $file
        !           408:   sed -e "s/ecd.cursor/ecd_cursor/" ${LIB}/$file > ${LIB}/${file}.sed
        !           409:   rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
        !           410:   if cmp $file ${LIB}/$file >/dev/null 2>&1; then
        !           411:     rm ${LIB}/$file
        !           412:   fi
        !           413: fi
        !           414: 
        !           415: # Fix this Sun file to avoid interfering with stddef.h.
        !           416: file=sys/stdtypes.h
        !           417: if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
        !           418:   cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
        !           419:   chmod +w ${LIB}/$file 2>/dev/null
        !           420:   chmod a+r ${LIB}/$file 2>/dev/null
        !           421: fi
        !           422: 
        !           423: if [ -r ${LIB}/$file ]; then
        !           424:   echo Fixing $file
        !           425: sed -e '/[      ]size_t.*;/i\
        !           426: #ifndef _GCC_SIZE_T\
        !           427: #define _GCC_SIZE_T' \
        !           428:     -e '/[      ]size_t.*;/a\
        !           429: #endif' \
        !           430:     -e '/[      ]ptrdiff_t.*;/i\
        !           431: #ifndef _GCC_PTRDIFF_T\
        !           432: #define _GCC_PTRDIFF_T' \
        !           433:     -e '/[      ]ptrdiff_t.*;/a\
        !           434: #endif' \
        !           435:     -e '/[      ]wchar_t.*;/i\
        !           436: #ifndef _GCC_WCHAR_T\
        !           437: #define _GCC_WCHAR_T' \
        !           438:     -e '/[      ]wchar_t.*;/a\
        !           439: #endif' ${LIB}/$file > ${LIB}/${file}.sed
        !           440:   rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
        !           441:   if cmp $file ${LIB}/$file >/dev/null 2>&1; then
        !           442:     rm ${LIB}/$file
        !           443:   fi
        !           444: fi
        !           445: 
        !           446: # Fix this ARM/RISCiX file to avoid interfering with the use of __wchar_t
        !           447: # in cc1plus.
        !           448: file=stdlib.h
        !           449: if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
        !           450:   cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
        !           451:   chmod +w ${LIB}/$file 2>/dev/null
        !           452:   chmod a+r ${LIB}/$file 2>/dev/null
        !           453: fi
        !           454: 
        !           455: if [ -r ${LIB}/$file ]; then
        !           456:   echo Fixing $file
        !           457:   sed -e "s/\(#[       ]*ifndef[       ]*\)__wchar_t/\1_GCC_WCHAR_T/" \
        !           458:       -e "s/\(#[       ]*define[       ]*\)__wchar_t/\1_GCC_WCHAR_T/" \
        !           459:      ${LIB}/$file > ${LIB}/${file}.sed
        !           460:   rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
        !           461:   if cmp $file ${LIB}/$file >/dev/null 2>&1; then
        !           462:     rm ${LIB}/$file
        !           463:   fi
        !           464: fi
        !           465: 
        !           466: # Fix this file to avoid interfering with stddef.h, but don't mistakenly
        !           467: # match e.g. ssize_t present in AIX for the ps/2.
        !           468: file=sys/types.h
        !           469: if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
        !           470:   cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
        !           471:   chmod +w ${LIB}/$file 2>/dev/null
        !           472:   chmod a+r ${LIB}/$file 2>/dev/null
        !           473: fi
        !           474: 
        !           475: if [ -r ${LIB}/$file ]; then
        !           476:   echo Fixing $file
        !           477: sed -e '/[     ]size_t.*;/i\
        !           478: #ifndef _GCC_SIZE_T\
        !           479: #define _GCC_SIZE_T' \
        !           480:     -e '/[     ]size_t.*;/a\
        !           481: #endif' ${LIB}/$file > ${LIB}/${file}.sed
        !           482:   rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
        !           483:   if cmp $file ${LIB}/$file >/dev/null 2>&1; then
        !           484:     rm ${LIB}/$file
        !           485:   fi
        !           486: fi
        !           487: 
        !           488: # Fix HP's use of ../machine/inline.h to refer to
        !           489: # /usr/include/machine/inline.h
        !           490: file=sys/spinlock.h
        !           491: if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
        !           492:   cp $file ${LIB}/$file
        !           493: fi
        !           494: if [ -r ${LIB}/$file ] ; then
        !           495:   echo Fixing $file
        !           496:   sed -e 's,"../machine/inline.h",<machine/inline.h>,' \
        !           497:     -e 's,"../machine/psl.h",<machine/psl.h>,' \
        !           498:   ${LIB}/$file > ${LIB}/${file}.sed
        !           499:   rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
        !           500:   if cmp $file ${LIB}/$file >/dev/null 2>&1; then
        !           501:     rm ${LIB}/$file
        !           502:   fi
        !           503: fi
        !           504: 
        !           505: # Fix an error in this file: the #if says _cplusplus, not the double
        !           506: # underscore __cplusplus that it should be
        !           507: file=tinfo.h
        !           508: if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
        !           509:   mkdir ${LIB}/rpcsvc 2>/dev/null
        !           510:   cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
        !           511:   chmod +w ${LIB}/$file 2>/dev/null
        !           512:   chmod a+r ${LIB}/$file 2>/dev/null
        !           513: fi
        !           514: 
        !           515: if [ -r ${LIB}/$file ]; then
        !           516:   echo Fixing $file, __cplusplus macro
        !           517:   sed -e 's/[  ]_cplusplus/ __cplusplus/' ${LIB}/$file > ${LIB}/${file}.sed
        !           518:   rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
        !           519:   if cmp $file ${LIB}/$file >/dev/null 2>&1; then
        !           520:     rm ${LIB}/$file
        !           521:   fi
        !           522: fi
        !           523: 
        !           524: # Fix an error in this file: a missing semi-colon at the end of the statsswtch
        !           525: # structure definition.
        !           526: file=rpcsvc/rstat.h
        !           527: if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
        !           528:   mkdir ${LIB}/rpcsvc 2>/dev/null
        !           529:   cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
        !           530:   chmod +w ${LIB}/$file 2>/dev/null
        !           531:   chmod a+r ${LIB}/$file 2>/dev/null
        !           532: fi
        !           533: 
        !           534: if [ -r ${LIB}/$file ]; then
        !           535:   echo Fixing $file, definition of statsswtch
        !           536:   sed -e 's/boottime$/boottime;/' ${LIB}/$file > ${LIB}/${file}.sed
        !           537:   rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
        !           538:   if cmp $file ${LIB}/$file >/dev/null 2>&1; then
        !           539:     rm ${LIB}/$file
        !           540:   fi
        !           541: fi
        !           542: 
        !           543: # Fix an error in this file: a missing semi-colon at the end of the nodeent
        !           544: # structure definition.
        !           545: file=netdnet/dnetdb.h
        !           546: if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
        !           547:   mkdir ${LIB}/netdnet 2>/dev/null
        !           548:   cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
        !           549:   chmod +w ${LIB}/$file 2>/dev/null
        !           550:   chmod a+r ${LIB}/$file 2>/dev/null
        !           551: fi
        !           552: 
        !           553: if [ -r ${LIB}/$file ]; then
        !           554:   echo Fixing $file, definition of nodeent
        !           555:   sed -e 's/char.*na_addr *$/char *na_addr;/' ${LIB}/$file > ${LIB}/${file}.sed
        !           556:   rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
        !           557:   if cmp $file ${LIB}/$file >/dev/null 2>&1; then
        !           558:     rm ${LIB}/$file
        !           559:   fi
        !           560: fi
        !           561: 
        !           562: # Check for bad #ifdef line (in Ultrix 4.1)
        !           563: file=sys/file.h
        !           564: if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
        !           565:   cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
        !           566:   chmod +w ${LIB}/$file 2>/dev/null
        !           567:   chmod a+r ${LIB}/$file 2>/dev/null
        !           568: fi
        !           569: 
        !           570: if [ -r ${LIB}/$file ]; then
        !           571:   echo Fixing $file, bad \#ifdef line
        !           572:   sed -e 's/#ifdef KERNEL/#if defined(KERNEL)/' ${LIB}/$file > ${LIB}/${file}.sed
        !           573:   rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
        !           574:   if cmp $file ${LIB}/$file >/dev/null 2>&1; then
        !           575:     rm ${LIB}/$file
        !           576:   fi
        !           577: fi
        !           578: 
        !           579: # Check for superfluous `static' (in Ultrix 4.2)
        !           580: file=machine/cpu.h
        !           581: if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
        !           582:   mkdir ${LIB}/machine 2>/dev/null
        !           583:   cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
        !           584:   chmod +w ${LIB}/$file 2>/dev/null
        !           585:   chmod a+r ${LIB}/$file 2>/dev/null
        !           586: fi
        !           587: 
        !           588: if [ -r ${LIB}/$file ]; then
        !           589:   echo Fixing $file, superfluous static
        !           590:   sed -e 's/^static struct tlb_pid_state/struct tlb_pid_state/' ${LIB}/$file > ${LIB}/${file}.sed
        !           591:   rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
        !           592:   if cmp $file ${LIB}/$file >/dev/null 2>&1; then
        !           593:     rm ${LIB}/$file
        !           594:   else
        !           595: # This file has an alternative name, mips/cpu.h.  Fix that name, too.
        !           596:     if cmp machine/cpu.h mips/cpu.h > /dev/null 2>&1; then
        !           597:       mkdir ${LIB}/mips 2>&-
        !           598:       ln ${LIB}/$file ${LIB}/mips/cpu.h 
        !           599:     fi
        !           600:   fi
        !           601: fi
        !           602: 
        !           603: # Incorrect sprintf declaration in X11/Xmu.h
        !           604: file=X11/Xmu.h
        !           605: if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
        !           606:   mkdir ${LIB}/X11 2>/dev/null
        !           607:   cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
        !           608:   chmod +w ${LIB}/$file 2>/dev/null
        !           609:   chmod a+r ${LIB}/$file 2>/dev/null
        !           610: fi
        !           611: 
        !           612: if [ -r ${LIB}/$file ]; then
        !           613:   echo Fixing $file sprintf declaration
        !           614:   sed -e 's,^extern char \*    sprintf();$,#ifndef __STDC__\
        !           615: extern char *  sprintf();\
        !           616: #endif /* !defined __STDC__ */,' ${LIB}/$file > ${LIB}/${file}.sed
        !           617:   rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
        !           618:   if cmp $file ${LIB}/$file >/dev/null 2>&1; then
        !           619:     rm ${LIB}/$file
        !           620:   fi
        !           621: fi
        !           622: 
        !           623: # Incorrect sprintf declaration in X11/Xmu/Xmu.h
        !           624: # (It's not clear whether the right file name is this or X11/Xmu.h.)
        !           625: file=X11/Xmu/Xmu.h
        !           626: if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
        !           627:   mkdir ${LIB}/X11/Xmu 2>/dev/null
        !           628:   cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
        !           629:   chmod +w ${LIB}/$file 2>/dev/null
        !           630:   chmod a+r ${LIB}/$file 2>/dev/null
        !           631: fi
        !           632: 
        !           633: if [ -r ${LIB}/$file ]; then
        !           634:   echo Fixing $file sprintf declaration
        !           635:   sed -e 's,^extern char \*    sprintf();$,#ifndef __STDC__\
        !           636: extern char *  sprintf();\
        !           637: #endif /* !defined __STDC__ */,' ${LIB}/$file > ${LIB}/${file}.sed
        !           638:   rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
        !           639:   if cmp $file ${LIB}/$file >/dev/null 2>&1; then
        !           640:     rm ${LIB}/$file
        !           641:   fi
        !           642: fi
        !           643: 
        !           644: # Check for missing ';' in struct
        !           645: file=netinet/ip.h
        !           646: if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
        !           647:   mkdir ${LIB}/netinet 2>/dev/null
        !           648:   cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
        !           649:   chmod +w ${LIB}/$file 2>/dev/null
        !           650:   chmod a+r ${LIB}/$file 2>/dev/null
        !           651: fi
        !           652: 
        !           653: if [ -r ${LIB}/$file ]; then
        !           654:   echo Fixing $file
        !           655:   sed -e '/^struct/,/^};/s/}$/};/' ${LIB}/$file > ${LIB}/${file}.sed
        !           656:   rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
        !           657:   if cmp $file ${LIB}/$file >/dev/null 2>&1; then
        !           658:     rm -f ${LIB}/$file
        !           659:   fi
        !           660: fi
        !           661: 
        !           662: # Fix the CAT macro in SunOS memvar.h.
        !           663: file=pixrect/memvar.h
        !           664: if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
        !           665:   mkdir ${LIB}/pixrect 2>/dev/null
        !           666:   cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
        !           667:   chmod +w ${LIB}/$file 2>/dev/null
        !           668:   chmod a+r ${LIB}/$file 2>/dev/null
        !           669: fi
        !           670: 
        !           671: if [ -r ${LIB}/$file ]; then
        !           672:   echo Fixing $file
        !           673:   sed -e '/^#define.CAT(a,b)/ i\
        !           674: #ifdef __STDC__ \
        !           675: #define CAT(a,b) a##b\
        !           676: #else
        !           677: /^#define.CAT(a,b)/ a\
        !           678: #endif
        !           679: ' ${LIB}/$file > ${LIB}/${file}.sed
        !           680:   rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
        !           681:   if cmp $file ${LIB}/$file >/dev/null 2>&1; then
        !           682:     rm -f ${LIB}/$file
        !           683:   fi
        !           684: fi
        !           685: 
        !           686: # Check for yet more missing ';' in struct (in SunOS 4.0.x)
        !           687: file=rpcsvc/rusers.h
        !           688: if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
        !           689:   mkdir ${LIB}/rpcsvc 2>/dev/null
        !           690:   cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
        !           691:   chmod +w ${LIB}/$file 2>/dev/null
        !           692:   chmod a+r ${LIB}/$file 2>/dev/null
        !           693: fi
        !           694: 
        !           695: if [ -r ${LIB}/$file ]; then
        !           696:   echo Fixing $file
        !           697:   sed -e '/^struct/,/^};/s/_cnt$/_cnt;/' ${LIB}/$file > ${LIB}/${file}.sed
        !           698:   rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
        !           699:   if cmp $file ${LIB}/$file >/dev/null 2>&1; then
        !           700:     rm -f ${LIB}/$file
        !           701:   fi
        !           702: fi
        !           703: 
        !           704: # Fix return type of exit and abort in <stdlib.h> on SunOS 4.1.
        !           705: # Also wrap protection around size_t for m88k-sysv3 systems.
        !           706: file=stdlib.h
        !           707: if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
        !           708:   cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
        !           709:   chmod +w ${LIB}/$file 2>/dev/null
        !           710:   chmod a+r ${LIB}/$file 2>/dev/null
        !           711: fi
        !           712: 
        !           713: if [ -r ${LIB}/$file ]; then
        !           714:   echo Fixing $file
        !           715:   sed -e 's/int        abort/void      abort/g' \
        !           716:   -e 's/int    free/void       free/g' \
        !           717:   -e 's/char \*        calloc/void \*  calloc/g' \
        !           718:   -e 's/char \*        malloc/void \*  malloc/g' \
        !           719:   -e 's/char \*        realloc/void \* realloc/g' \
        !           720:   -e 's/int    exit/void       exit/g' \
        !           721:   -e '/typedef[        a-zA-Z_]*[      ]size_t[        ]*;/i\
        !           722: #ifndef _GCC_SIZE_T\
        !           723: #define _GCC_SIZE_T' \
        !           724:   -e '/typedef[        a-zA-Z_]*[      ]size_t[        ]*;/a\
        !           725: #endif' \
        !           726:       ${LIB}/$file > ${LIB}/${file}.sed
        !           727:   rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
        !           728:   if cmp $file ${LIB}/$file >/dev/null 2>&1; then
        !           729:     rm -f ${LIB}/$file
        !           730:   fi
        !           731: fi
        !           732: 
        !           733: # Fix return type of free and {c,m,re}alloc in <malloc.h> on SunOS 4.1.
        !           734: file=malloc.h
        !           735: if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
        !           736:   cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
        !           737:   chmod +w ${LIB}/$file 2>/dev/null
        !           738:   chmod a+r ${LIB}/$file 2>/dev/null
        !           739: fi
        !           740: 
        !           741: if [ -r ${LIB}/$file ]; then
        !           742:   echo Fixing $file
        !           743:   sed -e 's/typedef[   ]char \*        malloc_t/typedef void \*        malloc_t/g' \
        !           744:   -e 's/int[   ][      ]*free/void     free/g' \
        !           745:   ${LIB}/$file > ${LIB}/${file}.sed
        !           746:   rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
        !           747:   if cmp $file ${LIB}/$file >/dev/null 2>&1; then
        !           748:     rm -f ${LIB}/$file
        !           749:   fi
        !           750: fi
        !           751: 
        !           752: # Fix bogus #ifdef in <hsfs/hsfs_spec.h> on SunOS 4.1.
        !           753: file=hsfs/hsfs_spec.h
        !           754: if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
        !           755:   mkdir ${LIB}/hsfs 2>/dev/null
        !           756:   cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
        !           757:   chmod +w ${LIB}/$file 2>/dev/null
        !           758:   chmod a+r ${LIB}/$file 2>/dev/null
        !           759: fi
        !           760: 
        !           761: if [ -r ${LIB}/$file ]; then
        !           762:   echo Fixing $file
        !           763:   sed -e 's/\#ifdef __i386__ || __vax__/\#if __i386__ || __vax__/g' \
        !           764:     ${LIB}/$file > ${LIB}/${file}.
        !           765:   rm -f ${LIB}/$file; mv ${LIB}/${file}. ${LIB}/$file
        !           766:   if cmp $file ${LIB}/$file >/dev/null 2>&1; then
        !           767:     rm -f ${LIB}/$file
        !           768:   fi
        !           769: fi
        !           770: 
        !           771: # Fix bogus #ifdef in <hsfs/hsnode.h> on SunOS 4.1.
        !           772: file=hsfs/hsnode.h
        !           773: if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
        !           774:   mkdir ${LIB}/hsfs 2>/dev/null
        !           775:   cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
        !           776:   chmod +w ${LIB}/$file 2>/dev/null
        !           777:   chmod a+r ${LIB}/$file 2>/dev/null
        !           778: fi
        !           779: 
        !           780: if [ -r ${LIB}/$file ]; then
        !           781:   echo Fixing $file
        !           782:   sed -e 's/\#ifdef __i386__ || __sun4c__/\#if __i386__ || __sun4c__/g' \
        !           783:     ${LIB}/$file > ${LIB}/${file}.sed
        !           784:   rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
        !           785:   if cmp $file ${LIB}/$file >/dev/null 2>&1; then
        !           786:     rm -f ${LIB}/$file
        !           787:   fi
        !           788: fi
        !           789: 
        !           790: # Fix bogus #ifdef in <hsfs/iso_spec.h> on SunOS 4.1.
        !           791: file=hsfs/iso_spec.h
        !           792: if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
        !           793:   mkdir ${LIB}/hsfs 2>/dev/null
        !           794:   cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
        !           795:   chmod +w ${LIB}/$file 2>/dev/null
        !           796:   chmod a+r ${LIB}/$file 2>/dev/null
        !           797: fi
        !           798: 
        !           799: if [ -r ${LIB}/$file ]; then
        !           800:   echo Fixing $file
        !           801:   sed -e 's/\#ifdef __i386__ || __vax__/\#if __i386__ || __vax__/g' \
        !           802:     ${LIB}/$file > ${LIB}/${file}.sed
        !           803:   rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
        !           804:   if cmp $file ${LIB}/$file >/dev/null 2>&1; then
        !           805:     rm -f ${LIB}/$file
        !           806:   fi
        !           807: fi
        !           808: 
        !           809: # Incorrect #include in Sony News-OS 3.2.
        !           810: file=machine/machparam.h
        !           811: if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
        !           812:   mkdir ${LIB}/machine 2>/dev/null
        !           813:   cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
        !           814:   chmod +w ${LIB}/$file 2>/dev/null
        !           815:   chmod a+r ${LIB}/$file 2>/dev/null
        !           816: fi
        !           817: 
        !           818: if [ -r ${LIB}/$file ]; then
        !           819:   echo Fixing $file, incorrect \#include
        !           820:   sed -e 's@"../machine/endian.h"@<machine/endian.h>@' \
        !           821:     ${LIB}/$file > ${LIB}/${file}.
        !           822:   rm -f ${LIB}/$file; mv ${LIB}/${file}. ${LIB}/$file
        !           823:   if cmp $file ${LIB}/$file >/dev/null 2>&1; then
        !           824:     rm -f ${LIB}/$file
        !           825:   fi
        !           826: fi
        !           827: 
        !           828: # Multiline comment after typedef on IRIX 4.0.1.
        !           829: file=sys/types.h
        !           830: if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
        !           831:   mkdir ${LIB}/sys 2>/dev/null
        !           832:   cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
        !           833:   chmod +w ${LIB}/$file 2>/dev/null
        !           834:   chmod a+r ${LIB}/$file 2>/dev/null
        !           835: fi
        !           836: 
        !           837: if [ -r ${LIB}/$file ]; then
        !           838:   echo Fixing $file, comment in the middle of \#ifdef
        !           839:   sed -e 's@type of the result@type of the result */@' \
        !           840:     -e 's@of the sizeof@/* of the sizeof@' \
        !           841:     ${LIB}/$file > ${LIB}/${file}.sed
        !           842:   rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
        !           843:   if cmp $file ${LIB}/$file >/dev/null 2>&1; then
        !           844:     rm -f ${LIB}/$file
        !           845:   fi
        !           846: fi
        !           847: 
        !           848: # Turning // comments into /* */ comments trashes this IRIX 4.0.1
        !           849: # header file, which embeds // comments inside multi-line /* */
        !           850: # comments.  If this looks like the IRIX header file, we refix it by
        !           851: # just throwing away the // comments.
        !           852: file=fam.h
        !           853: if [ -r ${LIB}/$file ]; then
        !           854:   if egrep indigo.esd ${LIB}/$file > /dev/null; then
        !           855:     echo Fixing $file, overeager sed script
        !           856:     rm ${LIB}/$file
        !           857:     sed -e 's|//.*$||g' $file > ${LIB}/$file
        !           858:     chmod +w ${LIB}/$file 2>/dev/null
        !           859:     chmod a+r ${LIB}/$file 2>/dev/null
        !           860:   fi
        !           861: fi
        !           862: 
        !           863: # Some IRIX header files contains the string "//"
        !           864: for file in elf_abi.h elf.h; do
        !           865:   if [ -r ${LIB}/$file ]; then
        !           866:     echo Fixing $file, overeager sed script
        !           867:     sed -e 's|"/\*"\*/|"//"|' ${LIB}/$file > ${LIB}/${file}.sed
        !           868:     rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
        !           869:     if cmp $file ${LIB}/$file >/dev/null 2>&1; then
        !           870:       rm -f ${LIB}/$file
        !           871:     fi
        !           872:   fi
        !           873: done
        !           874: 
        !           875: # Same problem with a file from SunOS 4.1.3 : a header file containing
        !           876: # the string "//" embedded in "/**/"
        !           877: file=sbusdev/audiovar.h
        !           878: if [ -r ${LIB}/$file ]; then
        !           879:   echo Fixing $file, overeager sed script
        !           880:   rm ${LIB}/$file
        !           881:   sed -e 's|//.*$||g' $file > ${LIB}/$file
        !           882:   chmod +w ${LIB}/$file 2>/dev/null
        !           883:   chmod a+r ${LIB}/$file 2>/dev/null
        !           884: fi
        !           885: 
        !           886: # Fix non-ANSI memcpy declaration that conflicts with gcc's builtin
        !           887: # declaration on Sun OS 4.x.  We must only fix this on Sun OS 4.x, because
        !           888: # many other systems have similar text but correct versions of the file.
        !           889: # To ensure only Sun's is fixed, we grep for a likely unique string.
        !           890: file=memory.h
        !           891: if [ -r $file ] && egrep '/\*  @\(#\)memory\.h 1\.[2-4] 8./../.. SMI; from S5R2 1\.2   \*/' $file > /dev/null; then
        !           892:   if [ ! -r ${LIB}/$file ]; then
        !           893:     cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
        !           894:     chmod +w ${LIB}/$file 2>/dev/null
        !           895:     chmod a+r ${LIB}/$file 2>/dev/null
        !           896:   fi
        !           897:   if [ -r ${LIB}/$file ]; then
        !           898:     echo Replacing $file
        !           899:     cat > ${LIB}/$file << EOF
        !           900: /* This file was generated by fixincludes */
        !           901: #ifndef __memory_h__
        !           902: #define __memory_h__
        !           903: 
        !           904: #ifdef __STDC__
        !           905: extern void *memccpy();
        !           906: extern void *memchr();
        !           907: extern void *memcpy();
        !           908: extern void *memset();
        !           909: #else
        !           910: extern char *memccpy();
        !           911: extern char *memchr();
        !           912: extern char *memcpy();
        !           913: extern char *memset();
        !           914: #endif /* __STDC__ */
        !           915: 
        !           916: extern int memcmp();
        !           917: 
        !           918: #endif /* __memory_h__ */
        !           919: EOF
        !           920:   fi
        !           921: fi
        !           922: 
        !           923: # parameters not const on DECstation Ultrix V4.0.
        !           924: file=stdio.h
        !           925: if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
        !           926:   cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
        !           927:   chmod +w ${LIB}/$file 2>/dev/null
        !           928:   chmod a+r ${LIB}/$file 2>/dev/null
        !           929: fi
        !           930: 
        !           931: if [ -r ${LIB}/$file ]; then
        !           932:   echo Fixing $file, non-const arg
        !           933:   sed -e 's@perror( char \*__s );@perror( const char *__s );@' \
        !           934:       -e 's@fputs( char \*__s,@fputs( const char *__s,@' \
        !           935:       -e 's@fopen( char \*__filename, char \*__type );@fopen( const char *__filename, const char *__type );@' \
        !           936:       -e 's@fwrite( void \*__ptr,@fwrite( const void *__ptr,@' \
        !           937:       -e 's@fscanf( FILE \*__stream, char \*__format,@fscanf( FILE *__stream, const char *__format,@' \
        !           938:       -e 's@scanf( char \*__format,@scanf( const char *__format,@' \
        !           939:       -e 's@sscanf( char \*__s, char \*__format,@sscanf( const char *__s, const char *__format,@' \
        !           940:     ${LIB}/$file > ${LIB}/${file}.sed
        !           941:   rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
        !           942:   if cmp $file ${LIB}/$file >/dev/null 2>&1; then
        !           943:     rm -f ${LIB}/$file
        !           944:   fi
        !           945: fi
        !           946: 
        !           947: # parameters conflict with C++ new on rs/6000 
        !           948: for file in stdio.h unistd.h ; do
        !           949:   if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
        !           950:     cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
        !           951:     chmod +w ${LIB}/$file 2>/dev/null
        !           952:   fi
        !           953: 
        !           954:   if [ -r ${LIB}/$file ]; then
        !           955:     echo Fixing $file, parameter name conflicts
        !           956:     sed -e 's@rename(const char \*old, const char \*new)@rename(const char *_old, const char *_new)@' \
        !           957:       ${LIB}/$file > ${LIB}/${file}.sed
        !           958:     rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
        !           959:     if cmp $file ${LIB}/$file >/dev/null 2>&1; then
        !           960:       rm -f ${LIB}/$file
        !           961:     fi
        !           962:   fi
        !           963: done
        !           964: 
        !           965: # function class(double x) conflicts with C++ keyword on rs/6000 
        !           966: file=math.h
        !           967: if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
        !           968:   cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
        !           969:   chmod +w ${LIB}/$file 2>/dev/null
        !           970:   chmod a+r ${LIB}/$file 2>/dev/null
        !           971: fi
        !           972: 
        !           973: if [ -r ${LIB}/$file ]; then
        !           974:   if grep 'class[(]' ${LIB}/$file >/dev/null; then
        !           975:     echo Fixing $file
        !           976:     sed -e '/class[(]/i\
        !           977: #ifndef __cplusplus' \
        !           978:         -e '/class[(]/a\
        !           979: #endif' ${LIB}/$file > ${LIB}/${file}.sed
        !           980:     rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
        !           981:     if cmp $file ${LIB}/$file >/dev/null 2>&1; then
        !           982:       rm ${LIB}/$file
        !           983:     fi
        !           984:   fi
        !           985: fi
        !           986: 
        !           987: # Wrong fchmod prototype on RS/6000.
        !           988: file=sys/stat.h
        !           989: if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
        !           990:   mkdir ${LIB}/sys 2>/dev/null
        !           991:   cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
        !           992:   chmod +w ${LIB}/$file 2>/dev/null
        !           993:   chmod a+r ${LIB}/$file 2>/dev/null
        !           994: fi
        !           995: 
        !           996: if [ -r ${LIB}/$file ]; then
        !           997:   echo Fixing $file, fchmod prototype
        !           998:   sed -e 's/fchmod(char \*/fchmod(int/' \
        !           999:     ${LIB}/$file > ${LIB}/$file.sed
        !          1000:   rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
        !          1001:   if cmp $file ${LIB}/$file >/dev/null 2>&1; then
        !          1002:     rm -f ${LIB}/$file
        !          1003:   fi
        !          1004: fi
        !          1005: 
        !          1006: # NeXT 2.0 defines 'int wait(union wait*)', which conflicts with Posix.1.
        !          1007: # Note that version 3 of the NeXT system has wait.h in a different directory,
        !          1008: # so that this code won't do anything.  But wait.h in version 3 has a
        !          1009: # conditional, so it doesn't need this fix.  So everything is okay.
        !          1010: file=sys/wait.h
        !          1011: if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
        !          1012:   cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
        !          1013:   chmod +w ${LIB}/$file 2>/dev/null
        !          1014: fi
        !          1015: 
        !          1016: if [ -r ${LIB}/$file ] \
        !          1017:   && grep 'wait[(]union wait' ${LIB}/$file >/dev/null; then
        !          1018:   echo Fixing $file, bad wait formal
        !          1019:   sed -e 's@wait(union wait@wait(void@' ${LIB}/$file > ${LIB}/${file}.sed
        !          1020:   rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
        !          1021:   if cmp $file ${LIB}/$file >/dev/null 2>&1; then
        !          1022:     rm -f ${LIB}/$file
        !          1023:   fi
        !          1024: fi
        !          1025: 
        !          1026: # Don't use or define the name va_list in stdio.h.
        !          1027: # This is for ANSI and also to interoperate properly with gvarargs.h.
        !          1028: file=stdio.h
        !          1029: if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
        !          1030:   cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
        !          1031:   chmod +w ${LIB}/$file 2>/dev/null
        !          1032:   chmod a+r ${LIB}/$file 2>/dev/null
        !          1033: fi
        !          1034: 
        !          1035: if [ -r ${LIB}/$file ]; then
        !          1036:   echo Fixing $file, use of va_list
        !          1037:   # Arrange for stdio.h to use stdarg.h to define __gnuc_va_list
        !          1038:   (echo "#define __need___va_list"
        !          1039:    echo "#include <stdarg.h>") > ${LIB}/${file}.sed
        !          1040:   # Use __gnuc_va_list in arg types in place of va_list.
        !          1041:   # On 386BSD use __gnuc_va_list instead of _VA_LIST_. We're hoping the
        !          1042:   # trailing parentheses and semicolon save all other systems from this.
        !          1043:   # Define __va_list__ (something harmless and unused) instead of va_list.
        !          1044:   # Don't claim to have defined va_list.
        !          1045:   sed -e 's@ va_list @ __gnuc_va_list @' \
        !          1046:       -e 's@ va_list)@ __gnuc_va_list)@' \
        !          1047:       -e 's@ _VA_LIST_));@ __gnuc_va_list));@' \
        !          1048:       -e 's@ va_list@ __va_list__@' \
        !          1049:       -e 's@\*va_list@*__va_list__@' \
        !          1050:       -e 's@ __va_list)@ __gnuc_va_list)@' \
        !          1051:       -e 's@_NEED___VA_LIST@_NEED___Va_LIST@' \
        !          1052:       -e 's@VA_LIST@DUMMY_VA_LIST@' \
        !          1053:       -e 's@_NEED___Va_LIST@_NEED___VA_LIST@' \
        !          1054:     ${LIB}/$file >> ${LIB}/${file}.sed
        !          1055:   
        !          1056:   rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
        !          1057:   if cmp $file ${LIB}/$file >/dev/null 2>&1; then
        !          1058:     rm -f ${LIB}/$file
        !          1059:   fi
        !          1060: fi
        !          1061: 
        !          1062: # Cancel out ansi_compat.h on Ultrix.  Replace it with empty file.
        !          1063: file=ansi_compat.h
        !          1064: if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
        !          1065:   if grep -s ULTRIX $file; then
        !          1066:     echo "/* This file intentionally left blank.  */" > $LIB/$file
        !          1067:   fi
        !          1068: fi
        !          1069: 
        !          1070: # parameter to atof not const on DECstation Ultrix V4.0.
        !          1071: # also get rid of bogus inline definitions in HP-UX 8.0
        !          1072: file=math.h
        !          1073: if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
        !          1074:   cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
        !          1075:   chmod +w ${LIB}/$file 2>/dev/null
        !          1076:   chmod a+r ${LIB}/$file 2>/dev/null
        !          1077: fi
        !          1078: 
        !          1079: if [ -r ${LIB}/$file ]; then
        !          1080:   echo Fixing $file, non-const arg
        !          1081:   sed -e 's@atof( char \*__nptr );@atof( const char *__nptr );@' \
        !          1082:       -e 's@inline int abs(int [a-z][a-z]*) {.*}@@' \
        !          1083:       -e 's@inline double abs(double [a-z][a-z]*) {.*}@@' \
        !          1084:       -e 's@inline int sqr(int [a-z][a-z]*) {.*}@@' \
        !          1085:       -e 's@inline double sqr(double [a-z][a-z]*) {.*}@@' \
        !          1086:     ${LIB}/$file > ${LIB}/${file}.sed
        !          1087:   rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
        !          1088:   if cmp $file ${LIB}/$file >/dev/null 2>&1; then
        !          1089:     rm -f ${LIB}/$file
        !          1090:   fi
        !          1091: fi
        !          1092: 
        !          1093: # Avoid nested comments on Ultrix 4.3.
        !          1094: file=rpc/svc.h
        !          1095: if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
        !          1096:   mkdir ${LIB}/rpc 2>/dev/null
        !          1097:   cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
        !          1098:   chmod +w ${LIB}/$file 2>/dev/null
        !          1099:   chmod a+r ${LIB}/$file 2>/dev/null
        !          1100: fi
        !          1101: 
        !          1102: if [ -r ${LIB}/$file ]; then
        !          1103:   echo Fixing $file, nested comment
        !          1104:   sed -e 's@^\( \*     int protocol;  \)/\*@\1*/ /*@' \
        !          1105:     ${LIB}/$file > ${LIB}/$file.sed
        !          1106:   rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
        !          1107:   if cmp $file ${LIB}/$file >/dev/null 2>&1; then
        !          1108:     rm -f ${LIB}/$file
        !          1109:   fi
        !          1110: fi
        !          1111: 
        !          1112: # In limits.h, put #ifndefs around things that are supposed to be defined
        !          1113: # in float.h to avoid redefinition errors if float.h is included first.
        !          1114: # On HP/UX this patch does not work, because on HP/UX limits.h uses
        !          1115: # multi line comments and the inserted #endif winds up inside the
        !          1116: # comment.  Fortunately, HP/UX already uses #ifndefs in limits.h; if
        !          1117: # we find a #ifndef FLT_MIN we assume that all the required #ifndefs
        !          1118: # are there, and we do not add them ourselves.
        !          1119: for file in limits.h sys/limits.h; do
        !          1120:   if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
        !          1121:     mkdir ${LIB}/sys 2>/dev/null
        !          1122:     cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
        !          1123:     chmod +w ${LIB}/$file 2>/dev/null
        !          1124:     chmod a+r ${LIB}/$file 2>/dev/null
        !          1125:   fi
        !          1126: 
        !          1127:   if [ -r ${LIB}/$file ]; then
        !          1128:     if egrep 'ifndef[  ]+FLT_MIN' ${LIB}/$file >/dev/null; then
        !          1129:       true
        !          1130:     else
        !          1131:       echo Fixing $file
        !          1132:       sed -e '/[       ]FLT_MIN[       ]/i\
        !          1133: #ifndef FLT_MIN'\
        !          1134:          -e '/[        ]FLT_MIN[       ]/a\
        !          1135: #endif'\
        !          1136:          -e '/[        ]FLT_MAX[       ]/i\
        !          1137: #ifndef FLT_MAX'\
        !          1138:          -e '/[        ]FLT_MAX[       ]/a\
        !          1139: #endif'\
        !          1140:          -e '/[        ]FLT_DIG[       ]/i\
        !          1141: #ifndef FLT_DIG'\
        !          1142:          -e '/[        ]FLT_DIG[       ]/a\
        !          1143: #endif'\
        !          1144:          -e '/[        ]DBL_MIN[       ]/i\
        !          1145: #ifndef DBL_MIN'\
        !          1146:          -e '/[        ]DBL_MIN[       ]/a\
        !          1147: #endif'\
        !          1148:          -e '/[        ]DBL_MAX[       ]/i\
        !          1149: #ifndef DBL_MAX'\
        !          1150:          -e '/[        ]DBL_MAX[       ]/a\
        !          1151: #endif'\
        !          1152:          -e '/[        ]DBL_DIG[       ]/i\
        !          1153: #ifndef DBL_DIG'\
        !          1154:          -e '/[        ]DBL_DIG[       ]/a\
        !          1155: #endif'\
        !          1156:        ${LIB}/$file > ${LIB}/${file}.sed
        !          1157:       rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
        !          1158:     fi
        !          1159:     if cmp $file ${LIB}/$file >/dev/null 2>&1; then
        !          1160:       echo Deleting ${LIB}/$file\; no fixes were needed.
        !          1161:       rm -f ${LIB}/$file
        !          1162:     fi
        !          1163:   fi
        !          1164: done
        !          1165: 
        !          1166: # In math.h, put #ifndefs around things that might be defined in a gcc
        !          1167: # specific math-*.h file.
        !          1168: file=math.h
        !          1169: if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
        !          1170:   cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
        !          1171:   chmod +w ${LIB}/$file 2>/dev/null
        !          1172:   chmod a+r ${LIB}/$file 2>/dev/null
        !          1173: fi
        !          1174: 
        !          1175: if [ -r ${LIB}/$file ]; then
        !          1176:   echo Fixing $file
        !          1177:   sed -e '/define[     ]HUGE_VAL[      ]/i\
        !          1178: #ifndef HUGE_VAL'\
        !          1179:       -e '/define[     ]HUGE_VAL[      ]/a\
        !          1180: #endif'\
        !          1181:     ${LIB}/$file > ${LIB}/${file}.sed
        !          1182:   rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
        !          1183:   if cmp $file ${LIB}/$file >/dev/null 2>&1; then
        !          1184:     echo Deleting ${LIB}/$file\; no fixes were needed.
        !          1185:     rm -f ${LIB}/$file
        !          1186:   fi
        !          1187: fi
        !          1188: 
        !          1189: # Remove erroneous parentheses in sym.h on Alpha OSF/1.
        !          1190: file=sym.h
        !          1191: if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
        !          1192:   cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
        !          1193:   chmod +w ${LIB}/$file 2>/dev/null
        !          1194:   chmod a+r ${LIB}/$file 2>/dev/null
        !          1195: fi
        !          1196: 
        !          1197: if [ -r ${LIB}/$file ]; then
        !          1198:   echo Fixing $file
        !          1199:   sed -e 's/#ifndef(__mips64)/#ifndef __mips64/' \
        !          1200:     ${LIB}/$file > ${LIB}/${file}.sed
        !          1201:   rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
        !          1202:   if cmp $file ${LIB}/$file >/dev/null 2>&1; then
        !          1203:     rm -f ${LIB}/$file
        !          1204:   fi
        !          1205: fi
        !          1206: 
        !          1207: # Fix incorrect S_IF* definitions on m88k-sysv3.
        !          1208: file=sys/stat.h
        !          1209: if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
        !          1210:   cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
        !          1211:   chmod +w ${LIB}/$file 2>/dev/null
        !          1212:   chmod a+r ${LIB}/$file 2>/dev/null
        !          1213: fi
        !          1214: 
        !          1215: if [ -r ${LIB}/$file ]; then
        !          1216:   echo Fixing $file
        !          1217:   sed -e 's/^\(#define[        ]*S_IS[A-Z]*(m)\)[      ]*(m[   ]*&[    ]*\(S_IF[A-Z][A-Z][A-Z][A-Z]*\)[        ]*)/\1 (((m)\&S_IFMT)==\2)/' \
        !          1218:       -e 's/^\(#define[        ]*S_IS[A-Z]*(m)\)[      ]*(m[   ]*&[    ]*\(0[0-9]*\)[  ]*)/\1 (((m)\&S_IFMT)==\2)/' \
        !          1219:     ${LIB}/$file > ${LIB}/${file}.sed
        !          1220:   rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
        !          1221:   if cmp $file ${LIB}/$file >/dev/null 2>&1; then
        !          1222:     rm -f ${LIB}/$file
        !          1223:   fi
        !          1224: fi
        !          1225: 
        !          1226: # Fix getopt declarations in stdio.h and stdlib.h on Alpha OSF/1.
        !          1227: for file in stdio.h stdlib.h; do
        !          1228:   if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
        !          1229:     cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
        !          1230:     chmod +w ${LIB}/$file 2>/dev/null
        !          1231:     chmod a+r ${LIB}/$file 2>/dev/null
        !          1232:   fi
        !          1233: 
        !          1234:   if [ -r ${LIB}/$file ]; then
        !          1235:     echo Fixing $file, getopt declaration
        !          1236:     sed -e 's/getopt(int, char \*\[\],char \*)/getopt(int, char *const[], const char *)/' \
        !          1237:       ${LIB}/$file > ${LIB}/${file}.sed
        !          1238:     rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
        !          1239:     if cmp $file ${LIB}/$file >/dev/null 2>&1; then
        !          1240:       rm -f ${LIB}/$file
        !          1241:     fi
        !          1242:   fi
        !          1243: done
        !          1244: 
        !          1245: # These two files on SunOS 4 are included by other files
        !          1246: # in the same directory, using "...".  So we must make sure they exist
        !          1247: # in the same directory as the other fixed files.
        !          1248: if [ -r ${INPUT}/multimedia/audio_errno.h ]
        !          1249: then
        !          1250:   ln -s ${INPUT}/multimedia/audio_errno.h ${LIB}/multimedia 2>/dev/null
        !          1251: fi
        !          1252: if [ -r ${INPUT}/multimedia/audio_hdr.h ]
        !          1253: then
        !          1254:   ln -s ${INPUT}/multimedia/audio_hdr.h ${LIB}/multimedia 2>/dev/null
        !          1255: fi
        !          1256: 
        !          1257: # Determine if we're on Interactive Unix 2.2 or later, in which case we
        !          1258: # need to fix some additional files.  This is the same test for ISC that
        !          1259: # Autoconf uses.
        !          1260: if test -d /etc/conf/kconfig.d \
        !          1261:     && grep _POSIX_VERSION /usr/include/sys/unistd.h >/dev/null 2>&1; then
        !          1262:   echo "Fixing ISC __STDC__ goof in several files..."
        !          1263:   for name in stdio.h math.h ctype.h sys/limits.h sys/fcntl.h sys/dirent.h; do
        !          1264:     echo $name
        !          1265:     if test -r ${LIB}/$name; then
        !          1266:       file=${LIB}/$name
        !          1267:     else
        !          1268:       file=${INPUT}/$name
        !          1269:     fi
        !          1270:     # On Interactive 2.2, certain traditional Unix definitions
        !          1271:     # (notably getc and putc in stdio.h) are omitted if __STDC__ is
        !          1272:     # defined, not just if _POSIX_SOURCE is defined.  This makes it
        !          1273:     # impossible to compile any nontrivial program except with -posix.
        !          1274:     sed \
        !          1275: 's/!defined(__STDC__) && !defined(_POSIX_SOURCE)/!defined(_POSIX_SOURCE)/' \
        !          1276:            < $file > ${LIB}/$name.
        !          1277:     mv ${LIB}/$name. ${LIB}/$name
        !          1278:   done
        !          1279:   
        !          1280:   echo "Fixing ISC fmod declaration"
        !          1281:   # This one's already been fixed for other things.
        !          1282:   file=${LIB}/math.h
        !          1283:   sed 's/fmod(double)/fmod(double, double)/' <$file >$file.
        !          1284:   mv $file. $file
        !          1285:   
        !          1286:   echo "Fixing nested comments in ISC <sys/limits.h>"
        !          1287:   file=sys/limits.h
        !          1288:   sed '/CHILD_MAX/s,/\* Max, Max,' < ${INPUT}/$file >${LIB}/$file.
        !          1289:   sed '/OPEN_MAX/s,/\* Max, Max,' < ${LIB}/$file. >${LIB}/$file
        !          1290: fi
        !          1291: 
        !          1292: # These files in Sun OS 4.x use /**/ to concatenate tokens.
        !          1293: for file in sparc/asm_linkage.h sun3/asm_linkage.h sun3x/asm_linkage.h \
        !          1294:        sun4/asm_linkage.h sun4c/asm_linkage.h sun4m/asm_linkage.h      \
        !          1295:        sun4c/debug/asm_linkage.h sun4m/debug/asm_linkage.h;
        !          1296: do
        !          1297:   if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
        !          1298:     cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
        !          1299:     chmod +w ${LIB}/$file 2>/dev/null
        !          1300:     chmod a+r ${LIB}/$file 2>/dev/null
        !          1301:   fi
        !          1302: 
        !          1303:   if [ -r ${LIB}/$file ]; then
        !          1304:     sed -e 's|/\*\*/|##|g' ${LIB}/$file > ${LIB}/${file}.sed
        !          1305:     rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
        !          1306:     if cmp $file ${LIB}/$file >/dev/null 2>&1; then
        !          1307:       rm -f ${LIB}/$file
        !          1308:     fi
        !          1309:   fi
        !          1310: done
        !          1311: 
        !          1312: # These files in ARM/RISCiX use /**/ to concatenate tokens.
        !          1313: for file in arm/as_support.h arm/mc_type.h arm/xcb.h dev/chardefmac.h \
        !          1314:        dev/ps_irq.h dev/screen.h dev/scsi.h sys/tty.h Xm.acorn/XmP.h
        !          1315: do
        !          1316:   if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
        !          1317:     cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
        !          1318:     chmod +w ${LIB}/$file 2>/dev/null
        !          1319:     chmod a+r ${LIB}/$file 2>/dev/null
        !          1320:   fi
        !          1321: 
        !          1322:   if [ -r ${LIB}/$file ]; then
        !          1323:     sed -e 's|/\*\*/|##|g' ${LIB}/$file > ${LIB}/${file}.sed
        !          1324:     rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
        !          1325:     if cmp $file ${LIB}/$file >/dev/null 2>&1; then
        !          1326:       rm -f ${LIB}/$file
        !          1327:     fi
        !          1328:   fi
        !          1329: done
        !          1330: 
        !          1331: echo 'Removing unneeded directories:'
        !          1332: cd $LIB
        !          1333: files=`find . -type d -print | sort -r`
        !          1334: for file in $files; do
        !          1335:   rmdir $LIB/$file > /dev/null 2>&1
        !          1336: done
        !          1337: 
        !          1338: if $LINKS; then
        !          1339:   echo 'Making internal symbolic non-directory links'
        !          1340:   cd ${INPUT}
        !          1341:   files=`find . -type l -print`
        !          1342:   for file in $files; do
        !          1343:     dest=`ls -ld $file | sed -n 's/.*-> //p'`
        !          1344:     if expr "$dest" : '[^/].*' > /dev/null; then    
        !          1345:       target=${LIB}/`echo file | sed "s|[^/]*\$|$dest|"`
        !          1346:       if [ -f $target ]; then
        !          1347:         ln -s $dest ${LIB}/$file >/dev/null 2>&1
        !          1348:       fi
        !          1349:     fi
        !          1350:   done
        !          1351: fi
        !          1352: 
        !          1353: # Make sure that any include files referenced using double quotes
        !          1354: # exist in the fixed directory.  This comes last since otherwise
        !          1355: # we might end up deleting some of these files "because they don't
        !          1356: # need any change."
        !          1357: while [ -n "$required" ]; do
        !          1358:   newreq=
        !          1359:   set x $required
        !          1360:   shift
        !          1361:   while [ $# != 0 ]; do
        !          1362:     # $1 is the directory to copy from, $2 is the unfixed file,
        !          1363:     # $3 is the fixed file name.
        !          1364:     cd ${INPUT}
        !          1365:     cd $1
        !          1366:     if [ -r $2 ] && [ ! -r $3 ]; then
        !          1367:       cp $2 $3 >/dev/null 2>&1 || echo "Can't copy $2"
        !          1368:       chmod +w $3 2>/dev/null
        !          1369:       chmod a+r $3 2>/dev/null
        !          1370:       echo Copied $2
        !          1371:       for include in `egrep '^[        ]*#[    ]*include[      ]*"[^/]' $3 | sed -e 's/^[      ]*#[    ]*include[      ]*"\([^"]*\)".*$/\1/'`; do
        !          1372:        dir=`echo $2 | sed -e s'|/[^/]*$||'`
        !          1373:        dir2=`echo $3 | sed -e s'|/[^/]*$||'`
        !          1374:        newreq="$newreq $1 $dir/$include $dir2/$include"
        !          1375:       done
        !          1376:     fi
        !          1377:     shift; shift; shift
        !          1378:   done
        !          1379:   required=$newreq
        !          1380: done
        !          1381: 
        !          1382: echo 'Cleaning up DONE files.'
        !          1383: cd $LIB
        !          1384: find . -name DONE -exec rm -f '{}' ';'
        !          1385: 
        !          1386: exit 0

unix.superglobalmegacorp.com

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