Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'newlib/libc/string/strtok_r.c')
-rw-r--r--newlib/libc/string/strtok_r.c26
1 files changed, 22 insertions, 4 deletions
diff --git a/newlib/libc/string/strtok_r.c b/newlib/libc/string/strtok_r.c
index ed323369e..c4aecc811 100644
--- a/newlib/libc/string/strtok_r.c
+++ b/newlib/libc/string/strtok_r.c
@@ -34,10 +34,11 @@
#include <string.h>
char *
-_DEFUN (strtok_r, (s, delim, lasts),
+_DEFUN (__strtok_r, (s, delim, lasts, skip_leading_delim),
register char *s _AND
register const char *delim _AND
- char **lasts)
+ char **lasts _AND
+ int skip_leading_delim)
{
register char *spanp;
register int c, sc;
@@ -53,8 +54,16 @@ _DEFUN (strtok_r, (s, delim, lasts),
cont:
c = *s++;
for (spanp = (char *)delim; (sc = *spanp++) != 0;) {
- if (c == sc)
- goto cont;
+ if (c == sc) {
+ if (skip_leading_delim) {
+ goto cont;
+ }
+ else {
+ *lasts = s;
+ s[-1] = 0;
+ return (s - 1);
+ }
+ }
}
if (c == 0) { /* no non-delimiter characters */
@@ -83,3 +92,12 @@ cont:
}
/* NOTREACHED */
}
+
+char *
+_DEFUN (strtok_r, (s, delim, lasts),
+ register char *s _AND
+ register const char *delim _AND
+ char **lasts)
+{
+ return __strtok_r (s, delim, lasts, 1);
+}