]> ncurses.scripts.mit.edu Git - ncurses.git/blobdiff - ncurses/base/MKlib_gen.sh
ncurses 6.5 - patch 20240504
[ncurses.git] / ncurses / base / MKlib_gen.sh
index 3829eff8eecb0a89007c96b11965c88b2bf6db57..f0ac0452e8ef909d0f0ef626d586a8909374e351 100755 (executable)
@@ -2,10 +2,10 @@
 #
 # MKlib_gen.sh -- generate sources from curses.h macro definitions
 #
-# ($Id: MKlib_gen.sh,v 1.68 2020/08/23 00:02:29 tom Exp $)
+# ($Id: MKlib_gen.sh,v 1.73 2022/10/01 13:14:20 tom Exp $)
 #
 ##############################################################################
-# Copyright 2018,2020 Thomas E. Dickey                                       #
+# Copyright 2018-2021,2022 Thomas E. Dickey                                  #
 # Copyright 1998-2016,2017 Free Software Foundation, Inc.                    #
 #                                                                            #
 # Permission is hereby granted, free of charge, to any person obtaining a    #
@@ -69,12 +69,21 @@ USE="$3"
 
 # A patch discussed here:
 #      https://gcc.gnu.org/ml/gcc-patches/2014-06/msg02185.html
+#
 # introduces spurious #line markers into the preprocessor output.  The result
 # appears in gcc 5.0 and (with modification) in 5.1, making it necessary to
 # determine if we are using gcc, and if so, what version because the proposed
 # solution uses a nonstandard option.
+#
+# As illustrated in
+#      https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60723
+#
+# gcc developers chose to ignore the problems with this, and summarized those
+# as "intriguing problems" in
+#      https://gcc.gnu.org/gcc-5/porting_to.html
+
 PRG=`echo "$1" | "$AWK" '{ sub(/^[     ]*/,""); sub(/[         ].*$/, ""); print; }' || exit 0`
-FSF=`("$PRG" --version 2>/dev/null || exit 0) | fgrep "Free Software Foundation" | head -n 1`
+FSF=`("$PRG" --version 2>/dev/null || exit 0) | ${FGREP-grep -F} "Free Software Foundation" | head -n 1`
 ALL=`"$PRG" -dumpversion 2>/dev/null || exit 0`
 ONE=`echo "$ALL" | sed -e 's/[^0-9].*$//'`
 if test -n "$FSF" && test -n "$ALL" && test -n "$ONE" ; then
@@ -92,7 +101,8 @@ ED4=sed4_${PID}.sed
 AW1=awk1_${PID}.awk
 AW2=awk2_${PID}.awk
 TMP=gen__${PID}.c
-trap "rm -f $ED1 $ED2 $ED3 $ED4 $AW1 $AW2 $TMP" 0 1 2 3 15
+trap "rm -f $ED1 $ED2 $ED3 $ED4 $AW1 $AW2 $TMP; exit 1" 1 2 3 15
+trap "rm -f $ED1 $ED2 $ED3 $ED4 $AW1 $AW2 $TMP" 0
 
 ALL=$USE
 if test "$USE" = implemented ; then
@@ -461,8 +471,9 @@ END         {
                                if ( value !~ /P_POUNDC/ ) {
                                        gsub(/[ \t]+/," ",value);
                                        sub(/^[0-9a-zA-Z_]+ /,"",value);
-                                       sub(/^\* /,"",value);
-                                       gsub(/[0-9a-zA-Z_]+ \* /,"",value);
+                                       sub(/^[*][ \t]*/,"",value);
+                                       gsub("struct[ \t]*[0-9a-zA-Z_]+[ \t]*[*]","",value);
+                                       gsub(/[0-9a-zA-Z_]+[ \t]*[*][ \t]*/,"",value);
                                        gsub(/ (const) /," ",value);
                                        gsub(/ (int|short|attr_t|chtype|wchar_t|NCURSES_BOOL|NCURSES_OUTC|NCURSES_OUTC_sp|va_list) /," ",value);
                                        gsub(/ void /,"",value);