/* ************************************************************************** */ /* */ /* ::: :::::::: */ /* minishell.h :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: narnaud +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/05/02 13:50:44 by narnaud #+# #+# */ /* Updated: 2022/05/02 16:45:28 by narnaud ### ########.fr */ /* */ /* ************************************************************************** */ #ifndef MINISHELL_H # define MINISHELL_H # define PIPE_MAX_SIZE 8192 # define PATHS_MAX_SIZE 126 # define PROMPT_PREFIX 0 # include "libft/libft.h" # include # include # include # include # include # include # include # include # include # include # include # include char **g_env; // ----------------------------------Piper.c typedef struct s_command { char **argv; char **envp; int argc; int fd[2]; char *heredoc; struct s_command *next; struct s_command *prev; } t_command; // ----------------------------------Parser.c 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 enum e_type { WORD, PIPE, OUT, ADD, IN, HD, } t_type; 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, int i); #endif