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


This functions helps list files asynchronously.  


\subsection*{Data Structures}
\begin{DoxyCompactItemize}
\item 
struct \hyperlink{struct__Eio__Progress}{\+\_\+\+Eio\+\_\+\+Progress}
\begin{DoxyCompactList}\small\item\em Represents the current progress of the operation. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Typedefs}
\begin{DoxyCompactItemize}
\item 
typedef struct \+\_\+\+Eio\+\_\+\+File \hyperlink{group__Eio__List_ga1145f009745ecb4d9f6a01a9bc5a9ac0}{Eio\+\_\+\+File}\hypertarget{group__Eio__List_ga1145f009745ecb4d9f6a01a9bc5a9ac0}{}\label{group__Eio__List_ga1145f009745ecb4d9f6a01a9bc5a9ac0}

\begin{DoxyCompactList}\small\item\em Generic asynchronous I/O reference. \end{DoxyCompactList}\item 
typedef struct \hyperlink{struct__Eio__Progress}{\+\_\+\+Eio\+\_\+\+Progress} \hyperlink{group__Eio__List_ga662e69af7f69dd1289e5cb6f0e3c37d6}{Eio\+\_\+\+Progress}\hypertarget{group__Eio__List_ga662e69af7f69dd1289e5cb6f0e3c37d6}{}\label{group__Eio__List_ga662e69af7f69dd1289e5cb6f0e3c37d6}

\begin{DoxyCompactList}\small\item\em Progress information on a specific operation. \end{DoxyCompactList}\item 
typedef \hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}($\ast$ {\bfseries Eio\+\_\+\+Filter\+\_\+\+Cb}) (void $\ast$data, \hyperlink{group__Eio__List_ga1145f009745ecb4d9f6a01a9bc5a9ac0}{Eio\+\_\+\+File} $\ast$handler, const char $\ast$file)\hypertarget{group__Eio__List_gaf7a65e7423d50645e2dcdadc441ae904}{}\label{group__Eio__List_gaf7a65e7423d50645e2dcdadc441ae904}

\item 
typedef void($\ast$ {\bfseries Eio\+\_\+\+Main\+\_\+\+Cb}) (void $\ast$data, \hyperlink{group__Eio__List_ga1145f009745ecb4d9f6a01a9bc5a9ac0}{Eio\+\_\+\+File} $\ast$handler, const char $\ast$file)\hypertarget{group__Eio__List_ga0582c050d51822a3aa6bf27c1f022be5}{}\label{group__Eio__List_ga0582c050d51822a3aa6bf27c1f022be5}

\item 
typedef \hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}($\ast$ {\bfseries Eio\+\_\+\+Filter\+\_\+\+Direct\+\_\+\+Cb}) (void $\ast$data, \hyperlink{group__Eio__List_ga1145f009745ecb4d9f6a01a9bc5a9ac0}{Eio\+\_\+\+File} $\ast$handler, const \hyperlink{group__Eina__File__Group_ga8e8779c9f28937a642dbe1be86760646}{Eina\+\_\+\+File\+\_\+\+Direct\+\_\+\+Info} $\ast$info)\hypertarget{group__Eio__List_ga6ce0690edce05f46a5d1902502efdfa1}{}\label{group__Eio__List_ga6ce0690edce05f46a5d1902502efdfa1}

\item 
typedef \hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}($\ast$ {\bfseries Eio\+\_\+\+Filter\+\_\+\+Dir\+\_\+\+Cb}) (void $\ast$data, \hyperlink{group__Eio__List_ga1145f009745ecb4d9f6a01a9bc5a9ac0}{Eio\+\_\+\+File} $\ast$handler, \hyperlink{group__Eina__File__Group_ga8e8779c9f28937a642dbe1be86760646}{Eina\+\_\+\+File\+\_\+\+Direct\+\_\+\+Info} $\ast$info)\hypertarget{group__Eio__List_ga9c4297f8b8a32f63e8a4011212cfe3a2}{}\label{group__Eio__List_ga9c4297f8b8a32f63e8a4011212cfe3a2}

