e3dccad035436b2b7a76b8e3112b0b06de37fe93 hiram Tue Feb 5 15:03:31 2019 -0800 not sure why it returns a short track list for a database refs @8869 diff --git src/hg/hubApi/hubApi.c src/hg/hubApi/hubApi.c index 8998abe..8264495 100644 --- src/hg/hubApi/hubApi.c +++ src/hg/hubApi/hubApi.c @@ -563,50 +563,50 @@ slAddHead(&dbList, el); } sqlFreeResult(&sr); hDisconnectCentral(&conn); slSort(&dbList, dbDbCmpName); printf("{\"source\":\"UCSantaCruz\",\"ucscGenomes\":["); for ( el=dbList; el != NULL; el = el->next ) { dbDbJsonOutput(el, stdout); if (el->next) printf(","); } printf("]}\n"); } -static void ucscDbTrackList(char *db) +static void trackDbJsonOutput(char *db, FILE *f) /* return track list from specified UCSC database name */ { struct trackDb *tdbList = hTrackDb(db); struct trackDb *el; -fputc('{',stdout); -jsonStringOut(stdout, "source", "UCSantaCruz"); -fputc(',',stdout); -jsonStringOut(stdout, "db", db); -fputc(',',stdout); -printf("\"tracks\":["); +fputc('{',f); +jsonStringOut(f, "source", "UCSantaCruz"); +fputc(',',f); +jsonStringOut(f, "db", db); +fputc(',',f); +fprintf(f, "\"tracks\":["); for (el = tdbList; el != NULL; el = el->next ) { char *a = jsonStringEscape(el->track); printf("\"%s\"", a); freeMem(a); if (el->next) - fputc(',',stdout); + fputc(',',f); } -printf("]}\n"); +fprintf(f, "]}\n"); } #define MAX_PATH_INFO 32 static void apiList(char *words[MAX_PATH_INFO]) /* 'list' function */ { if (sameWord("publicHubs", words[1])) jsonPublicHubs(); else if (sameWord("ucscGenomes", words[1])) jsonDbDb(); else if (sameWord("genomes", words[1])) { char *hubUrl = cgiOptionalString("hubUrl"); if (isEmpty(hubUrl)) errAbort("# must supply hubUrl='http:...' some URL to a hub for /list/genomes\n"); @@ -631,31 +631,31 @@ } printf("]}\n"); } } else if (sameWord("tracks", words[1])) { char *hubUrl = cgiOptionalString("hubUrl"); char *genome = cgiOptionalString("genome"); char *db = cgiOptionalString("db"); if (isEmpty(hubUrl) && isEmpty(db)) { errAbort("# ERROR: must supply hubUrl or db name to return track list"); } if (isEmpty(hubUrl)) { - ucscDbTrackList(db); // only need db for this function + trackDbJsonOutput(db, stdout); // only need db for this function return; } if (isEmpty(genome) || isEmpty(hubUrl)) { if (isEmpty(genome)) warn("# must supply genome='someName' the name of a genome in a hub for /list/tracks\n"); if (isEmpty(hubUrl)) warn("# must supply hubUrl='http:...' some URL to a hub for /list/genomes\n"); errAbort("# ERROR exit"); } struct trackHub *hub = trackHubOpen(hubUrl, ""); if (hub->genomeList) { struct slName *dbTrackList = NULL; (void) genomeList(hub, &dbTrackList, genome);