MCPcopy Index your code
hub / github.com/RT-Thread/rt-thread / lwp_args_put

Function lwp_args_put

components/lwp/lwp_args.c:501–544  ·  view source on GitHub ↗

* @brief Put arguments or environment variables into LWP arguments info structure * * @param[in,out] args Pointer to the lwp_args_info structure to store the arguments * @param[in] strv_addr Pointer to the string array (argv/envp) to be processed * @param[in] atype Type of arguments being processed (LWP_ARGS_TYPE_ARG/LWP_ARGS_TYPE_ENVP) * * @return rt_err_t * - RT_EOK on success * - -E

Source from the content-addressed store, hash-verified

499 * - Other errors from args_append() if memory allocation fails
500 */
501rt_err_t lwp_args_put(struct lwp_args_info *args, const char **strv_addr, enum lwp_args_type atype)
502{
503 rt_err_t error;
504 int iter = 0;
505 int len;
506 const char *arg_ptr;
507
508 while (1)
509 {
510 if (atype == LWP_ARGS_TYPE_ARG || atype == LWP_ARGS_TYPE_ENVP)
511 {
512 len = lwp_get_from_user(&arg_ptr, strv_addr + iter++, sizeof(char *));
513 if (len != sizeof(char *))
514 {
515 return -EFAULT;
516 }
517 if (arg_ptr == NULL)
518 {
519 break;
520 }
521 len = lwp_user_strlen(arg_ptr);
522 if (len < 0)
523 {
524 return -EFAULT;
525 }
526 }
527 else
528 {
529 arg_ptr = strv_addr[iter++];
530 if (arg_ptr == NULL)
531 {
532 break;
533 }
534 len = strlen(arg_ptr);
535 }
536
537 error = args_append(args, arg_ptr, len, atype);
538 if (error)
539 {
540 return error;
541 }
542 }
543 return 0;
544}
545
546/**
547 * @brief Put command line arguments into LWP arguments info structure

Callers 3

lwp_args_put_argvFunction · 0.85
lwp_args_put_envpFunction · 0.85
argscopyFunction · 0.85

Calls 3

lwp_get_from_userFunction · 0.85
lwp_user_strlenFunction · 0.85
args_appendFunction · 0.85

Tested by

no test coverage detected