\item 
typedef void($\ast$ {\bfseries Eio\+\_\+\+Main\+\_\+\+Direct\+\_\+\+Cb}) (void $\ast$data, \hyperlink{group__Eio__List_ga1145f009745ecb4d9f6a01a9bc5a9ac0}{Eio\+\_\+\+File} $\ast$handler, const \hyperlink{group__Eina__File__Group_ga8e8779c9f28937a642dbe1be86760646}{Eina\+\_\+\+File\+\_\+\+Direct\+\_\+\+Info} $\ast$info)\hypertarget{group__Eio__List_ga8abd1d45e3319295d182e5d4c4165738}{}\label{group__Eio__List_ga8abd1d45e3319295d182e5d4c4165738}

\item 
typedef void($\ast$ {\bfseries Eio\+\_\+\+Stat\+\_\+\+Cb}) (void $\ast$data, \hyperlink{group__Eio__List_ga1145f009745ecb4d9f6a01a9bc5a9ac0}{Eio\+\_\+\+File} $\ast$handler, const \hyperlink{group__Eina__File__Group_gab15fe1278f044850fcb24417a47364a8}{Eina\+\_\+\+Stat} $\ast$stat)\hypertarget{group__Eio__List_gaf5f54368a042fdd71bf6d3659e6676aa}{}\label{group__Eio__List_gaf5f54368a042fdd71bf6d3659e6676aa}

\item 
typedef void($\ast$ {\bfseries Eio\+\_\+\+Progress\+\_\+\+Cb}) (void $\ast$data, \hyperlink{group__Eio__List_ga1145f009745ecb4d9f6a01a9bc5a9ac0}{Eio\+\_\+\+File} $\ast$handler, const \hyperlink{group__Eio__List_ga662e69af7f69dd1289e5cb6f0e3c37d6}{Eio\+\_\+\+Progress} $\ast$info)\hypertarget{group__Eio__List_ga0377e64c50fbb8072c0d82c7c303d765}{}\label{group__Eio__List_ga0377e64c50fbb8072c0d82c7c303d765}

\item 
typedef void($\ast$ {\bfseries Eio\+\_\+\+Eet\+\_\+\+Open\+\_\+\+Cb}) (void $\ast$data, \hyperlink{group__Eio__List_ga1145f009745ecb4d9f6a01a9bc5a9ac0}{Eio\+\_\+\+File} $\ast$handler, \hyperlink{group__Eet__File__Group_ga8d9779184a9870c1a225f1f40c76e8a7}{Eet\+\_\+\+File} $\ast$file)\hypertarget{group__Eio__List_ga38c349d1abfcbc73ac586e0aad3fea88}{}\label{group__Eio__List_ga38c349d1abfcbc73ac586e0aad3fea88}

\item 
typedef void($\ast$ {\bfseries Eio\+\_\+\+Open\+\_\+\+Cb}) (void $\ast$data, \hyperlink{group__Eio__List_ga1145f009745ecb4d9f6a01a9bc5a9ac0}{Eio\+\_\+\+File} $\ast$handler, \hyperlink{group__Eina__File__Group_ga20697123547cbc937c6c9dd845af0403}{Eina\+\_\+\+File} $\ast$file)\hypertarget{group__Eio__List_ga700c9f019dfc5bb1eeb338fc0f97879c}{}\label{group__Eio__List_ga700c9f019dfc5bb1eeb338fc0f97879c}

\item 
typedef \hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}($\ast$ {\bfseries Eio\+\_\+\+Filter\+\_\+\+Map\+\_\+\+Cb}) (void $\ast$data, \hyperlink{group__Eio__List_ga1145f009745ecb4d9f6a01a9bc5a9ac0}{Eio\+\_\+\+File} $\ast$handler, void $\ast$map, size\+\_\+t length)\hypertarget{group__Eio__List_ga6037422a5d74168fa6f2c5b115f95ae6}{}\label{group__Eio__List_ga6037422a5d74168fa6f2c5b115f95ae6}

