[tuxdroid-svn] r966 - software_suite_v2/middleware/tuxdriver/trunk/src
Status: Beta
Brought to you by:
ks156
From: eFfeM <c2m...@c2...> - 2008-04-19 13:02:07
|
Author: eFfeM Date: 2008-04-19 15:02:09 +0200 (Sat, 19 Apr 2008) New Revision: 966 Modified: software_suite_v2/middleware/tuxdriver/trunk/src/tux_cmd_parser.c Log: rewrote tux_cmd_parser_get_tokens Modified: software_suite_v2/middleware/tuxdriver/trunk/src/tux_cmd_parser.c =================================================================== --- software_suite_v2/middleware/tuxdriver/trunk/src/tux_cmd_parser.c 2008-04-19 10:25:11 UTC (rev 965) +++ software_suite_v2/middleware/tuxdriver/trunk/src/tux_cmd_parser.c 2008-04-19 13:02:09 UTC (rev 966) @@ -84,36 +84,38 @@ /** * */ -/* TODO : It has surely a better way to do this. */ LIBLOCAL int tux_cmd_parser_get_tokens(char *src_str, tokens_t *toks, int max_tokens) { - tokens_t tokens; - char tok[12] = "%[^:,]%[:,]"; - char toke[7] = "%[^\n]"; - char reg_ex[1024] = ""; - char ts[8] = ""; - int i; + char *p; + char *pnext; + int len; + int cnt = 0; - for (i = 0; i < (max_tokens - 1); i++) - strncat(reg_ex, tok, sizeof(tok) - 1); - - strncat(reg_ex, toke, sizeof(toke) - 1); - - i = sscanf(src_str, reg_ex, - tokens[0], ts, tokens[1], ts, tokens[2], ts, tokens[3], ts, - tokens[4], ts, tokens[5], ts, tokens[6], ts, tokens[7], ts, - tokens[8], ts, tokens[9], ts, tokens[10], ts, tokens[11], ts, - tokens[12], ts, tokens[13], ts, tokens[14], ts, tokens[15], ts, - tokens[16], ts, tokens[17], ts, tokens[18], ts, tokens[19], ts, - tokens[20], ts, tokens[21], ts, tokens[22], ts, tokens[23], ts, - tokens[24], ts, tokens[25], ts, tokens[26], ts, tokens[27], ts, - tokens[28], ts, tokens[29], ts, tokens[30], ts, tokens[31], ts); - - memcpy(toks, &tokens, sizeof(tokens_t)); - - i -= i / 2; - return i; + p = src_str; + + if (p) + { + while (1) + { + pnext = strpbrk(p, ":,"); + if (pnext) + { + len = pnext - p; + strncpy((*toks)[cnt], p,len); + ((*toks)[cnt])[len] = 0; + cnt++; + } + else + { + strcpy((*toks)[cnt], p); + cnt++; + break; + } + p = pnext+1; + } + } + return(cnt); } /** |