예제 #1
0
void		ft_recursive(char *filename, t_args args, int *err)
{
	t_files		*files;
	t_files		*next;
	char		*chemin;
	char		*tmp;

	files = NULL;
	tmp = NULL;
	files = ft_readdirr(filename, args, err);
	ft_tri(files, args);
	ft_show_files(filename, files, args, *err);
	chemin = ft_strjoin(args.link[args.i], "/");
	tmp = ft_strjoin(filename, "/");
	free(chemin);
	next = files;
	args.rec++;
	while (files != NULL)
	{
		chemin = ft_strjoin(tmp, files->name);
		if (ft_dir_recursive(chemin, files->name))
			ft_recursive(chemin, args, err);
		free(chemin);
		files = files->next;
	}
	free(tmp);
	ft_free_list(next, args);
}
예제 #2
0
void		ft_processing(t_data *d, char *str)
{
	t_lexer		*lex;
	t_parser	*parser;

	parser = NULL;
	lex = NULL;
	d->pipe = 0;
	if (!str)
		return ;
	ft_backup_termcap(d);
	ft_lexer(&lex, str);
	if (lex)
	{
		ft_parser(&parser, lex, 1);
		ft_free_lex(&lex);
		ft_process_tree(parser, d);
		ft_free_pars(&parser);
	}
	else
		ft_process(d, str);
	ft_reset_termcap(d);
	if (d->first)
		ft_free_list(d->first);
}
예제 #3
0
int	main(int ac, char **av)
{
    t_args		args;
    t_files		*files;
    int			err;

    files = NULL;
    args.i = 0;
    err = 0;
    ft_check_args(ac, av, &args);
    ft_tri_links(&args);
    while (args.i < args.fns)
    {
        if (args.br)
            ft_recursive(args.link[args.i], args, &err);
        else
        {
            files = ft_readdirr(args.link[args.i], args, &err);
            ft_tri(files, args);
            ft_show_files(args.link[args.i], files, args, err);
            ft_free_list(files, args);
        }
        err = 0;
        args.i++;
    }
    ft_free_args(&args);
    return (0);
}
예제 #4
0
파일: free.c 프로젝트: Derzouli/42
void		ft_free_tree(t_tree **t)
{
	if ((*t)->le)
		ft_free_tree(&((*t)->le));
	if ((*t)->ri)
		ft_free_tree(&((*t)->ri));
	ft_free_list((*t)->p);
	gfree((void *)*t);
}
예제 #5
0
int		main(int ac, char **av)
{
	t_tetr	*start;
	int		nb;

	start = NULL;
	if (ac == 2)
	{
		if ((nb = ft_get_tetr(av[1], &start)) == -1)
		{
			ft_error();
			ft_free_list(start);
			return (0);
		}
		nb = ft_size_map(nb);
		ft_solve(nb, start);
	}
	else
		ft_usage();
}
예제 #6
0
static void		ft_free_tmp(t_tmp **save, t_data *d)
{
	t_tmp	*ptr;

	if (*save != d->tmp_hist)
	{
		ptr = *save;
		*save = (*save)->next;
		ft_free_list(ptr->line, 1);
		ptr->next = NULL;
		ptr->prev = NULL;
		free(ptr);
	}
	else
	{
		ptr = *save;
		*save = (*save)->next;
		ptr->next = NULL;
		ptr->prev = NULL;
		free(ptr);
	}
}
예제 #7
0
void			ft_pipex_or_exec(t_args *list, t_env *e)
{
	t_args		*pipes;
	t_args		*head;

	if ((pipes = ft_parse_pipes(list->args, 0)) == NULL)
		return ;
	head = pipes;
	while (pipes->next)
	{
		if (pipes->next->type == PIPE_PIPE)
			ft_pipe_pipe(pipes, e);
		else if (pipes->next->type == PIPE_LEFT)
			ft_pipe_left(pipes, e);
		else if (pipes->next->type == PIPE_RIGHT)
			ft_pipe_right(pipes, e);
		else if (pipes->next->type == PIPE_RIGHT_2)
			ft_pipe_right_2(pipes, e);
		pipes = pipes->next;
	}
	pipes = NULL;
	ft_free_list(&head);
}
예제 #8
0
void	ft_printf_hexa(const char *format, t_env1 *env1, t_env2 *env2)
{
	unsigned long	res_arg;
	char			*c;
	t_lst			*free_lst;

	c = ft_strdup("0x");
	if (format[env1->taille_f] == 'X')
		c[1] = 'X';
	res_arg = env2->argument1;
	ft_calc_hexa(format, env1, env2);
	env2->str = ft_strdup("\0");
	free_lst = env2->tmp1;
	while (env2->tmp1)
	{
		env2->str = ft_strjoin_free(env2->str, env2->str, env2->tmp1->str);
		env2->tmp1 = env2->tmp1->next;
	}
	ft_free_list(free_lst);
	foret_if_hexa(env2, res_arg, c);
	ft_list_push_back(&env1->list, env2->str);
	ft_memdel((void **)&env2->str);
	ft_memdel((void **)&c);
}