X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=perly.fixer;h=16ea92514430919848f0d31eb8abd418fa2bcbc1;hb=1cc8b4c566f7901a54e4b576f09608beb4c81f86;hp=daa558e84e4cd7d408634f3e280149e019a061a8;hpb=09bef84370e90d727656ea11ba5ee8be80e361d3;p=p5sagit%2Fp5-mst-13.2.git diff --git a/perly.fixer b/perly.fixer index daa558e..16ea925 100755 --- a/perly.fixer +++ b/perly.fixer @@ -2,7 +2,7 @@ # Fix up yacc output to allow dynamic allocation. Since perly.c # is now provided with the perl source, this should not be necessary. -# +# # However, if the user wishes to use byacc, or wishes to try another # compiler compiler (e.g. bison or yacc), this script will get run. # See makefile run_byacc target for more details. @@ -14,11 +14,25 @@ # # Additional information to make the BSD section work with SunOS 4.0.2 # tdinger@East.Sun.COM (Tom Dinger) 4/15/1991 +# +# Also edit some practices gcc -Wall finds questionable. +# input=$1 output=$2 tmp=/tmp/f$$ +inputh=`echo $input|sed 's:\.c$:.h:'` +if grep '^#ifdef PERL_CORE' $inputh; then + : never mind +else + echo "#ifdef PERL_CORE" > $tmp + sed -e 's:^typedef union {:#endif /* PERL_CORE */\ +\ +typedef union {:' $inputh >> $tmp + mv -f $tmp $inputh +fi + if grep 'yaccpar 1.8 (Berkeley)' $input >/dev/null 2>&1; then cp $input $output # Don't expect the diff to do everything -- do some by hand @@ -30,6 +44,11 @@ if grep 'yaccpar 1.8 (Berkeley)' $input >/dev/null 2>&1; then -e '/^static static/s/^static //' \ -e '/^#define.WORD/,/^#define.ARROW/d' \ -e '/^int.yydebug/,/^#define.yystacksize/d' \ + -e 's/^yyerrlab:$//' \ + -e 's/^ goto yyerrlab;//' \ + -e 's/^yynewerror:$//' \ + -e 's/^ goto yynewerror;//' \ + -e 's|^static char yysccsid\(.*\)|/* static char yysccsid\1 */|' \ < $output > $tmp && mv -f $tmp $output || exit 1 rm -rf $input echo "If you need to debug perly.c, you need to fix up the #line" @@ -45,6 +64,11 @@ elif grep 'yaccpar 1.9 (Berkeley)' $input >/dev/null 2>&1; then -e '/^static static/s/^static //' \ -e '/^#define.WORD/,/^#define.ARROW/d' \ -e '/^int.yydebug/,/^#define.yystacksize/d' \ + -e 's/^yyerrlab:$//' \ + -e 's/^ goto yyerrlab;//' \ + -e 's/^yynewerror:$//' \ + -e 's/^ goto yynewerror;//' \ + -e 's|^static char yysccsid\(.*\)|/* static char yysccsid\1 */|' \ < $output > $tmp && mv -f $tmp $output || exit 1 rm -rf $input echo "If you need to debug perly.c, you need to fix up the #line"