Example #1
0
/**
 * Count objects
 *
 * \param[in] f uffs_FindInfo structure, openned by uffs_FindObjectOpen().
 *
 * \return object counts
 * \note after call this function, you need to call uffs_FindObjectRewind() to start finding process.
 */
int uffs_FindObjectCount(uffs_FindInfo *f)
{
	if (uffs_FindObjectFirst(NULL, f) == U_SUCC) {
		while (uffs_FindObjectNext(NULL, f) == U_SUCC) { };
	}
	return f->pos;
}
Example #2
0
struct uffs_dirent * uffs_readdir(uffs_DIR *dirp)
{
    struct uffs_dirent *ent;

    CHK_DIR(dirp, NULL);

    if (uffs_FindObjectNext(&dirp->info, &dirp->f) == U_SUCC) {
        ent = &dirp->dirent;
        ent->d_ino = dirp->info.serial;
        ent->d_namelen = dirp->info.info.name_len;
        memcpy(ent->d_name, dirp->info.info.name, ent->d_namelen);
        ent->d_name[ent->d_namelen] = 0;
        ent->d_off = dirp->f.pos;
        ent->d_reclen = sizeof(struct uffs_dirent);
        ent->d_type = dirp->info.info.attr;

        return ent;
    } else
        return NULL;
}
struct uffs_dirent * uffs_readdir(uffs_DIR *dirp)
{
	struct uffs_dirent *ent = NULL;

	CHK_DIR_LOCK(dirp, NULL);

	if (uffs_FindObjectNext(&dirp->info, &dirp->f) == U_SUCC) {
		ent = &dirp->dirent;
		ent->d_ino = dirp->info.serial;
		ent->d_namelen = dirp->info.info.name_len < (sizeof(ent->d_name) - 1) ? dirp->info.info.name_len : (sizeof(ent->d_name) - 1);
		memcpy(ent->d_name, dirp->info.info.name, ent->d_namelen);
		ent->d_name[ent->d_namelen] = '\0';
		ent->d_off = dirp->f.pos;
		ent->d_reclen = sizeof(struct uffs_dirent);
		ent->d_type = dirp->info.info.attr;
	}
	uffs_GlobalFsLockUnlock();

	return ent;
}