From: tip-bot for Li Zefan <lizf@cn.fujitsu.com>
To: linux-tip-commits@vger.kernel.org
Cc: linux-kernel@vger.kernel.org, hpa@zytor.com, mingo@redhat.com,
fweisbec@gmail.com, rostedt@goodmis.org, lizf@cn.fujitsu.com,
tglx@linutronix.de
Subject: [tip:tracing/urgent] lib: Introduce strnstr()
Date: Sat, 16 Jan 2010 09:43:41 GMT [thread overview]
Message-ID: <tip-d5f1fb53353edc38da326445267c1df0c9676df2@git.kernel.org> (raw)
In-Reply-To: <4B4E8743.6030805@cn.fujitsu.com>
Commit-ID: d5f1fb53353edc38da326445267c1df0c9676df2
Gitweb: http://git.kernel.org/tip/d5f1fb53353edc38da326445267c1df0c9676df2
Author: Li Zefan <lizf@cn.fujitsu.com>
AuthorDate: Thu, 14 Jan 2010 10:53:55 +0800
Committer: Steven Rostedt <rostedt@goodmis.org>
CommitDate: Thu, 14 Jan 2010 22:38:09 -0500
lib: Introduce strnstr()
It differs strstr() in that it limits the length to be searched
in the first string.
Signed-off-by: Li Zefan <lizf@cn.fujitsu.com>
LKML-Reference: <4B4E8743.6030805@cn.fujitsu.com>
Acked-by: Frederic Weisbecker <fweisbec@gmail.com>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
---
include/linux/string.h | 5 ++++-
lib/string.c | 27 ++++++++++++++++++++++++++-
2 files changed, 30 insertions(+), 2 deletions(-)
diff --git a/include/linux/string.h b/include/linux/string.h
index 651839a..a716ee2 100644
--- a/include/linux/string.h
+++ b/include/linux/string.h
@@ -72,7 +72,10 @@ static inline __must_check char *strstrip(char *str)
}
#ifndef __HAVE_ARCH_STRSTR
-extern char * strstr(const char *,const char *);
+extern char * strstr(const char *, const char *);
+#endif
+#ifndef __HAVE_ARCH_STRNSTR
+extern char * strnstr(const char *, const char *, size_t);
#endif
#ifndef __HAVE_ARCH_STRLEN
extern __kernel_size_t strlen(const char *);
diff --git a/lib/string.c b/lib/string.c
index 9f75b4e..a1cdcfc 100644
--- a/lib/string.c
+++ b/lib/string.c
@@ -667,7 +667,7 @@ EXPORT_SYMBOL(memscan);
*/
char *strstr(const char *s1, const char *s2)
{
- int l1, l2;
+ size_t l1, l2;
l2 = strlen(s2);
if (!l2)
@@ -684,6 +684,31 @@ char *strstr(const char *s1, const char *s2)
EXPORT_SYMBOL(strstr);
#endif
+#ifndef __HAVE_ARCH_STRNSTR
+/**
+ * strnstr - Find the first substring in a length-limited string
+ * @s1: The string to be searched
+ * @s2: The string to search for
+ * @len: the maximum number of characters to search
+ */
+char *strnstr(const char *s1, const char *s2, size_t len)
+{
+ size_t l1 = len, l2;
+
+ l2 = strlen(s2);
+ if (!l2)
+ return (char *)s1;
+ while (l1 >= l2) {
+ l1--;
+ if (!memcmp(s1, s2, l2))
+ return (char *)s1;
+ s1++;
+ }
+ return NULL;
+}
+EXPORT_SYMBOL(strnstr);
+#endif
+
#ifndef __HAVE_ARCH_MEMCHR
/**
* memchr - Find a character in an area of memory.
next prev parent reply other threads:[~2010-01-16 9:44 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-01-14 2:52 [PATCH 0/7][RESEND] tracing: Fix bugs in string filters Li Zefan
2010-01-14 2:53 ` [PATCH 1/7] ftrace: Fix MATCH_END_ONLY function filter Li Zefan
2010-01-16 9:42 ` [tip:tracing/urgent] " tip-bot for Li Zefan
2010-01-14 2:53 ` [PATCH 2/7] tracing/filters: Fix MATCH_FRONT_ONLY filter matching Li Zefan
2010-01-16 9:43 ` [tip:tracing/urgent] " tip-bot for Li Zefan
2010-01-14 2:53 ` [PATCH 3/7] tracing/filters: Fix MATCH_END_ONLY " Li Zefan
2010-01-16 9:43 ` [tip:tracing/urgent] " tip-bot for Li Zefan
2010-01-14 2:53 ` [PATCH 4/7] lib: Introduce strnstr() Li Zefan
2010-01-16 9:43 ` tip-bot for Li Zefan [this message]
2010-01-16 11:12 ` Alex Riesen
2010-01-18 14:53 ` Steven Rostedt
2010-01-18 15:56 ` Alex Riesen
2010-01-14 2:54 ` [PATCH 5/7] tracing/filters: Fix MATCH_MIDDLE_ONLY filter matching Li Zefan
2010-01-16 9:43 ` [tip:tracing/urgent] " tip-bot for Li Zefan
2010-01-14 2:54 ` [PATCH 6/7] tracing/filters: Fix MATCH_END_ONLY filter matching for PTR_STRING Li Zefan
2010-01-16 9:44 ` [tip:tracing/urgent] tracing/filters: Fix MATCH_FULL " tip-bot for Li Zefan
2010-01-14 2:54 ` [PATCH 7/7] tracing/filters: Add comment for match callbacks Li Zefan
2010-01-16 9:44 ` [tip:tracing/urgent] " tip-bot for Li Zefan
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=tip-d5f1fb53353edc38da326445267c1df0c9676df2@git.kernel.org \
--to=lizf@cn.fujitsu.com \
--cc=fweisbec@gmail.com \
--cc=hpa@zytor.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-tip-commits@vger.kernel.org \
--cc=mingo@redhat.com \
--cc=rostedt@goodmis.org \
--cc=tglx@linutronix.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.