コード例 #1
0
ファイル: head.c プロジェクト: cjacques42/corewar
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);
}
コード例 #2
0
ファイル: dir.c プロジェクト: sbenning42/42
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;
}