0615451d856749db2e4febb4995ff8aee72a8f25
angie
  Wed Jan 7 12:04:18 2015 -0800
Adding cartJson lib module (to be used by hgAi).  It parses JSON commands andreturns information in JSON to support moving more UI actions into Javascript.
The lib supports basic queries and actions like getting a list of the groups,
tracks and tables (incl. hubs & CTs) and changing the clade/genome/db.  Apps/CGIs
can extend it to handle new commands by registering handler functions.

diff --git src/hg/inc/customTrack.h src/hg/inc/customTrack.h
index fdf0b2f..8f23bdd 100644
--- src/hg/inc/customTrack.h
+++ src/hg/inc/customTrack.h
@@ -169,28 +169,31 @@
 /* test for file suffix indicating compression */
 
 void  customTrackDump(struct customTrack *track);
 /* Write out info on custom track to stdout */
 
 struct customTrack *customTrackAddToList(struct customTrack *ctList,
                                          struct customTrack *addCts,
                                          struct customTrack **retReplacedCts,
                                          boolean makeDefaultUnique);
 /* add new tracks to the custom track list, removing older versions,
  * and saving the replaced tracks in a list for the caller */
 
 void customTrackHandleLift(char *db, struct customTrack *ctList);
 /* lift any tracks with contig coords */
 
+boolean customTracksExistDb(struct cart *cart, char *db, char **retCtFileName);
+/* determine if there are any custom tracks for db.  Cleanup from expired tracks */
+
 boolean customTracksExist(struct cart *cart, char **retCtFileName);
 /* determine if there are any custom tracks.  Cleanup from expired tracks */
 
 boolean ctConfigUpdate(char *filename);
 /* CT update is needed if database has been enabled since
  * the custom tracks in this file were created.  The only way to check is
  * by file mod time, unless we add the enable time to
  * browser metadata somewhere */
 
 struct customTrack *ctFind(struct customTrack *ctList,char *name);
 /* Find named custom track. */
 
 #endif