xref: /original-bsd/old/num/num.c (revision 55330032)
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