Big cleanup in config help and description
[oweals/busybox.git] / miscutils / less.c
index 877ab6ef2c2fadf8be6d6de1da4573cb408b8275..0b0a9aed4be26e7290d9813cf946e5b25e2d44ca 100644 (file)
@@ -87,7 +87,6 @@
 //config:        this option makes less perform a last-ditch effort to find it:
 //config:        position cursor to 999,999 and ask terminal to report real
 //config:        cursor position using "ESC [ 6 n" escape sequence, then read stdin.
-//config:
 //config:        This is not clean but helps a lot on serial lines and such.
 //config:
 //config:config FEATURE_LESS_DASHCMD
 //config:        less itself ('-' keyboard command).
 //config:
 //config:config FEATURE_LESS_LINENUMS
-//config:      bool "Enable dynamic switching of line numbers"
+//config:      bool "Enable -N (dynamic switching of line numbers)"
 //config:      default y
 //config:      depends on FEATURE_LESS_DASHCMD
-//config:      help
-//config:        Enables "-N" command.
+
+//applet:IF_LESS(APPLET(less, BB_DIR_USR_BIN, BB_SUID_DROP))
+
+//kbuild:lib-$(CONFIG_LESS) += less.o
 
 //usage:#define less_trivial_usage
 //usage:       "[-E" IF_FEATURE_LESS_REGEXP("I")IF_FEATURE_LESS_FLAGS("Mm")
@@ -169,6 +170,7 @@ enum { pattern_valid = 0 };
 struct globals {
        int cur_fline; /* signed */
        int kbd_fd;  /* fd to get input from */
+       int kbd_fd_orig_flags;
        int less_gets_pos;
 /* last position in last line, taking into account tabs */
        size_t last_line_pos;
@@ -304,6 +306,8 @@ static void print_statusline(const char *str)
 static void less_exit(int code)
 {
        set_tty_cooked();
+       if (!(G.kbd_fd_orig_flags & O_NONBLOCK))
+               ndelay_off(kbd_fd);
        clear_line();
        if (code < 0)
                kill_myself_with_sig(- code); /* does not return */
@@ -1813,16 +1817,11 @@ int less_main(int argc, char **argv)
  try_ctty:
                tty_fd = open(CURRENT_TTY, O_RDONLY);
                if (tty_fd < 0) {
-                       /*
-                        * If all else fails, less 481 uses stdout. Mimic that.
-                        * Testcase where usually both ttyname(STDOUT_FILENO)
-                        * and open(CURRENT_TTY) fail:
-                        * su -s /bin/sh -c 'busybox less FILE' - nobody
-                        */
+                       /* If all else fails, less 481 uses stdout. Mimic that */
                        tty_fd = STDOUT_FILENO;
                }
        }
-       ndelay_on(tty_fd);
+       G.kbd_fd_orig_flags = ndelay_on(tty_fd);
        kbd_fd = tty_fd; /* save in a global */
 
        tcgetattr(kbd_fd, &term_orig);