|
@@ -193,6 +193,7 @@ shellmatta_retCode_t shellmatta_processData(shellmatta_handle_t handle,
|
|
|
{
|
|
|
shellmatta_cmd_t *cmd;
|
|
|
uint8_t cmdExecuted = 0u;
|
|
|
+ uint32_t cmdLen;
|
|
|
shellmatta_retCode_t ret = SHELLMATTA_OK;
|
|
|
shellmatta_instance_t *inst = (shellmatta_instance_t*)handle;
|
|
|
|
|
@@ -225,16 +226,27 @@ shellmatta_retCode_t shellmatta_processData(shellmatta_handle_t handle,
|
|
|
history_storeCmd(inst);
|
|
|
history_reset(inst);
|
|
|
|
|
|
+ /** -# determine the cmd len (chars until first space or \0 is found */
|
|
|
+ cmdLen = 0u;
|
|
|
+ while( (cmdLen < inst->inputCount)
|
|
|
+ && (' ' != inst->buffer[cmdLen])
|
|
|
+ && ('\0' != inst->buffer[cmdLen]))
|
|
|
+ {
|
|
|
+ cmdLen ++;
|
|
|
+ }
|
|
|
+
|
|
|
/** -# search for a matching command */
|
|
|
while (NULL != cmd)
|
|
|
{
|
|
|
- /* only compare the length of the command -1 (to avoid comparing the \0 */
|
|
|
- if ( (0 == strncmp( inst->buffer,
|
|
|
+ /** -# compare command string and length */
|
|
|
+ if ( ((0 == strncmp( inst->buffer,
|
|
|
cmd->cmd,
|
|
|
- strlen(cmd->cmd)))
|
|
|
- || (0 == strncmp( inst->buffer,
|
|
|
+ cmdLen))
|
|
|
+ && (cmdLen == strlen(cmd->cmd)))
|
|
|
+ || ((0 == strncmp( inst->buffer,
|
|
|
cmd->cmdAlias,
|
|
|
- strlen(cmd->cmdAlias))))
|
|
|
+ cmdLen))
|
|
|
+ && (cmdLen == strlen(cmd->cmdAlias))))
|
|
|
{
|
|
|
inst->write("\r\n", 2u);
|
|
|
|