Esempio n. 1
0
static t_list	*get_reglist(t_list **list)
{
	t_list	*reg_list;
	t_list	*prev;
	t_list	*cur;

	reg_list = NULL;
	prev = *list;
	while (prev != NULL && (S_ISDIR(((t_file *)prev->content)->mode) == 0 &&
							((t_file *)prev->content)->lnk_isdir == 0))
	{
		*list = (*list)->next;
		ft_lstadd_last(&reg_list, prev);
		prev = *list;
	}
	while (prev != NULL && prev->next != NULL)
	{
		cur = prev->next;
		if (S_ISDIR(((t_file *)cur->content)->mode) == 0 && MACRODEGEULASS == 0)
		{
			prev->next = cur->next;
			ft_lstadd_last(&reg_list, cur);
		}
		else
			prev = prev->next;
	}
	return (reg_list);
}
Esempio n. 2
0
int			check_for_closing_quote(t_var *var, char **tmp, t_list **alst)
{
	int		i;
	char	*del[2];
	t_list	*el;

	i = 0;
	while (LN_S[i] && !is_valid_quote(var, LN_S, i))
		i++;
	if (!LN_S[i])
		return (0);
	PROMPT_LEN = PROMPT_LEN_VALUE;
	i++;
	del[0] = *tmp;
	*tmp = ft_strjoin(*tmp, "\n");
	ft_strdel(&del[0]);
	del[0] = *tmp;
	del[1] = ft_strndup(LN_S, i - 1);
	*tmp = ft_strjoin(*tmp, del[1]);
	ft_strdel(&del[0]);
	ft_strdel(&del[1]);
	el = ft_lstnew((void *)ft_strdup(*tmp), sizeof(char *));
	ft_strdel(tmp);
	LN_S += i;
	ft_lstadd_last(alst, el);
	move_to_next_line(var);
	return (1);
}
Esempio n. 3
0
void		lex_quote(t_var *var, char **buf, t_list **alst)
{
	char	*s;
	t_list	*tmp;
	int		i;

	i = 1;
	LN_QUOTE = **buf;
	s = *buf;
	while (*(*buf + i) && !is_valid_quote(var, *buf, i))
		i++;
	if (!*(*buf + i))
		missing_quote_loop(var, s, alst);
	else
	{
		tmp = ((*(*buf + i) == LN_QUOTE) && (i >= 1) ? \
			ft_lstnew((void *)ft_strndup(s, i + 1), sizeof(char *)) : NULL);
		while (*(*buf + i) != LN_QUOTE)
			i++;
		i++;
		*buf += i;
		ft_lstadd_last(alst, tmp);
	}
	LN_QUOTE = '\0';
}
Esempio n. 4
0
void	lex_pipe(t_var *var, char **buf, t_list **alst)
{
	t_list	*tmp;

	var = (void *)var;
	if (*((*buf) + 1) == '|')
	{
		tmp = ft_lstnew((void *)ft_strndup(*buf, 2), sizeof(char *));
		ft_lstadd_last(alst, tmp);
		(*buf) += 2;
	}
	else
	{
		tmp = ft_lstnew((void *)ft_strndup(*buf, 1), sizeof(char *));
		ft_lstadd_last(alst, tmp);
		(*buf)++;
	}
}
Esempio n. 5
0
void	lex_big(t_var *var, char **buf, t_list **alst)
{
	t_list	*tmp;

	var = (void *)var;
	if (buf[0][1] == '>')
	{
		tmp = ft_lstnew((void *)ft_strndup(*buf, 2), sizeof(char *));
		ft_lstadd_last(alst, tmp);
		*buf += 2;
	}
	else
	{
		tmp = ft_lstnew((void *)ft_strndup(*buf, 1), sizeof(char *));
		ft_lstadd_last(alst, tmp);
		(*buf)++;
	}
}
Esempio n. 6
0
t_list		*create_filenames_list(int ac, char **av)
{
	int		i;
	t_list 	*ret;

	ret = NULL;
	i = 1;
	while (i < ac)
	{
		if (av[i][0] != '-')
			ft_lstadd_last(&ret, ft_lstnew(av[i], sizeof(char *)));
		i++;
	}
	return (ret);
}
Esempio n. 7
0
void		storage_env(t_list **e, char *new_var)
{
	int		i;
	t_env	env;
	t_list	*new_node;

	i = 0;
	if ((if_key_replace(new_var, e)) == 0)
		return ;
	env.str = ft_strdup(new_var);
	while (new_var[i] != '=' && new_var[i] != '\0')
		++i;
	env.name = ft_strsub(new_var, 0, i);
	if (new_var[i] != '\0' && new_var[++i] != '\0')
		env.value = ft_strsub(new_var, i, ft_strlen(new_var) - i);
	else
		env.value = NULL;
	new_node = ft_lstnew((void *)&env, sizeof(env));
	if (new_node)
		ft_lstadd_last(e, new_node);
}
Esempio n. 8
0
static int	split_line(t_list **av_list, char *line)
{
	t_list	*temp;
	t_av	av;
	char	**tab;
	int		i;

	i = 0;
	tab = ft_strsplit(line, ';');
	if (tab == NULL)
		return (1);
	while (tab[i] != NULL)
	{
		fill_av(&av, tab[i]);
		temp = ft_lstnew((void *)&av, sizeof(t_av));
		if (temp == NULL)
			return (1);
		ft_lstadd_last(av_list, temp);
		i++;
	}
	return (0);
}