ncurses 5.6 - patch 20080531
[ncurses.git] / ncurses / tinfo / MKnames.awk
index a61c648ddf37108a262f01bd25473ca769b5512f..93e682c2d28db529f9a8cd7ca0e263a8827ca969 100644 (file)
@@ -25,7 +25,7 @@
 # use or other dealings in this Software without prior written               #
 # authorization.                                                             #
 ##############################################################################
-# $Id: MKnames.awk,v 1.16 2007/08/18 21:37:52 tom Exp $
+# $Id: MKnames.awk,v 1.18 2007/11/03 20:24:15 tom Exp $
 function large_item(value) {
        result = sprintf("%d,", offset);
        offset = offset + length(value) + 1;
@@ -62,7 +62,7 @@ function print_offsets(name,value) {
        printf "%s",  value
        print  "};"
        print  ""
-       printf "static char ** ptr_%s = 0;\n", name
+       printf "static NCURSES_CONST char ** ptr_%s = 0;\n", name
        print  ""
 }
 
@@ -120,10 +120,10 @@ END       {
                        print_offsets("strnames", large_strnames);
                        print  ""
                        print  "static IT *"
-                       print  "alloc_array(char ***value, const short *offsets, unsigned size)"
+                       print  "alloc_array(NCURSES_CONST char ***value, const short *offsets, unsigned size)"
                        print  "{"
                        print  "        if (*value == 0) {"
-                       print  "                if ((*value = typeCalloc(char *, size + 1)) != 0) {"
+                       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];"
@@ -153,6 +153,21 @@ END        {
                print  "FIX(strnames)"
                print  "FIX(strfnames)"
                print  ""
+               print  ""
+               print  "#define FREE_FIX(it) if (ptr_##it) { FreeAndNull(ptr_##it); }"
+               print  ""
+               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  "#else"
                print  ""
                print  "#define DCL(it) NCURSES_EXPORT_VAR(IT) it[]"