Exemplo n.º 1
0
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);
	}
}
Exemplo n.º 2
0
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);
	}
}