Blame


1 bc7cb1a1 2003-11-23 devnull #include <u.h>
2 bc7cb1a1 2003-11-23 devnull #include <libc.h>
3 bc7cb1a1 2003-11-23 devnull
4 bc7cb1a1 2003-11-23 devnull void
5 bc7cb1a1 2003-11-23 devnull cat(int f, char *s)
6 bc7cb1a1 2003-11-23 devnull {
7 bc7cb1a1 2003-11-23 devnull char buf[8192];
8 bc7cb1a1 2003-11-23 devnull long n;
9 bc7cb1a1 2003-11-23 devnull
10 bc7cb1a1 2003-11-23 devnull while((n=read(f, buf, (long)sizeof buf))>0)
11 bc7cb1a1 2003-11-23 devnull if(write(1, buf, n)!=n)
12 bc7cb1a1 2003-11-23 devnull sysfatal("write error copying %s: %r", s);
13 bc7cb1a1 2003-11-23 devnull if(n < 0)
14 bc7cb1a1 2003-11-23 devnull sysfatal("error reading %s: %r", s);
15 bc7cb1a1 2003-11-23 devnull }
16 bc7cb1a1 2003-11-23 devnull
17 bc7cb1a1 2003-11-23 devnull void
18 bc7cb1a1 2003-11-23 devnull main(int argc, char *argv[])
19 bc7cb1a1 2003-11-23 devnull {
20 bc7cb1a1 2003-11-23 devnull int f, i;
21 bc7cb1a1 2003-11-23 devnull
22 bc7cb1a1 2003-11-23 devnull argv0 = "cat";
23 bc7cb1a1 2003-11-23 devnull if(argc == 1)
24 bc7cb1a1 2003-11-23 devnull cat(0, "<stdin>");
25 bc7cb1a1 2003-11-23 devnull else for(i=1; i<argc; i++){
26 bc7cb1a1 2003-11-23 devnull f = open(argv[i], OREAD);
27 bc7cb1a1 2003-11-23 devnull if(f < 0)
28 bc7cb1a1 2003-11-23 devnull sysfatal("can't open %s: %r", argv[i]);
29 bc7cb1a1 2003-11-23 devnull else{
30 bc7cb1a1 2003-11-23 devnull cat(f, argv[i]);
31 bc7cb1a1 2003-11-23 devnull close(f);
32 bc7cb1a1 2003-11-23 devnull }
33 bc7cb1a1 2003-11-23 devnull }
34 bc7cb1a1 2003-11-23 devnull exits(0);
35 bc7cb1a1 2003-11-23 devnull }