diff options
Diffstat (limited to 'src/u_vars_next.c')
-rw-r--r-- | src/u_vars_next.c | 22 |
1 files changed, 15 insertions, 7 deletions
diff --git a/src/u_vars_next.c b/src/u_vars_next.c index c6c351b..6f63fb4 100644 --- a/src/u_vars_next.c +++ b/src/u_vars_next.c @@ -13,10 +13,12 @@ #include <libft.h> #include <inttypes.h> #include <stdlib.h> +#include <limits.h> #include "d_enum.h" #include "s_lvars.h" #include "s_struct.h" +#include "u_parse.h" #include "u_utils.h" static int64_t @@ -63,6 +65,11 @@ static t_bool } } +/* static void */ +/* u_newval_subst(char newval_subst[], const char newval[]) */ +/* { */ +/* } */ + /* ** void ** u_subst_var_value(const char varname[], const char newval[], t_msh *msh); @@ -70,23 +77,24 @@ static t_bool ** DESCRIPTION ** The subst_var_value() changes the value of msh->envp ** variable varname[] with newval[]. If varname[] wasn't found -** in msh->envp, varname[] is searched in msh->vars. +** in msh->envp, varname[] is searched in msh->vars. Otherwise +** varname[] is added to msh->vars. */ void - u_subst_var_value(const char varname[], - const char newval[], - t_msh *msh) + u_subst_var_value(const char varname[], const char newval[], t_msh *msh) { - char new_line_fmt[2048]; + char new_line_fmt[ARG_MAX]; + /* char newval_subst[ARG_MAX]; */ int64_t env_line; if ((env_line = u_get_env_var_line(varname + 1, msh)) > -1) { ft_memdel((void*)&msh->envp[env_line]); + /* ft_sprintf(new_line_fmt, "%s=%s", varname + 1, newval_subst); */ ft_sprintf(new_line_fmt, "%s=%s", varname + 1, newval); - if (!(msh->envp[env_line] = - (char*)malloc((ft_strlen(new_line_fmt) + 1) * sizeof(char)))) + if ((msh->envp[env_line] = (char*)malloc((ft_strlen(new_line_fmt) + 1) * + sizeof(char))) == NULL) { /* TODO: Handle this fail */ } |