/*=export_func optionRestore * * what: restore option state from memory copy * arg: tOptions*, pOpts, program options descriptor * * doc: Copy back the option state from saved memory. * The allocated memory is left intact, so this routine can be * called repeatedly without having to call optionSaveState again. * If you are restoring a state that was saved before the first call * to optionProcess(3AO), then you may change the contents of the * argc/argv parameters to optionProcess. * * err: If you have not called @code{optionSaveState} before, a diagnostic is * printed to @code{stderr} and exit is called. =*/ void optionRestore(tOptions* pOpts) { tOptions* p = (tOptions*)pOpts->pSavedState; if (p == NULL) { char const * pzName = pOpts->pzProgName; if (pzName == NULL) { pzName = pOpts->pzPROGNAME; if (pzName == NULL) pzName = zNil; } fprintf(stderr, zNoState, pzName); option_exits(EXIT_FAILURE); } pOpts->pSavedState = NULL; optionFree(pOpts); memcpy(pOpts, p, sizeof(*p)); memcpy(pOpts->pOptDesc, p+1, (size_t)p->optCt * sizeof(tOptDesc)); pOpts->pSavedState = p; fixupSavedOptionArgs(pOpts); }
int main(int argc, char *argv[]) { /* Get all inputs */ optionInit(&argc, argv, options); if (argc != 4) usage(); double alpha, beta, x; alpha = atof(argv[1]); beta = atof(argv[2]); x = atof(argv[3]); printf("%f\n", betai(alpha, beta, x)); optionFree(); return 0; }
int main(int argc, char *argv[]) { /* Get all inputs */ optionInit(&argc, argv, options); if (argc != 5) usage(); char *regdomFn, *antigapFn; int totalRegions, hitRegions; regdomFn = argv[1]; antigapFn = argv[2]; totalRegions = intExp(argv[3]); hitRegions = intExp(argv[4]); calculateBinomialP(regdomFn, antigapFn, totalRegions, hitRegions); optionFree(); return 0; }
/** * This gets called when all is well at the end. */ LOCAL void cleanup(tTemplate* pTF) { if (HAVE_OPT(USED_DEFINES)) print_used_defines(); if (pfDepends != NULL) wrap_up_depends(); optionFree(&autogenOptions); for (;;) { tTemplate* pT = pNamedTplList; if (pT == NULL) break; pNamedTplList = (tTemplate*)(void*)(pT->pNext); unloadTemplate(pT); } AGFREE(forInfo.fi_data); unloadTemplate(pTF); unloadDefs(); }
int main(int argc, char *argv[]) /* Process command line. */ { optionInit(&argc, argv, options); blockSize = optionInt("blockSize", blockSize); itemsPerSlot = optionInt("itemsPerSlot", itemsPerSlot); asFile = optionVal("as", asFile); doCompress = !optionExists("unc"); sizesIs2Bit = optionExists("sizesIs2Bit"); extraIndex = optionVal("extraIndex", NULL); tabSep = optionExists("tab"); udcDir = optionVal("udcDir", udcDefaultDir()); if (argc != 4) usage(); udcSetDefaultDir(udcDir); if (optionExists("type")) { // parse type char *btype = cloneString(optionVal("type", "")); char *plus = strchr(btype, '+'); if (plus) { *plus++ = 0; if (isdigit(*plus)) bedP = sqlUnsigned(plus); } if (!startsWith("bed", btype)) errAbort("type must begin with \"bed\""); btype +=3; bedN = sqlUnsigned(btype); if (bedN < 3) errAbort("Bed must be 3 or higher, found %d\n", bedN); if (bedN > 15) errAbort("Bed must be 15 or lower, found %d\n", bedN); } else { if (asText) errAbort("If you specify the .as file, you must specify the -type as well so that\n" "the number of standard BED columns is known."); } /* If the haven't set bedN and bedP from the type var in the command line, then we sniff it * out from file. */ char *bedFileName = argv[1]; if (bedN == 0) { /* Just read in single line and count fields. */ struct lineFile *lf = lineFileOpen(bedFileName, TRUE); char *line; if (!lineFileNextReal(lf, &line)) errAbort("%s is empty", lf->fileName); int fieldCount; if (tabSep) fieldCount = chopByChar(line, '\t', NULL, 0); // Do not use chopString, see GOTCHA else fieldCount = chopByWhite(line, NULL, 0); if (fieldCount > 256) errAbort("Too many columns in %s, you sure it's a bed file?", lf->fileName); lineFileClose(&lf); /* Set up so that it looks like we are straight up bed for that many fields, * or if more than or maximum defined fields, then for bed15+ */ bedN = fieldCount; if (bedN > bedKnownFields) { bedP = bedN - bedKnownFields; bedN = bedKnownFields; } } /* Make sure that fields are defined, from bed spec if nowhere else. */ if (asFile) readInGulp(asFile, &asText, NULL); else asText = bedAsDef(bedN, bedN + bedP); bedToBigBed(bedFileName, argv[2], argv[3]); optionFree(); if (verboseLevel() > 1) printVmPeak(); return 0; }