# 2.11BSD#431 - /usr/src/new/jove/setmaps.c

##### Functions

    PPchar            X
    _main             X
    extract           X
    main              X
    matchcmd          X
    matchvar          X

##### Macros

    TXT_TO_C          X

       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: }

#### Defined functions

PPchar defined in line 71; used 2 times

- in line 199-201(2)

_main defined in line 110; never used
extract defined in line 98; used 1 times

- in line 165

main defined in line 110; used 2 times

- in /usr/src/new/jove/externs.h line 495, 1102

matchcmd defined in line 25; used 1 times

- in line 172

matchvar defined in line 50; used 1 times

- in line 175

#### Defined macros

TXT_TO_C defined in line 8; never used

Last modified: 1988-03-15 Generated: 2016-12-26 | Generated by src2html V0.67 page hit count: 674 |