struct s_env *next;
} t_env;
-void getenvlst(t_env **env, char **en);
-void free_envlst(t_env **env);
-char *env_get(t_env *env, char *name);
-char **env_to_strlst(t_env *env);
+void free_env_node(t_env *node);
+void getenvlst(t_env **env, char **en);
+void free_envlst(t_env **env);
+char *env_get(t_env *env, char *name);
+char **env_to_strlst(t_env *env);
+void update_oldpwd(t_env **env);
+void update_pwd(t_env **env);
+int unset(char **av, t_env **env);
+int export(char **av, t_env **env, int f);
+int echo(char **av);
+int pwd(t_env *env);
+int cd(t_env **env, char **args);
+int ft_env(t_env *env);
+int builtin_exit(char **args, t_env **env);
+t_env *env_new(char *name);
+t_env *check_existing(t_env *env, char *av);
+int check_flag(int f);
+
- #endif
++#endif
int init(void);
int init_signal_handling(void);
-void repl(const char *prompt, t_env **env);
+void repl(const char *prompt, t_env **env, int *promptflag);
-t_list *parse(t_token *tokens);
-t_node *parse_cmd(t_token *tokens);
-t_redirection *collect_redirs(t_token **tokens);
+t_list *parse(t_token *tokens, t_env **env);
+t_node *parse_cmd(t_token *tokens, t_env **env);
+t_redirection *collect_redirs(t_token **tokens, t_env *env, t_list **cf);
void print_ast(t_node *ast);
+
int eval(t_node *node, t_env **env);
-char *get_cmd_path(char *cmd, t_env *env);
-int execute_cmd(t_cmd *cmd, t_env *env);
+char *get_cmd_path(char *cmd, t_env *env, int *return_code);
+int execute_cmd(t_cmd *cmd, t_env **env);
+char *format_string(char *str, t_env *env, int is_literal);
+void set_return_code(int return_code, t_env **env);
+int handle_redirections(t_redirection *redirs);
+void *error(int err_code, char *err_text, int exit_code,
+ int *ret_code);
+void command_not_found_error(char *cmd);
+char *read_heredoc(char *delimiter);
+int handle_input_redirection(t_redirection *redir);
+int handle_output_redirection(t_redirection *redir);
+int handle_redirections(t_redirection *redirs);
+int handle_pipe_parent(int p[2], t_node *node, t_env **env);
+int handle_pipe_child(int p[2], t_node *node, t_env **env,
+ int in_fd);
+int open_file(char *path, int flags, int mode);
+int eval_rec(t_node *node, t_env **env, int in_fd);
+int create_files(t_list *files);
+void q4fc(t_list **queue, t_redirection *redir);
+void i_love_the_norme(t_token **cur, t_token **tokens);
+
+typedef struct s_minidata
+{
+ t_env *env;
+ t_list **create_files;
+} t_minidata;
+
#endif