void ft_setenv(char ***env, char *line, char *str) { int i; int done; done = 0; i = 0; while ((*env)[i]) { if (*line && !ft_strncmp((*env)[i], line, ft_strlen(line))) { ft_strdel(&((*env)[i])); (*env)[i] = ft_strtrijoin(line, "=", str); done = 1; } if (!*line && (*(*env)[i]) == '=' && (done = 1)) { ft_strdel(&((*env)[i])); (*env)[i] = ft_strjoin("=", str); } i++; } if (!done) { ft_add_env(env, line); ft_setenv(env, line, str); } }
static void update_env(t_params *p, char *new_dir) { char *tmp; p->oldpwd = p->pwd; if (ft_strstr(new_dir, "/nfs/")) p->pwd = ft_strdup(ft_strstr(new_dir, "/nfs/")); else p->pwd = ft_strdup(new_dir); if (!(update_var(p, "PWD=", p->pwd))) { tmp = ft_strjoin("setenv PWD ", p->pwd); ft_add_env(tmp, p); ft_strdel(&tmp); } if (!(update_var(p, "OLDPWD=", p->oldpwd))) { tmp = ft_strjoin("setenv OLDPWD ", p->oldpwd); ft_add_env(tmp, p); ft_strdel(&tmp); } }