diff --git a/Makefile b/Makefile index 7779319..ecb51c8 100755 --- a/Makefile +++ b/Makefile @@ -6,7 +6,7 @@ # By: marde-vr +#+ +:+ +#+ # # +#+#+#+#+#+ +#+ # # Created: 2023/07/28 00:35:01 by tomoron #+# #+# # -# Updated: 2024/02/16 16:28:16 by tomoron ### ########.fr # +# Updated: 2024/02/16 21:24:47 by tomoron ### ########.fr # # # # **************************************************************************** # @@ -22,10 +22,13 @@ SRCS = main.c\ parsing.c\ debug.c\ env_to_char_tab.c\ - parsing_var.c + parsing_var.c\ + minishellrc.c OBJS = $(SRCS:.c=.o) +OBJS_DIR = objs + FLAGS = -Wall -Wextra -Werror -g LIBFT = libft/libft.a @@ -35,6 +38,7 @@ NAME = minishell all: $(NAME) $(NAME) : $(LIBFT) $(OBJS) + mkdir $(OBJS_DIR) $(CC) $(FLAGS) $(OBJS) $(LIBFT) -lreadline -o $(NAME) $(LIBFT): diff --git a/main.c b/main.c index 24d6002..d80ef59 100755 --- a/main.c +++ b/main.c @@ -6,13 +6,17 @@ /* By: marde-vr +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/02/02 21:59:20 by tomoron #+# #+# */ +<<<<<<< HEAD /* Updated: 2024/02/16 16:37:13 by tomoron ### ########.fr */ +======= +/* Updated: 2024/02/16 18:21:27 by marde-vr ### ########.fr */ +>>>>>>> ad1de58fb2aacb8a3b1b7ef5d74fc6d87f4550b2 /* */ /* ************************************************************************** */ #include "minishell.h" -int g_return_code = 0; +int g_return_code = 0; char *get_prompt(void) { @@ -71,6 +75,8 @@ int main(int argc, char **argv, char **envp) (void)argc; (void)argv; env = get_env(envp); + if (env) + handle_minishellrc(env); while (env && command) { prompt = get_prompt(); diff --git a/minishell.h b/minishell.h index d8a93ae..49c8b15 100755 --- a/minishell.h +++ b/minishell.h @@ -6,18 +6,20 @@ /* By: marde-vr +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/02/04 17:31:38 by tomoron #+# #+# */ -/* Updated: 2024/02/16 16:32:33 by tomoron ### ########.fr */ +/* Updated: 2024/02/16 21:25:14 by tomoron ### ########.fr */ /* */ /* ************************************************************************** */ #ifndef MINISHELL_H # define MINISHELL_H + # include # include # include # include //debug # include # include "libft/libft.h" +# include "fcntl.h" typedef enum e_token_type { @@ -63,5 +65,6 @@ int is_cmd_char(char c); void print_parsed_cmd(t_cmd *cmd);//debug void ft_exit(t_cmd *cmd, t_env *env, int error_code); char **env_to_char_tab(t_env *env); +void handle_minishellrc(t_env *env); #endif diff --git a/minishellrc.c b/minishellrc.c new file mode 100644 index 0000000..ed87a00 --- /dev/null +++ b/minishellrc.c @@ -0,0 +1,46 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* minishellrc.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: marde-vr +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2024/02/16 17:40:16 by marde-vr #+# #+# */ +/* Updated: 2024/02/16 18:25:56 by marde-vr ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "minishell.h" + +void handle_minishellrc(t_env *env) +{ + char *home; + char *rc_path; + int fd; + char *line; + t_cmd *parsed_cmd; + + home = ft_get_env(env, "HOME"); + rc_path = ft_strjoin(home, "/.minishellrc"); + if (access(rc_path, R_OK) != -1) + { + fd = open(rc_path, O_RDONLY); + if (fd == -1) + { + free(env); + perror("open"); + return ; + } + line = get_next_line(fd); + while (line) + { + parsed_cmd = parse_command(line, env); + exec_command(parsed_cmd, env); + free(parsed_cmd); + free(line); + line = get_next_line(fd); + } + close(fd); + } + free(rc_path); +}