mirror of
https://github.com/RfidResearchGroup/proxmark3.git
synced 2025-08-20 13:23:51 -07:00
proper filtering of RL markers
This commit is contained in:
parent
f97516ca38
commit
ff7b7b3a6f
3 changed files with 18 additions and 5 deletions
|
@ -331,7 +331,10 @@ check_script:
|
|||
}
|
||||
char prompt[PROXPROMPT_MAX_SIZE] = {0};
|
||||
prompt_compose(prompt, sizeof(prompt), prompt_ctx, prompt_dev);
|
||||
PrintAndLogEx(NORMAL, "%s%s", prompt, cmd);
|
||||
// always filter RL magic separators if not using readline
|
||||
char prompt_filtered[PROXPROMPT_MAX_SIZE] = {0};
|
||||
memcpy_filter_rlmarkers(prompt_filtered, prompt, sizeof(prompt_filtered));
|
||||
PrintAndLogEx(NORMAL, "%s%s", prompt_filtered, cmd);
|
||||
g_printAndLog = PRINTANDLOG_PRINT | PRINTANDLOG_LOG;
|
||||
|
||||
// add to history if not from a script
|
||||
|
|
|
@ -351,6 +351,19 @@ void SetFlushAfterWrite(bool value) {
|
|||
flushAfterWrite = value;
|
||||
}
|
||||
|
||||
void memcpy_filter_rlmarkers(void *dest, const void *src, size_t n) {
|
||||
uint8_t *rdest = (uint8_t *)dest;
|
||||
uint8_t *rsrc = (uint8_t *)src;
|
||||
uint16_t si = 0;
|
||||
for (uint16_t i = 0; i < n; i++) {
|
||||
if ((i < n)
|
||||
&& ((rsrc[i] == '\001') || (rsrc[i] == '\002')))
|
||||
// skip readline special markers
|
||||
continue;
|
||||
rdest[si++] = rsrc[i];
|
||||
}
|
||||
}
|
||||
|
||||
void memcpy_filter_ansi(void *dest, const void *src, size_t n, bool filter) {
|
||||
if (filter) {
|
||||
// Filter out ANSI sequences on these OS
|
||||
|
@ -358,10 +371,6 @@ void memcpy_filter_ansi(void *dest, const void *src, size_t n, bool filter) {
|
|||
uint8_t *rsrc = (uint8_t *)src;
|
||||
uint16_t si = 0;
|
||||
for (uint16_t i = 0; i < n; i++) {
|
||||
if ((i < n)
|
||||
&& ((rsrc[i] == '\001') || (rsrc[i] == '\002')))
|
||||
// skip readline special markers
|
||||
continue;
|
||||
if ((i < n - 1)
|
||||
&& (rsrc[i] == '\x1b')
|
||||
&& (rsrc[i + 1] >= 0x40)
|
||||
|
|
|
@ -56,6 +56,7 @@ void PrintAndLogOptions(const char *str[][2], size_t size, size_t space);
|
|||
void PrintAndLogEx(logLevel_t level, const char *fmt, ...);
|
||||
void SetFlushAfterWrite(bool value);
|
||||
void memcpy_filter_ansi(void *dest, const void *src, size_t n, bool filter);
|
||||
void memcpy_filter_rlmarkers(void *dest, const void *src, size_t n);
|
||||
void memcpy_filter_emoji(void *dest, const void *src, size_t n, emojiMode_t mode);
|
||||
|
||||
int searchHomeFilePath(char **foundpath, const char *filename, bool create_home);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue