1*8516Smckusick static char *sccsid = "@(#)num.c 4.2 (Berkeley) 10/13/82";
2*8516Smckusick #include <stdio.h>
31061Sbill #define formfeed 0xc
41061Sbill
51061Sbill /*
61061Sbill * number - a cat like program which prints a file with line
71061Sbill * numbers. Printing of numbers is suppressed on blank
81061Sbill * lines.
91061Sbill *
101061Sbill * Original Version by William Joy, June 1977
111061Sbill * Updated October 1979 by M. Kirk McKusick
121061Sbill */
main(ac,av)131061Sbill main(ac, av)
141061Sbill int ac;
151061Sbill char *av[];
161061Sbill {
171061Sbill register int argc = ac;
181061Sbill register char **argv = av;
191061Sbill register int lino;
201061Sbill register char *lineptr;
211061Sbill register FILE *STDOUT = stdout;
221061Sbill register FILE *STDIN = stdin;
231061Sbill char line[512];
241061Sbill extern char _sibuf[], _sobuf[];
251061Sbill
261061Sbill argv++;
271061Sbill argc--;
281061Sbill lino = 1;
291061Sbill setbuf(STDIN,_sibuf);
301061Sbill setbuf(STDOUT,_sobuf);
311061Sbill do
321061Sbill {
331061Sbill if (argc)
341061Sbill if (freopen(*argv++, "r", STDIN) == NULL)
351061Sbill {
361061Sbill perror(*--argv);
371061Sbill exit(1);
381061Sbill }
391061Sbill for(;;)
401061Sbill {
411061Sbill lineptr = line;
421061Sbill *lineptr = 0;
431061Sbill fscanf(STDIN,"%[^\n]",lineptr);
441061Sbill if (feof(STDIN))
451061Sbill break;
461061Sbill if (*lineptr == formfeed)
471061Sbill putc(*lineptr++,STDOUT);
481061Sbill if (!*lineptr)
491061Sbill putc('\n',STDOUT);
501061Sbill else
511061Sbill fprintf(STDOUT,"%6d %s\n",lino,lineptr);
521061Sbill lino++;
531061Sbill getc(STDIN);
541061Sbill }
551061Sbill }
561061Sbill while (--argc > 0);
571061Sbill exit();
581061Sbill }
59