\hypertarget{group__Eio__List}{}\doxysection{Eio file listing A\+PI}
\label{group__Eio__List}\index{Eio file listing API@{Eio file listing API}}


This functions helps list files asynchronously.  


\doxysubsection*{Data Structures}
\begin{DoxyCompactItemize}
\item 
struct \mbox{\hyperlink{struct__Eio__Progress}{\+\_\+\+Eio\+\_\+\+Progress}}
\begin{DoxyCompactList}\small\item\em Represents the current progress of the operation. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsection*{Typedefs}
\begin{DoxyCompactItemize}
\item 
typedef struct \mbox{\hyperlink{struct__Eio__Progress}{\+\_\+\+Eio\+\_\+\+Progress}} \mbox{\hyperlink{group__Eio__List_ga662e69af7f69dd1289e5cb6f0e3c37d6}{Eio\+\_\+\+Progress}}
\item 
\mbox{\Hypertarget{group__Eio__List_gaf7a65e7423d50645e2dcdadc441ae904}\label{group__Eio__List_gaf7a65e7423d50645e2dcdadc441ae904}} 
typedef \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}}($\ast$ {\bfseries Eio\+\_\+\+Filter\+\_\+\+Cb}) (void $\ast$data, \mbox{\hyperlink{group__Eio_ga1145f009745ecb4d9f6a01a9bc5a9ac0}{Eio\+\_\+\+File}} $\ast$handler, const char $\ast$file)
\item 
\mbox{\Hypertarget{group__Eio__List_ga0582c050d51822a3aa6bf27c1f022be5}\label{group__Eio__List_ga0582c050d51822a3aa6bf27c1f022be5}} 
typedef void($\ast$ {\bfseries Eio\+\_\+\+Main\+\_\+\+Cb}) (void $\ast$data, \mbox{\hyperlink{group__Eio_ga1145f009745ecb4d9f6a01a9bc5a9ac0}{Eio\+\_\+\+File}} $\ast$handler, const char $\ast$file)
\item 
\mbox{\Hypertarget{group__Eio__List_ga9c4297f8b8a32f63e8a4011212cfe3a2}\label{group__Eio__List_ga9c4297f8b8a32f63e8a4011212cfe3a2}} 
typedef \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}}($\ast$ {\bfseries Eio\+\_\+\+Filter\+\_\+\+Dir\+\_\+\+Cb}) (void $\ast$data, \mbox{\hyperlink{group__Eio_ga1145f009745ecb4d9f6a01a9bc5a9ac0}{Eio\+\_\+\+File}} $\ast$handler, \mbox{\hyperlink{group__Eina__File__Group_ga8e8779c9f28937a642dbe1be86760646}{Eina\+\_\+\+File\+\_\+\+Direct\+\_\+\+Info}} $\ast$info)
\item 
\mbox{\Hypertarget{group__Eio__List_ga8abd1d45e3319295d182e5d4c4165738}\label{group__Eio__List_ga8abd1d45e3319295d182e5d4c4165738}} 
typedef void($\ast$ {\bfseries Eio\+\_\+\+Main\+\_\+\+Direct\+\_\+\+Cb}) (void $\ast$data, \mbox{\hyperlink{group__Eio_ga1145f009745ecb4d9f6a01a9bc5a9ac0}{Eio\+\_\+\+File}} $\ast$handler, const \mbox{\hyperlink{group__Eina__File__Group_ga8e8779c9f28937a642dbe1be86760646}{Eina\+\_\+\+File\+\_\+\+Direct\+\_\+\+Info}} $\ast$info)
\item 
\mbox{\Hypertarget{group__Eio__List_gaf5f54368a042fdd71bf6d3659e6676aa}\label{group__Eio__List_gaf5f54368a042fdd71bf6d3659e6676aa}} 
typedef void($\ast$ {\bfseries Eio\+\_\+\+Stat\+\_\+\+Cb}) (void $\ast$data, \mbox{\hyperlink{group__Eio_ga1145f009745ecb4d9f6a01a9bc5a9ac0}{Eio\+\_\+\+File}} $\ast$handler, const \mbox{\hyperlink{group__Eina__File__Group_gab15fe1278f044850fcb24417a47364a8}{Eina\+\_\+\+Stat}} $\ast$stat)
\item 
\mbox{\Hypertarget{group__Eio__List_ga0377e64c50fbb8072c0d82c7c303d765}\label{group__Eio__List_ga0377e64c50fbb8072c0d82c7c303d765}} 
typedef void($\ast$ {\bfseries Eio\+\_\+\+Progress\+\_\+\+Cb}) (void $\ast$data, \mbox{\hyperlink{group__Eio_ga1145f009745ecb4d9f6a01a9bc5a9ac0}{Eio\+\_\+\+File}} $\ast$handler, const \mbox{\hyperlink{group__Eio__List_ga662e69af7f69dd1289e5cb6f0e3c37d6}{Eio\+\_\+\+Progress}} $\ast$info)
\item 
\mbox{\Hypertarget{group__Eio__List_ga38c349d1abfcbc73ac586e0aad3fea88}\label{group__Eio__List_ga38c349d1abfcbc73ac586e0aad3fea88}} 
typedef void($\ast$ {\bfseries Eio\+\_\+\+Eet\+\_\+\+Open\+\_\+\+Cb}) (void $\ast$data, \mbox{\hyperlink{group__Eio_ga1145f009745ecb4d9f6a01a9bc5a9ac0}{Eio\+\_\+\+File}} $\ast$handler, \mbox{\hyperlink{group__Eet__File__Group_ga8d9779184a9870c1a225f1f40c76e8a7}{Eet\+\_\+\+File}} $\ast$file)
\item 
\mbox{\Hypertarget{group__Eio__List_ga700c9f019dfc5bb1eeb338fc0f97879c}\label{group__Eio__List_ga700c9f019dfc5bb1eeb338fc0f97879c}} 
typedef void($\ast$ {\bfseries Eio\+\_\+\+Open\+\_\+\+Cb}) (void $\ast$data, \mbox{\hyperlink{group__Eio_ga1145f009745ecb4d9f6a01a9bc5a9ac0}{Eio\+\_\+\+File}} $\ast$handler, \mbox{\hyperlink{group__Eina__File__Group_ga20697123547cbc937c6c9dd845af0403}{Eina\+\_\+\+File}} $\ast$file)
\item 
\mbox{\Hypertarget{group__Eio__List_ga6037422a5d74168fa6f2c5b115f95ae6}\label{group__Eio__List_ga6037422a5d74168fa6f2c5b115f95ae6}} 
typedef \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}}($\ast$ {\bfseries Eio\+\_\+\+Filter\+\_\+\+Map\+\_\+\+Cb}) (void $\ast$data, \mbox{\hyperlink{group__Eio_ga1145f009745ecb4d9f6a01a9bc5a9ac0}{Eio\+\_\+\+File}} $\ast$handler, void $\ast$map, size\+\_\+t length)
\item 
\mbox{\Hypertarget{group__Eio__List_gacfea3604af74b872328f21bb61f5fa06}\label{group__Eio__List_gacfea3604af74b872328f21bb61f5fa06}} 
typedef void($\ast$ {\bfseries Eio\+\_\+\+Map\+\_\+\+Cb}) (void $\ast$data, \mbox{\hyperlink{group__Eio_ga1145f009745ecb4d9f6a01a9bc5a9ac0}{Eio\+\_\+\+File}} $\ast$handler, void $\ast$map, size\+\_\+t length)
\item 
\mbox{\Hypertarget{group__Eio__List_gaf0bde8bc109640ebda0aaa7a0731c48f}\label{group__Eio__List_gaf0bde8bc109640ebda0aaa7a0731c48f}} 
typedef void($\ast$ {\bfseries Eio\+\_\+\+Done\+\_\+\+Data\+\_\+\+Cb}) (void $\ast$data, \mbox{\hyperlink{group__Eio_ga1145f009745ecb4d9f6a01a9bc5a9ac0}{Eio\+\_\+\+File}} $\ast$handler, const char $\ast$read\+\_\+data, unsigned int size)
\item 
\mbox{\Hypertarget{group__Eio__List_ga6e91571831ddb2fc0e0087e90bdf396d}\label{group__Eio__List_ga6e91571831ddb2fc0e0087e90bdf396d}} 
typedef void($\ast$ {\bfseries Eio\+\_\+\+Done\+\_\+\+String\+\_\+\+Cb}) (void $\ast$data, \mbox{\hyperlink{group__Eio_ga1145f009745ecb4d9f6a01a9bc5a9ac0}{Eio\+\_\+\+File}} $\ast$handler, const char $\ast$xattr\+\_\+string)
\item 
\mbox{\Hypertarget{group__Eio__List_gaa76fbde822aada0b355df88a1621adb4}\label{group__Eio__List_gaa76fbde822aada0b355df88a1621adb4}} 
typedef void($\ast$ {\bfseries Eio\+\_\+\+Done\+\_\+\+Double\+\_\+\+Cb}) (void $\ast$data, \mbox{\hyperlink{group__Eio_ga1145f009745ecb4d9f6a01a9bc5a9ac0}{Eio\+\_\+\+File}} $\ast$handler, double xattr\+\_\+double)
\item 
\mbox{\Hypertarget{group__Eio__List_ga8772212dd9769a1d0703707b384fe9dd}\label{group__Eio__List_ga8772212dd9769a1d0703707b384fe9dd}} 
typedef void($\ast$ {\bfseries Eio\+\_\+\+Done\+\_\+\+Int\+\_\+\+Cb}) (void $\ast$data, \mbox{\hyperlink{group__Eio_ga1145f009745ecb4d9f6a01a9bc5a9ac0}{Eio\+\_\+\+File}} $\ast$handler, int i)
\item 
\mbox{\Hypertarget{group__Eio__List_ga861bbd5eb58fbfcb4d7f2ef4946dd227}\label{group__Eio__List_ga861bbd5eb58fbfcb4d7f2ef4946dd227}} 
typedef void($\ast$ {\bfseries Eio\+\_\+\+Done\+\_\+\+E\+Read\+\_\+\+Cb}) (void $\ast$data, \mbox{\hyperlink{group__Eio_ga1145f009745ecb4d9f6a01a9bc5a9ac0}{Eio\+\_\+\+File}} $\ast$handler, void $\ast$decoded)
\item 
\mbox{\Hypertarget{group__Eio__List_gab53a3655aa13b14867efa19aa73f7a34}\label{group__Eio__List_gab53a3655aa13b14867efa19aa73f7a34}} 
typedef void($\ast$ {\bfseries Eio\+\_\+\+Done\+\_\+\+Read\+\_\+\+Cb}) (void $\ast$data, \mbox{\hyperlink{group__Eio_ga1145f009745ecb4d9f6a01a9bc5a9ac0}{Eio\+\_\+\+File}} $\ast$handler, void $\ast$read\+\_\+data, unsigned int size)
\item 
\mbox{\Hypertarget{group__Eio__List_ga1675c359ee4007a1242277a5cb003769}\label{group__Eio__List_ga1675c359ee4007a1242277a5cb003769}} 
typedef void($\ast$ {\bfseries Eio\+\_\+\+Done\+\_\+\+Cb}) (void $\ast$data, \mbox{\hyperlink{group__Eio_ga1145f009745ecb4d9f6a01a9bc5a9ac0}{Eio\+\_\+\+File}} $\ast$handler)
\item 
\mbox{\Hypertarget{group__Eio__List_gaab03f742ad832757e342bce1d6d32b26}\label{group__Eio__List_gaab03f742ad832757e342bce1d6d32b26}} 
typedef void($\ast$ {\bfseries Eio\+\_\+\+Error\+\_\+\+Cb}) (void $\ast$data, \mbox{\hyperlink{group__Eio_ga1145f009745ecb4d9f6a01a9bc5a9ac0}{Eio\+\_\+\+File}} $\ast$handler, int error)
\item 
\mbox{\Hypertarget{group__Eio__List_gaa9a553544c7be9ed3345c4521248a949}\label{group__Eio__List_gaa9a553544c7be9ed3345c4521248a949}} 
typedef void($\ast$ {\bfseries Eio\+\_\+\+Eet\+\_\+\+Error\+\_\+\+Cb}) (void $\ast$data, \mbox{\hyperlink{group__Eio_ga1145f009745ecb4d9f6a01a9bc5a9ac0}{Eio\+\_\+\+File}} $\ast$handler, \mbox{\hyperlink{group__Eet__Group_gab002b16c58e2a62fc7981581647a0092}{Eet\+\_\+\+Error}} err)
\end{DoxyCompactItemize}
\doxysubsection*{Functions}
\begin{DoxyCompactItemize}
\item 
\mbox{\hyperlink{group__Eio_ga1145f009745ecb4d9f6a01a9bc5a9ac0}{Eio\+\_\+\+File}} $\ast$ \mbox{\hyperlink{group__Eio__List_gaa1f1c391838be672433b3d1de70139cd}{eio\+\_\+file\+\_\+ls}} (const char $\ast$dir, Eio\+\_\+\+Filter\+\_\+\+Cb filter\+\_\+cb, Eio\+\_\+\+Main\+\_\+\+Cb main\+\_\+cb, Eio\+\_\+\+Done\+\_\+\+Cb done\+\_\+cb, Eio\+\_\+\+Error\+\_\+\+Cb error\+\_\+cb, const void $\ast$data)
\begin{DoxyCompactList}\small\item\em List contents of a directory without locking your app. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Eio_ga1145f009745ecb4d9f6a01a9bc5a9ac0}{Eio\+\_\+\+File}} $\ast$ \mbox{\hyperlink{group__Eio__List_ga0d051e8b0d4b96548344b7d41a9d886e}{eio\+\_\+file\+\_\+direct\+\_\+ls}} (const char $\ast$dir, Eio\+\_\+\+Filter\+\_\+\+Direct\+\_\+\+Cb filter\+\_\+cb, Eio\+\_\+\+Main\+\_\+\+Direct\+\_\+\+Cb main\+\_\+cb, Eio\+\_\+\+Done\+\_\+\+Cb done\+\_\+cb, Eio\+\_\+\+Error\+\_\+\+Cb error\+\_\+cb, const void $\ast$data)
\begin{DoxyCompactList}\small\item\em List contents of a directory without locking your app. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Eio_ga1145f009745ecb4d9f6a01a9bc5a9ac0}{Eio\+\_\+\+File}} $\ast$ \mbox{\hyperlink{group__Eio__List_ga8ffeb76eaadbdd331d7645b3f7e6f312}{eio\+\_\+file\+\_\+stat\+\_\+ls}} (const char $\ast$dir, Eio\+\_\+\+Filter\+\_\+\+Direct\+\_\+\+Cb filter\+\_\+cb, Eio\+\_\+\+Main\+\_\+\+Direct\+\_\+\+Cb main\+\_\+cb, Eio\+\_\+\+Done\+\_\+\+Cb done\+\_\+cb, Eio\+\_\+\+Error\+\_\+\+Cb error\+\_\+cb, const void $\ast$data)
\begin{DoxyCompactList}\small\item\em List content of a directory without locking your app. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Eio_ga1145f009745ecb4d9f6a01a9bc5a9ac0}{Eio\+\_\+\+File}} $\ast$ \mbox{\hyperlink{group__Eio__List_ga83a7e3edcff2a25fa418c89cd8108597}{eio\+\_\+dir\+\_\+stat\+\_\+ls}} (const char $\ast$dir, Eio\+\_\+\+Filter\+\_\+\+Direct\+\_\+\+Cb filter\+\_\+cb, Eio\+\_\+\+Main\+\_\+\+Direct\+\_\+\+Cb main\+\_\+cb, Eio\+\_\+\+Done\+\_\+\+Cb done\+\_\+cb, Eio\+\_\+\+Error\+\_\+\+Cb error\+\_\+cb, const void $\ast$data)
\begin{DoxyCompactList}\small\item\em List the content of a directory and all its sub-\/content asynchronously. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Eio_ga1145f009745ecb4d9f6a01a9bc5a9ac0}{Eio\+\_\+\+File}} $\ast$ \mbox{\hyperlink{group__Eio__List_ga777a7b7150cf21cb847a0a8d77973229}{eio\+\_\+dir\+\_\+direct\+\_\+ls}} (const char $\ast$dir, Eio\+\_\+\+Filter\+\_\+\+Dir\+\_\+\+Cb filter\+\_\+cb, Eio\+\_\+\+Main\+\_\+\+Direct\+\_\+\+Cb main\+\_\+cb, Eio\+\_\+\+Done\+\_\+\+Cb done\+\_\+cb, Eio\+\_\+\+Error\+\_\+\+Cb error\+\_\+cb, const void $\ast$data)
\begin{DoxyCompactList}\small\item\em List the content of a directory and all its sub-\/content asynchronously. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Eio_ga1145f009745ecb4d9f6a01a9bc5a9ac0}{Eio\+\_\+\+File}} $\ast$ \mbox{\hyperlink{group__Eio__List_gab69236e7e41abf0ea72274d6149aa413}{eio\+\_\+file\+\_\+direct\+\_\+stat}} (const char $\ast$path, Eio\+\_\+\+Stat\+\_\+\+Cb done\+\_\+cb, Eio\+\_\+\+Error\+\_\+\+Cb error\+\_\+cb, const void $\ast$data)
\begin{DoxyCompactList}\small\item\em Stat a file/directory. \end{DoxyCompactList}\end{DoxyCompactItemize}


