aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/core/cat.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/cmd/core/cat.c')
-rw-r--r--src/cmd/core/cat.c14
1 files changed, 8 insertions, 6 deletions
diff --git a/src/cmd/core/cat.c b/src/cmd/core/cat.c
index e9b770b..aeed1be 100644
--- a/src/cmd/core/cat.c
+++ b/src/cmd/core/cat.c
@@ -11,15 +11,15 @@ usage(void)
static void
cat(int fd, char *s)
{
- long n;
+ intptr nr, nw;
char buf[8192];
- while((n=read(fd, buf, sizeof(buf)))>0){
- if(write(1, buf, n) != n)
+ while(!(sys·read(fd, buf, sizeof(buf), &nr))){
+ if(sys·write(1, buf, nr, &nw) || nr != nw)
fmt·panic("write error copying %s: %r", s);
}
- if(n<0)
+ if(nr<0)
fmt·panic("error reading %s: %r", s);
}
@@ -40,12 +40,14 @@ main(int argc, char *argv[])
}
while(argc-- > 0){
- if((fd = open(*argv, O_RDONLY))<0)
+ if(sys·open(*argv, sys·ORead, 0, &fd))
fmt·panic("can't open %s: %r", *argv);
cat(fd, *argv);
- close(fd);
+ sys·close(fd);
argv++;
}
+
+ return 0;
}