5a6c13c718520069fb7f74c633ab7192aaf04231 braney Mon Oct 3 17:04:22 2022 -0700 default to using "public" if no curatedHubPrefix is set diff --git src/hg/lib/hubConnect.c src/hg/lib/hubConnect.c index 68e9e2e..791af27 100644 --- src/hg/lib/hubConnect.c +++ src/hg/lib/hubConnect.c @@ -960,73 +960,78 @@ // if our new database is an undecorated db, decorate it if (*newDatabase && sameString(*newDatabase, name)) *newDatabase = cloneString(buffer); } } } } hDisconnectCentral(&conn); return added; } char *dbOveride; // communicate with the web front end if we load a hub to support db cgivar. */ -static char * lookForCuratedHubs(struct cart *cart, char *db, char *curatedHubPrefix) +static int lookForCuratedHubs(struct cart *cart, char *db, char *curatedHubPrefix) /* Check to see if db is a curated hub which will require the hub to be attached. * The variable curatedHubPrefix has the release to use (alpha, beta, public, or a user name ) */ { struct sqlConnection *conn = hConnectCentral(); char query[4096]; sqlSafef(query, sizeof query, "SELECT nibPath from %s where name = '%s' AND nibPath like '%s%%'", dbDbTable(), db, hubCuratedPrefix); char *dir = sqlQuickString(conn, query); if (!isEmpty(dir)) { char *path = &dir[sizeof hubCuratedPrefix - 1]; char url[4096]; safef(url, sizeof url, "%s/%s/hub.txt", path, curatedHubPrefix); struct hubConnectStatus *status = getAndSetHubStatus( cart, url, TRUE); - if (status) + if (status && isEmpty(status->errorMessage)) { char buffer[4096]; safef(buffer, sizeof buffer, "hub_%d_%s", status->id, db); dbOveride = cloneString(buffer); - return cloneString(buffer); + return status->id; } + else + errAbort("Cannot open hub %s.", url); + } -return NULL; +return 0; } char *hubConnectLoadHubs(struct cart *cart) /* load the track data hubs. Set a static global to remember them */ { -char *newCuratedHub = NULL; +int newCuratedHubId = 0; char *dbSpec = cartOptionalString(cart, "db"); char *curatedHubPrefix = cfgOption("curatedHubPrefix"); -if (curatedHubPrefix && (dbSpec != NULL) ) - newCuratedHub = lookForCuratedHubs(cart, trackHubSkipHubName(dbSpec), curatedHubPrefix); +if (isEmpty(curatedHubPrefix)) + curatedHubPrefix = "public"; +if (dbSpec != NULL) + newCuratedHubId = lookForCuratedHubs(cart, trackHubSkipHubName(dbSpec), curatedHubPrefix); char *newDatabase = checkForNew( cart); -if (newCuratedHub) - newDatabase = newCuratedHub; +if (newCuratedHubId) + newDatabase = dbOveride; cartSetString(cart, hgHubConnectRemakeTrackHub, "on"); struct hubConnectStatus *hubList = hubConnectStatusListFromCart(cart); char *genarkPrefix = cfgOption("genarkHubPrefix"); if (genarkPrefix && lookForLonelyHubs(cart, hubList, &newDatabase, genarkPrefix)) hubList = hubConnectStatusListFromCart(cart); globalHubList = hubList; return newDatabase; } char *hubNameFromUrl(char *hubUrl) /* Given the URL for a hub, return its hub_# name. */ {