08996db0236137b9cf9b3893d74e7aae41873ab2 braney Thu Apr 14 12:33:46 2011 -0700 fixed up the forms to act a little more rationally... added error catching so new hubs that can't be opened don't errAbort diff --git src/hg/hgHubConnect/hgHubConnect.c src/hg/hgHubConnect/hgHubConnect.c index 3aa0b1b..8ba1ecb 100644 --- src/hg/hgHubConnect/hgHubConnect.c +++ src/hg/hgHubConnect/hgHubConnect.c @@ -63,77 +63,79 @@ { c = commaList[nameLen]; if (c == 0 || c == ',') return TRUE; } commaList = strchr(commaList, ','); if (commaList == NULL) return FALSE; commaList += 1; } } void hgHubConnectPrivate() /* Put up the list of private hubs and other controls for the page. */ { -printf("
\n"); } void hgHubConnectPublic() /* Put up the list of external hubs and other controls for the page. */ { -destUrl = cartUsualString(cart, hgHubConnectCgiDestUrl, destUrl); -printf("\n"); hDisconnectCentral(&conn); } static void addIntro() { +printf("Enter URL to remote hub.Error %s
", err);
printf("Enter URL:");
hTextVar(hgHubDataText, "", 60);
cgiMakeSubmitButton();
puts("");
}
void helpPrivateHub()
{
+printf("Private hubs are constructed the same way as public hubs, but they "
+ "aren't listed in hgcentral
\n");
}
void doAddPrivateHub(struct cart *theCart, char *err)
/* Write header and body of html page. */
{
cartWebStart(cart, database, "Add Private Hub");
addPrivateHubForm(NULL, err);
helpPrivateHub();
cartWebEnd(cart);
}
void hubSaveInCart(struct cart *cart, struct hubConnectStatus *hub)
{
char hubName[1024];
char *oldHubTrashName = cartOptionalString(cart, hubFileVar());
@@ -280,59 +284,76 @@
carefulClose(&f);
safef(hubName, sizeof(hubName), "%s%d", hgHubConnectHubVarPrefix, hub->id);
cartSetString(cart, hubName, "1");
cartSetString(cart, hubFileVar(), hubTrashName);
}
void checkForNewHub(struct cart *cart)
{
char *url = cartOptionalString(cart, hgHubDataText);
if (url != NULL)
{
struct hubConnectStatus *hub = NULL;
- struct trackHub *tHub = trackHubOpen(url, "1");
+ struct trackHub *tHub = NULL;
+
+ struct errCatch *errCatch = errCatchNew();
+ if (errCatchStart(errCatch))
+ tHub = trackHubOpen(url, "1");
+ errCatchEnd(errCatch);
+ if (errCatch->gotError)
+ {
+ warn(errCatch->message->string);
+ return;
+ }
+ errCatchFree(&errCatch);
AllocVar(hub);
hub->hubUrl = cloneString(url);
hub->errorMessage = "";
hub->shortLabel = tHub->shortLabel;
hub->longLabel = tHub->longLabel;
hub->dbCount = 0;
AllocArray(hub->dbArray, 1);
hub->dbArray[0] = database;
hubSaveInCart(cart, hub);
cartRemove(cart, hgHubDataText);
}
}
void doMiddle(struct cart *theCart)
/* Write header and body of html page. */
{
cart = theCart;
setUdcCacheDir();
if (cartVarExists(cart, hgHubDoAdd))
doAddPrivateHub(cart, NULL);
else
{
cartWebStart(cart, NULL, pageTitle);
checkForNewHub(cart);
+ printf("