From febbd12d00883a716a9edca25011f8aa306b859b Mon Sep 17 00:00:00 2001 From: Rich Felker Date: Sat, 25 Jun 2011 18:18:57 -0400 Subject: XSI search.h API implementation by Szabolcs Nagy --- src/search/lsearch.c | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 src/search/lsearch.c (limited to 'src/search/lsearch.c') diff --git a/src/search/lsearch.c b/src/search/lsearch.c new file mode 100644 index 00000000..63f31922 --- /dev/null +++ b/src/search/lsearch.c @@ -0,0 +1,31 @@ +#include +#include + +void *lsearch(const void *key, void *base, size_t *nelp, size_t width, + int (*compar)(const void *, const void *)) +{ + char (*p)[width] = base; + size_t n = *nelp; + size_t i; + + for (i = 0; i < n; i++) + if (compar(p[i], key) == 0) + return p[i]; + *nelp = n+1; + return memcpy(p[n], key, width); +} + +void *lfind(const void *key, const void *base, size_t *nelp, + size_t width, int (*compar)(const void *, const void *)) +{ + char (*p)[width] = (void *)base; + size_t n = *nelp; + size_t i; + + for (i = 0; i < n; i++) + if (compar(p[i], key) == 0) + return p[i]; + return 0; +} + + -- cgit v1.2.1