\doxysubsection{Detailed Description}
This functions helps list files asynchronously. 

This set of functions work on top of Eina\+\_\+\+File and Ecore\+\_\+\+Thread to list files under various condition. 

\doxysubsection{Typedef Documentation}
\mbox{\Hypertarget{group__Eio__List_ga662e69af7f69dd1289e5cb6f0e3c37d6}\label{group__Eio__List_ga662e69af7f69dd1289e5cb6f0e3c37d6}} 
\index{Eio file listing API@{Eio file listing API}!Eio\_Progress@{Eio\_Progress}}
\index{Eio\_Progress@{Eio\_Progress}!Eio file listing API@{Eio file listing API}}
\doxysubsubsection{\texorpdfstring{Eio\_Progress}{Eio\_Progress}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Eio__List_ga662e69af7f69dd1289e5cb6f0e3c37d6}{Eio\+\_\+\+Progress}}}

Progress information on a specific operation. 

\doxysubsection{Function Documentation}
\mbox{\Hypertarget{group__Eio__List_gaa1f1c391838be672433b3d1de70139cd}\label{group__Eio__List_gaa1f1c391838be672433b3d1de70139cd}} 
\index{Eio file listing API@{Eio file listing API}!eio\_file\_ls@{eio\_file\_ls}}
\index{eio\_file\_ls@{eio\_file\_ls}!Eio file listing API@{Eio file listing API}}
\doxysubsubsection{\texorpdfstring{eio\_file\_ls()}{eio\_file\_ls()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Eio_ga1145f009745ecb4d9f6a01a9bc5a9ac0}{Eio\+\_\+\+File}}$\ast$ eio\+\_\+file\+\_\+ls (\begin{DoxyParamCaption}\item[{const char $\ast$}]{dir,  }\item[{Eio\+\_\+\+Filter\+\_\+\+Cb}]{filter\+\_\+cb,  }\item[{Eio\+\_\+\+Main\+\_\+\+Cb}]{main\+\_\+cb,  }\item[{Eio\+\_\+\+Done\+\_\+\+Cb}]{done\+\_\+cb,  }\item[{Eio\+\_\+\+Error\+\_\+\+Cb}]{error\+\_\+cb,  }\item[{const void $\ast$}]{data }\end{DoxyParamCaption})}



