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