diff options
author | Jeff Johnston <jjohnstn@redhat.com> | 2002-05-24 00:13:57 +0000 |
---|---|---|
committer | Jeff Johnston <jjohnstn@redhat.com> | 2002-05-24 00:13:57 +0000 |
commit | 7a364eb36494dcac90196db3d93d15086d6c1bc1 (patch) | |
tree | 9df83ec6d394ab772dbcb50a69b427fe111cc697 /newlib/libc/string/strtok_r.c | |
parent | bb2b4dedc6b053ee59d03cb436e937ecb9fd6571 (diff) | |
download | cygnal-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.c | 26 |
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); +} |