lsearch(3): reimplement using lfind(3)
authorcheloha <cheloha@openbsd.org>
Wed, 8 Dec 2021 22:06:28 +0000 (22:06 +0000)
committercheloha <cheloha@openbsd.org>
Wed, 8 Dec 2021 22:06:28 +0000 (22:06 +0000)
commit0674b9825d2b89985e4947e13f7ff95932dbab72
treebf439cf71c79de2c0e23bafff723a04ec03d5ab4
parente16b9584d6fdeeb2da6f7ddffaf1f9ceed817d90
lsearch(3): reimplement using lfind(3)

lsearch(3) is really just lfind(3) with an additional branch to append
the key if lfind(3) fails.  If we get rid of the underlying
linear_base() function and move the search portion into lfind(3) and
the key-copying portion into lsearch(3) we get smaller and simpler
code.

Misc. notes:

- We do not need to keep the historical comment about errno.  lsearch(3)
  is pure computation and does not set errno.  That's really all you
  need to know.  The specification reserves no errors, either.

- We are using lfind(3) internally now, so it switches from
  PROTO_DEPRECATED to PROTO_NORMAL in hidden/search.h and needs
  DEF_WEAK in stdlib/lsearch.c.

With advice from guenther@ on symbol housekeeping in libc.

Thread: https://marc.info/?l=openbsd-tech&m=163885187632449&w=2

ok millert@
lib/libc/hidden/search.h
lib/libc/stdlib/lsearch.c