Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <errno.h>
- #include <sys/types.h>
- #include <sys/stat.h>
- #include <fcntl.h>
- #include "../include/my.h"
- #define BUF_SIZE 4096
- void err(char *argv, int who)
- {
- my_putstr("cat : ");
- my_putstr(argv);
- if (who == 1)
- my_putstr(": No such file or directory\n");
- else if (who == 2)
- my_putstr(": Is a directory\n");
- else if (who == 3)
- my_putstr(": Permission denied\n");
- }
- int my_cat(int fd, char *argv)
- {
- char buf[BUF_SIZE + 1];
- int ret;
- while (ret = read(fd, buf, BUF_SIZE))
- {
- if (ret == -1)
- {
- err(argv, 2);
- return (1);
- }
- buf[ret] = '\0';
- my_putstr(buf);
- }
- return (0);
- }
- int main(int argc, char **argv)
- {
- int i;
- int fd;
- i = 1;
- if (argc != 1)
- {
- while (i < argc)
- {
- fd = open(argv[i], O_RDONLY);
- if (errno == EACCES)
- err(argv[i], 3);
- else if (errno == ENOENT)
- err(argv[i], 1);
- else
- my_cat(fd, argv[i]);
- close(fd);
- i = i + 1;
- }
- }
- else
- my_cat(0, "");
- return (0);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement