diff options
-rw-r--r-- | vlib/vlib/unix/cli.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/vlib/vlib/unix/cli.c b/vlib/vlib/unix/cli.c index c34ae219297..92c6941ad41 100644 --- a/vlib/vlib/unix/cli.c +++ b/vlib/vlib/unix/cli.c @@ -629,11 +629,16 @@ static void unix_cli_cli_prompt(unix_cli_file_t * cf, unix_file_t * uf) static void unix_cli_pager_prompt(unix_cli_file_t * cf, unix_file_t * uf) { u8 * prompt; + u32 h; + + h = cf->pager_start + (cf->height - 1); + if (h > vec_len (cf->pager_index)) + h = vec_len (cf->pager_index); prompt = format(0, "\r%s-- more -- (%d-%d/%d)%s", cf->ansi_capable ? ANSI_BOLD : "", cf->pager_start + 1, - cf->pager_start + cf->height, + h, vec_len (cf->pager_index), cf->ansi_capable ? ANSI_RESET: ""); @@ -866,10 +871,10 @@ static void unix_cli_pager_reindex (unix_cli_file_t * cf) */ if (cf->pager_start >= vec_len (cf->pager_index)) { - cf->pager_start = vec_len (cf->pager_index) - cf->height + 1; - - if (cf->pager_start < 0) + if (!cf->height || vec_len (cf->pager_index) < (cf->height - 1)) cf->pager_start = 0; + else + cf->pager_start = vec_len (cf->pager_index) - (cf->height - 1); } } |