diff options
Diffstat (limited to 'lib/libmytinfo/mkbinorder.c')
-rw-r--r-- | lib/libmytinfo/mkbinorder.c | 116 |
1 files changed, 116 insertions, 0 deletions
diff --git a/lib/libmytinfo/mkbinorder.c b/lib/libmytinfo/mkbinorder.c new file mode 100644 index 0000000..0bcc474 --- /dev/null +++ b/lib/libmytinfo/mkbinorder.c @@ -0,0 +1,116 @@ +/* + * mkbinorder.c + * + * By Ross Ridge + * Public Domain + * 92/02/01 07:30:04 + * + */ + +#define NOTLIB +#include "defs.h" +#include <term.h> + +const char SCCSid[] = "@(#) mytinfo mkbinorder.c 3.2 92/02/01 public domain, By Ross Ridge"; + +char cap[MAX_NAME]; +char *p2c = cap; +char **p2p2c = &p2c; + +int +main(argc, argv) +int argc; +char **argv; { + int r; + int ind; + FILE *f; + + if (argc == 1) + f = stdin; + else if (argc == 2) { + f = fopen(argv[1], "r"); + if (f == NULL) { + fprintf(stderr, "can't open %s\n", argv[1]); + exit(1); + } + } else { + fprintf(stderr, "argument count\n"); + exit(1); + } + + do { + r = fscanf(f, "%s", cap); + } while(r == 1 && strcmp(cap, "!") != 0); + if (r != 1) { + fprintf(stderr, "expected '!'\n"); + exit(1); + } + + puts("/*"); + puts(" * binorder.c"); + puts(" *"); + puts(" * This file was generated automatically"); + puts(" *"); + puts(" */\n"); + + puts("int _boolorder[] = {"); + + while(1) { + r = fscanf(f, "%s", cap); + cap[MAX_TINFONAME] = '\0'; + if (r != 1) { + fprintf(stderr, "unexpected EOF\n"); + exit(1); + } + if (strcmp(cap, "#") == 0) + break; + ind = _findboolname(cap); + if (ind == -1) { + fprintf(stderr, "unknown bool name '%s'\n", cap); + continue; + } + printf("\t%d,\n", ind); + } + puts("\t-1"); + puts("};\n"); + + puts("int _numorder[] = {"); + + while(1) { + r = fscanf(f, "%s", cap); + cap[MAX_TINFONAME] = '\0'; + if (r != 1) { + fprintf(stderr, "unexpected EOF\n"); + exit(1); + } + if (strcmp(cap, "$") == 0) + break; + ind = _findnumname(cap); + if (ind == -1) { + fprintf(stderr, "unknown num name '%s'\n", cap); + continue; + } + printf("\t%d,\n", ind); + } + puts("\t-1"); + puts("};\n"); + + puts("int _strorder[] = {"); + + while(1) { + r = fscanf(f, "%s", cap); + cap[MAX_TINFONAME] = '\0'; + if (r != 1) + break; + ind = _findstrname(cap); + if (ind == -1) { + fprintf(stderr, "unknown str name '%s'\n", cap); + continue; + } + printf("\t%d,\n", ind); + } + puts("\t-1"); + puts("};\n"); + + return 0; +} |