コード例 #1
0
ファイル: coreinit_fs.cpp プロジェクト: ZilverXZX/wiiu-emu
FSStatus
FSReadDirAsync(FSClient *client, FSCmdBlock *block, FSDirectoryHandle handle, FSDirectoryEntry *entry, uint32_t flags, FSAsyncData *asyncData)
{
   assert(asyncData->callback);
   auto result = FSReadDir(client, block, handle, entry, flags);
   FSAsyncCallback cb = static_cast<uint32_t>(asyncData->callback);
   cb(client, block, result, asyncData->param);
   return result;
}
コード例 #2
0
static int FSDrvDirNext(struct _reent* r, DIR_ITER* dirState, char* filename, struct stat* filestat) {
    FSDirHandle* handle = (FSDirHandle*) dirState->dirStruct;

    FSDirEntry dirEntry;
    FSStatus err = FSReadDir(fsClient, fsCmdBlock, *handle, &dirEntry, FS_RET_ALL_ERROR);
    if(err == FS_STATUS_OK) {
        strncpy(filename, dirEntry.name, NAME_MAX);

        FSDrvConvertStat(filestat, &dirEntry.stat);
    } else {
        FSDrvReportError(r);
        return -1;
    }

    return 0;
}
コード例 #3
0
ファイル: sd_fat_devoptab.c プロジェクト: frangarcj/RetroArch
static int sd_fat_dirnext_r (struct _reent *r, DIR_ITER *dirState, char *filename, struct stat *st)
{
    sd_fat_dir_entry_t *dirIter = (sd_fat_dir_entry_t *)dirState->dirStruct;
    if(!dirIter->dev) {
        r->_errno = ENODEV;
        return -1;
    }

    OSLockMutex(dirIter->dev->pMutex);

    FSDirEntry * dir_entry = malloc(sizeof(FSDirEntry));

    int result = FSReadDir(dirIter->dev->pClient, dirIter->dev->pCmd, dirIter->dirHandle, (FSDirectoryEntry*)dir_entry, -1);
    if(result < 0)
    {
        free(dir_entry);
        r->_errno = result;
        OSUnlockMutex(dirIter->dev->pMutex);
        return -1;
    }

    // Fetch the current entry
    strcpy(filename, dir_entry->name);

    if(st)
    {
        memset(st, 0, sizeof(struct stat));
        st->st_mode = (dir_entry->stat.flag & 0x80000000) ? S_IFDIR : S_IFREG;
        st->st_nlink = 1;
        st->st_size = dir_entry->stat.size;
        st->st_blocks = (dir_entry->stat.size + 511) >> 9;
        st->st_dev = dir_entry->stat.ent_id;
        st->st_uid = dir_entry->stat.owner_id;
        st->st_gid = dir_entry->stat.group_id;
        st->st_ino = dir_entry->stat.ent_id;
        st->st_atime = dir_entry->stat.mtime;
        st->st_ctime = dir_entry->stat.ctime;
        st->st_mtime = dir_entry->stat.mtime;
    }

    free(dir_entry);
    OSUnlockMutex(dirIter->dev->pMutex);
    return 0;
}