コード例 #1
0
ファイル: dirent.c プロジェクト: nickbjohnson4224/rhombus
DIR *opendir(const char *dirname) {
    DIR *dirp;
    char *list;

    dirp = malloc(sizeof(DIR));
    if (!dirp) return NULL;

    dirp->fd = open(dirname, ACCS_READ);
    if (dirp->fd < 0) {
        free(dirp);
        return NULL;
    }

    list = rp_list(fd_rp(dirp->fd));

    dirp->entryv = strparse(list, "\t");

    if (!dirp->entryv) {
        free(dirp);
        return NULL;
    }

    dirp->dirpos = 0;

    return dirp;
}
コード例 #2
0
ファイル: dirent.c プロジェクト: jrepan/rhombus
DIR *opendir(const char *dirname) {
	DIR *dirp;
	char *list;

	dirp = malloc(sizeof(DIR));
	if (!dirp) return NULL;

	dirp->fd = open(dirname, STAT_READER);
	if (dirp->fd < 0) {
		free(dirp);
		return NULL;
	}

	if (!rp_type(fd_rp(dirp->fd), "dir")) {
		errno = ENOTDIR;
		close(dirp->fd);
		free(dirp);
		return NULL;
	}

	list = rp_list(fd_rp(dirp->fd));

	dirp->entryv = strparse(list, "\t");

	if (!dirp->entryv) {
		free(dirp);
		return NULL;
	}

	dirp->dirpos = 0;

	return dirp;
}