\hypertarget{group__Eio__Helper}{\section{Eio Reference helper A\+P\+I}
\label{group__Eio__Helper}\index{Eio Reference helper A\+P\+I@{Eio Reference helper A\+P\+I}}
}


This are helper provided around core Eio A\+P\+I.  


\subsection*{Functions}
\begin{DoxyCompactItemize}
\item 
\hyperlink{group__Eina__Types__Group_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} int \hyperlink{group__Eio__Helper_gac612fe5df9b9c93c275ee373745c2471}{eio\+\_\+init} (void)
\begin{DoxyCompactList}\small\item\em Initialize eio and all its required submodule. \end{DoxyCompactList}\item 
\hyperlink{group__Eina__Types__Group_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} int \hyperlink{group__Eio__Helper_ga2281001078f6f99e3662bc889524831b}{eio\+\_\+shutdown} (void)
\begin{DoxyCompactList}\small\item\em Shutdown eio and all its submodule if possible. \end{DoxyCompactList}\item 
\hyperlink{group__Eina__Types__Group_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} void \hyperlink{group__Eio__Helper_ga57bd4ee7646a1fc785a77f908924c416}{eio\+\_\+memory\+\_\+burst\+\_\+limit\+\_\+set} (size\+\_\+t limit)
\begin{DoxyCompactList}\small\item\em Set the limit to the maximum amount of memory used. \end{DoxyCompactList}\item 
\hyperlink{group__Eina__Types__Group_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} size\+\_\+t \hyperlink{group__Eio__Helper_ga857f78deca5fd2310cfe8bdc3f89a51a}{eio\+\_\+memory\+\_\+burst\+\_\+limit\+\_\+get} (void)
\begin{DoxyCompactList}\small\item\em Get the actual limit to the maximum amount of memory used. \end{DoxyCompactList}\item 
\hyperlink{group__Eina__Types__Group_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} void $\ast$ \hyperlink{group__Eio__Helper_ga44520dafc4a5066e9e1378d4a7a892c5}{eio\+\_\+file\+\_\+container\+\_\+get} (\hyperlink{Eio_8h_a1145f009745ecb4d9f6a01a9bc5a9ac0}{Eio\+\_\+\+File} $\ast$ls)
\begin{DoxyCompactList}\small\item\em Return the container during E\+I\+O operation. \end{DoxyCompactList}\item 
\hyperlink{group__Eina__Types__Group_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} \hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool} \hyperlink{group__Eio__Helper_gad93d85d644f29d726a76e7348b9aa0f2}{eio\+\_\+file\+\_\+cancel} (\hyperlink{Eio_8h_a1145f009745ecb4d9f6a01a9bc5a9ac0}{Eio\+\_\+\+File} $\ast$ls)
\begin{DoxyCompactList}\small\item\em Cancel any Eio\+\_\+\+File. \end{DoxyCompactList}\item 
\hyperlink{group__Eina__Types__Group_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} \hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool} \hyperlink{group__Eio__Helper_ga47d30b2024e432b2bc9bf21f879747b7}{eio\+\_\+file\+\_\+check} (\hyperlink{Eio_8h_a1145f009745ecb4d9f6a01a9bc5a9ac0}{Eio\+\_\+\+File} $\ast$ls)
\begin{DoxyCompactList}\small\item\em Check if an Eio\+\_\+\+File operation has been cancelled. \end{DoxyCompactList}\item 
\hyperlink{group__Eina__Types__Group_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} \hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool} \hyperlink{group__Eio__Helper_gab2573246b0d4face54be3ef149751efb}{eio\+\_\+file\+\_\+associate\+\_\+add} (\hyperlink{Eio_8h_a1145f009745ecb4d9f6a01a9bc5a9ac0}{Eio\+\_\+\+File} $\ast$ls, const char $\ast$key, const void $\ast$data, \hyperlink{group__Eina__Types__Group_gadbac560ba2bca5c61d97bfbb542018f3}{Eina\+\_\+\+Free\+\_\+\+Cb} free\+\_\+cb)
\begin{DoxyCompactList}\small\item\em Associate data with the current filtered file. \end{DoxyCompactList}\item 
\hyperlink{group__Eina__Types__Group_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} \hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool} \hyperlink{group__Eio__Helper_ga335a93b8e07bb926b1347c02303f58c6}{eio\+\_\+file\+\_\+associate\+\_\+direct\+\_\+add} (\hyperlink{Eio_8h_a1145f009745ecb4d9f6a01a9bc5a9ac0}{Eio\+\_\+\+File} $\ast$ls, const char $\ast$key, const void $\ast$data, \hyperlink{group__Eina__Types__Group_gadbac560ba2bca5c61d97bfbb542018f3}{Eina\+\_\+\+Free\+\_\+\+Cb} free\+\_\+cb)
\begin{DoxyCompactList}\small\item\em Associate data with the current filtered file. \end{DoxyCompactList}\item 
\hyperlink{group__Eina__Types__Group_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} void $\ast$ \hyperlink{group__Eio__Helper_ga67e04d574f768dae03ab1143ed15990c}{eio\+\_\+file\+\_\+associate\+\_\+find} (\hyperlink{Eio_8h_a1145f009745ecb4d9f6a01a9bc5a9ac0}{Eio\+\_\+\+File} $\ast$ls, const char $\ast$key)
\begin{DoxyCompactList}\small\item\em Get the data associated during the filter callback inside the main loop. \end{DoxyCompactList}\item 
static double \hyperlink{group__Eio__Helper_ga01f812f6cabd9f6940169d809d4d1523}{eio\+\_\+file\+\_\+atime} (const \hyperlink{group__Eina__File__Group_gab15fe1278f044850fcb24417a47364a8}{Eina\+\_\+\+Stat} $\ast$stat)
\begin{DoxyCompactList}\small\item\em get access time from a Eina\+\_\+\+Stat \end{DoxyCompactList}\item 
static double \hyperlink{group__Eio__Helper_gaf5e7af8f2e5136c8a16b3e315d665d7c}{eio\+\_\+file\+\_\+mtime} (const \hyperlink{group__Eina__File__Group_gab15fe1278f044850fcb24417a47364a8}{Eina\+\_\+\+Stat} $\ast$stat)
\begin{DoxyCompactList}\small\item\em get modification time from a Eina\+\_\+\+Stat \end{DoxyCompactList}\item 
static long long \hyperlink{group__Eio__Helper_gad8597d8d8cf7546ceae4144d0b62ec94}{eio\+\_\+file\+\_\+size} (const \hyperlink{group__Eina__File__Group_gab15fe1278f044850fcb24417a47364a8}{Eina\+\_\+\+Stat} $\ast$stat)
\begin{DoxyCompactList}\small\item\em get the size of the file described in Eina\+\_\+\+Stat \end{DoxyCompactList}\item 
static \hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool} \hyperlink{group__Eio__Helper_ga6eed8614724e0b3e83dd74d10a7b220b}{eio\+\_\+file\+\_\+is\+\_\+dir} (const \hyperlink{group__Eina__File__Group_gab15fe1278f044850fcb24417a47364a8}{Eina\+\_\+\+Stat} $\ast$stat)
\begin{DoxyCompactList}\small\item\em tell if the stated path was a directory or not. \end{DoxyCompactList}\item 
static \hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool} \hyperlink{group__Eio__Helper_ga20b5b0abdeb0f7d9b406b3aa3b4567b3}{eio\+\_\+file\+\_\+is\+\_\+lnk} (const \hyperlink{group__Eina__File__Group_gab15fe1278f044850fcb24417a47364a8}{Eina\+\_\+\+Stat} $\ast$stat)
\begin{DoxyCompactList}\small\item\em tell if the stated path was a link or not. \end{DoxyCompactList}\end{DoxyCompactItemize}


