From dea951f8c7853c95f211aef7230c658946bd8c96 Mon Sep 17 00:00:00 2001 From: Bill Joy Date: Mon, 29 Oct 1979 09:40:50 -0800 Subject: [PATCH] BSD 3 development Work on file usr/src/cmd/num.c Co-Authored-By: Kirk McKusick Synthesized-from: 3bsd --- usr/src/cmd/num.c | 57 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 usr/src/cmd/num.c diff --git a/usr/src/cmd/num.c b/usr/src/cmd/num.c new file mode 100644 index 0000000000..03366e976f --- /dev/null +++ b/usr/src/cmd/num.c @@ -0,0 +1,57 @@ +#include "stdio.h" +#define formfeed 0xc + +/* + * number - a cat like program which prints a file with line + * numbers. Printing of numbers is suppressed on blank + * lines. + * + * Original Version by William Joy, June 1977 + * Updated October 1979 by M. Kirk McKusick + */ +main(ac, av) + int ac; + char *av[]; + { + register int argc = ac; + register char **argv = av; + register int lino; + register char *lineptr; + register FILE *STDOUT = stdout; + register FILE *STDIN = stdin; + char line[512]; + extern char _sibuf[], _sobuf[]; + + argv++; + argc--; + lino = 1; + setbuf(STDIN,_sibuf); + setbuf(STDOUT,_sobuf); + do + { + if (argc) + if (freopen(*argv++, "r", STDIN) == NULL) + { + perror(*--argv); + exit(1); + } + for(;;) + { + lineptr = line; + *lineptr = 0; + fscanf(STDIN,"%[^\n]",lineptr); + if (feof(STDIN)) + break; + if (*lineptr == formfeed) + putc(*lineptr++,STDOUT); + if (!*lineptr) + putc('\n',STDOUT); + else + fprintf(STDOUT,"%6d %s\n",lino,lineptr); + lino++; + getc(STDIN); + } + } + while (--argc > 0); + exit(); + } -- 2.20.1