1*8b58e810Skaashoek #include "types.h" 2*8b58e810Skaashoek #include "stat.h" 30e84a0ecSrtm #include "user.h" 40e84a0ecSrtm 50e84a0ecSrtm char buf[513]; 60e84a0ecSrtm 7*8b58e810Skaashoek void 8*8b58e810Skaashoek rfile(int fd) 90e84a0ecSrtm { 10*8b58e810Skaashoek int cc; 110e84a0ecSrtm 120e84a0ecSrtm while((cc = read(fd, buf, sizeof(buf) - 1)) > 0){ 130e84a0ecSrtm buf[cc] = '\0'; 140e84a0ecSrtm puts(buf); 150e84a0ecSrtm } 160e84a0ecSrtm if(cc < 0){ 170e84a0ecSrtm puts("cat: read error\n"); 180e84a0ecSrtm exit(); 190e84a0ecSrtm } 20*8b58e810Skaashoek } 21*8b58e810Skaashoek 22*8b58e810Skaashoek int 23*8b58e810Skaashoek main(int argc, char *argv[]) 24*8b58e810Skaashoek { 25*8b58e810Skaashoek int fd, i; 26*8b58e810Skaashoek 27*8b58e810Skaashoek if (argc <= 1) { 28*8b58e810Skaashoek rfile(0); 29*8b58e810Skaashoek } else { 30*8b58e810Skaashoek for(i = 1; i < argc; i++){ 31*8b58e810Skaashoek fd = open(argv[i], 0); 32*8b58e810Skaashoek if(fd < 0){ 33*8b58e810Skaashoek puts("cat: cannot open "); 34*8b58e810Skaashoek puts(argv[i]); 35*8b58e810Skaashoek puts("\n"); 36*8b58e810Skaashoek exit(); 37*8b58e810Skaashoek } 38*8b58e810Skaashoek rfile(fd); 390e84a0ecSrtm close(fd); 400e84a0ecSrtm } 41*8b58e810Skaashoek } 420e84a0ecSrtm 430e84a0ecSrtm exit(); 440e84a0ecSrtm } 45