\subsection{Detailed Description}
This are helper provided around core Eio A\+P\+I. 

This set of functions do provide helper to work around data provided by Eio without the need to look at system header. 

\subsection{Function Documentation}
\hypertarget{group__Eio__Helper_gac612fe5df9b9c93c275ee373745c2471}{\index{Eio Reference helper A\+P\+I@{Eio Reference helper A\+P\+I}!eio\+\_\+init@{eio\+\_\+init}}
\index{eio\+\_\+init@{eio\+\_\+init}!Eio Reference helper A\+P\+I@{Eio Reference helper A\+P\+I}}
\subsubsection[{eio\+\_\+init}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\+A\+P\+I} int eio\+\_\+init (
\begin{DoxyParamCaption}
\item[{void}]{}
\end{DoxyParamCaption}
)}}\label{group__Eio__Helper_gac612fe5df9b9c93c275ee373745c2471}


Initialize eio and all its required submodule. 

\begin{DoxyReturn}{Returns}
the current number of eio users. 
\end{DoxyReturn}
\begin{Desc}
\item[Examples\+: ]\par
\hyperlink{eio_file_ls_8c-example}{eio\+\_\+file\+\_\+ls.\+c}.\end{Desc}


References ecore\+\_\+init(), eina\+\_\+condition\+\_\+new(), eina\+\_\+init(), eina\+\_\+lock\+\_\+new(), eina\+\_\+log\+\_\+domain\+\_\+register(), eina\+\_\+log\+\_\+domain\+\_\+unregister(), E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+E\+R\+R, E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+S\+T\+A\+T\+E\+\_\+\+I\+N\+I\+T, eina\+\_\+log\+\_\+timing(), eina\+\_\+shutdown(), eina\+\_\+spinlock\+\_\+new(), and E\+R\+R.

