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