summaryrefslogtreecommitdiffstats
path: root/lib/libmytinfo/mkcaplist.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/libmytinfo/mkcaplist.c')
-rw-r--r--lib/libmytinfo/mkcaplist.c166
1 files changed, 166 insertions, 0 deletions
diff --git a/lib/libmytinfo/mkcaplist.c b/lib/libmytinfo/mkcaplist.c
new file mode 100644
index 0000000..2fedf2d
--- /dev/null
+++ b/lib/libmytinfo/mkcaplist.c
@@ -0,0 +1,166 @@
+/*
+ * mkcaplist.c
+ *
+ * By Ross Ridge
+ * Public Domain
+ * 92/02/01 07:30:05
+ *
+ * mkcaplist [-n caps] [file]
+ *
+ * makes caplist.c from the cap_list file
+ *
+ */
+
+#define NOTLIB
+#include "defs.h"
+
+const char SCCSid[] = "@(#) mytinfo mkcaplist.c 3.2 92/02/01 public domain, By Ross Ridge";
+
+#define DEFAULT_CAPS 1000
+
+struct caplist *list;
+
+int
+main(argc, argv)
+int argc;
+char **argv; {
+ FILE *f;
+ int caps = DEFAULT_CAPS;
+ int n;
+ register int i;
+
+ 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;
+ }
+ if (n == 0) {
+ fprintf(stderr, "%s: no caps in file.\n", argv[0]);
+ return 1;
+ }
+ if (n == -1) {
+ fprintf(stderr, "%s: bad caps line.\n", argv[0]);
+ return 1;
+ }
+ if (n == -2) {
+ fprintf(stderr, "%s: unexpected EOF.\n", argv[0]);
+ return 1;
+ }
+
+ puts("/*");
+ puts(" * caplist.c ");
+ puts(" *");
+ puts(" * This file was generated automatically.");
+ puts(" *");
+ puts(" */");
+ putchar('\n');
+
+ puts("char *boolnames[] = {");
+ for (i = 0; i < n; i++)
+ if (list[i].type == '!')
+ printf("\t\"%s\",\n", list[i].tinfo);
+ puts("\t(char *)0");
+ puts("};");
+ putchar('\n');
+
+ puts("char *boolcodes[] = {");
+ for (i = 0; i < n; i++)
+ if (list[i].type == '!')
+ printf("\t\"%s\",\n", list[i].tcap);
+ puts("\t(char *)0");
+ puts("};");
+ putchar('\n');
+
+ puts("char *boolfnames[] = {");
+ for (i = 0; i < n; i++)
+ if (list[i].type == '!')
+ printf("\t\"%s\",\n", list[i].var);
+ puts("\t(char *)0");
+ puts("};");
+ putchar('\n');
+
+ puts("char *numnames[] = {");
+ for (i = 0; i < n; i++)
+ if (list[i].type == '#')
+ printf("\t\"%s\",\n", list[i].tinfo);
+ puts("\t(char *)0");
+ puts("};");
+ putchar('\n');
+
+ puts("char *numcodes[] = {");
+ for (i = 0; i < n; i++)
+ if (list[i].type == '#')
+ printf("\t\"%s\",\n", list[i].tcap);
+ puts("\t(char *)0");
+ puts("};");
+ putchar('\n');
+
+ puts("char *numfnames[] = {");
+ for (i = 0; i < n; i++)
+ if (list[i].type == '#')
+ printf("\t\"%s\",\n", list[i].var);
+ puts("\t(char *)0");
+ puts("};");
+ putchar('\n');
+
+ puts("char *strnames[] = {");
+ for (i = 0; i < n; i++)
+ if (list[i].type == '$')
+ printf("\t\"%s\",\n", list[i].tinfo);
+ puts("\t(char *)0");
+ puts("};");
+ putchar('\n');
+
+ puts("char *strcodes[] = {");
+ for (i = 0; i < n; i++)
+ if (list[i].type == '$')
+ printf("\t\"%s\",\n", list[i].tcap);
+ puts("\t(char *)0");
+ puts("};");
+ putchar('\n');
+
+ puts("char *strfnames[] = {");
+ for (i = 0; i < n; i++)
+ if (list[i].type == '$')
+ printf("\t\"%s\",\n", list[i].var);
+ puts("\t(char *)0");
+ puts("};");
+ putchar('\n');
+
+ puts("char _strflags[] = {");
+ for (i = 0; i < n; i++)
+ if (list[i].type == '$')
+ printf("\t'%c',\n", list[i].flag);
+ puts("\t'\\0'");
+ puts("};");
+ putchar('\n');
+
+ return 0;
+}
OpenPOWER on IntegriCloud