fd532108ac0d9e35b8fe6087e86e84a0e073eae3 hiram Wed May 8 12:08:40 2019 -0700 for list/ucscGenomes function only show active=1 genomes by default with hidden option showActive0=on to allow show of active=0 genomes refs #18869 diff --git src/hg/hubApi/apiUtils.c src/hg/hubApi/apiUtils.c index 06da9fa..3aec27e 100644 --- src/hg/hubApi/apiUtils.c +++ src/hg/hubApi/apiUtils.c @@ -423,15 +423,47 @@ } else if (0 == hashIntValDefault(validHash, var->name, 0)) { if (extrasFound) dyStringPrintf(extras, ";%s=%s", var->name, var->val); else dyStringPrintf(extras, "%s=%s", var->name, var->val); ++extrasFound; } } if (extrasFound) return dyStringCannibalize(&extras); else return NULL; } + +static int dbDbCmpName(const void *va, const void *vb) +/* Compare two dbDb elements: name, ignore case. */ +{ +const struct dbDb *a = *((struct dbDb **)va); +const struct dbDb *b = *((struct dbDb **)vb); +return strcasecmp(a->name, b->name); +} + +struct dbDb *ucscDbDb() +/* return the dbDb table as an slList */ +{ +char query[1024]; +struct sqlConnection *conn = hConnectCentral(); +char *showActive0 = cfgOptionDefault("hubApi.showActive0", "off"); +if (sameWord("on", showActive0)) + sqlSafef(query, sizeof(query), "select * from dbDb"); +else + sqlSafef(query, sizeof(query), "select * from dbDb where active=1"); +struct dbDb *dbList = NULL, *el = NULL; +struct sqlResult *sr = sqlGetResult(conn, query); +char **row; +while ((row = sqlNextRow(sr)) != NULL) + { + el = dbDbLoad(row); + slAddHead(&dbList, el); + } +sqlFreeResult(&sr); +hDisconnectCentral(&conn); +slSort(&dbList, dbDbCmpName); +return dbList; +}