From 8298a0e5fedba5b5ecb2eb28cef7e0f0769879a0 Mon Sep 17 00:00:00 2001 From: Marcin K Szczodrak Date: Fri, 17 Jun 2016 20:23:31 -0700 Subject: [PATCH] remove strtok_r function references (#174) --- src/cli/cli.cpp | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/src/cli/cli.cpp b/src/cli/cli.cpp index 97471af5c..9c3cffa8c 100644 --- a/src/cli/cli.cpp +++ b/src/cli/cli.cpp @@ -1079,22 +1079,30 @@ exit: void Interpreter::ProcessLine(char *aBuf, uint16_t aBufLength, Server &aServer) { char *argv[kMaxArgs]; + int argc = 0; char *cmd; - int argc; - char *last; sServer = &aServer; - VerifyOrExit((cmd = strtok_r(aBuf, " ", &last)) != NULL, ;); + VerifyOrExit(aBuf != NULL, ;); - for (argc = 0; argc < kMaxArgs; argc++) + for (; *aBuf == ' '; aBuf++, aBufLength--); + + for (cmd = aBuf + 1; (cmd < aBuf + aBufLength) && (cmd != NULL); ++cmd) { - if ((argv[argc] = strtok_r(NULL, " ", &last)) == NULL) + if (*cmd == ' ' || *cmd == '\r' || *cmd == '\n') { - break; + *cmd = '\0'; + } + + if (*(cmd - 1) == '\0' && *cmd != ' ') + { + argv[argc++] = cmd; } } + cmd = aBuf; + for (unsigned int i = 0; i < sizeof(sCommands) / sizeof(sCommands[0]); i++) { if (strcmp(cmd, sCommands[i].mName) == 0)