List contents of a directory without locking your app. 


\begin{DoxyParams}{Parameters}
{\em dir} & The directory to list. \\
\hline
{\em filter\+\_\+cb} & Callback used to decide if the file will be passed to main\+\_\+cb \\
\hline
{\em main\+\_\+cb} & Callback called for each listed file if it was not filtered. \\
\hline
{\em done\+\_\+cb} & Callback called when the ls operation is done. \\
\hline
{\em error\+\_\+cb} & Callback called when either the directory could not be opened or the operation has been canceled. \\
\hline
{\em data} & Unmodified user data passed to callbacks \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
A reference to the I/O operation.
\end{DoxyReturn}
This function is responsible for listing the content of a directory without blocking your application. It\textquotesingle{}s equivalent to the \char`\"{}ls\char`\"{} shell command. Every file will be passed to the filter\+\_\+cb, so it\textquotesingle{}s your job to decide if you want to pass the file to the main\+\_\+cb or not. Return E\+I\+N\+A\+\_\+\+T\+R\+UE to pass it to the main\+\_\+cb or E\+I\+N\+A\+\_\+\+F\+A\+L\+SE to ignore it. It runs \mbox{\hyperlink{group__Eina__File__Group_ga8c4fabb379b865a4ec134a5c4436be2a}{eina\+\_\+file\+\_\+ls()}} in a separate thread using \mbox{\hyperlink{group__Ecore__Thread__Group_ga4bde6b50e177f26ab5b2688aa99e3878}{ecore\+\_\+thread\+\_\+feedback\+\_\+run()}}.

