msh: also handle EOF/read errors correctly
authorDenis Vlasenko <vda.linux@googlemail.com>
Sat, 2 Feb 2008 18:50:50 +0000 (18:50 -0000)
committerDenis Vlasenko <vda.linux@googlemail.com>
Sat, 2 Feb 2008 18:50:50 +0000 (18:50 -0000)
shell/msh.c

index 9a1be36d99d0f04feb16b42e4a238eab4dbfcf90..531ae779a77578d90cdd763056f1fc64313fd233 100644 (file)
@@ -4836,11 +4836,11 @@ static int filechar(struct ioarg *ap)
                static int position = 0, size = 0;
 
                while (size == 0 || position >= size) {
-                       /* Repeat if Ctrl-C is pressed. TODO: exit on -1 (error/EOF)? */
-                       while (read_line_input(current_prompt, filechar_cmdbuf, BUFSIZ, line_input_state) == 0)
-                               continue;
-                       size = strlen(filechar_cmdbuf);
+                       size = read_line_input(current_prompt, filechar_cmdbuf, BUFSIZ, line_input_state);
+                       if (size < 0) /* Error/EOF */
+                               exit(0);
                        position = 0;
+                       /* if Ctrl-C, size == 0 and loop will repeat */
                }
                c = filechar_cmdbuf[position];
                position++;