\item 
typedef void($\ast$ {\bfseries Eio\+\_\+\+Map\+\_\+\+Cb}) (void $\ast$data, \hyperlink{group__Eio__List_ga1145f009745ecb4d9f6a01a9bc5a9ac0}{Eio\+\_\+\+File} $\ast$handler, void $\ast$map, size\+\_\+t length)\hypertarget{group__Eio__List_gacfea3604af74b872328f21bb61f5fa06}{}\label{group__Eio__List_gacfea3604af74b872328f21bb61f5fa06}

\item 
typedef void($\ast$ {\bfseries Eio\+\_\+\+Done\+\_\+\+Data\+\_\+\+Cb}) (void $\ast$data, \hyperlink{group__Eio__List_ga1145f009745ecb4d9f6a01a9bc5a9ac0}{Eio\+\_\+\+File} $\ast$handler, const char $\ast$read\+\_\+data, unsigned int size)\hypertarget{group__Eio__List_gaf0bde8bc109640ebda0aaa7a0731c48f}{}\label{group__Eio__List_gaf0bde8bc109640ebda0aaa7a0731c48f}

\item 
typedef void($\ast$ {\bfseries Eio\+\_\+\+Done\+\_\+\+String\+\_\+\+Cb}) (void $\ast$data, \hyperlink{group__Eio__List_ga1145f009745ecb4d9f6a01a9bc5a9ac0}{Eio\+\_\+\+File} $\ast$handler, const char $\ast$xattr\+\_\+string)\hypertarget{group__Eio__List_ga6e91571831ddb2fc0e0087e90bdf396d}{}\label{group__Eio__List_ga6e91571831ddb2fc0e0087e90bdf396d}

\item 
typedef void($\ast$ {\bfseries Eio\+\_\+\+Done\+\_\+\+Double\+\_\+\+Cb}) (void $\ast$data, \hyperlink{group__Eio__List_ga1145f009745ecb4d9f6a01a9bc5a9ac0}{Eio\+\_\+\+File} $\ast$handler, double xattr\+\_\+double)\hypertarget{group__Eio__List_gaa76fbde822aada0b355df88a1621adb4}{}\label{group__Eio__List_gaa76fbde822aada0b355df88a1621adb4}

\item 
typedef void($\ast$ {\bfseries Eio\+\_\+\+Done\+\_\+\+Int\+\_\+\+Cb}) (void $\ast$data, \hyperlink{group__Eio__List_ga1145f009745ecb4d9f6a01a9bc5a9ac0}{Eio\+\_\+\+File} $\ast$handler, int i)\hypertarget{group__Eio__List_ga8772212dd9769a1d0703707b384fe9dd}{}\label{group__Eio__List_ga8772212dd9769a1d0703707b384fe9dd}

\item 
typedef void($\ast$ {\bfseries Eio\+\_\+\+Done\+\_\+\+E\+Read\+\_\+\+Cb}) (void $\ast$data, \hyperlink{group__Eio__List_ga1145f009745ecb4d9f6a01a9bc5a9ac0}{Eio\+\_\+\+File} $\ast$handler, void $\ast$decoded)\hypertarget{group__Eio__List_ga861bbd5eb58fbfcb4d7f2ef4946dd227}{}\label{group__Eio__List_ga861bbd5eb58fbfcb4d7f2ef4946dd227}

\item 
typedef void($\ast$ {\bfseries Eio\+\_\+\+Done\+\_\+\+Read\+\_\+\+Cb}) (void $\ast$data, \hyperlink{group__Eio__List_ga1145f009745ecb4d9f6a01a9bc5a9ac0}{Eio\+\_\+\+File} $\ast$handler, void $\ast$read\+\_\+data, unsigned int size)\hypertarget{group__Eio__List_gab53a3655aa13b14867efa19aa73f7a34}{}\label{group__Eio__List_gab53a3655aa13b14867efa19aa73f7a34}

