diff --git a/Makefile b/Makefile index 1780521..ba5e415 100755 --- a/Makefile +++ b/Makefile @@ -1,10 +1,12 @@ NAME = minishell LIBFT = libft.a -SRCS = minishell.c lexer.c parser.c utils.c caller.c +SRCS = minishell.c lexer.c parser.c utils.c caller.c built-in.c env.c OBJS = ${SRCS:.c=.o} -READLINE_INC = ~/.brew/opt/readline/include -LIB = -L ~/.brew/lib -lreadline -L ~/.brew/lib -lhistory -L. -lft +//READLINE_INC = ~/.brew/opt/readline/include +//LIB = -L ~/.brew/lib -lreadline -L ~/.brew/lib -lhistory -L. -lft + +LIB = -lreadline -lhistory -L. -lft $(NAME): $(OBJS) gcc ${OBJS} ${LIB} -o ${NAME} @@ -16,7 +18,7 @@ $(LIBFT): all: $(LIBFT) $(NAME) %.o: %.c - gcc -Werror -Wextra -Wall -g -c $< -I ${READLINE_INC} #for rl_replace_line + gcc -Werror -Wextra -Wall -g -c $< # -I ${READLINE_INC} #for rl_replace_line clean: rm -rf ${OBJS} diff --git a/old_built-in.c b/built-in.c similarity index 78% rename from old_built-in.c rename to built-in.c index 8ea252b..37f19d1 100755 --- a/old_built-in.c +++ b/built-in.c @@ -6,13 +6,13 @@ /* By: narnaud +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/01/06 09:02:57 by narnaud #+# #+# */ -/* Updated: 2022/04/14 07:45:37 by narnaud ### ########.fr */ +/* Updated: 2022/05/03 18:18:23 by narnaud ### ########.fr */ /* */ /* ************************************************************************** */ #include "minishell.h" -int ft_echo(char *argv[], int output_fd) +int ft_echo(char *argv[]) { int no_nl; @@ -25,36 +25,32 @@ int ft_echo(char *argv[], int output_fd) no_nl = 1; while (*argv) { - ft_putstr_fd(*argv, output_fd); + ft_putstr_fd(*argv, 1); argv++; if (*argv) - ft_putstr_fd(" ", output_fd); + ft_putstr_fd(" ", 1); } } if (!no_nl) - ft_putstr_fd("\n", output_fd); + ft_putstr_fd("\n", 1); return (0); } -int ft_pwd(char **argv, int input_fd, int output_fd) +int ft_pwd(char **argv) { char *dir; (void)argv; - (void)input_fd; dir = ft_calloc(PATHS_MAX_SIZE, sizeof(char)); getcwd(dir, PATHS_MAX_SIZE); - ft_putstr_fd(dir, output_fd); - ft_putstr_fd("\n", output_fd); + ft_putstr_fd(dir, 1); + ft_putstr_fd("\n", 1); free(dir); return (0); } -int ft_cd(char **argv, int input_fd, int output_fd) +int ft_cd(char **argv) { - (void)output_fd; - (void)input_fd; - if (argv[1]) { if (access(argv[1], X_OK)) diff --git a/caller.c b/caller.c index 564fb16..f3c7eef 100644 --- a/caller.c +++ b/caller.c @@ -6,26 +6,26 @@ /* By: narnaud +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/05/03 11:48:16 by narnaud #+# #+# */ -/* Updated: 2022/05/03 13:57:06 by narnaud ### ########.fr */ +/* Updated: 2022/05/03 20:29:01 by narnaud ### ########.fr */ /* */ /* ************************************************************************** */ #include "minishell.h" -/* -int command_call(char *argv[], int input_fd, int output_fd) + +int command_call(char *argv[]) { if (ft_strncmp(argv[0], "echo", 4) == 0) - return (ft_echo(argv, output_fd)); + return (ft_echo(argv)); else if (ft_strncmp(argv[0], "pwd", 3) == 0) - return (ft_pwd(argv, input_fd, output_fd)); + return (ft_pwd(argv)); else if (ft_strncmp(argv[0], "cd", 2) == 0) - return (ft_cd(argv, input_fd, output_fd)); + return (ft_cd(argv)); else if (ft_strncmp(argv[0], "export", 6) == 0) - return (ft_export(argv, input_fd, output_fd)); + return (ft_export(argv)); else if (ft_strncmp(argv[0], "unset", 5) == 0) - return (ft_unset(argv, input_fd, output_fd)); + return (ft_unset(argv)); else if (ft_strncmp(argv[0], "env", 3) == 0) - return (ft_env(argv, input_fd, output_fd)); + return (ft_env(argv)); else if (ft_strncmp(argv[0], "exit", 4) == 0) return (close_minishell(0)); else @@ -34,14 +34,13 @@ int command_call(char *argv[], int input_fd, int output_fd) return (-1); } } -*/ + void exe(char *argv[], char *const envp[]) { char **path_dirs; char *path; size_t path_length; - execve(argv[0], argv, envp); path_dirs = ft_split(getenv("PATH"), ':'); while (path_dirs) diff --git a/old_env.c b/env.c similarity index 83% rename from old_env.c rename to env.c index 2e91c15..8a07016 100755 --- a/old_env.c +++ b/env.c @@ -6,16 +6,14 @@ /* By: narnaud +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/02/16 09:41:29 by narnaud #+# #+# */ -/* Updated: 2022/04/14 07:45:21 by narnaud ### ########.fr */ +/* Updated: 2022/05/03 18:17:46 by narnaud ### ########.fr */ /* */ /* ************************************************************************** */ #include "minishell.h" -int ft_unset(char **argv, int input_fd, int output_fd) +int ft_unset(char **argv) { - (void)output_fd; - (void)input_fd; if (!argv[1]) { //read(input_fd, PIPE_MAX_SIZE); @@ -24,10 +22,8 @@ int ft_unset(char **argv, int input_fd, int output_fd) return (0); } -int ft_env(char **argv, int input_fd, int output_fd) +int ft_env(char **argv) { - (void)output_fd; - (void)input_fd; (void)argv; int i; @@ -55,14 +51,12 @@ int is_valid_identifier(char *ident) return (0); } -int ft_export(char **argv, int input_fd, int output_fd) +int ft_export(char **argv) { char **new; char **env; int i; - (void)output_fd; - (void)input_fd; i = 0; new = ft_split(argv[1], '='); if (!is_valid_identifier(new[0])) diff --git a/minishell.c b/minishell.c index 172de07..f629fda 100644 --- a/minishell.c +++ b/minishell.c @@ -6,13 +6,14 @@ /* By: narnaud +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/05/02 12:14:09 by narnaud #+# #+# */ -/* Updated: 2022/05/03 16:25:14 by narnaud ### ########.fr */ +/* Updated: 2022/05/03 20:31:44 by narnaud ### ########.fr */ /* */ /* ************************************************************************** */ # include "minishell.h" -// Note: Pipes are broken +char **g_env; + int caller(t_command *cmd) { int cmd_ret; @@ -20,7 +21,6 @@ int caller(t_command *cmd) int pip[2]; int status; - if (cmd->fd[1] == 0 && cmd->next && cmd->next->fd[0] == 0) { pipe(pip); @@ -30,8 +30,8 @@ int caller(t_command *cmd) pid = fork(); if (!pid) { - cmd_ret = 1; //command_call(command->argv); - if (cmd_ret == 1) + cmd_ret = command_call(cmd->argv); + if (cmd_ret == -1) { if (cmd->fd[0]) dup2(cmd->fd[0], STDIN_FILENO); @@ -48,7 +48,6 @@ int caller(t_command *cmd) waitpid(pid, &status, 0); if (cmd->fd[0]) close(cmd->fd[0]); - return (cmd_ret); } @@ -132,7 +131,7 @@ int main(int argc, char **argv, char**envp) { if (argc < 2) (void)argv; - (void)envp; + g_env = envp; t_env env; env.null = 0; while (1) diff --git a/minishell.h b/minishell.h index dbf8ec4..9297ae6 100644 --- a/minishell.h +++ b/minishell.h @@ -6,7 +6,7 @@ /* By: narnaud +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/05/02 13:50:44 by narnaud #+# #+# */ -/* Updated: 2022/05/03 15:40:23 by narnaud ### ########.fr */ +/* Updated: 2022/05/03 20:22:29 by narnaud ### ########.fr */ /* */ /* ************************************************************************** */ @@ -31,7 +31,19 @@ # include # include -char **g_env; +extern char **g_env; + +// ----------------------------------Utils.c +int ft_echo(char **argv); +int ft_pwd(char **argv); +int ft_cd(char **argv); +int close_minishell(int exit_code); + +// ----------------------------------Utils.c +int ft_unset(char **argv); +int ft_env(char **argv); +int is_valid_identifier(char *ident); +int ft_export(char **argv); // ----------------------------------Utils.c @@ -57,6 +69,7 @@ typedef struct s_command } t_command; void exe(char *argv[], char *const envp[]); +int command_call(char *argv[]); // ----------------------------------Parser.c