#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;
}
