Ejemplo n.º 1
0
void	ft_setvar(char ***envp, char *name, char *value)
{
	int		i;
	int		size;
	char	**newenv;

	i = 0;
	size = ft_strlen(name);
	while ((*envp)[i])
	{
		if (ft_strncmp((*envp)[i], name, size) == 0 && (*envp)[i][size] == '=')
		{
			(*envp)[i][size + 1] = 0;
			(*envp)[i] = value ? ft_strjoin((*envp)[i], value) : (*envp)[i];
			return ;
		}
		++i;
	}
	newenv = (char**)malloc((i + 2) * sizeof(char*));
	newenv[i + 1] = NULL;
	newenv[i] = value == 0 ? ft_strdup("=") : ft_strjoin("=", value);
	newenv[i] = ft_strext(name, newenv[i], 1);
	while (--i > -1)
		newenv[i] = ft_strdup((*envp)[i]);
	ft_doubletabfree(envp);
	*envp = newenv;
}
Ejemplo n.º 2
0
static void		check_stradd_d(t_str *str, double d, int preci)
{
	if (preci <= 0)
		ft_stradd_int(str, d + 0.5);
	else
		ft_stradd_int(str, d);
	if (preci <= 0)
		return ;
	if (!ft_strext(str, preci + 1))
		return ;
}
Ejemplo n.º 3
0
void			ft_stradd_int(t_str *str, double nbr)
{
	int				tmp;
	int				length;

	if (nbr < 0)
		length = 2;
	else
		length = 1;
	while ((nbr /= 10) > 1)
		length++;
	if (!ft_strext(str, length))
		return ;
	if (nbr < 0)
		str->content[str->length++] = '-';
	length += str->length;
	while (str->length < length)
	{
		nbr *= 10;
		tmp = (int)nbr;
		str->content[str->length++] = '0' + tmp;
		nbr -= tmp;
	}
}