Cope gracefully when people type something, then hit ^C.
authorEric Andersen <andersen@codepoet.org>
Thu, 31 May 2001 17:17:12 +0000 (17:17 -0000)
committerEric Andersen <andersen@codepoet.org>
Thu, 31 May 2001 17:17:12 +0000 (17:17 -0000)
 -Erik

hush.c
shell/hush.c

diff --git a/hush.c b/hush.c
index 5c129ce..372c957 100644 (file)
--- a/hush.c
+++ b/hush.c
@@ -891,6 +891,7 @@ static void get_user_input(struct in_str *i)
        the_command[0]=fgetc(i->file);
        the_command[1]='\0';
 #endif
+       fflush(stdout);
        i->p = the_command;
 }
 
@@ -908,7 +909,9 @@ static int file_get(struct in_str *i)
                /* need to double check i->file because we might be doing something
                 * more complicated by now, like sourcing or substituting. */
                if (i->__promptme && interactive && i->file == stdin) {
-                       get_user_input(i);
+                       while(! i->p || (interactive && strlen(i->p)==0) ) {
+                               get_user_input(i);
+                       }
                        i->promptmode=2;
                        i->__promptme = 0;
                        if (i->p && *i->p) {
index 5c129ce..372c957 100644 (file)
@@ -891,6 +891,7 @@ static void get_user_input(struct in_str *i)
        the_command[0]=fgetc(i->file);
        the_command[1]='\0';
 #endif
+       fflush(stdout);
        i->p = the_command;
 }
 
@@ -908,7 +909,9 @@ static int file_get(struct in_str *i)
                /* need to double check i->file because we might be doing something
                 * more complicated by now, like sourcing or substituting. */
                if (i->__promptme && interactive && i->file == stdin) {
-                       get_user_input(i);
+                       while(! i->p || (interactive && strlen(i->p)==0) ) {
+                               get_user_input(i);
+                       }
                        i->promptmode=2;
                        i->__promptme = 0;
                        if (i->p && *i->p) {