src/hg/makeDb/hgTrackDb/hgTrackDb.c 1.63

1.63 2010/02/17 03:08:39 braney
do some release tag checking
Index: src/hg/makeDb/hgTrackDb/hgTrackDb.c
===================================================================
RCS file: /projects/compbio/cvsroot/kent/src/hg/makeDb/hgTrackDb/hgTrackDb.c,v
retrieving revision 1.62
retrieving revision 1.63
diff -b -B -U 4 -r1.62 -r1.63
--- src/hg/makeDb/hgTrackDb/hgTrackDb.c	16 Feb 2010 23:37:32 -0000	1.62
+++ src/hg/makeDb/hgTrackDb/hgTrackDb.c	17 Feb 2010 03:08:39 -0000	1.63
@@ -148,21 +148,30 @@
 /* Build up list that only includes things in this release.  Release
  * can be inherited from parents. */
 struct trackDb *tdb;
 struct trackDb *relList = NULL;
+struct hash *haveHash = hashNew(3);
+
 while ((tdb = slPopHead(&tdbList)) != NULL)
     {
     char *rel = trackDbSetting(tdb, "release");
     if (rel == NULL || sameString(rel, release))
 	{
 	/* Remove release tags in remaining tracks, since its purpose is served. */
+	struct hashEl *hel;
+	if ((hel = hashLookup(haveHash, tdb->tableName)) != NULL)
+	    errAbort("found two copies of table %s: one with release %s, the other %s\n", 
+		tdb->tableName, (char *)hel->val, release);
+	hashAdd(haveHash, tdb->tableName, rel);
 	hashRemove(tdb->settingsHash, "release");
 	slAddHead(&relList, tdb);
 	}
     else
 	verbose(3,"pruneRelease: removing '%s', release: '%s' != '%s'\n",
 	    tdb->tableName, rel, release);
     }
+
+freeHash(&haveHash);
 return relList;
 }
 
 static struct trackDb * pruneOrphans(struct trackDb *tdbList, struct hash *trackHash)