#include #include static void usage(void) { fmt·panic("usage: %s [-u] [file ...]\n", argv0); exits("usage"); } static void cat(int fd, char *s) { intptr nr, nw; char buf[8192]; while(!(sys·read(fd, buf, sizeof(buf), &nr))){ if(sys·write(1, buf, nr, &nw) || nr != nw) fmt·panic("write error copying %s: %r", s); } if(nr<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(sys·open(*argv, sys·ORead, 0, &fd)) fmt·panic("can't open %s: %r", *argv); cat(fd, *argv); sys·close(fd); argv++; } return 0; }