ncurses 6.1 - patch 20200118
[ncurses.git] / ncurses / tinfo / MKnames.awk
index 1d22224c29c16525ef0feaf2720077b76d01bdd5..b8dd4b93c62451863b50fb690107fc1f02c67bd8 100644 (file)
@@ -1,5 +1,5 @@
 ##############################################################################
-# Copyright (c) 2007 Free Software Foundation, Inc.                          #
+# Copyright (c) 2007-2009,2019 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"), #
@@ -25,7 +25,7 @@
 # use or other dealings in this Software without prior written               #
 # authorization.                                                             #
 ##############################################################################
-# $Id: MKnames.awk,v 1.17 2007/09/01 20:49:32 tom Exp $
+# $Id: MKnames.awk,v 1.23 2019/03/09 16:49:06 tom Exp $
 function large_item(value) {
        result = sprintf("%d,", offset);
        offset = offset + length(value) + 1;
@@ -79,7 +79,9 @@ BEGIN {
        }
 
 $1 ~ /^#/              {next;}
+$1 ~ /^(cap|info)alias/        {next;}
 
+$1 == "userdef"                {next;}
 $1 == "SKIPWARN"       {next;}
 
 $3 == "bool"   {
@@ -107,8 +109,6 @@ END {
                print  ""
                print  "#if BROKEN_LINKER || USE_REENTRANT"
                print  ""
-               print  "#include <term.h>"
-               print  ""
                if (bigstrings) {
                        printf "static const char _nc_name_blob[] = \n"
                        printf "%s;\n", bigstr;
@@ -126,14 +126,14 @@ END       {
                        print  "                if ((*value = typeCalloc(NCURSES_CONST char *, size + 1)) != 0) {"
                        print  "                        unsigned n;"
                        print  "                        for (n = 0; n < size; ++n) {"
-                       print  "                                (*value)[n] = _nc_name_blob + offsets[n];"
+                       print  "                                (*value)[n] = (NCURSES_CONST char *) _nc_name_blob + offsets[n];"
                        print  "                        }"
                        print  "                }"
                        print  "        }"
                        print  "        return *value;"
                        print  "}"
                        print  ""
-                       print  "#define FIX(it) NCURSES_IMPEXP IT * NCURSES_API _nc_##it(void) { return alloc_array(&ptr_##it, _nc_offset_##it, SIZEOF(_nc_offset_##it)); }"
+                       print  "#define FIX(it) NCURSES_IMPEXP IT * NCURSES_API NCURSES_PUBLIC_VAR(it)(void) { return alloc_array(&ptr_##it, _nc_offset_##it, SIZEOF(_nc_offset_##it)); }"
                } else {
                        print  "#define DCL(it) static IT data##it[]"
                        print  ""
@@ -143,9 +143,18 @@ END        {
                        print_strings("numfnames", small_numfnames);
                        print_strings("strnames", small_strnames);
                        print_strings("strfnames", small_strfnames);
-                       print  "#define FIX(it) NCURSES_IMPEXP IT * NCURSES_API _nc_##it(void) { return data##it; }"
+                       print  "#define FIX(it) NCURSES_IMPEXP IT * NCURSES_API NCURSES_PUBLIC_VAR(it)(void) { return data##it; }"
                }
                print  ""
+               print  "/* remove public definition which conflicts with FIX() */"
+               print  "#undef boolnames"
+               print  "#undef boolfnames"
+               print  "#undef numnames"
+               print  "#undef numfnames"
+               print  "#undef strnames"
+               print  "#undef strfnames"
+               print  ""
+               print  "/* add local definition */"
                print  "FIX(boolnames)"
                print  "FIX(boolfnames)"
                print  "FIX(numnames)"
@@ -153,6 +162,31 @@ END        {
                print  "FIX(strnames)"
                print  "FIX(strfnames)"
                print  ""
+               print  "/* restore the public definition */"
+               print  "#define boolnames  NCURSES_PUBLIC_VAR(boolnames())"
+               print  "#define boolfnames NCURSES_PUBLIC_VAR(boolfnames())"
+               print  "#define numnames   NCURSES_PUBLIC_VAR(numnames())"
+               print  "#define numfnames  NCURSES_PUBLIC_VAR(numfnames())"
+               print  "#define strnames   NCURSES_PUBLIC_VAR(strnames())"
+               print  "#define strfnames  NCURSES_PUBLIC_VAR(strfnames())"
+               print  ""
+               print  "#define FREE_FIX(it) if (ptr_##it) { FreeAndNull(ptr_##it); }"
+               print  ""
+               print  "#if NO_LEAKS"
+               print  "NCURSES_EXPORT(void)"
+               print  "_nc_names_leaks(void)"
+               print  "{"
+               if (bigstrings) {
+               print  "FREE_FIX(boolnames)"
+               print  "FREE_FIX(boolfnames)"
+               print  "FREE_FIX(numnames)"
+               print  "FREE_FIX(numfnames)"
+               print  "FREE_FIX(strnames)"
+               print  "FREE_FIX(strfnames)"
+               }
+               print  "}"
+               print  "#endif"
+               print  ""
                print  "#else"
                print  ""
                print  "#define DCL(it) NCURSES_EXPORT_VAR(IT) it[]"