b9f7469b125c83471a07002d953acbc50876a120 angie Mon Oct 24 17:07:27 2011 -0700 Code review advice from Tim about how to properly use ClosestToHome. diff --git src/hg/lib/cart.c src/hg/lib/cart.c index 66bbd7e..48e8cc5 100644 --- src/hg/lib/cart.c +++ src/hg/lib/cart.c @@ -908,30 +908,51 @@ } } boolean cartVarExists(struct cart *cart, char *var) /* Return TRUE if variable is in cart. */ { return hashFindVal(cart->hash, var) != NULL; } boolean cartListVarExists(struct cart *cart, char *var) /* Return TRUE if a list variable is in cart (list may still be empty). */ { return cartVarExists(cart, cartMultShadowVar(cart, var)); } +boolean cartListVarExistsAnyLevel(struct cart *cart, struct trackDb *tdb, + boolean compositeLevel, char *suffix) +/* Return TRUE if a list variable for tdb->track (or tdb->parent->track, + * or tdb->parent->parent->track, etc.) is in cart (list itself may be NULL). */ +{ +if (compositeLevel) + tdb = tdb->parent; +for ( ; tdb != NULL; tdb = tdb->parent) + { + char var[PATH_LEN]; + if (suffix[0] == '.' || suffix[0] == '_') + safef(var, sizeof var, "%s%s%s", cgiMultListShadowPrefix(), tdb->track, suffix); + else + safef(var, sizeof var, "%s%s.%s", cgiMultListShadowPrefix(), tdb->track, suffix); + char *cartSetting = hashFindVal(cart->hash, var); + if (cartSetting != NULL) + return TRUE; + } +return FALSE; +} + char *cartString(struct cart *cart, char *var) /* Return string valued cart variable. */ { return hashMustFindVal(cart->hash, var); } char *cartOptionalString(struct cart *cart, char *var) /* Return string valued cart variable or NULL if it doesn't exist. */ { return hashFindVal(cart->hash, var); } char *cartNonemptyString(struct cart *cart, char *name) /* Return string value associated with name. Return NULL * if value doesn't exist or if it is pure white space. */