mirror of
https://github.com/Proxmark/proxmark3.git
synced 2025-07-31 12:00:10 -07:00
fix: .history was never written
This commit is contained in:
parent
5d0e190169
commit
2487dfeb07
6 changed files with 69 additions and 64 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -1,6 +1,7 @@
|
|||
# .gitignore
|
||||
# don't push these files to the repository
|
||||
|
||||
.history
|
||||
*.log
|
||||
*.eml
|
||||
*.o
|
||||
|
|
|
@ -47,7 +47,7 @@ static command_t CommandTable[] =
|
|||
{"hf", CmdHF, 1, "{ High Frequency commands... }"},
|
||||
{"hw", CmdHW, 1, "{ Hardware commands... }"},
|
||||
{"lf", CmdLF, 1, "{ Low Frequency commands... }"},
|
||||
{"script", CmdScript, 1,"{ Scripting commands }"},
|
||||
{"script", CmdScript, 1, "{ Scripting commands }"},
|
||||
{"quit", CmdQuit, 1, "Exit program"},
|
||||
{"exit", CmdQuit, 1, "Exit program"},
|
||||
{NULL, NULL, 0, NULL}
|
||||
|
@ -65,8 +65,7 @@ int CmdHelp(const char *Cmd)
|
|||
|
||||
int CmdQuit(const char *Cmd)
|
||||
{
|
||||
exit(0);
|
||||
return 0;
|
||||
return 99;
|
||||
}
|
||||
/**
|
||||
* @brief This method should be called when sending a new command to the pm3. In case any old
|
||||
|
@ -164,8 +163,8 @@ bool WaitForResponse(uint32_t cmd, UsbCommand* response) {
|
|||
// Entry point into our code: called whenever the user types a command and
|
||||
// then presses Enter, which the full command line that they typed.
|
||||
//-----------------------------------------------------------------------------
|
||||
void CommandReceived(char *Cmd) {
|
||||
CmdsParse(CommandTable, Cmd);
|
||||
int CommandReceived(char *Cmd) {
|
||||
return CmdsParse(CommandTable, Cmd);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
#include "usb_cmd.h"
|
||||
#include "cmdparser.h"
|
||||
void UsbCommandReceived(UsbCommand *UC);
|
||||
void CommandReceived(char *Cmd);
|
||||
int CommandReceived(char *Cmd);
|
||||
bool WaitForResponseTimeout(uint32_t cmd, UsbCommand* response, size_t ms_timeout);
|
||||
bool WaitForResponse(uint32_t cmd, UsbCommand* response);
|
||||
void clearCommandBuffer();
|
||||
|
|
|
@ -15,6 +15,7 @@
|
|||
#include "cmdparser.h"
|
||||
#include "proxmark3.h"
|
||||
|
||||
|
||||
void CmdsHelp(const command_t Commands[])
|
||||
{
|
||||
if (Commands[0].Name == NULL)
|
||||
|
@ -28,17 +29,18 @@ void CmdsHelp(const command_t Commands[])
|
|||
}
|
||||
}
|
||||
|
||||
void CmdsParse(const command_t Commands[], const char *Cmd)
|
||||
|
||||
int CmdsParse(const command_t Commands[], const char *Cmd)
|
||||
{
|
||||
if(strcmp( Cmd, "XX_internal_command_dump_XX") == 0)
|
||||
{// Help dump children
|
||||
dumpCommandsRecursive(Commands, 0);
|
||||
return;
|
||||
return 0;
|
||||
}
|
||||
if(strcmp( Cmd, "XX_internal_command_dump_markdown_XX") == 0)
|
||||
{// Markdown help dump children
|
||||
dumpCommandsRecursive(Commands, 1);
|
||||
return;
|
||||
return 0;
|
||||
}
|
||||
char cmd_name[32];
|
||||
int len = 0;
|
||||
|
@ -65,11 +67,13 @@ void CmdsParse(const command_t Commands[], const char *Cmd)
|
|||
if (Commands[i].Name) {
|
||||
while (Cmd[len] == ' ')
|
||||
++len;
|
||||
Commands[i].Parse(Cmd + len);
|
||||
return Commands[i].Parse(Cmd + len);
|
||||
} else {
|
||||
// show help for selected hierarchy or if command not recognised
|
||||
CmdsHelp(Commands);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
char pparent[512] = {0};
|
||||
|
|
|
@ -24,7 +24,7 @@ typedef struct command_s
|
|||
// Print help for each command in the command array
|
||||
void CmdsHelp(const command_t Commands[]);
|
||||
// Parse a command line
|
||||
void CmdsParse(const command_t Commands[], const char *Cmd);
|
||||
int CmdsParse(const command_t Commands[], const char *Cmd);
|
||||
void dumpCommandsRecursive(const command_t cmds[], int markdown);
|
||||
|
||||
#endif
|
||||
|
|
|
@ -155,12 +155,11 @@ static void *main_loop(void *targ) {
|
|||
cmd[strlen(cmd) - 1] = 0x00;
|
||||
|
||||
if (cmd[0] != 0x00) {
|
||||
if (strncmp(cmd, "quit", 4) == 0) {
|
||||
exit(0);
|
||||
int ret = CommandReceived(cmd);
|
||||
add_history(cmd);
|
||||
if (ret == 99) { // exit or quit
|
||||
break;
|
||||
}
|
||||
CommandReceived(cmd);
|
||||
add_history(cmd);
|
||||
}
|
||||
free(cmd);
|
||||
} else {
|
||||
|
@ -223,7 +222,7 @@ int main(int argc, char* argv[]) {
|
|||
.usb_present = 0,
|
||||
.script_cmds_file = NULL
|
||||
};
|
||||
pthread_t main_loop_t;
|
||||
pthread_t main_loop_threat;
|
||||
|
||||
|
||||
sp = uart_open(argv[1]);
|
||||
|
@ -258,18 +257,20 @@ int main(int argc, char* argv[]) {
|
|||
// create a mutex to avoid interlacing print commands from our different threads
|
||||
pthread_mutex_init(&print_lock, NULL);
|
||||
|
||||
pthread_create(&main_loop_t, NULL, &main_loop, &marg);
|
||||
pthread_create(&main_loop_threat, NULL, &main_loop, &marg);
|
||||
InitGraphics(argc, argv);
|
||||
|
||||
MainGraphics();
|
||||
|
||||
pthread_join(main_loop_t, NULL);
|
||||
pthread_join(main_loop_threat, NULL);
|
||||
|
||||
// Clean up the port
|
||||
if (offline == 0) {
|
||||
uart_close(sp);
|
||||
}
|
||||
|
||||
// clean up mutex
|
||||
pthread_mutex_destroy(&print_lock);
|
||||
|
||||
return 0;
|
||||
exit(0);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue