src/hg/lib/customFactory.c 1.98
1.98 2009/07/30 22:21:18 galt
work-around for collision of two uses of dataUrl
Index: src/hg/lib/customFactory.c
===================================================================
RCS file: /projects/compbio/cvsroot/kent/src/hg/lib/customFactory.c,v
retrieving revision 1.97
retrieving revision 1.98
diff -b -B -U 4 -r1.97 -r1.98
--- src/hg/lib/customFactory.c 18 May 2009 21:36:41 -0000 1.97
+++ src/hg/lib/customFactory.c 30 Jul 2009 22:21:18 -0000 1.98
@@ -1943,9 +1943,8 @@
char *line = NULL;
struct hash *chromHash = newHash(8);
float prio = 0.0;
struct sqlConnection *ctConn = NULL;
-char *loadedFromUrl = NULL;
boolean dbTrack = ctDbUseAll();
if (dbTrack)
ctConn = hAllocConn(CUSTOM_TRASH);
@@ -1962,9 +1961,8 @@
* First time through make up track var from thin air
* if no track line. Find out explicit type setting if any.
* Also make sure settingsHash is set up. */
lf = cpp->fileStack;
- //char *type = NULL;
if (startsWithWord("track", line))
{
track = trackLineToTrack(genomeDb, line, cpp->fileStack->lineIx);
}
@@ -2054,11 +2052,13 @@
type, lf->lineIx, lf->fileName);
}
}
char *dataUrl = NULL;
- if (lf->fileName &&
- (startsWith("http://", lf->fileName) ||
- startsWith("ftp://", lf->fileName)))
+ if (lf->fileName && (
+ startsWith("http://" , lf->fileName) ||
+ startsWith("https://", lf->fileName) ||
+ startsWith("ftp://" , lf->fileName)
+ ))
dataUrl = cloneString(lf->fileName);
oneList = fac->loader(fac, chromHash, cpp, track, dbTrack);
/* Save a few more settings. */
for (oneTrack = oneList; oneTrack != NULL; oneTrack = oneTrack->next)
@@ -2067,10 +2067,25 @@
if (dbTrack && oneTrack->dbTrackType != NULL)
ctAddToSettings(track, "dbTrackType", oneTrack->dbTrackType);
if (!trackDbSetting(track->tdb, "inputType"))
ctAddToSettings(track, "inputType", fac->name);
+ /* dataUrl is unfortunately being used in two ways,
+ * bigBed and bigWig should have used their own variable name
+ * try to prevent stomping on dataUrl for bigBed and bigWig */
if (dataUrl)
+ {
+ boolean updateDataUrl = TRUE;
+ if ( startsWith("bigBed", track->tdb->type) ||
+ startsWith("bigWig", track->tdb->type) )
+ {
+ // we do not want to lose this
+ // see compensating hack in ctDataUrl()
+ if (trackDbSetting(track->tdb, "dataUrl"))
+ updateDataUrl = FALSE;
+ }
+ if (updateDataUrl)
ctAddToSettings(track, "dataUrl", dataUrl);
+ }
if (!ctGenome(track) && ctDb)
ctAddToSettings(track, "db", ctDb);
}
}
@@ -2089,10 +2104,8 @@
{
prio += 0.001;
track->tdb->priority = prio;
}
- if (loadedFromUrl)
- ctAddToSettings(track, "dataUrl", loadedFromUrl);
if (initialPos)
ctAddToSettings(track, "initialPos", initialPos);
if (track->bedList)
{
@@ -2324,8 +2337,15 @@
char *ctDataUrl(struct customTrack *ct)
/* return URL where data can be reloaded, if any */
{
+// hack to compensate for miss-use of variable name "dataUrl" in
+// a different way than the rest of the code.
+// see customFactoryParseOptionalDb() below.
+if ( startsWith("bigBed", ct->tdb->type) ||
+ startsWith("bigWig", ct->tdb->type) )
+ return NULL;
+
return trackDbSetting(ct->tdb, "dataUrl");
}
char *ctHtmlUrl(struct customTrack *ct)