envp dup array

+ c->last_exit_status
This commit is contained in:
LuckyLaszlo
2021-10-24 10:23:20 +02:00
parent 39de10e001
commit 906074d2cb
7 changed files with 67 additions and 10 deletions

View File

@@ -6,7 +6,7 @@
/* By: lperrey <lperrey@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2021/10/08 02:59:58 by lperrey #+# #+# */
/* Updated: 2021/10/22 10:41:34 by lperrey ### ########.fr */
/* Updated: 2021/10/23 15:19:42 by lperrey ### ########.fr */
/* */
/* ************************************************************************** */
@@ -36,5 +36,8 @@ char *ft_strjoinfree_s1(char *s1, const char *s2);
char *ft_strjoinfree_s2(const char *s1, char *s2);
void ft_lstprint(t_list *lst, int fd);
int ft_isinset_str(char *str, char *set);
size_t ft_2d_arrlen(void *ptr); // Replace ft_arrlen()
void *ft_dup_2d_arr(void *ptr);
void *ft_resize_2d_arr(void *ptr, size_t add_nbr);
#endif

View File

@@ -6,7 +6,7 @@
/* By: lperrey <lperrey@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2021/10/08 02:35:52 by lperrey #+# #+# */
/* Updated: 2021/10/19 20:20:35 by lperrey ### ########.fr */
/* Updated: 2021/10/22 12:41:17 by lperrey ### ########.fr */
/* */
/* ************************************************************************** */
@@ -42,6 +42,7 @@ typedef struct s_all
char *prompt_base;
char *prompt;
t_token *token_list;
int last_exit_status;
} t_all;
#endif

2
libft

Submodule libft updated: 1401fddfcd...1e8aaa7154

View File

@@ -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)

View File

@@ -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);
}

View File

@@ -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);
}

View File

@@ -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"));