/* ************************************************************************** */ /* */ /* ::: :::::::: */ /* echo.c :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: erey-bet +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/02/17 13:09:08 by erey-bet #+# #+# */ /* Updated: 2023/03/30 13:55:40 by erey-bet ### ########.fr */ /* */ /* ************************************************************************** */ #include "./builtins_private.h" int is_space(char c) { return (c == ' ' || c == '\f' || c == '\v' || c == '\t' || c == '\r' || c == '\n'); } int check_argument(char *str, int *check_backslash_n) { int i; i = -1; while (str[++i]) if (str[i] != '-' && str[i] != 'n') return (1); if (ft_strnstr(str, "n", ft_strlen(str)) && str[0] == '-') *check_backslash_n = 1; else return (1); return (0); } int echo(int fd, char **strs) { int check_backslash_n; int check_start_write; int i; check_backslash_n = 0; check_start_write = 0; i = -1; while (strs[++i]) { while (is_space(*strs[i])) strs[i]++; if (check_start_write == 1 || check_argument(strs[i], &check_backslash_n)) { check_start_write = 1; ft_putstr_fd(strs[i], fd); if (strs[i + 1] != NULL) write(fd, " ", 1); } } if (!check_backslash_n) write(fd, "\n", 1); return (0); }