|
|
1.1 ! root 1: #! sh ! 2: # ! 3: # fixinc.winnt -- Install modified versions of Windows NT system include ! 4: # files. ! 5: # ! 6: # Based on fixinc.sco script by Ian Lance Taylor ([email protected])). ! 7: # Modifications by Douglas Rupp ([email protected]) ! 8: # ! 9: # This file is part of GNU CC. ! 10: # ! 11: # GNU CC is free software; you can redistribute it and/or modify ! 12: # it under the terms of the GNU General Public License as published by ! 13: # the Free Software Foundation; either version 2, or (at your option) ! 14: # any later version. ! 15: # ! 16: # GNU CC is distributed in the hope that it will be useful, ! 17: # but WITHOUT ANY WARRANTY; without even the implied warranty of ! 18: # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ! 19: # GNU General Public License for more details. ! 20: # ! 21: # You should have received a copy of the GNU General Public License ! 22: # along with GNU CC; see the file COPYING. If not, write to ! 23: # the Free Software Foundation, 59 Temple Place - Suite 330, ! 24: # Boston, MA 02111-1307, USA. ! 25: # ! 26: # This script munges the native include files provided with Windows NT ! 27: # 3.5 SDK systems so as to provide a reasonable namespace when ! 28: # compiling with gcc. The header files by default do not ! 29: # provide many essential definitions and declarations if ! 30: # __STDC__ is 1. This script modifies the header files to check ! 31: # for __STRICT_ANSI__ being defined instead. Once munged, the ! 32: # resulting new system include files are placed in a directory ! 33: # that GNU C will search *before* searching the Include ! 34: # directory. ! 35: # ! 36: # See README-fixinc for more information. ! 37: ! 38: ORIG_DIR=`pwd` ! 39: ! 40: # Directory containing the original header files. ! 41: cd $2; SEDFILE=`${PWDCMD-pwd}`/fixinc-nt.sed ! 42: echo $SEDFILE ! 43: if [ ! -f $SEDFILE ] ! 44: then echo fixincludes: sed script 'fixinc-nt.sed' not found ! 45: exit 1 ! 46: fi ! 47: echo 'Using sed script: ' ${SEDFILE} ! 48: ! 49: cd $ORIG_DIR ! 50: ! 51: INPUT=${INCLUDE} ! 52: echo 'Using the Include environment variable to find header files to fix' ! 53: ! 54: # Fail if no arg to specify a directory for the output. ! 55: if [ x$1 = x ] ! 56: then echo fixincludes: no output directory specified ! 57: exit 1 ! 58: fi ! 59: ! 60: # Directory in which to store the results. ! 61: LIB=${1?"fixincludes: output directory not specified"} ! 62: ! 63: # Make sure it exists. ! 64: if [ ! -d $LIB ]; then ! 65: mkdir $LIB || exit 1 ! 66: fi ! 67: ! 68: ORIG_DIR=`pwd` ! 69: ! 70: # Make LIB absolute if it is relative. ! 71: # Don't do this if not necessary, since may screw up automounters. ! 72: case $LIB in ! 73: /*) ! 74: ;; ! 75: *) ! 76: cd $LIB; LIB=`${PWDCMD-pwd}` ! 77: ;; ! 78: esac ! 79: ! 80: echo 'Building fixincludes in ' ${LIB} ! 81: ! 82: # Determine whether this filesystem has symbolic links. ! 83: if ln -s X $LIB/ShouldNotExist 2>NUL; then ! 84: rm -f $LIB/ShouldNotExist ! 85: LINKS=true ! 86: else ! 87: LINKS=false ! 88: fi ! 89: ! 90: echo 'Making directories:' ! 91: cd ${INPUT} ! 92: if $LINKS; then ! 93: files=`ls -LR | sed -n s/:$//p` ! 94: else ! 95: files=`find . -type d -print | sed '/^.$/d'` ! 96: fi ! 97: for file in $files; do ! 98: rm -rf $LIB/$file ! 99: if [ ! -d $LIB/$file ] ! 100: then mkdir $LIB/$file ! 101: fi ! 102: done ! 103: ! 104: # treetops gets an alternating list ! 105: # of old directories to copy ! 106: # and the new directories to copy to. ! 107: treetops="${INPUT} ${LIB}" ! 108: ! 109: set - $treetops ! 110: while [ $# != 0 ]; do ! 111: # $1 is an old directory to copy, and $2 is the new directory to copy to. ! 112: echo "Finding header files in $1:" ! 113: cd ${INPUT} ! 114: cd $1 ! 115: files=`find . -name '*.[hH]' -type f -print` ! 116: echo 'Checking header files:' ! 117: for file in $files; do ! 118: echo $file ! 119: if egrep "!__STDC__" $file >NUL; then ! 120: if [ -r $file ]; then ! 121: cp $file $2/$file >NUL 2>&1 || echo "Can't copy $file" ! 122: chmod +w,a+r $2/$file ! 123: ! 124: # The following have been removed from the sed command below ! 125: # because it is more useful to leave these things in. ! 126: # The only reason to remove them was for -pedantic, ! 127: # which isn't much of a reason. -- rms. ! 128: # /^[ ]*#[ ]*ident/d ! 129: ! 130: sed -e ' ! 131: s/!__STDC__/!defined (__STRICT_ANSI__)/g ! 132: ' $2/$file > $2/$file.sed ! 133: mv $2/$file.sed $2/$file ! 134: if cmp $file $2/$file >NUL 2>&1; then ! 135: rm $2/$file ! 136: else ! 137: echo Fixed $file ! 138: fi ! 139: fi ! 140: fi ! 141: done ! 142: shift; shift ! 143: done ! 144: ! 145: # Fix first broken decl of getcwd present on some svr4 systems. ! 146: ! 147: file=direct.h ! 148: base=`basename $file` ! 149: if [ -r ${LIB}/$file ]; then ! 150: file_to_fix=${LIB}/$file ! 151: else ! 152: if [ -r ${INPUT}/$file ]; then ! 153: file_to_fix=${INPUT}/$file ! 154: else ! 155: file_to_fix="" ! 156: fi ! 157: fi ! 158: if [ \! -z "$file_to_fix" ]; then ! 159: echo Checking $file_to_fix ! 160: sed -e 's/getcwd(char \*, int)/getcwd(char *, size_t)/' $file_to_fix > /tmp/$base ! 161: if cmp $file_to_fix /tmp/$base >NUL 2>&1; then \ ! 162: true ! 163: else ! 164: echo Fixed $file_to_fix ! 165: rm -f ${LIB}/$file ! 166: cp /tmp/$base ${LIB}/$file ! 167: chmod a+r ${LIB}/$file ! 168: fi ! 169: rm -f /tmp/$base ! 170: fi ! 171: ! 172: file=rpcndr.h ! 173: base=`basename $file` ! 174: if [ -r ${LIB}/$file ]; then ! 175: file_to_fix=${LIB}/$file ! 176: else ! 177: if [ -r ${INPUT}/$file ]; then ! 178: file_to_fix=${INPUT}/$file ! 179: else ! 180: file_to_fix="" ! 181: fi ! 182: fi ! 183: if [ \! -z "$file_to_fix" ]; then ! 184: echo Checking $file_to_fix ! 185: sed -e 's/Format\[\]/Format\[1\]/' $file_to_fix > /tmp/$base ! 186: if cmp $file_to_fix /tmp/$base >NUL 2>&1; then \ ! 187: true ! 188: else ! 189: echo Fixed $file_to_fix ! 190: rm -f ${LIB}/$file ! 191: cp /tmp/$base ${LIB}/$file ! 192: chmod a+r ${LIB}/$file ! 193: fi ! 194: rm -f /tmp/$base ! 195: fi ! 196: ! 197: file=winnt.h ! 198: base=`basename $file` ! 199: if [ -r ${LIB}/$file ]; then ! 200: file_to_fix=${LIB}/$file ! 201: else ! 202: if [ -r ${INPUT}/$file ]; then ! 203: file_to_fix=${INPUT}/$file ! 204: else ! 205: file_to_fix="" ! 206: fi ! 207: fi ! 208: if [ \! -z "$file_to_fix" ]; then ! 209: echo Checking $file_to_fix ! 210: sed -e ' ! 211: s/^#if !defined (__cplusplus)/#if 0/ ! 212: s/^#define DECLSPEC_IMPORT __declspec(dllimport)/#define DECLSPEC_IMPORT/ ! 213: ' $file_to_fix > /tmp/$base ! 214: if cmp $file_to_fix /tmp/$base >NUL 2>&1; then \ ! 215: true ! 216: else ! 217: echo Fixed $file_to_fix ! 218: rm -f ${LIB}/$file ! 219: cp /tmp/$base ${LIB}/$file ! 220: chmod a+r ${LIB}/$file ! 221: fi ! 222: rm -f /tmp/$base ! 223: fi ! 224: ! 225: echo 'Removing unneeded directories:' ! 226: cd $LIB ! 227: files=`find . -type d -print | sort -r` ! 228: for file in $files; do ! 229: rmdir $LIB/$file > NUL 2>&1 ! 230: done ! 231: ! 232: exit 0
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.