[PATCH] Modify strnstr.c.
Sichen Zhao
1473996754@qq.com
Mon Aug 28 13:38:00 GMT 2017
> On Aug 26 21:28, Sichen Zhao wrote:
>> ---
>> newlib/libc/string/strnstr.c | 24 ++++++++----------------
>> 1 file changed, 8 insertions(+), 16 deletions(-)
>>
>> diff --git a/newlib/libc/string/strnstr.c b/newlib/libc/string/strnstr.c
>> index da5e5bd..7c87bbd 100644
>> --- a/newlib/libc/string/strnstr.c
>> +++ b/newlib/libc/string/strnstr.c
>> @@ -44,22 +44,14 @@ __FBSDID("$FreeBSD: head/lib/libc/string/strnstr.c 251069 2013-05-28 20:57:40Z e
>> * first slen characters of s.
>> */
>> char *
>> -strnstr(const char *s, const char *find, size_t slen)
>> +strnstr(const char *haystack, const char *needle, size_t haystack_len)
>> {
>> - char c, sc;
>> - size_t len;
>> + size_t needle_len = strnlen(needle, haystack_len);
>>
>> - if ((c = *find++) != '\0') {
>> - len = strlen(find);
>> - do {
>> - do {
>> - if (slen-- < 1 || (sc = *s++) == '\0')
>> - return (NULL);
>> - } while (sc != c);
>> - if (len > slen)
>> - return (NULL);
>> - } while (strncmp(s, find, len) != 0);
>> - s--;
>> - }
>> - return ((char *)s);
>> + if (needle_len < haystack_len || !needle[needle_len]) {
>> + char *x = memmem(haystack, haystack_len, needle, needle_len);
>> + if (x && !memchr(haystack, 0, x - haystack))
>> + return x;
>> + }
>> + return NULL;
>> }
>> --
>> 2.7.4
> Input needed:
>
> Given this is a complete reimplementation not based on FreeBSD code at
> all, and given the code has been contributed by Eric, shouldn't we
> remove the entire copyright header and move this under newlib default
> licensing?
Including remove the "__FBSDID("$FreeBSD: head/lib/libc/string/strnstr.c
251069 2013-05-28 20:57:40Z emaste $");", right?
>
> Thanks,
> Corinna
>
More information about the Newlib
mailing list