\item 
typedef void($\ast$ {\bfseries Eio\+\_\+\+Done\+\_\+\+Cb}) (void $\ast$data, \hyperlink{group__Eio__List_ga1145f009745ecb4d9f6a01a9bc5a9ac0}{Eio\+\_\+\+File} $\ast$handler)\hypertarget{group__Eio__List_ga1675c359ee4007a1242277a5cb003769}{}\label{group__Eio__List_ga1675c359ee4007a1242277a5cb003769}

\item 
typedef void($\ast$ {\bfseries Eio\+\_\+\+Error\+\_\+\+Cb}) (void $\ast$data, \hyperlink{group__Eio__List_ga1145f009745ecb4d9f6a01a9bc5a9ac0}{Eio\+\_\+\+File} $\ast$handler, int error)\hypertarget{group__Eio__List_gaab03f742ad832757e342bce1d6d32b26}{}\label{group__Eio__List_gaab03f742ad832757e342bce1d6d32b26}

\item 
typedef void($\ast$ {\bfseries Eio\+\_\+\+Eet\+\_\+\+Error\+\_\+\+Cb}) (void $\ast$data, \hyperlink{group__Eio__List_ga1145f009745ecb4d9f6a01a9bc5a9ac0}{Eio\+\_\+\+File} $\ast$handler, \hyperlink{group__Eet__Group_gab002b16c58e2a62fc7981581647a0092}{Eet\+\_\+\+Error} err)\hypertarget{group__Eio__List_gaa9a553544c7be9ed3345c4521248a949}{}\label{group__Eio__List_gaa9a553544c7be9ed3345c4521248a949}

\end{DoxyCompactItemize}
\subsection*{Functions}
\begin{DoxyCompactItemize}
\item 
\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+PI} \hyperlink{group__Eio__List_ga1145f009745ecb4d9f6a01a9bc5a9ac0}{Eio\+\_\+\+File} $\ast$ \hyperlink{group__Eio__List_ga0c22f9fa90963fa681a95268881e03dc}{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 
\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+PI} \hyperlink{group__Eio__List_ga1145f009745ecb4d9f6a01a9bc5a9ac0}{Eio\+\_\+\+File} $\ast$ \hyperlink{group__Eio__List_ga9bf71a6845e6a53f90c31763d9fd975a}{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 
\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+PI} \hyperlink{group__Eio__List_ga1145f009745ecb4d9f6a01a9bc5a9ac0}{Eio\+\_\+\+File} $\ast$ \hyperlink{group__Eio__List_ga6a6f64e9f19dcdb0b4996e73e28a93b4}{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 
\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+PI} \hyperlink{group__Eio__List_ga1145f009745ecb4d9f6a01a9bc5a9ac0}{Eio\+\_\+\+File} $\ast$ \hyperlink{group__Eio__List_ga7aea176b2a7e654363f9c25bc123f889}{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 
\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+PI} \hyperlink{group__Eio__List_ga1145f009745ecb4d9f6a01a9bc5a9ac0}{Eio\+\_\+\+File} $\ast$ \hyperlink{group__Eio__List_gabf4f5a47f2151249a92fbdebf28d5fea}{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 
\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+PI} \hyperlink{group__Eio__List_ga1145f009745ecb4d9f6a01a9bc5a9ac0}{Eio\+\_\+\+File} $\ast$ \hyperlink{group__Eio__List_gae64bc601d91ce0937f403d2de3a342ac}{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}


\subsection{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. 

\subsection{Function Documentation}
\index{Eio file listing A\+PI@{Eio file listing A\+PI}!eio\+\_\+file\+\_\+ls@{eio\+\_\+file\+\_\+ls}}
\index{eio\+\_\+file\+\_\+ls@{eio\+\_\+file\+\_\+ls}!Eio file listing A\+PI@{Eio file listing A\+PI}}
\subsubsection[{\texorpdfstring{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)}{eio_file_ls(const char *dir, Eio_Filter_Cb filter_cb, Eio_Main_Cb main_cb, Eio_Done_Cb done_cb, Eio_Error_Cb error_cb, const void *data)}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\+A\+PI} {\bf 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}
)}\hypertarget{group__Eio__List_ga0c22f9fa90963fa681a95268881e03dc}{}\label{group__Eio__List_ga0c22f9fa90963fa681a95268881e03dc}


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 \hyperlink{group__Eina__File__Group_ga8c4fabb379b865a4ec134a5c4436be2a}{eina\+\_\+file\+\_\+ls()} in a separate thread using \hyperlink{group__Ecore__Thread__Group_ga4bde6b50e177f26ab5b2688aa99e3878}{ecore\+\_\+thread\+\_\+feedback\+\_\+run()}.

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

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

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

