Source code

Revision control

Copy as Markdown

Other Tools

/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#include "plstr.h"
PR_IMPLEMENT(char*)
PL_strtok_r(char* s1, const char* s2, char** lasts) {
const char* sepp;
int c, sc;
char* tok;
if (s1 == NULL) {
if (*lasts == NULL) {
return NULL;
}
s1 = *lasts;
}
for (; (c = *s1) != 0; s1++) {
for (sepp = s2; (sc = *sepp) != 0; sepp++) {
if (c == sc) {
break;
}
}
if (sc == 0) {
break;
}
}
if (c == 0) {
*lasts = NULL;
return NULL;
}
tok = s1++;
for (; (c = *s1) != 0; s1++) {
for (sepp = s2; (sc = *sepp) != 0; sepp++) {
if (c == sc) {
*s1++ = '\0';
*lasts = s1;
return tok;
}
}
}
*lasts = NULL;
return tok;
}