char *OBJ_bsearch(char *key, char *base, int num, int size, int (*cmp)())
char *OBJ_bsearch(char *key, char *base, int num, int size, int (*cmp)(const void *, const void *))
char *OBJ_bsearch(char *key, char *base, int num, int size, int (*cmp)())	{	int l,h,i,c;	char *p;	if (num == 0) return(NULL);	l=0;	h=num;	while (l < h)		{		i=(l+h)/2;		p= &(base[i*size]);		c=(*cmp)(key,p);		if (c < 0)			h=i;		else if (c > 0)			l=i+1;		else			return(p);		}#ifdef CHARSET_EBCDIC/* THIS IS A KLUDGE - Because the *_obj is sorted in ASCII order, and * I don't have perl (yet), we revert to a *LINEAR* search * when the object wasn't found in the binary search. */	for (i=0; i<num; ++i) {		p= &(base[i*size]);		if ((*cmp)(key,p) == 0)			return p;	}#endif	return(NULL);	}