|
|
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: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.