cat.c 532 B

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