From 7bc68f454ff5fbf415712c9b8479b8c832f68417 Mon Sep 17 00:00:00 2001 From: Kiita Date: Thu, 12 Aug 2021 11:28:40 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E8=87=AA=E7=A0=94shell=E5=91=BD?= =?UTF-8?q?=E4=BB=A4=E5=9B=9E=E8=A1=A5=20=E3=80=90=E8=83=8C=E6=99=AF?= =?UTF-8?q?=E3=80=91liteos=5Fa=E9=9C=80=E8=A6=81=E6=94=AF=E6=8C=81toybox?= =?UTF-8?q?=E7=BC=BA=E5=A4=B1=E7=9A=84=E8=87=AA=E7=A0=94shell=E5=91=BD?= =?UTF-8?q?=E4=BB=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 【修改方案】 新增自研shell命令的入口判断场景,使得mksh可以执行自研shell的命令 re #I44U0H Signed-off-by: yansira Change-Id: Idf08cb6df456bd6c89fe8fe505317f1c0ca61eda --- apps/shell/src/main.c | 37 +++++++++++++++++++++++++++++++++++-- 1 file changed, 35 insertions(+), 2 deletions(-) diff --git a/apps/shell/src/main.c b/apps/shell/src/main.c index a5e553a9..8401c0ca 100644 --- a/apps/shell/src/main.c +++ b/apps/shell/src/main.c @@ -35,7 +35,7 @@ #include "semaphore.h" #include "securec.h" #include "unistd.h" - +#include ShellCB *g_shellCB = NULL; @@ -88,11 +88,44 @@ OUT: return ret; } -int main() +static int DoShellExec(char **argv) +{ + int i, j; + int len = 0; + int ret = SH_NOK; + char *cmdLine = NULL; + + for (i = 0; argv[i]; i++) { + len += strlen(argv[i]); + } + len += i + 1; + cmdLine = (char *)malloc(len); + if (!cmdLine) { + return ret; + } + memset_s(cmdLine, len, 0, len); + + for(j = 0; j < i; j++) { + strcat_s(cmdLine, len, argv[j]); + strcat_s(cmdLine, len, " "); + } + + cmdLine[len - 2] = '\0'; + ret = syscall(__NR_shellexec, argv[0], cmdLine); + free(cmdLine); + return ret; +} + +int main(int argc, char **argv) { int ret = SH_NOK; ShellCB *shellCB = NULL; + if (!strcmp(argv[0], "shell") && argv[1]) { + ret = DoShellExec(argv + 1); + return ret; + } + setbuf(stdout, NULL); shellCB = (ShellCB *)malloc(sizeof(ShellCB)); -- GitLab