#include #include /* lsearch(3) and lfind(3) * * Author: Terrence W. Holm Sep. 1988 */ #include _PROTOTYPE( char *lsearch, (char *key, char *base, unsigned *count, unsigned width, int (*keycmp)(const void *, const void *))); _PROTOTYPE( char *lfind, (char *key, char *base, unsigned *count, unsigned width, int (*keycmp)(const void *, const void *))); char *lsearch(key, base, count, width, keycmp) char *key; char *base; unsigned *count; unsigned width; _PROTOTYPE( int (*keycmp), (const void *, const void *)); { char *entry; char *last = base + *count * width; for (entry = base; entry < last; entry += width) if (keycmp(key, entry) == 0) return(entry); bcopy(key, last, width); *count += 1; return(last); } char *lfind(key, base, count, width, keycmp) char *key; char *base; unsigned *count; unsigned width; _PROTOTYPE( int (*keycmp), (const void *, const void *)); { char *entry; char *last = base + *count * width; for (entry = base; entry < last; entry += width) if (keycmp(key, entry) == 0) return(entry); return((char *)NULL); }