Example #1
0
uffs_DIR * uffs_opendir(const char *path)
{
    int err = 0;
    uffs_DIR *ret = NULL;
    uffs_DIR *dirp = GetDirEntry();

    if (dirp) {
        dirp->obj = uffs_GetObject();
        if (dirp->obj) {
            if (uffs_OpenObject(dirp->obj, path, UO_RDONLY | UO_DIR) == U_SUCC) {
                if (uffs_FindObjectOpen(&dirp->f, dirp->obj) == U_SUCC) {
                    ret = dirp;
                    goto ext;
                } else {
                    uffs_CloseObject(dirp->obj);
                }
            } else {
                err = uffs_GetObjectErr(dirp->obj);
            }
            uffs_PutObject(dirp->obj);
            dirp->obj = NULL;
        } else {
            err = UEMFILE;
        }
        PutDirEntry(dirp);
    } else {
        err = UEMFILE;
    }
ext:
    uffs_set_error(-err);
    return ret;
}
Example #2
0
int uffs_closedir(uffs_DIR *dirp)
{
    CHK_DIR(dirp, -1);

    uffs_FindObjectClose(&dirp->f);
    if (dirp->obj) {
        uffs_CloseObject(dirp->obj);
        uffs_PutObject(dirp->obj);
    }
    PutDirEntry(dirp);

    return 0;
}
int uffs_closedir(uffs_DIR *dirp)
{
	CHK_DIR_LOCK(dirp, -1);

	uffs_FindObjectClose(&dirp->f);
	if (dirp->obj) {
		uffs_CloseObject(dirp->obj);
		uffs_PutObject(dirp->obj);
	}
	PutDirEntry(dirp);
	uffs_GlobalFsLockUnlock();

	return 0;
}