aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--miscutils/less.c52
1 files changed, 28 insertions, 24 deletions
diff --git a/miscutils/less.c b/miscutils/less.c
index 4cdfa3bbb..8fd0874e2 100644
--- a/miscutils/less.c
+++ b/miscutils/less.c
@@ -609,33 +609,15 @@ static int safe_lineno(int fline)
609 return LINENO(flines[fline]) + 1; 609 return LINENO(flines[fline]) + 1;
610} 610}
611 611
612/* Print a status line if -M was specified */ 612/* count number of lines in file */
613static void m_status_print(void) 613static void update_num_lines(void)
614{ 614{
615 int first, last; 615 int count, fd;
616 unsigned percent; 616 ssize_t len, i;
617 617 char buf[4096];
618 if (less_gets_pos >= 0) /* don't touch statusline while input is done! */ 618 struct stat stbuf;
619 return;
620
621 clear_line();
622 printf(HIGHLIGHT"%s", filename);
623 if (num_files > 1)
624 printf(" (file %i of %i)", current_file, num_files);
625
626 first = safe_lineno(cur_fline);
627 last = (option_mask32 & FLAG_S)
628 ? MIN(first + max_displayed_line, max_lineno)
629 : safe_lineno(cur_fline + max_displayed_line);
630 printf(" lines %i-%i", first, last);
631 619
632 if (num_lines == READING_FILE) { 620 if (num_lines == READING_FILE) {
633 int count, fd;
634 ssize_t len, i;
635 char buf[4096];
636 struct stat stbuf;
637
638 /* count number of lines in file */
639 count = 0; 621 count = 0;
640 fd = open(filename, O_RDONLY); 622 fd = open(filename, O_RDONLY);
641 if (fd < 0) 623 if (fd < 0)
@@ -654,7 +636,29 @@ static void m_status_print(void)
654 close(fd); 636 close(fd);
655 skip: ; 637 skip: ;
656 } 638 }
639}
640
641/* Print a status line if -M was specified */
642static void m_status_print(void)
643{
644 int first, last;
645 unsigned percent;
646
647 if (less_gets_pos >= 0) /* don't touch statusline while input is done! */
648 return;
649
650 clear_line();
651 printf(HIGHLIGHT"%s", filename);
652 if (num_files > 1)
653 printf(" (file %i of %i)", current_file, num_files);
654
655 first = safe_lineno(cur_fline);
656 last = (option_mask32 & FLAG_S)
657 ? MIN(first + max_displayed_line, max_lineno)
658 : safe_lineno(cur_fline + max_displayed_line);
659 printf(" lines %i-%i", first, last);
657 660
661 update_num_lines();
658 if (num_lines >= 0) 662 if (num_lines >= 0)
659 printf("/%i", num_lines); 663 printf("/%i", num_lines);
660 664