Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
adam.huang
Arm Trusted Firmware
Commits
da9a837c
Commit
da9a837c
authored
Sep 23, 2020
by
Lauren Wehrmeister
Committed by
TrustedFirmware Code Review
Sep 23, 2020
Browse files
Merge "libc: Import strtok_r from FreeBSD project" into integration
parents
73740d98
374eef02
Changes
2
Show whitespace changes
Inline
Side-by-side
include/lib/libc/string.h
View file @
da9a837c
...
...
@@ -27,5 +27,6 @@ size_t strnlen(const char *s, size_t maxlen);
char
*
strrchr
(
const
char
*
p
,
int
ch
);
size_t
strlcpy
(
char
*
dst
,
const
char
*
src
,
size_t
dsize
);
size_t
strlcat
(
char
*
dst
,
const
char
*
src
,
size_t
dsize
);
char
*
strtok_r
(
char
*
s
,
const
char
*
delim
,
char
**
last
);
#endif
/* STRING_H */
lib/libc/strtok.c
0 → 100644
View file @
da9a837c
/*-
* SPDX-License-Identifier: BSD-3-Clause
*
* Copyright (c) 1998 Softweyr LLC. All rights reserved.
*
* strtok_r, from Berkeley strtok
* Oct 13, 1998 by Wes Peters <wes@softweyr.com>
*
* Copyright (c) 1988, 1993
* The Regents of the University of California. All rights reserved.
*
* 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
* notices, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notices, 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 SOFTWEYR LLC, 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 SOFTWEYR LLC, 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.
*/
#include <string.h>
char
*
strtok_r
(
char
*
s
,
const
char
*
delim
,
char
**
last
)
{
char
*
spanp
,
*
tok
;
int
c
,
sc
;
if
(
s
==
NULL
&&
(
s
=
*
last
)
==
NULL
)
return
(
NULL
);
/*
* Skip (span) leading delimiters (s += strspn(s, delim), sort of).
*/
cont:
c
=
*
s
++
;
for
(
spanp
=
(
char
*
)
delim
;
(
sc
=
*
spanp
++
)
!=
0
;)
{
if
(
c
==
sc
)
goto
cont
;
}
if
(
c
==
0
)
{
/* no non-delimiter characters */
*
last
=
NULL
;
return
(
NULL
);
}
tok
=
s
-
1
;
/*
* Scan token (scan for delimiters: s += strcspn(s, delim), sort of).
* Note that delim must have one NUL; we stop if we see that, too.
*/
for
(;;)
{
c
=
*
s
++
;
spanp
=
(
char
*
)
delim
;
do
{
if
((
sc
=
*
spanp
++
)
==
c
)
{
if
(
c
==
0
)
s
=
NULL
;
else
s
[
-
1
]
=
'\0'
;
*
last
=
s
;
return
(
tok
);
}
}
while
(
sc
!=
0
);
}
/* NOTREACHED */
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment