Annotation of gcc/fixinc.svr4, revision 1.1.1.7

1.1       root        1: #! /bin/sh
                      2: #
                      3: #   fixinc.svr4  --  Install modified versions of certain ANSI-incompatible
                      4: #   native System V Release 4 system include files.
                      5: #
                      6: #   Written by Ron Guilmette ([email protected]).
                      7: #
                      8: # This file is part of GNU CC.
                      9: # 
                     10: # GNU CC is free software; you can redistribute it and/or modify
                     11: # it under the terms of the GNU General Public License as published by
                     12: # the Free Software Foundation; either version 2, or (at your option)
                     13: # any later version.
                     14: # 
                     15: # GNU CC is distributed in the hope that it will be useful,
                     16: # but WITHOUT ANY WARRANTY; without even the implied warranty of
                     17: # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
                     18: # GNU General Public License for more details.
                     19: # 
                     20: # You should have received a copy of the GNU General Public License
                     21: # along with GNU CC; see the file COPYING.  If not, write to
                     22: # the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
                     23: #
                     24: #      This script munges the native include files provided with System V
                     25: #      Release 4 systems so as to remove things which are violations of the
                     26: #      ANSI C standard.  Once munged, the resulting new system include files
                     27: #      are placed in a directory that GNU C will search *before* searching
                     28: #      the /usr/include directory. This script should work properly for most
                     29: #      System V Release 4 systems.  For other types of systems, you should
                     30: #      use the `fixincludes' script instead.
                     31: #
                     32: #      See README-fixinc for more information.
                     33: 
                     34: # Directory containing the original header files.
                     35: INPUT=${2-${INPUT-/usr/include}}
                     36: 
                     37: # Fail if no arg to specify a directory for the output.
                     38: if [ x$1 = x ]
                     39: then echo fixincludes: no output directory specified
                     40: exit 1
                     41: fi
                     42: 
                     43: # Directory in which to store the results.
1.1.1.4   root       44: LIB=${1?"fixincludes: output directory not specified"}
1.1       root       45: 
                     46: # Make sure it exists.
                     47: if [ ! -d $LIB ]; then
                     48:   mkdir $LIB || exit 1
                     49: fi
                     50: 
                     51: ORIG_DIR=`pwd`
                     52: 
