user/cat.c
43 lines
1#include "kernel/types.h"2#include "kernel/fcntl.h"3#include "user/user.h"45char buf[512];67void8cat(int fd)9{10 int n;1112 while((n = read(fd, buf, sizeof(buf))) > 0) {13 if (write(1, buf, n) != n) {14 fprintf(2, "cat: write error\n");15 exit(1);16 }17 }18 if(n < 0){19 fprintf(2, "cat: read error\n");20 exit(1);21 }22}2324int25main(int argc, char *argv[])26{27 int fd, i;2829 if(argc <= 1){30 cat(0);31 exit(0);32 }3334 for(i = 1; i < argc; i++){35 if((fd = open(argv[i], O_RDONLY)) < 0){36 fprintf(2, "cat: cannot open %s\n", argv[i]);37 exit(1);38 }39 cat(fd);40 close(fd);41 }42 exit(0);43}44