[BACK]Return to mkcmdtab.c CVS log [TXT][DIR] Up to [local] / src / usr.bin / vim

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);
}