⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fixincludes

📁 这是完整的gcc源代码
💻
字号:
#! /bin/sh# Install modified versions of certain ANSI-incompatible system header files# which are fixed to work correctly with ANSI C# and placed in a directory that GNU C will search.# This works properly on a Sun in system version 3.4;# for other versions, you had better check.# Directory containing the original header files.INCLUDES=${2-${INCLUDES-/usr/include}}# Directory in which to store the results.LIB=${LIB-/usr/local/lib/gcc-include}# Make sure it exists.if [ ! -d $LIB ]; then  mkdir $LIB || exit 1fi# Determine whether this system has symbolic links.if ln -s X $LIB/ShouldNotExist 2>/dev/null; then  rm -f $LIB/ShouldNotExist  LINKS=trueelse  LINKS=falsefiecho 'Making directories:'cd ${INCLUDES}if $LINKS; then  files=`ls -LR | sed -n s/:$//p`else  files=`find . -type d -print | sed '/^.$/d'`fifor file in $files; do  rm -rf $LIB/$file  if [ ! -d $LIB/$file ]  then mkdir $LIB/$file  fidone# treetops gets an alternating list# of old directories to copy# and the new directories to copy to.treetops="${INCLUDES} ${LIB}"if $LINKS; then  echo 'Making internal symbolic directory links'  for file in $files; do    dest=`ls -ld $file | sed -n 's/.*-> //p'`    if [ "$dest" ]; then          cwd=`pwd`      # In case $dest is relative, get to $file's dir first.      cd ${INCLUDES}      cd `echo ./$file | sed -n 's&[^/]*$&&p'`      # Check that the target directory exists.      # Redirections changed to avoid bug in sh on Ultrix.      (cd $dest) > /dev/null 2>&1      if [ $? = 0 ]; then	cd $dest	# X gets the dir that the link actually leads to.	x=`pwd`	# If link leads back into ${INCLUDES},	# make a similar link here.	if expr $x : '${INCLUDES}/.*' > /dev/null; then	  # Y gets the actual target dir name, relative to ${INCLUDES}.	  y=`echo $x | sed -n 's&${INCLUDES}/&&p'`	  echo $file '->' $y ': Making link'	  rm -fr ${LIB}/$file > /dev/null 2>&1	  ln -s ${LIB}/$y ${LIB}/$file > /dev/null 2>&1	else	  # If the link is to outside ${INCLUDES},	  # treat this directory as if it actually contained the files.# This line used to have $dest instead of $x.# $dest seemed to be wrong for links found in subdirectories# of ${INCLUDES}.  Does this change break anything?	  treetops="$treetops $x ${LIB}/$file"	fi      fi      cd $cwd    fi  donefiset - $treetopswhile [ $# != 0 ]; do  # $1 is an old directory to copy, and $2 is the new directory to copy to.  echo "Finding header files in $1:"  cd ${INCLUDES}  cd $1  files=`find . -name '*.h' -type f -print`  echo 'Checking header files:'# Note that BSD43_* are used on recent MIPS systems.  for file in $files; do    if egrep '[ 	]_IO[A-Z]*\(|[	 ]BSD43__IO[A-Z]*\(|#define._IO|#define.BSD43__IO|CTRL' $file > /dev/null; then      echo Fixing $file      if [ -r $file ]; then	cp $file $2/$file >/dev/null 2>&1	\	|| echo "Can't copy $file"	chmod +w $2/$file	sed -e '				   :loop	  /\\$/			N	  /\\$/			b loop	  /[ 	]_IO[A-Z]*[ 	]*(/	s/(\(.\),/('\''\1'\'',/	  /[ 	]BSD43__IO[A-Z]*[ 	]*(/	s/(\(.\),/('\''\1'\'',/	  /#define._IO/		s/'\''x'\''/x/g	  /#define.BSD43__IO/		s/'\''x'\''/x/g	  /[^A-Z]CTRL[ 	]*(/	s/\([^'\'']\))/'\''\1'\'')/	  /#define.CTRL/		s/'\''c'\''/c/g	  /#define._CTRL/		s/'\''c'\''/c/g	  /#define.BSD43_CTRL/		s/'\''c'\''/c/g	  /#if.* m68k$/			s/m68k/__m68k__/g	  /#if.*defined *(m68k)/	s/m68k/__m68k__/g	' $2/$file > $2/$file.sed	mv $2/$file.sed $2/$file	if cmp $file $2/$file >/dev/null 2>&1; then	   echo Deleting $2/$file\; no fixes were needed.	   rm $2/$file	fi      fi    fi  done  shift; shiftdonecd ${INCLUDES}# Fix one other error in this file: a mismatched quote not inside a C comment.file=sundev/vuid_event.hif [ -r $file ]; then  if [ ! -r ${LIB}/$file ]; then    cp $file ${LIB}/$file >/dev/null 2>&1	\    || echo "Can't copy $file"    chmod +w ${LIB}/$file  fifiif [ -r ${LIB}/$file ]; then  echo Fixing $file comment  ex ${LIB}/$file <<EOF  g/doesn't/s/doesn't/does not/  wqEOF  if cmp $file ${LIB}/$file >/dev/null 2>&1; then    echo Deleting ${LIB}/$file\; no fixes were needed.    rm ${LIB}/$file  fifi# Fix this Sun file to avoid intefering with stddef.h.file=sys/stdtypes.hif [ -r $file ]; then  if [ ! -r ${LIB}/$file ]; then    cp $file ${LIB}/$file >/dev/null 2>&1	\    || echo "Can't copy $file"    chmod +w ${LIB}/$file  fifiif [ -r ${LIB}/$file ]; then  echo Fixing $file comment  ex ${LIB}/$file <<EOF  /size_t.*;/  i#ifndef _SIZE_T#define _SIZE_T.  /size_t/+1  i#endif.  /ptrdiff_t.*;/  i#ifndef _PTRDIFF_T#define _PTRDIFF_T.  /ptrdiff_t/+1  i#endif.  /wchar_t.*;/  i#ifndef _WCHAR_T#define _WCHAR_T.  /wchar_t/+1  i#endif.  wqEOF  if cmp $file ${LIB}/$file >/dev/null 2>&1; then    echo Deleting ${LIB}/$file\; no fixes were needed.    rm ${LIB}/$file  fifi# Fix an error in this file: a missing semi-colon at the end of the statsswtch# structure definition.file=rpcsvc/rstat.hif [ -r $file ]; then  if [ ! -r ${LIB}/$file ]; then    cp $file ${LIB}/$file >/dev/null 2>&1	\    || echo "Can't copy $file"    chmod +w ${LIB}/$file  fifiif [ -r ${LIB}/$file ]; then  echo Fixing $file, definition of statsswtch  ex ${LIB}/$file <<EOF  g/boottime$/s//&;/  wqEOF  if cmp $file ${LIB}/$file >/dev/null 2>&1; then    echo Deleting ${LIB}/$file\; no fixes were needed.    rm ${LIB}/$file  fifi# Fix an error in this file: a missing semi-colon at the end of the nodeent# structure definition.file=netdnet/dnetdb.hif [ -r $file ]; then  if [ ! -r ${LIB}/$file ]; then    cp $file ${LIB}/$file >/dev/null 2>&1	\    || echo "Can't copy $file"    chmod +w ${LIB}/$file  fifiif [ -r ${LIB}/$file ]; then  echo Fixing $file, definition of nodeent  ex ${LIB}/$file <<EOF  g/na_addr/s//&;/  wqEOF  if cmp $file ${LIB}/$file >/dev/null 2>&1; then    echo Deleting ${LIB}/$file\; no fixes were needed.    rm ${LIB}/$file  fifi# Check for bad #ifdef line (in Ultrix 4.1)file=sys/file.hif [ -r $file ]; then  if [ ! -r ${LIB}/$file ]; then    mkdir ${LIB}/rpcsvc 2>&-    cp $file ${LIB}/$file >/dev/null 2>&1	\    || echo "Can't copy $file"    chmod +w ${LIB}/$file  fifiif [ -r ${LIB}/$file ]; then  echo Fixing $file, bad \#ifdef line  ex ${LIB}/$file <<EOF  g/^#ifdef KERNEL && !defined/  s/#ifdef KERNEL && !defined/#if defined(KERNEL) \&\& !defined/  wqEOF  if cmp $file ${LIB}/$file >/dev/null 2>&1; then    echo Deleting ${LIB}/$file\; no fixes were needed.    rm ${LIB}/$file  fifi# Check for superfluous `static' (in Ultrix 4.2)file=machine/cpu.hif [ -r $file ]; then  if [ ! -r ${LIB}/$file ]; then    mkdir ${LIB}/machine 2>&-    cp $file ${LIB}/$file >/dev/null 2>&1	\    || echo "Can't copy $file"    chmod +w ${LIB}/$file  fifiif [ -r ${LIB}/$file ]; then  echo Fixing $file, superfluous static  ex ${LIB}/$file <<EOF  g/^static struct tlb_pid_state/  s/static//  wqEOF  if cmp $file ${LIB}/$file >/dev/null 2>&1; then    echo Deleting ${LIB}/$file\; no fixes were needed.    rm ${LIB}/$file  else# This file has an alternative name, mips/cpu.h.  Fix that name, too.    if cmp machine/cpu.h mips/cpu.h > /dev/null 2>& 1; then      mkdir ${LIB}/mips 2>&-      ln ${LIB}/$file ${LIB}/mips/cpu.h     fi  fifi# Deal with yet another challenge, this in X11/Xmu.hfile=X11/Xmu.hif [ -r $file ]; then  if [ ! -r ${LIB}/$file ]; then    mkdir ${LIB}/X11 2>&-    cp $file ${LIB}/$file >/dev/null 2>&1	\    || echo "Can't copy $file"    chmod +w ${LIB}/$file  fifiif [ -r ${LIB}/$file ]; then  echo Fixing $file sprintf declaration  ex ${LIB}/$file <<EOF  /^extern char \*	sprintf();$/c#ifndef __STDC__extern char *	sprintf();#endif /* !defined __STDC__ */.  wqEOF  if cmp $file ${LIB}/$file >/dev/null 2>&1; then    echo Deleting ${LIB}/$file\; no fixes were needed.    rm ${LIB}/$file  fifi# Check for missing ';' in structfile=netinet/ip.hif [ -r $file ]; then  if [ ! -r ${LIB}/$file ]; then    mkdir ${LIB}/netinet 2>&-    sed -e '/^struct/,/^};/s/}$/};/' $file > ${LIB}/$file    cmp $file ${LIB}/$file >/dev/null 2>&1 && rm -f ${LIB}/$file  fifi# Fix the CAT macro in memvar.h.file=pixrect/memvar.hif [ -r $file ]; then  if [ ! -r ${LIB}/$file ]; then    mkdir ${LIB}/pixrect 2>&-    sed -e '/^#define.CAT(a,b)/ i\#ifdef __STDC__ \#define CAT(a,b) a##b\#else/^#define.CAT(a,b)/ a\#endif' $file > ${LIB}/$file    cmp $file ${LIB}/$file >/dev/null 2>&1 && rm -f ${LIB}/$file  fifi# Check for yet more missing ';' in struct (in SunOS 4.0.x)file=rpcsvc/rusers.hif [ -r $file ]; then  if [ ! -r ${LIB}/$file ]; then    mkdir ${LIB}/rpcsvc 2>&-    sed -e '/^struct/,/^};/s/_cnt$/_cnt;/' $file > ${LIB}/$file    cmp $file ${LIB}/$file >/dev/null 2>&1 && rm -f ${LIB}/$file  fifiecho 'Removing unneeded directories:'cd $LIBfiles=`find . -type d -print | sort -r`for file in $files; do  rmdir $LIB/$file > /dev/null 2>&1doneif $LINKS; then  echo 'Making internal symbolic non-directory links'  cd ${INCLUDES}  files=`find . -type l -print`  for file in $files; do    dest=`ls -ld $file | sed -n 's/.*-> //p'`    if expr "$dest" : '[^/].*' > /dev/null; then          target=${LIB}/`echo file | sed "s|[^/]*\$|$dest|"`      if [ -f $target ]; then        ln -s $dest ${LIB}/$file >/dev/null 2>&1      fi    fi  donefiexit 0

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -