Annotation of 43BSD/contrib/jove/setmaps.c, revision 1.1.1.1

1.1       root        1: /*************************************************************************
                      2:  * This program is copyright (C) 1985, 1986 by Jonathan Payne.  It is    *
                      3:  * provided to you without charge for use only on a licensed Unix        *
                      4:  * system.  You may copy JOVE provided that this notice is included with *
                      5:  * the copy.  You may not sell copies of this program or versions        *
                      6:  * modified for use on microcomputer systems, unless the copies are      *
                      7:  * included with a Unix system distribution and the source is provided.  *
                      8:  *************************************************************************/
                      9: 
                     10: #define TXT_TO_C
                     11: 
                     12: #include "funcdefs.c"
                     13: #undef putchar /* From jove.h via funcdefs.c, conflicts with STDIO */
                     14: #undef putc
                     15: #undef getc
                     16: #undef EOF
                     17: #undef FILE
                     18: #undef BUFSIZ
                     19: #include <stdio.h>
                     20: 
                     21: match(choices, what)
                     22: register struct cmd    choices[];
                     23: register char  *what;
                     24: {
                     25:        register int    len;
                     26:        int     i,
                     27:                found = 0,
                     28:                save,
                     29:                exactmatch = -1;
                     30: 
                     31:        len = strlen(what);
                     32:        for (i = 0; choices[i].Name != 0; i++) {
                     33:                if (*what != *choices[i].Name)
                     34:                        continue;
                     35:                if (strncmp(what, choices[i].Name, len) == 0)
                     36:                        return i;
                     37:        }
                     38:        return -1;
                     39: }
                     40: 
                     41: char *
                     42: PPchar(c)
                     43: int    c;
                     44: {
                     45:        static char     str[10];
                     46:        char    *cp = str;
                     47: 
                     48:        if (c == '\033')
                     49:                strcpy(cp, "ESC");
                     50:        else if (c < ' ')
                     51:                (void) sprintf(cp, "C-%c", c + '@');
                     52:        else if (c == '\177')
                     53:                strcpy(cp, "^?");
                     54:        else
                     55:                (void) sprintf(cp, "%c", c);
                     56:        return cp;
                     57: }
                     58: 
                     59: extract(into, from)
                     60: char   *into,
                     61:        *from;
                     62: {
                     63:        from += 2;      /* Past tab and first double quote. */
                     64:        while ((*into = *from++) != '"')
                     65:                into++;
                     66:        *into = 0;
                     67: }
                     68: 
                     69: main()
                     70: {
                     71:        FILE    *ifile,
                     72:                *of;
                     73:        char    line[100],
                     74:                comname[70];
                     75:        int     comnum,
                     76:                ch;
                     77: 
                     78:        ifile = stdin;
                     79:        of = stdout;
                     80:        if (ifile == NULL || of == NULL) {
                     81:                printf("Cannot read input or write output.\n");
                     82:                exit(1);
                     83:        }
                     84:        while (fgets(line, sizeof line, ifile) != NULL) {
                     85:                if (strncmp(line, "\t\"", 2) != 0) {
                     86:                        fprintf(of, line);
                     87:                        ch = 0;
                     88:                        continue;
                     89:                }
                     90:                extract(comname, line);
                     91:                if (strcmp(comname, "unbound") == 0) 
                     92:                        comnum = 12345;
                     93:                else {
                     94:                        comnum = match(commands, comname);
                     95:                        if (comnum < 0) {
                     96:                                fprintf(stderr, "Cannot find command \"%s\".\n", comname);
                     97:                                exit(1);
                     98:                        }
                     99:                }
                    100:                if (comnum == 12345)
                    101:                        fprintf(of, "   (data_obj *) 0,                 /* %s */\n", PPchar(ch++));
                    102:                else
                    103:                        fprintf(of, "   (data_obj *) &commands[%d],     /* %s */\n", comnum, PPchar(ch++));
                    104:        }
                    105:        fclose(of);
                    106:        fclose(ifile);
                    107:        exit(0);
                    108: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.