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

📄 fixincludes-v4

📁 这是完整的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 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 /usr/includeif $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="/usr/include ${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 /usr/include      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 /usr/include,	# make a similar link here.	if expr $x : '/usr/include/.*' > /dev/null; then	  # Y gets the actual target dir name, relative to /usr/include.	  y=`echo $x | sed -n 's&/usr/include/&&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 /usr/include,	  # 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 /usr/include.  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 /usr/include  cd $1  files=`find . -name '*.h' -type f -print`  echo 'Checking header files:'  for file in $files; do    if egrep '[ 	]_IO[A-Z]*\(|#define._IO|CTRL|#machine|#lint' $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'\'',/	  /#define._IO/		s/'\''x'\''/x/g	  /[^A-Z]CTRL[ 	]*(/	s/\([^'\'']\))/'\''\1'\'')/	  /#define.CTRL/		s/'\''c'\''/c/g	  /#define._CTRL/		s/'\''c'\''/c/g	  /^[ 	]*#[ 	]*if/	s/#machine/defined/g	  /^[ 	]*#[ 	]*elif/	s/#machine/defined/g	  /^[ 	]*#[ 	]*if/	s/#lint *(on)/defined(lint)/g	  /^[ 	]*#[ 	]*elif/	s/#lint *(on)/defined(lint)/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 /usr/include# 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 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 $2/$file >/dev/null 2>&1; then    echo Deleting $2/$file\; no fixes were needed.    rm $2/$file  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 >&- && 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)/ s/IDENT(a)b/a##b/g' $file > ${LIB}/$file    cmp $file ${LIB}/$file >&- && 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 >&- && 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 >&- && 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 /usr/include  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 + -