Annotation of src/usr.bin/vim/mkcmdtab.c, Revision 1.1
1.1 ! downsj 1: /* $OpenBSD$ */
! 2: /* vi:set ts=4 sw=4:
! 3: *
! 4: * VIM - Vi IMproved by Bram Moolenaar
! 5: *
! 6: * Do ":help uganda" in Vim to read copying and usage conditions.
! 7: * Do ":help credits" in Vim to see a list of people who contributed.
! 8: */
! 9:
! 10: /*
! 11: * mkcmdtab.c: separate program that reads cmdtab.tab and produces cmdtab.h
! 12: *
! 13: * call with: mkcmdtab cmdtab.tab cmdtab.h
! 14: */
! 15:
! 16: #include "vim.h"
! 17:
! 18: #if defined(UTS4)
! 19: int
! 20: #else
! 21: void
! 22: #endif
! 23: main(argc, argv)
! 24: int argc;
! 25: char **argv;
! 26: {
! 27: register int c;
! 28: char buffer[100];
! 29: int count;
! 30: int i;
! 31: FILE *ifp, *ofp;
! 32:
! 33: if (argc != 3)
! 34: {
! 35: fprintf(stderr, "Usage: mkcmdtab cmdtab.tab cmdtab.h\n");
! 36: exit(10);
! 37: }
! 38: ifp = fopen(argv[1], "r");
! 39: if (ifp == NULL)
! 40: {
! 41: perror(argv[1]);
! 42: exit(10);
! 43: }
! 44: ofp = fopen(argv[2], "w");
! 45: if (ofp == NULL)
! 46: {
! 47: perror(argv[2]);
! 48: exit(10);
! 49: }
! 50:
! 51: while ((c = getc(ifp)) != '|' && c != EOF)
! 52: putc(c, ofp);
! 53: fprintf(ofp, "THIS FILE IS AUTOMATICALLY PRODUCED - DO NOT EDIT");
! 54: while ((c = getc(ifp)) != '|' && c != EOF)
! 55: ;
! 56: while ((c = getc(ifp)) != '|' && c != EOF)
! 57: putc(c, ofp);
! 58:
! 59: count = 0;
! 60: while ((c = getc(ifp)) != '|' && c != EOF)
! 61: {
! 62: putc(c, ofp);
! 63: while ((c = getc(ifp)) != '"' && c != EOF)
! 64: putc(c, ofp);
! 65: putc(c, ofp);
! 66:
! 67: i = 0;
! 68: while ((c = getc(ifp)) != '"' && c != EOF)
! 69: {
! 70: putc(c, ofp);
! 71: buffer[i++] = c;
! 72: }
! 73: putc(c, ofp);
! 74: buffer[i] = 0;
! 75:
! 76: while ((c = getc(ifp)) != '\n' && c != EOF)
! 77: putc(c, ofp);
! 78: putc(c, ofp);
! 79:
! 80: switch (buffer[0])
! 81: {
! 82: case '@': strcpy(buffer, "at");
! 83: break;
! 84: case '!': strcpy(buffer, "bang");
! 85: break;
! 86: case '<': strcpy(buffer, "lshift");
! 87: break;
! 88: case '>': strcpy(buffer, "rshift");
! 89: break;
! 90: case '=': strcpy(buffer, "equal");
! 91: break;
! 92: case '&': strcpy(buffer, "and");
! 93: break;
! 94: case '~': strcpy(buffer, "tilde");
! 95: break;
! 96: case '#': strcpy(buffer, "pound");
! 97: break;
! 98: }
! 99:
! 100: fprintf(ofp, "#define CMD_%s %d\n", buffer, count++);
! 101: }
! 102:
! 103: fprintf(ofp, "#define CMD_SIZE %d\n", count);
! 104:
! 105: while ((c = getc(ifp)) != '|' && c != EOF)
! 106: putc(c, ofp);
! 107:
! 108: if (c != '|')
! 109: {
! 110: fprintf(stderr, "not enough |'s\n");
! 111: exit(1);
! 112: }
! 113: exit(0);
! 114: }