2f81eb835c8cffd5ba9937cec91b3a0f1c64541d braney Wed Aug 18 14:47:31 2021 -0700 fixed a usage message and added a makefile for the tests in cartEditSuperTrack.c diff --git src/hg/utils/cartEditSuperTrack/cartEditSuperTrack.c src/hg/utils/cartEditSuperTrack/cartEditSuperTrack.c index 06c5d66..58478f3 100644 --- src/hg/utils/cartEditSuperTrack/cartEditSuperTrack.c +++ src/hg/utils/cartEditSuperTrack/cartEditSuperTrack.c @@ -1,100 +1,100 @@ /* cartEditSuperTrack - make a cart edit to put tracks into a supertrack. */ #include "common.h" #include "linefile.h" #include "hash.h" #include "options.h" void usage() /* Explain usage and exit. */ { errAbort( "cartEditSuperTrack - make a cart edit to put tracks into a supertrack\n" "usage:\n" - " cartEditSuperTrack tracks.txt cartVersion#\n" + " cartEditSuperTrack tracks.txt cartVersion# outputFile\n" "where tracks.txt is a tab-separated two column file with a list of tracks and the supertrack they're moving to.\n" "options:\n" " -xxx=XXX\n" ); } /* Command line validation table. */ static struct optionSpec options[] = { {NULL, 0}, }; static void writeFile(FILE *f, struct hash *superHash, char *version) { struct dyString *varDeclare = newDyString(4096); struct dyString *editFunc = newDyString(4096); dyStringPrintf(varDeclare, "#include \"common.h\"\n" "#include \"cart.h\"\n" "\n"); dyStringPrintf(editFunc, "void cartEdit%s(struct cart *cart)\n" "{\n", version); struct hashCookie cookie = hashFirst(superHash); struct hashEl *hel; while ((hel = hashNext(&cookie)) != NULL) { char name[4096]; safef(name, sizeof name, "edit%s%sTracks", version, (char *)hel->name); dyStringPrintf(editFunc, "cartTurnOnSuper(cart, %s, ArraySize(%s), \"%s\");\n", name, name, hel->name); dyStringPrintf(varDeclare, "static char *%s[] =\n{\n", name); struct hashCookie cookie2 = hashFirst((struct hash *)hel->val); struct hashEl *hel2; while ((hel2 = hashNext(&cookie2)) != NULL) { dyStringPrintf(varDeclare, "\"%s\",\n", hel2->name); } dyStringPrintf(varDeclare, "};\n\n"); } dyStringPrintf(editFunc, "}\n"); fputs(varDeclare->string, f); fputs(editFunc->string, f); fclose(f); } void cartEditSuperTrack(char *input, char *versionNumber, char *outFile) /* cartEditSuperTrack - make a cart edit to put tracks into a supertrack. */ { FILE *f = mustOpen(outFile, "w"); struct lineFile *lf = lineFileOpen(input, TRUE); char *row[2]; struct hash *superHash = newHash(5); while (lineFileRow(lf, row)) { struct hash *trackHash = newHash(5); struct hashEl *hel; if ((hel = hashLookup(superHash, row[1])) == NULL) { trackHash = newHash(5); hashAdd(superHash, row[1], trackHash); } else trackHash = hel->val; hashStore(trackHash, row[0]); } writeFile(f, superHash, versionNumber); } int main(int argc, char *argv[]) /* Process command line. */ { optionInit(&argc, argv, options); if (argc != 4) usage(); cartEditSuperTrack(argv[1], argv[2], argv[3]); return 0; }