\hypertarget{group__Eio__Helper_ga2281001078f6f99e3662bc889524831b}{\index{Eio Reference helper A\+P\+I@{Eio Reference helper A\+P\+I}!eio\+\_\+shutdown@{eio\+\_\+shutdown}}
\index{eio\+\_\+shutdown@{eio\+\_\+shutdown}!Eio Reference helper A\+P\+I@{Eio Reference helper A\+P\+I}}
\subsubsection[{eio\+\_\+shutdown}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\+A\+P\+I} int eio\+\_\+shutdown (
\begin{DoxyParamCaption}
\item[{void}]{}
\end{DoxyParamCaption}
)}}\label{group__Eio__Helper_ga2281001078f6f99e3662bc889524831b}


Shutdown eio and all its submodule if possible. 

\begin{DoxyReturn}{Returns}
the number of pending users of eio. 
\end{DoxyReturn}
\begin{Desc}
\item[Examples\+: ]\par
\hyperlink{eio_file_ls_8c-example}{eio\+\_\+file\+\_\+ls.\+c}.\end{Desc}


References ecore\+\_\+shutdown(), eina\+\_\+condition\+\_\+free(), eina\+\_\+lock\+\_\+free(), eina\+\_\+log\+\_\+domain\+\_\+unregister(), E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+S\+T\+A\+T\+E\+\_\+\+S\+H\+U\+T\+D\+O\+W\+N, eina\+\_\+log\+\_\+timing(), eina\+\_\+shutdown(), eina\+\_\+spinlock\+\_\+free(), E\+I\+N\+A\+\_\+\+T\+R\+A\+S\+H\+\_\+\+C\+L\+E\+A\+N, and E\+R\+R.

\hypertarget{group__Eio__Helper_ga57bd4ee7646a1fc785a77f908924c416}{\index{Eio Reference helper A\+P\+I@{Eio Reference helper A\+P\+I}!eio\+\_\+memory\+\_\+burst\+\_\+limit\+\_\+set@{eio\+\_\+memory\+\_\+burst\+\_\+limit\+\_\+set}}
\index{eio\+\_\+memory\+\_\+burst\+\_\+limit\+\_\+set@{eio\+\_\+memory\+\_\+burst\+\_\+limit\+\_\+set}!Eio Reference helper A\+P\+I@{Eio Reference helper A\+P\+I}}
\subsubsection[{eio\+\_\+memory\+\_\+burst\+\_\+limit\+\_\+set}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\+A\+P\+I} void eio\+\_\+memory\+\_\+burst\+\_\+limit\+\_\+set (
\begin{DoxyParamCaption}
\item[{size\+\_\+t}]{limit}
\end{DoxyParamCaption}
)}}\label{group__Eio__Helper_ga57bd4ee7646a1fc785a77f908924c416}


