X-Git-Url: https://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=ncurses%2Fbase%2FMKkeyname.awk;h=64bbef461eb6ef7b08f5d1e14a10984b3dbce897;hp=1c2a0760b747cbb16ffc365b4135dfea28529c9d;hb=03a795bde58b3280a4e9d80029a3b7fec13c79ad;hpb=772f879d17117c5b766022f28099e341ebea825b diff --git a/ncurses/base/MKkeyname.awk b/ncurses/base/MKkeyname.awk index 1c2a0760..64bbef46 100644 --- a/ncurses/base/MKkeyname.awk +++ b/ncurses/base/MKkeyname.awk @@ -1,4 +1,4 @@ -# $Id: MKkeyname.awk,v 1.36 2007/06/12 20:28:18 tom Exp $ +# $Id: MKkeyname.awk,v 1.37 2007/07/28 21:47:21 tom Exp $ ############################################################################## # Copyright (c) 1999-2006,2007 Free Software Foundation, Inc. # # # @@ -33,19 +33,36 @@ BEGIN { print "#include " print "#include " print "" - print "const struct kn _nc_key_names[] = {" + first = 1; } /^[^#]/ { - printf "\t{ %d, %s },\n", offset, $1 - offset += length($1) + 1 - names = names"\n\t\""$1"\\0\"" + if (bigstrings) { + if (first) { + print "struct kn { int offset; int code; };" + print "static const struct kn _nc_key_names[] = {" + } + printf "\t{ %d, %s },\n", offset, $1 + offset += length($1) + 1 + names = names"\n\t\""$1"\\0\"" + } else { + if (first) { + print "struct kn { const char *name; int code; };" + print "static const struct kn _nc_key_names[] = {" + } + printf "\t{ \"%s\", %s },\n", $1, $1; + } + first = 0; } END { - printf "\t{ -1, 0 }};\n" - print "" - print "static const char key_names[] = "names";" + if (bigstrings) { + printf "\t{ -1, 0 }};\n" + print "" + print "static const char key_names[] = "names";" + } else { + printf "\t{ 0, 0 }};\n" + } print "" print "#define SIZEOF_TABLE 256" print "#define MyTable _nc_globals.keyname_table" @@ -60,12 +77,21 @@ END { print " if (c == -1) {" print " result = \"-1\";" print " } else {" - print " for (i = 0; _nc_key_names[i].offset != -1; i++) {" - print " if (_nc_key_names[i].code == c) {" - print " result = (NCURSES_CONST char *)key_names + _nc_key_names[i].offset;" - print " break;" - print " }" - print " }" + if (bigstrings) { + print " for (i = 0; _nc_key_names[i].offset != -1; i++) {" + print " if (_nc_key_names[i].code == c) {" + print " result = (NCURSES_CONST char *)key_names + _nc_key_names[i].offset;" + print " break;" + print " }" + print " }" + } else { + print " for (i = 0; _nc_key_names[i].name != 0; i++) {" + print " if (_nc_key_names[i].code == c) {" + print " result = (NCURSES_CONST char *)_nc_key_names[i].name;" + print " break;" + print " }" + print " }" + } print "" print " if (result == 0 && (c >= 0 && c < SIZEOF_TABLE)) {" print " if (MyTable == 0)"