Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 19 Mar 2018 07:07:03 +0000 (UTC)
From:      Eitan Adler <eadler@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org
Subject:   svn commit: r331192 - stable/11/lib/libc/stdlib
Message-ID:  <201803190707.w2J773sg006885@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: eadler
Date: Mon Mar 19 07:07:03 2018
New Revision: 331192
URL: https://svnweb.freebsd.org/changeset/base/331192

Log:
  MFC r320992,r320993:
  
  Add a complete example to tsearch(3)

Modified:
  stable/11/lib/libc/stdlib/tsearch.3
Directory Properties:
  stable/11/   (props changed)

Modified: stable/11/lib/libc/stdlib/tsearch.3
==============================================================================
--- stable/11/lib/libc/stdlib/tsearch.3	Mon Mar 19 07:03:02 2018	(r331191)
+++ stable/11/lib/libc/stdlib/tsearch.3	Mon Mar 19 07:07:03 2018	(r331192)
@@ -27,7 +27,7 @@
 .\"	OpenBSD: tsearch.3,v 1.2 1998/06/21 22:13:49 millert Exp
 .\" $FreeBSD$
 .\"
-.Dd October 9, 2016
+.Dd June 4, 2017
 .Dt TSEARCH 3
 .Os
 .Sh NAME
@@ -130,6 +130,64 @@ is NULL or the datum cannot be found.
 The
 .Fn twalk
 function returns no value.
+.Sh EXAMPLES
+This example uses
+.Fn tsearch
+to search for four strings in
+.Dv root .
+Because the strings are not already present, they are added.
+.Fn tsearch
+is called twice on the fourth string to demonstrate that a string is not added when it is already present.
+.Fn tfind
+is used to find the single instance of the fourth string, and
+.Fn tdelete
+removes it.
+Finally,
+.Fn twalk
+is used to return and display the resulting binary search tree.
+.Bd -literal
+#include <stdio.h>
+#include <search.h>
+#include <string.h>
+
+int
+comp(const void *a, const void *b)
+{
+
+	return strcmp(a, b);
+}
+
+void
+printwalk(const posix_tnode * node, VISIT v, int __unused0)
+{
+
+	if (v == postorder || v == leaf) {
+		printf("node: %s\en", *(char **)node);
+	}
+}
+
+int
+main(void)
+{
+	posix_tnode *root = NULL;
+
+	char one[] = "blah1";
+	char two[] = "blah-2";
+	char three[] = "blah-3";
+	char four[] = "blah-4";
+
+	tsearch(one, &root, comp);
+	tsearch(two, &root, comp);
+	tsearch(three, &root, comp);
+	tsearch(four, &root, comp);
+	tsearch(four, &root, comp);
+	printf("four: %s\en", *(char **)tfind(four, &root, comp));
+	tdelete(four, &root, comp);
+
+	twalk(root, printwalk);
+	return 0;
+}
+.Ed
 .Sh SEE ALSO
 .Xr bsearch 3 ,
 .Xr hsearch 3 ,



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201803190707.w2J773sg006885>