diff options
author | Nicholas Noll <nbnoll@eml.cc> | 2020-05-16 10:39:05 -0700 |
---|---|---|
committer | Nicholas Noll <nbnoll@eml.cc> | 2020-05-16 10:39:05 -0700 |
commit | 6c9563e91eb7aa738aa2656d141ce56ef66b50cf (patch) | |
tree | 85fd9a50777ae8f5ec14ca112d26c5f4b9262113 /sys/cmd/cat | |
parent | 3f7474df0645224ce61fedcd908028f41971189e (diff) |
feat: added directory for command line tools
Diffstat (limited to 'sys/cmd/cat')
-rw-r--r-- | sys/cmd/cat/cat.c | 40 | ||||
-rw-r--r-- | sys/cmd/cat/rules.mk | 24 | ||||
-rw-r--r-- | sys/cmd/cat/test.c | 8 |
3 files changed, 72 insertions, 0 deletions
diff --git a/sys/cmd/cat/cat.c b/sys/cmd/cat/cat.c new file mode 100644 index 0000000..847ec0c --- /dev/null +++ b/sys/cmd/cat/cat.c @@ -0,0 +1,40 @@ +#include <u.h> +#include <libn.h> + +static +void +cat(Stream *f, byte *name) +{ + long n; + byte buf[8192]; + + while(n = io·read(f, 1, arrlen(buf), buf), n > 0) { + if (io·write(stdout, 1, n, buf) != n) { + panicf("failed to write while copying stream '%s'", name); + } + } + + if (n < 0) { + panicf("failed to read from buffer '%s'", name); + } +} + + +int +main(int argc, char *argv[]) +{ + int i; + Stream *f; + + if (argc == 1) { + f = stdin; + cat(f, "<stdin>"); + } else for (i = 1; i < argc; i++) { + if (f = io·open(argv[i], "r"), f == nil) + panicf("can't open %s", argv[i]); + cat(f, argv[i]); + io·close(f); + } + + exit(0); +} diff --git a/sys/cmd/cat/rules.mk b/sys/cmd/cat/rules.mk new file mode 100644 index 0000000..e4ac480 --- /dev/null +++ b/sys/cmd/cat/rules.mk @@ -0,0 +1,24 @@ +include share/push.mk + +# Iterate through subdirectory tree + +# Local sources +SRCS_$(d) := $(d)/cat.c + +LIBS_$(d) := +BINS_$(d) := $(d)/cat +TSTS_$(d) := + +include share/paths.mk + +$(LIBS_$(d)): $(OBJS_$(d)) + $(ARCHIVE) + +$(BINS_$(d)): TCLIBS := $(OBJ_DIR)/libn/libn.a +$(BINS_$(d)): $(OBJS_$(d)) $(TCLIBS) + $(LINK) + +$(UNTS_$(d)): $(TOBJS_$(d)) $(LIBS_$(d)) + $(LINK) + +include share/pop.mk diff --git a/sys/cmd/cat/test.c b/sys/cmd/cat/test.c new file mode 100644 index 0000000..c1b850e --- /dev/null +++ b/sys/cmd/cat/test.c @@ -0,0 +1,8 @@ +#include <u.h> +#include <libn.h> + +error +main() +{ + return 0; +} |