Set the limit to the maximum amount of memory used. 


\begin{DoxyParams}{Parameters}
{\em limit} & The actual limit to set.\\
\hline
\end{DoxyParams}
Eio work by burst, allocating memory in a thread and moving it back to the main loop. This result in quite some huge memory usage if the main loop is to slow to cope with the speed of the thread. By setting this limit, the thread will block until enough memory has been freed to be below the limit again.

By default no limit is set and any value $<$ 0 will mean no limit.

\begin{DoxyNote}{Note}
You should give at least a reasonable amount of memory or the thread might stall. 
\end{DoxyNote}
\begin{DoxySince}{Since}
1.\+10 
\end{DoxySince}


References eina\+\_\+condition\+\_\+broadcast(), eina\+\_\+lock\+\_\+release(), and eina\+\_\+lock\+\_\+take().

\hypertarget{group__Eio__Helper_ga857f78deca5fd2310cfe8bdc3f89a51a}{\index{Eio Reference helper A\+P\+I@{Eio Reference helper A\+P\+I}!eio\+\_\+memory\+\_\+burst\+\_\+limit\+\_\+get@{eio\+\_\+memory\+\_\+burst\+\_\+limit\+\_\+get}}
\index{eio\+\_\+memory\+\_\+burst\+\_\+limit\+\_\+get@{eio\+\_\+memory\+\_\+burst\+\_\+limit\+\_\+get}!Eio Reference helper A\+P\+I@{Eio Reference helper A\+P\+I}}
\subsubsection[{eio\+\_\+memory\+\_\+burst\+\_\+limit\+\_\+get}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\+A\+P\+I} size\+\_\+t eio\+\_\+memory\+\_\+burst\+\_\+limit\+\_\+get (
\begin{DoxyParamCaption}
\item[{void}]{}
\end{DoxyParamCaption}
)}}\label{group__Eio__Helper_ga857f78deca5fd2310cfe8bdc3f89a51a}


Get the actual limit to the maximum amount of memory used. 

\begin{DoxyReturn}{Returns}
The current limit being set.
\end{DoxyReturn}
\begin{DoxySince}{Since}
1.\+10 
\end{DoxySince}
\begin{DoxySeeAlso}{See also}
\hyperlink{group__Eio__Helper_ga57bd4ee7646a1fc785a77f908924c416}{eio\+\_\+memory\+\_\+burst\+\_\+limit\+\_\+set} 
\end{DoxySeeAlso}
\hypertarget{group__Eio__Helper_ga44520dafc4a5066e9e1378d4a7a892c5}{\index{Eio Reference helper A\+P\+I@{Eio Reference helper A\+P\+I}!eio\+\_\+file\+\_\+container\+\_\+get@{eio\+\_\+file\+\_\+container\+\_\+get}}
\index{eio\+\_\+file\+\_\+container\+\_\+get@{eio\+\_\+file\+\_\+container\+\_\+get}!Eio Reference helper A\+P\+I@{Eio Reference helper A\+P\+I}}
\subsubsection[{eio\+\_\+file\+\_\+container\+\_\+get}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\+A\+P\+I} void$\ast$ eio\+\_\+file\+\_\+container\+\_\+get (
\begin{DoxyParamCaption}
\item[{{\bf Eio\+\_\+\+File} $\ast$}]{ls}
\end{DoxyParamCaption}
)}}\label{group__Eio__Helper_ga44520dafc4a5066e9e1378d4a7a892c5}


