diff --git a/client/proxmark3.c b/client/proxmark3.c index 47ea28e36..0483cbc20 100644 --- a/client/proxmark3.c +++ b/client/proxmark3.c @@ -97,7 +97,7 @@ main_loop(char *script_cmds_file, char *script_cmd, bool pm3_present) { // loops every time enter is pressed... while (1) { - + bool printprompt = false; // this should hook up the PM3 again. /* if ( IsOffline() ) { @@ -134,13 +134,13 @@ main_loop(char *script_cmds_file, char *script_cmd, bool pm3_present) { strcleanrn(script_cmd_buf, sizeof(script_cmd_buf)); if ((cmd = strmcopy(script_cmd_buf)) != NULL) - PrintAndLogEx(NORMAL, PROXPROMPT"%s\n", cmd); + printprompt = true; } } else { // If there is a script command if (execCommand) { if ((cmd = strmcopy(script_cmd)) != NULL) - PrintAndLogEx(NORMAL, PROXPROMPT"%s", cmd); + printprompt = true; uint16_t len = strlen(script_cmd) + 1; script_cmd += len; if (script_cmd_len == len - 1) @@ -165,7 +165,7 @@ main_loop(char *script_cmds_file, char *script_cmd, bool pm3_present) { strcleanrn(script_cmd_buf, sizeof(script_cmd_buf)); if ((cmd = strmcopy(script_cmd_buf)) != NULL) - PrintAndLogEx(NORMAL, PROXPROMPT"%s", cmd); + printprompt = true; } else { cmd = readline(PROXPROMPT); @@ -179,10 +179,20 @@ main_loop(char *script_cmds_file, char *script_cmd, bool pm3_present) { // rtrim size_t l = strlen(cmd); - if (l > 0 && isspace(cmd[l - 1])) - cmd[l - 1] = 0x00; + while (l > 0 && isspace(cmd[l - 1])) { + cmd[--l] = '\0'; + } + // ltrim + size_t off=0; + while ((cmd[off] != '\0') && isspace(cmd[off])) + off++; + for (size_t i=0; i < strlen(cmd) - off; i++) + cmd[i] = cmd[i+off]; + cmd[strlen(cmd) - off] = '\0'; - if (cmd[0] != 0x00) { + if (cmd[0] != '\0') { + if (printprompt) + PrintAndLogEx(NORMAL, PROXPROMPT"%s", cmd); int ret = CommandReceived(cmd); HIST_ENTRY *entry = history_get(history_length); if ((!entry) || (strcmp(entry->line, cmd) != 0))