envp dup array
+ c->last_exit_status
This commit is contained in:
@@ -6,7 +6,7 @@
|
|||||||
/* By: lperrey <lperrey@student.42.fr> +#+ +:+ +#+ */
|
/* By: lperrey <lperrey@student.42.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2021/10/08 02:59:58 by lperrey #+# #+# */
|
/* 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);
|
char *ft_strjoinfree_s2(const char *s1, char *s2);
|
||||||
void ft_lstprint(t_list *lst, int fd);
|
void ft_lstprint(t_list *lst, int fd);
|
||||||
int ft_isinset_str(char *str, char *set);
|
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
|
#endif
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
/* By: lperrey <lperrey@student.42.fr> +#+ +:+ +#+ */
|
/* By: lperrey <lperrey@student.42.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2021/10/08 02:35:52 by lperrey #+# #+# */
|
/* 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_base;
|
||||||
char *prompt;
|
char *prompt;
|
||||||
t_token *token_list;
|
t_token *token_list;
|
||||||
|
int last_exit_status;
|
||||||
} t_all;
|
} t_all;
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
2
libft
2
libft
Submodule libft updated: 1401fddfcd...1e8aaa7154
@@ -6,7 +6,7 @@
|
|||||||
/* By: lperrey <lperrey@student.42.fr> +#+ +:+ +#+ */
|
/* By: lperrey <lperrey@student.42.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2021/10/10 05:01:22 by lperrey #+# #+# */
|
/* 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;
|
unsigned char status;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
status = 0; // # should not return '0' by default, but the last exit code value (same as $?)
|
status = c->last_exit_status;
|
||||||
// status = c->last_exit_value; // LIKE THIS
|
|
||||||
if (argc > 2)
|
if (argc > 2)
|
||||||
return (ft_reti_print(1, "exit: too many arguments\n", 2));
|
return (ft_reti_print(1, "exit: too many arguments\n", 2));
|
||||||
if (argc == 2)
|
if (argc == 2)
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
/* By: lperrey <lperrey@student.42.fr> +#+ +:+ +#+ */
|
/* By: lperrey <lperrey@student.42.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2021/10/10 23:53:17 by lperrey #+# #+# */
|
/* 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_base);
|
||||||
free(c->prompt);
|
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);
|
exit(exit_status);
|
||||||
|
ft_free_2d_arr(c->envp);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
/* By: lperrey <lperrey@student.42.fr> +#+ +:+ +#+ */
|
/* By: lperrey <lperrey@student.42.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2021/10/08 09:25:35 by lperrey #+# #+# */
|
/* 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);
|
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> +#+ +:+ +#+ */
|
/* By: lperrey <lperrey@student.42.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2021/10/08 09:22:12 by lperrey #+# #+# */
|
/* 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[])
|
int init(t_all *c, char *envp[])
|
||||||
{
|
{
|
||||||
ft_bzero(c, sizeof *c);
|
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();
|
c->prompt_base = init_prompt_base();
|
||||||
if (!c->prompt_base)
|
if (!c->prompt_base)
|
||||||
return (ft_reti_perror(0, "init_prompt_base() error"));
|
return (ft_reti_perror(0, "init_prompt_base() error"));
|
||||||
|
|||||||
Reference in New Issue
Block a user