/* ************************************************************************** */ /* */ /* ::: :::::::: */ /* minishell.h :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: mea +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/05/02 13:50:44 by narnaud #+# #+# */ /* Updated: 2022/05/09 09:02:20 by narnaud ### ########.fr */ /* */ /* ************************************************************************** */ #ifndef MINISHELL_H # define MINISHELL_H # define ENVP_MAX_SIZE 1024 # define STR_MAX_SIZE 1024 # define PATHS_MAX_SIZE 126 # include "libft/libft.h" # include # include # include # include # include # include # include # include # include # include # include # include typedef struct s_command { char **argv; int argc; int fd[2]; struct s_command *next; struct s_command *prev; } t_command; typedef struct s_datas { char **envp; int exit_code; } t_datas; // ----------------------------------Utils.c int is_empty(char *line); void handle_status(t_datas *datas, int status); void nothing(int sig_num); void sigs_handler(int sig_num); void halt(t_datas *datas, int ret_code); // ----------------------------------Utils_2.c int file_error(char *cmd, char *file, char *msg); int replace_var(t_datas *datas, char **line, char *tmp, int tmp_i); char *expend_str(t_datas *datas, char *line); // ----------------------------------Builtins.c int ft_echo(t_command *cmd); int ft_pwd(t_command *cmd); int ft_cd(t_command *cmd); int ft_exit(t_datas *datas, t_command *cmd); // ----------------------------------Env.c int ft_unset(t_datas *datas, t_command *cmd); int ft_env(t_datas *datas, t_command *cmd); int ft_export(t_datas *datas, t_command *cmd); // ----------------------------------Caller.c int is_builtin(char *cmd); int builtin_call(t_datas *datas, t_command *cmd); int piper(t_datas *datas, t_command *cmd); // ----------------------------------Parser.c typedef enum e_type { WORD, OUT, ADD, IN, HD, PIPE, AND, OR, } t_type; typedef struct s_token { char *value; t_type type; struct s_token *next; } t_token; t_command *parser(t_datas *datas, t_token *tok,t_command *prev); // ----------------------------------Lexer.c typedef enum e_state { OLD_ST, ROOT_ST, S_QUOTE_ST, D_QUOTE_ST, } t_state; typedef struct s_lex { t_state state; t_type type; t_type next_type; t_token *tokens; int deep; int n_elem; } t_lexer; t_token *lexer(t_datas *datas, char *line); #endif