summaryrefslogtreecommitdiff
path: root/pjlib/src/pj/os_info.c
diff options
context:
space:
mode:
authorRiza Sulistyo <riza@teluu.com>2017-01-11 04:38:29 +0000
committerRiza Sulistyo <riza@teluu.com>2017-01-11 04:38:29 +0000
commit8610e097171150a4b4b07e397bcdab07c63fb279 (patch)
treed64dbef33ec3fc4a4fed048f609842ccf5e4d668 /pjlib/src/pj/os_info.c
parent1fe4df081023310e673fd9d9949f4b54ba691731 (diff)
Re 1989: Implement pj_strtok()/pj_strtok() as a replacement to strtok().
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@5520 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjlib/src/pj/os_info.c')
-rw-r--r--pjlib/src/pj/os_info.c18
1 files changed, 11 insertions, 7 deletions
diff --git a/pjlib/src/pj/os_info.c b/pjlib/src/pj/os_info.c
index 514ff242..3bf11670 100644
--- a/pjlib/src/pj/os_info.c
+++ b/pjlib/src/pj/os_info.c
@@ -98,24 +98,28 @@ static char *ver_info(pj_uint32_t ver, char *buf)
}
static pj_uint32_t parse_version(char *str)
-{
- char *tok;
- int i, maxtok;
+{
+ int i, maxtok, found_idx;
pj_uint32_t version = 0;
+ pj_str_t in_str = pj_str(str);
+ pj_str_t token, delim;
while (*str && !pj_isdigit(*str))
str++;
maxtok = 4;
- for (tok = strtok(str, ".-"), i=0; tok && i<maxtok;
- ++i, tok=strtok(NULL, ".-"))
+ delim = pj_str(".-");
+ for (found_idx = pj_strtok(&in_str, &delim, &token, 0), i=0;
+ found_idx != in_str.slen && i < maxtok;
+ ++i, found_idx = pj_strtok(&in_str, &delim, &token,
+ found_idx + token.slen))
{
int n;
- if (!pj_isdigit(*tok))
+ if (!pj_isdigit(*token.ptr))
break;
- n = atoi(tok);
+ n = atoi(token.ptr);
version |= (n << ((3-i)*8));
}