xref: /xv6-public/cat.c (revision 3341e30f)
18b58e810Skaashoek #include "types.h"
28b58e810Skaashoek #include "stat.h"
30e84a0ecSrtm #include "user.h"
40e84a0ecSrtm 
51b789e1dSrsc char buf[512];
60e84a0ecSrtm 
78b58e810Skaashoek void
8*3341e30fSrsc cat(int fd)
90e84a0ecSrtm {
101b789e1dSrsc   int n;
110e84a0ecSrtm 
121b789e1dSrsc   while((n = read(fd, buf, sizeof(buf))) > 0)
131b789e1dSrsc     write(1, buf, n);
141b789e1dSrsc   if(n < 0){
151b789e1dSrsc     printf(1, "cat: read error\n");
160e84a0ecSrtm     exit();
170e84a0ecSrtm   }
188b58e810Skaashoek }
198b58e810Skaashoek 
208b58e810Skaashoek int
218b58e810Skaashoek main(int argc, char *argv[])
228b58e810Skaashoek {
238b58e810Skaashoek   int fd, i;
248b58e810Skaashoek 
258b58e810Skaashoek   if(argc <= 1) {
26*3341e30fSrsc     cat(0);
271b789e1dSrsc     exit();
281b789e1dSrsc   }
291b789e1dSrsc 
308b58e810Skaashoek   for(i = 1; i < argc; i++){
311b789e1dSrsc     if((fd = open(argv[i], 0)) < 0){
321b789e1dSrsc       printf(1, "cat: cannot open %s\n", argv[i]);
338b58e810Skaashoek       exit();
348b58e810Skaashoek     }
35*3341e30fSrsc     cat(fd);
360e84a0ecSrtm     close(fd);
370e84a0ecSrtm   }
380e84a0ecSrtm   exit();
390e84a0ecSrtm }
40