diff options
Diffstat (limited to 'pjlib/src/pj/os_info.c')
-rw-r--r-- | pjlib/src/pj/os_info.c | 18 |
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)); } |