\hyperlink{group__Eio__List_ga6a6f64e9f19dcdb0b4996e73e28a93b4}{eio\+\_\+file\+\_\+stat\+\_\+ls()} 
\end{DoxySeeAlso}
\begin{Desc}
\item[Examples\+: ]\par
\hyperlink{eio_file_ls_8c-example}{eio\+\_\+file\+\_\+ls.\+c}.\end{Desc}


References eina\+\_\+stringshare\+\_\+add().

\index{Eio file listing A\+PI@{Eio file listing A\+PI}!eio\+\_\+file\+\_\+direct\+\_\+ls@{eio\+\_\+file\+\_\+direct\+\_\+ls}}
\index{eio\+\_\+file\+\_\+direct\+\_\+ls@{eio\+\_\+file\+\_\+direct\+\_\+ls}!Eio file listing A\+PI@{Eio file listing A\+PI}}
\subsubsection[{\texorpdfstring{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)}{eio_file_direct_ls(const char *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 *data)}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\+A\+PI} {\bf 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}
)}\hypertarget{group__Eio__List_ga9bf71a6845e6a53f90c31763d9fd975a}{}\label{group__Eio__List_ga9bf71a6845e6a53f90c31763d9fd975a}


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}
\hyperlink{group__Eio__List_ga9bf71a6845e6a53f90c31763d9fd975a}{eio\+\_\+file\+\_\+direct\+\_\+ls()} runs \hyperlink{group__Eina__File__Group_ga90d5372f6c6ef085760e26cb8c4993c8}{eina\+\_\+file\+\_\+direct\+\_\+ls()} in a separate thread using \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 \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}
\hyperlink{group__Eio__List_ga6a6f64e9f19dcdb0b4996e73e28a93b4}{eio\+\_\+file\+\_\+stat\+\_\+ls()} 

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

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


References eina\+\_\+stringshare\+\_\+add().

\index{Eio file listing A\+PI@{Eio file listing A\+PI}!eio\+\_\+file\+\_\+stat\+\_\+ls@{eio\+\_\+file\+\_\+stat\+\_\+ls}}
\index{eio\+\_\+file\+\_\+stat\+\_\+ls@{eio\+\_\+file\+\_\+stat\+\_\+ls}!Eio file listing A\+PI@{Eio file listing A\+PI}}
\subsubsection[{\texorpdfstring{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)}{eio_file_stat_ls(const char *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 *data)}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\+A\+PI} {\bf 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}
)}\hypertarget{group__Eio__List_ga6a6f64e9f19dcdb0b4996e73e28a93b4}{}\label{group__Eio__List_ga6a6f64e9f19dcdb0b4996e73e28a93b4}


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. \hyperlink{group__Eio__List_ga6a6f64e9f19dcdb0b4996e73e28a93b4}{eio\+\_\+file\+\_\+stat\+\_\+ls()} run \hyperlink{group__Eina__File__Group_ga21d5e94767ae9932751649ce09a2f98f}{eina\+\_\+file\+\_\+stat\+\_\+ls()} in a separate thread using \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 \hyperlink{group__Eio__List_ga9bf71a6845e6a53f90c31763d9fd975a}{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}
\hyperlink{group__Eio__List_ga6a6f64e9f19dcdb0b4996e73e28a93b4}{eio\+\_\+file\+\_\+stat\+\_\+ls()} 

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

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


References eina\+\_\+stringshare\+\_\+add().