\begin{DoxySeeAlso}{See also}
\mbox{\hyperlink{group__Eina__File__Group_ga8c4fabb379b865a4ec134a5c4436be2a}{eina\+\_\+file\+\_\+ls()}} 

\mbox{\hyperlink{group__Ecore__Thread__Group_ga4bde6b50e177f26ab5b2688aa99e3878}{ecore\+\_\+thread\+\_\+feedback\+\_\+run()}} 

\mbox{\hyperlink{group__Eio__List_ga0d051e8b0d4b96548344b7d41a9d886e}{eio\+\_\+file\+\_\+direct\+\_\+ls()}} 

\mbox{\hyperlink{group__Eio__List_ga8ffeb76eaadbdd331d7645b3f7e6f312}{eio\+\_\+file\+\_\+stat\+\_\+ls()}} 
\end{DoxySeeAlso}
\mbox{\Hypertarget{group__Eio__List_ga0d051e8b0d4b96548344b7d41a9d886e}\label{group__Eio__List_ga0d051e8b0d4b96548344b7d41a9d886e}} 
\index{Eio file listing API@{Eio file listing API}!eio\_file\_direct\_ls@{eio\_file\_direct\_ls}}
\index{eio\_file\_direct\_ls@{eio\_file\_direct\_ls}!Eio file listing API@{Eio file listing API}}
\doxysubsubsection{\texorpdfstring{eio\_file\_direct\_ls()}{eio\_file\_direct\_ls()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Eio_ga1145f009745ecb4d9f6a01a9bc5a9ac0}{Eio\+\_\+\+File}}$\ast$ eio\+\_\+file\+\_\+direct\+\_\+ls (\begin{DoxyParamCaption}\item[{const char $\ast$}]{dir,  }\item[{Eio\+\_\+\+Filter\+\_\+\+Direct\+\_\+\+Cb}]{filter\+\_\+cb,  }\item[{Eio\+\_\+\+Main\+\_\+\+Direct\+\_\+\+Cb}]{main\+\_\+cb,  }\item[{Eio\+\_\+\+Done\+\_\+\+Cb}]{done\+\_\+cb,  }\item[{Eio\+\_\+\+Error\+\_\+\+Cb}]{error\+\_\+cb,  }\item[{const void $\ast$}]{data }\end{DoxyParamCaption})}



