squid-
cache.org
Optimising Web Delivery
Docs
Download
Donate
Support
About
Contact
Shop
Blog
compat
strnstr.cc
Go to the documentation of this file.
1
/*
2
* Copyright (C) 1996-2022 The Squid Software Foundation and contributors
3
*
4
* Squid software is distributed under GPLv2+ license and includes
5
* contributions from numerous individuals and organizations.
6
* Please see the COPYING and CONTRIBUTORS files for details.
7
*/
8
9
#ifndef SQUID_COMPAT_STRNSTR_CC_
10
#define SQUID_COMPAT_STRNSTR_CC_
11
12
/*
13
* Shamelessly duplicated from the FreeBSD public sources
14
* for use by the Squid Project under GNU Public License.
15
*
16
* Update/Maintenance History:
17
*
18
* 26-Apr-2008 : Copied from FreeBSD via OpenGrok
19
* - added protection around library headers
20
* - added squid_ prefix for uniqueness
21
* so we can use it where OS copy is broken.
22
*
23
* Original License and code follows.
24
*/
25
26
#include "
squid.h
"
27
28
#if !HAVE_STRNSTR
29
30
/*-
31
* Copyright (c) 2001 Mike Barcroft <mike@FreeBSD.org>
32
* Copyright (c) 1990, 1993
33
* The Regents of the University of California. All rights reserved.
34
*
35
* This code is derived from software contributed to Berkeley by
36
* Chris Torek.
37
*
38
* Redistribution and use in source and binary forms, with or without
39
* modification, are permitted provided that the following conditions
40
* are met:
41
* 1. Redistributions of source code must retain the above copyright
42
* notice, this list of conditions and the following disclaimer.
43
* 2. Redistributions in binary form must reproduce the above copyright
44
* notice, this list of conditions and the following disclaimer in the
45
* documentation and/or other materials provided with the distribution.
46
* 3. Neither the name of the University nor the names of its contributors
47
* may be used to endorse or promote products derived from this software
48
* without specific prior written permission.
49
*
50
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
51
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
52
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
53
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
54
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
55
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
56
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
57
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
58
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
59
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
60
* SUCH DAMAGE.
61
*
62
* @(#)strstr.c 8.1 (Berkeley) 6/4/93
63
* $FreeBSD: src/lib/libc/string/strnstr.c,v 1.2.2.1 2001/12/09 06:50:03 mike Exp $
64
* $DragonFly: src/lib/libc/string/strnstr.c,v 1.4 2006/03/20 17:24:20 dillon Exp $
65
*/
66
67
#if HAVE_SYS_TYPES_H
68
#include <sys/types.h>
69
#endif
70
#include <cstring>
71
76
const
char
*
77
squid_strnstr
(
const
char
*s,
const
char
*find,
size_t
slen)
78
{
79
char
c,
sc
;
80
size_t
len;
81
82
if
((c = *find++) !=
'\0'
) {
83
len = strlen(find);
84
do
{
85
do
{
86
if
(slen < 1 || (
sc
= *s) ==
'\0'
)
87
return
nullptr
;
88
--slen;
89
++s;
90
}
while
(
sc
!= c);
91
if
(len > slen)
92
return
nullptr
;
93
}
while
(strncmp(s, find, len) != 0);
94
--s;
95
}
96
return
s;
97
}
98
99
#endif
/* !HAVE_STRNSTR */
100
#endif
/* SQUID_COMPAT_STRNSTR_CC_ */
101
squid_strnstr
const char * squid_strnstr(const char *s, const char *find, size_t slen)
Definition:
strnstr.cc:77
sc
static int sc[16]
Definition:
smbdes.c:121
squid.h
Introduction
About Squid
Why Squid?
Squid Developers
How to Donate
How to Help Out
Getting Squid
Squid Source Packages
Squid Deployment Case-Studies
Squid Software Foundation
Documentation
Configuration:
Reference
Examples
FAQ
and
Wiki
Guide Books:
Beginners
Definitive
Non-English
More...
Support
Security Advisories
Bugzilla Database
Mailing lists
Contacting us
Commercial services
Project Sponsors
Squid-based products
Miscellaneous
Developer Resources
Related Writings
Related Software:
Authenticators
Ecap
Icap
Ident
Log Analysis
Monitor
Proxies
Redirectors
General
Squid Artwork
Web Site Translations
Japanese
Mirrors
Website:
gr
il
jp
pl
...
full list
FTP Package Archive