/* ************************************************************************** */ /* */ /* ::: :::::::: */ /* minishell.h :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: narnaud +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/05/02 13:50:44 by narnaud #+# #+# */ /* Updated: 2022/05/03 11:39:52 by narnaud ### ########.fr */ /* */ /* ************************************************************************** */ #ifndef MINISHELL_H # define MINISHELL_H # define PIPE_MAX_SIZE 8192 # define PATHS_MAX_SIZE 126 # define PROMPT_PREFIX 0 # define DEBUG 1 # include "libft/libft.h" # include # include # include # include # include # include # include # include # include # include # include # include char **g_env; // ----------------------------------Utils.c void halt(int ret_code); int is_empty(char *line); int init_file(char *filename, int mode); // ----------------------------------Piper.c typedef struct s_env { int null; } t_env; typedef struct s_command { char **argv; char **envp; int argc; int fd[2]; int input; int output; char *heredoc; struct s_command *next; struct s_command *prev; } t_command; // ----------------------------------Parser.c typedef enum e_type { WORD, PIPE, OUT, ADD, IN, HD, } t_type; typedef struct s_token { char *value; t_type type; struct s_token *next; } t_token; size_t count_arguments(t_token *tok); void update_redir(t_command *cmd, t_token *tok); // ----------------------------------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 n_elem; } t_lexer; int create_token(t_lexer *lex, char str[]); int check_register(t_lexer *lex, char **line, char *tmp); int replace_var(char **line, char *tmp, int tmp_i); int check_state(t_lexer *lex, char **line); #endif