envp dup array
+ c->last_exit_status
This commit is contained in:
@@ -6,7 +6,7 @@
|
||||
/* By: lperrey <lperrey@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2021/10/10 05:01:22 by lperrey #+# #+# */
|
||||
/* Updated: 2021/10/15 08:45:33 by lperrey ### ########.fr */
|
||||
/* Updated: 2021/10/22 14:49:01 by lperrey ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
@@ -17,8 +17,7 @@ int builtin_exit(int argc, char *argv[], t_all *c) // WIP
|
||||
unsigned char status;
|
||||
int i;
|
||||
|
||||
status = 0; // # should not return '0' by default, but the last exit code value (same as $?)
|
||||
// status = c->last_exit_value; // LIKE THIS
|
||||
status = c->last_exit_status;
|
||||
if (argc > 2)
|
||||
return (ft_reti_print(1, "exit: too many arguments\n", 2));
|
||||
if (argc == 2)
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
/* By: lperrey <lperrey@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2021/10/10 23:53:17 by lperrey #+# #+# */
|
||||
/* Updated: 2021/10/10 23:59:25 by lperrey ### ########.fr */
|
||||
/* Updated: 2021/10/22 13:35:33 by lperrey ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
@@ -16,5 +16,7 @@ int free_exit(t_all *c, int exit_status)
|
||||
{
|
||||
free(c->prompt_base);
|
||||
free(c->prompt);
|
||||
ft_lstclear((t_list **)&c->token_list, free); // a voir avec Hugo, il y a un truc qui me semble superflu dans la fonction
|
||||
exit(exit_status);
|
||||
ft_free_2d_arr(c->envp);
|
||||
}
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
/* By: lperrey <lperrey@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2021/10/08 09:25:35 by lperrey #+# #+# */
|
||||
/* Updated: 2021/10/21 18:23:04 by lperrey ### ########.fr */
|
||||
/* Updated: 2021/10/23 15:19:07 by lperrey ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
@@ -72,3 +72,53 @@ int ft_isinset_str(char *str, char *set)
|
||||
}
|
||||
return (i);
|
||||
}
|
||||
|
||||
size_t ft_2d_arrlen(void *ptr) // Replace ft_arrlen()
|
||||
{
|
||||
size_t len;
|
||||
char **arr;
|
||||
|
||||
arr = (char **)ptr;
|
||||
len = 0;
|
||||
while (arr[len] != NULL)
|
||||
len++;
|
||||
return (len);
|
||||
}
|
||||
|
||||
void *ft_dup_2d_arr(void *ptr)
|
||||
{
|
||||
unsigned int i;
|
||||
char **arr;
|
||||
char **new_arr;
|
||||
|
||||
new_arr = malloc((ft_2d_arrlen(ptr) + 1) * sizeof (void *));
|
||||
if (!new_arr)
|
||||
return (NULL);
|
||||
arr = (char **)ptr;
|
||||
i = 0;
|
||||
while (arr[i])
|
||||
{
|
||||
new_arr[i] = arr[i];
|
||||
i++;
|
||||
}
|
||||
new_arr[i] = NULL;
|
||||
return (new_arr);
|
||||
}
|
||||
|
||||
void *ft_resize_2d_arr(void *ptr, size_t add_nbr)
|
||||
{
|
||||
unsigned int i;
|
||||
char **arr;
|
||||
char **new_arr;
|
||||
|
||||
new_arr = ft_calloc(ft_2d_arrlen(ptr) + add_nbr + 1, sizeof (void *));
|
||||
arr = (char **)ptr;
|
||||
i = 0;
|
||||
while (arr[i])
|
||||
{
|
||||
new_arr[i] = arr[i];
|
||||
i++;
|
||||
}
|
||||
free(arr);
|
||||
return (new_arr);
|
||||
}
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
/* By: lperrey <lperrey@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2021/10/08 09:22:12 by lperrey #+# #+# */
|
||||
/* Updated: 2021/10/19 11:58:13 by lperrey ### ########.fr */
|
||||
/* Updated: 2021/10/23 16:04:03 by lperrey ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
@@ -18,7 +18,9 @@ static char *init_prompt(char *prompt_base);
|
||||
int init(t_all *c, char *envp[])
|
||||
{
|
||||
ft_bzero(c, sizeof *c);
|
||||
c->envp = envp;
|
||||
c->envp = ft_dup_2d_arr(envp);
|
||||
if (!c->envp)
|
||||
return (ft_reti_perror(0, "ft_dup_2d_arr(envp) error"));
|
||||
c->prompt_base = init_prompt_base();
|
||||
if (!c->prompt_base)
|
||||
return (ft_reti_perror(0, "init_prompt_base() error"));
|
||||
|
||||
Reference in New Issue
Block a user