| Index: fusl/src/search/lsearch.c
|
| diff --git a/fusl/src/search/lsearch.c b/fusl/src/search/lsearch.c
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..63f319223a0abcd8c9f70544c0500bcdf9a6195b
|
| --- /dev/null
|
| +++ b/fusl/src/search/lsearch.c
|
| @@ -0,0 +1,31 @@
|
| +#include <search.h>
|
| +#include <string.h>
|
| +
|
| +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;
|
| +}
|
| +
|
| +
|
|
|