8sa1-gcc/gcc/fixinc.svr4
Jim Wilson 49ced9eab3 (stat.h): Don't depend upon specific formal parameter names when...
(stat.h):  Don't depend upon specific formal
parameter names when locating static functions to convert
to prototype form.  Also be more selective about what
strings to prepend underbars to during renaming of formal
parameters and local variables in static functions.

From-SVN: r3206
1993-01-12 14:55:32 -08:00

1297 lines
30 KiB
Bash
Executable File

#! /bin/sh
#
# fixinc.svr4 -- Install modified versions of certain ANSI-incompatible
# native System V Release 4 system include files.
#
# Written by Ron Guilmette (rfg@ncd.com).
#
# This file is part of GNU CC.
#
# GNU CC is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
#
# GNU CC is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with GNU CC; see the file COPYING. If not, write to
# the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
#
# This script munges the native include files provided with System V
# Release 4 systems so as to remove things which are violations of the
# ANSI C standard. Once munged, the resulting new system include files
# are placed in a directory that GNU C will search *before* searching
# the /usr/include directory. This script should work properly for most
# System V Release 4 systems. For other types of systems, you should
# use the `fixincludes' script instead.
#
# See README-fixinc for more information.
# Directory where gcc sources (and sometimes special include files) live.
SRCDIR=${3-${SRCDIR-.}}
# Directory containing the original header files.
INPUT=${2-${INPUT-/usr/include}}
# Fail if no arg to specify a directory for the output.
if [ x$1 = x ]
then echo fixincludes: no output directory specified
exit 1
fi
# Directory in which to store the results.
LIB=${1?"fixincludes: output directory not specified"}
# Make sure it exists.
if [ ! -d $LIB ]; then
mkdir $LIB || exit 1
fi
ORIG_DIR=`pwd`
# Make LIB absolute if it is relative.
# Don't do this if not necessary, since may screw up automounters.
case $LIB in
/*)
;;
*)
cd $LIB; LIB=`${PWDCMD}`
;;
esac
# This prevents /bin/ex from failing if the current terminal type is
# unrecognizable.
TERM=dumb
export TERM
# This prevents /bin/ex from failing if the EXINIT environment variable
# was set to something invalid.
EXINIT=""
export EXINIT
echo 'Building fixincludes in ' ${LIB}
# Determine whether this filesystem 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 ${INPUT}
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="${INPUT} ${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 ${INPUT}
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 ${INPUT},
# make a similar link here.
if expr $x : "${INPUT}/.*" > /dev/null; then
# Y gets the actual target dir name, relative to ${INPUT}.
y=`echo $x | sed -n "s&${INPUT}/&&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 ${INPUT},
# 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 ${INPUT}. 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 ${INPUT}
cd $1
files=`find . -name '*.h' -type f -print`
echo 'Checking header files:'
for file in $files; do
echo Fixing $file
if [ -r $file ]; then
cp $file $2/$file >/dev/null 2>&1 || echo "Can't copy $file"
chmod +w $2/$file
chmod a+r $2/$file
# The following have been removed from the sed command below
# because it is more useful to leave these things in.
# The only reason to remove them was for -pedantic,
# which isn't much of a reason. -- rms.
# /^[ ]*#[ ]*ident/d
# This code makes Solaris SCSI fail, because it changes the
# alignment within some critical structures. See <sys/scsi/impl/commands.h>.
# s/u_char\([ ][ ]*[a-zA-Z0-9_][a-zA-Z0-9_]*[ ]*:[ ]*[0-9][0-9]*\)/u_int\1/
# Disable these also, since they probably aren't safe either.
# s/u_short\([ ][ ]*[a-zA-Z0-9_][a-zA-Z0-9_]*[ ]*:[ ]*[0-9][0-9]*\)/u_int\1/
# s/ushort\([ ][ ]*[a-zA-Z0-9_][a-zA-Z0-9_]*[ ]*:[ ]*[0-9][0-9]*\)/u_int\1/
# s/evcm_t\([ ][ ]*[a-zA-Z0-9_][a-zA-Z0-9_]*[ ]*:[ ]*[0-9][0-9]*\)/u_int\1/
# s/Pbyte\([ ][ ]*[a-zA-Z0-9_][a-zA-Z0-9_]*[ ]*:[ ]*SEQSIZ\)/unsigned int\1/
# The change of u_char, etc, to u_int
# applies to bit fields.
sed -e '
s%^\([ ]*#[ ]*endif[ ]*\)\([^/ ].*\)$%\1/* \2 */%
s%^\([ ]*#[ ]*else[ ]*\)\([^/ ].*\)$%\1/* \2 */%
s/#lint(on)/defined(lint)/g
s/#lint(off)/!defined(lint)/g
s/#machine(\([^)]*\))/defined(__\1__)/g
s/#system(\([^)]*\))/defined(__\1__)/g
s/#cpu(\([^)]*\))/defined(__\1__)/g
/#[a-z]*if.*[ (]m68k/ s/\([^_]\)m68k/\1__m68k__/g
/#[a-z]*if.*[ (]__i386\([^_]\)/ s/__i386/__i386__/g
/#[a-z]*if.*[ (]i386/ s/\([^_]\)i386/\1__i386__/g
/#[a-z]*if.*[ (]sparc/ s/\([^_]\)sparc/\1__sparc__/g
/#[a-z]*if.*[ (]mc68000/ s/\([^_]\)mc68000/\1__mc68000__/g
/#[a-z]*if.*[ (]vax/ s/\([^_]\)vax/\1__vax__/g
/#[a-z]*if.*[ (]sun/ s/\([^_]\)\(sun[a-z0-9]*\)\([^a-z0-9_]\)/\1__\2__\3/g
/#[a-z]*if.*[ (]sun/ s/\([^_]\)\(sun[a-z0-9]*\)$/\1__\2__/g
/#[a-z]*if.*[ (]ns32000/ s/\([^_]\)ns32000/\1__ns32000__/g
/#[a-z]*if.*[ (]pyr/ s/\([^_]\)pyr/\1__pyr__/g
/#[a-z]*if.*[ (]is68k/ s/\([^_]\)is68k/\1__is68k__/g
s/__STDC__ == 0/!defined (__STRICT_ANSI__)/g
s/__STDC__ != 0/defined (__STRICT_ANSI__)/g
s/__STDC__ - 0 == 0/!defined (__STRICT_ANSI__)/g
' $2/$file > $2/$file.sed
mv $2/$file.sed $2/$file
if cmp $file $2/$file >/dev/null 2>&1; then
rm $2/$file
fi
fi
done
shift; shift
done
# Fix first broken decl of getcwd present on some svr4 systems.
file=stdlib.h
base=`basename $file`
if [ -r ${LIB}/$file ]; then
file_to_fix=${LIB}/$file
else
if [ -r ${INPUT}/$file ]; then
file_to_fix=${INPUT}/$file
else
file_to_fix=""
fi
fi
if [ \! -z "$file_to_fix" ]; then
echo Checking $file_to_fix
sed -e 's/getcwd(char \*, int)/getcwd(char *, size_t)/' $file_to_fix > /tmp/$base
if cmp $file_to_fix /tmp/$base >/dev/null 2>&1; then \
true
else
echo Fixed $file_to_fix
rm -f ${LIB}/$file
cp /tmp/$base ${LIB}/$file
chmod a+r ${LIB}/$file
fi
rm -f /tmp/$base
fi
# Fix second broken decl of getcwd present on some svr4 systems. Also
# fix the incorrect decl of profil present on some svr4 systems.
file=unistd.h
base=`basename $file`
if [ -r ${LIB}/$file ]; then
file_to_fix=${LIB}/$file
else
if [ -r ${INPUT}/$file ]; then
file_to_fix=${INPUT}/$file
else
file_to_fix=""
fi
fi
if [ \! -z "$file_to_fix" ]; then
echo Checking $file_to_fix
sed -e 's/getcwd(char \*, int)/getcwd(char *, size_t)/' $file_to_fix \
| sed -e 's/profil(unsigned short \*, unsigned int, unsigned int, unsigned int)/profil(unsigned short *, size_t, int, unsigned)/' > /tmp/$base
if cmp $file_to_fix /tmp/$base >/dev/null 2>&1; then \
true
else
echo Fixed $file_to_fix
rm -f ${LIB}/$file
cp /tmp/$base ${LIB}/$file
chmod a+r ${LIB}/$file
fi
rm -f /tmp/$base
fi
# Fix the definition of NULL in <sys/param.h> so that it is conditional
# and so that it is correct for both C and C++.
file=sys/param.h
base=`basename $file`
if [ -r ${LIB}/$file ]; then
file_to_fix=${LIB}/$file
else
if [ -r ${INPUT}/$file ]; then
file_to_fix=${INPUT}/$file
else
file_to_fix=""
fi
fi
if [ \! -z "$file_to_fix" ]; then
echo Checking $file_to_fix
cp $file_to_fix /tmp/$base
chmod +w /tmp/$base
chmod a+r /tmp/$base
ex /tmp/$base <<EOF
/^#define[ ]*NULL[ ]*0$/c
#ifndef NULL
#ifdef __cplusplus
#define __NULL_TYPE
#else /* !defined(__cplusplus) */
#define __NULL_TYPE (void *)
#endif /* !defined(__cplusplus) */
#define NULL (__NULL_TYPE 0)
#endif /* !defined(NULL) */
.
wq
EOF
if cmp $file_to_fix /tmp/$base >/dev/null 2>&1; then \
true
else
echo Fixed $file_to_fix
rm -f ${LIB}/$file
cp /tmp/$base ${LIB}/$file
chmod a+r ${LIB}/$file
fi
rm -f /tmp/$base
fi
# Likewise fix the definition of NULL in <stdio.h> so that it is conditional
# and so that it is correct for both C and C++.
file=stdio.h
base=`basename $file`
if [ -r ${LIB}/$file ]; then
file_to_fix=${LIB}/$file
else
if [ -r ${INPUT}/$file ]; then
file_to_fix=${INPUT}/$file
else
file_to_fix=""
fi
fi
if [ \! -z "$file_to_fix" ]; then
echo Checking $file_to_fix
cp $file_to_fix /tmp/$base
chmod +w /tmp/$base
ex /tmp/$base <<EOF
/^#define[ ]*NULL[ ]*0$/c
#ifdef __cplusplus
#define __NULL_TYPE
#else /* !defined(__cplusplus) */
#define __NULL_TYPE (void *)
#endif /* !defined(__cplusplus) */
#define NULL (__NULL_TYPE 0)
.
wq
EOF
if cmp $file_to_fix /tmp/$base >/dev/null 2>&1; then \
true
else
echo Fixed $file_to_fix
rm -f ${LIB}/$file
cp /tmp/$base ${LIB}/$file
chmod a+r ${LIB}/$file
fi
rm -f /tmp/$base
fi
# Likewise fix the definition of NULL in <dbm.h> so that it is conditional
# and so that it is correct for both C and C++.
file=dbm.h
base=`basename $file`
if [ -r ${LIB}/$file ]; then
file_to_fix=${LIB}/$file
else
if [ -r ${INPUT}/$file ]; then
file_to_fix=${INPUT}/$file
else
file_to_fix=""
fi
fi
if [ \! -z "$file_to_fix" ]; then
echo Checking $file_to_fix
cp $file_to_fix /tmp/$base
chmod +w /tmp/$base
ex /tmp/$base <<EOF
/^#define[ ]*NULL[ ]*((char \*) 0)$/c
#ifndef NULL
#ifdef __cplusplus
#define __NULL_TYPE
#else /* !defined(__cplusplus) */
#define __NULL_TYPE (void *)
#endif /* !defined(__cplusplus) */
#define NULL (__NULL_TYPE 0)
#endif /* !defined(NULL) */
.
wq
EOF
if cmp $file_to_fix /tmp/$base >/dev/null 2>&1; then \
true
else
echo Fixed $file_to_fix
rm -f ${LIB}/$file
cp /tmp/$base ${LIB}/$file
chmod a+r ${LIB}/$file
fi
rm -f /tmp/$base
fi
# Add a prototyped declaration of mmap to <sys/mman.h>.
file=sys/mman.h
base=`basename $file`
if [ -r ${LIB}/$file ]; then
file_to_fix=${LIB}/$file
else
if [ -r ${INPUT}/$file ]; then
file_to_fix=${INPUT}/$file
else
file_to_fix=""
fi
fi
if [ \! -z "$file_to_fix" ]; then
echo Checking $file_to_fix
cp $file_to_fix /tmp/$base
chmod +w /tmp/$base
ex /tmp/$base <<EOF
/^extern caddr_t mmap();$/c
#ifdef __STDC__
extern caddr_t mmap (caddr_t addr, size_t len, int prot, int flags,
int fd, off_t off);
#else /* !defined(__STDC__) */
extern caddr_t mmap ();
#endif /* !defined(__STDC__) */
.
wq
EOF
if cmp $file_to_fix /tmp/$base >/dev/null 2>&1; then \
true
else
echo Fixed $file_to_fix
rm -f ${LIB}/$file
cp /tmp/$base ${LIB}/$file
chmod a+r ${LIB}/$file
fi
rm -f /tmp/$base
fi
# Fix declarations of `ftw' and `nftw' in <ftw.h>.
file=ftw.h
base=`basename $file`
if [ -r ${LIB}/$file ]; then
file_to_fix=${LIB}/$file
else
if [ -r ${INPUT}/$file ]; then
file_to_fix=${INPUT}/$file
else
file_to_fix=""
fi
fi
if [ \! -z "$file_to_fix" ]; then
echo Checking $file_to_fix
cp $file_to_fix /tmp/$base
chmod +w /tmp/$base
ex /tmp/$base <<EOF
/^extern int ftw(const/c
#if !defined(_STYPES)
static
#else
extern
#endif
int ftw(const char *, int (*)(const char *, const struct stat *, int), int);
.
/^extern int nftw/c
#if defined(_STYPES)
static
#else
extern
#endif
int nftw(const char *, int (*)(const char *, const struct stat *, int, struct FTW *),int, int);
.
/^extern int ftw(),/c
#if !defined(_STYPES)
static
#else
extern
#endif
int ftw();
#if defined(_STYPES)
static
#else
extern
#endif
int nftw();
.
wq
EOF
if cmp $file_to_fix /tmp/$base >/dev/null 2>&1; then \
true
else
echo Fixed $file_to_fix
rm -f ${LIB}/$file
cp /tmp/$base ${LIB}/$file
chmod a+r ${LIB}/$file
fi
rm -f /tmp/$base
fi
# Add a `static' declaration of `getrnge' into <regexp.h>.
# Don't do this if there is already a `static void getrnge' declaration
# present, since this would cause a redeclaration error. Solaris 2.x has
# such a declaration.
file=regexp.h
base=`basename $file`
if [ -r ${LIB}/$file ]; then
file_to_fix=${LIB}/$file
else
if [ -r ${INPUT}/$file ]; then
file_to_fix=${INPUT}/$file
else
file_to_fix=""
fi
fi
if [ \! -z "$file_to_fix" ]; then
echo Checking $file_to_fix
if grep "static void getrnge" $file_to_fix > /dev/null; then
true
else
cp $file_to_fix /tmp/$base
chmod +w /tmp/$base
ex /tmp/$base <<EOF
/^static int[ ]*size;/c
static int size ;
static int getrnge ();
.
wq
EOF
if cmp $file_to_fix /tmp/$base >/dev/null 2>&1; then \
true
else
echo Fixed $file_to_fix
rm -f ${LIB}/$file
cp /tmp/$base ${LIB}/$file
chmod a+r ${LIB}/$file
fi
fi
rm -f /tmp/$base
fi
# Disable apparent native compiler optimization cruft in SVR4.2 <string.h>
# that is visible to any ANSI compiler using this include. Simply
# delete the lines the #define some string functions to internal forms.
file=string.h
base=`basename $file`
if [ -r ${LIB}/$file ]; then
file_to_fix=${LIB}/$file
else
if [ -r ${INPUT}/$file ]; then
file_to_fix=${INPUT}/$file
else
file_to_fix=""
fi
fi
if [ \! -z "$file_to_fix" ]; then
echo Checking $file_to_fix
cp $file_to_fix /tmp/$base
chmod +w /tmp/$base
ex /tmp/$base <<EOF
g/#define.*__std_hdr_/d
wq
EOF
if cmp $file_to_fix /tmp/$base >/dev/null 2>&1; then \
true
else
echo Fixed $file_to_fix
rm -f ${LIB}/$file
cp /tmp/$base ${LIB}/$file
chmod a+r ${LIB}/$file
fi
rm -f /tmp/$base
fi
# Add a #define of _SIGACTION_ into <sys/signal.h>.
# Also fix types of SIG_DFL, SIG_ERR, SIG_IGN, and SIG_HOLD.
file=sys/signal.h
base=`basename $file`
if [ -r ${LIB}/$file ]; then
file_to_fix=${LIB}/$file
else
if [ -r ${INPUT}/$file ]; then
file_to_fix=${INPUT}/$file
else
file_to_fix=""
fi
fi
if [ \! -z "$file_to_fix" ]; then
echo Checking $file_to_fix
cp $file_to_fix /tmp/$base
chmod +w /tmp/$base
ex /tmp/$base <<EOF
/^struct sigaction {/c
#define _SIGACTION_
struct sigaction {
.
1,\$s/(void *(\*)())/(void (*)(int))/
wq
EOF
if cmp $file_to_fix /tmp/$base >/dev/null 2>&1; then \
true
else
echo Fixed $file_to_fix
rm -f ${LIB}/$file
cp /tmp/$base ${LIB}/$file
chmod a+r ${LIB}/$file
fi
rm -f /tmp/$base
fi
# Fix declarations of `makedev', `major', and `minor' in <sys/mkdev.h>.
file=sys/mkdev.h
base=`basename $file`
if [ -r ${LIB}/$file ]; then
file_to_fix=${LIB}/$file
else
if [ -r ${INPUT}/$file ]; then
file_to_fix=${INPUT}/$file
else
file_to_fix=""
fi
fi
if [ \! -z "$file_to_fix" ]; then
echo Checking $file_to_fix
cp $file_to_fix /tmp/$base
chmod +w /tmp/$base
ex /tmp/$base <<EOF
/^dev_t makedev(const/c
static dev_t makedev(const major_t, const minor_t);
.
/^dev_t makedev()/c
static dev_t makedev();
.
/^major_t major(const/c
static major_t major(const dev_t);
.
/^major_t major()/c
static major_t major();
.
/^minor_t minor(const/c
static minor_t minor(const dev_t);
.
/^minor_t minor()/c
static minor_t minor();
.
wq
EOF
if cmp $file_to_fix /tmp/$base >/dev/null 2>&1; then \
true
else
echo Fixed $file_to_fix
rm -f ${LIB}/$file
cp /tmp/$base ${LIB}/$file
chmod a+r ${LIB}/$file
fi
rm -f /tmp/$base
fi
# Fix reference to NMSZ in <sys/adv.h>.
file=sys/adv.h
base=`basename $file`
if [ -r ${LIB}/$file ]; then
file_to_fix=${LIB}/$file
else
if [ -r ${INPUT}/$file ]; then
file_to_fix=${INPUT}/$file
else
file_to_fix=""
fi
fi
if [ \! -z "$file_to_fix" ]; then
echo Checking $file_to_fix
sed 's/\[NMSZ\]/\[RFS_NMSZ\]/g' $file_to_fix > /tmp/$base
if cmp $file_to_fix /tmp/$base >/dev/null 2>&1; then \
true
else
echo Fixed $file_to_fix
rm -f ${LIB}/$file
cp /tmp/$base ${LIB}/$file
chmod a+r ${LIB}/$file
fi
rm -f /tmp/$base
fi
# Fix reference to NC_NPI_RAW in <sys/netcspace.h>. Also fix types of
# array initializers.
file=sys/netcspace.h
base=`basename $file`
if [ -r ${LIB}/$file ]; then
file_to_fix=${LIB}/$file
else
if [ -r ${INPUT}/$file ]; then
file_to_fix=${INPUT}/$file
else
file_to_fix=""
fi
fi
if [ \! -z "$file_to_fix" ]; then
echo Checking $file_to_fix
sed 's/NC_NPI_RAW/NC_TPI_RAW/g' $file_to_fix \
| sed 's/NC_/(unsigned long) NC_/' > /tmp/$base
if cmp $file_to_fix /tmp/$base >/dev/null 2>&1; then \
true
else
echo Fixed $file_to_fix
rm -f ${LIB}/$file
cp /tmp/$base ${LIB}/$file
chmod a+r ${LIB}/$file
fi
rm -f /tmp/$base
fi
# Conditionalize all of <fs/rfs/rf_cache.h> on _KERNEL being defined.
file=fs/rfs/rf_cache.h
base=`basename $file`
if [ -r ${LIB}/$file ]; then
file_to_fix=${LIB}/$file
else
if [ -r ${INPUT}/$file ]; then
file_to_fix=${INPUT}/$file
else
file_to_fix=""
fi
fi
if [ \! -z "$file_to_fix" ]; then
echo Checking $file_to_fix
if grep _KERNEL $file_to_fix > /dev/null; then
true
else
echo '#ifdef _KERNEL' > /tmp/$base
cat $file_to_fix >> /tmp/$base
echo '#endif /* defined(_KERNEL) */' >> /tmp/$base
echo Fixed $file_to_fix
rm -f ${LIB}/$file
cp /tmp/$base ${LIB}/$file
chmod a+r ${LIB}/$file
rm -f /tmp/$base
fi
fi
# Conditionalize all of <sys/erec.h> on _KERNEL being defined.
file=sys/erec.h
base=`basename $file`
if [ -r ${LIB}/$file ]; then
file_to_fix=${LIB}/$file
else
if [ -r ${INPUT}/$file ]; then
file_to_fix=${INPUT}/$file
else
file_to_fix=""
fi
fi
if [ \! -z "$file_to_fix" ]; then
echo Checking $file_to_fix
if grep _KERNEL $file_to_fix > /dev/null; then
true
else
echo '#ifdef _KERNEL' > /tmp/$base
cat $file_to_fix >> /tmp/$base
echo '#endif /* defined(_KERNEL) */' >> /tmp/$base
echo Fixed $file_to_fix
rm -f ${LIB}/$file
cp /tmp/$base ${LIB}/$file
chmod a+r ${LIB}/$file
rm -f /tmp/$base
fi
fi
# Conditionalize all of <sys/err.h> on _KERNEL being defined.
file=sys/err.h
base=`basename $file`
if [ -r ${LIB}/$file ]; then
file_to_fix=${LIB}/$file
else
if [ -r ${INPUT}/$file ]; then
file_to_fix=${INPUT}/$file
else
file_to_fix=""
fi
fi
if [ \! -z "$file_to_fix" ]; then
echo Checking $file_to_fix
if grep _KERNEL $file_to_fix > /dev/null; then
true
else
echo '#ifdef _KERNEL' > /tmp/$base
cat $file_to_fix >> /tmp/$base
echo '#endif /* defined(_KERNEL) */' >> /tmp/$base
echo Fixed $file_to_fix
rm -f ${LIB}/$file
cp /tmp/$base ${LIB}/$file
chmod a+r ${LIB}/$file
rm -f /tmp/$base
fi
fi
# Conditionalize all of <sys/char.h> on _KERNEL being defined.
file=sys/char.h
base=`basename $file`
if [ -r ${LIB}/$file ]; then
file_to_fix=${LIB}/$file
else
if [ -r ${INPUT}/$file ]; then
file_to_fix=${INPUT}/$file
else
file_to_fix=""
fi
fi
if [ \! -z "$file_to_fix" ]; then
echo Checking $file_to_fix
if grep _KERNEL $file_to_fix > /dev/null; then
true
else
echo '#ifdef _KERNEL' > /tmp/$base
cat $file_to_fix >> /tmp/$base
echo '#endif /* defined(_KERNEL) */' >> /tmp/$base
echo Fixed $file_to_fix
rm -f ${LIB}/$file
cp /tmp/$base ${LIB}/$file
chmod a+r ${LIB}/$file
rm -f /tmp/$base
fi
fi
# Conditionalize all of <sys/getpages.h> on _KERNEL being defined.
file=sys/getpages.h
base=`basename $file`
if [ -r ${LIB}/$file ]; then
file_to_fix=${LIB}/$file
else
if [ -r ${INPUT}/$file ]; then
file_to_fix=${INPUT}/$file
else
file_to_fix=""
fi
fi
if [ \! -z "$file_to_fix" ]; then
echo Checking $file_to_fix
if grep _KERNEL $file_to_fix > /dev/null; then
true
else
echo '#ifdef _KERNEL' > /tmp/$base
cat $file_to_fix >> /tmp/$base
echo '#endif /* defined(_KERNEL) */' >> /tmp/$base
echo Fixed $file_to_fix
rm -f ${LIB}/$file
cp /tmp/$base ${LIB}/$file
chmod a+r ${LIB}/$file
rm -f /tmp/$base
fi
fi
# Conditionalize all of <sys/map.h> on _KERNEL being defined.
file=sys/map.h
base=`basename $file`
if [ -r ${LIB}/$file ]; then
file_to_fix=${LIB}/$file
else
if [ -r ${INPUT}/$file ]; then
file_to_fix=${INPUT}/$file
else
file_to_fix=""
fi
fi
if [ \! -z "$file_to_fix" ]; then
echo Checking $file_to_fix
if grep _KERNEL $file_to_fix > /dev/null; then
true
else
echo '#ifdef _KERNEL' > /tmp/$base
cat $file_to_fix >> /tmp/$base
echo '#endif /* defined(_KERNEL) */' >> /tmp/$base
echo Fixed $file_to_fix
rm -f ${LIB}/$file
cp /tmp/$base ${LIB}/$file
chmod a+r ${LIB}/$file
rm -f /tmp/$base
fi
fi
# Conditionalize all of <sys/cmn_err.h> on _KERNEL being defined.
file=sys/cmn_err.h
base=`basename $file`
if [ -r ${LIB}/$file ]; then
file_to_fix=${LIB}/$file
else
if [ -r ${INPUT}/$file ]; then
file_to_fix=${INPUT}/$file
else
file_to_fix=""
fi
fi
if [ \! -z "$file_to_fix" ]; then
echo Checking $file_to_fix
if grep _KERNEL $file_to_fix > /dev/null; then
true
else
echo '#ifdef _KERNEL' > /tmp/$base
cat $file_to_fix >> /tmp/$base
echo '#endif /* defined(_KERNEL) */' >> /tmp/$base
echo Fixed $file_to_fix
rm -f ${LIB}/$file
cp /tmp/$base ${LIB}/$file
chmod a+r ${LIB}/$file
rm -f /tmp/$base
fi
fi
# Conditionalize all of <sys/kdebugger.h> on _KERNEL being defined.
file=sys/kdebugger.h
base=`basename $file`
if [ -r ${LIB}/$file ]; then
file_to_fix=${LIB}/$file
else
if [ -r ${INPUT}/$file ]; then
file_to_fix=${INPUT}/$file
else
file_to_fix=""
fi
fi
if [ \! -z "$file_to_fix" ]; then
echo Checking $file_to_fix
if grep _KERNEL $file_to_fix > /dev/null; then
true
else
echo '#ifdef _KERNEL' > /tmp/$base
cat $file_to_fix >> /tmp/$base
echo '#endif /* defined(_KERNEL) */' >> /tmp/$base
echo Fixed $file_to_fix
rm -f ${LIB}/$file
cp /tmp/$base ${LIB}/$file
chmod a+r ${LIB}/$file
rm -f /tmp/$base
fi
fi
# Conditionalize some of <netinet/in.h> on _KERNEL being defined.
file=netinet/in.h
base=`basename $file`
if [ -r ${LIB}/$file ]; then
file_to_fix=${LIB}/$file
else
if [ -r ${INPUT}/$file ]; then
file_to_fix=${INPUT}/$file
else
file_to_fix=""
fi
fi
if [ \! -z "$file_to_fix" ]; then
echo Checking $file_to_fix
if grep _KERNEL $file_to_fix > /dev/null; then
true
else
sed -e '/#ifdef INKERNEL/i\
#ifdef _KERNEL' \
-e '/#endif[ ]*\/\* INKERNEL \*\//a\
#endif /* _KERNEL */' \
$file_to_fix > ${LIB}/${file}.sed
rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
echo Fixed $file_to_fix
fi
fi
# Conditionalize some of <sys/endian.h> on __GNUC__ and __GNUG__.
file=sys/endian.h
base=`basename $file`
if [ -r ${LIB}/$file ]; then
file_to_fix=${LIB}/$file
else
if [ -r ${INPUT}/$file ]; then
file_to_fix=${INPUT}/$file
else
file_to_fix=""
fi
fi
if [ \! -z "$file_to_fix" ]; then
echo Checking $file_to_fix
if grep __GNUC__ $file_to_fix > /dev/null; then
true
else
sed -e '/# ifdef __STDC__/i\
# if !defined (__GNUC__) && !defined (__GNUG__)' \
-e '/# include <sys\/byteorder.h>/s/ / /'\
-e '/# include <sys\/byteorder.h>/i\
# endif /* !defined (__GNUC__) && !defined (__GNUG__) */'\
$file_to_fix > ${LIB}/${file}.sed
rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
echo Fixed $file_to_fix
fi
fi
# Commented out because tmcconne@sedona.intel.com says we don't clearly need it
# and the text in types.h is not erroneous.
## In sys/types.h, don't name the enum for booleans.
#
#file=sys/types.h
#base=`basename $file`
#if [ -r ${LIB}/$file ]; then
# file_to_fix=${LIB}/$file
#else
# if [ -r ${INPUT}/$file ]; then
# file_to_fix=${INPUT}/$file
# else
# file_to_fix=""
# fi
#fi
#if [ \! -z "$file_to_fix" ]; then
# echo Checking $file_to_fix
# if grep "enum boolean" $file_to_fix > /dev/null; then
# sed -e 's/enum boolean/enum/' ${LIB}/$file > ${LIB}/${file}.sed
# rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
# echo Fixed $file_to_fix
# else
# true
# fi
#fi
# Remove useless extern keyword from struct forward declarations in
# <sys/stream.h> and <sys/strsubr.h>
file=sys/stream.h
base=`basename $file`
if [ -r ${LIB}/$file ]; then
file_to_fix=${LIB}/$file
else
if [ -r ${INPUT}/$file ]; then
file_to_fix=${INPUT}/$file
else
file_to_fix=""
fi
fi
if [ \! -z "$file_to_fix" ]; then
echo Checking $file_to_fix
sed -e '
s/extern struct stdata;/struct stdata;/g
s/extern struct strevent;/struct strevent;/g
' $file_to_fix > /tmp/$base
if cmp $file_to_fix /tmp/$base >/dev/null 2>&1; then \
true
else
echo Fixed $file_to_fix
rm -f ${LIB}/$file
cp /tmp/$base ${LIB}/$file
chmod a+r ${LIB}/$file
fi
rm -f /tmp/$base
fi
file=sys/strsubr.h
base=`basename $file`
if [ -r ${LIB}/$file ]; then
file_to_fix=${LIB}/$file
else
if [ -r ${INPUT}/$file ]; then
file_to_fix=${INPUT}/$file
else
file_to_fix=""
fi
fi
if [ \! -z "$file_to_fix" ]; then
echo Checking $file_to_fix
sed -e '
s/extern struct strbuf;/struct strbuf;/g
s/extern struct uio;/struct uio;/g
s/extern struct thread;/struct thread;/g
s/extern struct proc;/struct proc;/g
' $file_to_fix > /tmp/$base
if cmp $file_to_fix /tmp/$base >/dev/null 2>&1; then \
true
else
echo Fixed $file_to_fix
rm -f ${LIB}/$file
cp /tmp/$base ${LIB}/$file
chmod a+r ${LIB}/$file
fi
rm -f /tmp/$base
fi
# Convert functions to prototype form, and fix arg names in <sys/stat.h>.
file=sys/stat.h
base=`basename $file`
if [ -r ${LIB}/$file ]; then
file_to_fix=${LIB}/$file
else
if [ -r ${INPUT}/$file ]; then
file_to_fix=${INPUT}/$file
else
file_to_fix=""
fi
fi
if [ \! -z "$file_to_fix" ]; then
echo Checking $file_to_fix
cp $file_to_fix /tmp/$base
chmod +w /tmp/$base
ex /tmp/$base <<EOF
/^stat(/
s/(.*$/(/
j
s/;/,/
j
s/;/)/
/^lstat(/
s/(.*$/(/
j
s/;/,/
j
s/;/)/
/^fstat(/
s/(.*$/(/
j
s/;/,/
j
s/;/)/
/^mknod(/
s/(.*$/(/
j
s/;/,/
j
s/;/,/
j
s/;/)/
1,\$s/\([^A-Za-z]\)path\([^A-Za-z]\)/\1__path\2/g
1,\$s/\([^A-Za-z]\)buf\([^A-Za-z]\)/\1__buf\2/g
1,\$s/\([^A-Za-z]\)fd\([^A-Za-z]\)/\1__fd\2/g
1,\$s/ret\([^u]\)/__ret\1/g
1,\$s/\([^_]\)mode\([^_]\)/\1__mode\2/g
1,\$s/\([^_r]\)dev\([^_]\)/\1__dev\2/g
wq
EOF
echo Fixed $file_to_fix
rm -f ${LIB}/$file
cp /tmp/$base ${LIB}/$file
chmod a+r ${LIB}/$file
rm -f /tmp/$base
fi
# Sony NEWSOS 5.0 does not support the complete ANSI C standard.
if [ -x /bin/sony ]; then
if /bin/sony; then
# Change <stdio.h> to not define __filbuf, __flsbuf, and __iob
file=stdio.h
base=`basename $file`
if [ -r ${LIB}/$file ]; then
file_to_fix=${LIB}/$file
else
if [ -r ${INPUT}/$file ]; then
file_to_fix=${INPUT}/$file
else
file_to_fix=""
fi
fi
if [ \! -z "$file_to_fix" ]; then
echo Checking $file_to_fix
cp $file_to_fix /tmp/$base
chmod +w /tmp/$base
sed -e '
s/__filbuf/_filbuf/g
s/__flsbuf/_flsbuf/g
s/__iob/_iob/g
' /tmp/$base > /tmp/$base.sed
mv /tmp/$base.sed /tmp/$base
if cmp $file_to_fix /tmp/$base.sed >/dev/null 2>&1; then
true
else
echo Fixed $file_to_fix
rm -f ${LIB}/$file
cp /tmp/$base ${LIB}/$file
chmod a+r ${LIB}/$file
fi
rm -f /tmp/$base
fi
# Change <ctype.h> to not define __ctype
file=ctype.h
base=`basename $file`
if [ -r ${LIB}/$file ]; then
file_to_fix=${LIB}/$file
else
if [ -r ${INPUT}/$file ]; then
file_to_fix=${INPUT}/$file
else
file_to_fix=""
fi
fi
if [ \! -z "$file_to_fix" ]; then
echo Checking $file_to_fix
cp $file_to_fix /tmp/$base
chmod +w /tmp/$base
sed -e '
s/__ctype/_ctype/g
' /tmp/$base > /tmp/$base.sed
mv /tmp/$base.sed /tmp/$base
if cmp $file_to_fix /tmp/$base.sed >/dev/null 2>&1; then
true
else
echo Fixed $file_to_fix
rm -f ${LIB}/$file
cp /tmp/$base ${LIB}/$file
chmod a+r ${LIB}/$file
fi
rm -f /tmp/$base
fi
fi
fi
# In limits.h, put #ifndefs around things that are supposed to be defined
# in float.h to avoid redefinition errors if float.h is included first.
# Solaris 2.1 has this problem.
file=limits.h
base=`basename $file`
if [ -r ${LIB}/$file ]; then
file_to_fix=${LIB}/$file
else
if [ -r ${INPUT}/$file ]; then
file_to_fix=${INPUT}/$file
else
file_to_fix=""
fi
fi
if [ \! -z "$file_to_fix" ]; then
echo Checking $file_to_fix
sed -e '/[ ]FLT_MIN[ ]/i\
#ifndef FLT_MIN'\
-e '/[ ]FLT_MIN[ ]/a\
#endif'\
-e '/[ ]FLT_MAX[ ]/i\
#ifndef FLT_MAX'\
-e '/[ ]FLT_MAX[ ]/a\
#endif'\
-e '/[ ]FLT_DIG[ ]/i\
#ifndef FLT_DIG'\
-e '/[ ]FLT_DIG[ ]/a\
#endif'\
-e '/[ ]DBL_MIN[ ]/i\
#ifndef DBL_MIN'\
-e '/[ ]DBL_MIN[ ]/a\
#endif'\
-e '/[ ]DBL_MAX[ ]/i\
#ifndef DBL_MAX'\
-e '/[ ]DBL_MAX[ ]/a\
#endif'\
-e '/[ ]DBL_DIG[ ]/i\
#ifndef DBL_DIG'\
-e '/[ ]DBL_DIG[ ]/a\
#endif' $file_to_fix > /tmp/$base
if cmp $file_to_fix /tmp/$base >/dev/null 2>&1; then \
true
else
echo Fixed $file_to_fix
rm -f ${LIB}/$file
cp /tmp/$base ${LIB}/$file
chmod a+r ${LIB}/$file
fi
rm -f /tmp/$base
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 ${INPUT}
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
cd ${ORIG_DIR}
echo 'Replacing <sys/byteorder.h>'
rm -f ${LIB}/sys/byteorder.h
cp ${SRCDIR}/byteorder.h ${LIB}/sys/byteorder.h
exit 0