Return the container during E\+I\+O operation. 


\begin{DoxyParams}{Parameters}
{\em ls} & The asynchronous I/\+O operation to retrieve container from. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
N\+U\+L\+L if not available, a D\+I\+R\+P if it is.
\end{DoxyReturn}
This is only available and make sense in the thread callback, not in the mainloop. \hypertarget{group__Eio__Helper_gad93d85d644f29d726a76e7348b9aa0f2}{\index{Eio Reference helper A\+P\+I@{Eio Reference helper A\+P\+I}!eio\+\_\+file\+\_\+cancel@{eio\+\_\+file\+\_\+cancel}}
\index{eio\+\_\+file\+\_\+cancel@{eio\+\_\+file\+\_\+cancel}!Eio Reference helper A\+P\+I@{Eio Reference helper A\+P\+I}}
\subsubsection[{eio\+\_\+file\+\_\+cancel}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\+A\+P\+I} {\bf Eina\+\_\+\+Bool} eio\+\_\+file\+\_\+cancel (
\begin{DoxyParamCaption}
\item[{{\bf Eio\+\_\+\+File} $\ast$}]{ls}
\end{DoxyParamCaption}
)}}\label{group__Eio__Helper_gad93d85d644f29d726a76e7348b9aa0f2}


Cancel any Eio\+\_\+\+File. 


\begin{DoxyParams}{Parameters}
{\em ls} & The asynchronous I/\+O operation to cancel. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
E\+I\+N\+A\+\_\+\+F\+A\+L\+S\+E if the destruction is delayed, E\+I\+N\+A\+\_\+\+T\+R\+U\+E if it's done.
\end{DoxyReturn}
This will cancel any kind of I/\+O operation and cleanup the mess. This means that it could take time to cancel an I/\+O. 

References ecore\+\_\+thread\+\_\+cancel(), and E\+I\+N\+A\+\_\+\+F\+A\+L\+S\+E.

\hypertarget{group__Eio__Helper_ga47d30b2024e432b2bc9bf21f879747b7}{\index{Eio Reference helper A\+P\+I@{Eio Reference helper A\+P\+I}!eio\+\_\+file\+\_\+check@{eio\+\_\+file\+\_\+check}}
\index{eio\+\_\+file\+\_\+check@{eio\+\_\+file\+\_\+check}!Eio Reference helper A\+P\+I@{Eio Reference helper A\+P\+I}}
\subsubsection[{eio\+\_\+file\+\_\+check}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\+A\+P\+I} {\bf Eina\+\_\+\+Bool} eio\+\_\+file\+\_\+check (
\begin{DoxyParamCaption}
\item[{{\bf Eio\+\_\+\+File} $\ast$}]{ls}
\end{DoxyParamCaption}
)}}\label{group__Eio__Helper_ga47d30b2024e432b2bc9bf21f879747b7}


Check if an Eio\+\_\+\+File operation has been cancelled. 


\begin{DoxyParams}{Parameters}
{\em ls} & The asynchronous I/\+O operation to check. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
E\+I\+N\+A\+\_\+\+T\+R\+U\+E if it was canceled, E\+I\+N\+A\+\_\+\+F\+A\+L\+S\+E other wise.
\end{DoxyReturn}
In case of an error it also return E\+I\+N\+A\+\_\+\+T\+R\+U\+E. 

References ecore\+\_\+thread\+\_\+check(), and E\+I\+N\+A\+\_\+\+T\+R\+U\+E.