1.1.1.5   root       53: # Make LIB absolute if it is relative.
                     54: # Don't do this if not necessary, since may screw up automounters.
                     55: case $LIB in
                     56: /*)
                     57:        ;;
                     58: *)
1.1.1.6   root       59:        LIB=$ORIG_DIR/$LIB
1.1.1.5   root       60:        ;;
                     61: esac
1.1       root       62: 
                     63: echo 'Building fixincludes in ' ${LIB}
                     64: 
1.1.1.2   root       65: # Determine whether this filesystem has symbolic links.
1.1       root       66: if ln -s X $LIB/ShouldNotExist 2>/dev/null; then
                     67:   rm -f $LIB/ShouldNotExist
                     68:   LINKS=true
                     69: else
                     70:   LINKS=false
                     71: fi
                     72: 
                     73: echo 'Making directories:'
                     74: cd ${INPUT}
                     75: if $LINKS; then
                     76:   files=`ls -LR | sed -n s/:$//p`
                     77: else
                     78:   files=`find . -type d -print | sed '/^.$/d'`
                     79: fi
                     80: for file in $files; do
                     81:   rm -rf $LIB/$file
                     82:   if [ ! -d $LIB/$file ]
                     83:   then mkdir $LIB/$file
                     84:   fi
                     85: done
                     86: 
                     87: # treetops gets an alternating list
                     88: # of old directories to copy
                     89: # and the new directories to copy to.
                     90: treetops="${INPUT} ${LIB}"
                     91: 
                     92: if $LINKS; then
                     93:   echo 'Making internal symbolic directory links'
                     94:   for file in $files; do
                     95:     dest=`ls -ld $file | sed -n 's/.*-> //p'`
                     96:     if [ "$dest" ]; then    
                     97:       cwd=`pwd`
                     98:       # In case $dest is relative, get to $file's dir first.
                     99:       cd ${INPUT}
                    100:       cd `echo ./$file | sed -n 's&[^/]*$&&p'`
                    101:       # Check that the target directory exists.
                    102:       # Redirections changed to avoid bug in sh on Ultrix.
                    103:       (cd $dest) > /dev/null 2>&1
                    104:       if [ $? = 0 ]; then
                    105:        cd $dest
                    106:        # X gets the dir that the link actually leads to.
                    107:        x=`pwd`
                    108:        # If link leads back into ${INPUT},
                    109:        # make a similar link here.
                    110:        if expr $x : "${INPUT}/.*" > /dev/null; then
                    111:          # Y gets the actual target dir name, relative to ${INPUT}.
                    112:          y=`echo $x | sed -n "s&${INPUT}/&&p"`
1.1.1.6   root      113:          # DOTS is the relative path from ${LIB}/$file's dir back to ${LIB}.
                    114:          dots=`echo "$file" |
                    115:            sed -e 's@^./@@' -e 's@/./@/@g' -e 's@[^/][^/]*@..@g' -e 's@..$@@'`
                    116:          echo $file '->' $dots$y ': Making link'
1.1       root      117:          rm -fr ${LIB}/$file > /dev/null 2>&1
1.1.1.6   root      118:          ln -s $dots$y ${LIB}/$file > /dev/null 2>&1
1.1       root      119:        else
                    120:          # If the link is to outside ${INPUT},
                    121:          # treat this directory as if it actually contained the files.
                    122: # This line used to have $dest instead of $x.
                    123: # $dest seemed to be wrong for links found in subdirectories
                    124: # of ${INPUT}.  Does this change break anything?
                    125:          treetops="$treetops $x ${LIB}/$file"
                    126:        fi
                    127:       fi
                    128:       cd $cwd
                    129:     fi
                    130:   done
                    131: fi
                    132: 
                    133: set - $treetops
                    134: while [ $# != 0 ]; do
                    135:   # $1 is an old directory to copy, and $2 is the new directory to copy to.
                    136:   echo "Finding header files in $1:"
                    137:   cd ${INPUT}
                    138:   cd $1
                    139:   files=`find . -name '*.h' -type f -print`
                    140:   echo 'Checking header files:'
                    141:   for file in $files; do
                    142:       if [ -r $file ]; then
                    143:        cp $file $2/$file >/dev/null 2>&1 || echo "Can't copy $file"
                    144:        chmod +w $2/$file
1.1.1.5   root      145:        chmod a+r $2/$file
1.1       root      146: 
                    147: # The following have been removed from the sed command below
                    148: # because it is more useful to leave these things in.
                    149: # The only reason to remove them was for -pedantic,
                    150: # which isn't much of a reason. -- rms.
                    151: #        /^[   ]*#[    ]*ident/d
                    152: 
1.1.1.4   root      153: # This code makes Solaris SCSI fail, because it changes the
                    154: # alignment within some critical structures.  See <sys/scsi/impl/commands.h>.
                    155: #        s/u_char\([   ][      ]*[a-zA-Z0-9_][a-zA-Z0-9_]*[    ]*:[    ]*[0-9][0-9]*\)/u_int\1/
                    156: # Disable these also, since they probably aren't safe either.
                    157: #        s/u_short\([  ][      ]*[a-zA-Z0-9_][a-zA-Z0-9_]*[    ]*:[    ]*[0-9][0-9]*\)/u_int\1/
                    158: #        s/ushort\([   ][      ]*[a-zA-Z0-9_][a-zA-Z0-9_]*[    ]*:[    ]*[0-9][0-9]*\)/u_int\1/
                    159: #        s/evcm_t\([   ][      ]*[a-zA-Z0-9_][a-zA-Z0-9_]*[    ]*:[    ]*[0-9][0-9]*\)/u_int\1/
                    160: #        s/Pbyte\([    ][      ]*[a-zA-Z0-9_][a-zA-Z0-9_]*[    ]*:[    ]*SEQSIZ\)/unsigned int\1/
                    161: 
1.1       root      162: # The change of u_char, etc, to u_int
                    163: # applies to bit fields.
                    164:        sed -e '
1.1.1.6   root      165:          s%^\([        ]*#[    ]*else\)[       ]*/[^*].*%\1%
                    166:          s%^\([        ]*#[    ]*else\)[       ]*[^/   ].*%\1%
                    167:          s%^\([        ]*#[    ]*endif\)[      ]*/[^*].*%\1%
                    168:          s%^\([        ]*#[    ]*endif\)[      ]*[^/   ].*%\1%
1.1       root      169:          s/#lint(on)/defined(lint)/g
                    170:          s/#lint(off)/!defined(lint)/g
                    171:          s/#machine(\([^)]*\))/defined(__\1__)/g
                    172:          s/#system(\([^)]*\))/defined(__\1__)/g
                    173:          s/#cpu(\([^)]*\))/defined(__\1__)/g
1.1.1.2   root      174:          /#[a-z]*if.*[  (]m68k/                s/\([^_]\)m68k/\1__m68k__/g
1.1.1.3   root      175:          /#[a-z]*if.*[  (]__i386\([^_]\)/      s/__i386/__i386__/g
1.1.1.2   root      176:          /#[a-z]*if.*[  (]i386/                s/\([^_]\)i386/\1__i386__/g
1.1.1.7 ! root      177:          /#[a-z]*if.*[  (!]__i860\([^_]\)/     s/__i860/__i860__/g
        !           178:          /#[a-z]*if.*[  (!]i860/               s/\([^_]\)i860/\1__i860__/g
1.1.1.2   root      179:          /#[a-z]*if.*[  (]sparc/       s/\([^_]\)sparc/\1__sparc__/g
                    180:          /#[a-z]*if.*[  (]mc68000/     s/\([^_]\)mc68000/\1__mc68000__/g
                    181:          /#[a-z]*if.*[  (]vax/         s/\([^_]\)vax/\1__vax__/g
                    182:          /#[a-z]*if.*[  (]sun/         s/\([^_]\)\(sun[a-z0-9]*\)\([^a-z0-9_]\)/\1__\2__\3/g
                    183:          /#[a-z]*if.*[  (]sun/         s/\([^_]\)\(sun[a-z0-9]*\)$/\1__\2__/g
                    184:          /#[a-z]*if.*[  (]ns32000/     s/\([^_]\)ns32000/\1__ns32000__/g
                    185:          /#[a-z]*if.*[  (]pyr/         s/\([^_]\)pyr/\1__pyr__/g
                    186:          /#[a-z]*if.*[  (]is68k/       s/\([^_]\)is68k/\1__is68k__/g
1.1.1.6   root      187:          s/__STDC__[   ][      ]*==[   ][      ]*0/!defined (__STRICT_ANSI__)/g
                    188:          s/__STDC__[   ][      ]*==[   ][      ]*1/defined (__STRICT_ANSI__)/g
                    189:          s/__STDC__[   ][      ]*!=[   ][      ]*0/defined (__STRICT_ANSI__)/g
1.1       root      190:          s/__STDC__ - 0 == 0/!defined (__STRICT_ANSI__)/g
                    191:        ' $2/$file > $2/$file.sed
                    192:        mv $2/$file.sed $2/$file
                    193:        if cmp $file $2/$file >/dev/null 2>&1; then
                    194:           rm $2/$file
1.1.1.5   root      195:        else
                    196:           echo Fixed $file
1.1       root      197:        fi
                    198:       fi
                    199:   done
                    200:   shift; shift
                    201: done
                    202: 
1.1.1.7 ! root      203: # Install the proper definition of the three standard types in header files
        !           204: # that they come from.
        !           205: for file in sys/types.h stdlib.h sys/stdtypes.h stddef.h memory.h unistd.h; do
        !           206:   if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
        !           207:     cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
        !           208:     chmod +w ${LIB}/$file 2>/dev/null
        !           209:     chmod a+r ${LIB}/$file 2>/dev/null
        !           210:   fi
        !           211: 
        !           212:   if [ -r ${LIB}/$file ]; then
        !           213:     echo Fixing size_t, ptrdiff_t and wchar_t in $file
        !           214:     sed \
        !           215:       -e '/typedef[    ][      ]*[a-z_][       a-z_]*[         ]size_t/i\
        !           216: #ifndef __SIZE_TYPE__\
        !           217: #define __SIZE_TYPE__ long unsigned int\
        !           218: #endif
        !           219: ' \
        !           220:       -e 's/typedef[   ][      ]*[a-z_][       a-z_]*[         ]size_t/typedef __SIZE_TYPE__ size_t/' \
        !           221:       -e '/typedef[    ][      ]*[a-z_][       a-z_]*[         ]ptrdiff_t/i\
        !           222: #ifndef __PTRDIFF_TYPE__\
        !           223: #define __PTRDIFF_TYPE__ long int\
        !           224: #endif
        !           225: ' \
        !           226:       -e 's/typedef[   ][      ]*[a-z_][       a-z_]*[         ]ptrdiff_t/typedef __PTRDIFF_TYPE__ ptrdiff_t/' \
        !           227:       -e '/typedef[    ][      ]*[a-z_][       a-z_]*[         ]wchar_t/i\
        !           228: #ifndef __WCHAR_TYPE__\
        !           229: #define __WCHAR_TYPE__ int\
        !           230: #endif
        !           231: ' \
        !           232:       -e 's/typedef[   ][      ]*[a-z_][       a-z_]*[         ]wchar_t/typedef __WCHAR_TYPE__ wchar_t/' \
        !           233:       ${LIB}/$file > ${LIB}/${file}.sed
        !           234:     rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
        !           235:     if cmp $file ${LIB}/$file >/dev/null 2>&1; then
        !           236:       rm ${LIB}/$file
        !           237:     fi
        !           238:   fi
        !           239: done
        !           240: 
1.1       root      241: # Fix first broken decl of getcwd present on some svr4 systems.
                    242: 
                    243: file=stdlib.h
                    244: base=`basename $file`
                    245: if [ -r ${LIB}/$file ]; then
                    246:   file_to_fix=${LIB}/$file
                    247: else
                    248:   if [ -r ${INPUT}/$file ]; then
                    249:     file_to_fix=${INPUT}/$file
                    250:   else
                    251:     file_to_fix=""
                    252:   fi
                    253: fi
                    254: if [ \! -z "$file_to_fix" ]; then
                    255:   echo Checking $file_to_fix
                    256:   sed -e 's/getcwd(char \*, int)/getcwd(char *, size_t)/' $file_to_fix > /tmp/$base
                    257:   if cmp $file_to_fix /tmp/$base >/dev/null 2>&1; then \
1.1.1.5   root      258:     true
1.1       root      259:   else
                    260:     echo Fixed $file_to_fix
                    261:     rm -f ${LIB}/$file
                    262:     cp /tmp/$base ${LIB}/$file
1.1.1.5   root      263:     chmod a+r ${LIB}/$file
1.1       root      264:   fi
                    265:   rm -f /tmp/$base
                    266: fi
                    267: 
                    268: # Fix second broken decl of getcwd present on some svr4 systems.  Also
                    269: # fix the incorrect decl of profil present on some svr4 systems.
                    270: 
                    271: file=unistd.h
                    272: base=`basename $file`
                    273: if [ -r ${LIB}/$file ]; then
                    274:   file_to_fix=${LIB}/$file
                    275: else
                    276:   if [ -r ${INPUT}/$file ]; then
                    277:     file_to_fix=${INPUT}/$file
                    278:   else
                    279:     file_to_fix=""
                    280:   fi
                    281: fi
                    282: if [ \! -z "$file_to_fix" ]; then
                    283:   echo Checking $file_to_fix
                    284:   sed -e 's/getcwd(char \*, int)/getcwd(char *, size_t)/' $file_to_fix \
                    285:     | sed -e 's/profil(unsigned short \*, unsigned int, unsigned int, unsigned int)/profil(unsigned short *, size_t, int, unsigned)/' > /tmp/$base
                    286:   if cmp $file_to_fix /tmp/$base >/dev/null 2>&1; then \
1.1.1.5   root      287:     true
1.1       root      288:   else
                    289:     echo Fixed $file_to_fix
                    290:     rm -f ${LIB}/$file
                    291:     cp /tmp/$base ${LIB}/$file
1.1.1.5   root      292:     chmod a+r ${LIB}/$file
1.1       root      293:   fi
                    294:   rm -f /tmp/$base
                    295: fi
                    296: 
                    297: # Fix the definition of NULL in <sys/param.h> so that it is conditional
                    298: # and so that it is correct for both C and C++.
                    299: 
                    300: file=sys/param.h
                    301: base=`basename $file`
                    302: if [ -r ${LIB}/$file ]; then
                    303:   file_to_fix=${LIB}/$file
                    304: else
                    305:   if [ -r ${INPUT}/$file ]; then
                    306:     file_to_fix=${INPUT}/$file
                    307:   else
                    308:     file_to_fix=""
                    309:   fi
                    310: fi
                    311: if [ \! -z "$file_to_fix" ]; then
                    312:   echo Checking $file_to_fix
                    313:   cp $file_to_fix /tmp/$base
                    314:   chmod +w /tmp/$base
1.1.1.5   root      315:   chmod a+r /tmp/$base
                    316:   sed -e '/^#define[   ]*NULL[         ]*0$/c\
                    317: #ifndef NULL\
                    318: #ifdef __cplusplus\
                    319: #define __NULL_TYPE\
                    320: #else /* !defined(__cplusplus) */\
                    321: #define __NULL_TYPE (void *)\
                    322: #endif /* !defined(__cplusplus) */\
                    323: #define NULL (__NULL_TYPE 0)\
                    324: #endif /* !defined(NULL) */' /tmp/$base > /tmp/$base.sed
                    325:   if cmp $file_to_fix /tmp/$base.sed >/dev/null 2>&1; then \
                    326:     true
1.1       root      327:   else
                    328:     echo Fixed $file_to_fix
                    329:     rm -f ${LIB}/$file
1.1.1.5   root      330:     cp /tmp/$base.sed ${LIB}/$file
                    331:     chmod a+r ${LIB}/$file
1.1       root      332:   fi
1.1.1.5   root      333:   rm -f /tmp/$base /tmp/$base.sed
1.1       root      334: fi
                    335: 
                    336: # Likewise fix the definition of NULL in <stdio.h> so that it is conditional
                    337: # and so that it is correct for both C and C++.
                    338: 
                    339: file=stdio.h
                    340: base=`basename $file`
                    341: if [ -r ${LIB}/$file ]; then
                    342:   file_to_fix=${LIB}/$file
                    343: else
                    344:   if [ -r ${INPUT}/$file ]; then
                    345:     file_to_fix=${INPUT}/$file
                    346:   else
                    347:     file_to_fix=""
                    348:   fi
                    349: fi
                    350: if [ \! -z "$file_to_fix" ]; then
                    351:   echo Checking $file_to_fix
                    352:   cp $file_to_fix /tmp/$base
                    353:   chmod +w /tmp/$base
1.1.1.5   root      354:   sed -e '/^#define[   ]*NULL[         ]*0$/c\
                    355: #ifdef __cplusplus\
                    356: #define __NULL_TYPE\
                    357: #else /* !defined(__cplusplus) */\
                    358: #define __NULL_TYPE (void *)\
                    359: #endif /* !defined(__cplusplus) */\
                    360: #define NULL (__NULL_TYPE 0)' /tmp/$base > /tmp/$base.sed
                    361:   if cmp $file_to_fix /tmp/$base.sed >/dev/null 2>&1; then \
                    362:     true
1.1       root      363:   else
                    364:     echo Fixed $file_to_fix
                    365:     rm -f ${LIB}/$file
1.1.1.5   root      366:     cp /tmp/$base.sed ${LIB}/$file
                    367:     chmod a+r ${LIB}/$file
1.1       root      368:   fi
1.1.1.5   root      369:   rm -f /tmp/$base /tmp/$base.sed
1.1       root      370: fi
                    371: 
1.1.1.3   root      372: # Likewise fix the definition of NULL in <dbm.h> so that it is conditional
                    373: # and so that it is correct for both C and C++.
                    374: 
                    375: file=dbm.h
                    376: base=`basename $file`
                    377: if [ -r ${LIB}/$file ]; then
                    378:   file_to_fix=${LIB}/$file
                    379: else
                    380:   if [ -r ${INPUT}/$file ]; then
                    381:     file_to_fix=${INPUT}/$file
                    382:   else
                    383:     file_to_fix=""
                    384:   fi
                    385: fi
                    386: if [ \! -z "$file_to_fix" ]; then
                    387:   echo Checking $file_to_fix
                    388:   cp $file_to_fix /tmp/$base
                    389:   chmod +w /tmp/$base
1.1.1.5   root      390:   sed -e '/^#define[   ]*NULL[         ]*((char \*) 0)$/c\
                    391: #ifndef NULL\
                    392: #ifdef __cplusplus\
                    393: #define __NULL_TYPE\
                    394: #else /* !defined(__cplusplus) */\
                    395: #define __NULL_TYPE (void *)\
                    396: #endif /* !defined(__cplusplus) */\
                    397: #define NULL (__NULL_TYPE 0)\
                    398: #endif /* !defined(NULL) */' /tmp/$base > /tmp/$base.sed
                    399:   if cmp $file_to_fix /tmp/$base.sed >/dev/null 2>&1; then \
                    400:     true
1.1.1.3   root      401:   else
                    402:     echo Fixed $file_to_fix
                    403:     rm -f ${LIB}/$file
1.1.1.5   root      404:     cp /tmp/$base.sed ${LIB}/$file
                    405:     chmod a+r ${LIB}/$file
1.1.1.3   root      406:   fi
1.1.1.5   root      407:   rm -f /tmp/$base /tmp/$base.sed
1.1.1.3   root      408: fi
                    409: 
1.1.1.4   root      410: # Add a prototyped declaration of mmap to <sys/mman.h>.
1.1       root      411: 
                    412: file=sys/mman.h
                    413: base=`basename $file`
                    414: if [ -r ${LIB}/$file ]; then
                    415:   file_to_fix=${LIB}/$file
                    416: else
                    417:   if [ -r ${INPUT}/$file ]; then
                    418:     file_to_fix=${INPUT}/$file
                    419:   else
                    420:     file_to_fix=""
                    421:   fi
                    422: fi
                    423: if [ \! -z "$file_to_fix" ]; then
                    424:   echo Checking $file_to_fix
                    425:   cp $file_to_fix /tmp/$base
                    426:   chmod +w /tmp/$base
1.1.1.5   root      427:   sed -e '/^extern caddr_t mmap();$/c\
                    428: #ifdef __STDC__\
1.1.1.7 ! root      429: extern caddr_t mmap (caddr_t, size_t, int, int, int, off_t);\
1.1.1.5   root      430: #else /* !defined(__STDC__) */\
                    431: extern caddr_t mmap ();\
                    432: #endif /* !defined(__STDC__) */' /tmp/$base > /tmp/$base.sed
                    433:   if cmp $file_to_fix /tmp/$base.sed >/dev/null 2>&1; then \
                    434:     true
1.1       root      435:   else
                    436:     echo Fixed $file_to_fix
                    437:     rm -f ${LIB}/$file
1.1.1.5   root      438:     cp /tmp/$base.sed ${LIB}/$file
                    439:     chmod a+r ${LIB}/$file
1.1       root      440:   fi
1.1.1.5   root      441:   rm -f /tmp/$base /tmp/$base.sed
1.1       root      442: fi
                    443: 
1.1.1.6   root      444: # Fix declarations of `ftw' and `nftw' in <ftw.h>.  On some/most SVR4 systems
                    445: # the file <ftw.h> contains extern declarations of these functions followed
                    446: # by explicitly `static' definitions of these functions... and that's not
                    447: # allowed according to ANSI C.  (Note however that on Solaris, this header
                    448: # file glitch has been pre-fixed by Sun.  In the Solaris version of <ftw.h>
                    449: # there are no static definitions of any function so we don't need to do
                    450: # any of this stuff when on Solaris.
1.1       root      451: 
                    452: file=ftw.h
                    453: base=`basename $file`
                    454: if [ -r ${LIB}/$file ]; then
                    455:   file_to_fix=${LIB}/$file
                    456: else
                    457:   if [ -r ${INPUT}/$file ]; then
                    458:     file_to_fix=${INPUT}/$file
                    459:   else
                    460:     file_to_fix=""
                    461:   fi
                    462: fi
1.1.1.6   root      463: if test -z "$file_to_fix" || grep 'define      ftw' $file_to_fix > /dev/null; then
                    464: # Either we have no <ftw.h> file at all, or else we have the pre-fixed Solaris
                    465: # one.  Either way, we don't have to do anything.
                    466:   true
                    467: else
1.1       root      468:   echo Checking $file_to_fix
                    469:   cp $file_to_fix /tmp/$base
                    470:   chmod +w /tmp/$base
1.1.1.6   root      471:   sed -e '/^extern int ftw(const/i\
1.1.1.5   root      472: #if !defined(_STYPES)\
                    473: static\
                    474: #else\
                    475: extern\
1.1.1.6   root      476: #endif'\
                    477:   -e 's/extern \(int ftw(const.*\)$/\1/' \
                    478:   -e '/^extern int nftw/i\
1.1.1.5   root      479: #if defined(_STYPES)\
                    480: static\
                    481: #else\
                    482: extern\
1.1.1.6   root      483: #endif'\
                    484:   -e 's/extern \(int nftw.*\)$/\1/' \
1.1.1.5   root      485:   -e '/^extern int ftw(),/c\
                    486: #if !defined(_STYPES)\
                    487: static\
                    488: #else\
                    489: extern\
                    490: #endif\
                    491:   int ftw();\
                    492: #if defined(_STYPES)\
                    493: static\
                    494: #else\
                    495: extern\
                    496: #endif\
                    497:   int nftw();' /tmp/$base > /tmp/$base.sed
                    498:   if cmp $file_to_fix /tmp/$base.sed >/dev/null 2>&1; then \
                    499:     true
1.1       root      500:   else
                    501:     echo Fixed $file_to_fix
                    502:     rm -f ${LIB}/$file
1.1.1.5   root      503:     cp /tmp/$base.sed ${LIB}/$file
                    504:     chmod a+r ${LIB}/$file
1.1       root      505:   fi
1.1.1.5   root      506:   rm -f /tmp/$base /tmp/$base.sed
1.1       root      507: fi
                    508: 
1.1.1.7 ! root      509: # Avoid the definition of the bool type in the Solaris 2.x curses.h when using
        !           510: # g++, since it's now an official type in the C++ language.
        !           511: file=curses.h
        !           512: base=`basename $file`
        !           513: if [ -r ${LIB}/$file ]; then
        !           514:   file_to_fix=${LIB}/$file
        !           515: else
        !           516:   if [ -r ${INPUT}/$file ]; then
        !           517:     file_to_fix=${INPUT}/$file
        !           518:   else
        !           519:     file_to_fix=""
        !           520:   fi
        !           521: fi
        !           522: 
        !           523: if [ \! -z "$file_to_fix" ]; then
        !           524:   echo Checking $file_to_fix
        !           525:   cp $file_to_fix /tmp/$base
        !           526:   chmod +w /tmp/$base
        !           527:   sed -e 's,^typedef[  ]char[  ]bool;$,#ifndef __cplusplus\
        !           528: typedef        char bool;\
        !           529: #endif /* !defined __cplusplus */,' /tmp/$base > /tmp/$base.sed
        !           530:   if cmp $file_to_fix /tmp/$base.sed >/dev/null 2>&1; then \
        !           531:     true
        !           532:   else
        !           533:     echo Fixed $file_to_fix
        !           534:     rm -f ${LIB}/$file
        !           535:     cp /tmp/$base.sed ${LIB}/$file
        !           536:     chmod a+r ${LIB}/$file
        !           537:   fi
        !           538:   rm -f /tmp/$base /tmp/$base.sed
        !           539: fi
        !           540: 
1.1       root      541: # Add a `static' declaration of `getrnge' into <regexp.h>.
                    542: 
1.1.1.4   root      543: # Don't do this if there is already a `static void getrnge' declaration
                    544: # present, since this would cause a redeclaration error.  Solaris 2.x has
                    545: # such a declaration.
                    546: 
1.1       root      547: file=regexp.h
                    548: base=`basename $file`
                    549: if [ -r ${LIB}/$file ]; then
                    550:   file_to_fix=${LIB}/$file
                    551: else
                    552:   if [ -r ${INPUT}/$file ]; then
                    553:     file_to_fix=${INPUT}/$file
                    554:   else
                    555:     file_to_fix=""
                    556:   fi
                    557: fi
                    558: if [ \! -z "$file_to_fix" ]; then
                    559:   echo Checking $file_to_fix
1.1.1.4   root      560:   if grep "static void getrnge" $file_to_fix > /dev/null; then
                    561:     true
                    562:   else
                    563:     cp $file_to_fix /tmp/$base
                    564:     chmod +w /tmp/$base
1.1.1.5   root      565:     sed -e '/^static int[      ]*size;/c\
                    566: static int     size ;\
                    567: \
                    568: static int getrnge ();' /tmp/$base > /tmp/$base.sed
                    569:     if cmp $file_to_fix /tmp/$base.sed >/dev/null 2>&1; then \
                    570:       true
1.1.1.4   root      571:     else
                    572:       echo Fixed $file_to_fix
                    573:       rm -f ${LIB}/$file
1.1.1.5   root      574:       cp /tmp/$base.sed ${LIB}/$file
                    575:       chmod a+r ${LIB}/$file
1.1.1.4   root      576:     fi
                    577:   fi
1.1.1.5   root      578:   rm -f /tmp/$base /tmp/$base.sed
1.1.1.4   root      579: fi
                    580: 
                    581: # Disable apparent native compiler optimization cruft in SVR4.2 <string.h>
                    582: # that is visible to any ANSI compiler using this include.  Simply
1.1.1.5   root      583: # delete the lines that #define some string functions to internal forms.
1.1.1.4   root      584: 
                    585: file=string.h
                    586: base=`basename $file`
                    587: if [ -r ${LIB}/$file ]; then
                    588:   file_to_fix=${LIB}/$file
                    589: else
                    590:   if [ -r ${INPUT}/$file ]; then
                    591:     file_to_fix=${INPUT}/$file
                    592:   else
                    593:     file_to_fix=""
                    594:   fi
                    595: fi
                    596: if [ \! -z "$file_to_fix" ]; then
                    597:   echo Checking $file_to_fix
                    598:   cp $file_to_fix /tmp/$base
                    599:   chmod +w /tmp/$base
1.1.1.5   root      600:   sed -e '/#define.*__std_hdr_/d' /tmp/$base > /tmp/$base.sed
                    601:   if cmp $file_to_fix /tmp/$base.sed >/dev/null 2>&1; then \
                    602:     true
1.1       root      603:   else
                    604:     echo Fixed $file_to_fix
                    605:     rm -f ${LIB}/$file
1.1.1.5   root      606:     cp /tmp/$base.sed ${LIB}/$file
                    607:     chmod a+r ${LIB}/$file
                    608:   fi
                    609:   rm -f /tmp/$base /tmp/$base.sed
                    610: fi
                    611: 
                    612: # Delete any #defines of `__i386' which may be present in <ieeefp.h>.  They
                    613: # tend to conflict with the compiler's own definition of this symbol.  (We
                    614: # will use the compiler's definition.)
                    615: # Likewise __sparc, for Solaris, and __i860, and a few others
                    616: # (guessing it is necessary for all of them).
                    617: 
                    618: file=ieeefp.h
                    619: base=`basename $file`
                    620: if [ -r ${LIB}/$file ]; then
                    621:   file_to_fix=${LIB}/$file
                    622: else
                    623:   if [ -r ${INPUT}/$file ]; then
                    624:     file_to_fix=${INPUT}/$file
                    625:   else
                    626:     file_to_fix=""
1.1       root      627:   fi
                    628: fi
1.1.1.5   root      629: if [ \! -z "$file_to_fix" ]; then
                    630:   echo Checking $file_to_fix
                    631:   cp $file_to_fix /tmp/$base
                    632:   chmod +w /tmp/$base
                    633:   sed -e '/#define[    ]*__i386 /d' -e '/#define[      ]*__sparc /d' \
                    634:       -e '/#define[    ]*__i860 /d' -e '/#define[      ]*__m88k /d' \
                    635:       -e '/#define[    ]*__mips /d' -e '/#define[      ]*__m68k /d' \
                    636:      /tmp/$base > /tmp/$base.sed
                    637:   if cmp $file_to_fix /tmp/$base.sed >/dev/null 2>&1; then \
                    638:     true
                    639:   else
                    640:     echo Fixed $file_to_fix 
                    641:     rm -f ${LIB}/$file
                    642:     cp /tmp/$base.sed ${LIB}/$file 
                    643:     chmod a+r ${LIB}/$file
                    644:   fi
                    645:   rm -f /tmp/$base /tmp/$base.sed 
                    646: fi 
1.1       root      647: 
                    648: # Add a #define of _SIGACTION_ into <sys/signal.h>.
1.1.1.4   root      649: # Also fix types of SIG_DFL, SIG_ERR, SIG_IGN, and SIG_HOLD.
1.1       root      650: 
                    651: file=sys/signal.h
                    652: base=`basename $file`
                    653: if [ -r ${LIB}/$file ]; then
                    654:   file_to_fix=${LIB}/$file
                    655: else
                    656:   if [ -r ${INPUT}/$file ]; then
                    657:     file_to_fix=${INPUT}/$file
                    658:   else
                    659:     file_to_fix=""
                    660:   fi
                    661: fi
                    662: if [ \! -z "$file_to_fix" ]; then
                    663:   echo Checking $file_to_fix
                    664:   cp $file_to_fix /tmp/$base
                    665:   chmod +w /tmp/$base
1.1.1.5   root      666:   sed -e '/^struct sigaction {/c\
                    667: #define _SIGACTION_\
                    668: struct  sigaction  {' \
                    669:   -e '1,$s/(void *(\*)())/(void (*)(int))/' /tmp/$base > /tmp/$base.sed
                    670:   if cmp $file_to_fix /tmp/$base.sed >/dev/null 2>&1; then \
                    671:     true
1.1       root      672:   else
                    673:     echo Fixed $file_to_fix
                    674:     rm -f ${LIB}/$file
1.1.1.5   root      675:     cp /tmp/$base.sed ${LIB}/$file
                    676:     chmod a+r ${LIB}/$file
1.1       root      677:   fi
1.1.1.5   root      678:   rm -f /tmp/$base /tmp/$base.sed
1.1       root      679: fi
                    680: 
                    681: # Fix declarations of `makedev', `major', and `minor' in <sys/mkdev.h>.
                    682: 
                    683: file=sys/mkdev.h
                    684: base=`basename $file`
                    685: if [ -r ${LIB}/$file ]; then
                    686:   file_to_fix=${LIB}/$file
                    687: else
                    688:   if [ -r ${INPUT}/$file ]; then
                    689:     file_to_fix=${INPUT}/$file
                    690:   else
                    691:     file_to_fix=""
                    692:   fi
                    693: fi
                    694: if [ \! -z "$file_to_fix" ]; then
                    695:   echo Checking $file_to_fix
                    696:   cp $file_to_fix /tmp/$base
                    697:   chmod +w /tmp/$base
1.1.1.5   root      698:   sed -e '/^dev_t makedev(const/c\
                    699: static dev_t makedev(const major_t, const minor_t);' \
                    700:   -e '/^dev_t makedev()/c\
                    701: static dev_t makedev();' \
                    702:   -e '/^major_t major(const/c\
                    703: static major_t major(const dev_t);' \
                    704:   -e '/^major_t major()/c\
                    705: static major_t major();' \
                    706:   -e '/^minor_t minor(const/c\
                    707: static minor_t minor(const dev_t);' \
                    708:   -e '/^minor_t minor()/c\
                    709: static minor_t minor();' /tmp/$base > /tmp/$base.sed
                    710:   if cmp $file_to_fix /tmp/$base.sed >/dev/null 2>&1; then \
                    711:     true
1.1       root      712:   else
                    713:     echo Fixed $file_to_fix
                    714:     rm -f ${LIB}/$file
1.1.1.5   root      715:     cp /tmp/$base.sed ${LIB}/$file
                    716:     chmod a+r ${LIB}/$file
1.1       root      717:   fi
1.1.1.5   root      718:   rm -f /tmp/$base /tmp/$base.sed
1.1       root      719: fi
                    720: 
                    721: # Fix reference to NMSZ in <sys/adv.h>.
                    722: 
                    723: file=sys/adv.h
                    724: base=`basename $file`
                    725: if [ -r ${LIB}/$file ]; then
                    726:   file_to_fix=${LIB}/$file
                    727: else
                    728:   if [ -r ${INPUT}/$file ]; then
                    729:     file_to_fix=${INPUT}/$file
                    730:   else
                    731:     file_to_fix=""
                    732:   fi
                    733: fi
                    734: if [ \! -z "$file_to_fix" ]; then
                    735:   echo Checking $file_to_fix
                    736:   sed 's/\[NMSZ\]/\[RFS_NMSZ\]/g' $file_to_fix > /tmp/$base
                    737:   if cmp $file_to_fix /tmp/$base >/dev/null 2>&1; then \
1.1.1.5   root      738:     true
1.1       root      739:   else
                    740:     echo Fixed $file_to_fix
                    741:     rm -f ${LIB}/$file
                    742:     cp /tmp/$base ${LIB}/$file
1.1.1.5   root      743:     chmod a+r ${LIB}/$file
1.1       root      744:   fi
                    745:   rm -f /tmp/$base
                    746: fi
                    747: 
                    748: # Fix reference to NC_NPI_RAW in <sys/netcspace.h>.  Also fix types of
                    749: # array initializers.
                    750: 
                    751: file=sys/netcspace.h
                    752: base=`basename $file`
                    753: if [ -r ${LIB}/$file ]; then
                    754:   file_to_fix=${LIB}/$file
                    755: else
                    756:   if [ -r ${INPUT}/$file ]; then
                    757:     file_to_fix=${INPUT}/$file
                    758:   else
                    759:     file_to_fix=""
                    760:   fi
                    761: fi
                    762: if [ \! -z "$file_to_fix" ]; then
                    763:   echo Checking $file_to_fix
                    764:   sed 's/NC_NPI_RAW/NC_TPI_RAW/g' $file_to_fix \
                    765:     | sed 's/NC_/(unsigned long) NC_/' > /tmp/$base
                    766:   if cmp $file_to_fix /tmp/$base >/dev/null 2>&1; then \
1.1.1.5   root      767:     true
1.1       root      768:   else
                    769:     echo Fixed $file_to_fix
                    770:     rm -f ${LIB}/$file
                    771:     cp /tmp/$base ${LIB}/$file
1.1.1.5   root      772:     chmod a+r ${LIB}/$file
1.1       root      773:   fi
                    774:   rm -f /tmp/$base
                    775: fi
                    776: 
                    777: # Conditionalize all of <fs/rfs/rf_cache.h> on _KERNEL being defined.
                    778: 
                    779: file=fs/rfs/rf_cache.h
                    780: base=`basename $file`
                    781: if [ -r ${LIB}/$file ]; then
                    782:   file_to_fix=${LIB}/$file
                    783: else
                    784:   if [ -r ${INPUT}/$file ]; then
                    785:     file_to_fix=${INPUT}/$file
                    786:   else
                    787:     file_to_fix=""
                    788:   fi
                    789: fi
                    790: if [ \! -z "$file_to_fix" ]; then
                    791:   echo Checking $file_to_fix
                    792:   if grep _KERNEL $file_to_fix > /dev/null; then
1.1.1.5   root      793:     true
1.1       root      794:   else
                    795:     echo '#ifdef _KERNEL' > /tmp/$base
                    796:     cat $file_to_fix >> /tmp/$base
                    797:     echo '#endif /* defined(_KERNEL) */' >> /tmp/$base
                    798:     echo Fixed $file_to_fix
                    799:     rm -f ${LIB}/$file
                    800:     cp /tmp/$base ${LIB}/$file
1.1.1.5   root      801:     chmod a+r ${LIB}/$file
1.1       root      802:     rm -f /tmp/$base
                    803:   fi
                    804: fi
                    805: 
                    806: # Conditionalize all of <sys/erec.h> on _KERNEL being defined.
                    807: 
                    808: file=sys/erec.h
                    809: base=`basename $file`
                    810: if [ -r ${LIB}/$file ]; then
                    811:   file_to_fix=${LIB}/$file
                    812: else
                    813:   if [ -r ${INPUT}/$file ]; then
                    814:     file_to_fix=${INPUT}/$file
                    815:   else
                    816:     file_to_fix=""
                    817:   fi
                    818: fi
                    819: if [ \! -z "$file_to_fix" ]; then
                    820:   echo Checking $file_to_fix
                    821:   if grep _KERNEL $file_to_fix > /dev/null; then
1.1.1.5   root      822:     true
1.1       root      823:   else
                    824:     echo '#ifdef _KERNEL' > /tmp/$base
                    825:     cat $file_to_fix >> /tmp/$base
                    826:     echo '#endif /* defined(_KERNEL) */' >> /tmp/$base
                    827:     echo Fixed $file_to_fix
                    828:     rm -f ${LIB}/$file
                    829:     cp /tmp/$base ${LIB}/$file
1.1.1.5   root      830:     chmod a+r ${LIB}/$file
1.1       root      831:     rm -f /tmp/$base
                    832:   fi
                    833: fi
                    834: 
                    835: # Conditionalize all of <sys/err.h> on _KERNEL being defined.
                    836: 
                    837: file=sys/err.h
                    838: base=`basename $file`
                    839: if [ -r ${LIB}/$file ]; then
                    840:   file_to_fix=${LIB}/$file
                    841: else
                    842:   if [ -r ${INPUT}/$file ]; then
                    843:     file_to_fix=${INPUT}/$file
                    844:   else
                    845:     file_to_fix=""
                    846:   fi
                    847: fi
                    848: if [ \! -z "$file_to_fix" ]; then
                    849:   echo Checking $file_to_fix
                    850:   if grep _KERNEL $file_to_fix > /dev/null; then
1.1.1.5   root      851:     true
1.1       root      852:   else
                    853:     echo '#ifdef _KERNEL' > /tmp/$base
                    854:     cat $file_to_fix >> /tmp/$base
                    855:     echo '#endif /* defined(_KERNEL) */' >> /tmp/$base
                    856:     echo Fixed $file_to_fix
                    857:     rm -f ${LIB}/$file
                    858:     cp /tmp/$base ${LIB}/$file
1.1.1.5   root      859:     chmod a+r ${LIB}/$file
1.1       root      860:     rm -f /tmp/$base
                    861:   fi
                    862: fi
                    863: 
                    864: # Conditionalize all of <sys/char.h> on _KERNEL being defined.
                    865: 
                    866: file=sys/char.h
                    867: base=`basename $file`
                    868: if [ -r ${LIB}/$file ]; then
                    869:   file_to_fix=${LIB}/$file
                    870: else
                    871:   if [ -r ${INPUT}/$file ]; then
                    872:     file_to_fix=${INPUT}/$file
                    873:   else
                    874:     file_to_fix=""
                    875:   fi
                    876: fi
                    877: if [ \! -z "$file_to_fix" ]; then
                    878:   echo Checking $file_to_fix
                    879:   if grep _KERNEL $file_to_fix > /dev/null; then
1.1.1.5   root      880:     true
1.1       root      881:   else
                    882:     echo '#ifdef _KERNEL' > /tmp/$base
                    883:     cat $file_to_fix >> /tmp/$base
                    884:     echo '#endif /* defined(_KERNEL) */' >> /tmp/$base
                    885:     echo Fixed $file_to_fix
                    886:     rm -f ${LIB}/$file
                    887:     cp /tmp/$base ${LIB}/$file
1.1.1.5   root      888:     chmod a+r ${LIB}/$file
1.1       root      889:     rm -f /tmp/$base
                    890:   fi
                    891: fi
                    892: 
                    893: # Conditionalize all of <sys/getpages.h> on _KERNEL being defined.
                    894: 
                    895: file=sys/getpages.h
                    896: base=`basename $file`
                    897: if [ -r ${LIB}/$file ]; then
                    898:   file_to_fix=${LIB}/$file
                    899: else
                    900:   if [ -r ${INPUT}/$file ]; then
                    901:     file_to_fix=${INPUT}/$file
                    902:   else
                    903:     file_to_fix=""
                    904:   fi
                    905: fi
                    906: if [ \! -z "$file_to_fix" ]; then
                    907:   echo Checking $file_to_fix
                    908:   if grep _KERNEL $file_to_fix > /dev/null; then
1.1.1.5   root      909:     true
1.1       root      910:   else
                    911:     echo '#ifdef _KERNEL' > /tmp/$base
                    912:     cat $file_to_fix >> /tmp/$base
                    913:     echo '#endif /* defined(_KERNEL) */' >> /tmp/$base
                    914:     echo Fixed $file_to_fix
                    915:     rm -f ${LIB}/$file
                    916:     cp /tmp/$base ${LIB}/$file
1.1.1.5   root      917:     chmod a+r ${LIB}/$file
1.1       root      918:     rm -f /tmp/$base
                    919:   fi
                    920: fi
                    921: 
                    922: # Conditionalize all of <sys/map.h> on _KERNEL being defined.
                    923: 
                    924: file=sys/map.h
                    925: base=`basename $file`
                    926: if [ -r ${LIB}/$file ]; then
                    927:   file_to_fix=${LIB}/$file
                    928: else
                    929:   if [ -r ${INPUT}/$file ]; then
                    930:     file_to_fix=${INPUT}/$file
                    931:   else
                    932:     file_to_fix=""
                    933:   fi
                    934: fi
                    935: if [ \! -z "$file_to_fix" ]; then
                    936:   echo Checking $file_to_fix
                    937:   if grep _KERNEL $file_to_fix > /dev/null; then
1.1.1.5   root      938:     true
1.1       root      939:   else
                    940:     echo '#ifdef _KERNEL' > /tmp/$base
                    941:     cat $file_to_fix >> /tmp/$base
                    942:     echo '#endif /* defined(_KERNEL) */' >> /tmp/$base
                    943:     echo Fixed $file_to_fix
                    944:     rm -f ${LIB}/$file
                    945:     cp /tmp/$base ${LIB}/$file
1.1.1.5   root      946:     chmod a+r ${LIB}/$file
1.1       root      947:     rm -f /tmp/$base
                    948:   fi
                    949: fi
                    950: 
                    951: # Conditionalize all of <sys/cmn_err.h> on _KERNEL being defined.
                    952: 
                    953: file=sys/cmn_err.h
                    954: base=`basename $file`
                    955: if [ -r ${LIB}/$file ]; then
                    956:   file_to_fix=${LIB}/$file
                    957: else
                    958:   if [ -r ${INPUT}/$file ]; then
                    959:     file_to_fix=${INPUT}/$file
                    960:   else
                    961:     file_to_fix=""
                    962:   fi
                    963: fi
                    964: if [ \! -z "$file_to_fix" ]; then
                    965:   echo Checking $file_to_fix
                    966:   if grep _KERNEL $file_to_fix > /dev/null; then
1.1.1.5   root      967:     true
1.1       root      968:   else
                    969:     echo '#ifdef _KERNEL' > /tmp/$base
                    970:     cat $file_to_fix >> /tmp/$base
                    971:     echo '#endif /* defined(_KERNEL) */' >> /tmp/$base
                    972:     echo Fixed $file_to_fix
                    973:     rm -f ${LIB}/$file
                    974:     cp /tmp/$base ${LIB}/$file
1.1.1.5   root      975:     chmod a+r ${LIB}/$file
1.1       root      976:     rm -f /tmp/$base
                    977:   fi
                    978: fi
                    979: 
                    980: # Conditionalize all of <sys/kdebugger.h> on _KERNEL being defined.
                    981: 
                    982: file=sys/kdebugger.h
                    983: base=`basename $file`
                    984: if [ -r ${LIB}/$file ]; then
                    985:   file_to_fix=${LIB}/$file
                    986: else
                    987:   if [ -r ${INPUT}/$file ]; then
                    988:     file_to_fix=${INPUT}/$file
                    989:   else
                    990:     file_to_fix=""
                    991:   fi
                    992: fi
                    993: if [ \! -z "$file_to_fix" ]; then
                    994:   echo Checking $file_to_fix
                    995:   if grep _KERNEL $file_to_fix > /dev/null; then
1.1.1.5   root      996:     true
1.1       root      997:   else
                    998:     echo '#ifdef _KERNEL' > /tmp/$base
                    999:     cat $file_to_fix >> /tmp/$base
                   1000:     echo '#endif /* defined(_KERNEL) */' >> /tmp/$base
                   1001:     echo Fixed $file_to_fix
                   1002:     rm -f ${LIB}/$file
                   1003:     cp /tmp/$base ${LIB}/$file
1.1.1.5   root     1004:     chmod a+r ${LIB}/$file
1.1       root     1005:     rm -f /tmp/$base
                   1006:   fi
                   1007: fi
                   1008: 
1.1.1.4   root     1009: # Conditionalize some of <netinet/in.h> on _KERNEL being defined.
                   1010: 
                   1011: file=netinet/in.h
                   1012: base=`basename $file`
                   1013: if [ -r ${LIB}/$file ]; then
                   1014:   file_to_fix=${LIB}/$file
                   1015: else
                   1016:   if [ -r ${INPUT}/$file ]; then
                   1017:     file_to_fix=${INPUT}/$file
                   1018:   else
                   1019:     file_to_fix=""
                   1020:   fi
                   1021: fi
                   1022: if [ \! -z "$file_to_fix" ]; then
                   1023:   echo Checking $file_to_fix
                   1024:   if grep _KERNEL $file_to_fix > /dev/null; then
1.1.1.5   root     1025:     true
1.1.1.4   root     1026:   else
                   1027:     sed -e '/#ifdef INKERNEL/i\
                   1028: #ifdef _KERNEL' \
                   1029:     -e '/#endif[       ]*\/\* INKERNEL \*\//a\
                   1030: #endif /* _KERNEL */' \
                   1031:     $file_to_fix > ${LIB}/${file}.sed
                   1032:     rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
                   1033:     echo Fixed $file_to_fix
                   1034:   fi
                   1035: fi
                   1036: 
                   1037: # Conditionalize some of <sys/endian.h> on __GNUC__ and __GNUG__.
                   1038: 
                   1039: file=sys/endian.h
                   1040: base=`basename $file`
                   1041: if [ -r ${LIB}/$file ]; then
                   1042:   file_to_fix=${LIB}/$file
                   1043: else
                   1044:   if [ -r ${INPUT}/$file ]; then
                   1045:     file_to_fix=${INPUT}/$file
                   1046:   else
                   1047:     file_to_fix=""
                   1048:   fi
                   1049: fi
                   1050: if [ \! -z "$file_to_fix" ]; then
                   1051:   echo Checking $file_to_fix
                   1052:   if grep __GNUC__ $file_to_fix > /dev/null; then
1.1.1.5   root     1053:     true
1.1.1.4   root     1054:   else
                   1055:     sed -e '/# ifdef   __STDC__/i\
                   1056: #   if !defined (__GNUC__) && !defined (__GNUG__)' \
                   1057:     -e '/#             include <sys\/byteorder.h>/s/           /   /'\
                   1058:     -e '/#   include   <sys\/byteorder.h>/i\
                   1059: #   endif /* !defined (__GNUC__) && !defined (__GNUG__) */'\
                   1060:     $file_to_fix > ${LIB}/${file}.sed
                   1061:     rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
                   1062:     echo Fixed $file_to_fix
                   1063:   fi
                   1064: fi
                   1065: 
                   1066: # Commented out because [email protected] says we don't clearly need it
                   1067: # and the text in types.h is not erroneous.
                   1068: ## In sys/types.h, don't name the enum for booleans.
                   1069: #
                   1070: #file=sys/types.h
                   1071: #base=`basename $file`
                   1072: #if [ -r ${LIB}/$file ]; then
                   1073: #  file_to_fix=${LIB}/$file
                   1074: #else
                   1075: #  if [ -r ${INPUT}/$file ]; then
                   1076: #    file_to_fix=${INPUT}/$file
                   1077: #  else
                   1078: #    file_to_fix=""
                   1079: #  fi
                   1080: #fi
                   1081: #if [ \! -z "$file_to_fix" ]; then
                   1082: #  echo Checking $file_to_fix
                   1083: #  if grep "enum boolean" $file_to_fix > /dev/null; then
                   1084: #    sed -e 's/enum boolean/enum/' ${LIB}/$file > ${LIB}/${file}.sed
                   1085: #    rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
                   1086: #    echo Fixed $file_to_fix
                   1087: #  else
1.1.1.5   root     1088: #    true
1.1.1.4   root     1089: #  fi
                   1090: #fi
                   1091: 
                   1092: # Remove useless extern keyword from struct forward declarations in
                   1093: # <sys/stream.h> and <sys/strsubr.h>
                   1094: 
                   1095: file=sys/stream.h
                   1096: base=`basename $file`
                   1097: if [ -r ${LIB}/$file ]; then
                   1098:   file_to_fix=${LIB}/$file
                   1099: else
                   1100:   if [ -r ${INPUT}/$file ]; then
                   1101:     file_to_fix=${INPUT}/$file
                   1102:   else
                   1103:     file_to_fix=""
                   1104:   fi
                   1105: fi
                   1106: if [ \! -z "$file_to_fix" ]; then
                   1107:   echo Checking $file_to_fix
                   1108:   sed -e '
                   1109:     s/extern struct stdata;/struct stdata;/g
                   1110:     s/extern struct strevent;/struct strevent;/g
                   1111:   ' $file_to_fix > /tmp/$base 
                   1112:   if cmp $file_to_fix /tmp/$base >/dev/null 2>&1; then \
1.1.1.5   root     1113:     true
1.1.1.4   root     1114:   else
                   1115:     echo Fixed $file_to_fix
                   1116:     rm -f ${LIB}/$file
                   1117:     cp /tmp/$base ${LIB}/$file
1.1.1.5   root     1118:     chmod a+r ${LIB}/$file
1.1.1.4   root     1119:   fi
                   1120:   rm -f /tmp/$base
                   1121: fi
                   1122: 
                   1123: file=sys/strsubr.h
                   1124: base=`basename $file`
                   1125: if [ -r ${LIB}/$file ]; then
                   1126:   file_to_fix=${LIB}/$file
                   1127: else
                   1128:   if [ -r ${INPUT}/$file ]; then
                   1129:     file_to_fix=${INPUT}/$file
                   1130:   else
                   1131:     file_to_fix=""
                   1132:   fi
                   1133: fi
                   1134: if [ \! -z "$file_to_fix" ]; then
                   1135:   echo Checking $file_to_fix
                   1136:   sed -e '
                   1137:     s/extern struct strbuf;/struct strbuf;/g
                   1138:     s/extern struct uio;/struct uio;/g
                   1139:     s/extern struct thread;/struct thread;/g
                   1140:     s/extern struct proc;/struct proc;/g
                   1141:   ' $file_to_fix > /tmp/$base 
                   1142:   if cmp $file_to_fix /tmp/$base >/dev/null 2>&1; then \
1.1.1.5   root     1143:     true
1.1.1.4   root     1144:   else
                   1145:     echo Fixed $file_to_fix
                   1146:     rm -f ${LIB}/$file
                   1147:     cp /tmp/$base ${LIB}/$file
1.1.1.5   root     1148:     chmod a+r ${LIB}/$file
                   1149:   fi
                   1150:   rm -f /tmp/$base
                   1151: fi
                   1152: 
                   1153: # Put storage class at start of decl, to avoid warning.
                   1154: file=rpc/types.h
                   1155: base=`basename $file`
                   1156: if [ -r ${LIB}/$file ]; then
                   1157:   file_to_fix=${LIB}/$file
                   1158: else
                   1159:   if [ -r ${INPUT}/$file ]; then
                   1160:     file_to_fix=${INPUT}/$file
                   1161:   else
                   1162:     file_to_fix=""
                   1163:   fi
                   1164: fi
                   1165: if [ \! -z "$file_to_fix" ]; then
                   1166:   echo Checking $file_to_fix
                   1167:   sed -e '
                   1168:     s/const extern/extern const/g
                   1169:   ' $file_to_fix > /tmp/$base 
                   1170:   if cmp $file_to_fix /tmp/$base >/dev/null 2>&1; then \
                   1171:     true
                   1172:   else
                   1173:     echo Fixed $file_to_fix
                   1174:     rm -f ${LIB}/$file
                   1175:     cp /tmp/$base ${LIB}/$file
                   1176:     chmod a+r ${LIB}/$file
1.1.1.4   root     1177:   fi
                   1178:   rm -f /tmp/$base
                   1179: fi
                   1180: 
                   1181: # Convert functions to prototype form, and fix arg names in <sys/stat.h>.
                   1182: 
                   1183: file=sys/stat.h
                   1184: base=`basename $file`
                   1185: if [ -r ${LIB}/$file ]; then
                   1186:   file_to_fix=${LIB}/$file
                   1187: else
                   1188:   if [ -r ${INPUT}/$file ]; then
                   1189:     file_to_fix=${INPUT}/$file
                   1190:   else
                   1191:     file_to_fix=""
                   1192:   fi
                   1193: fi
                   1194: if [ \! -z "$file_to_fix" ]; then
                   1195:   echo Checking $file_to_fix
                   1196:   cp $file_to_fix /tmp/$base
                   1197:   chmod +w /tmp/$base
1.1.1.6   root     1198:   sed -e '/^stat([     ]*[^c]/{
1.1.1.5   root     1199: N
                   1200: N
                   1201: s/(.*)\n/( /
                   1202: s/;\n/, /
                   1203: s/;$/)/
                   1204: }' \
1.1.1.6   root     1205:   -e '/^lstat([        ]*[^c]/{
1.1.1.5   root     1206: N
                   1207: N
                   1208: s/(.*)\n/( /
                   1209: s/;\n/, /
                   1210: s/;$/)/
                   1211: }' \
1.1.1.6   root     1212:   -e '/^fstat([        ]*[^i]/{
1.1.1.5   root     1213: N
                   1214: N
                   1215: s/(.*)\n/( /
                   1216: s/;\n/, /
                   1217: s/;$/)/
                   1218: }' \
1.1.1.6   root     1219:   -e '/^mknod([        ]*[^c]/{
1.1.1.5   root     1220: N
                   1221: N
                   1222: N
                   1223: s/(.*)\n/( /
                   1224: s/;\n/, /g
                   1225: s/;$/)/
                   1226: }' \
                   1227:   -e '1,$s/\([^A-Za-z]\)path\([^A-Za-z]\)/\1__path\2/g' \
                   1228:   -e '1,$s/\([^A-Za-z]\)buf\([^A-Za-z]\)/\1__buf\2/g' \
                   1229:   -e '1,$s/\([^A-Za-z]\)fd\([^A-Za-z]\)/\1__fd\2/g' \
                   1230:   -e '1,$s/ret\([^u]\)/__ret\1/g' \
                   1231:   -e '1,$s/\([^_]\)mode\([^_]\)/\1__mode\2/g' \
                   1232:   -e '1,$s/\([^_r]\)dev\([^_]\)/\1__dev\2/g' /tmp/$base > /tmp/$base.sed
                   1233:   if cmp $file_to_fix /tmp/$base.sed >/dev/null 2>&1; then \
                   1234:     true
                   1235:   else
                   1236:     echo Fixed $file_to_fix
                   1237:     rm -f ${LIB}/$file
                   1238:     cp /tmp/$base.sed ${LIB}/$file
                   1239:     chmod a+r ${LIB}/$file
                   1240:   fi
                   1241:   rm -f /tmp/$base /tmp/$base.sed
1.1.1.4   root     1242: fi
                   1243: 
1.1.1.2   root     1244: # Sony NEWSOS 5.0 does not support the complete ANSI C standard.
                   1245: 
                   1246: if [ -x /bin/sony ]; then
                   1247:   if /bin/sony; then
                   1248: 
                   1249:     # Change <stdio.h> to not define __filbuf, __flsbuf, and __iob
                   1250: 
                   1251:     file=stdio.h
                   1252:     base=`basename $file`
                   1253:     if [ -r ${LIB}/$file ]; then
                   1254:       file_to_fix=${LIB}/$file
                   1255:     else
                   1256:       if [ -r ${INPUT}/$file ]; then
                   1257:         file_to_fix=${INPUT}/$file
                   1258:       else
                   1259:         file_to_fix=""
                   1260:       fi
                   1261:     fi
                   1262:     if [ \! -z "$file_to_fix" ]; then
                   1263:       echo Checking $file_to_fix
                   1264:       cp $file_to_fix /tmp/$base
                   1265:       chmod +w /tmp/$base
                   1266:       sed -e '
                   1267:         s/__filbuf/_filbuf/g
                   1268:         s/__flsbuf/_flsbuf/g
                   1269:         s/__iob/_iob/g
                   1270:       ' /tmp/$base > /tmp/$base.sed
                   1271:       mv /tmp/$base.sed /tmp/$base
                   1272:       if cmp $file_to_fix /tmp/$base.sed >/dev/null 2>&1; then
1.1.1.5   root     1273:         true
1.1.1.2   root     1274:       else
                   1275:         echo Fixed $file_to_fix
                   1276:         rm -f ${LIB}/$file
                   1277:         cp /tmp/$base ${LIB}/$file
1.1.1.5   root     1278:         chmod a+r ${LIB}/$file
1.1.1.2   root     1279:       fi
                   1280:       rm -f /tmp/$base
                   1281:     fi
                   1282: 
                   1283:     # Change <ctype.h> to not define __ctype
                   1284: 
                   1285:     file=ctype.h
                   1286:     base=`basename $file`
                   1287:     if [ -r ${LIB}/$file ]; then
                   1288:       file_to_fix=${LIB}/$file
                   1289:     else
                   1290:       if [ -r ${INPUT}/$file ]; then
                   1291:         file_to_fix=${INPUT}/$file
                   1292:       else
                   1293:         file_to_fix=""
                   1294:       fi
                   1295:     fi
                   1296:     if [ \! -z "$file_to_fix" ]; then
                   1297:       echo Checking $file_to_fix
                   1298:       cp $file_to_fix /tmp/$base
                   1299:       chmod +w /tmp/$base
                   1300:       sed -e '
                   1301:         s/__ctype/_ctype/g
                   1302:       ' /tmp/$base > /tmp/$base.sed
                   1303:       mv /tmp/$base.sed /tmp/$base
                   1304:       if cmp $file_to_fix /tmp/$base.sed >/dev/null 2>&1; then
1.1.1.5   root     1305:         true
1.1.1.2   root     1306:       else
                   1307:         echo Fixed $file_to_fix
                   1308:         rm -f ${LIB}/$file
                   1309:         cp /tmp/$base ${LIB}/$file
1.1.1.5   root     1310:         chmod a+r ${LIB}/$file
1.1.1.2   root     1311:       fi
                   1312:       rm -f /tmp/$base
                   1313:     fi
                   1314:   fi
                   1315: fi
                   1316: 
1.1.1.4   root     1317: # In limits.h, put #ifndefs around things that are supposed to be defined
                   1318: # in float.h to avoid redefinition errors if float.h is included first.
                   1319: # Solaris 2.1 has this problem.
                   1320: 
                   1321: file=limits.h
                   1322: base=`basename $file`
                   1323: if [ -r ${LIB}/$file ]; then
                   1324:   file_to_fix=${LIB}/$file
                   1325: else
                   1326:   if [ -r ${INPUT}/$file ]; then
                   1327:     file_to_fix=${INPUT}/$file
                   1328:   else
                   1329:     file_to_fix=""
                   1330:   fi
                   1331: fi
                   1332: if [ \! -z "$file_to_fix" ]; then
                   1333:   echo Checking $file_to_fix
                   1334:   sed -e '/[   ]FLT_MIN[       ]/i\
                   1335: #ifndef FLT_MIN'\
                   1336:       -e '/[   ]FLT_MIN[       ]/a\
                   1337: #endif'\
                   1338:       -e '/[   ]FLT_MAX[       ]/i\
                   1339: #ifndef FLT_MAX'\
                   1340:       -e '/[   ]FLT_MAX[       ]/a\
                   1341: #endif'\
                   1342:       -e '/[   ]FLT_DIG[       ]/i\
                   1343: #ifndef FLT_DIG'\
                   1344:       -e '/[   ]FLT_DIG[       ]/a\
                   1345: #endif'\
                   1346:       -e '/[   ]DBL_MIN[       ]/i\
                   1347: #ifndef DBL_MIN'\
                   1348:       -e '/[   ]DBL_MIN[       ]/a\
                   1349: #endif'\
                   1350:       -e '/[   ]DBL_MAX[       ]/i\
                   1351: #ifndef DBL_MAX'\
                   1352:       -e '/[   ]DBL_MAX[       ]/a\
                   1353: #endif'\
                   1354:       -e '/[   ]DBL_DIG[       ]/i\
                   1355: #ifndef DBL_DIG'\
                   1356:       -e '/[   ]DBL_DIG[       ]/a\
                   1357: #endif' $file_to_fix > /tmp/$base
                   1358:   if cmp $file_to_fix /tmp/$base >/dev/null 2>&1; then \
1.1.1.5   root     1359:     true
1.1.1.4   root     1360:   else
                   1361:     echo Fixed $file_to_fix
                   1362:     rm -f ${LIB}/$file
                   1363:     cp /tmp/$base ${LIB}/$file
1.1.1.5   root     1364:     chmod a+r ${LIB}/$file
1.1.1.4   root     1365:   fi
                   1366:   rm -f /tmp/$base
                   1367: fi
                   1368: 
1.1.1.5   root     1369: # Completely replace <sys/varargs.h> with a file that includes gcc's
                   1370: # stdarg.h or varargs.h files as appropriate.
                   1371: 
                   1372: file=sys/varargs.h
                   1373: if [ -r ${INPUT}/$file ]; then
                   1374:   echo Replacing $file
                   1375:   cat > ${LIB}/$file << EOF
                   1376: /* This file was generated by fixincludes.  */
                   1377: #ifndef _SYS_VARARGS_H
                   1378: #define _SYS_VARARGS_H
                   1379: 
                   1380: #ifdef __STDC__
                   1381: #include <stdarg.h>
                   1382: #else
                   1383: #include <varargs.h>
                   1384: #endif
                   1385: 
                   1386: #endif  /* _SYS_VARARGS_H */
                   1387: EOF
                   1388:   chmod a+r ${LIB}/$file
                   1389: fi
                   1390: 
1.1.1.6   root     1391: # In math.h, put #ifndefs around things that might be defined in a gcc
                   1392: # specific math-*.h file.
                   1393: 
                   1394: file=math.h
                   1395: base=`basename $file`
                   1396: if [ -r ${LIB}/$file ]; then
                   1397:   file_to_fix=${LIB}/$file
                   1398: else
                   1399:   if [ -r ${INPUT}/$file ]; then
                   1400:     file_to_fix=${INPUT}/$file
                   1401:   else
                   1402:     file_to_fix=""
                   1403:   fi
                   1404: fi
                   1405: if [ \! -z "$file_to_fix" ]; then
                   1406:   echo Checking $file_to_fix
                   1407:   sed -e '/define[     ]HUGE_VAL[      ]/i\
                   1408: #ifndef HUGE_VAL'\
                   1409:       -e '/define[     ]HUGE_VAL[      ]/a\
                   1410: #endif' $file_to_fix > /tmp/$base
                   1411:   if cmp $file_to_fix /tmp/$base >/dev/null 2>&1; then \
                   1412:     true
                   1413:   else
                   1414:     echo Fixed $file_to_fix
                   1415:     rm -f ${LIB}/$file
                   1416:     cp /tmp/$base ${LIB}/$file
                   1417:     chmod a+r ${LIB}/$file
                   1418:   fi
                   1419:   rm -f /tmp/$base
                   1420: fi
                   1421: 
1.1.1.7 ! root     1422: # Solaris math.h and floatingpoint.h define __P without protection,
        !          1423: # which conflicts with the fixproto definition.  The fixproto
        !          1424: # definition and the Solaris definition are used the same way.
        !          1425: for file in math.h floatingpoint.h; do
        !          1426:   base=`basename $file`
        !          1427:   if [ -r ${LIB}/$file ]; then
        !          1428:     file_to_fix=${LIB}/$file
        !          1429:   else
        !          1430:     if [ -r ${INPUT}/$file ]; then
        !          1431:       file_to_fix=${INPUT}/$file
        !          1432:     else
        !          1433:       file_to_fix=""
        !          1434:     fi
        !          1435:   fi
        !          1436:   if [ \! -z "$file_to_fix" ]; then
        !          1437:     echo Checking $file_to_fix
        !          1438:     sed -e '/^#define[         ]*__P/i\
        !          1439: #ifndef __P'\
        !          1440:         -e '/^#define[         ]*__P/a\
        !          1441: #endif' $file_to_fix > /tmp/$base
        !          1442:     if cmp $file_to_fix /tmp/$base >/dev/null 2>&1; then \
        !          1443:       true
        !          1444:     else
        !          1445:       echo Fixed $file_to_fix
        !          1446:       rm -f ${LIB}/$file
        !          1447:       cp /tmp/$base ${LIB}/$file
        !          1448:       chmod a+r ${LIB}/$file
        !          1449:     fi
        !          1450:    rm -f /tmp/$base
        !          1451:   fi
        !          1452: done
        !          1453: 
1.1       root     1454: echo 'Removing unneeded directories:'
                   1455: cd $LIB
                   1456: files=`find . -type d -print | sort -r`
                   1457: for file in $files; do
                   1458:   rmdir $LIB/$file > /dev/null 2>&1
                   1459: done
                   1460: 
                   1461: if $LINKS; then
                   1462:   echo 'Making internal symbolic non-directory links'
                   1463:   cd ${INPUT}
                   1464:   files=`find . -type l -print`
                   1465:   for file in $files; do
                   1466:     dest=`ls -ld $file | sed -n 's/.*-> //p'`
                   1467:     if expr "$dest" : '[^/].*' > /dev/null; then    
                   1468:       target=${LIB}/`echo file | sed "s|[^/]*\$|$dest|"`
                   1469:       if [ -f $target ]; then
                   1470:         ln -s $dest ${LIB}/$file >/dev/null 2>&1
                   1471:       fi
                   1472:     fi
                   1473:   done
                   1474: fi
                   1475: 
                   1476: cd ${ORIG_DIR}
                   1477: 
                   1478: echo 'Replacing <sys/byteorder.h>'
1.1.1.7 ! root     1479: if [ \! -d $LIB/sys ]; then
        !          1480:   mkdir $LIB/sys
        !          1481: fi
1.1       root     1482: rm -f ${LIB}/sys/byteorder.h
1.1.1.7 ! root     1483: cat <<'__EOF__' >${LIB}/sys/byteorder.h
        !          1484: #ifndef _SYS_BYTEORDER_H
        !          1485: #define _SYS_BYTEORDER_H
        !          1486: 
        !          1487: /* Functions to convert `short' and `long' quantities from host byte order
        !          1488:    to (internet) network byte order (i.e. big-endian).
        !          1489: 
        !          1490:    Written by Ron Guilmette ([email protected]).
        !          1491: 
        !          1492:    This isn't actually used by GCC.  It is installed by fixinc.svr4.
        !          1493: 
        !          1494:    For big-endian machines these functions are essentially no-ops.
        !          1495: 
        !          1496:    For little-endian machines, we define the functions using specialized
        !          1497:    asm sequences in cases where doing so yields better code (e.g. i386).  */
        !          1498: 
        !          1499: #if !defined (__GNUC__) && !defined (__GNUG__)
        !          1500: #error You lose!  This file is only useful with GNU compilers.
        !          1501: #endif
        !          1502: 
        !          1503: #ifndef __BYTE_ORDER__
        !          1504: /* Byte order defines.  These are as defined on UnixWare 1.1, but with
        !          1505:    double underscores added at the front and back.  */
        !          1506: #define __LITTLE_ENDIAN__   1234
        !          1507: #define __BIG_ENDIAN__      4321
        !          1508: #define __PDP_ENDIAN__      3412
        !          1509: #endif
        !          1510: 
        !          1511: #ifdef __STDC__
        !          1512: extern __inline__ unsigned long htonl (unsigned long);
        !          1513: extern __inline__ unsigned short htons (unsigned int);
        !          1514: extern __inline__ unsigned long ntohl (unsigned long);
        !          1515: extern __inline__ unsigned short ntohs (unsigned int);
        !          1516: #endif /* defined (__STDC__) */
        !          1517: 
        !          1518: #if defined (__i386__)
        !          1519: 
        !          1520: #ifndef __BYTE_ORDER__
        !          1521: #define __BYTE_ORDER__ __LITTLE_ENDIAN__
        !          1522: #endif
        !          1523: 
        !          1524: /* Convert a host long to a network long.  */
        !          1525: 
        !          1526: /* We must use a new-style function definition, so that this will also
        !          1527:    be valid for C++.  */
        !          1528: extern __inline__ unsigned long
        !          1529: htonl (unsigned long __arg)
        !          1530: {
        !          1531:   register unsigned long __result;
        !          1532: 
        !          1533:   __asm__ ("xchg%B0 %b0,%h0\n\
        !          1534:        ror%L0 $16,%0\n\
        !          1535:        xchg%B0 %b0,%h0" : "=q" (__result) : "0" (__arg));
        !          1536:   return __result;
        !          1537: }
        !          1538: 
        !          1539: /* Convert a host short to a network short.  */
        !          1540: 
        !          1541: extern __inline__ unsigned short
        !          1542: htons (unsigned int __arg)
        !          1543: {
        !          1544:   register unsigned short __result;
        !          1545: 
        !          1546:   __asm__ ("xchg%B0 %b0,%h0" : "=q" (__result) : "0" (__arg));
        !          1547:   return __result;
        !          1548: }
        !          1549: 
        !          1550: #elif ((defined (__i860__) && !defined (__i860_big_endian__))  \
        !          1551:        || defined (__ns32k__) || defined (__vax__)             \
        !          1552:        || defined (__spur__) || defined (__arm__))
        !          1553: 
        !          1554: #ifndef __BYTE_ORDER__
        !          1555: #define __BYTE_ORDER__ __LITTLE_ENDIAN__
        !          1556: #endif
        !          1557: 
        !          1558: /* For other little-endian machines, using C code is just as efficient as
        !          1559:    using assembly code.  */
        !          1560: 
        !          1561: /* Convert a host long to a network long.  */
        !          1562: 
        !          1563: extern __inline__ unsigned long
        !          1564: htonl (unsigned long __arg)
        !          1565: {
        !          1566:   register unsigned long __result;
        !          1567: 
        !          1568:   __result = (__arg >> 24) & 0x000000ff;
        !          1569:   __result |= (__arg >> 8) & 0x0000ff00;
        !          1570:   __result |= (__arg << 8) & 0x00ff0000;
        !          1571:   __result |= (__arg << 24) & 0xff000000;
        !          1572:   return __result;
        !          1573: }
        !          1574: 
        !          1575: /* Convert a host short to a network short.  */
        !          1576: 
        !          1577: extern __inline__ unsigned short
        !          1578: htons (unsigned int __arg)
        !          1579: {
        !          1580:   register unsigned short __result;
        !          1581: 
        !          1582:   __result = (__arg << 8) & 0xff00;
        !          1583:   __result |= (__arg >> 8) & 0x00ff;
        !          1584:   return __result;
        !          1585: }
        !          1586: 
        !          1587: #else /* must be a big-endian machine */
        !          1588: 
        !          1589: #ifndef __BYTE_ORDER__
        !          1590: #define __BYTE_ORDER__ __BIG_ENDIAN__
        !          1591: #endif
        !          1592: 
        !          1593: /* Convert a host long to a network long.  */
        !          1594: 
        !          1595: extern __inline__ unsigned long
        !          1596: htonl (unsigned long __arg)
        !          1597: {
        !          1598:   return __arg;
        !          1599: }
        !          1600: 
        !          1601: /* Convert a host short to a network short.  */
        !          1602: 
        !          1603: extern __inline__ unsigned short
        !          1604: htons (unsigned int __arg)
        !          1605: {
        !          1606:   return __arg;
        !          1607: }
        !          1608: 
        !          1609: #endif /* big-endian */
        !          1610: 
        !          1611: /* Convert a network long to a host long.  */
        !          1612: 
        !          1613: extern __inline__ unsigned long
        !          1614: ntohl (unsigned long __arg)
        !          1615: {
        !          1616:   return htonl (__arg);
        !          1617: }
        !          1618: 
        !          1619: /* Convert a network short to a host short.  */
        !          1620: 
        !          1621: extern __inline__ unsigned short
        !          1622: ntohs (unsigned int __arg)
        !          1623: {
        !          1624:   return htons (__arg);
        !          1625: }
        !          1626: 
        !          1627: __EOF__
        !          1628: 
        !          1629: if [ -r ${INPUT}/sys/byteorder.h ]; then
        !          1630:   if grep BYTE_ORDER ${INPUT}/sys/byteorder.h >/dev/null 2>/dev/null; then
        !          1631:     cat <<'__EOF__' >>${LIB}/sys/byteorder.h
        !          1632: #ifndef BYTE_ORDER
        !          1633: #define LITTLE_ENDIAN __LITTLE_ENDIAN__
        !          1634: #define BIG_ENDIAN __BIG_ENDIAN__
        !          1635: #define PDP_ENDIAN __PDP_ENDIAN__
        !          1636: #define BYTE_ORDER __BYTE_ORDER__
        !          1637: #endif
        !          1638: 
        !          1639: __EOF__
        !          1640:   fi
        !          1641: fi
        !          1642: 
        !          1643: cat <<'__EOF__' >>${LIB}/sys/byteorder.h
        !          1644: #endif /* !defined (_SYS_BYTEORDER_H) */
        !          1645: __EOF__
        !          1646: 
        !          1647: chmod a+r ${LIB}/sys/byteorder.h
1.1       root     1648: 
                   1649: exit 0
                   1650: 

unix.superglobalmegacorp.com

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