From e3d93a1262762992a3a53858ac6d9b40a623828b Mon Sep 17 00:00:00 2001 From: mdev9 Date: Mon, 4 Mar 2024 13:04:33 +0100 Subject: [PATCH] fixed echo and some return code issues from redirections --- srcs/echo.c | 14 +++++++------- srcs/exec.c | 5 +++-- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/srcs/echo.c b/srcs/echo.c index 06de48f..1bf86b3 100755 --- a/srcs/echo.c +++ b/srcs/echo.c @@ -6,7 +6,7 @@ /* By: marde-vr +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/02/07 15:30:37 by tomoron #+# #+# */ -/* Updated: 2024/03/04 11:17:02 by marde-vr ### ########.fr */ +/* Updated: 2024/03/04 13:02:28 by marde-vr ### ########.fr */ /* */ /* ************************************************************************** */ @@ -16,8 +16,10 @@ int echo(t_cmd *args) { int put_nl; + int first; put_nl = 1; + first = 1; while (args && args->token && !strcmp(args->token, "-n")) { put_nl = 0; @@ -29,16 +31,14 @@ int echo(t_cmd *args) args = args->next; else { - ft_putstr_fd(args->token, STDOUT_FILENO); - if (args->next) - { - ft_printf_fd(2, "yes\n"); + if (!first) ft_putchar_fd(' ', STDOUT_FILENO); - } + ft_putstr_fd(args->token, STDOUT_FILENO); + first = 0; } args = args->next; } - if (put_nl) + if (put_nl && !first) ft_putchar_fd('\n', STDOUT_FILENO); return (0); } diff --git a/srcs/exec.c b/srcs/exec.c index d32b0fe..a82b20d 100755 --- a/srcs/exec.c +++ b/srcs/exec.c @@ -6,7 +6,7 @@ /* By: marde-vr +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/02/07 14:12:49 by tomoron #+# #+# */ -/* Updated: 2024/03/04 11:03:53 by marde-vr ### ########.fr */ +/* Updated: 2024/03/04 13:00:21 by marde-vr ### ########.fr */ /* */ /* ************************************************************************** */ @@ -375,7 +375,7 @@ void get_in_type(t_msh *msh, t_cmd *cmds) close(msh->in_fd); msh->in_fd = open(cur_cmd->next->token, O_RDONLY); //ft_printf_fd(2, "opened %s: %d\n", cur_cmd->next->token, msh->in_fd); - if (msh->in_fd == -1) + if (msh->in_fd == -1 && !g_return_code) { ft_printf_fd(2, "minishell: %s: ", cur_cmd->next->token); perror(""); @@ -440,6 +440,7 @@ void exec_command(t_msh *msh) ft_exit(msh, 1); while (i < cmd_count) { + g_return_code = 0; msh->fds[i] = ft_calloc(2, sizeof(int *)); if (!msh->fds[i]) ft_exit(msh, 1);