List contents of a directory without locking your app. 


\begin{DoxyParams}{Parameters}
{\em dir} & The directory to list. \\
\hline
{\em filter\+\_\+cb} & Callback used to decide if the file will be passed to main\+\_\+cb \\
\hline
{\em main\+\_\+cb} & Callback called from the main loop for each accepted file (not filtered). \\
\hline
{\em done\+\_\+cb} & Callback called from the main loop after the contents of the directory has been listed. \\
\hline
{\em error\+\_\+cb} & Callback called from the main loop when either the directory could not be opened or the operation has been canceled. \\
\hline
{\em data} & Unmodified user data passed to callbacks \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
A reference to the I/O operation.
\end{DoxyReturn}
\mbox{\hyperlink{group__Eio__List_ga0d051e8b0d4b96548344b7d41a9d886e}{eio\+\_\+file\+\_\+direct\+\_\+ls()}} runs \mbox{\hyperlink{group__Eina__File__Group_ga90d5372f6c6ef085760e26cb8c4993c8}{eina\+\_\+file\+\_\+direct\+\_\+ls()}} in a separate thread using \mbox{\hyperlink{group__Ecore__Thread__Group_ga4bde6b50e177f26ab5b2688aa99e3878}{ecore\+\_\+thread\+\_\+feedback\+\_\+run()}}. This prevents any blocking in your apps. Every file will be passed to the filter\+\_\+cb, so it\textquotesingle{}s your job to decide if you want to pass the file to the main\+\_\+cb or not. Return E\+I\+N\+A\+\_\+\+T\+R\+UE to pass it to the main\+\_\+cb or E\+I\+N\+A\+\_\+\+F\+A\+L\+SE to ignore it.

\begin{DoxyWarning}{Warning}
If readdir\+\_\+r doesn\textquotesingle{}t contain file type information, file type is E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+U\+N\+K\+N\+O\+WN.
\end{DoxyWarning}
\begin{DoxyNote}{Note}
The iterator walks over \textquotesingle{}.\textquotesingle{} and \textquotesingle{}..\textquotesingle{} without returning them. 

The difference between this function and \mbox{\hyperlink{group__Eina__File__Group_ga21d5e94767ae9932751649ce09a2f98f}{eina\+\_\+file\+\_\+stat\+\_\+ls()}} is that it may not get the file type information however it is likely to be faster.
\end{DoxyNote}
\begin{DoxySeeAlso}{See also}
\mbox{\hyperlink{group__Eio__List_ga8ffeb76eaadbdd331d7645b3f7e6f312}{eio\+\_\+file\+\_\+stat\+\_\+ls()}} 

\mbox{\hyperlink{group__Eina__File__Group_ga90d5372f6c6ef085760e26cb8c4993c8}{eina\+\_\+file\+\_\+direct\+\_\+ls()}} 

\mbox{\hyperlink{group__Ecore__Thread__Group_ga4bde6b50e177f26ab5b2688aa99e3878}{ecore\+\_\+thread\+\_\+feedback\+\_\+run()}} 
\end{DoxySeeAlso}
\mbox{\Hypertarget{group__Eio__List_ga8ffeb76eaadbdd331d7645b3f7e6f312}\label{group__Eio__List_ga8ffeb76eaadbdd331d7645b3f7e6f312}} 
\index{Eio file listing API@{Eio file listing API}!eio\_file\_stat\_ls@{eio\_file\_stat\_ls}}
\index{eio\_file\_stat\_ls@{eio\_file\_stat\_ls}!Eio file listing API@{Eio file listing API}}
\doxysubsubsection{\texorpdfstring{eio\_file\_stat\_ls()}{eio\_file\_stat\_ls()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Eio_ga1145f009745ecb4d9f6a01a9bc5a9ac0}{Eio\+\_\+\+File}}$\ast$ eio\+\_\+file\+\_\+stat\+\_\+ls (\begin{DoxyParamCaption}\item[{const char $\ast$}]{dir,  }\item[{Eio\+\_\+\+Filter\+\_\+\+Direct\+\_\+\+Cb}]{filter\+\_\+cb,  }\item[{Eio\+\_\+\+Main\+\_\+\+Direct\+\_\+\+Cb}]{main\+\_\+cb,  }\item[{Eio\+\_\+\+Done\+\_\+\+Cb}]{done\+\_\+cb,  }\item[{Eio\+\_\+\+Error\+\_\+\+Cb}]{error\+\_\+cb,  }\item[{const void $\ast$}]{data }\end{DoxyParamCaption})}



List content of a directory without locking your app. 


\begin{DoxyParams}{Parameters}
{\em dir} & The directory to list. \\
\hline
{\em filter\+\_\+cb} & Callback used to decide if the file will be passed to main\+\_\+cb \\
\hline
{\em main\+\_\+cb} & Callback called from the main loop for each accepted file (not filtered). \\
\hline
{\em done\+\_\+cb} & Callback called from the main loop after the contents of the directory has been listed. \\
\hline
{\em error\+\_\+cb} & Callback called from the main loop when either the directory could not be opened or the operation has been canceled. \\
\hline
{\em data} & Unmodified user data passed to callbacks \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
A reference to the I/O operation.
\end{DoxyReturn}
Every file will be passed to the filter\+\_\+cb, so it\textquotesingle{}s your job to decide if you want to pass the file to the main\+\_\+cb or not. Return E\+I\+N\+A\+\_\+\+T\+R\+UE to pass it to the main\+\_\+cb or E\+I\+N\+A\+\_\+\+F\+A\+L\+SE to ignore it. \mbox{\hyperlink{group__Eio__List_ga8ffeb76eaadbdd331d7645b3f7e6f312}{eio\+\_\+file\+\_\+stat\+\_\+ls()}} run \mbox{\hyperlink{group__Eina__File__Group_ga21d5e94767ae9932751649ce09a2f98f}{eina\+\_\+file\+\_\+stat\+\_\+ls()}} in a separate thread using \mbox{\hyperlink{group__Ecore__Thread__Group_ga4bde6b50e177f26ab5b2688aa99e3878}{ecore\+\_\+thread\+\_\+feedback\+\_\+run()}}.

\begin{DoxyNote}{Note}
The iterator walks over \textquotesingle{}.\textquotesingle{} and \textquotesingle{}..\textquotesingle{} without returning them. 

The difference between this function and \mbox{\hyperlink{group__Eio__List_ga0d051e8b0d4b96548344b7d41a9d886e}{eio\+\_\+file\+\_\+direct\+\_\+ls()}} is that it guarantees the file type information to be correct by incurring a possible performance penalty.
\end{DoxyNote}
\begin{DoxySeeAlso}{See also}
\mbox{\hyperlink{group__Eio__List_ga8ffeb76eaadbdd331d7645b3f7e6f312}{eio\+\_\+file\+\_\+stat\+\_\+ls()}} 

