[comp.os.minix] Bug + Fix for pr.c

phboers@cs.vu.nl (02/23/89)

Lately I tried to print out some files together, using 'pr'. The result led
me to a bug in pr.c. You can easily see it yourself: take a little file
and type:

pr -n file file file file file file file file | more

You'll notice that the width will get smaller at every file.

Another student at the university told me that there was another bug in pr.c,
namely in the way the time is printed at the top of the pages. If the number
of minutes is smaller than 10, 'pr' will print this number without a leading
zero.

A patch solving both bugs is included below, the patch is relative to version
1.3(d) as prof. A.S.Tanenbaum proposed when he posted version 1.4a.


					Peter Boersma
					VU Amsterdam
					Holland
					phboers@cs.vu.nl


------------------------------ patch for pr.c -------------------------------

*** pr.c.old	Wed Feb 22 19:09:47 1989
--- pr.c	Wed Feb 22 19:11:29 1989
***************
*** 386,392 ****
  
    linenr = 1;
    if (number)
! 	width -= NUM_WIDTH;
  
    do {
  	/* Check printing of page */
--- 386,392 ----
  
    linenr = 1;
    if (number)
! 	w -= NUM_WIDTH;
  
    do {
  	/* Check printing of page */
***************
*** 420,426 ****
  			   printf("%7c ", ' '); /* 7 == NUM_WIDTH-1 */
  		pr_number = FALSE;
  		cnt = 0;
! 		while (c != '\n' && c != EOF && cnt < width) {
  			if (c=='\t') {
  				int i, max;
  				max = TO_TAB(cnt);
--- 420,426 ----
  			   printf("%7c ", ' '); /* 7 == NUM_WIDTH-1 */
  		pr_number = FALSE;
  		cnt = 0;
! 		while (c != '\n' && c != EOF && cnt < w) {
  			if (c=='\t') {
  				int i, max;
  				max = TO_TAB(cnt);
***************
*** 530,534 ****
    }
  
   /* At this point, 'year', 'month', 'day', 'hour', 'minute'  ok */
!   printf("\n\n%s %d %0d:%0d %d", moname[month], day + 1, hour + 0, minute, year);
! }
--- 530,534 ----
    }
  
   /* At this point, 'year', 'month', 'day', 'hour', 'minute'  ok */
!   printf("\n\n%s %d %0d:%02d %d", moname[month], day + 1, hour + 0, minute, year);
! }