From 6c9563e91eb7aa738aa2656d141ce56ef66b50cf Mon Sep 17 00:00:00 2001 From: Nicholas Noll Date: Sat, 16 May 2020 10:39:05 -0700 Subject: feat: added directory for command line tools --- sys/cmd/cat/cat.c | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 sys/cmd/cat/cat.c (limited to 'sys/cmd/cat/cat.c') 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 +#include + +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, ""); + } 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); +} -- cgit v1.2.1