Commit | Line | Data |
---|---|---|
68c9221e KM |
1 | static char *sccsid = "@(#)num.c 4.2 (Berkeley) %G%"; |
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 | */ | |
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 | } |