5e4c5867d5a5b041bbaaa72dea9236c7bbb0fbf8
jnavarr5
  Tue Feb 19 14:20:38 2019 -0800
Accidentally inserted the ENCODE section after the anniversary title section, refs #20314

diff --git src/hg/hubApi/apiUtils.c src/hg/hubApi/apiUtils.c
index 8c2f3d0..2c901fe 100644
--- src/hg/hubApi/apiUtils.c
+++ src/hg/hubApi/apiUtils.c
@@ -36,15 +36,33 @@
  *  return number of columns (aka 'fields')
  */
 {
 jsonWriteListStart(jw, "columnNames");
 struct sqlFieldInfo *fi, *fiList = sqlFieldInfoGet(conn, table);
 int columnCount = slCount(fiList);
 for (fi = fiList; fi; fi = fi->next)
     {
     jsonWriteObjectStart(jw, NULL);
     jsonWriteString(jw, fi->field, fi->type);
     jsonWriteObjectEnd(jw);
     }
 jsonWriteListEnd(jw);
 return columnCount;
 }
+
+struct trackHub *errCatchTrackHubOpen(char *hubUrl)
+/* use errCatch around a trackHub open in case it fails */
+{
+struct trackHub *hub = NULL;
+struct errCatch *errCatch = errCatchNew();
+if (errCatchStart(errCatch))
+    {
+    hub = trackHubOpen(hubUrl, "");
+    }
+errCatchEnd(errCatch);
+if (errCatch->gotError)
+    {
+    apiErrAbort("error opening hubUrl: '%s', '%s'", hubUrl,  errCatch->message->string);
+    }
+errCatchFree(&errCatch);
+return hub;
+}