Annotation of 43BSDTahoe/new/jove/setmaps.c, revision 1.1

1.1     ! root        1: /***************************************************************************
        !             2:  * This program is Copyright (C) 1986, 1987, 1988 by Jonathan Payne.  JOVE *
        !             3:  * is provided to you without charge, and with no warranty.  You may give  *
        !             4:  * away copies of JOVE, including sources, provided that this notice is    *
        !             5:  * included in all the files.                                              *
        !             6:  ***************************************************************************/
        !             7: 
        !             8: #define TXT_TO_C       1       /* must be a number for MAC compiler */
        !             9: 
        !            10: #include "funcdefs.c"
        !            11: 
        !            12: #ifdef MAC
        !            13: #include "vars.c"
        !            14: #endif
        !            15: 
        !            16: #undef putchar /* From jove.h via funcdefs.c, conflicts with STDIO */
        !            17: #undef putc
        !            18: #undef getc
        !            19: #undef EOF
        !            20: #undef FILE
        !            21: #undef BUFSIZ
        !            22: #undef NULL
        !            23: #include <stdio.h>
        !            24: 
        !            25: matchcmd(choices, what)
        !            26: register struct cmd    choices[];
        !            27: register char  *what;
        !            28: {
        !            29:        register int    len;
        !            30:        int     i,
        !            31:                found = 0,
        !            32:                save,
        !            33:                exactmatch = -1;
        !            34: 
        !            35:        len = strlen(what);
        !            36:        for (i = 0; choices[i].Name != 0; i++) {
        !            37:                if (*what != *choices[i].Name)
        !            38:                        continue;
        !            39: #ifdef MAC /* see "left-margin" and "left-margin-here" */
        !            40:                if (strcmp(what, choices[i].Name) == 0)
        !            41: #else
        !            42:                if (strncmp(what, choices[i].Name, len) == 0)
        !            43: #endif
        !            44:                return i;
        !            45:        }
        !            46:        return -1;
        !            47: }
        !            48: 
        !            49: #ifdef MAC
        !            50: matchvar(choices, what)
        !            51: register struct variable choices[];
        !            52: register char  *what;
        !            53: {
        !            54:        register int    len;
        !            55:        int     i,
        !            56:                found = 0,
        !            57:                save,
        !            58:                exactmatch = -1;
        !            59: 
        !            60:        len = strlen(what);
        !            61:        for (i = 0; choices[i].Name != 0; i++) {
        !            62:                if (*what != *choices[i].Name)
        !            63:                        continue;
        !            64:                if (strcmp(what, choices[i].Name) == 0)
        !            65:                        return i;
        !            66:        }
        !            67:        return -1;
        !            68: }
        !            69: #endif
        !            70: 
        !            71: char *
        !            72: PPchar(c)
        !            73: int    c;
        !            74: {
        !            75:        static char     str[16];
        !            76:        char    *cp = str;
        !            77: 
        !            78:        if (c & 0200) {
        !            79:                c &= ~0200;
        !            80:                strcpy(cp, "M-");
        !            81:                cp += 2;
        !            82:        }
        !            83:        if (c == '\033')
        !            84:                strcpy(cp, "ESC");
        !            85: #ifdef IBMPC
        !            86:        else if (c == '\377')
        !            87:                strcpy(cp, "M");
        !            88: #endif /* IBMPC */
        !            89:        else if (c < ' ')
        !            90:                (void) sprintf(cp, "C-%c", c + '@');
        !            91:        else if (c == '\177')
        !            92:                strcpy(cp, "^?");
        !            93:        else
        !            94:                (void) sprintf(cp, "%c", c);
        !            95:        return str;
        !            96: }
        !            97: 
        !            98: void
        !            99: extract(into, from)
        !           100: char   *into,
        !           101:        *from;
        !           102: {
        !           103:        from += 2;      /* Past tab and first double quote. */
        !           104:        while ((*into = *from++) != '"')
        !           105:                into += 1;
        !           106:        *into = 0;
        !           107: }
        !           108: 
        !           109: 
        !           110: void
        !           111: 
        !           112: #ifdef MAC
        !           113: _main()                /* for Mac, so we can use redirection */
        !           114: #else
        !           115: main()
        !           116: #endif
        !           117: {
        !           118:        FILE    *ifile,
        !           119:                *of;
        !           120:        char    line[100],
        !           121: #ifdef MAC
        !           122:                *which,
        !           123: #endif
        !           124:                comname[70];
        !           125:        int     comnum,
        !           126:                ch,
        !           127: #ifdef MAC
        !           128:                inmenu = 0,
        !           129: #endif
        !           130:                savech = -1,
        !           131:                errors = 0;
        !           132: 
        !           133:        ifile = stdin;
        !           134:        of = stdout;
        !           135:        if (ifile == NULL || of == NULL) {
        !           136:                printf("Cannot read input or write output.\n");
        !           137:                exit(1);
        !           138:        }
        !           139:        while (fgets(line, sizeof line, ifile) != NULL) {
        !           140:                if (strncmp(line, "#if", 3) == 0) {
        !           141:                        savech = ch;
        !           142:                        fprintf(of, line);
        !           143:                        continue;
        !           144:                } else if (strncmp(line, "#else", 5) == 0) {
        !           145:                        if (savech == -1)
        !           146:                                fprintf(stderr, "WARNING: ifdef/endif mismatch!\n");
        !           147:                        else
        !           148:                                ch = savech;
        !           149:                        fprintf(of, line);
        !           150:                        continue;
        !           151:                } else if (strncmp(line, "#endif", 6) == 0) {
        !           152:                        savech = -1;
        !           153:                        fprintf(of, line);
        !           154:                        continue;
        !           155: #ifdef MAC
        !           156:                } else if (strncmp(line, "#MENU", 5) == 0) {
        !           157:                        inmenu = 1;
        !           158:                        continue;
        !           159: #endif
        !           160:                } else if (strncmp(line, "\t\"", 2) != 0) {
        !           161:                        fprintf(of, line);
        !           162:                        ch = 0;
        !           163:                        continue;
        !           164:                }
        !           165:                extract(comname, line);
        !           166:                if (strcmp(comname, "unbound") == 0)
        !           167:                        comnum = 12345;
        !           168:                else {
        !           169: #ifdef MAC
        !           170:                        which = "commands";
        !           171: #endif
        !           172:                        comnum = matchcmd(commands, comname);
        !           173: #ifdef MAC
        !           174:                        if (comnum < 0 && inmenu) {
        !           175:                                comnum = matchvar(variables, comname);
        !           176:                                which = "variables";
        !           177:                        }
        !           178: #endif
        !           179:                        if (comnum < 0) {
        !           180: #ifdef MAC
        !           181:                                fprintf(stderr, "Warning: cannot find item \"%s\".\n", comname);
        !           182: #else
        !           183:                                fprintf(stderr, "Warning: cannot find command \"%s\".\n", comname);
        !           184: #endif
        !           185:                                errors += 1;
        !           186:                                comnum = 12345;
        !           187:                        }
        !           188:                }
        !           189: #ifdef MAC
        !           190:                if(inmenu) {
        !           191:                        if (comnum == 12345)
        !           192:                                fprintf(of, "   (data_obj *) 0,\n");
        !           193:                        else
        !           194:                                fprintf(of, "   (data_obj *) &%s[%d],\n",which, comnum);
        !           195:                } 
        !           196:                else {
        !           197: #endif
        !           198:                if (comnum == 12345)
        !           199:                        fprintf(of, "   (data_obj *) 0,                 /* %s */\n", PPchar(ch++));
        !           200:                else
        !           201:                        fprintf(of, "   (data_obj *) &commands[%d],     /* %s */\n", comnum, PPchar(ch++));
        !           202:        }
        !           203: #ifdef MAC
        !           204:        }
        !           205: #endif
        !           206:        fclose(of);
        !           207:        fclose(ifile);
        !           208:        exit(errors);
        !           209: }

unix.superglobalmegacorp.com

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