File: [local] / src / usr.bin / vim / Attic / mkcmdtab.c (download)
Revision 1.1.1.1 (vendor branch), Sat Sep 7 21:40:24 1996 UTC (27 years, 9 months ago) by downsj
Branch: VIM
CVS Tags: VIM42, OPENBSD_2_2_BASE, OPENBSD_2_2, OPENBSD_2_1_BASE, OPENBSD_2_1, OPENBSD_2_0_BASE, OPENBSD_2_0 Changes since 1.1: +0 -0 lines
Initial import of vim 4.2.
This is meant to replace nvi in the tree. Vim, in general, works better,
provides more features, and does not suffer from the license problems
being imposed upon nvi.
On the other hand, vim lacks a non-visual ex mode, in addition to open mode.
This includes the GUI (X11) code, but doesn't try to compile it.
|
/* $OpenBSD: mkcmdtab.c,v 1.1.1.1 1996/09/07 21:40:24 downsj Exp $ */
/* vi:set ts=4 sw=4:
*
* VIM - Vi IMproved by Bram Moolenaar
*
* Do ":help uganda" in Vim to read copying and usage conditions.
* Do ":help credits" in Vim to see a list of people who contributed.
*/
/*
* mkcmdtab.c: separate program that reads cmdtab.tab and produces cmdtab.h
*
* call with: mkcmdtab cmdtab.tab cmdtab.h
*/
#include "vim.h"
#if defined(UTS4)
int
#else
void
#endif
main(argc, argv)
int argc;
char **argv;
{
register int c;
char buffer[100];
int count;
int i;
FILE *ifp, *ofp;
if (argc != 3)
{
fprintf(stderr, "Usage: mkcmdtab cmdtab.tab cmdtab.h\n");
exit(10);
}
ifp = fopen(argv[1], "r");
if (ifp == NULL)
{
perror(argv[1]);
exit(10);
}
ofp = fopen(argv[2], "w");
if (ofp == NULL)
{
perror(argv[2]);
exit(10);
}
while ((c = getc(ifp)) != '|' && c != EOF)
putc(c, ofp);
fprintf(ofp, "THIS FILE IS AUTOMATICALLY PRODUCED - DO NOT EDIT");
while ((c = getc(ifp)) != '|' && c != EOF)
;
while ((c = getc(ifp)) != '|' && c != EOF)
putc(c, ofp);
count = 0;
while ((c = getc(ifp)) != '|' && c != EOF)
{
putc(c, ofp);
while ((c = getc(ifp)) != '"' && c != EOF)
putc(c, ofp);
putc(c, ofp);
i = 0;
while ((c = getc(ifp)) != '"' && c != EOF)
{
putc(c, ofp);
buffer[i++] = c;
}
putc(c, ofp);
buffer[i] = 0;
while ((c = getc(ifp)) != '\n' && c != EOF)
putc(c, ofp);
putc(c, ofp);
switch (buffer[0])
{
case '@': strcpy(buffer, "at");
break;
case '!': strcpy(buffer, "bang");
break;
case '<': strcpy(buffer, "lshift");
break;
case '>': strcpy(buffer, "rshift");
break;
case '=': strcpy(buffer, "equal");
break;
case '&': strcpy(buffer, "and");
break;
case '~': strcpy(buffer, "tilde");
break;
case '#': strcpy(buffer, "pound");
break;
}
fprintf(ofp, "#define CMD_%s %d\n", buffer, count++);
}
fprintf(ofp, "#define CMD_SIZE %d\n", count);
while ((c = getc(ifp)) != '|' && c != EOF)
putc(c, ofp);
if (c != '|')
{
fprintf(stderr, "not enough |'s\n");
exit(1);
}
exit(0);
}