/* ******** biffGetStrlen() ** ** for when you want to allocate the buffer for the biff string, this is ** how you learn its length */ int biffGetStrlen(const char *key) { unsigned int max, sum; char me[] = "biffGetStrlen"; _biffEntry *ent; _biffInit(); _biffCheckKey(key); ent = _biffFindKey(key); if (!ent) { /* error: not a key we remember seeing */ fprintf(stderr, "%s: WARNING: no information for key \"%s\"\n", me, key); return 0; } _biffFindMaxAndSum(&max, &sum, ent); return sum; }
/* ******** biffDone() ** ** frees everything associated with given key, and shrinks list of keys */ void biffDone(const char *key) { char me[]="biffDone"; int i, idx; _biffEntry *ent; _biffInit(); _biffCheckKey(key); ent = _biffFindKey(key); if (!ent) { fprintf(stderr, "%s: WARNING: no information for key \"%s\"\n", me, key); return; } idx = _biffIdx; _biffNukeEntry(ent); for (i=idx; i<(int)_biffNum-1; i++) { _biffErr[i] = _biffErr[i+1]; } airArrayLenIncr(_biffAA, -1); return; }