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)