summaryrefslogtreecommitdiffstats
path: root/lib/libmytinfo/mktermhead.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/libmytinfo/mktermhead.c')
-rw-r--r--lib/libmytinfo/mktermhead.c160
1 files changed, 160 insertions, 0 deletions
diff --git a/lib/libmytinfo/mktermhead.c b/lib/libmytinfo/mktermhead.c
new file mode 100644
index 0000000..f70079b
--- /dev/null
+++ b/lib/libmytinfo/mktermhead.c
@@ -0,0 +1,160 @@
+/*
+ * mktermhead.c
+ *
+ * By Ross Ridge
+ * Public Domain
+ * 92/06/04 11:38:57
+ *
+ * mktermhead [-n caps] file
+ *
+ * generates term.head
+ *
+ */
+
+#define NOTLIB
+#include "defs.h"
+
+const char SCCSid[] = "@(#) mytinfo mktermhead.c 3.3 92/06/04 public domain, By Ross Ridge";
+
+#define DEFAULT_CAPS 1000
+
+
+int
+main(argc, argv)
+int argc;
+char **argv; {
+ FILE *f;
+ int caps = DEFAULT_CAPS;
+ int n;
+ register int i;
+ int nb, ns, nn;
+ struct caplist *list;
+
+ if (argc > 2 && argv[1][0] == '-' && argv[1][1] == 'n') {
+ caps = atoi(argv[2]);
+ argv += 2;
+ argc -= 2;
+ }
+
+ if (argc == 1) {
+ f = stdin;
+ } else if (argc == 2) {
+ f = fopen(argv[1], "r");
+ if (f == NULL) {
+ fprintf(stderr, "%s: can't open '%s'\n", argv[0],
+ argv[1]);
+ return 1;
+ }
+ } else {
+ fprintf(stderr, "%s: too many arguments\n", argv[0]);
+ fprintf(stderr, "usage: %s [-n caps] [file]\n", argv[0]);
+ return 1;
+ }
+
+ list = (struct caplist *) malloc(caps * sizeof(struct caplist));
+ if (list == NULL) {
+ fprintf(stderr, "%s: malloc failed.\n", argv[0]);
+ return 1;
+ }
+
+ n = readcaps(f, list, caps);
+ if (n > caps) {
+ fprintf(stderr, "%s: too many caps, use -n.\n", argv[0]);
+ return 1;
+ }
+ switch(n) {
+ case 0:
+ fprintf(stderr, "%s: no caps in file.\n", argv[0]);
+ return 1;
+ case -1:
+ fprintf(stderr, "%s: bad caps line.\n", argv[0]);
+ return 1;
+ case -2:
+ fprintf(stderr, "%s: unexpected EOF.\n", argv[0]);
+ return 1;
+ }
+
+ puts("/*");
+ puts(" * term.h ");
+ puts(" *");
+ puts(" * This file was generated automatically.");
+ puts(" *");
+ puts(" */");
+ putchar('\n');
+ puts("#ifndef _TERM_H_");
+ puts("#define _TERM_H_");
+ putchar('\n');
+ nb = 0;
+ for (i = 0; i < n; i++) {
+ if (list[i].type == '!') {
+ printf("#define %-*s (_CUR_TERM.bools[%d])\n",
+ MAX_VARNAME, list[i].var, nb);
+ nb++;
+ }
+ }
+
+ nn = 0;
+ for (i = 0; i < n; i++) {
+ if (list[i].type == '#') {
+ printf("#define %-*s (_CUR_TERM.nums[%d])\n",
+ MAX_VARNAME, list[i].var, nn);
+ nn++;
+ }
+ }
+
+ ns = 0;
+ for (i = 0; i < n; i++) {
+ if (list[i].type == '$') {
+ printf("#define %-*s (_CUR_TERM.strs[%d])\n",
+ MAX_VARNAME, list[i].var, ns);
+ ns++;
+ }
+ }
+
+ putchar('\n');
+
+ printf ("#define NUM_OF_BOOLS\t%d\n", nb);
+ printf ("#define NUM_OF_NUMS\t%d\n", nn);
+ printf ("#define NUM_OF_STRS\t%d\n", ns);
+
+ putchar('\n');
+ puts("#ifndef OVERRIDE");
+ puts("#undef _USE_SGTTY");
+#ifdef USE_SGTTY
+ puts("#define _USE_SGTTY");
+#endif
+ puts("#undef _USE_TERMIO");
+#ifdef USE_TERMIO
+ puts("#define _USE_TERMIO");
+#endif
+ puts("#undef _USE_TERMIOS");
+#ifdef USE_TERMIOS
+ puts("#define _USE_TERMIOS");
+#endif
+ puts("#undef _USE_SMALLMEM");
+#ifdef USE_SMALLMEM
+ puts("#define _USE_SMALLMEM");
+#endif
+ puts("#undef _USE_PROTOTYPES");
+#ifdef USE_PROTOTYPES
+ puts("#define _USE_PROTOTYPES");
+#endif
+ puts("#undef _USE_WINSZ");
+#ifdef USE_WINSZ
+ puts("#define _USE_WINSZ");
+#endif
+ puts("#undef _USE_TERMINFO");
+#ifdef USE_TERMINFO
+ puts("#define _USE_TERMINFO");
+#endif
+ puts("#undef _USE_TERMCAP");
+#ifdef USE_TERMCAP
+ puts("#define _USE_TERMCAP");
+#endif
+ puts("#undef _MAX_CHUNK");
+ printf("#define _MAX_CHUNK %d\n", MAX_CHUNK);
+ puts("#endif /* OVERRIDE */");
+ putchar('\n');
+
+ return 0;
+}
OpenPOWER on IntegriCloud