Exemplo n.º 1
0
int
main(int argc, char **argv)
{
	char *p;
	int optc;

	verbose = 1;
	readcache = 1;
	*outmkname = *outcfname = *execfname = '\0';

	path_make = getenv("MAKE");
	if (path_make == NULL || *path_make == '\0')
		path_make = "make";

	p = getenv("MAKEOBJDIRPREFIX");
	if (p == NULL || *p == '\0')
		objprefix = "/usr/obj"; /* default */
	else
		if ((objprefix = strdup(p)) == NULL)
			out_of_memory();

	while((optc = getopt(argc, argv, "lh:m:c:e:p:foq")) != -1) {
		switch(optc) {
		case 'f':
			readcache = 0;
			break;
		case 'o':
			makeobj = 1;
			break;
		case 'q':
			verbose = 0;
			break;

		case 'm':
			strlcpy(outmkname, optarg, sizeof(outmkname));
			break;
		case 'p':
			if ((objprefix = strdup(optarg)) == NULL)
				out_of_memory();
			break;

		case 'h':
			strlcpy(outhdrname, optarg, sizeof(outhdrname));
			break;
		case 'c':
			strlcpy(outcfname, optarg, sizeof(outcfname));
			break;
		case 'e':
			strlcpy(execfname, optarg, sizeof(execfname));
			break;

		case 'l':
			list_mode++;
			verbose = 0;
			break;

		case '?':
		default:
			usage();
		}
	}

	argc -= optind;
	argv += optind;

	if (argc != 1)
		usage();

	/*
	 * generate filenames
	 */

	strlcpy(infilename, argv[0], sizeof(infilename));

	/* confname = `basename infilename .conf` */

	if ((p=strrchr(infilename, '/')) != NULL)
		strlcpy(confname, p + 1, sizeof(confname));
	else
		strlcpy(confname, infilename, sizeof(confname));

	if ((p=strrchr(confname, '.')) != NULL && !strcmp(p, ".conf"))
		*p = '\0';

	if (!*outmkname)
		snprintf(outmkname, sizeof(outmkname), "%s.mk", confname);
	if (!*outcfname)
		snprintf(outcfname, sizeof(outcfname), "%s.c", confname);
	if (!*execfname)
		snprintf(execfname, sizeof(execfname), "%s", confname);

	snprintf(cachename, sizeof(cachename), "%s.cache", confname);
	snprintf(tempfname, sizeof(tempfname), "%s/crunchgen_%sXXXXXX",
	getenv("TMPDIR") ? getenv("TMPDIR") : _PATH_TMP, confname);

	parse_conf_file();
	if (list_mode)
		exit(goterror);

	gen_outputs();

	exit(goterror);
}
Exemplo n.º 2
0
int 
main(int argc, char *argv[])
{
	char           *p;
	int             optc;
	extern int      optind;
	extern char    *optarg;

	verbose = 1;
	readcache = 1;
	*outmkname = *outcfname = *execfname = '\0';

	if (argc > 0)
		progname = argv[0];

	while ((optc = getopt(argc, argv, "m:c:e:fqD:EL:O:")) != -1) {
		switch (optc) {
		case 'f':
			readcache = 0;
			break;
		case 'q':
			verbose = 0;
			break;

		case 'm':
			if (strlcpy(outmkname, optarg, sizeof(outmkname)) >=
			    sizeof(outmkname))
				usage();
			break;
		case 'c':
			if (strlcpy(outcfname, optarg, sizeof(outcfname)) >=
			    sizeof(outcfname))
				usage();
			break;
		case 'e':
			if (strlcpy(execfname, optarg, sizeof(execfname)) >=
			    sizeof(execfname))
				usage();
			break;

		case 'D':
			if (strlcpy(topdir, optarg, sizeof(topdir)) >= sizeof(topdir))
				usage();
			break;
		case 'E':
			elf_names = 1;
			break;
		case 'L':
			if (strlen(optarg) >= MAXPATHLEN)
				usage();
			add_string(&libdirs, optarg);
			break;
		case 'O':
			if (strlcpy(objdir, optarg, sizeof(objdir)) >=
			    sizeof(objdir))
				usage();
			break;
		default:
			usage();
		}
	}

	argc -= optind;
	argv += optind;

	if (argc != 1)
		usage();

	if (libdirs == NULL)
		add_string(&libdirs, "/usr/lib");
	/*
         * generate filenames
         */

	if (strlcpy(infilename, argv[0], sizeof(infilename)) >=
	    sizeof(infilename))
		usage();

	/* confname = `basename infilename .conf` */

	if ((p = strrchr(infilename, '/')) != NULL)
		strlcpy(confname, p + 1, sizeof confname);
	else
		strlcpy(confname, infilename, sizeof confname);
	if ((p = strrchr(confname, '.')) != NULL && !strcmp(p, ".conf"))
		*p = '\0';

	if (!*outmkname)
		snprintf(outmkname, sizeof(outmkname), "%s.mk", confname);
	if (!*outcfname)
		snprintf(outcfname, sizeof(outcfname), "%s.c", confname);
	if (!*execfname)
		snprintf(execfname, sizeof(execfname), "%s", confname);
	snprintf(cachename, sizeof(cachename), "%s.cache", confname);

	parse_conf_file();
	gen_outputs();

	exit(goterror);
}