]> ncurses.scripts.mit.edu Git - ncurses.git/blobdiff - ncurses/tinfo/make_keys.c
ncurses 6.4 - patch 20240414
[ncurses.git] / ncurses / tinfo / make_keys.c
index cf203afeffdd02b0b4c53a99cf18bafaaebe9e64..b8eb934357a3b0ce390c5b31748edf12ecbbbb0a 100644 (file)
@@ -1,5 +1,6 @@
 /****************************************************************************
- * Copyright (c) 1998-2008,2010 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            *
  */
 
 #define USE_TERMLIB 1
-#include <curses.priv.h>
+#include <build.priv.h>
 
-MODULE_ID("$Id: make_keys.c,v 1.17 2010/05/01 19:17:28 tom Exp $")
+MODULE_ID("$Id: make_keys.c,v 1.23 2021/08/18 20:55:25 tom Exp $")
 
 #include <names.c>
 
-#define UNKNOWN (unsigned) (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 +80,7 @@ lookup(const char *name)
            }
        }
     }
-    return found ? n : UNKNOWN;
+    return found ? n : unknown();
 }
 
 static void
@@ -73,10 +89,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,11 +103,11 @@ 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 = (unsigned) strlen(from);
-           fprintf(ofp, "\t{ %4d, %-*.*s },\t/* %s */\n",
+           fprintf(ofp, "\t{ %4u, %-*.*s },\t/* %s */\n",
                    code,
                    (int) maxlen, (int) maxlen,
                    to,
@@ -111,11 +128,13 @@ 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 <tic.h>",
+       "",
        "#if BROKEN_LINKER",
        "static",
        "#endif",
@@ -126,7 +145,7 @@ main(int argc, char *argv[])
     {
        "\t{ 0, 0} };",
        "",
-       "#endif /* NCU_KEYS_H */",
+       "#endif /* _INIT_KEYTRY_H */",
        0
     };