@@ -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);
|
||||||
|
|||||||
Reference in New Issue
Block a user