\hypertarget{group__Eio__Helper_gab2573246b0d4face54be3ef149751efb}{\index{Eio Reference helper A\+P\+I@{Eio Reference helper A\+P\+I}!eio\+\_\+file\+\_\+associate\+\_\+add@{eio\+\_\+file\+\_\+associate\+\_\+add}}
\index{eio\+\_\+file\+\_\+associate\+\_\+add@{eio\+\_\+file\+\_\+associate\+\_\+add}!Eio Reference helper A\+P\+I@{Eio Reference helper A\+P\+I}}
\subsubsection[{eio\+\_\+file\+\_\+associate\+\_\+add}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\+A\+P\+I} {\bf Eina\+\_\+\+Bool} eio\+\_\+file\+\_\+associate\+\_\+add (
\begin{DoxyParamCaption}
\item[{{\bf Eio\+\_\+\+File} $\ast$}]{ls, }
\item[{const char $\ast$}]{key, }
\item[{const void $\ast$}]{data, }
\item[{{\bf Eina\+\_\+\+Free\+\_\+\+Cb}}]{free\+\_\+cb}
\end{DoxyParamCaption}
)}}\label{group__Eio__Helper_gab2573246b0d4face54be3ef149751efb}


Associate data with the current filtered file. 


\begin{DoxyParams}{Parameters}
{\em ls} & The Eio\+\_\+\+File ls request currently calling the filter callback. \\
\hline
{\em key} & The key to associate data to. \\
\hline
{\em data} & The data to associate the data to. \\
\hline
{\em free\+\_\+cb} & Optionally a function to call to free the associated data, {\ttfamily data} is passed as the callback data parameter. If no {\ttfamily free\+\_\+cb} is provided the user {\ttfamily data} remains untouched. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
E\+I\+N\+A\+\_\+\+T\+R\+U\+E if insertion was fine.
\end{DoxyReturn}
This function can only be safely called from within the filter callback. If you don't need to copy the key around you can use \hyperlink{group__Eio__Helper_ga335a93b8e07bb926b1347c02303f58c6}{eio\+\_\+file\+\_\+associate\+\_\+direct\+\_\+add} 

References E\+I\+N\+A\+\_\+\+F\+A\+L\+S\+E, eina\+\_\+hash\+\_\+add(), and eina\+\_\+hash\+\_\+string\+\_\+small\+\_\+new().

\hypertarget{group__Eio__Helper_ga335a93b8e07bb926b1347c02303f58c6}{\index{Eio Reference helper A\+P\+I@{Eio Reference helper A\+P\+I}!eio\+\_\+file\+\_\+associate\+\_\+direct\+\_\+add@{eio\+\_\+file\+\_\+associate\+\_\+direct\+\_\+add}}
\index{eio\+\_\+file\+\_\+associate\+\_\+direct\+\_\+add@{eio\+\_\+file\+\_\+associate\+\_\+direct\+\_\+add}!Eio Reference helper A\+P\+I@{Eio Reference helper A\+P\+I}}
\subsubsection[{eio\+\_\+file\+\_\+associate\+\_\+direct\+\_\+add}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\+A\+P\+I} {\bf Eina\+\_\+\+Bool} eio\+\_\+file\+\_\+associate\+\_\+direct\+\_\+add (
\begin{DoxyParamCaption}
\item[{{\bf Eio\+\_\+\+File} $\ast$}]{ls, }
\item[{const char $\ast$}]{key, }
\item[{const void $\ast$}]{data, }
\item[{{\bf Eina\+\_\+\+Free\+\_\+\+Cb}}]{free\+\_\+cb}
\end{DoxyParamCaption}
)}}\label{group__Eio__Helper_ga335a93b8e07bb926b1347c02303f58c6}


Associate data with the current filtered file. 


\begin{DoxyParams}{Parameters}
{\em ls} & The Eio\+\_\+\+File ls request currently calling the filter callback. \\
\hline
{\em key} & The key to associate data to (will not be copied, and the pointer will not be used as long as the file is not notified). \\
\hline
{\em data} & The data to associate the data to. \\
\hline
{\em free\+\_\+cb} & The function to call to free the associated data, {\ttfamily free\+\_\+cb} will be called if not specified. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
E\+I\+N\+A\+\_\+\+T\+R\+U\+E if insertion was fine.
\end{DoxyReturn}
This function can only be safely called from within the filter callback. If you need eio to make a proper copy of the {\ttfamily key} to be safe use \hyperlink{group__Eio__Helper_gab2573246b0d4face54be3ef149751efb}{eio\+\_\+file\+\_\+associate\+\_\+add} instead. 

