mirror of
https://github.com/RfidResearchGroup/proxmark3.git
synced 2025-08-20 21:33:47 -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};
|
char prompt[PROXPROMPT_MAX_SIZE] = {0};
|
||||||
prompt_compose(prompt, sizeof(prompt), prompt_ctx, prompt_dev);
|
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;
|
g_printAndLog = PRINTANDLOG_PRINT | PRINTANDLOG_LOG;
|
||||||
|
|
||||||
// add to history if not from a script
|
// add to history if not from a script
|
||||||
|
|
|
@ -351,6 +351,19 @@ void SetFlushAfterWrite(bool value) {
|
||||||
flushAfterWrite = 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) {
|
void memcpy_filter_ansi(void *dest, const void *src, size_t n, bool filter) {
|
||||||
if (filter) {
|
if (filter) {
|
||||||
// Filter out ANSI sequences on these OS
|
// 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;
|
uint8_t *rsrc = (uint8_t *)src;
|
||||||
uint16_t si = 0;
|
uint16_t si = 0;
|
||||||
for (uint16_t i = 0; i < n; i++) {
|
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)
|
if ((i < n - 1)
|
||||||
&& (rsrc[i] == '\x1b')
|
&& (rsrc[i] == '\x1b')
|
||||||
&& (rsrc[i + 1] >= 0x40)
|
&& (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 PrintAndLogEx(logLevel_t level, const char *fmt, ...);
|
||||||
void SetFlushAfterWrite(bool value);
|
void SetFlushAfterWrite(bool value);
|
||||||
void memcpy_filter_ansi(void *dest, const void *src, size_t n, bool filter);
|
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);
|
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);
|
int searchHomeFilePath(char **foundpath, const char *filename, bool create_home);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue