mirror of
https://github.com/RfidResearchGroup/proxmark3.git
synced 2025-08-19 21:03:48 -07:00
add: OSX readline fixes ( @micolous )
https://github.com/Proxmark/proxmark3/pull/585/commits/07632393630729d2e3bd0a3d36cdb401b934d88a
This commit is contained in:
parent
0656edbb85
commit
4c666e3832
2 changed files with 19 additions and 11 deletions
|
@ -378,6 +378,9 @@ int main(int argc, char* argv[]) {
|
||||||
bool addLuaExec = false;
|
bool addLuaExec = false;
|
||||||
char *script_cmds_file = NULL;
|
char *script_cmds_file = NULL;
|
||||||
char *script_cmd = NULL;
|
char *script_cmd = NULL;
|
||||||
|
|
||||||
|
// Must be before the first PrintAndLog call, for rl_redisplay
|
||||||
|
rl_initialize();
|
||||||
|
|
||||||
if (argc < 2) {
|
if (argc < 2) {
|
||||||
show_help(true, argv[0]);
|
show_help(true, argv[0]);
|
||||||
|
|
27
client/ui.c
27
client/ui.c
|
@ -81,16 +81,17 @@ void PrintAndLogEx(logLevel_t level, char *fmt, ...) {
|
||||||
vsnprintf(buffer, sizeof(buffer), fmt, args);
|
vsnprintf(buffer, sizeof(buffer), fmt, args);
|
||||||
va_end(args);
|
va_end(args);
|
||||||
|
|
||||||
if(strchr(buffer, '\n'))
|
if(strchr(buffer, '\n')) {
|
||||||
{
|
|
||||||
token = strtok(buffer,"\n");
|
token = strtok(buffer,"\n");
|
||||||
while (token != NULL)
|
|
||||||
{
|
while (token != NULL) {
|
||||||
size=strlen(buffer2);
|
size = strlen(buffer2);
|
||||||
if(strlen(token))
|
if (strlen(token))
|
||||||
snprintf(buffer2+size, sizeof(buffer2)-size, "%s%s\n", prefix, token);
|
snprintf(buffer2+size, sizeof(buffer2)-size, "%s%s\n", prefix, token);
|
||||||
else
|
else
|
||||||
snprintf(buffer2+size, sizeof(buffer2)-size, "\n");
|
snprintf(buffer2+size, sizeof(buffer2)-size, "\n");
|
||||||
|
|
||||||
token = strtok(NULL, "\n");
|
token = strtok(NULL, "\n");
|
||||||
}
|
}
|
||||||
PrintAndLog(buffer2);
|
PrintAndLog(buffer2);
|
||||||
|
@ -116,9 +117,13 @@ void PrintAndLog(char *fmt, ...) {
|
||||||
logging=0;
|
logging=0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// If there is an incoming message from the hardware (eg: lf hid read) in
|
||||||
|
// the background (while the prompt is displayed and accepting user input),
|
||||||
|
// stash the prompt and bring it back later.
|
||||||
#ifdef RL_STATE_READCMD
|
#ifdef RL_STATE_READCMD
|
||||||
// We are using GNU readline.
|
// We are using GNU readline. libedit (OSX) doesn't support this flag.
|
||||||
int need_hack = (rl_readline_state & RL_STATE_READCMD) > 0;
|
int need_hack = (rl_readline_state & RL_STATE_READCMD) > 0;
|
||||||
|
|
||||||
if (need_hack) {
|
if (need_hack) {
|
||||||
|
@ -128,9 +133,6 @@ void PrintAndLog(char *fmt, ...) {
|
||||||
rl_replace_line("", 0);
|
rl_replace_line("", 0);
|
||||||
rl_redisplay();
|
rl_redisplay();
|
||||||
}
|
}
|
||||||
#else
|
|
||||||
// We are using libedit (OSX), which doesn't support this flag.
|
|
||||||
int need_hack = 0;
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
va_start(argptr, fmt);
|
va_start(argptr, fmt);
|
||||||
|
@ -140,6 +142,8 @@ void PrintAndLog(char *fmt, ...) {
|
||||||
va_end(argptr);
|
va_end(argptr);
|
||||||
printf("\n");
|
printf("\n");
|
||||||
|
|
||||||
|
#ifdef RL_STATE_READCMD
|
||||||
|
// We are using GNU readline. libedit (OSX) doesn't support this flag.
|
||||||
if (need_hack) {
|
if (need_hack) {
|
||||||
rl_restore_prompt();
|
rl_restore_prompt();
|
||||||
rl_replace_line(saved_line, 0);
|
rl_replace_line(saved_line, 0);
|
||||||
|
@ -147,6 +151,7 @@ void PrintAndLog(char *fmt, ...) {
|
||||||
rl_redisplay();
|
rl_redisplay();
|
||||||
free(saved_line);
|
free(saved_line);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
if (logging && logfile) {
|
if (logging && logfile) {
|
||||||
vfprintf(logfile, fmt, argptr2);
|
vfprintf(logfile, fmt, argptr2);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue