Rework requesting process arguments
This commit is contained in:
@ -91,21 +91,24 @@ int32_t SYSCALL5(sys_processctl, pid1, cmd1, arg1, arg2, arg3) {
|
||||
ret = proc->procargs.len;
|
||||
} break;
|
||||
case PCTL_ARGV: {
|
||||
char **argbuf = (char **)arg1;
|
||||
size_t *argslen = (size_t *)arg1;
|
||||
char **argbuf = (char **)arg2;
|
||||
if (argbuf == NULL) {
|
||||
ret = E_INVALIDARGUMENT;
|
||||
goto done;
|
||||
}
|
||||
size_t len = arg2;
|
||||
size_t i;
|
||||
size_t maxargs = (size_t)arg3;
|
||||
|
||||
ProcArg *arg, *argtmp;
|
||||
LL_FOREACH_SAFE_IDX_LIMIT(proc->procargs.list, arg, argtmp, i, len) {
|
||||
size_t i;
|
||||
LL_FOREACH_SAFE_IDX_LIMIT(proc->procargs.list, arg, argtmp, i, maxargs) {
|
||||
if (argbuf[i] == NULL) {
|
||||
ret = E_INVALIDARGUMENT;
|
||||
goto done;
|
||||
}
|
||||
hal_strcpy(argbuf[i], arg->string);
|
||||
}
|
||||
*argslen = i;
|
||||
|
||||
ret = E_OK;
|
||||
} break;
|
||||
|
Reference in New Issue
Block a user