From: Hannes Müller <> Date: Wed, 17 Mar 2021 19:37:47 +0000 (+0100) Subject: more: fix command 'f' (screen forward) behaviour X-Git-Tag: v2.37-rc1~24^2~1 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=9f303a2bf425bfca4af46474947b06ae05832455;p=thirdparty%2Futil-linux.git more: fix command 'f' (screen forward) behaviour Currently 'f' behaves like 's', which is not correct according to man page. Bug was introduced with 1f861935a7292acbecc4d1618657e740e46175d9 --- diff --git a/text-utils/more.c b/text-utils/more.c index b7b081b284..bc3d526e04 100644 --- a/text-utils/more.c +++ b/text-utils/more.c @@ -136,7 +136,8 @@ typedef enum { more_kc_set_lines_per_screen, more_kc_set_scroll_len, more_kc_quit, - more_kc_skip_forward, + more_kc_skip_forward_screen, + more_kc_skip_forward_line, more_kc_next_line, more_kc_clear_screen, more_kc_previous_search_match, @@ -814,13 +815,13 @@ static struct number_command read_command(struct more_control *ctl) cmd.key = more_kc_backwards; return cmd; } else if (!memcmp(input, ARROW_DOWN, sizeof(ARROW_DOWN))) { - cmd.key = more_kc_skip_forward; + cmd.key = more_kc_skip_forward_line; return cmd; } else if (!memcmp(input, PAGE_UP, sizeof(PAGE_UP))) { cmd.key = more_kc_backwards; return cmd; } else if (!memcmp(input, PAGE_DOWN, sizeof(PAGE_DOWN))) { - cmd.key = more_kc_skip_forward; + cmd.key = more_kc_skip_forward_line; return cmd; } } @@ -881,9 +882,11 @@ static struct number_command read_command(struct more_control *ctl) cmd.key = more_kc_quit; break; case 'f': - case 's': case CTRL('F'): - cmd.key = more_kc_skip_forward; + cmd.key = more_kc_skip_forward_screen; + break; + case 's': + cmd.key = more_kc_skip_forward_line; break; case '\n': cmd.key = more_kc_next_line; @@ -1643,8 +1646,13 @@ static int more_key_command(struct more_control *ctl, char *filename) break; case more_kc_quit: more_exit(ctl); - case more_kc_skip_forward: - if (skip_forwards(ctl, cmd.number, cmd.number)) + case more_kc_skip_forward_screen: + if (skip_forwards(ctl, cmd.number, 'f')) + retval = ctl->lines_per_screen; + done = 1; + break; + case more_kc_skip_forward_line: + if (skip_forwards(ctl, cmd.number, 's')) retval = ctl->lines_per_screen; done = 1; break;