On Sat, Jun 20 17:38, Kevin Wolf wrote: > + lib: bsearch() > > Signed-off-by: Kevin Wolf <kevin@xxxxxxxxxx> > --- > src/include/stdlib.h | 2 + > src/lib/stdlibc/bsearch.c | 46 +++++++++++++++++++++++++++++++++++++++++++++ > 2 files changed, 48 insertions(+), 0 deletions(-) > create mode 100644 src/lib/stdlibc/bsearch.c > > diff --git a/src/include/stdlib.h b/src/include/stdlib.h > index 6ef072a..77ae060 100644 > --- a/src/include/stdlib.h > +++ b/src/include/stdlib.h > @@ -68,6 +68,8 @@ int putenv(const char* str); > void unsetenv(const char* name); > > void qsort(void *base, size_t num, size_t size, int (*comparator)(const void *, const void *)); Also gerade bei solchen Funktionen, die ich täglich mindestens 3x benutze, wäre ein Kommentar vielleicht nicht schlecht. ;-) > +void *bsearch(const void *key, const void *base, size_t nel, > + size_t width, int (*compar)(const void *, const void *)); > > char* mktemp(char* templatename); > > diff --git a/src/lib/stdlibc/bsearch.c b/src/lib/stdlibc/bsearch.c > new file mode 100644 > index 0000000..366090b > --- /dev/null > +++ b/src/lib/stdlibc/bsearch.c > @@ -0,0 +1,46 @@ > ... > +void *bsearch(const void *key, const void *base, size_t nel, > + size_t width, int (*compar)(const void *, const void *)) > +{ > + size_t i; > + const void* obj; > + > + for (i = 0; i < nel; i++) { > + obj = base + (width * i); > + if (compar(key, obj) == 0) { > + return (void*) obj; > + } Und wenn das schon nicht binär sucht, dann würde ich sagen, dass da wenigstens ein FIXME angebracht wäre. ;-) > + } > + > + return NULL; > +} -- Antoine Kaufmann <toni@xxxxxxxxxxxxxxxx>
Attachment:
pgpsbV0AEbUHI.pgp
Description: PGP signature