Advertisement
villers

Untitled

Oct 22nd, 2014
166
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.03 KB | None | 0 0
  1. #include <errno.h>
  2. #include <sys/types.h>
  3. #include <sys/stat.h>
  4. #include <fcntl.h>
  5. #include "../include/my.h"
  6.  
  7. #define BUF_SIZE 4096
  8.  
  9. void    err(char *argv, int who)
  10. {
  11.   my_putstr("cat : ");
  12.   my_putstr(argv);
  13.   if (who == 1)
  14.     my_putstr(": No such file or directory\n");
  15.   else if (who == 2)
  16.     my_putstr(": Is a directory\n");
  17.   else if (who == 3)
  18.     my_putstr(": Permission denied\n");
  19. }
  20.  
  21. int my_cat(int fd, char *argv)
  22. {
  23.   char  buf[BUF_SIZE + 1];
  24.   int   ret;
  25.  
  26.   while (ret = read(fd, buf, BUF_SIZE))
  27.     {
  28.       if (ret == -1)
  29.     {
  30.       err(argv, 2);
  31.       return (1);
  32.     }
  33.       buf[ret] = '\0';
  34.       my_putstr(buf);
  35.     }
  36.   return (0);
  37. }
  38.  
  39. int main(int argc, char **argv)
  40. {
  41.   int   i;
  42.   int   fd;
  43.  
  44.   i = 1;
  45.   if (argc != 1)
  46.     {
  47.       while (i < argc)
  48.     {
  49.       fd = open(argv[i], O_RDONLY);
  50.       if (errno == EACCES)
  51.         err(argv[i], 3);
  52.       else if (errno == ENOENT)
  53.         err(argv[i], 1);
  54.       else
  55.         my_cat(fd, argv[i]);
  56.       close(fd);
  57.       i = i  + 1;
  58.     }
  59.     }
  60.   else
  61.     my_cat(0, "");
  62.   return (0);
  63. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement