ncurses 6.2 - patch 20200502
[ncurses.git] / ncurses / base / MKlib_gen.sh
index 1552711966ef1131e0e5cd8232e6188175544779..c54bdfd187bd2dfdbe833bc177c5b95fc1911b57 100755 (executable)
@@ -2,10 +2,11 @@
 #
 # MKlib_gen.sh -- generate sources from curses.h macro definitions
 #
-# ($Id: MKlib_gen.sh,v 1.56 2017/01/07 16:02:47 tom Exp $)
+# ($Id: MKlib_gen.sh,v 1.65 2020/04/04 20:56:30 tom Exp $)
 #
 ##############################################################################
-# Copyright (c) 1998-2016,2017 Free Software Foundation, Inc.                #
+# Copyright 2018,2020 Thomas E. Dickey                                       #
+# Copyright 1998-2016,2017 Free Software Foundation, Inc.                    #
 #                                                                            #
 # Permission is hereby granted, free of charge, to any person obtaining a    #
 # copy of this software and associated documentation files (the "Software"), #
@@ -73,7 +74,7 @@ USE="$3"
 # determine if we are using gcc, and if so, what version because the proposed
 # solution uses a nonstandard option.
 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 "Free Software Foundation" | head -n 1`
 ALL=`"$PRG" -dumpversion 2>/dev/null || exit 0`
 ONE=`echo "$ALL" | sed -e 's/\..*$//'`
 if test -n "$FSF" && test -n "$ALL" && test -n "$ONE" ; then
@@ -91,7 +92,7 @@ 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 5 15
+trap "rm -f $ED1 $ED2 $ED3 $ED4 $AW1 $AW2 $TMP" 0 1 2 3 15
 
 ALL=$USE
 if test "$USE" = implemented ; then
@@ -99,6 +100,7 @@ if test "$USE" = implemented ; then
        cat >$ED1 <<EOF1
 /^extern.*implemented/{
        h
+       s/GCC_DEPRECATED([^)]*)//
        s/NCURSES_SP_NAME(\([^)]*\))/NCURSES_SP_NAME___\1/
        h
        s/^.*implemented:\([^   *]*\).*/P_POUNDCif_USE_\1_SUPPORT/p
@@ -242,6 +244,9 @@ $0 !~ /^P_/ {
                        break;
                }
        }
+       if (using == "implemented") {
+               printf "#undef %s\n", $myfunc;
+       }
        print $0;
        print "{";
        argcount = 1;
@@ -274,6 +279,11 @@ $0 !~ /^P_/ {
                dotrace = 0;
        }
 
+       do_getstr = 0;
+       if ($myfunc ~ /get[n]?str/) {
+               do_getstr = 1;
+       }
+
        call = "@@T((T_CALLED(\""
        args = ""
        comma = ""
@@ -310,7 +320,11 @@ $0 !~ /^P_/ {
                                call = call "%s"
                        } else if (pointer) {
                                if ( argtype == "char" ) {
-                                       call = call "%s"
+                                       if (do_getstr) {
+                                               call = call "%p"
+                                       } else {
+                                               call = call "%s"
+                                       }
                                        comma = comma "_nc_visbuf2(" num ","
                                        pointer = 0;
                                } else {
@@ -360,7 +374,7 @@ $0 !~ /^P_/ {
        call = call ")); "
 
        if (dotrace)
-               printf "%s", call
+               printf "%s\n\t@@", call
 
        if (match($0, "^void")) {
                call = ""
@@ -399,7 +413,7 @@ EOF1
 
 cat >$AW2 <<EOF1
 BEGIN          {
-               printf "/* This file was generated by $0 */\n"
+               printf "/* This file was generated by $0 $USE */\n"
                print ""
                print "/*"
                print " * DO NOT EDIT THIS FILE BY HAND!"
@@ -419,14 +433,10 @@ BEGIN             {
                print "#include <ncurses_cfg.h>"
                print ""
                print "#undef NCURSES_NOMACROS  /* _this_ file uses macros */"
+               print "#define NCURSES_NOMACROS 1"
                print ""
                print "#include <curses.priv.h>"
                print ""
-               print "#undef vw_scanw"
-               print "#undef vwscanw"
-               print ""
-               print "#undef vw_printw"
-               print "#undef vwprintw"
                }
 /^DECLARATIONS/        {start = 1; next;}
                {