Exemplo n.º 1
0
void FATFileSystem::dir_rewind(fs_dir_t dir) {
    FATFS_DIR *dh = static_cast<FATFS_DIR*>(dir);

    lock();
    f_rewinddir(dh);
    unlock();
}
Exemplo n.º 2
0
void DirectoryIterator::rewind() {
  if (!m_dir.same(false)) {
    f_rewinddir(m_dir);
    m_dirEntry = f_readdir(m_dir);
    m_index = 0;
    m_fileName = getPathName();
  }
}
Exemplo n.º 3
0
void FATFileSystem::dir_seek(fs_dir_t dir, off_t offset)
{
    FATFS_DIR *dh = static_cast<FATFS_DIR*>(dir);
    off_t dptr = static_cast<off_t>(dh->dptr);

    lock();

    if (offset < dptr) {
        f_rewinddir(dh);
    }
    while (dptr < offset) {
        FILINFO finfo;
        FRESULT res;

        res = f_readdir(dh, &finfo);
        if (res != FR_OK) {
            break;
        } else if (finfo.fname[0] == 0) {
            break;
        }
    }
    unlock();
}
Exemplo n.º 4
0
bool TestExtFile::test_rewinddir() {
  Variant d = f_opendir("test");
  Variant entry;
  bool seen = false;
  while (!same(entry = f_readdir(d), false)) {
    if (same(entry, "test_ext_file.txt")) {
      seen = true;
    }
  }
  VERIFY(seen);

  seen = false;
  f_rewinddir(d);
  while (!same(entry = f_readdir(d), false)) {
    if (same(entry, "test_ext_file.txt")) {
      seen = true;
    }
  }
  VERIFY(seen);

  f_closedir(d);
  return Count(true);
}
Exemplo n.º 5
0
void FATFileSystem::dir_seek(fs_dir_t dir, off_t offset) {
    FATFS_DIR *dh = static_cast<FATFS_DIR*>(dir);

    lock();
    if (offset < dh->index) {
        f_rewinddir(dh);
    }
    while (dh->index < offset) {
        FILINFO finfo;
        FRESULT res;
#if _USE_LFN
        char lfname[NAME_MAX];
        finfo.lfname = lfname;
        finfo.lfsize = NAME_MAX;
#endif // _USE_LFN
        res = f_readdir(dh, &finfo);
        if (res != FR_OK) {
            break;
        } else if (finfo.fname[0] == 0) {
            break;
        }
    }
    unlock();
}