d9e80e08eb790f54309b4818a8117ecdb1ca6329 tdreszer Thu Sep 29 13:38:05 2011 -0700 Added in '-or' and ' || ' support to mdbPrint/mdbUpdate selections diff --git src/hg/lib/mdb.c src/hg/lib/mdb.c index c56bae7..23f5981 100644 --- src/hg/lib/mdb.c +++ src/hg/lib/mdb.c @@ -406,39 +406,39 @@ struct mdbVar *mdbVar = NULL; for(mdbVar=mdbObj->vars;mdbVar!=NULL;mdbVar=mdbVar->next) { if(mdbVar->var != NULL) crc += hashCrc(mdbVar->var); if(mdbVar->val != NULL) crc += hashCrc(mdbVar->val); } } return crc; } // -------------- Sort primitives -------------- int mdbObjCmp(const void *va, const void *vb) -/* Compare to sort on label. */ +// Compare mdbObj to sort on obj name, case-insensitive. { const struct mdbObj *a = *((struct mdbObj **)va); const struct mdbObj *b = *((struct mdbObj **)vb); return strcasecmp(a->obj, b->obj); } int mdbVarCmp(const void *va, const void *vb) -/* Compare to sort on label. */ +// Compare mdbVar to sort on var name, case-insensitive. { const struct mdbVar *a = *((struct mdbVar **)va); const struct mdbVar *b = *((struct mdbVar **)vb); return strcasecmp(a->var, b->var); } // ------ Parsing lines ------ struct mdbObj *mdbObjAddVarPairs(struct mdbObj *oldObj,char *varPairs) // Parses line of var=val pairs adding to a mdbObj. Creates mdbObj if NULL { struct mdbObj *mdbObj = oldObj; struct mdbVar *mdbVar; char *cloneVars = cloneString(varPairs); @@ -2423,31 +2423,31 @@ if (mdbObjsNoFileIndex) { mdbObjs = slCat(mdbObjs,mdbObjsNoFileName); mdbObjsDropped = slCat(mdbObjsDropped,mdbObjsNoFileIndex); } } } slSort(&mdbObjs, &mdbObjCmp); // Need to be returned to obj order slSort(&mdbObjsDropped,&mdbObjCmp); *pMdbObjs = mdbObjs; return mdbObjsDropped; } struct mdbObj *mdbObjIntersection(struct mdbObj **pA, struct mdbObj *b) -// return duplicate objs from an intersection of two mdbObj lists. +// return objs removed from pA while making an intersection of two mdbObj lists. // List b is untouched but pA will contain the resulting intersection { struct mdbObj *mdbObj; struct hash *hashB = newHash(0); for (mdbObj = b; mdbObj != NULL; mdbObj = mdbObj->next) { hashAdd(hashB, mdbObj->obj, mdbObj); } struct mdbObj *mdbObjsDropped = NULL; struct mdbObj *mdbObjsIntersecting = NULL; struct mdbObj *mdbObjs=*pA; while (mdbObjs) { mdbObj = slPopHead(&mdbObjs);