\index{Eio file listing A\+PI@{Eio file listing A\+PI}!eio\+\_\+dir\+\_\+stat\+\_\+ls@{eio\+\_\+dir\+\_\+stat\+\_\+ls}}
\index{eio\+\_\+dir\+\_\+stat\+\_\+ls@{eio\+\_\+dir\+\_\+stat\+\_\+ls}!Eio file listing A\+PI@{Eio file listing A\+PI}}
\subsubsection[{\texorpdfstring{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)}{eio_dir_stat_ls(const char *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 *data)}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\+A\+PI} {\bf 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}
)}\hypertarget{group__Eio__List_ga7aea176b2a7e654363f9c25bc123f889}{}\label{group__Eio__List_ga7aea176b2a7e654363f9c25bc123f889}


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}
\hyperlink{group__Eio__List_ga7aea176b2a7e654363f9c25bc123f889}{eio\+\_\+dir\+\_\+stat\+\_\+ls()} runs \hyperlink{group__Eina__File__Group_ga21d5e94767ae9932751649ce09a2f98f}{eina\+\_\+file\+\_\+stat\+\_\+ls()} recursively in a separate thread using \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}
\hyperlink{group__Eio__List_ga6a6f64e9f19dcdb0b4996e73e28a93b4}{eio\+\_\+file\+\_\+stat\+\_\+ls()} 

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

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

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


References eina\+\_\+stringshare\+\_\+add().

\index{Eio file listing A\+PI@{Eio file listing A\+PI}!eio\+\_\+dir\+\_\+direct\+\_\+ls@{eio\+\_\+dir\+\_\+direct\+\_\+ls}}
\index{eio\+\_\+dir\+\_\+direct\+\_\+ls@{eio\+\_\+dir\+\_\+direct\+\_\+ls}!Eio file listing A\+PI@{Eio file listing A\+PI}}
\subsubsection[{\texorpdfstring{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)}{eio_dir_direct_ls(const char *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 *data)}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\+A\+PI} {\bf 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}
)}\hypertarget{group__Eio__List_gabf4f5a47f2151249a92fbdebf28d5fea}{}\label{group__Eio__List_gabf4f5a47f2151249a92fbdebf28d5fea}


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}
\hyperlink{group__Eio__List_gabf4f5a47f2151249a92fbdebf28d5fea}{eio\+\_\+dir\+\_\+direct\+\_\+ls()} runs \hyperlink{group__Eina__File__Group_ga90d5372f6c6ef085760e26cb8c4993c8}{eina\+\_\+file\+\_\+direct\+\_\+ls()} recursively in a separate thread using \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}
\hyperlink{group__Eio__List_ga9bf71a6845e6a53f90c31763d9fd975a}{eio\+\_\+file\+\_\+direct\+\_\+ls()} 

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

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

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


References eina\+\_\+stringshare\+\_\+add().

\index{Eio file listing A\+PI@{Eio file listing A\+PI}!eio\+\_\+file\+\_\+direct\+\_\+stat@{eio\+\_\+file\+\_\+direct\+\_\+stat}}
\index{eio\+\_\+file\+\_\+direct\+\_\+stat@{eio\+\_\+file\+\_\+direct\+\_\+stat}!Eio file listing A\+PI@{Eio file listing A\+PI}}
\subsubsection[{\texorpdfstring{eio\+\_\+file\+\_\+direct\+\_\+stat(const char $\ast$path, Eio\+\_\+\+Stat\+\_\+\+Cb done\+\_\+cb, Eio\+\_\+\+Error\+\_\+\+Cb error\+\_\+cb, const void $\ast$data)}{eio_file_direct_stat(const char *path, Eio_Stat_Cb done_cb, Eio_Error_Cb error_cb, const void *data)}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\+A\+PI} {\bf 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}
)}\hypertarget{group__Eio__List_gae64bc601d91ce0937f403d2de3a342ac}{}\label{group__Eio__List_gae64bc601d91ce0937f403d2de3a342ac}


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 eina\+\_\+stringshare\+\_\+add().

