From ab400c0be5577cab2a66d242183887ebbd61717f Mon Sep 17 00:00:00 2001 From: Nicholas Date: Wed, 17 Nov 2021 08:22:03 -0800 Subject: checkin --- src/cmd/core/cat.c | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 src/cmd/core/cat.c (limited to 'src/cmd/core/cat.c') diff --git a/src/cmd/core/cat.c b/src/cmd/core/cat.c new file mode 100644 index 0000000..4f0929c --- /dev/null +++ b/src/cmd/core/cat.c @@ -0,0 +1,52 @@ +#include +#include +#include + +static void +usage(void) +{ + fmt·panic("usage: %s [-u] [file ...]\n", argv0); + exits("usage"); +} + +static void +cat(int fd, char *s) +{ + long n; + char buf[8192]; + + while((n=read(fd, buf, sizeof(buf)))>0){ + if(write(1, buf, n) != n) + fmt·panic("write error copying %s: %r", s); + } + + if(n<0) + fmt·panic("error reading %s: %r", s); +} + +int +main(int argc, char *argv[]) +{ + int fd; + + ARGBEGIN{ + case 'u': /* ignore */ break; + default: + usage(); + }ARGEND; + + if(!argc){ + cat(0, ""); + exits(0); + } + + while(argc-- > 0){ + if((fd = open(*argv, O_RDONLY))<0) + fmt·panic("can't open %s: %r", *argv); + + cat(fd, *argv); + close(fd); + + argv++; + } +} -- cgit v1.2.1