References E\+I\+N\+A\+\_\+\+F\+A\+L\+S\+E, eina\+\_\+hash\+\_\+direct\+\_\+add(), and eina\+\_\+hash\+\_\+string\+\_\+small\+\_\+new().

\hypertarget{group__Eio__Helper_ga67e04d574f768dae03ab1143ed15990c}{\index{Eio Reference helper A\+P\+I@{Eio Reference helper A\+P\+I}!eio\+\_\+file\+\_\+associate\+\_\+find@{eio\+\_\+file\+\_\+associate\+\_\+find}}
\index{eio\+\_\+file\+\_\+associate\+\_\+find@{eio\+\_\+file\+\_\+associate\+\_\+find}!Eio Reference helper A\+P\+I@{Eio Reference helper A\+P\+I}}
\subsubsection[{eio\+\_\+file\+\_\+associate\+\_\+find}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\+A\+P\+I} void$\ast$ eio\+\_\+file\+\_\+associate\+\_\+find (
\begin{DoxyParamCaption}
\item[{{\bf Eio\+\_\+\+File} $\ast$}]{ls, }
\item[{const char $\ast$}]{key}
\end{DoxyParamCaption}
)}}\label{group__Eio__Helper_ga67e04d574f768dae03ab1143ed15990c}


Get the data associated during the filter callback inside the main loop. 


\begin{DoxyParams}{Parameters}
{\em ls} & The Eio\+\_\+\+File ls request currently calling the notify callback. \\
\hline
{\em key} & The key pointing to the data to retrieve. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
the data associated with the key or {\ttfamily N\+U\+L\+L} if not found. 
\end{DoxyReturn}


References eina\+\_\+hash\+\_\+find().

