Skip to content
Snippets Groups Projects
Commit b34dc3a5 authored by Juan Carrano's avatar Juan Carrano
Browse files

sys/shell: ensure character is flushed when echoing.

When using a serial terminal without local echo, the current line
would not get updated as the user typed because the shell module's
readline() was not flushing each character.

This commit fixes that behavior. For additional clarity, fflush is
turned into a macro (flush_if_needed) which expands to either a call
to fflush() or empty, according to the standard library used.

This also fixes the erase/line editing behavior (the delete characters
were not being flushed either.)
parent d4fd6076
No related branches found
No related tags found
No related merge requests found
......@@ -44,6 +44,13 @@ static void _putchar(int c) {
#endif
#endif
static void flush_if_needed(void)
{
#ifdef MODULE_NEWLIB
fflush(stdout);
#endif
}
static shell_command_handler_t find_handler(const shell_command_t *command_list, char *command)
{
const shell_command_t *command_lists[] = {
......@@ -265,6 +272,7 @@ static int readline(char *buf, size_t size)
_putchar(c);
#endif
}
flush_if_needed();
}
}
......@@ -275,9 +283,7 @@ static inline void print_prompt(void)
_putchar(' ');
#endif
#ifdef MODULE_NEWLIB
fflush(stdout);
#endif
flush_if_needed();
}
void shell_run(const shell_command_t *shell_commands, char *line_buf, int len)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment