

For brevity, variable declarations and initialization are omitted from this page, however the full source code can be seen \mbox{\hyperlink{eina_file_example_01}{here}}.

Here we have a simple callback to print the name of a file and the path that contains it\+: 
\begin{DoxyCodeInclude}{0}
\DoxyCodeLine{\textcolor{keyword}{static}\ \textcolor{keywordtype}{void}}
\DoxyCodeLine{\_print\_cb(\textcolor{keyword}{const}\ \textcolor{keywordtype}{char}\ *name,\ \textcolor{keyword}{const}\ \textcolor{keywordtype}{char}\ *path,\ \textcolor{keywordtype}{void}\ *data\ \mbox{\hyperlink{group__Eina__Types__Group_ga82d751be730f849719ca292f9558be87}{EINA\_UNUSED}})}
\DoxyCodeLine{\{}
\DoxyCodeLine{\ \ \ printf(\textcolor{stringliteral}{"{}file\ \%s\ in\ \%s\(\backslash\)n"{}},\ name,\ path);}
\DoxyCodeLine{\}}

\end{DoxyCodeInclude}
 We can use this callback in the following call\+: 
\begin{DoxyCodeInclude}{0}
\DoxyCodeLine{\ \ \ \mbox{\hyperlink{group__Eina__File__Group_gacb53e3286cf85a6652891ee5e5ec917b}{eina\_file\_dir\_list}}(\textcolor{stringliteral}{"{}/home/"{}},\ \mbox{\hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{EINA\_FALSE}},\ \_print\_cb,\ NULL);}

\end{DoxyCodeInclude}
 The above is a way to print the files in a directory, but it is not the only one\+: 
\begin{DoxyCodeInclude}{0}
\DoxyCodeLine{}
\DoxyCodeLine{\ \ \ it\ =\ \mbox{\hyperlink{group__Eina__File__Group_gab744fcd8eb2369fed66520ff82930650}{eina\_file\_ls}}(\textcolor{stringliteral}{"{}/home/"{}});}
\DoxyCodeLine{\ \ \ \mbox{\hyperlink{group__Eina__Iterator__Group_gac7314580e18868ef229f5d2814562794}{EINA\_ITERATOR\_FOREACH}}(it,\ f\_name)}
\DoxyCodeLine{\ \ \ \ \ \{}
\DoxyCodeLine{\ \ \ \ \ \ \ \ printf(\textcolor{stringliteral}{"{}\%s\(\backslash\)n"{}},\ f\_name);}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \mbox{\hyperlink{group__Eina__Stringshare__Group_ga5538b4a134987b8a01744fad1a845ba4}{eina\_stringshare\_del}}(f\_name);}
\DoxyCodeLine{\ \ \ \ \ \}}
\DoxyCodeLine{\ \ \ \mbox{\hyperlink{group__Eina__Iterator__Group_ga50da005e8d26c0a043d0d1c025bc9008}{eina\_iterator\_free}}(it);}

\end{DoxyCodeInclude}
 And now two ways to get more information than just file names\+: 
\begin{DoxyCodeInclude}{0}
\DoxyCodeLine{}
\DoxyCodeLine{\ \ \ it\ =\ \mbox{\hyperlink{group__Eina__File__Group_ga31221ab03e0e4e1d9b33be3950a19d06}{eina\_file\_stat\_ls}}(\textcolor{stringliteral}{"{}/home/"{}});}
\DoxyCodeLine{\ \ \ \mbox{\hyperlink{group__Eina__Iterator__Group_gac7314580e18868ef229f5d2814562794}{EINA\_ITERATOR\_FOREACH}}(it,\ f\_info)}
\DoxyCodeLine{\ \ \ \ \ printf(\textcolor{stringliteral}{"{}\%s\ if\ of\ type\ \%d\(\backslash\)n"{}},\ f\_info-\/>path,\ f\_info-\/>type);}
\DoxyCodeLine{\ \ \ \mbox{\hyperlink{group__Eina__Iterator__Group_ga50da005e8d26c0a043d0d1c025bc9008}{eina\_iterator\_free}}(it);}
\DoxyCodeLine{}
\DoxyCodeLine{\ \ \ it\ =\ \mbox{\hyperlink{group__Eina__File__Group_ga581f32b7e4858077861da108ea6d3948}{eina\_file\_direct\_ls}}(\textcolor{stringliteral}{"{}/home/"{}});}
\DoxyCodeLine{\ \ \ \mbox{\hyperlink{group__Eina__Iterator__Group_gac7314580e18868ef229f5d2814562794}{EINA\_ITERATOR\_FOREACH}}(it,\ f\_info)}
\DoxyCodeLine{\ \ \ \ \ printf(\textcolor{stringliteral}{"{}\%s\ if\ of\ type\ \%d\(\backslash\)n"{}},\ f\_info-\/>path,\ f\_info-\/>type);}
\DoxyCodeLine{\ \ \ \mbox{\hyperlink{group__Eina__Iterator__Group_ga50da005e8d26c0a043d0d1c025bc9008}{eina\_iterator\_free}}(it);}

\end{DoxyCodeInclude}
 The above mentioned ways of getting files on a list may produce the same output, but they have an important difference, \mbox{\hyperlink{group__Eina__File__Group_ga581f32b7e4858077861da108ea6d3948}{eina\+\_\+file\+\_\+direct\+\_\+ls()}} does {\bfseries{not}} call stat, this means that on some systems it might not have file type information. On the other hand, it might be faster than \mbox{\hyperlink{group__Eina__File__Group_ga31221ab03e0e4e1d9b33be3950a19d06}{eina\+\_\+file\+\_\+stat\+\_\+ls()}}. 