1*1061Sbill static char *sccsid = "@(#)num.c 4.1 (Berkeley) 10/01/80"; 2*1061Sbill #include "stdio.h" 3*1061Sbill #define formfeed 0xc 4*1061Sbill 5*1061Sbill /* 6*1061Sbill * number - a cat like program which prints a file with line 7*1061Sbill * numbers. Printing of numbers is suppressed on blank 8*1061Sbill * lines. 9*1061Sbill * 10*1061Sbill * Original Version by William Joy, June 1977 11*1061Sbill * Updated October 1979 by M. Kirk McKusick 12*1061Sbill */ 13*1061Sbill main(ac, av) 14*1061Sbill int ac; 15*1061Sbill char *av[]; 16*1061Sbill { 17*1061Sbill register int argc = ac; 18*1061Sbill register char **argv = av; 19*1061Sbill register int lino; 20*1061Sbill register char *lineptr; 21*1061Sbill register FILE *STDOUT = stdout; 22*1061Sbill register FILE *STDIN = stdin; 23*1061Sbill char line[512]; 24*1061Sbill extern char _sibuf[], _sobuf[]; 25*1061Sbill 26*1061Sbill argv++; 27*1061Sbill argc--; 28*1061Sbill lino = 1; 29*1061Sbill setbuf(STDIN,_sibuf); 30*1061Sbill setbuf(STDOUT,_sobuf); 31*1061Sbill do 32*1061Sbill { 33*1061Sbill if (argc) 34*1061Sbill if (freopen(*argv++, "r", STDIN) == NULL) 35*1061Sbill { 36*1061Sbill perror(*--argv); 37*1061Sbill exit(1); 38*1061Sbill } 39*1061Sbill for(;;) 40*1061Sbill { 41*1061Sbill lineptr = line; 42*1061Sbill *lineptr = 0; 43*1061Sbill fscanf(STDIN,"%[^\n]",lineptr); 44*1061Sbill if (feof(STDIN)) 45*1061Sbill break; 46*1061Sbill if (*lineptr == formfeed) 47*1061Sbill putc(*lineptr++,STDOUT); 48*1061Sbill if (!*lineptr) 49*1061Sbill putc('\n',STDOUT); 50*1061Sbill else 51*1061Sbill fprintf(STDOUT,"%6d %s\n",lino,lineptr); 52*1061Sbill lino++; 53*1061Sbill getc(STDIN); 54*1061Sbill } 55*1061Sbill } 56*1061Sbill while (--argc > 0); 57*1061Sbill exit(); 58*1061Sbill } 59