Fix return code and don't output spurious newlines.
authorMatt Kraai <kraai@debian.org>
Thu, 12 Apr 2001 20:51:01 +0000 (20:51 -0000)
committerMatt Kraai <kraai@debian.org>
Thu, 12 Apr 2001 20:51:01 +0000 (20:51 -0000)
more.c
util-linux/more.c

diff --git a/more.c b/more.c
index 732396f03341a918b974136b3911f1cb97b85c2b..ffc79b179c98c569c45b75630fdbc5cb341f27b8 100644 (file)
--- a/more.c
+++ b/more.c
@@ -164,6 +164,9 @@ extern int more_main(int argc, char **argv)
                                lines = 0;
                                page_height = terminal_height;
                                please_display_more_prompt = 0;
+
+                               if (input == 'q')
+                                       goto end;
                        }
 
                        /* 
@@ -177,15 +180,10 @@ extern int more_main(int argc, char **argv)
                         * allows the user to quit while in the middle of a file.
                         */
                        if (c == '\n') {
-                               switch (input) {
-                               case 'q':
-                                       goto end;
-                               case '\n':
-                                       /* increment by just one line if we are at 
-                                        * the end of this line*/
+                               /* increment by just one line if we are at
+                                * the end of this line */
+                               if (input == '\n')
                                        please_display_more_prompt = 1;
-                                       break;
-                               }
                                /* Adjust the terminal height for any overlap, so that
                                 * no lines get lost off the top. */
                                if (len >= terminal_width) {
@@ -216,7 +214,7 @@ extern int more_main(int argc, char **argv)
        } while (--argc > 0);
   end:
 #ifdef BB_FEATURE_USE_TERMIOS
-       gotsig(0);
+       setTermSettings(fileno(cin), &initial_settings);
 #endif
-       return(TRUE);
+       return 0;
 }
index 732396f03341a918b974136b3911f1cb97b85c2b..ffc79b179c98c569c45b75630fdbc5cb341f27b8 100644 (file)
@@ -164,6 +164,9 @@ extern int more_main(int argc, char **argv)
                                lines = 0;
                                page_height = terminal_height;
                                please_display_more_prompt = 0;
+
+                               if (input == 'q')
+                                       goto end;
                        }
 
                        /* 
@@ -177,15 +180,10 @@ extern int more_main(int argc, char **argv)
                         * allows the user to quit while in the middle of a file.
                         */
                        if (c == '\n') {
-                               switch (input) {
-                               case 'q':
-                                       goto end;
-                               case '\n':
-                                       /* increment by just one line if we are at 
-                                        * the end of this line*/
+                               /* increment by just one line if we are at
+                                * the end of this line */
+                               if (input == '\n')
                                        please_display_more_prompt = 1;
-                                       break;
-                               }
                                /* Adjust the terminal height for any overlap, so that
                                 * no lines get lost off the top. */
                                if (len >= terminal_width) {
@@ -216,7 +214,7 @@ extern int more_main(int argc, char **argv)
        } while (--argc > 0);
   end:
 #ifdef BB_FEATURE_USE_TERMIOS
-       gotsig(0);
+       setTermSettings(fileno(cin), &initial_settings);
 #endif
-       return(TRUE);
+       return 0;
 }