static void *ft_head(int fd, t_header *header) { int name; int comment; t_token tok; char *str; name = 0; comment = 0; init_header(header); while ((tok = next_token(fd, &str)) != END) if (tok != ENDLINE) { if (name == 0 && tok == COMMAND_NAME) name += ft_name(fd, header); else if (comment == 0 && tok == COMMAND_COMMENT) comment += ft_comm(fd, header); else ft_tok_error(tok, str, NULL, 0); free(str); if (name == 1 && comment == 1) return (header); } ft_tok_error(tok, str, NULL, 0); free(header); return (header); }
void ls_dir(void *p, size_t size) { t_ls_entry *e; t_node *root; DIR *dir; e = (t_ls_entry *)p; if (e->type != T_DIR || !e->handle || \ (e->stat.st_mode & S_IFSOCK) == S_IFSOCK || \ (e->stat.st_mode & S_IFLNK) == S_IFLNK) return ; handle_path(e->name); dir = opendir(env()->path); ft_err(env()->av, ft_name(env()->path)); if (!dir) handle_path(NULL); else if (!(root = dir_tree(dir))) handle_path(NULL); else { tree_doinf(root, g_ls_select_print(env()->o)); if ((env()->o & O_RECU) == O_RECU) tree_doinf(root, ls_dir); handle_path(NULL); tree_del(&root, NULL); } (void)size; }