summaryrefslogtreecommitdiffstats
path: root/src/u_vars_next.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/u_vars_next.c')
-rw-r--r--src/u_vars_next.c22
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 */
}