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); }
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); }
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); }
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); }
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(); }
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); } }
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); }
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); }