Example #1
0
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);
}
Example #2
0
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);
}