V8/usr/src/cmd/cyntax/cem/main.c

Compare this file to the similar file:
Show the results in this format:

#include	"cem.h"

/*
 *	Cemantics.  Intelligent C loader and binder.
 *
 *	Bruce Ellis	- Sept 1984.
 */

int	debug;
int	errors;
int	file_errors;
int	in_lib;
int	modtimes	= 1;
int	out_fid;
int	pedantic;
int	tell_times;
int	verbose;
char	*load_out;

char	*alloc_end;
char	*alloc_ptr;
char	*data_base;
char	*data_end;
char	*data_ptr;
char	*my_name;
char	*str_base;
inst	*global_list;
long	new_type_index;
long	str_num;
long	type_index;
long	var_index;
symbol	**str_trans;
symbol	*src_file;
type	**type_trans;
var	**var_trans;

/*
 *	cem
 *		-o file		output file
 *		-d		debug
 *		-m		override modtime quick check
 *		-p		be pedantic about types
 *		-t		tell all file times
 *		-v		verbose format for types
 *		-l lib		load library
 *		file		load file
 */
static void
usage()
{
	fprintf(stderr, "usage: %s [-o file] [-dmptv] [-l lib] file ...\n", my_name);
	exit(1);
}

int
main(argc, argv)
int	argc;
char	*argv[];
{
	register int	i;
	register int	j;
	extern char	*strrchr();
	extern void	check_externs();
	extern void	load_lib();
	extern void	load_obj();

	if ((my_name = strrchr(argv[0], '/')) == NULL || *++my_name == '\0')
		my_name = argv[0];

	setbuf(stdout, salloc((long)BUFSIZ));

	for (i = 1; i < argc; i++)
	{
		if (argv[i][0] == '-')
		{
			for (j = 1; argv[i][j] != '\0'; j++)
			{
				switch (argv[i][j])
				{
				case 'd':
					debug = 1;
					continue;

				case 'l':
					if (argv[i][++j] == '\0')
					{
						if (++i >= argc)
							usage();

						load_lib(argv[i]);
					}
					else
						load_lib(&argv[i][j]);

					break;

				case 'm':
					modtimes = 0;
					continue;

				case 'o':
					if (argv[i][++j] == '\0')
					{
						if (++i >= argc)
							usage();

						load_out = argv[i];
					}
					else
						load_out = &argv[i][j];

					break;

				case 'p':
					pedantic = 1;
					continue;

				case 't':
					tell_times = 1;
					continue;

				case 'v':
					verbose = 1;
					continue;

				default:
					usage();
				}

				break;
			}
		}
		else
			load_obj(argv[i]);
	}

	check_externs();

	return errors;
}