#include #include #include #include #include #include #include #include "panic.h" void cat(int fd, char * name) { char buffer[4096]; ssize_t length; while (0 < (length=read(fd, buffer, sizeof(buffer)))) if (length != write(1, buffer, length)) panic("write: %s: %s", name, strerror(errno)); if (0 > length) panic("read: %s: %s", name, strerror(errno)); } int main(int argc, char * argv[]) { int i; int fd; if (1 == argc) cat(0, ""); else for (i = 1; i < argc; ++i) { fd = open(argv[i], O_RDONLY); if (0 > fd) panic("open: %s: %s", argv[i], strerror(errno)); else { cat(fd, argv[i]); close(fd); } } }