char *ft_replace_var(t_data *d, char *str) { char *tmp; char *ptr; char *var; char *save; char *s; save = ft_strdup(str); s = save; while ((ptr = ft_strchr(s, '$'))) { tmp = ++ptr; if (*tmp == '?') { var = ft_itoa(d->ret, 10); if (var) ft_realloc_var(&save, var, ptr - save, 1); s = (var ? save : ptr + 1); } else s = ft_get_var(d, tmp, ptr, &save); } return (save); }
int ft_setvar(t_sh *sh, char *name, char *value) { int i; i = 0; if (ft_get_var(sh, name) != NULL) { while (sh->env[i] != NULL) { if (ft_strncmp(sh->env[i], name, ft_strlen(name)) == 0) { ft_strdel(&sh->env[i]); sh->env[i] = ft_strjoin(name, "="); sh->env[i] = ft_strjoin(sh->env[i], value); return (0); } i++; } } else { if (!ft_add_var(sh, name, value)) return (0); } return (-1); }