\hypertarget{group__Eio__List}{}\doxysection{Eio file listing API}
\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 
\mbox{\Hypertarget{group__Eio__List_ga662e69af7f69dd1289e5cb6f0e3c37d6}\label{group__Eio__List_ga662e69af7f69dd1289e5cb6f0e3c37d6}} 
typedef struct \mbox{\hyperlink{struct__Eio__Progress}{\+\_\+\+Eio\+\_\+\+Progress}} {\bfseries Eio\+\_\+\+Progress}
\begin{DoxyCompactList}\small\item\em Progress information on a specific operation. \end{DoxyCompactList}\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\+\_\+\+ERead\+\_\+\+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_ga966e47d17fb3f81293bc0ada3c031d95}{Eet\+\_\+\+Error}} err)
\end{DoxyCompactItemize}
\doxysubsection*{Functions}
\begin{DoxyCompactItemize}
\item 
EIO\+\_\+\+API \mbox{\hyperlink{group__Eio_ga1145f009745ecb4d9f6a01a9bc5a9ac0}{Eio\+\_\+\+File}} $\ast$ \mbox{\hyperlink{group__Eio__List_ga4f2b3506617c59ed5df247d26b6b628f}{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 
EIO\+\_\+\+API \mbox{\hyperlink{group__Eio_ga1145f009745ecb4d9f6a01a9bc5a9ac0}{Eio\+\_\+\+File}} $\ast$ \mbox{\hyperlink{group__Eio__List_gabd7f046cbb3f6959874d5f67425a3f7e}{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 
EIO\+\_\+\+API \mbox{\hyperlink{group__Eio_ga1145f009745ecb4d9f6a01a9bc5a9ac0}{Eio\+\_\+\+File}} $\ast$ \mbox{\hyperlink{group__Eio__List_gac6bd02afa01b5cb35083b4dd70929f88}{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 
EIO\+\_\+\+API \mbox{\hyperlink{group__Eio_ga1145f009745ecb4d9f6a01a9bc5a9ac0}{Eio\+\_\+\+File}} $\ast$ \mbox{\hyperlink{group__Eio__List_gaad41b19d53306abfd3aa23a7434648ad}{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 
EIO\+\_\+\+API \mbox{\hyperlink{group__Eio_ga1145f009745ecb4d9f6a01a9bc5a9ac0}{Eio\+\_\+\+File}} $\ast$ \mbox{\hyperlink{group__Eio__List_ga3d468c8a619af2fa63df70a4bf1085e6}{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 
EIO\+\_\+\+API \mbox{\hyperlink{group__Eio_ga1145f009745ecb4d9f6a01a9bc5a9ac0}{Eio\+\_\+\+File}} $\ast$ \mbox{\hyperlink{group__Eio__List_gab28606b1b0a5937fe43029db74345cc0}{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{Function Documentation}
\mbox{\Hypertarget{group__Eio__List_ga4f2b3506617c59ed5df247d26b6b628f}\label{group__Eio__List_ga4f2b3506617c59ed5df247d26b6b628f}} 
\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 EIO\+\_\+\+API \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 EINA\+\_\+\+TRUE to pass it to the main\+\_\+cb or EINA\+\_\+\+FALSE to ignore it. It runs \mbox{\hyperlink{group__Eina__File__Group_gab744fcd8eb2369fed66520ff82930650}{eina\+\_\+file\+\_\+ls()}} in a separate thread using \mbox{\hyperlink{group__Ecore__Thread__Group_ga941fa6f0313a6fe551f5d80e2a012bba}{ecore\+\_\+thread\+\_\+feedback\+\_\+run()}}.

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

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

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

\mbox{\hyperlink{group__Eio__List_gac6bd02afa01b5cb35083b4dd70929f88}{eio\+\_\+file\+\_\+stat\+\_\+ls()}} 
\end{DoxySeeAlso}


References \mbox{\hyperlink{group__Eina__Safety__Checks__Group_gab2b07061fc6500dedd9cd41c8d16f95d}{EINA\+\_\+\+SAFETY\+\_\+\+ON\+\_\+\+NULL\+\_\+\+RETURN\+\_\+\+VAL}}.

\mbox{\Hypertarget{group__Eio__List_gabd7f046cbb3f6959874d5f67425a3f7e}\label{group__Eio__List_gabd7f046cbb3f6959874d5f67425a3f7e}} 
\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 EIO\+\_\+\+API \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_gabd7f046cbb3f6959874d5f67425a3f7e}{eio\+\_\+file\+\_\+direct\+\_\+ls()}} runs \mbox{\hyperlink{group__Eina__File__Group_ga581f32b7e4858077861da108ea6d3948}{eina\+\_\+file\+\_\+direct\+\_\+ls()}} in a separate thread using \mbox{\hyperlink{group__Ecore__Thread__Group_ga941fa6f0313a6fe551f5d80e2a012bba}{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 EINA\+\_\+\+TRUE to pass it to the main\+\_\+cb or EINA\+\_\+\+FALSE to ignore it.

\begin{DoxyWarning}{Warning}
If readdir\+\_\+r doesn\textquotesingle{}t contain file type information, file type is EINA\+\_\+\+FILE\+\_\+\+UNKNOWN.
\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_ga31221ab03e0e4e1d9b33be3950a19d06}{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_gac6bd02afa01b5cb35083b4dd70929f88}{eio\+\_\+file\+\_\+stat\+\_\+ls()}} 

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

\mbox{\hyperlink{group__Ecore__Thread__Group_ga941fa6f0313a6fe551f5d80e2a012bba}{ecore\+\_\+thread\+\_\+feedback\+\_\+run()}} 
\end{DoxySeeAlso}


References \mbox{\hyperlink{group__Eina__Safety__Checks__Group_gab2b07061fc6500dedd9cd41c8d16f95d}{EINA\+\_\+\+SAFETY\+\_\+\+ON\+\_\+\+NULL\+\_\+\+RETURN\+\_\+\+VAL}}.

\mbox{\Hypertarget{group__Eio__List_gac6bd02afa01b5cb35083b4dd70929f88}\label{group__Eio__List_gac6bd02afa01b5cb35083b4dd70929f88}} 
\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 EIO\+\_\+\+API \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 EINA\+\_\+\+TRUE to pass it to the main\+\_\+cb or EINA\+\_\+\+FALSE to ignore it. \mbox{\hyperlink{group__Eio__List_gac6bd02afa01b5cb35083b4dd70929f88}{eio\+\_\+file\+\_\+stat\+\_\+ls()}} run \mbox{\hyperlink{group__Eina__File__Group_ga31221ab03e0e4e1d9b33be3950a19d06}{eina\+\_\+file\+\_\+stat\+\_\+ls()}} in a separate thread using \mbox{\hyperlink{group__Ecore__Thread__Group_ga941fa6f0313a6fe551f5d80e2a012bba}{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_gabd7f046cbb3f6959874d5f67425a3f7e}{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_gac6bd02afa01b5cb35083b4dd70929f88}{eio\+\_\+file\+\_\+stat\+\_\+ls()}} 

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

\mbox{\hyperlink{group__Ecore__Thread__Group_ga941fa6f0313a6fe551f5d80e2a012bba}{ecore\+\_\+thread\+\_\+feedback\+\_\+run()}} 
\end{DoxySeeAlso}


References \mbox{\hyperlink{group__Eina__Safety__Checks__Group_gab2b07061fc6500dedd9cd41c8d16f95d}{EINA\+\_\+\+SAFETY\+\_\+\+ON\+\_\+\+NULL\+\_\+\+RETURN\+\_\+\+VAL}}.

\mbox{\Hypertarget{group__Eio__List_gaad41b19d53306abfd3aa23a7434648ad}\label{group__Eio__List_gaad41b19d53306abfd3aa23a7434648ad}} 
\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 EIO\+\_\+\+API \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_gaad41b19d53306abfd3aa23a7434648ad}{eio\+\_\+dir\+\_\+stat\+\_\+ls()}} runs \mbox{\hyperlink{group__Eina__File__Group_ga31221ab03e0e4e1d9b33be3950a19d06}{eina\+\_\+file\+\_\+stat\+\_\+ls()}} recursively in a separate thread using \mbox{\hyperlink{group__Ecore__Thread__Group_ga941fa6f0313a6fe551f5d80e2a012bba}{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 EINA\+\_\+\+TRUE to pass it to the main\+\_\+cb or EINA\+\_\+\+FALSE to ignore it.

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

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

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

\mbox{\hyperlink{group__Ecore__Thread__Group_ga941fa6f0313a6fe551f5d80e2a012bba}{ecore\+\_\+thread\+\_\+feedback\+\_\+run()}} 
\end{DoxySeeAlso}


References \mbox{\hyperlink{group__Eina__Safety__Checks__Group_gab2b07061fc6500dedd9cd41c8d16f95d}{EINA\+\_\+\+SAFETY\+\_\+\+ON\+\_\+\+NULL\+\_\+\+RETURN\+\_\+\+VAL}}.

\mbox{\Hypertarget{group__Eio__List_ga3d468c8a619af2fa63df70a4bf1085e6}\label{group__Eio__List_ga3d468c8a619af2fa63df70a4bf1085e6}} 
\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 EIO\+\_\+\+API \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_ga3d468c8a619af2fa63df70a4bf1085e6}{eio\+\_\+dir\+\_\+direct\+\_\+ls()}} runs \mbox{\hyperlink{group__Eina__File__Group_ga581f32b7e4858077861da108ea6d3948}{eina\+\_\+file\+\_\+direct\+\_\+ls()}} recursively in a separate thread using \mbox{\hyperlink{group__Ecore__Thread__Group_ga941fa6f0313a6fe551f5d80e2a012bba}{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 EINA\+\_\+\+TRUE to pass it to the main\+\_\+cb or EINA\+\_\+\+FALSE to ignore it.

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

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

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

\mbox{\hyperlink{group__Ecore__Thread__Group_ga941fa6f0313a6fe551f5d80e2a012bba}{ecore\+\_\+thread\+\_\+feedback\+\_\+run()}} 
\end{DoxySeeAlso}


References \mbox{\hyperlink{group__Eina__Safety__Checks__Group_gab2b07061fc6500dedd9cd41c8d16f95d}{EINA\+\_\+\+SAFETY\+\_\+\+ON\+\_\+\+NULL\+\_\+\+RETURN\+\_\+\+VAL}}.

\mbox{\Hypertarget{group__Eio__List_gab28606b1b0a5937fe43029db74345cc0}\label{group__Eio__List_gab28606b1b0a5937fe43029db74345cc0}} 
\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 EIO\+\_\+\+API \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. 

References \mbox{\hyperlink{group__Eina__Safety__Checks__Group_gab2b07061fc6500dedd9cd41c8d16f95d}{EINA\+\_\+\+SAFETY\+\_\+\+ON\+\_\+\+NULL\+\_\+\+RETURN\+\_\+\+VAL}}, and \mbox{\hyperlink{group__Eina__Stringshare__Group_ga4e3ce40744291c1fb8574e26883c0bf2}{eina\+\_\+stringshare\+\_\+add()}}.

