X-Git-Url: https://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=ncurses%2Ftinfo%2Fmake_keys.c;h=80bbf63198a5595665618b510e2f3e7d052847c8;hp=3c98da23e019ba5b1a7c1300122cfc3f6d9f28d1;hb=HEAD;hpb=46722468f47c2b77b3987729b4bcf2321cccfd01 diff --git a/ncurses/tinfo/make_keys.c b/ncurses/tinfo/make_keys.c index 3c98da23..b8eb9343 100644 --- a/ncurses/tinfo/make_keys.c +++ b/ncurses/tinfo/make_keys.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998,2000 Free Software Foundation, Inc. * + * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 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 * @@ -27,7 +28,7 @@ ****************************************************************************/ /**************************************************************************** - * Author: Thomas E. Dickey 1997 * + * Author: Thomas E. Dickey 1997-on * ****************************************************************************/ /* @@ -35,18 +36,35 @@ * making the output show the indices into the TERMTYPE Strings array. Doing * it that way lets us cut down on the size of the init_keytry() function. */ -#include -MODULE_ID("$Id: make_keys.c,v 1.10 2000/12/10 02:55:08 tom Exp $") +#define USE_TERMLIB 1 +#include + +MODULE_ID("$Id: make_keys.c,v 1.23 2021/08/18 20:55:25 tom Exp $") #include -#define UNKNOWN (SIZEOF(strnames) + SIZEOF(strfnames)) +static unsigned +unknown(void) +{ + static unsigned result = 0; -static size_t + 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) { - size_t n; + unsigned n; bool found = FALSE; for (n = 0; strnames[n] != 0; n++) { if (!strcmp(name, strnames[n])) { @@ -62,29 +80,36 @@ lookup(const char *name) } } } - return found ? n : UNKNOWN; + return found ? n : unknown(); } static void -make_keys(FILE * ifp, FILE * ofp) +make_keys(FILE *ifp, FILE *ofp) { char buffer[BUFSIZ]; - char from[BUFSIZ]; - char to[BUFSIZ]; - int maxlen = 16; + 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; - if (sscanf(buffer, "%s %s", to, from) == 2) { - int code = lookup(from); - if (code == UNKNOWN) + + to[sizeof(to) - 1] = '\0'; + from[sizeof(from) - 1] = '\0'; + + scanned = sscanf(buffer, "%255s %255s", to, from); + if (scanned == 2) { + unsigned code = lookup(from); + if (code == ignore) continue; - if ((int) strlen(from) > maxlen) - maxlen = strlen(from); - fprintf(ofp, "\t{ %4d, %-*.*s },\t/* %s */\n", + if (strlen(from) > maxlen) + maxlen = (unsigned) strlen(from); + fprintf(ofp, "\t{ %4u, %-*.*s },\t/* %s */\n", code, - maxlen, maxlen, + (int) maxlen, (int) maxlen, to, from); } @@ -92,7 +117,7 @@ make_keys(FILE * ifp, FILE * ofp) } static void -write_list(FILE * ofp, const char **list) +write_list(FILE *ofp, const char **list) { while (*list != 0) fprintf(ofp, "%s\n", *list++); @@ -103,22 +128,24 @@ main(int argc, char *argv[]) { static const char *prefix[] = { - "#ifndef NCU_KEYS_H", - "#define NCU_KEYS_H 1", + "#ifndef _INIT_KEYTRY_H", + "#define _INIT_KEYTRY_H 1", "", "/* This file was generated by MAKE_KEYS */", "", + "#include ", + "", "#if BROKEN_LINKER", "static", "#endif", - "struct tinfo_fkeys _nc_tinfo_fkeys[] = {", + "const struct tinfo_fkeys _nc_tinfo_fkeys[] = {", 0 }; static const char *suffix[] = { "\t{ 0, 0} };", "", - "#endif /* NCU_KEYS_H */", + "#endif /* _INIT_KEYTRY_H */", 0 };