xref: /csrg-svn/old/num/num.c (revision 1061)
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