pf_readdir

The pf_readdir function reads directory entries.

FRESULT pf_readdir (
  DIR* DirObject,    /* [IN]  Pointer to the open directory object */
  FILINFO* FileInfo  /* [OUT] Pointer to the file information structure */
);

Parameters

DirObject
Pointer to the open directory object.
FileInfo
Pointer to the file information structure to store the read item.

Return Values

FR_OK (0)
The function succeeded.
FR_DISK_ERR
The function failed due to an error in the disk function, a wrong FAT structure or an internal error.
FR_NOT_OPENED
The directory object has not been opened.

Description

The pf_readdir function reads directory entries in sequence. All items in the directory can be read by calling pf_readdir function repeatedly. When all directory entries have been read and no item to read, the function returns a null string into f_name[] member without any error. When a null pointer is given to the FileInfo, the read index of the directory object will be rewinded.

Sample Code

FRESULT scan_files (char* path)
{
    FRESULT res;
    FILINFO fno;
    DIR dir;
    int i;


    res = pf_opendir(&dir, path);
    if (res == FR_OK) {
        i = strlen(path);
        for (;;) {
            res = pf_readdir(&dir, &fno);
            if (res != FR_OK || fno.fname[0] == 0) break;
            if (fno.fattrib & AM_DIR) {
                sprintf(&path[i], "/%s", fno.fname);
                res = scan_files(path);
                if (res != FR_OK) break;
                path[i] = 0;
            } else {
                printf("%s/%s\n", path, fno.fname);
            }
        }
    }

    return res;
}

QuickInfo

Available when _USE_DIR == 1.

References

pf_opendir, FILINFO, DIR

Return