| 322 | #endif |
| 323 | |
| 324 | static int _msh_exec_cmd(char *cmd, rt_size_t length, int *retp) |
| 325 | { |
| 326 | int argc; |
| 327 | rt_size_t cmd0_size = 0; |
| 328 | cmd_function_t cmd_func; |
| 329 | char *argv[FINSH_ARG_MAX]; |
| 330 | |
| 331 | RT_ASSERT(cmd); |
| 332 | RT_ASSERT(retp); |
| 333 | |
| 334 | /* find the size of first command */ |
| 335 | while (cmd0_size < length && (cmd[cmd0_size] != ' ' && cmd[cmd0_size] != '\t')) |
| 336 | cmd0_size ++; |
| 337 | if (cmd0_size == 0) |
| 338 | return -RT_ERROR; |
| 339 | |
| 340 | cmd_func = msh_get_cmd(cmd, cmd0_size); |
| 341 | if (cmd_func == RT_NULL) |
| 342 | return -RT_ERROR; |
| 343 | |
| 344 | /* split arguments */ |
| 345 | rt_memset(argv, 0x00, sizeof(argv)); |
| 346 | argc = msh_split(cmd, length, argv); |
| 347 | if (argc == 0) |
| 348 | return -RT_ERROR; |
| 349 | |
| 350 | /* exec this command */ |
| 351 | *retp = cmd_func(argc, argv); |
| 352 | return 0; |
| 353 | } |
| 354 | |
| 355 | #if defined(RT_USING_SMART) && defined(DFS_USING_POSIX) |
| 356 | #include <lwp.h> |
no test coverage detected