\mbox{\hyperlink{group__Eina__File__Group_ga21d5e94767ae9932751649ce09a2f98f}{eina\+\_\+file\+\_\+stat\+\_\+ls()}} 

\mbox{\hyperlink{group__Ecore__Thread__Group_ga4bde6b50e177f26ab5b2688aa99e3878}{ecore\+\_\+thread\+\_\+feedback\+\_\+run()}} 
\end{DoxySeeAlso}
\mbox{\Hypertarget{group__Eio__List_ga83a7e3edcff2a25fa418c89cd8108597}\label{group__Eio__List_ga83a7e3edcff2a25fa418c89cd8108597}} 
\index{Eio file listing API@{Eio file listing API}!eio\_dir\_stat\_ls@{eio\_dir\_stat\_ls}}
\index{eio\_dir\_stat\_ls@{eio\_dir\_stat\_ls}!Eio file listing API@{Eio file listing API}}
\doxysubsubsection{\texorpdfstring{eio\_dir\_stat\_ls()}{eio\_dir\_stat\_ls()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Eio_ga1145f009745ecb4d9f6a01a9bc5a9ac0}{Eio\+\_\+\+File}}$\ast$ eio\+\_\+dir\+\_\+stat\+\_\+ls (\begin{DoxyParamCaption}\item[{const char $\ast$}]{dir,  }\item[{Eio\+\_\+\+Filter\+\_\+\+Direct\+\_\+\+Cb}]{filter\+\_\+cb,  }\item[{Eio\+\_\+\+Main\+\_\+\+Direct\+\_\+\+Cb}]{main\+\_\+cb,  }\item[{Eio\+\_\+\+Done\+\_\+\+Cb}]{done\+\_\+cb,  }\item[{Eio\+\_\+\+Error\+\_\+\+Cb}]{error\+\_\+cb,  }\item[{const void $\ast$}]{data }\end{DoxyParamCaption})}



List the content of a directory and all its sub-\/content asynchronously. 


\begin{DoxyParams}{Parameters}
{\em dir} & The directory to list. \\
\hline
{\em filter\+\_\+cb} & Callback used to decide if the file will be passed to main\+\_\+cb \\
\hline
{\em main\+\_\+cb} & Callback called from the main loop for each accepted file (not filtered). \\
\hline
{\em done\+\_\+cb} & Callback called from the main loop after the contents of the directory has been listed. \\
\hline
{\em error\+\_\+cb} & Callback called from the main loop when either the directory could not be opened or the operation has been canceled. \\
\hline
{\em data} & Unmodified user data passed to callbacks \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
A reference to the I/O operation.
\end{DoxyReturn}
\mbox{\hyperlink{group__Eio__List_ga83a7e3edcff2a25fa418c89cd8108597}{eio\+\_\+dir\+\_\+stat\+\_\+ls()}} runs \mbox{\hyperlink{group__Eina__File__Group_ga21d5e94767ae9932751649ce09a2f98f}{eina\+\_\+file\+\_\+stat\+\_\+ls()}} recursively in a separate thread using \mbox{\hyperlink{group__Ecore__Thread__Group_ga4bde6b50e177f26ab5b2688aa99e3878}{ecore\+\_\+thread\+\_\+feedback\+\_\+run()}}. This prevents any blocking in your apps. Every file will be passed to the filter\+\_\+cb, so it\textquotesingle{}s your job to decide if you want to pass the file to the main\+\_\+cb or not. Return E\+I\+N\+A\+\_\+\+T\+R\+UE to pass it to the main\+\_\+cb or E\+I\+N\+A\+\_\+\+F\+A\+L\+SE to ignore it.

\begin{DoxySeeAlso}{See also}
\mbox{\hyperlink{group__Eio__List_ga8ffeb76eaadbdd331d7645b3f7e6f312}{eio\+\_\+file\+\_\+stat\+\_\+ls()}} 

\mbox{\hyperlink{group__Eio__List_ga777a7b7150cf21cb847a0a8d77973229}{eio\+\_\+dir\+\_\+direct\+\_\+ls()}} 

\mbox{\hyperlink{group__Eina__File__Group_ga21d5e94767ae9932751649ce09a2f98f}{eina\+\_\+file\+\_\+stat\+\_\+ls()}} 

\mbox{\hyperlink{group__Ecore__Thread__Group_ga4bde6b50e177f26ab5b2688aa99e3878}{ecore\+\_\+thread\+\_\+feedback\+\_\+run()}} 
\end{DoxySeeAlso}
\mbox{\Hypertarget{group__Eio__List_ga777a7b7150cf21cb847a0a8d77973229}\label{group__Eio__List_ga777a7b7150cf21cb847a0a8d77973229}} 
\index{Eio file listing API@{Eio file listing API}!eio\_dir\_direct\_ls@{eio\_dir\_direct\_ls}}
\index{eio\_dir\_direct\_ls@{eio\_dir\_direct\_ls}!Eio file listing API@{Eio file listing API}}
\doxysubsubsection{\texorpdfstring{eio\_dir\_direct\_ls()}{eio\_dir\_direct\_ls()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Eio_ga1145f009745ecb4d9f6a01a9bc5a9ac0}{Eio\+\_\+\+File}}$\ast$ eio\+\_\+dir\+\_\+direct\+\_\+ls (\begin{DoxyParamCaption}\item[{const char $\ast$}]{dir,  }\item[{Eio\+\_\+\+Filter\+\_\+\+Dir\+\_\+\+Cb}]{filter\+\_\+cb,  }\item[{Eio\+\_\+\+Main\+\_\+\+Direct\+\_\+\+Cb}]{main\+\_\+cb,  }\item[{Eio\+\_\+\+Done\+\_\+\+Cb}]{done\+\_\+cb,  }\item[{Eio\+\_\+\+Error\+\_\+\+Cb}]{error\+\_\+cb,  }\item[{const void $\ast$}]{data }\end{DoxyParamCaption})}



