From a5742b8e102e32e3da8e2256332530ed7e38925c Mon Sep 17 00:00:00 2001 From: Bobbi Webber-Manners Date: Sun, 9 Feb 2020 19:48:30 -0500 Subject: [PATCH] Added simple nl (number lines) utility --- bobbi/Makefile | 8 -------- bobbi/Makefile#000000 | 11 +++++++++++ bobbi/nl.c#b00008 | 40 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 51 insertions(+), 8 deletions(-) delete mode 100644 bobbi/Makefile create mode 100644 bobbi/Makefile#000000 create mode 100644 bobbi/nl.c#b00008 diff --git a/bobbi/Makefile b/bobbi/Makefile deleted file mode 100644 index 286c109..0000000 --- a/bobbi/Makefile +++ /dev/null @@ -1,8 +0,0 @@ -all: sortdir - -sortdir: sortdir.c - occ -w -o sortdir sortdir.c - -install: sortdir - cp sortdir /usr/local/bin - diff --git a/bobbi/Makefile#000000 b/bobbi/Makefile#000000 new file mode 100644 index 0000000..470c6e6 --- /dev/null +++ b/bobbi/Makefile#000000 @@ -0,0 +1,11 @@ +all: nl sortdir + +nl: nl.c + occ -w -o nl nl.c + +sortdir: sortdir.c + occ -w -o sortdir sortdir.c + +install: sortdir nl + cp nl sortdir /usr/local/bin + diff --git a/bobbi/nl.c#b00008 b/bobbi/nl.c#b00008 new file mode 100644 index 0000000..a70c7af --- /dev/null +++ b/bobbi/nl.c#b00008 @@ -0,0 +1,40 @@ +#include +#include + +void usage(void) { + fputs("usage: nl [filename]\n", stderr); +} + +int main(int argc, char *argv[]) { + if (argc > 2) { + usage(); + exit(2); + } + FILE *in; + if (argc == 2) { + in = fopen(argv[1], "r"); + if (!in) { + fprintf(stderr, "nl: cannot open '%s'\n", argv[1]); + exit(1); + } + } + else + in = stdin; + + int line = 1; + int flag = 0; + printf("%5d ", line++); + while (!feof(in)) { + unsigned char c = fgetc(in); + if (c == '\n' || c == '\r') + flag = 1; + else if (c != 0xff) { + if (flag) + printf("\n%5d ", line++); + flag = 0; + putchar(c); + } + } + putchar('\n'); +} +