diff options
| author | Andrew Lee <alee14498@protonmail.com> | 2021-08-15 00:34:05 -0400 |
|---|---|---|
| committer | Andrew Lee <alee14498@protonmail.com> | 2021-08-15 00:34:05 -0400 |
| commit | 60cc83bf91bfc9bb02f6304b5d6c8234ba6d210f (patch) | |
| tree | fdc0be85a1ca35e34c3ae2c805fe9b718e3c1091 /gcc-1.40/fixincludes | |
| parent | dd8dfab51b832a654365ed00c06bf802ff628bfa (diff) | |
| download | linux-0.01-distro-master.tar.gz linux-0.01-distro-master.tar.bz2 linux-0.01-distro-master.zip | |
Diffstat (limited to 'gcc-1.40/fixincludes')
| -rwxr-xr-x | gcc-1.40/fixincludes | 378 |
1 files changed, 378 insertions, 0 deletions
diff --git a/gcc-1.40/fixincludes b/gcc-1.40/fixincludes new file mode 100755 index 0000000..e54a0a3 --- /dev/null +++ b/gcc-1.40/fixincludes @@ -0,0 +1,378 @@ +#! /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 1 +fi + +# Determine whether this system has symbolic links. +if ln -s X $LIB/ShouldNotExist 2>/dev/null; then + rm -f $LIB/ShouldNotExist + LINKS=true +else + LINKS=false +fi + +echo 'Making directories:' +cd /usr/include +if $LINKS; then + files=`ls -LR | sed -n s/:$//p` +else + files=`find . -type d -print | sed '/^.$/d'` +fi +for file in $files; do + rm -rf $LIB/$file + if [ ! -d $LIB/$file ] + then mkdir $LIB/$file + fi +done + +# 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 + done +fi + +set - $treetops +while [ $# != 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:' +# 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 + ' $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; shift +done + +cd /usr/include + +# Fix one other error in this file: a mismatched quote not inside a C comment. +file=sundev/vuid_event.h +if [ -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 + fi +fi + +if [ -r ${LIB}/$file ]; then + echo Fixing $file comment + ex ${LIB}/$file <<EOF + g/doesn't/s/doesn't/does not/ + wq +EOF + if cmp $file ${LIB}/$file >/dev/null 2>&1; then + echo Deleting ${LIB}/$file\; no fixes were needed. + rm ${LIB}/$file + fi +fi + +# Fix this Sun file to avoid intefering with stddef.h. + +file=sys/stdtypes.h +if [ -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 + fi +fi + +if [ -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 +. + wq +EOF + if cmp $file ${LIB}/$file >/dev/null 2>&1; then + echo Deleting ${LIB}/$file\; no fixes were needed. + rm ${LIB}/$file + fi +fi + +# Fix an error in this file: a missing semi-colon at the end of the statsswtch +# structure definition. +file=rpcsvc/rstat.h +if [ -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 + fi +fi + +if [ -r ${LIB}/$file ]; then + echo Fixing $file, definition of statsswtch + ex ${LIB}/$file <<EOF + g/boottime$/s//&;/ + wq +EOF + if cmp $file ${LIB}/$file >/dev/null 2>&1; then + echo Deleting ${LIB}/$file\; no fixes were needed. + rm ${LIB}/$file + fi +fi + +# Fix an error in this file: a missing semi-colon at the end of the nodeent +# structure definition. +file=netdnet/dnetdb.h +if [ -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 + fi +fi + +if [ -r ${LIB}/$file ]; then + echo Fixing $file, definition of nodeent + ex ${LIB}/$file <<EOF + g/na_addr/s//&;/ + wq +EOF + if cmp $file ${LIB}/$file >/dev/null 2>&1; then + echo Deleting ${LIB}/$file\; no fixes were needed. + rm ${LIB}/$file + fi +fi + +# Check for bad #ifdef line (in Ultrix 4.1) + +file=sys/file.h +if [ -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 + fi +fi + +if [ -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/ + wq +EOF + if cmp $file ${LIB}/$file >/dev/null 2>&1; then + echo Deleting ${LIB}/$file\; no fixes were needed. + rm ${LIB}/$file + fi +fi + +# Check for superfluous `static' (in Ultrix 4.2) + +file=machine/cpu.h +if [ -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 + fi +fi + +if [ -r ${LIB}/$file ]; then + echo Fixing $file, superfluous static + ex ${LIB}/$file <<EOF + g/^static struct tlb_pid_state/ + s/static// + wq +EOF + 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 + fi +fi + +# Deal with yet another challenge, this in X11/Xmu.h +file=X11/Xmu.h +if [ -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 + fi +fi + +if [ -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__ */ +. + wq +EOF + if cmp $file ${LIB}/$file >/dev/null 2>&1; then + echo Deleting ${LIB}/$file\; no fixes were needed. + rm ${LIB}/$file + fi +fi + +# Check for missing ';' in struct + +file=netinet/ip.h +if [ -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 + fi +fi + +# Fix the CAT macro in memvar.h. + +file=pixrect/memvar.h +if [ -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 + fi +fi + +# Check for yet more missing ';' in struct (in SunOS 4.0.x) + +file=rpcsvc/rusers.h +if [ -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 + fi +fi + +echo 'Removing unneeded directories:' +cd $LIB +files=`find . -type d -print | sort -r` +for file in $files; do + rmdir $LIB/$file > /dev/null 2>&1 +done + +if $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 + done +fi + +exit 0 |
