|
|
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
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.