This commit is contained in:
whaffman 2025-02-26 17:44:59 +01:00
parent abb2e8563a
commit 23e987b5bf
6 changed files with 35 additions and 8 deletions

View File

@ -6,7 +6,7 @@
/* By: qmennen <qmennen@student.codam.nl> +#+ */
/* +#+ */
/* Created: 2025/02/05 12:36:08 by whaffman #+# #+# */
/* Updated: 2025/02/26 16:19:13 by whaffman ######## odam.nl */
/* Updated: 2025/02/26 17:26:27 by whaffman ######## odam.nl */
/* */
/* ************************************************************************** */
@ -77,6 +77,7 @@ typedef struct s_minishell
t_list *tokens;
t_list *commands;
t_list *freelist;
int exit_status;
} t_minishell;
typedef int (*t_builtin_fn)(t_minishell *, t_command *);

View File

@ -6,7 +6,7 @@
/* By: willem <willem@student.codam.nl> +#+ */
/* +#+ */
/* Created: 2025/02/12 21:25:02 by willem #+# #+# */
/* Updated: 2025/02/26 16:10:39 by whaffman ######## odam.nl */
/* Updated: 2025/02/26 17:42:46 by whaffman ######## odam.nl */
/* */
/* ************************************************************************** */
@ -31,6 +31,7 @@ int executor_execute_pipeline(t_minishell *msh)
current = current->next;
}
waitpid(last_pid, &exit_status, 0);
msh->exit_status = ((exit_status) & 0xff00) >> 8;
signal_init_minishell();
return (((exit_status) & 0xff00) >> 8);
}

View File

@ -6,7 +6,7 @@
/* By: willem <willem@student.codam.nl> +#+ */
/* +#+ */
/* Created: 2025/02/12 21:24:52 by willem #+# #+# */
/* Updated: 2025/02/26 16:10:40 by whaffman ######## odam.nl */
/* Updated: 2025/02/26 17:44:36 by whaffman ######## odam.nl */
/* */
/* ************************************************************************** */
@ -33,6 +33,6 @@ pid_t executor_fork(t_minishell *msh, t_command *command)
exit(127);
}
else
perror("fork");
error_msg("minishell", "fork failed");
return (pid);
}

View File

@ -6,7 +6,7 @@
/* By: qmennen <qmennen@student.codam.nl> +#+ */
/* +#+ */
/* Created: 2025/02/18 19:00:35 by qmennen #+# #+# */
/* Updated: 2025/02/26 16:13:40 by whaffman ######## odam.nl */
/* Updated: 2025/02/26 17:23:30 by whaffman ######## odam.nl */
/* */
/* ************************************************************************** */

View File

@ -6,12 +6,31 @@
/* By: qmennen <qmennen@student.codam.nl> +#+ */
/* +#+ */
/* Created: 2025/02/19 13:58:13 by qmennen #+# #+# */
/* Updated: 2025/02/26 16:13:42 by whaffman ######## odam.nl */
/* Updated: 2025/02/26 17:41:14 by whaffman ######## odam.nl */
/* */
/* ************************************************************************** */
#include "minishell.h"
static char *ft_itoa_safe(t_minishell *msh, int n)
{
char *str;
str = ft_itoa(n);
check_malloc(msh, str);
return (str);
}
static t_list *create_exit_status_env(t_minishell *msh)
{
t_environment *env;
env = malloc_safe(msh, sizeof(t_environment));
env->name = ft_strdup_safe(msh, "?");
env->value = ft_itoa_safe(msh, msh->exit_status);
return (ft_lstnew_safe(msh, env));
}
t_list *expander_parse_variables(const char *s, t_minishell *msh)
{
int i;
@ -28,7 +47,12 @@ t_list *expander_parse_variables(const char *s, t_minishell *msh)
if (env)
ft_lstadd_back(&var_list, ft_lstnew_safe(msh, env));
else
ft_lstadd_back(&var_list, ft_lstnew_safe(msh, NULL));
{
if (s[i + 1] == '?')
ft_lstadd_back(&var_list, create_exit_status_env(msh));
else
ft_lstadd_back(&var_list, ft_lstnew_safe(msh, NULL));
}
}
i++;
}

View File

@ -6,7 +6,7 @@
/* By: whaffman <whaffman@student.codam.nl> +#+ */
/* +#+ */
/* Created: 2025/02/05 16:03:03 by whaffman #+# #+# */
/* Updated: 2025/02/26 16:16:37 by whaffman ######## odam.nl */
/* Updated: 2025/02/26 17:39:41 by whaffman ######## odam.nl */
/* */
/* ************************************************************************** */
@ -28,5 +28,6 @@ t_minishell *init_minishell(void)
msh->tokens = NULL;
msh->commands = NULL;
msh->freelist = NULL;
msh->exit_status = 0;
return (msh);
}