#ifdef	ournix
#include "ournix.h"
#endif
char sccsID[] = "@(#) le.c V1.1 Copyright Julian H. Stacey, February 1987\n" ;
/* LE - Language Extractor */

#include <stdio.h>
#include <stdlib.h>

char	language;
int	lineno;
char	*filnam = "stdin" ;
char	**ARGV ;

#include <ctype.h>

void usage()
	{
	fprintf(stderr, "Usage: %s [-e/-d] [files...]\n", *ARGV);
	exit(1);
	}

void warn()	{
	fprintf(stderr, "%s: Warning: file %s, missing control, line %d.\n",
		*ARGV, filnam, lineno);
	}

void process(fp)
	register FILE	*fp;
	{
	register int	c;
	int	lstart = 1;
	int	skip = 0;

	lineno = 0 ;
	for (lstart = 1 ; (c = getc(fp)) != EOF; lstart = (c == '\n'))
		{
		if (lstart)
			{
			lineno++ ;
			switch (c)
				{
				case '{':
					if ((c = getc(fp)) == EOF) return;
					if (islower((char)c))
						c =toupper((char)c);
					if (skip) warn();
					if ((char)c == language) skip = 0;
					else skip = 1;
					while ( (c = getc(fp)) != EOF)
						if (c == '\n') break;
					continue;
				case '}':
					if ((c = getc(fp)) == EOF) return;
					if (islower((char)c))
						c =toupper((char)c);
					if (skip)
						{
						if((char)c == language) warn();
						}
					else if ((char)c != language) warn();
					skip = 0;
					while ( (c = getc(fp)) != EOF)
						if(c == '\n') break;
					continue;
				default:
					break;
				}
			}
		if (!skip) putchar(c);
		}
	}


int main(argc, argv)
	int	argc ;
	char	**argv;
	{
	char	*p;
	FILE	*fp;

	ARGV = argv ;
#ifdef	VSL	/* { */
#include	"../../include/vsl.h"
#endif		/* } */
	if (argc < 2) usage();
	language = '\0';

	for (argv++; *argv ; argv++)
		{
		if (**argv == '-')
			{
			p = *argv + 1;
			if (!isalnum(language = *p))
				{
				fprintf(stderr,
			"%s: Error Selector '%c' is not alpha numeric\n",
					*ARGV,language);
				exit(1);
				}
			if (islower(language)) language=toupper(language);
			continue;
			}
		break;
		}
	if (language == '\0') usage();
	if (*argv == (char *)0) process(stdin);
	for (; *argv ; argv++)
		{
		fp = fopen(*argv, "r");
		if(fp == NULL)
			{
			fprintf(stderr, "%s: Cannot open '%s'\n",*ARGV, *argv);
			continue;
			}
		filnam = *argv ;
		process(fp);
		(void) fclose(fp);
		}
	exit(0);
	}


