summaryrefslogtreecommitdiffstats
path: root/newlib/libc/string/strtok_r.c
diff options
context:
space:
mode:
authorJeff Johnston <jjohnstn@redhat.com>2002-05-24 00:13:57 +0000
committerJeff Johnston <jjohnstn@redhat.com>2002-05-24 00:13:57 +0000
commit7a364eb36494dcac90196db3d93d15086d6c1bc1 (patch)
tree9df83ec6d394ab772dbcb50a69b427fe111cc697 /newlib/libc/string/strtok_r.c
parentbb2b4dedc6b053ee59d03cb436e937ecb9fd6571 (diff)
downloadcygnal-7a364eb36494dcac90196db3d93d15086d6c1bc1.tar.gz
cygnal-7a364eb36494dcac90196db3d93d15086d6c1bc1.tar.bz2
cygnal-7a364eb36494dcac90196db3d93d15086d6c1bc1.zip
2002-05-23 Jeff Johnston <jjohnstn@redhat.com>
* libc/string/Makefile.am: Add support for strsep.c. * libc/string/Makefile.in: Regenerated. * libc/string/strsep.c: New file. * libc/string/strtok.c: Change to call __strtok_r service routine. * libc/string/strtok_r.c: Add __strtok_r routine which takes additional flag parameter regarding whether to skip leading delimeters. Change strtok_r to call __strtok_r.
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);
+}