src/hg/lib/trackDbCustom.c 1.80
1.80 2010/02/10 05:16:14 kent
Making hgTracks be backwards compatible with older trackDb tables in case they didn't run hgTrackDb.
Index: src/hg/lib/trackDbCustom.c
===================================================================
RCS file: /projects/compbio/cvsroot/kent/src/hg/lib/trackDbCustom.c,v
retrieving revision 1.79
retrieving revision 1.80
diff -b -B -U 4 -r1.79 -r1.80
--- src/hg/lib/trackDbCustom.c 9 Feb 2010 23:27:21 -0000 1.79
+++ src/hg/lib/trackDbCustom.c 10 Feb 2010 05:16:14 -0000 1.80
@@ -425,15 +425,44 @@
tdb->settingsHash = raFromString(tdb->settings);
return tdb->settingsHash;
}
+static struct hash *trackDbSettingsFromString(char *string)
+/* Return hash of key/value pairs from string. Differs
+ * from raSettingsFromString in that it passes the key/val
+ * pair through the backwards compatability routines. */
+{
+char *dupe = cloneString(string);
+char *s = dupe, *lineEnd;
+struct hash *hash = newHash(7);
+char *key, *val;
+
+for (;;)
+ {
+ s = skipLeadingSpaces(s);
+ if (s == NULL || s[0] == 0)
+ break;
+ lineEnd = strchr(s, '\n');
+ if (lineEnd != NULL)
+ *lineEnd++ = 0;
+ key = nextWord(&s);
+ val = skipLeadingSpaces(s);
+ trackDbUpdateOldTag(&key, &val);
+ s = lineEnd;
+ val = lmCloneString(hash->lm, val);
+ hashAdd(hash, key, val);
+ }
+freeMem(dupe);
+return hash;
+}
+
char *trackDbLocalSetting(struct trackDb *tdb, char *name)
/* Return setting from tdb, but *not* any of it's parents. */
{
if (tdb == NULL)
errAbort("Program error: null tdb passed to trackDbSetting.");
if (tdb->settingsHash == NULL)
- tdb->settingsHash = raFromString(tdb->settings);
+ tdb->settingsHash = trackDbSettingsFromString(tdb->settings);
return hashFindVal(tdb->settingsHash, name);
}
boolean trackDbSettingOn(struct trackDb *tdb, char *name)