From a7b23a8f11b2e1f2ef333d2ed95d1c972acad12f Mon Sep 17 00:00:00 2001 From: Thomas Fitzsimmons Date: Thu, 20 Jun 2002 19:51:40 +0000 Subject: * Makefile.am (LIB_OBJECTLISTS): Add libc/search/objectlist.awk.in. * libc/Makefile.am (SUBDIRS): Add search. (SUBLIBS): Add search/libsearch.la. * libc/configure.in (AC_OUTPUT): Add search/Makefile. * libc/search: New directory. * libc/search/Makefile.am: New file. * libc/search/extern.h: New file. * libc/search/hash.c: New file. * libc/search/hash.h: New file. * libc/search/hash_bigkey.c: New file. * libc/search/hash_buf.c: New file. * libc/search/hash_func.c: New file. * libc/search/hash_log2.c: New file. * libc/search/hash_page.c: New file. * libc/search/hcreate.3: New file. * libc/search/hcreate.c: New file. * libc/search/hcreate.c~: New file. * libc/search/hcreate_r.c: New file. * libc/search/ndbm.c: New file. * libc/search/page.h: New file. * libc/search/tdelete.c: New file. * libc/search/tdestroy.c: New file. * libc/search/tfind.c: New file. * libc/search/tsearch.3: New file. * libc/search/tsearch.c: New file. * libc/search/twalk.c: New file. * libc/include/db.h: New file. * libc/include/ndbm.h: New file. * libc/include/search.h: New file. * libc/include/sys/queue.h: New file. * libc/include/sys/cdefs.h: New file. * libc/include/sys/param.h [__IEEE_LITTLE_ENDIAN,__IEEE_BIG_ENDIAN]: Set BYTE_ORDER to LITTLE_ENDIAN or BIG_ENDIAN. * libc/include/sys/errno.h (EFTYPE): New macro. * libc/search/bsearch.c: Move from libc/stdlib. * libc/search/qsort.c: Likewise. * libc/stdlib/Makefile.am (LIB_SOURCES): Remove bsearch.c and qsort.c. (CHEWOUT_FILES): Remove bsearch.def and qsort.def. * libc/stdlib/stdlib.tex: Remove references to bsearch and qsort. --- newlib/libc/search/tdestroy.c | 49 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 newlib/libc/search/tdestroy.c (limited to 'newlib/libc/search/tdestroy.c') diff --git a/newlib/libc/search/tdestroy.c b/newlib/libc/search/tdestroy.c new file mode 100644 index 000000000..2f8aae695 --- /dev/null +++ b/newlib/libc/search/tdestroy.c @@ -0,0 +1,49 @@ +/* $NetBSD: tdelete.c,v 1.2 1999/09/16 11:45:37 lukem Exp $ */ + +/* + * Tree search generalized from Knuth (6.2.2) Algorithm T just like + * the AT&T man page says. + * + * The node_t structure is for internal use only, lint doesn't grok it. + * + * Written by reading the System V Interface Definition, not the code. + * + * Totally public domain. + */ + +#include +#if 0 +#if defined(LIBC_SCCS) && !defined(lint) +__RCSID("$NetBSD: tdelete.c,v 1.2 1999/09/16 11:45:37 lukem Exp $"); +#endif /* LIBC_SCCS and not lint */ +#endif + +#include +#define _SEARCH_PRIVATE +#include +#include + + +/* Walk the nodes of a tree */ +static void +trecurse(root, free_action) + node_t *root; /* Root of the tree to be walked */ + void (*free_action)(void *); +{ + if (root->llink != NULL) + trecurse(root->llink, free_action); + if (root->rlink != NULL) + trecurse(root->rlink, free_action); + + (*free_action) ((void *) root->key); + free(root); +} + +void +tdestroy (void *vrootp, void (*freefct)(void *)) +{ + node_t *root = (node_t *) vrootp; + + if (root != NULL) + trecurse(root, freefct); +} -- cgit v1.2.3