未验证 提交 7f0ea674 编写于 作者: O openharmony_ci 提交者: Gitee

!758 shell 优化

Merge pull request !758 from Mupceet/init0601
......@@ -67,7 +67,7 @@ static int bootchartCmdStop(BShellHandle shell, int argc, char **argv)
}
MODULE_CONSTRUCTOR(void)
{
CmdInfo infos[] = {
const CmdInfo infos[] = {
{"bootchart", bootchartCmdEnable, "bootchart enable", "bootchart enable", "bootchart enable"},
{"bootchart", bootchartCmdDisable, "bootchart disable", "bootchart disable", "bootchart disable"},
{"bootchart", bootchartCmdStart, "bootchart start", "bootchart start", "bootchart start"},
......
......@@ -38,7 +38,7 @@ static int main_cmd(BShellHandle shell, int argc, char **argv)
MODULE_CONSTRUCTOR(void)
{
CmdInfo infos[] = {
const CmdInfo infos[] = {
{"dump_service", main_cmd, "dump one service info by serviceName", "dump_service serviceName", NULL},
{"dump_service", main_cmd, "dump all services info", "dump_service all", NULL},
};
......
......@@ -22,19 +22,10 @@
#include "init_param.h"
static BShellHandle g_handle = NULL;
static int32_t ShellOuput(const char *data, int32_t len)
{
for (int32_t i = 0; i < len; i++) {
putchar(*(data + i));
}
(void)fflush(stdout);
return len;
}
BShellHandle GetShellHandle(void)
{
if (g_handle == NULL) {
BShellInfo info = {PARAM_SHELL_DEFAULT_PROMPT, NULL, ShellOuput};
BShellInfo info = {PARAM_SHELL_DEFAULT_PROMPT, NULL};
BShellEnvInit(&g_handle, &info);
}
return g_handle;
......
......@@ -219,7 +219,7 @@ static int main_cmd(BShellHandle shell, int argc, char **argv)
MODULE_CONSTRUCTOR(void)
{
CmdInfo infos[] = {
const CmdInfo infos[] = {
{
(char *)"misc_daemon", main_cmd, (char *)"write start logo",
(char *)"misc_daemon --write_logo xxx.rgb", (char *)"misc_daemon --write_logo"
......
......@@ -428,7 +428,7 @@ static int32_t BShellParamCmdShell(BShellHandle shell, int32_t argc, char *argv[
static int32_t BShellParamCmdRegForShell(BShellHandle shell)
{
CmdInfo infos[] = {
const CmdInfo infos[] = {
{"ls", BShellParamCmdLs, "display system parameter", "ls [-r] [name]", NULL},
{"get", BShellParamCmdGet, "get system parameter", "get [name]", NULL},
{"set", BShellParamCmdSet, "set system parameter", "set name value", NULL},
......@@ -446,7 +446,7 @@ static int32_t BShellParamCmdRegForShell(BShellHandle shell)
static int32_t BShellParamCmdRegForIndepent(BShellHandle shell)
{
CmdInfo infos[] = {
const CmdInfo infos[] = {
{"param", BShellParamCmdLs, "display system parameter", "param ls [-r] [name]", "param ls"},
{"param", BShellParamCmdGet, "get system parameter", "param get [name]", "param get"},
{"param", BShellParamCmdSet, "set system parameter", "param set name value", "param set"},
......
......@@ -183,7 +183,7 @@ static int main_cmd(BShellHandle shell, int argc, char **argv)
MODULE_CONSTRUCTOR(void)
{
CmdInfo infos[] = {
const CmdInfo infos[] = {
{
(char *)"sandbox", main_cmd, (char *)"enter service sandbox",
(char *)"sandbox -s service_name",
......
......@@ -68,7 +68,7 @@ static int main_cmd(BShellHandle shell, int argc, char **argv)
MODULE_CONSTRUCTOR(void)
{
CmdInfo infos[] = {
const CmdInfo infos[] = {
{"service_control", main_cmd, "stop service", "service_control stop servicename", "service_control stop"},
{"service_control", main_cmd, "start service", "service_control start servicename", "service_control start"},
{"stop_service", main_cmd, "stop service", "stop_service servicename", ""},
......
......@@ -87,14 +87,13 @@ typedef struct BShellParam_ {
typedef struct BShellInfo_ {
char *prompt;
BShellInput_ input;
BShellOutput_ output;
} BShellInfo;
int BShellEnvInit(BShellHandle *handle, BShellInfo *info);
int BShellEnvInit(BShellHandle *handle, const BShellInfo *info);
int BShellEnvStart(BShellHandle handle);
void BShellEnvDestory(BShellHandle handle);
int BShellEnvRegitsterCmd(BShellHandle handle, CmdInfo *cmdInfo);
int BShellEnvRegitsterCmd(BShellHandle handle, const CmdInfo *cmdInfo);
int BShellEnvSetParam(BShellHandle handle, const char *name, const char *desc, BShellParamType type, void *value);
const BShellParam *BShellEnvGetParam(BShellHandle handle, const char *name);
int BShellEnvRegisterKeyHandle(BShellHandle handle, uint8_t code, BShellkeyHandle keyHandle);
......
......@@ -95,26 +95,20 @@ static int32_t BShellCmdExit(BShellHandle handle, int32_t argc, char *argv[])
int32_t BShellEnvOutput(BShellHandle handle, char *fmt, ...)
{
BSH_CHECK(handle != NULL, return BSH_INVALID_PARAM, "Invalid shell env");
BShellEnv *shell = (BShellEnv *)handle;
va_list list;
va_start(list, fmt);
int len = vsnprintf_s(shell->data, sizeof(shell->data), sizeof(shell->data) - 1, fmt, list);
int len = vfprintf(stdout, fmt, list);
va_end(list);
if (len <= 0) {
va_start(list, fmt);
vfprintf(stdout, fmt, list);
va_end(list);
return -1;
}
return BShellEnvOutputString(handle, shell->data);
(void)fflush(stdout);
return len;
}
int32_t BShellEnvOutputString(BShellHandle handle, const char *string)
{
BSH_CHECK(handle != NULL, return BSH_INVALID_PARAM, "Invalid shell env");
BShellEnv *shell = (BShellEnv *)handle;
BSH_CHECK(shell->output != NULL, return BSH_INVALID_PARAM, "Invalid shell env");
return shell->output(string, strlen(string));
printf("%s", string);
(void)fflush(stdout);
return strlen(string);
}
int32_t BShellEnvOutputPrompt(BShellHandle handle, const char *prompt)
......@@ -142,9 +136,8 @@ int32_t BShellEnvOutputPrompt(BShellHandle handle, const char *prompt)
void BShellEnvOutputByte(BShellHandle handle, char data)
{
BSH_CHECK(handle != NULL, return, "Invalid shell env");
BShellEnv *shell = (BShellEnv *)handle;
BSH_CHECK(shell->output != NULL, return, "Invalid shell env");
shell->output(&data, 1);
printf("%c", data);
(void)fflush(stdout);
}
void BShellEnvOutputResult(BShellHandle handle, int32_t result)
......@@ -152,7 +145,8 @@ void BShellEnvOutputResult(BShellHandle handle, int32_t result)
if (result == 0) {
return;
}
BShellEnvOutput(handle, "result: 0x%08x\r\n", result);
printf("result: 0x%08x\r\n", result);
(void)fflush(stdout);
}
static void BShellEnvOutputParam(BShellHandle handle, char *var)
......@@ -399,7 +393,6 @@ void BShellEnvLoop(BShellHandle handle)
{
BSH_CHECK(handle != NULL, return, "Invalid shell env");
BShellEnv *shell = (BShellEnv *)handle;
BSH_CHECK(shell->output != NULL, return, "Invalid shell output");
BSH_CHECK(shell->input != NULL, return, "Invalid shell input");
while (1) {
char data = 0;
......@@ -409,7 +402,7 @@ void BShellEnvLoop(BShellHandle handle)
}
}
int32_t BShellEnvInit(BShellHandle *handle, BShellInfo *info)
int32_t BShellEnvInit(BShellHandle *handle, const BShellInfo *info)
{
BSH_CHECK(handle != NULL, return BSH_INVALID_PARAM, "Invalid shell env");
BSH_CHECK(info != NULL && info->prompt != NULL, return BSH_INVALID_PARAM, "Invalid cmd name");
......@@ -420,7 +413,6 @@ int32_t BShellEnvInit(BShellHandle *handle, BShellInfo *info)
shell->cursor = 0;
shell->shellState = BSH_IN_NORMAL;
shell->input = info->input;
shell->output = info->output;
shell->prompt = strdup(info->prompt);
shell->command = NULL;
shell->param = NULL;
......@@ -438,7 +430,7 @@ int BShellEnvStart(BShellHandle handle)
BShellEnvOutputString(handle, BShellEnvErrString(handle, BSH_SHELL_INFO));
BShellEnvOutputString(handle, shell->prompt);
CmdInfo infos[] = {
const CmdInfo infos[] = {
{"exit", BShellCmdExit, "exit parameter shell", "exit"},
{"help", BShellCmdHelp, "help command", "help"}
};
......@@ -507,7 +499,7 @@ void BShellEnvDestory(BShellHandle handle)
free(shell);
}
int32_t BShellEnvRegitsterCmd(BShellHandle handle, CmdInfo *cmdInfo)
int32_t BShellEnvRegitsterCmd(BShellHandle handle, const CmdInfo *cmdInfo)
{
BSH_CHECK(handle != NULL, return BSH_INVALID_PARAM, "Invalid shell env");
BSH_CHECK(cmdInfo != NULL && cmdInfo->name != NULL, return BSH_INVALID_PARAM, "Invalid cmd name");
......@@ -741,8 +733,6 @@ const ParamInfo *BShellEnvGetReservedParam(BShellHandle handle, const char *name
int32_t BShellEnvDirectExecute(BShellHandle handle, int argc, char *args[])
{
BSH_CHECK(handle != NULL, return -1, "Invalid shell env");
BShellEnv *shell = (BShellEnv *)handle;
BSH_CHECK(shell->output != NULL, return -1, "Invalid shell output");
BShellCommand *cmd = BShellEnvGetCmd(handle, argc, args);
if (cmd != NULL) {
int32_t ret = cmd->executer(handle, argc - cmd->argStart, &args[cmd->argStart]);
......
......@@ -91,7 +91,6 @@ typedef struct BShellEnv_ {
BShellKey *keyHandle;
BShellStatus status;
BShellInput_ input;
BShellOutput_ output;
char data[BSH_COMMAND_MAX_LENGTH];
} BShellEnv;
......
......@@ -30,15 +30,6 @@ static void signalHandler(int signal)
exit(0);
}
static int32_t ShellOuput(const char *data, int32_t len)
{
for (int32_t i = 0; i < len; i++) {
putchar(*(data + i));
}
(void)fflush(stdout);
return len;
}
static int32_t ShellInput(char *data, int32_t len)
{
for (int32_t i = 0; i < len; i++) {
......@@ -50,7 +41,7 @@ static int32_t ShellInput(char *data, int32_t len)
BShellHandle GetShellHandle(void)
{
if (g_handle == NULL) {
BShellInfo info = {PARAM_SHELL_DEFAULT_PROMPT, ShellInput, ShellOuput};
BShellInfo info = {PARAM_SHELL_DEFAULT_PROMPT, ShellInput};
BShellEnvInit(&g_handle, &info);
}
return g_handle;
......
......@@ -165,14 +165,14 @@ static int32_t BShellParamCmdUdidGet(BShellHandle shell, int32_t argc, char *arg
int32_t BShellCmdRegister(BShellHandle shell, int execMode)
{
if (execMode == 0) {
CmdInfo infos[] = {
const CmdInfo infos[] = {
{"init", BShellParamCmdGroupTest, "init group test", "init group test [stage]", "init group test"},
};
for (size_t i = 0; i < sizeof(infos) / sizeof(infos[0]); i++) {
BShellEnvRegitsterCmd(shell, &infos[i]);
}
} else {
CmdInfo infos[] = {
const CmdInfo infos[] = {
{"display", BShellParamCmdDisplay, "display system service", "display service", "display service"},
{"read", BShellParamCmdRead, "read system parameter", "read [start | stop]", ""},
{"watcher", BShellParamCmdWatch, "watcher system parameter", "watcher [name]", ""},
......
......@@ -90,7 +90,7 @@ static int32_t SysParaApiDumpCmd(BShellHandle shell, int32_t argc, char *argv[])
MODULE_CONSTRUCTOR(void)
{
CmdInfo infos[] = {
const CmdInfo infos[] = {
{(char *)"dump", SysParaApiDumpCmd, (char *)"dump api", (char *)"dump api", (char *)"dump api"},
};
for (size_t i = 0; i < sizeof(infos) / sizeof(infos[0]); i++) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册