f085e6dea6ee997ae266900fa6706b23f8c0415c tdreszer Fri Sep 16 16:55:32 2011 -0700 Fixed bai matching to second md5sum. Switched objStatus filtering to wildcard matching. diff --git src/hg/lib/mdb.c src/hg/lib/mdb.c index 9b150cf..c04fe23 100644 --- src/hg/lib/mdb.c +++ src/hg/lib/mdb.c @@ -2313,41 +2313,47 @@ mdbVarsFree(&(mdbObj->vars)); if (vars != NULL) mdbObjAddVarPairs(mdbObj,vars); } } struct mdbObj *mdbObjsFilter(struct mdbObj **pMdbObjs, char *var, char *val,boolean returnMatches) // Filters mdb objects to only those that include/exclude vars. Optionally checks (case insensitive) val too. // Returns matched or unmatched items objects as requested, maintaining sort order { struct mdbObj *mdbObjsReturned = NULL; struct mdbObj *mdbObjs = *pMdbObjs; *pMdbObjs = NULL; +boolean wildValMatch = (val != NULL && strchr(val,'*') != NULL); struct mdbObj **pMatchTail = returnMatches ? &mdbObjsReturned : pMdbObjs; // Slightly faster than slAddHead/slReverse struct mdbObj **pNoMatchTail = returnMatches ? pMdbObjs : &mdbObjsReturned; // Also known as too clever by half while (mdbObjs!=NULL) { boolean match = FALSE; struct mdbObj *obj = slPopHead(&mdbObjs); char *foundVal = mdbObjFindValue(obj,var); // Case sensitive (unfortunately) if (val == NULL) match = (foundVal != NULL); // any val will match else if (foundVal) + { + if (wildValMatch) + match = (wildMatch(val,foundVal)); + else match = (sameWord(foundVal,val)); // must be same val (case insensitive) + } if (match) { *pMatchTail = obj; pMatchTail = &((*pMatchTail)->next); } else { *pNoMatchTail = obj; pNoMatchTail = &((*pNoMatchTail)->next); } } return mdbObjsReturned; } struct mdbObj *mdbObjsFilterByVars(struct mdbObj **pMdbObjs,char *vars,boolean noneEqualsNotFound,boolean returnMatches)