1 <!DOCTYPE HTML PUBLIC
"-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
4 <meta http-equiv=
"Content-Type" content=
"text/html; charset=iso-8859-1">
5 <meta http-equiv=
"Content-Style-Type" content=
"text/css">
6 <link rel=
"up" title=
"FatFs" href=
"../00index_e.html">
7 <link rel=
"alternate" hreflang=
"ja" title=
"Japanese" href=
"../ja/readdir.html">
8 <link rel=
"stylesheet" href=
"../css_e.css" type=
"text/css" media=
"screen" title=
"ELM Default">
9 <title>FatFs - f_readdir
</title>
14 <div class=
"para func">
16 <p>The f_readdir function reads directory entries.
</p>
19 DIR*
<span class=
"arg">dp
</span>,
<span class=
"c">/* [IN] Directory object */
</span>
20 FILINFO*
<span class=
"arg">fno
</span> <span class=
"c">/* [OUT] File information structure */
</span>
25 <div class=
"para arg">
29 <dd>Pointer to the open directory object.
</dd>
31 <dd>Pointer to the file information structure to store the read item.
</dd>
36 <div class=
"para ret">
37 <h4>Return Values
</h4>
39 <a href=
"rc.html#ok">FR_OK
</a>,
40 <a href=
"rc.html#de">FR_DISK_ERR
</a>,
41 <a href=
"rc.html#ie">FR_INT_ERR
</a>,
42 <a href=
"rc.html#nr">FR_NOT_READY
</a>,
43 <a href=
"rc.html#io">FR_INVALID_OBJECT
</a>,
44 <a href=
"rc.html#tm">FR_TIMEOUT
</a>,
45 <a href=
"rc.html#nc">FR_NOT_ENOUGH_CORE
</a>
50 <div class=
"para desc">
52 <p>The
<tt>f_readdir()
</tt> function reads directory items, file and directory, in sequence. All items in the directory can be read by calling
<tt>f_readdir()
</tt> function repeatedly. When relative path feature is enabled (
<tt>_FS_RPATH
>=
1</tt>), dot entries (
"." and
"..") are not filtered out and they will appear in the read items. When all directory items have been read and no item to read, a null string is returned into the
<tt>fname[]
</tt> without any error. When a null pointer is given to the
<tt class=
"arg">fno
</tt>, the read index of the directory object is rewinded.
</p>
53 <p>When LFN feature is enabled,
<tt>lfname
</tt> and
<tt>lfsize
</tt> in the file information structure must be initialized with valid value prior to use it. The
<tt>lfname
</tt> is a pointer to the LFN read buffer. The
<tt>lfsize
</tt> is size of the LFN read buffer in unit of
<tt>TCHAR
</tt>. If the LFN is not needed, set a null pointer to the
<tt>lfname
</tt> and the LFN is not returned. A null string will be returned into the LFN read buffer in case of following conditions.
</p>
55 <li>The directory item has no LFN information.
</li>
56 <li>Either the size of read buffer or LFN working buffer is insufficient for the LFN.
</li>
57 <li>The LFN contains any Unicode character that cannot be converted to OEM code. (not the case at Unicode API cfg.)
</li>
59 <p>When the directory item has no LFN information, lower case characters can be contained in the
<tt>fname[]
</tt>.
</p>
63 <div class=
"para comp">
65 <p>Available when
<tt>_FS_MINIMIZE
<=
1</tt>.
</p>
69 <div class=
"para use">
73 char* path
<span class=
"c">/* Start node to be scanned (also used as work area) */
</span>
80 char *fn;
<span class=
"c">/* This function assumes non-Unicode configuration */
</span>
81 <span class=
"k">#if
</span> _USE_LFN
82 static char lfn[_MAX_LFN +
1];
<span class=
"c">/* Buffer to store the LFN */
</span>
84 fno.lfsize = sizeof lfn;
85 <span class=
"k">#endif
</span>
88 res = f_opendir(
&dir, path);
<span class=
"c">/* Open the directory */
</span>
92 res = f_readdir(
&dir,
&fno);
<span class=
"c">/* Read a directory item */
</span>
93 if (res != FR_OK || fno.fname[
0] ==
0) break;
<span class=
"c">/* Break on error or end of dir */
</span>
94 if (fno.fname[
0] == '.') continue;
<span class=
"c">/* Ignore dot entry */
</span>
95 <span class=
"k">#if
</span> _USE_LFN
96 fn = *fno.lfname ? fno.lfname : fno.fname;
97 <span class=
"k">#else
</span>
99 <span class=
"k">#endif
</span>
100 if (fno.fattrib
& AM_DIR) {
<span class=
"c">/* It is a directory */
</span>
101 sprintf(
&path[i],
"/%s", fn);
102 res = scan_files(path);
104 if (res != FR_OK) break;
105 } else {
<span class=
"c">/* It is a file. */
</span>
106 printf(
"%s/%s\n", path, fn);
118 <div class=
"para ref">
120 <p><tt><a href=
"opendir.html">f_opendir
</a>,
<a href=
"closedir.html">f_closedir
</a>,
<a href=
"stat.html">f_stat
</a>,
<a href=
"sfileinfo.html">FILINFO
</a>,
<a href=
"sdir.html">DIR
</a></tt></p>
123 <p class=
"foot"><a href=
"../00index_e.html">Return
</a></p>