#include "libftx/libftx.h" #include "minishell.h" #include "utils/utils.h" static int ft_quote_verif(const char *str) { if (ft_is_in_quote(str, ft_strlen(str))) { ft_eprintf("minishell: Quote is note closed"); return (1); } else return (0); } static int ft_pipe_is_alone(const char *str) { size_t i; int check; check = 0; i = 0; while (str[i] != '\0') { while (str[i] == ' ') i++; if (str[i] == '\0') break ; if (str[i] != '|') check = 1; else { if (check == 0) { ft_eprintf("minishell: Pipe must be followed and "); ft_eprintf("preced by a command or redirection\n"); return (1); } check = 0; } i++; } if (check == 0) { ft_eprintf("minishell: Pipe must be followed and "); ft_eprintf("preced by a command or redirection\n"); } return (check == 0); } static int ft_special_char_dub(const char *str) { size_t i; size_t y; i = 0; while (str[i] != '\0') { while (ft_is_in_quote(str, i)) i++; if (ft_is_in("|<>", str[i])) { y = 0; while (str[i] == str[i + y]) y++; if ((y > 2 && (str[i] == '>' || str[i] == '<')) || (y > 1 && str[i] == '|')) { ft_eprintf("minishell: to many %c in a row", str, str[i]); return (1); } i = i + y; } else i++; } return (0); } int ft_empty_verif(const char *str) { size_t i; i = 0; while (str[i] == ' ') i++; if (str[i] == '\0') ft_eprintf("minishell: %s: command not found \n", str); return (str[i] == '\0'); } int ft_syntatic_verif(const char *str) { return (ft_quote_verif(str) || ft_empty_verif(str) || ft_pipe_is_alone(str) || ft_special_char_dub(str)); }