• Home
  • Raw
  • Download

Lines Matching refs:shell

40     BShellEnv *shell = (BShellEnv *)handle;  in BShellEnvErrString()  local
41 int len = sprintf_s(shell->data, sizeof(shell->data) - 1, "System unknown err 0x%08x", err); in BShellEnvErrString()
45 return shell->data; in BShellEnvErrString()
65 BShellEnv *shell = (BShellEnv *)handle; in BShellCmdHelp() local
69 BShellCommand *cmd = shell->command; in BShellCmdHelp()
82 cmd = shell->command; in BShellCmdHelp()
121 BShellEnv *shell = (BShellEnv *)handle; in BShellEnvOutputPrompt() local
122 if (shell->prompt != NULL) { in BShellEnvOutputPrompt()
123 free(shell->prompt); in BShellEnvOutputPrompt()
127 shell->prompt = strdup(prompt + promptLen - BSH_CMD_NAME_END); in BShellEnvOutputPrompt()
128 if (shell->prompt != NULL) { in BShellEnvOutputPrompt()
129 shell->prompt[0] = '.'; in BShellEnvOutputPrompt()
130 shell->prompt[1] = '.'; in BShellEnvOutputPrompt()
131 shell->prompt[2] = '.'; // 2 index in BShellEnvOutputPrompt()
134 shell->prompt = strdup(prompt); in BShellEnvOutputPrompt()
169 static void BShellEnvParseParam(BShellEnv *shell) in BShellEnvParseParam() argument
173 shell->argc = 0; in BShellEnvParseParam()
174 for (uint16_t i = 0; i < shell->length; i++) { in BShellEnvParseParam()
175 char data = *(shell->buffer + i); in BShellEnvParseParam()
181 BSH_CHECK(shell->argc < BSH_PARAMETER_MAX_NUMBER, return, "argc out of range"); in BShellEnvParseParam()
182 shell->args[shell->argc++] = shell->buffer + i; in BShellEnvParseParam()
185 if (*(shell->buffer + i) == '\\' && *(shell->buffer + i + 1) != 0) { in BShellEnvParseParam()
189 *(shell->buffer + i) = 0; in BShellEnvParseParam()
195 static int32_t BShellEnvExcuteCmd(BShellEnv *shell, BShellCommand *cmd) in BShellEnvExcuteCmd() argument
197 …return cmd->executer((BShellHandle)shell, shell->argc - cmd->argStart, &shell->args[cmd->argStart]… in BShellEnvExcuteCmd()
203 BShellEnv *shell = (BShellEnv *)handle; in BShellEnvHandleEnter() local
204 if (shell->length == 0) { in BShellEnvHandleEnter()
205 BShellEnvOutputString(shell, "\n"); in BShellEnvHandleEnter()
206 BShellEnvOutputString(handle, shell->prompt); in BShellEnvHandleEnter()
210 *(shell->buffer + shell->length++) = 0; in BShellEnvHandleEnter()
211 BShellEnvParseParam(shell); in BShellEnvHandleEnter()
212 shell->length = 0; in BShellEnvHandleEnter()
213 shell->cursor = 0; in BShellEnvHandleEnter()
214 if (shell->argc == 0) { in BShellEnvHandleEnter()
215 BShellEnvOutputString(shell, shell->prompt); in BShellEnvHandleEnter()
219 BShellEnvOutputString(shell, "\n"); in BShellEnvHandleEnter()
220 if (strcmp((const char *)shell->args[0], "help") == 0) { in BShellEnvHandleEnter()
221 BShellCmdHelp(handle, shell->argc, shell->args); in BShellEnvHandleEnter()
222 BShellEnvOutputString(shell, shell->prompt); in BShellEnvHandleEnter()
225 if (shell->args[0][0] == '$') { in BShellEnvHandleEnter()
226 BShellEnvOutputParam(shell, shell->args[0]); in BShellEnvHandleEnter()
227 BShellEnvOutputString(shell, shell->prompt); in BShellEnvHandleEnter()
231 BShellCommand *cmd = BShellEnvGetCmd(handle, (uint32_t)shell->argc, shell->args); in BShellEnvHandleEnter()
233 int32_t ret = BShellEnvExcuteCmd(shell, cmd); in BShellEnvHandleEnter()
234 BShellEnvOutputResult(shell, ret); in BShellEnvHandleEnter()
236 BShellEnvOutputString(shell, BShellEnvErrString(handle, BSH_CMD_NOT_EXIST)); in BShellEnvHandleEnter()
238 BShellEnvOutputString(shell, shell->prompt); in BShellEnvHandleEnter()
245 BShellEnv *shell = (BShellEnv *)handle; in BShellEnvHandleBackspace() local
246 if (shell->length == 0) { in BShellEnvHandleBackspace()
249 if (shell->cursor == shell->length) { in BShellEnvHandleBackspace()
250 shell->length--; in BShellEnvHandleBackspace()
251 shell->cursor--; in BShellEnvHandleBackspace()
252 shell->buffer[shell->length] = 0; in BShellEnvHandleBackspace()
254 } else if (shell->cursor > 0) { in BShellEnvHandleBackspace()
255 for (short i = 0; i < shell->length - shell->cursor; i++) { in BShellEnvHandleBackspace()
256 shell->buffer[shell->cursor + i - 1] = shell->buffer[shell->cursor + i]; in BShellEnvHandleBackspace()
258 shell->length--; in BShellEnvHandleBackspace()
259 shell->cursor--; in BShellEnvHandleBackspace()
260 shell->buffer[shell->length] = 0; in BShellEnvHandleBackspace()
261 BShellEnvOutputByte(shell, '\b'); in BShellEnvHandleBackspace()
262 for (short i = shell->cursor; i < shell->length; i++) { in BShellEnvHandleBackspace()
263 BShellEnvOutputByte(shell, shell->buffer[i]); in BShellEnvHandleBackspace()
265 BShellEnvOutputByte(shell, ' '); in BShellEnvHandleBackspace()
266 for (short i = shell->length - shell->cursor + 1; i > 0; i--) { in BShellEnvHandleBackspace()
267 BShellEnvOutputByte(shell, '\b'); in BShellEnvHandleBackspace()
282 BShellEnv *shell = (BShellEnv *)handle; in BShellEnvHandleNormal() local
286 if (shell->length < BSH_COMMAND_MAX_LENGTH - 1) { in BShellEnvHandleNormal()
287 if (shell->length == shell->cursor) { in BShellEnvHandleNormal()
288 shell->buffer[shell->length++] = data; in BShellEnvHandleNormal()
289 shell->cursor++; in BShellEnvHandleNormal()
290 BShellEnvOutputByte(shell, data); in BShellEnvHandleNormal()
292 for (uint16_t i = shell->length - shell->cursor; i > 0; i--) { in BShellEnvHandleNormal()
293 shell->buffer[shell->cursor + i] = shell->buffer[shell->cursor + i - 1]; in BShellEnvHandleNormal()
295 shell->buffer[shell->cursor++] = data; in BShellEnvHandleNormal()
296 shell->buffer[++shell->length] = 0; in BShellEnvHandleNormal()
297 for (uint16_t i = shell->cursor - 1; i < shell->length; i++) { in BShellEnvHandleNormal()
298 BShellEnvOutputByte(shell, shell->buffer[i]); in BShellEnvHandleNormal()
300 for (uint16_t i = shell->length - shell->cursor; i > 0; i--) { in BShellEnvHandleNormal()
301 BShellEnvOutputByte(shell, '\b'); in BShellEnvHandleNormal()
305 BShellEnvOutputString(shell, BShellEnvErrString(handle, BSH_CMD_TOO_LONG)); in BShellEnvHandleNormal()
306 BShellEnvOutputString(shell, shell->prompt); in BShellEnvHandleNormal()
308 shell->cursor = shell->length; in BShellEnvHandleNormal()
325 BShellEnv *shell = (BShellEnv *)handle; in BShellEnvHandleEsc() local
326 shell->shellState = BSH_ANSI_ESC; in BShellEnvHandleEsc()
352 BShellEnv *shell = (BShellEnv *)handle; in BShellEnvProcessInput() local
353 if (shell->shellState == BSH_IN_NORMAL) { in BShellEnvProcessInput()
356 key->keyHandle(shell, (uint8_t)data); in BShellEnvProcessInput()
361 key->keyHandle(shell, (uint8_t)data); in BShellEnvProcessInput()
364 BShellEnvHandleNormal(shell, data); in BShellEnvProcessInput()
365 } else if (shell->shellState == BSH_ANSI_CSI) { in BShellEnvProcessInput()
372 if (shell->cursor < shell->length) { in BShellEnvProcessInput()
373 BShellEnvOutputByte(handle, shell->buffer[shell->cursor]); in BShellEnvProcessInput()
374 shell->cursor++; in BShellEnvProcessInput()
378 if (shell->cursor > 0) { in BShellEnvProcessInput()
379 BShellEnvOutputByte(shell, '\b'); in BShellEnvProcessInput()
380 shell->cursor--; in BShellEnvProcessInput()
386 shell->shellState = BSH_IN_NORMAL; in BShellEnvProcessInput()
387 } else if (shell->shellState == BSH_ANSI_ESC) { in BShellEnvProcessInput()
389 shell->shellState = BSH_ANSI_CSI; in BShellEnvProcessInput()
391 shell->shellState = BSH_IN_NORMAL; in BShellEnvProcessInput()
399 BShellEnv *shell = (BShellEnv *)handle; in BShellEnvLoop() local
400 BSH_CHECK(shell->input != NULL, return, "Invalid shell input"); in BShellEnvLoop()
403 if (shell->input(&data, 1) == 1) { in BShellEnvLoop()
404 BShellEnvProcessInput(shell, data); in BShellEnvLoop()
414 BShellEnv *shell = (BShellEnv *)calloc(1, sizeof(BShellEnv)); in BShellEnvInit() local
415 BSH_CHECK(shell != NULL, return BSH_INVALID_PARAM, "Failed to create shell env"); in BShellEnvInit()
416 shell->length = 0; in BShellEnvInit()
417 shell->cursor = 0; in BShellEnvInit()
418 shell->shellState = BSH_IN_NORMAL; in BShellEnvInit()
419 shell->input = info->input; in BShellEnvInit()
420 shell->prompt = strdup(info->prompt); in BShellEnvInit()
421 shell->command = NULL; in BShellEnvInit()
422 shell->param = NULL; in BShellEnvInit()
423 shell->keyHandle = NULL; in BShellEnvInit()
424 shell->execMode = BSH_EXEC_INDEPENDENT; in BShellEnvInit()
425 *handle = (BShellHandle)shell; in BShellEnvInit()
432 BShellEnv *shell = (BShellEnv *)handle; in BShellEnvStart() local
433 shell->execMode = BSH_EXEC_TASK; in BShellEnvStart()
435 BShellEnvOutputString(handle, shell->prompt); in BShellEnvStart()
478 BShellEnv *shell = (BShellEnv *)handle; in BShellEnvDestory() local
480 BShellCommand *cmd = shell->command; in BShellEnvDestory()
482 shell->command = cmd->next; in BShellEnvDestory()
484 cmd = shell->command; in BShellEnvDestory()
487 BShellParam *param = shell->param; in BShellEnvDestory()
489 shell->param = param->next; in BShellEnvDestory()
491 param = shell->param; in BShellEnvDestory()
494 BShellKey *key = shell->keyHandle; in BShellEnvDestory()
496 shell->keyHandle = key->next; in BShellEnvDestory()
498 key = shell->keyHandle; in BShellEnvDestory()
500 if (shell->prompt != NULL) { in BShellEnvDestory()
501 free(shell->prompt); in BShellEnvDestory()
503 free(shell); in BShellEnvDestory()
511 BShellEnv *shell = (BShellEnv *)handle; in BShellEnvRegisterCmd() local
549 cmd->next = shell->command; in BShellEnvRegisterCmd()
550 shell->command = cmd; in BShellEnvRegisterCmd()
577 BShellEnv *shell = (BShellEnv *)handle; in BShellEnvGetCmd() local
578 BShellCommand *cmd = shell->command; in BShellEnvGetCmd()
617 BShellEnv *shell = (BShellEnv *)handle; in BShellEnvRegisterKeyHandle() local
623 key->next = shell->keyHandle; in BShellEnvRegisterKeyHandle()
624 shell->keyHandle = key; in BShellEnvRegisterKeyHandle()
631 BShellEnv *shell = (BShellEnv *)handle; in BShellEnvGetKey() local
632 BShellKey *key = shell->keyHandle; in BShellEnvGetKey()
666 BShellEnv *shell = (BShellEnv *)handle; in BShellEnvSetParam() local
687 param->next = shell->param; in BShellEnvSetParam()
688 shell->param = param; in BShellEnvSetParam()
699 BShellEnv *shell = (BShellEnv *)handle; in BShellEnvGetParam() local
700 BShellParam *param = shell->param; in BShellEnvGetParam()