\hypertarget{group__Eio__Helper_ga01f812f6cabd9f6940169d809d4d1523}{\index{Eio Reference helper A\+P\+I@{Eio Reference helper A\+P\+I}!eio\+\_\+file\+\_\+atime@{eio\+\_\+file\+\_\+atime}}
\index{eio\+\_\+file\+\_\+atime@{eio\+\_\+file\+\_\+atime}!Eio Reference helper A\+P\+I@{Eio Reference helper A\+P\+I}}
\subsubsection[{eio\+\_\+file\+\_\+atime}]{\setlength{\rightskip}{0pt plus 5cm}static double eio\+\_\+file\+\_\+atime (
\begin{DoxyParamCaption}
\item[{const {\bf Eina\+\_\+\+Stat} $\ast$}]{stat}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}}\label{group__Eio__Helper_ga01f812f6cabd9f6940169d809d4d1523}


get access time from a Eina\+\_\+\+Stat 


\begin{DoxyParams}{Parameters}
{\em stat} & the structure to get the atime from \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
the last accessed time
\end{DoxyReturn}
This take care of doing type conversion to match rest of E\+F\+L time A\+P\+I. \begin{DoxyNote}{Note}
some filesystem don't update that information. 
\end{DoxyNote}
\hypertarget{group__Eio__Helper_gaf5e7af8f2e5136c8a16b3e315d665d7c}{\index{Eio Reference helper A\+P\+I@{Eio Reference helper A\+P\+I}!eio\+\_\+file\+\_\+mtime@{eio\+\_\+file\+\_\+mtime}}
\index{eio\+\_\+file\+\_\+mtime@{eio\+\_\+file\+\_\+mtime}!Eio Reference helper A\+P\+I@{Eio Reference helper A\+P\+I}}
\subsubsection[{eio\+\_\+file\+\_\+mtime}]{\setlength{\rightskip}{0pt plus 5cm}static double eio\+\_\+file\+\_\+mtime (
\begin{DoxyParamCaption}
\item[{const {\bf Eina\+\_\+\+Stat} $\ast$}]{stat}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}}\label{group__Eio__Helper_gaf5e7af8f2e5136c8a16b3e315d665d7c}


get modification time from a Eina\+\_\+\+Stat 


\begin{DoxyParams}{Parameters}
{\em stat} & the structure to get the mtime from \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
the last modification time
\end{DoxyReturn}
This take care of doing type conversion to match rest of E\+F\+L time A\+P\+I. \hypertarget{group__Eio__Helper_gad8597d8d8cf7546ceae4144d0b62ec94}{\index{Eio Reference helper A\+P\+I@{Eio Reference helper A\+P\+I}!eio\+\_\+file\+\_\+size@{eio\+\_\+file\+\_\+size}}
\index{eio\+\_\+file\+\_\+size@{eio\+\_\+file\+\_\+size}!Eio Reference helper A\+P\+I@{Eio Reference helper A\+P\+I}}
\subsubsection[{eio\+\_\+file\+\_\+size}]{\setlength{\rightskip}{0pt plus 5cm}static long long eio\+\_\+file\+\_\+size (
\begin{DoxyParamCaption}
\item[{const {\bf Eina\+\_\+\+Stat} $\ast$}]{stat}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}}\label{group__Eio__Helper_gad8597d8d8cf7546ceae4144d0b62ec94}


get the size of the file described in Eina\+\_\+\+Stat 


\begin{DoxyParams}{Parameters}
{\em stat} & the structure to get the size from \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
the size of the file 
\end{DoxyReturn}
\hypertarget{group__Eio__Helper_ga6eed8614724e0b3e83dd74d10a7b220b}{\index{Eio Reference helper A\+P\+I@{Eio Reference helper A\+P\+I}!eio\+\_\+file\+\_\+is\+\_\+dir@{eio\+\_\+file\+\_\+is\+\_\+dir}}
\index{eio\+\_\+file\+\_\+is\+\_\+dir@{eio\+\_\+file\+\_\+is\+\_\+dir}!Eio Reference helper A\+P\+I@{Eio Reference helper A\+P\+I}}
\subsubsection[{eio\+\_\+file\+\_\+is\+\_\+dir}]{\setlength{\rightskip}{0pt plus 5cm}static {\bf Eina\+\_\+\+Bool} eio\+\_\+file\+\_\+is\+\_\+dir (
\begin{DoxyParamCaption}
\item[{const {\bf Eina\+\_\+\+Stat} $\ast$}]{stat}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}}\label{group__Eio__Helper_ga6eed8614724e0b3e83dd74d10a7b220b}


tell if the stated path was a directory or not. 


\begin{DoxyParams}{Parameters}
{\em stat} & the structure to get the size from \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
E\+I\+N\+A\+\_\+\+T\+R\+U\+E, if it was. 
\end{DoxyReturn}
\hypertarget{group__Eio__Helper_ga20b5b0abdeb0f7d9b406b3aa3b4567b3}{\index{Eio Reference helper A\+P\+I@{Eio Reference helper A\+P\+I}!eio\+\_\+file\+\_\+is\+\_\+lnk@{eio\+\_\+file\+\_\+is\+\_\+lnk}}
\index{eio\+\_\+file\+\_\+is\+\_\+lnk@{eio\+\_\+file\+\_\+is\+\_\+lnk}!Eio Reference helper A\+P\+I@{Eio Reference helper A\+P\+I}}
\subsubsection[{eio\+\_\+file\+\_\+is\+\_\+lnk}]{\setlength{\rightskip}{0pt plus 5cm}static {\bf Eina\+\_\+\+Bool} eio\+\_\+file\+\_\+is\+\_\+lnk (
\begin{DoxyParamCaption}
\item[{const {\bf Eina\+\_\+\+Stat} $\ast$}]{stat}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}}\label{group__Eio__Helper_ga20b5b0abdeb0f7d9b406b3aa3b4567b3}


tell if the stated path was a link or not. 


\begin{DoxyParams}{Parameters}
{\em stat} & the structure to get the size from \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
E\+I\+N\+A\+\_\+\+T\+R\+U\+E, if it was. 
\end{DoxyReturn}
