BSD 4_1c_2 release
[unix-history] / usr / src / ucb / num.c
CommitLineData
e804469b 1static char *sccsid = "@(#)num.c 4.2 (Berkeley) 10/13/82";
68c9221e 2#include <stdio.h>
db9988ed
BJ
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 */
13main(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 }