/* genmake.c */

#include <stdio.h>
#include "opts.h"
#include "types.h"
#include "err.h"

main(argc,argv)
int		argc;
char		*argv[];
{
	DNODE		**make_list;
	OPTS		*opts;
	char		mname[BUFSIZE];

	opts = (OPTS *)malloc(sizeof(OPTS));
	parse_options(argc,argv,opts);
	make_list = (DNODE **)malloc(sizeof(DNODE *));
	*make_list = NULL;
	if (!find_main_target(opts,mname)) {
		free(opts);
		free_list(make_list);
		exit(ERRFINDMAIN);
	}
	printf("main():  %s\n",mname);
	if (build_depends(make_list,opts,mname) == 0) {
		free(opts);
		free_list(make_list);
		exit(ERRBUILDDEP);
	}
	if (!make_file(make_list,opts,mname)) {
		free(opts);
		free_list(make_list);
		exit(ERRCREATEMF);
	}
	free(opts);
	free_list(make_list);
	return(0);
}

parse_options(argc,argv,opts)
int		argc;
char		*argv[];
OPTS		*opts;
{
	int		argn;

	opts->verbatim = 0;
	opts->exhaustive = 0;
	opts->interactive = 0;
	for (argn = 1; argn < argc; argn++) {
		if (argv[argn][0] == '-') {
			switch (argv[argn][1]) {
				case VERSION:	credits();
						break;
				case HELP:	help();
						free(opts);
						exit(0);
						break;
				case VERBATIM:	opts->verbatim = 1;
						break;
				case EXHAUSTIVE:opts->exhaustive = 1;
						break;
				case INTERACT:	opts->interactive = 1;
						break;
				default:	option_error(argv[argn],opts);
						break;
			}
		}
	}
}

option_error(o,opts)
char		*o;
OPTS		*opts;
{
	fprintf(stderr,"genmake:  unknown option '%c'\n",o[1]);
	help();
	free(opts);
	exit(ERROPTION);
}

credits()
{
	printf("%s\n",BANNER);
}

help()
{
	printf("Usage:  genmake [-v] [-i] [-e]\n");
}

