X-Git-Url: https://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=ncurses%2Ftinfo%2FMKcodes.awk;h=f0dc7b303bf6e7487954e0364bb1726a25bc850a;hp=d3aff51eca8b0d9b446a6263f2f0a58e6b9b8e45;hb=fe43d506ce08d1deef9e9e5a6d5fd4f9c9c32e1d;hpb=f7b8e526e024ce141e61633e966255400de67772;ds=sidebyside diff --git a/ncurses/tinfo/MKcodes.awk b/ncurses/tinfo/MKcodes.awk index d3aff51e..f0dc7b30 100644 --- a/ncurses/tinfo/MKcodes.awk +++ b/ncurses/tinfo/MKcodes.awk @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 1998-2006,2007 Free Software Foundation, Inc. # +# Copyright (c) 1998-2010,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: MKcodes.awk,v 1.3 2007/09/01 20:50:01 tom Exp $ +# $Id: MKcodes.awk,v 1.10 2019/03/09 16:43:37 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" { @@ -101,8 +103,6 @@ END { print "" print "#if BROKEN_LINKER || USE_REENTRANT" print "" - print "#include " - print "" if (bigstrings) { printf "static const char _nc_code_blob[] = \n" printf "%s;\n", bigstr; @@ -117,27 +117,52 @@ 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_code_blob + offsets[n];" + print " (*value)[n] = (NCURSES_CONST char *) _nc_code_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 "" print_strings("boolcodes", small_boolcodes); print_strings("numcodes", small_numcodes); print_strings("strcodes", small_strcodes); - 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 boolcodes" + print "#undef numcodes" + print "#undef strcodes" + print "" + print "/* add local definition */" print "FIX(boolcodes)" print "FIX(numcodes)" print "FIX(strcodes)" print "" + print "/* restore the public definition */" + print "" + print "#define FREE_FIX(it) if (ptr_##it) { FreeAndNull(ptr_##it); }" + print "#define boolcodes NCURSES_PUBLIC_VAR(boolcodes())" + print "#define numcodes NCURSES_PUBLIC_VAR(numcodes())" + print "#define strcodes NCURSES_PUBLIC_VAR(strcodes())" + print "" + print "#if NO_LEAKS" + print "NCURSES_EXPORT(void)" + print "_nc_codes_leaks(void)" + print "{" + if (bigstrings) { + print "FREE_FIX(boolcodes)" + print "FREE_FIX(numcodes)" + print "FREE_FIX(strcodes)" + } + print "}" + print "#endif" + print "" print "#else" print "" print "#define DCL(it) NCURSES_EXPORT_VAR(IT) it[]"