xref: /xv6-public/cat.c (revision 1b789e1d)
18b58e810Skaashoek #include "types.h"
28b58e810Skaashoek #include "stat.h"
30e84a0ecSrtm #include "user.h"
40e84a0ecSrtm 
5*1b789e1dSrsc char buf[512];
60e84a0ecSrtm 
78b58e810Skaashoek void
88b58e810Skaashoek rfile(int fd)
90e84a0ecSrtm {
10*1b789e1dSrsc   int n;
110e84a0ecSrtm 
12*1b789e1dSrsc   while((n = read(fd, buf, sizeof(buf))) > 0)
13*1b789e1dSrsc     write(1, buf, n);
14*1b789e1dSrsc   if(n < 0){
15*1b789e1dSrsc     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) {
268b58e810Skaashoek     rfile(0);
27*1b789e1dSrsc     exit();
28*1b789e1dSrsc   }
29*1b789e1dSrsc 
308b58e810Skaashoek   for(i = 1; i < argc; i++){
31*1b789e1dSrsc     if((fd = open(argv[i], 0)) < 0){
32*1b789e1dSrsc       printf(1, "cat: cannot open %s\n", argv[i]);
338b58e810Skaashoek       exit();
348b58e810Skaashoek     }
358b58e810Skaashoek     rfile(fd);
360e84a0ecSrtm     close(fd);
370e84a0ecSrtm   }
380e84a0ecSrtm   exit();
390e84a0ecSrtm }
40