Esempio n. 1
0
void		ft_init_source(t_data *d)
{
	int		fd;
	char	**tab;
	char	*tmp;
	char	*ptr;

	tmp = ft_getenv_list(d->my_env, "HOME");
	if (!tmp)
		return ;
	ptr = ft_strjoin(tmp + 5, "/.42shrc");
	fd = open(ptr, O_RDONLY);
	if (fd != -1)
	{
		tab = (char **)malloc(sizeof(char *) * 3);
		tab[0] = ft_strdup("source");
		tab[1] = ft_strdup(ptr);
		tab[2] = NULL;
		ft_source(d, tab);
		ft_free_tab(&tab);
	}
	ft_strdel(&tmp);
	ft_strdel(&ptr);
	close(fd);
}
Esempio n. 2
0
static char	*ft_get_var(t_data *d, char *tmp, char *ptr, char **save)
{
	char	*var;

	while (*tmp && ft_isalnum(*tmp))
		++tmp;
	if (tmp == ptr)
		return (ptr + 1);
	tmp = ft_strsub(ptr, 0, tmp - ptr);
	var = ft_getenv_list(d->my_env, tmp);
	if (var)
	{
		ft_realloc_var(save, var, ptr - *save, 0);
		ft_strdel(&tmp);
		return (*save);
	}
	ft_strdel(&tmp);
	return (ptr + 1);
}