List the content of a directory and all its sub-\/content asynchronously. 


\begin{DoxyParams}{Parameters}
{\em dir} & The directory to list. \\
\hline
{\em filter\+\_\+cb} & Callback used to decide if the file will be passed to main\+\_\+cb \\
\hline
{\em main\+\_\+cb} & Callback called from the main loop for each accepted file (not filtered). \\
\hline
{\em done\+\_\+cb} & Callback called from the main loop after the contents of the directory has been listed. \\
\hline
{\em error\+\_\+cb} & Callback called from the main loop when either the directory could not be opened or the operation has been canceled. \\
\hline
{\em data} & Unmodified user data passed to callbacks \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
A reference to the I/O operation.
\end{DoxyReturn}
\mbox{\hyperlink{group__Eio__List_ga777a7b7150cf21cb847a0a8d77973229}{eio\+\_\+dir\+\_\+direct\+\_\+ls()}} runs \mbox{\hyperlink{group__Eina__File__Group_ga90d5372f6c6ef085760e26cb8c4993c8}{eina\+\_\+file\+\_\+direct\+\_\+ls()}} recursively in a separate thread using \mbox{\hyperlink{group__Ecore__Thread__Group_ga4bde6b50e177f26ab5b2688aa99e3878}{ecore\+\_\+thread\+\_\+feedback\+\_\+run()}}. This prevents any blocking in your apps. Every file will be passed to the filter\+\_\+cb, so it\textquotesingle{}s your job to decide if you want to pass the file to the main\+\_\+cb or not. Return E\+I\+N\+A\+\_\+\+T\+R\+UE to pass it to the main\+\_\+cb or E\+I\+N\+A\+\_\+\+F\+A\+L\+SE to ignore it.

\begin{DoxySeeAlso}{See also}
\mbox{\hyperlink{group__Eio__List_ga0d051e8b0d4b96548344b7d41a9d886e}{eio\+\_\+file\+\_\+direct\+\_\+ls()}} 

\mbox{\hyperlink{group__Eio__List_ga83a7e3edcff2a25fa418c89cd8108597}{eio\+\_\+dir\+\_\+stat\+\_\+ls()}} 

\mbox{\hyperlink{group__Eina__File__Group_ga90d5372f6c6ef085760e26cb8c4993c8}{eina\+\_\+file\+\_\+direct\+\_\+ls()}} 

\mbox{\hyperlink{group__Ecore__Thread__Group_ga4bde6b50e177f26ab5b2688aa99e3878}{ecore\+\_\+thread\+\_\+feedback\+\_\+run()}} 
\end{DoxySeeAlso}
\mbox{\Hypertarget{group__Eio__List_gab69236e7e41abf0ea72274d6149aa413}\label{group__Eio__List_gab69236e7e41abf0ea72274d6149aa413}} 
\index{Eio file listing API@{Eio file listing API}!eio\_file\_direct\_stat@{eio\_file\_direct\_stat}}
\index{eio\_file\_direct\_stat@{eio\_file\_direct\_stat}!Eio file listing API@{Eio file listing API}}
\doxysubsubsection{\texorpdfstring{eio\_file\_direct\_stat()}{eio\_file\_direct\_stat()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Eio_ga1145f009745ecb4d9f6a01a9bc5a9ac0}{Eio\+\_\+\+File}}$\ast$ eio\+\_\+file\+\_\+direct\+\_\+stat (\begin{DoxyParamCaption}\item[{const char $\ast$}]{path,  }\item[{Eio\+\_\+\+Stat\+\_\+\+Cb}]{done\+\_\+cb,  }\item[{Eio\+\_\+\+Error\+\_\+\+Cb}]{error\+\_\+cb,  }\item[{const void $\ast$}]{data }\end{DoxyParamCaption})}



Stat a file/directory. 


\begin{DoxyParams}{Parameters}
{\em path} & The path to stat. \\
\hline
{\em done\+\_\+cb} & Callback called from the main loop when stat was successfully called. \\
\hline
{\em error\+\_\+cb} & Callback called from the main loop when stat failed or has been canceled. \\
\hline
{\em data} & Unmodified user data passed to callbacks \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
A reference to the I/O operation.
\end{DoxyReturn}
eio\+\_\+file\+\_\+direct\+\_\+stat calls stat in another thread. This prevents any blocking in your apps. 