diff options
Diffstat (limited to 'cat.c')
-rw-r--r-- | cat.c | 35 |
1 files changed, 22 insertions, 13 deletions
@@ -1,17 +1,32 @@ +#include "types.h" +#include "stat.h" #include "user.h" char buf[513]; -int -main(int argc, char *argv[]) +void +rfile(int fd) { - int fd, i, cc; + int cc; - if(argc < 2){ - puts("Usage: cat files...\n"); + while((cc = read(fd, buf, sizeof(buf) - 1)) > 0){ + buf[cc] = '\0'; + puts(buf); + } + if(cc < 0){ + puts("cat: read error\n"); exit(); } +} + +int +main(int argc, char *argv[]) +{ + int fd, i; + if (argc <= 1) { + rfile(0); + } else { for(i = 1; i < argc; i++){ fd = open(argv[i], 0); if(fd < 0){ @@ -20,16 +35,10 @@ main(int argc, char *argv[]) puts("\n"); exit(); } - while((cc = read(fd, buf, sizeof(buf) - 1)) > 0){ - buf[cc] = '\0'; - puts(buf); - } - if(cc < 0){ - puts("cat: read error\n"); - exit(); - } + rfile(fd); close(fd); } + } exit(); } |