# Directory in which to store the results.
LIB=${1?"fixincludes: output directory not specified"}
+# Define what target system we're fixing.
+if test -r ./Makefile; then
+ target_canonical="`sed -n -e 's,^target[ ]*=[ ]*\(.*\)$,\1,p' < Makefile`"
+ test -z "${target_canonical}" && target_canonical=unknown
+else
+ target_canonical=unknown
+fi
+
# Define PWDCMD as a command to use to get the working dir
# in the form that we want.
PWDCMD=pwd
# Correct the return type for strlen in string.h on Lynx.
# Correct the argument type for ffs in string.h on Alpha OSF/1 V2.0.
# Add missing const for strdup on OSF/1 V3.0.
+# On sysV88 layout is slightly different.
file=string.h
if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
-e 's/^\( strncmp()\),\n\( strlen(),\)$/\1;\
extern unsigned int\
\2/'\
+ -e '/^extern int$/N'\
+ -e 's/^extern int\(\n strlen(),\)/extern size_t\1/' \
${LIB}/$file > ${LIB}/${file}.sed
rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
if cmp $file ${LIB}/$file >/dev/null 2>&1; then
fi
done
+# libm.a on m88k-motorola-sysv3 contains a stupid optimization for function
+# hypot(), which returns the second argument without even looking at its value
+# if the other is 0.0
+file=math.h
+if [ $target_canonical = m88k-motorola-sysv3 ]; then
+ if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
+ cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
+ chmod +w ${LIB}/$file 2>/dev/null
+ chmod a+r ${LIB}/$file 2>/dev/null
+ fi
+
+ if [ -r ${LIB}/$file ]; then
+ echo Fixing $file, hypot definition
+ sed -e '/^extern double hypot();$/a\
+\/* Workaround a stupid Motorola optimization if one\
+ of x or y is 0.0 and the other is negative! *\/\
+#ifdef __STDC__\
+static __inline__ double fake_hypot (double x, double y)\
+#else\
+static __inline__ double fake_hypot (x, y)\
+ double x, y;\
+#endif\
+{\
+ return fabs (hypot (x, y));\
+}\
+#define hypot fake_hypot
+' \
+ ${LIB}/$file > ${LIB}/${file}.sed
+ rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
+ if cmp $file ${LIB}/$file >/dev/null 2>&1; then
+ rm -f ${LIB}/$file
+ fi
+ fi
+fi
+
# math.h on SunOS 4 puts the declaration of matherr before the definition
# of struct exception, so the prototype (added by fixproto) causes havoc.
file=math.h