summaryrefslogtreecommitdiff
path: root/share
diff options
context:
space:
mode:
authorJonathan Gray <jsg@cvs.openbsd.org>2023-12-21 02:57:15 +0000
committerJonathan Gray <jsg@cvs.openbsd.org>2023-12-21 02:57:15 +0000
commit23e65f4550023e9b4a6ac64a13e7e5503da6732f (patch)
tree2219be0e45ded0acacc45e9fc0f9814c7b414081 /share
parent6193b1bbaf7e95ab0609d7de6e4cd6a018edd240 (diff)
add strnstr(9) string search within character limit
From Mike Barcroft in FreeBSD. Added to FreeBSD in 2001, Linux in 2010. Used in amdgpu. ok deraadt@
Diffstat (limited to 'share')
-rw-r--r--share/man/man9/Makefile5
-rw-r--r--share/man/man9/strnstr.990
2 files changed, 93 insertions, 2 deletions
diff --git a/share/man/man9/Makefile b/share/man/man9/Makefile
index f67508224a2..c990a8ae771 100644
--- a/share/man/man9/Makefile
+++ b/share/man/man9/Makefile
@@ -1,4 +1,4 @@
-# $OpenBSD: Makefile,v 1.308 2022/11/05 19:29:45 cheloha Exp $
+# $OpenBSD: Makefile,v 1.309 2023/12/21 02:57:14 jsg Exp $
# $NetBSD: Makefile,v 1.4 1996/01/09 03:23:01 thorpej Exp $
# Makefile for section 9 (kernel function and variable) manual pages.
@@ -39,7 +39,8 @@ MAN= aml_evalnode.9 atomic_add_int.9 atomic_cas_uint.9 \
sensor_attach.9 sigio_init.9 \
SMR_LIST_INIT.9 SMR_PTR_GET.9 smr_call.9 \
spl.9 srp_enter.9 srpl_rc_init.9 startuphook_establish.9 socreate.9 \
- sosplice.9 stoeplitz_to_key.9 strcmp.9 style.9 syscall.9 sysctl_int.9 \
+ sosplice.9 stoeplitz_to_key.9 strcmp.9 strnstr.9 \
+ style.9 syscall.9 sysctl_int.9 \
task_add.9 tc_init.9 tfind.9 thread_fork.9 \
timeout.9 tsleep.9 tvtohz.9 \
uiomove.9 \
diff --git a/share/man/man9/strnstr.9 b/share/man/man9/strnstr.9
new file mode 100644
index 00000000000..70cbd65943c
--- /dev/null
+++ b/share/man/man9/strnstr.9
@@ -0,0 +1,90 @@
+.\" $OpenBSD: strnstr.9,v 1.1 2023/12/21 02:57:14 jsg Exp $
+.\"
+.\" Copyright (c) 2001 Mike Barcroft <mike@FreeBSD.org>
+.\" Copyright (c) 1990, 1991, 1993
+.\" The Regents of the University of California. All rights reserved.
+.\"
+.\" This code is derived from software contributed to Berkeley by
+.\" Chris Torek and the American National Standards Committee X3,
+.\" on Information Processing Systems.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\" notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\" notice, this list of conditions and the following disclaimer in the
+.\" documentation and/or other materials provided with the distribution.
+.\" 3. Neither the name of the University nor the names of its contributors
+.\" may be used to endorse or promote products derived from this software
+.\" without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.Dd $Mdocdate: December 21 2023 $
+.Dt STRNSTR 9
+.Os
+.Sh NAME
+.Nm strnstr
+.Nd locate a substring in a string
+.Sh SYNOPSIS
+.In lib/libkern/libkern.h
+.Ft char *
+.Fn strnstr "const char *big" "const char *little" "size_t len"
+.Sh DESCRIPTION
+The
+.Fn strnstr
+function
+locates the first occurrence of the null-terminated string
+.Fa little
+in the string
+.Fa big ,
+where not more than
+.Fa len
+characters are searched.
+Characters that appear after a
+.Ql \e0
+character are not searched.
+.Sh RETURN VALUES
+If
+.Fa little
+is an empty string,
+.Fa big
+is returned;
+if
+.Fa little
+occurs nowhere in
+.Fa big ,
+.Dv NULL
+is returned;
+otherwise a pointer to the first character of the first occurrence of
+.Fa little
+is returned.
+.Sh EXAMPLES
+The following sets the pointer
+.Va ptr
+to
+.Dv NULL ,
+because only the first 4 characters of
+.Va largestring
+are searched:
+.Bd -literal -offset indent
+const char *largestring = "Foo Bar Baz";
+const char *smallstring = "Bar";
+char *ptr;
+
+ptr = strnstr(largestring, smallstring, 4);
+.Ed
+.Sh SEE ALSO
+.Xr memchr 9