X-Git-Url: http://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=ncurses%2Ftinfo%2Fmake_keys.c;h=fa0c2f2706e0cf2f19f709d0c80ef39d65d8e0e5;hp=8eb4a9afc6a5928d423b32c18933987c138b44a6;hb=746490c7ab9f66c7521c500684e65eca223c551c;hpb=9fab8ab6b69130169a6880e63585d83efb1c1722 diff --git a/ncurses/tinfo/make_keys.c b/ncurses/tinfo/make_keys.c index 8eb4a9af..fa0c2f27 100644 --- a/ncurses/tinfo/make_keys.c +++ b/ncurses/tinfo/make_keys.c @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright (c) 1998-2007,2008 Free Software Foundation, Inc. * + * Copyright (c) 1998-2011,2015 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 * @@ -37,13 +37,28 @@ */ #define USE_TERMLIB 1 -#include +#include -MODULE_ID("$Id: make_keys.c,v 1.15 2008/11/16 00:19:59 juergen Exp $") +MODULE_ID("$Id: make_keys.c,v 1.21 2015/07/16 01:10:03 tom Exp $") #include -#define UNKNOWN (SIZEOF(strnames) + SIZEOF(strfnames)) +static unsigned +unknown(void) +{ + static unsigned result = 0; + + if (result == 0) { + unsigned n; + for (n = 0; strnames[n] != 0; n++) { + ++result; + } + for (n = 0; strfnames[n] != 0; n++) { + ++result; + } + } + return result; +} static unsigned lookup(const char *name) @@ -64,7 +79,7 @@ lookup(const char *name) } } } - return found ? n : UNKNOWN; + return found ? n : unknown(); } static void @@ -73,10 +88,11 @@ make_keys(FILE *ifp, FILE *ofp) char buffer[BUFSIZ]; char from[256]; char to[256]; + unsigned ignore = unknown(); unsigned maxlen = 16; int scanned; - while (fgets(buffer, sizeof(buffer), ifp) != 0) { + while (fgets(buffer, (int) sizeof(buffer), ifp) != 0) { if (*buffer == '#') continue; @@ -86,13 +102,13 @@ make_keys(FILE *ifp, FILE *ofp) scanned = sscanf(buffer, "%255s %255s", to, from); if (scanned == 2) { unsigned code = lookup(from); - if (code == UNKNOWN) + if (code == ignore) continue; if (strlen(from) > maxlen) - maxlen = strlen(from); - fprintf(ofp, "\t{ %4d, %-*.*s },\t/* %s */\n", + maxlen = (unsigned) strlen(from); + fprintf(ofp, "\t{ %4u, %-*.*s },\t/* %s */\n", code, - maxlen, maxlen, + (int) maxlen, (int) maxlen, to, from); }