summaryrefslogtreecommitdiffstats
path: root/cpukit/libmisc/shell/shell.c
diff options
context:
space:
mode:
Diffstat (limited to 'cpukit/libmisc/shell/shell.c')
-rw-r--r--cpukit/libmisc/shell/shell.c17
1 files changed, 15 insertions, 2 deletions
diff --git a/cpukit/libmisc/shell/shell.c b/cpukit/libmisc/shell/shell.c
index a857e7bfa3..6c1aff0a4b 100644
--- a/cpukit/libmisc/shell/shell.c
+++ b/cpukit/libmisc/shell/shell.c
@@ -89,7 +89,7 @@ int rtems_shell_line_editor(
)
{
unsigned int extended_key;
- char c;
+ int c;
int col;
int last_col;
int output;
@@ -796,7 +796,20 @@ rtems_boolean rtems_shell_main_loop(
result = FALSE;
break;
}
- if (input_file || !rtems_shell_login(stdin,stdout)) {
+
+ /*
+ * By using result here, we can fall to the bottom of the
+ * loop when the connection is dropped during login and
+ * keep on trucking.
+ */
+ if ( input_file ) {
+ result = TRUE;
+ } else {
+ if (rtems_shell_login(stdin,stdout)) result = FALSE;
+ else result = TRUE;
+ }
+
+ if (result) {
const char *c;
memset (cmds[0], 0, cmd_count * RTEMS_SHELL_CMD_SIZE);
if (!input_file) {