\hypertarget{group__Eina__File__Group}{}\section{File}
\label{group__Eina__File__Group}\index{File@{File}}


This group discusses the functions to handle files and directories.  


\subsection*{Data Structures}
\begin{DoxyCompactItemize}
\item 
struct \hyperlink{struct__Eina__File__Direct__Info}{\+\_\+\+Eina\+\_\+\+File\+\_\+\+Direct\+\_\+\+Info}
\begin{DoxyCompactList}\small\item\em The structure to store information of a path. \end{DoxyCompactList}\item 
struct \hyperlink{struct__Eina__Stat}{\+\_\+\+Eina\+\_\+\+Stat}
\begin{DoxyCompactList}\small\item\em The structure to store some file statistics. \end{DoxyCompactList}\item 
struct \hyperlink{struct__Eina__File__Line}{\+\_\+\+Eina\+\_\+\+File\+\_\+\+Line}
\begin{DoxyCompactList}\small\item\em The structure to store information of a line. \end{DoxyCompactList}\item 
struct \hyperlink{struct__Eina__File}{\+\_\+\+Eina\+\_\+\+File}
\begin{DoxyCompactList}\small\item\em This is the underlying data structure that represents a file in Eina. \end{DoxyCompactList}\item 
struct \hyperlink{struct__Eina__File__Map}{\+\_\+\+Eina\+\_\+\+File\+\_\+\+Map}
\begin{DoxyCompactList}\small\item\em This represents a memory mapped region of a file. \end{DoxyCompactList}\item 
struct \hyperlink{struct__Eina__Lines__Iterator}{\+\_\+\+Eina\+\_\+\+Lines\+\_\+\+Iterator}
\begin{DoxyCompactList}\small\item\em This represents a line iterator a file. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Macros}
\begin{DoxyCompactItemize}
\item 
\hypertarget{group__Eina__File__Group_ga868d33cdb2c1a17ad3d76efc6bbbd5e0}{}\#define \hyperlink{group__Eina__File__Group_ga868d33cdb2c1a17ad3d76efc6bbbd5e0}{E\+I\+N\+A\+\_\+\+P\+A\+T\+H\+\_\+\+M\+A\+X}~8192\label{group__Eina__File__Group_ga868d33cdb2c1a17ad3d76efc6bbbd5e0}

\begin{DoxyCompactList}\small\item\em The constant defined as the highest value for P\+A\+T\+H\+\_\+\+M\+A\+X. \end{DoxyCompactList}\item 
\#define \hyperlink{group__Eina__File__Group_ga307eb3ab937eca910a4905ca61edb1bc}{E\+I\+N\+A\+\_\+\+P\+A\+T\+H\+\_\+\+S\+E\+P\+\_\+\+C}~\textquotesingle{}/\textquotesingle{}
\begin{DoxyCompactList}\small\item\em The constant defined the path separator as the character \textquotesingle{}\textbackslash{}\textquotesingle{} on Windows and \textquotesingle{}/\textquotesingle{} otherwise. \end{DoxyCompactList}\item 
\#define \hyperlink{group__Eina__File__Group_ga616ef146444c4337f8ef1d3cf96904a7}{E\+I\+N\+A\+\_\+\+P\+A\+T\+H\+\_\+\+S\+E\+P\+\_\+\+S}~\char`\"{}/\char`\"{}
\begin{DoxyCompactList}\small\item\em The constant defined the path separator as the string \char`\"{}\textbackslash{}\char`\"{} on Windows and \char`\"{}/\char`\"{} otherwise. \end{DoxyCompactList}\item 
\#define \hyperlink{group__Eina__File__Group_gab0472249546b833441c01dd278932bb0}{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+D\+I\+R\+\_\+\+L\+I\+S\+T\+\_\+\+C\+B}(function)~((\hyperlink{group__Eina__File__Group_ga074e73b17381346ada766213d3bb5432}{Eina\+\_\+\+File\+\_\+\+Dir\+\_\+\+List\+\_\+\+Cb})function)
\begin{DoxyCompactList}\small\item\em The macro to cast to an \hyperlink{group__Eina__File__Group_ga074e73b17381346ada766213d3bb5432}{Eina\+\_\+\+File\+\_\+\+Dir\+\_\+\+List\+\_\+\+Cb}. \end{DoxyCompactList}\item 
\hypertarget{group__Eina__File__Group_gaedcc484fea6c2dc20b7f48664ce42dd6}{}\#define \hyperlink{group__Eina__File__Group_gaedcc484fea6c2dc20b7f48664ce42dd6}{E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+C\+O\+L\+O\+R\+\_\+\+D\+E\+F\+A\+U\+L\+T}~E\+I\+N\+A\+\_\+\+C\+O\+L\+O\+R\+\_\+\+C\+Y\+A\+N\label{group__Eina__File__Group_gaedcc484fea6c2dc20b7f48664ce42dd6}

\begin{DoxyCompactList}\small\item\em Set the color for Eina log entries. \end{DoxyCompactList}\item 
\hypertarget{group__Eina__File__Group_ga24e93be9c5baa3aeab7021b64e290672}{}\#define \hyperlink{group__Eina__File__Group_ga24e93be9c5baa3aeab7021b64e290672}{E\+R\+R}(...)~\hyperlink{group__Eina__Log__Group_ga698d954a5fc2d120a553277361d68047}{E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+D\+O\+M\+\_\+\+E\+R\+R}(\hyperlink{group__Eina__File__Group_ga863d6a4b22af7faa9fa7596f93906e4b}{\+\_\+eina\+\_\+file\+\_\+log\+\_\+dom}, \+\_\+\+\_\+\+V\+A\+\_\+\+A\+R\+G\+S\+\_\+\+\_\+)\label{group__Eina__File__Group_ga24e93be9c5baa3aeab7021b64e290672}

\begin{DoxyCompactList}\small\item\em Macro for logging Eina errors. \end{DoxyCompactList}\item 
\hypertarget{group__Eina__File__Group_gaacd9cddd6a93af1a7d53ebc48901e051}{}\#define \hyperlink{group__Eina__File__Group_gaacd9cddd6a93af1a7d53ebc48901e051}{W\+R\+N}(...)~\hyperlink{group__Eina__Log__Group_ga5073ce1fbcc1f6ea8d0670aac2ecce70}{E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+D\+O\+M\+\_\+\+W\+A\+R\+N}(\hyperlink{group__Eina__File__Group_ga863d6a4b22af7faa9fa7596f93906e4b}{\+\_\+eina\+\_\+file\+\_\+log\+\_\+dom}, \+\_\+\+\_\+\+V\+A\+\_\+\+A\+R\+G\+S\+\_\+\+\_\+)\label{group__Eina__File__Group_gaacd9cddd6a93af1a7d53ebc48901e051}

\begin{DoxyCompactList}\small\item\em Macro for logging Eina warnings. \end{DoxyCompactList}\item 
\hypertarget{group__Eina__File__Group_gaa0bb6435252613b1a74175af3d60045f}{}\#define \hyperlink{group__Eina__File__Group_gaa0bb6435252613b1a74175af3d60045f}{I\+N\+F}(...)~\hyperlink{group__Eina__Log__Group_ga782f84a4805166d2707cb4d59217c64e}{E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+D\+O\+M\+\_\+\+I\+N\+F\+O}(\hyperlink{group__Eina__File__Group_ga863d6a4b22af7faa9fa7596f93906e4b}{\+\_\+eina\+\_\+file\+\_\+log\+\_\+dom}, \+\_\+\+\_\+\+V\+A\+\_\+\+A\+R\+G\+S\+\_\+\+\_\+)\label{group__Eina__File__Group_gaa0bb6435252613b1a74175af3d60045f}

\begin{DoxyCompactList}\small\item\em Macro for logging Eina info messages. \end{DoxyCompactList}\item 
\hypertarget{group__Eina__File__Group_gae8924623ca601364965e3d88fb7f40fa}{}\#define \hyperlink{group__Eina__File__Group_gae8924623ca601364965e3d88fb7f40fa}{D\+B\+G}(...)~\hyperlink{group__Eina__Log__Group_ga4423c9d7bdc95555cf045b66e21e1f5c}{E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+D\+O\+M\+\_\+\+D\+B\+G}(\hyperlink{group__Eina__File__Group_ga863d6a4b22af7faa9fa7596f93906e4b}{\+\_\+eina\+\_\+file\+\_\+log\+\_\+dom}, \+\_\+\+\_\+\+V\+A\+\_\+\+A\+R\+G\+S\+\_\+\+\_\+)\label{group__Eina__File__Group_gae8924623ca601364965e3d88fb7f40fa}

\begin{DoxyCompactList}\small\item\em Macro for logging Eina debug messages. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Typedefs}
\begin{DoxyCompactItemize}
\item 
\hypertarget{group__Eina__File__Group_ga8e8779c9f28937a642dbe1be86760646}{}typedef struct \hyperlink{struct__Eina__File__Direct__Info}{\+\_\+\+Eina\+\_\+\+File\+\_\+\+Direct\+\_\+\+Info} \hyperlink{group__Eina__File__Group_ga8e8779c9f28937a642dbe1be86760646}{Eina\+\_\+\+File\+\_\+\+Direct\+\_\+\+Info}\label{group__Eina__File__Group_ga8e8779c9f28937a642dbe1be86760646}

\begin{DoxyCompactList}\small\item\em A type for \hyperlink{struct__Eina__File__Direct__Info}{\+\_\+\+Eina\+\_\+\+File\+\_\+\+Direct\+\_\+\+Info}. \end{DoxyCompactList}\item 
typedef struct \hyperlink{struct__Eina__Stat}{\+\_\+\+Eina\+\_\+\+Stat} \hyperlink{group__Eina__File__Group_gab15fe1278f044850fcb24417a47364a8}{Eina\+\_\+\+Stat}
\begin{DoxyCompactList}\small\item\em A type for \hyperlink{struct__Eina__Stat}{\+\_\+\+Eina\+\_\+\+Stat}. \end{DoxyCompactList}\item 
\hypertarget{group__Eina__File__Group_ga2c5c3fdefe5df8c774d5623b7a6e7047}{}typedef struct \hyperlink{struct__Eina__File__Line}{\+\_\+\+Eina\+\_\+\+File\+\_\+\+Line} \hyperlink{group__Eina__File__Group_ga2c5c3fdefe5df8c774d5623b7a6e7047}{Eina\+\_\+\+File\+\_\+\+Line}\label{group__Eina__File__Group_ga2c5c3fdefe5df8c774d5623b7a6e7047}

\begin{DoxyCompactList}\small\item\em A type for \hyperlink{struct__Eina__File__Line}{\+\_\+\+Eina\+\_\+\+File\+\_\+\+Line}. \end{DoxyCompactList}\item 
typedef void($\ast$ \hyperlink{group__Eina__File__Group_ga074e73b17381346ada766213d3bb5432}{Eina\+\_\+\+File\+\_\+\+Dir\+\_\+\+List\+\_\+\+Cb}) (const char $\ast$name, const char $\ast$path, void $\ast$data)
\begin{DoxyCompactList}\small\item\em Type for a callback to be called when iterating over the files of a directory. \end{DoxyCompactList}\item 
\hypertarget{group__Eina__File__Group_ga20697123547cbc937c6c9dd845af0403}{}typedef struct \hyperlink{struct__Eina__File}{\+\_\+\+Eina\+\_\+\+File} \hyperlink{group__Eina__File__Group_ga20697123547cbc937c6c9dd845af0403}{Eina\+\_\+\+File}\label{group__Eina__File__Group_ga20697123547cbc937c6c9dd845af0403}

\begin{DoxyCompactList}\small\item\em A file handle. \end{DoxyCompactList}\item 
typedef \hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}($\ast$ \hyperlink{group__Eina__File__Group_gaa08a39ec2e9abfa703d15822a074f521}{Eina\+\_\+\+File\+\_\+\+Copy\+\_\+\+Progress}) (void $\ast$data, unsigned long long done, unsigned long long total)
\begin{DoxyCompactList}\small\item\em Type for a callback to report file copy progress. \end{DoxyCompactList}\item 
\hypertarget{group__Eina__File__Group_gaa386401312fe1dd48e84637fa7a728b6}{}typedef struct \hyperlink{struct__Eina__File__Map}{\+\_\+\+Eina\+\_\+\+File\+\_\+\+Map} \hyperlink{group__Eina__File__Group_gaa386401312fe1dd48e84637fa7a728b6}{Eina\+\_\+\+File\+\_\+\+Map}\label{group__Eina__File__Group_gaa386401312fe1dd48e84637fa7a728b6}

\begin{DoxyCompactList}\small\item\em Type definition for an Eina File Map. \end{DoxyCompactList}\item 
\hypertarget{group__Eina__File__Group_ga08145d0302c44aca3c5a4d1bc6d2b0ca}{}typedef struct \hyperlink{struct__Eina__Lines__Iterator}{\+\_\+\+Eina\+\_\+\+Lines\+\_\+\+Iterator} \hyperlink{group__Eina__File__Group_ga08145d0302c44aca3c5a4d1bc6d2b0ca}{Eina\+\_\+\+Lines\+\_\+\+Iterator}\label{group__Eina__File__Group_ga08145d0302c44aca3c5a4d1bc6d2b0ca}

\begin{DoxyCompactList}\small\item\em Type definition for an Eina Lines Iterator. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Enumerations}
\begin{DoxyCompactItemize}
\item 
enum \hyperlink{group__Eina__File__Group_ga0b7b2db79f9a05b07273fb3428d46cd8}{Eina\+\_\+\+File\+\_\+\+Type} \{ \\*
\hyperlink{group__Eina__File__Group_gga0b7b2db79f9a05b07273fb3428d46cd8aa271a0f3cd77f21c405a7e2636c4b064}{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+U\+N\+K\+N\+O\+W\+N}, 
\\*
\hyperlink{group__Eina__File__Group_gga0b7b2db79f9a05b07273fb3428d46cd8aeffdbcaeae950a9c786736495c9e6ae6}{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+F\+I\+F\+O}, 
\\*
\hyperlink{group__Eina__File__Group_gga0b7b2db79f9a05b07273fb3428d46cd8a3c0a5d44c060edb31c813aa04a025d2a}{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+C\+H\+R}, 
\\*
\hyperlink{group__Eina__File__Group_gga0b7b2db79f9a05b07273fb3428d46cd8a0b8844f30974a2fa27af9ba78bcfaa53}{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+D\+I\+R}, 
\\*
\hyperlink{group__Eina__File__Group_gga0b7b2db79f9a05b07273fb3428d46cd8a4e8e6ab5ad07461bf2e97981d0c6f745}{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+B\+L\+K}, 
\\*
\hyperlink{group__Eina__File__Group_gga0b7b2db79f9a05b07273fb3428d46cd8ae5c8a949a0de3a8fc46dcf02a57df381}{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+R\+E\+G}, 
\\*
\hyperlink{group__Eina__File__Group_gga0b7b2db79f9a05b07273fb3428d46cd8abcfb23817258fffca146c9c43df45862}{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+L\+N\+K}, 
\\*
\hyperlink{group__Eina__File__Group_gga0b7b2db79f9a05b07273fb3428d46cd8a7b2507d72b963615be2bef550d98c188}{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+S\+O\+C\+K}, 
\\*
\hyperlink{group__Eina__File__Group_gga0b7b2db79f9a05b07273fb3428d46cd8af0980697fe8cbfc60a19f1f22b39634f}{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+W\+H\+T}
 \}\begin{DoxyCompactList}\small\item\em Type for enumeration of a file type. \end{DoxyCompactList}
\item 
enum \hyperlink{group__Eina__File__Group_ga2788825dfdd797282112148f2f65ec7a}{Eina\+\_\+\+File\+\_\+\+Populate} \{ \\*
\hyperlink{group__Eina__File__Group_gga2788825dfdd797282112148f2f65ec7aae9b963a3ffd3a5f885c86db4673eabd3}{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+R\+A\+N\+D\+O\+M}, 
\\*
\hyperlink{group__Eina__File__Group_gga2788825dfdd797282112148f2f65ec7aabb92031c2d448a1659117121866229b2}{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+S\+E\+Q\+U\+E\+N\+T\+I\+A\+L}, 
\\*
\hyperlink{group__Eina__File__Group_gga2788825dfdd797282112148f2f65ec7aab049b3550f67cdd35ea15d5839800186}{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+W\+I\+L\+L\+N\+E\+E\+D}, 
\\*
\hyperlink{group__Eina__File__Group_gga2788825dfdd797282112148f2f65ec7aa6c05201c80772a294c16800d7ca46a1d}{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+P\+O\+P\+U\+L\+A\+T\+E}, 
\\*
\hyperlink{group__Eina__File__Group_gga2788825dfdd797282112148f2f65ec7aabcd9246f7fbbbd2df5eeec7f3913558c}{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+D\+O\+N\+T\+N\+E\+E\+D}, 
\\*
\hyperlink{group__Eina__File__Group_gga2788825dfdd797282112148f2f65ec7aa4786137330071feac6aafa0dcfc56519}{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+R\+E\+M\+O\+V\+E}
 \}\begin{DoxyCompactList}\small\item\em Type for enumeration of a file access type. \end{DoxyCompactList}
\item 
\hypertarget{group__Eina__File__Group_ga64acf75a3d09f9ef5ad04173a628cc32}{}enum \hyperlink{group__Eina__File__Group_ga64acf75a3d09f9ef5ad04173a628cc32}{Eina\+\_\+\+File\+\_\+\+Copy\+\_\+\+Flags} \{ \\*
{\bfseries E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+C\+O\+P\+Y\+\_\+\+D\+A\+T\+A} = 0, 
\\*
{\bfseries E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+C\+O\+P\+Y\+\_\+\+P\+E\+R\+M\+I\+S\+S\+I\+O\+N} = (1 $<$$<$ 0), 
\\*
{\bfseries E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+C\+O\+P\+Y\+\_\+\+X\+A\+T\+T\+R} = (1 $<$$<$ 1)
 \}\label{group__Eina__File__Group_ga64acf75a3d09f9ef5ad04173a628cc32}
\begin{DoxyCompactList}\small\item\em Enumeration for a flag what to copy from file. \end{DoxyCompactList}
\end{DoxyCompactItemize}
\subsection*{Functions}
\begin{DoxyCompactItemize}
\item 
\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} \hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool} \hyperlink{group__Eina__File__Group_ga186dc8dd1a166a8972189f78bbee15ea}{eina\+\_\+file\+\_\+dir\+\_\+list} (const char $\ast$dir, \hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool} recursive, \hyperlink{group__Eina__File__Group_ga074e73b17381346ada766213d3bb5432}{Eina\+\_\+\+File\+\_\+\+Dir\+\_\+\+List\+\_\+\+Cb} cb, void $\ast$data) \hyperlink{group__Eina__Types__Group_ga1a066aa3069f7e43279021cc1e378fac}{E\+I\+N\+A\+\_\+\+A\+R\+G\+\_\+\+N\+O\+N\+N\+U\+L\+L}(1
\begin{DoxyCompactList}\small\item\em Lists all the files on the directory by calling the function for every file found. \end{DoxyCompactList}\item 
\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} \hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool} \hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} \hyperlink{group__Eina__Array__Group_ga2a57284ee83a7e767485b7ae2f5df86c}{Eina\+\_\+\+Array} $\ast$ \hyperlink{group__Eina__File__Group_ga8f157fabca35a981c0e253fdb3130385}{eina\+\_\+file\+\_\+split} (char $\ast$path) \hyperlink{group__Eina__Types__Group_ga4ba89e4b58eff707a6cf05ffe0cd4dea}{E\+I\+N\+A\+\_\+\+W\+A\+R\+N\+\_\+\+U\+N\+U\+S\+E\+D\+\_\+\+R\+E\+S\+U\+L\+T} \hyperlink{group__Eina__Types__Group_ga1a066aa3069f7e43279021cc1e378fac}{E\+I\+N\+A\+\_\+\+A\+R\+G\+\_\+\+N\+O\+N\+N\+U\+L\+L}(1) \hyperlink{group__Eina__Types__Group_gaabeaa41dd47f4b4d3991b10ba00bc59c}{E\+I\+N\+A\+\_\+\+M\+A\+L\+L\+O\+C}
\begin{DoxyCompactList}\small\item\em Splits a path according to the delimiter of the filesystem. \end{DoxyCompactList}\item 
\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} \hyperlink{group__Eina__Iterator__Group_ga15b975bb881d955249ce13d4ebc96948}{Eina\+\_\+\+Iterator} $\ast$ \hyperlink{group__Eina__File__Group_ga8c4fabb379b865a4ec134a5c4436be2a}{eina\+\_\+file\+\_\+ls} (const char $\ast$dir) \hyperlink{group__Eina__Types__Group_ga4ba89e4b58eff707a6cf05ffe0cd4dea}{E\+I\+N\+A\+\_\+\+W\+A\+R\+N\+\_\+\+U\+N\+U\+S\+E\+D\+\_\+\+R\+E\+S\+U\+L\+T} \hyperlink{group__Eina__Types__Group_ga1a066aa3069f7e43279021cc1e378fac}{E\+I\+N\+A\+\_\+\+A\+R\+G\+\_\+\+N\+O\+N\+N\+U\+L\+L}(1) \hyperlink{group__Eina__Types__Group_gaabeaa41dd47f4b4d3991b10ba00bc59c}{E\+I\+N\+A\+\_\+\+M\+A\+L\+L\+O\+C}
\begin{DoxyCompactList}\small\item\em Gets an iterator to list the content of a directory. \end{DoxyCompactList}\item 
\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} \hyperlink{group__Eina__Iterator__Group_ga15b975bb881d955249ce13d4ebc96948}{Eina\+\_\+\+Iterator} $\ast$ \hyperlink{group__Eina__File__Group_ga21d5e94767ae9932751649ce09a2f98f}{eina\+\_\+file\+\_\+stat\+\_\+ls} (const char $\ast$dir) \hyperlink{group__Eina__Types__Group_ga4ba89e4b58eff707a6cf05ffe0cd4dea}{E\+I\+N\+A\+\_\+\+W\+A\+R\+N\+\_\+\+U\+N\+U\+S\+E\+D\+\_\+\+R\+E\+S\+U\+L\+T} \hyperlink{group__Eina__Types__Group_ga1a066aa3069f7e43279021cc1e378fac}{E\+I\+N\+A\+\_\+\+A\+R\+G\+\_\+\+N\+O\+N\+N\+U\+L\+L}(1) \hyperlink{group__Eina__Types__Group_gaabeaa41dd47f4b4d3991b10ba00bc59c}{E\+I\+N\+A\+\_\+\+M\+A\+L\+L\+O\+C}
\begin{DoxyCompactList}\small\item\em Gets an iterator to list the content of a directory, with direct information. \end{DoxyCompactList}\item 
\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} int \hyperlink{group__Eina__File__Group_ga48cc0e04ab40c51160cda615c871e1f0}{eina\+\_\+file\+\_\+statat} (void $\ast$container, \hyperlink{group__Eina__File__Group_ga8e8779c9f28937a642dbe1be86760646}{Eina\+\_\+\+File\+\_\+\+Direct\+\_\+\+Info} $\ast$info, \hyperlink{group__Eina__File__Group_gab15fe1278f044850fcb24417a47364a8}{Eina\+\_\+\+Stat} $\ast$buf) \hyperlink{group__Eina__Types__Group_ga4ba89e4b58eff707a6cf05ffe0cd4dea}{E\+I\+N\+A\+\_\+\+W\+A\+R\+N\+\_\+\+U\+N\+U\+S\+E\+D\+\_\+\+R\+E\+S\+U\+L\+T} \hyperlink{group__Eina__Types__Group_ga1a066aa3069f7e43279021cc1e378fac}{E\+I\+N\+A\+\_\+\+A\+R\+G\+\_\+\+N\+O\+N\+N\+U\+L\+L}(1
\begin{DoxyCompactList}\small\item\em Uses information provided by \hyperlink{group__Eina__Iterator__Group_ga15b975bb881d955249ce13d4ebc96948}{Eina\+\_\+\+Iterator} of \hyperlink{group__Eina__File__Group_ga21d5e94767ae9932751649ce09a2f98f}{eina\+\_\+file\+\_\+stat\+\_\+ls()} or \hyperlink{group__Eina__File__Group_gab20cc163550854f917960f7971c45ca6}{eina\+\_\+file\+\_\+direct\+\_\+ls()} to call stat in the most efficient way on your system. \end{DoxyCompactList}\item 
\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} int \hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} int \hyperlink{group__Eina__File__Group_gafe29831e515ea3e8431d3a6b06577a26}{eina\+\_\+file\+\_\+mkstemp} (const char $\ast$templatename, \hyperlink{group__Eina__Stringshare__Group_gae8d53f367d5da5acfd19af6c235831d5}{Eina\+\_\+\+Tmpstr} $\ast$$\ast$path)
\begin{DoxyCompactList}\small\item\em Generates and creates a uniquely named temporary file from template. \end{DoxyCompactList}\item 
\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} \hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool} \hyperlink{group__Eina__File__Group_gae9dc80c6e1e50e38db8f019f3755fe0a}{eina\+\_\+file\+\_\+mkdtemp} (const char $\ast$templatename, \hyperlink{group__Eina__Stringshare__Group_gae8d53f367d5da5acfd19af6c235831d5}{Eina\+\_\+\+Tmpstr} $\ast$$\ast$path)
\begin{DoxyCompactList}\small\item\em Generates and creates a uniquely named temporary directory from template. \end{DoxyCompactList}\item 
\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} \hyperlink{group__Eina__Iterator__Group_ga15b975bb881d955249ce13d4ebc96948}{Eina\+\_\+\+Iterator} $\ast$ \hyperlink{group__Eina__File__Group_gab20cc163550854f917960f7971c45ca6}{eina\+\_\+file\+\_\+direct\+\_\+ls} (const char $\ast$dir) \hyperlink{group__Eina__Types__Group_ga4ba89e4b58eff707a6cf05ffe0cd4dea}{E\+I\+N\+A\+\_\+\+W\+A\+R\+N\+\_\+\+U\+N\+U\+S\+E\+D\+\_\+\+R\+E\+S\+U\+L\+T} \hyperlink{group__Eina__Types__Group_ga1a066aa3069f7e43279021cc1e378fac}{E\+I\+N\+A\+\_\+\+A\+R\+G\+\_\+\+N\+O\+N\+N\+U\+L\+L}(1) \hyperlink{group__Eina__Types__Group_gaabeaa41dd47f4b4d3991b10ba00bc59c}{E\+I\+N\+A\+\_\+\+M\+A\+L\+L\+O\+C}
\begin{DoxyCompactList}\small\item\em Gets an iterator to list the content of a directory, with direct information. \end{DoxyCompactList}\item 
\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} char $\ast$ \hyperlink{group__Eina__File__Group_ga7596f37d3a8a548f7223c29c55111c83}{eina\+\_\+file\+\_\+path\+\_\+sanitize} (const char $\ast$path)
\begin{DoxyCompactList}\small\item\em Sanitizes the file path. \end{DoxyCompactList}\item 
\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} \hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool} \hyperlink{group__Eina__File__Group_ga90159e5c99bfaa036ca9f695f713ffa7}{eina\+\_\+file\+\_\+copy} (const char $\ast$src, const char $\ast$dst, \hyperlink{group__Eina__File__Group_ga64acf75a3d09f9ef5ad04173a628cc32}{Eina\+\_\+\+File\+\_\+\+Copy\+\_\+\+Flags} flags, \hyperlink{group__Eina__File__Group_gaa08a39ec2e9abfa703d15822a074f521}{Eina\+\_\+\+File\+\_\+\+Copy\+\_\+\+Progress} cb, const void $\ast$cb\+\_\+data) \hyperlink{group__Eina__Types__Group_ga1a066aa3069f7e43279021cc1e378fac}{E\+I\+N\+A\+\_\+\+A\+R\+G\+\_\+\+N\+O\+N\+N\+U\+L\+L}(1
\begin{DoxyCompactList}\small\item\em Copy one file to another using the fastest possible way and report progress. \end{DoxyCompactList}\item 
\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} \hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool} \hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} \hyperlink{group__Eina__File__Group_ga20697123547cbc937c6c9dd845af0403}{Eina\+\_\+\+File} $\ast$ \hyperlink{group__Eina__File__Group_ga787592b7325fe0174c324d6a4dbd86da}{eina\+\_\+file\+\_\+open} (const char $\ast$name, \hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool} shared) \hyperlink{group__Eina__Types__Group_ga4ba89e4b58eff707a6cf05ffe0cd4dea}{E\+I\+N\+A\+\_\+\+W\+A\+R\+N\+\_\+\+U\+N\+U\+S\+E\+D\+\_\+\+R\+E\+S\+U\+L\+T} \hyperlink{group__Eina__Types__Group_ga1a066aa3069f7e43279021cc1e378fac}{E\+I\+N\+A\+\_\+\+A\+R\+G\+\_\+\+N\+O\+N\+N\+U\+L\+L}(1) \hyperlink{group__Eina__Types__Group_gaabeaa41dd47f4b4d3991b10ba00bc59c}{E\+I\+N\+A\+\_\+\+M\+A\+L\+L\+O\+C}
\begin{DoxyCompactList}\small\item\em Gets a read-\/only handler to a file. \end{DoxyCompactList}\item 
\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} \hyperlink{group__Eina__File__Group_ga20697123547cbc937c6c9dd845af0403}{Eina\+\_\+\+File} $\ast$ \hyperlink{group__Eina__File__Group_ga928baf177014f57317e89aab09e2ecaf}{eina\+\_\+file\+\_\+virtualize} (const char $\ast$virtual\+\_\+name, const void $\ast$data, unsigned long long length, \hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool} copy) \hyperlink{group__Eina__Types__Group_ga4ba89e4b58eff707a6cf05ffe0cd4dea}{E\+I\+N\+A\+\_\+\+W\+A\+R\+N\+\_\+\+U\+N\+U\+S\+E\+D\+\_\+\+R\+E\+S\+U\+L\+T} \hyperlink{group__Eina__Types__Group_ga1a066aa3069f7e43279021cc1e378fac}{E\+I\+N\+A\+\_\+\+A\+R\+G\+\_\+\+N\+O\+N\+N\+U\+L\+L}(1)
\begin{DoxyCompactList}\small\item\em Create a virtual file from a memory pointer. \end{DoxyCompactList}\item 
\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} \hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool} \hyperlink{group__Eina__File__Group_ga4b15c2ec6fcd45ce8ecd1f9a5c8aa4ee}{eina\+\_\+file\+\_\+virtual} (\hyperlink{group__Eina__File__Group_ga20697123547cbc937c6c9dd845af0403}{Eina\+\_\+\+File} $\ast$file) \hyperlink{group__Eina__Types__Group_ga4ba89e4b58eff707a6cf05ffe0cd4dea}{E\+I\+N\+A\+\_\+\+W\+A\+R\+N\+\_\+\+U\+N\+U\+S\+E\+D\+\_\+\+R\+E\+S\+U\+L\+T} \hyperlink{group__Eina__Types__Group_ga1a066aa3069f7e43279021cc1e378fac}{E\+I\+N\+A\+\_\+\+A\+R\+G\+\_\+\+N\+O\+N\+N\+U\+L\+L}(1)
\begin{DoxyCompactList}\small\item\em Tells if a file is a real file or only exist in memory. \end{DoxyCompactList}\item 
\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} \hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool} \hyperlink{group__Eina__File__Group_gac118af0ab5f22ec27954057223cb1ec1}{eina\+\_\+file\+\_\+refresh} (\hyperlink{group__Eina__File__Group_ga20697123547cbc937c6c9dd845af0403}{Eina\+\_\+\+File} $\ast$file)
\begin{DoxyCompactList}\small\item\em Refreshes file information. \end{DoxyCompactList}\item 
\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} \hyperlink{group__Eina__File__Group_ga20697123547cbc937c6c9dd845af0403}{Eina\+\_\+\+File} $\ast$ \hyperlink{group__Eina__File__Group_ga88bb67c6691a7f134f0414fd3c1df680}{eina\+\_\+file\+\_\+dup} (const \hyperlink{group__Eina__File__Group_ga20697123547cbc937c6c9dd845af0403}{Eina\+\_\+\+File} $\ast$file)
\begin{DoxyCompactList}\small\item\em Duplicates a read-\/only handler of a previously open file. \end{DoxyCompactList}\item 
\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} void \hyperlink{group__Eina__File__Group_ga715ced39d0806964baab10fe30e7bd37}{eina\+\_\+file\+\_\+close} (\hyperlink{group__Eina__File__Group_ga20697123547cbc937c6c9dd845af0403}{Eina\+\_\+\+File} $\ast$file)
\begin{DoxyCompactList}\small\item\em Unrefs the file handler. \end{DoxyCompactList}\item 
\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} size\+\_\+t \hyperlink{group__Eina__File__Group_ga4970b74fb3b9fe5a8e53bccbb3283711}{eina\+\_\+file\+\_\+size\+\_\+get} (const \hyperlink{group__Eina__File__Group_ga20697123547cbc937c6c9dd845af0403}{Eina\+\_\+\+File} $\ast$file)
\begin{DoxyCompactList}\small\item\em Gets the file size at open time. \end{DoxyCompactList}\item 
\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} time\+\_\+t \hyperlink{group__Eina__File__Group_ga24f150a021d8be9d9b99cb1a0d7d8fcd}{eina\+\_\+file\+\_\+mtime\+\_\+get} (const \hyperlink{group__Eina__File__Group_ga20697123547cbc937c6c9dd845af0403}{Eina\+\_\+\+File} $\ast$file)
\begin{DoxyCompactList}\small\item\em Gets the last modification time of an open file. \end{DoxyCompactList}\item 
\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} const char $\ast$ \hyperlink{group__Eina__File__Group_ga1a53f3fdef3aa6fb265effe86c2f7a92}{eina\+\_\+file\+\_\+filename\+\_\+get} (const \hyperlink{group__Eina__File__Group_ga20697123547cbc937c6c9dd845af0403}{Eina\+\_\+\+File} $\ast$file)
\begin{DoxyCompactList}\small\item\em Gets the filename of an open file. \end{DoxyCompactList}\item 
\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} \hyperlink{group__Eina__Iterator__Group_ga15b975bb881d955249ce13d4ebc96948}{Eina\+\_\+\+Iterator} $\ast$ \hyperlink{group__Eina__File__Group_gac352732de27c1d327dfc997b807e8704}{eina\+\_\+file\+\_\+xattr\+\_\+get} (\hyperlink{group__Eina__File__Group_ga20697123547cbc937c6c9dd845af0403}{Eina\+\_\+\+File} $\ast$file)
\begin{DoxyCompactList}\small\item\em Gets the extended attribute of an open file. \end{DoxyCompactList}\item 
\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} \hyperlink{group__Eina__Iterator__Group_ga15b975bb881d955249ce13d4ebc96948}{Eina\+\_\+\+Iterator} $\ast$ \hyperlink{group__Eina__File__Group_ga734fe96e84273f8d649e3795c0dfd5d1}{eina\+\_\+file\+\_\+xattr\+\_\+value\+\_\+get} (\hyperlink{group__Eina__File__Group_ga20697123547cbc937c6c9dd845af0403}{Eina\+\_\+\+File} $\ast$file)
\begin{DoxyCompactList}\small\item\em Gets the extended attribute of an open file. \end{DoxyCompactList}\item 
\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} void $\ast$ \hyperlink{group__Eina__File__Group_ga880f977c352766672d54991421835e7d}{eina\+\_\+file\+\_\+map\+\_\+all} (\hyperlink{group__Eina__File__Group_ga20697123547cbc937c6c9dd845af0403}{Eina\+\_\+\+File} $\ast$file, \hyperlink{group__Eina__File__Group_ga2788825dfdd797282112148f2f65ec7a}{Eina\+\_\+\+File\+\_\+\+Populate} rule)
\begin{DoxyCompactList}\small\item\em Maps all the files to a buffer. \end{DoxyCompactList}\item 
\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} void $\ast$ \hyperlink{group__Eina__File__Group_ga8a9f5b50c7a12340421da059501660be}{eina\+\_\+file\+\_\+map\+\_\+new} (\hyperlink{group__Eina__File__Group_ga20697123547cbc937c6c9dd845af0403}{Eina\+\_\+\+File} $\ast$file, \hyperlink{group__Eina__File__Group_ga2788825dfdd797282112148f2f65ec7a}{Eina\+\_\+\+File\+\_\+\+Populate} rule, unsigned long int offset, unsigned long int length)
\begin{DoxyCompactList}\small\item\em Maps a part of the file. \end{DoxyCompactList}\item 
\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} void \hyperlink{group__Eina__File__Group_ga60541f5c98e55f38d792d9f92d2d544f}{eina\+\_\+file\+\_\+map\+\_\+free} (\hyperlink{group__Eina__File__Group_ga20697123547cbc937c6c9dd845af0403}{Eina\+\_\+\+File} $\ast$file, void $\ast$map)
\begin{DoxyCompactList}\small\item\em Unrefs and unmaps memory if possible. \end{DoxyCompactList}\item 
\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} void \hyperlink{group__Eina__File__Group_ga61d232dbd4b05d5134ea93ef00884550}{eina\+\_\+file\+\_\+map\+\_\+populate} (\hyperlink{group__Eina__File__Group_ga20697123547cbc937c6c9dd845af0403}{Eina\+\_\+\+File} $\ast$file, \hyperlink{group__Eina__File__Group_ga2788825dfdd797282112148f2f65ec7a}{Eina\+\_\+\+File\+\_\+\+Populate} rule, const void $\ast$map, unsigned long int offset, unsigned long int length)
\begin{DoxyCompactList}\small\item\em Ask the O\+S to populate or otherwise pages of memory in file mapping. \end{DoxyCompactList}\item 
\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} \hyperlink{group__Eina__Iterator__Group_ga15b975bb881d955249ce13d4ebc96948}{Eina\+\_\+\+Iterator} $\ast$ \hyperlink{group__Eina__File__Group_gadc4d521fb8a14d51d85f2d11caaec54d}{eina\+\_\+file\+\_\+map\+\_\+lines} (\hyperlink{group__Eina__File__Group_ga20697123547cbc937c6c9dd845af0403}{Eina\+\_\+\+File} $\ast$file)
\begin{DoxyCompactList}\small\item\em Maps line by line in the memory efficiently using an \hyperlink{group__Eina__Iterator__Group_ga15b975bb881d955249ce13d4ebc96948}{Eina\+\_\+\+Iterator}. \end{DoxyCompactList}\item 
\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} \hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool} \hyperlink{group__Eina__File__Group_ga123564d305287ee8c08b2c88c7d78a47}{eina\+\_\+file\+\_\+map\+\_\+faulted} (\hyperlink{group__Eina__File__Group_ga20697123547cbc937c6c9dd845af0403}{Eina\+\_\+\+File} $\ast$file, void $\ast$map)
\begin{DoxyCompactList}\small\item\em Tells whether there has been an I\+O error during the life of a mmaped file,. \end{DoxyCompactList}\item 
\hypertarget{group__Eina__File__Group_gadf638f95abe9aa175b6aaa3762bc1b54}{}static size\+\_\+t {\bfseries eina\+\_\+file\+\_\+path\+\_\+join\+\_\+len} (char $\ast$dst, size\+\_\+t size, const char $\ast$a, size\+\_\+t a\+\_\+len, const char $\ast$b, size\+\_\+t b\+\_\+len)\label{group__Eina__File__Group_gadf638f95abe9aa175b6aaa3762bc1b54}

\item 
\hypertarget{group__Eina__File__Group_gaafc34529ee88ef8b528f62dab8ffe469}{}static size\+\_\+t {\bfseries eina\+\_\+file\+\_\+path\+\_\+join} (char $\ast$dst, size\+\_\+t size, const char $\ast$a, const char $\ast$b)\label{group__Eina__File__Group_gaafc34529ee88ef8b528f62dab8ffe469}

\item 
\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool} \hyperlink{group__Eina__File__Group_ga3eb6309933f0a698eda7cf41ed21fb5e}{eina\+\_\+file\+\_\+path\+\_\+relative} (const char $\ast$path)
\begin{DoxyCompactList}\small\item\em Determines if a path is relative or absolute. \end{DoxyCompactList}\item 
\hyperlink{group__Eina__Stringshare__Group_gae8d53f367d5da5acfd19af6c235831d5}{Eina\+\_\+\+Tmpstr} $\ast$ \hyperlink{group__Eina__File__Group_gafa8822e14b74df94568fd2c0a7c19198}{eina\+\_\+file\+\_\+current\+\_\+directory\+\_\+get} (const char $\ast$path, size\+\_\+t len)
\begin{DoxyCompactList}\small\item\em Gets the current directory and optionally appends a path to it. \end{DoxyCompactList}\item 
char $\ast$ \hyperlink{group__Eina__File__Group_gaf4d25f9df108b8246e0ce7c32f035e33}{eina\+\_\+file\+\_\+cleanup} (\hyperlink{group__Eina__Stringshare__Group_gae8d53f367d5da5acfd19af6c235831d5}{Eina\+\_\+\+Tmpstr} $\ast$path)
\begin{DoxyCompactList}\small\item\em Cleans up Eina after a file is no longer needed. \end{DoxyCompactList}\item 
void \hyperlink{group__Eina__File__Group_ga9360f0d850bb1bf8bf40027985f4ed42}{eina\+\_\+file\+\_\+clean\+\_\+close} (\hyperlink{group__Eina__File__Group_ga20697123547cbc937c6c9dd845af0403}{Eina\+\_\+\+File} $\ast$file)
\begin{DoxyCompactList}\small\item\em Closes and cleans up after an Eina file. \end{DoxyCompactList}\item 
void \hyperlink{group__Eina__File__Group_ga6960f0b4d94996a4beb965a684d92dea}{eina\+\_\+file\+\_\+real\+\_\+close} (\hyperlink{group__Eina__File__Group_ga20697123547cbc937c6c9dd845af0403}{Eina\+\_\+\+File} $\ast$file)
\begin{DoxyCompactList}\small\item\em Closes a file from the O\+S perspective. \end{DoxyCompactList}\item 
void \hyperlink{group__Eina__File__Group_ga64a3123b8e0b9698d30611bacd548b9e}{eina\+\_\+file\+\_\+flush} (\hyperlink{group__Eina__File__Group_ga20697123547cbc937c6c9dd845af0403}{Eina\+\_\+\+File} $\ast$file, unsigned long int length)
\begin{DoxyCompactList}\small\item\em Resets the internal housekeeping structures after a file has changed. \end{DoxyCompactList}\item 
void \hyperlink{group__Eina__File__Group_ga7fc3c176abeb346004562e5ddfdf6e0f}{eina\+\_\+file\+\_\+common\+\_\+map\+\_\+free} (\hyperlink{group__Eina__File__Group_ga20697123547cbc937c6c9dd845af0403}{Eina\+\_\+\+File} $\ast$file, void $\ast$map, void($\ast$free\+\_\+func)(\hyperlink{group__Eina__File__Group_gaa386401312fe1dd48e84637fa7a728b6}{Eina\+\_\+\+File\+\_\+\+Map} $\ast$map))
\begin{DoxyCompactList}\small\item\em Removes a mapped region from the file and frees the resources. \end{DoxyCompactList}\item 
void $\ast$ \hyperlink{group__Eina__File__Group_ga7fb3d5e5399d49c2fb3599dd7d29b689}{eina\+\_\+file\+\_\+virtual\+\_\+map\+\_\+all} (\hyperlink{group__Eina__File__Group_ga20697123547cbc937c6c9dd845af0403}{Eina\+\_\+\+File} $\ast$file)
\begin{DoxyCompactList}\small\item\em Map the entire contents fo a virtual file to a buffer. \end{DoxyCompactList}\item 
void $\ast$ \hyperlink{group__Eina__File__Group_ga08bc51d32fd60da6f1bbfb530a0feb0d}{eina\+\_\+file\+\_\+virtual\+\_\+map\+\_\+new} (\hyperlink{group__Eina__File__Group_ga20697123547cbc937c6c9dd845af0403}{Eina\+\_\+\+File} $\ast$file, unsigned long int offset, unsigned long int length)
\begin{DoxyCompactList}\small\item\em Map a part of a virtual file to a buffer. \end{DoxyCompactList}\item 
void \hyperlink{group__Eina__File__Group_ga105fa4c85c984190da9c5f22b509fd15}{eina\+\_\+file\+\_\+virtual\+\_\+map\+\_\+free} (\hyperlink{group__Eina__File__Group_ga20697123547cbc937c6c9dd845af0403}{Eina\+\_\+\+File} $\ast$file, void $\ast$map)
\begin{DoxyCompactList}\small\item\em Unref and unmap memory if possible. \end{DoxyCompactList}\item 
unsigned int \hyperlink{group__Eina__File__Group_ga448a87e4666e16adb3d4289c210c549e}{eina\+\_\+file\+\_\+map\+\_\+key\+\_\+length} (const void $\ast$key)
\begin{DoxyCompactList}\small\item\em Get the length of a map key. \end{DoxyCompactList}\item 
int \hyperlink{group__Eina__File__Group_ga279f49595634c5825f579f98b8c58780}{eina\+\_\+file\+\_\+map\+\_\+key\+\_\+cmp} (const unsigned long long int $\ast$key1, int key1\+\_\+length, const unsigned long long int $\ast$key2, int key2\+\_\+length)
\begin{DoxyCompactList}\small\item\em Compares two map keys. \end{DoxyCompactList}\item 
int \hyperlink{group__Eina__File__Group_ga61afa15fd0c3f3938179b041c1bc7226}{eina\+\_\+file\+\_\+map\+\_\+key\+\_\+hash} (const unsigned long long int $\ast$key, int key\+\_\+length)
\begin{DoxyCompactList}\small\item\em Creates a hash from a map key. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Variables}
\begin{DoxyCompactItemize}
\item 
\hyperlink{group__Eina__Hash__Group_ga9a89d7d3ee260d3a60572ebf651b07e0}{Eina\+\_\+\+Hash} $\ast$ \hyperlink{group__Eina__File__Group_ga566b1dffb98a71425706508ba19e12ea}{\+\_\+eina\+\_\+file\+\_\+cache}
\begin{DoxyCompactList}\small\item\em A pointer to the global Eina file cache. \end{DoxyCompactList}\item 
\hypertarget{group__Eina__File__Group_ga30e9ea07586b204a15c736af468616d2}{}Eina\+\_\+\+Lock \hyperlink{group__Eina__File__Group_ga30e9ea07586b204a15c736af468616d2}{\+\_\+eina\+\_\+file\+\_\+lock\+\_\+cache}\label{group__Eina__File__Group_ga30e9ea07586b204a15c736af468616d2}

\begin{DoxyCompactList}\small\item\em The global file lock cache. \end{DoxyCompactList}\item 
int \hyperlink{group__Eina__File__Group_ga863d6a4b22af7faa9fa7596f93906e4b}{\+\_\+eina\+\_\+file\+\_\+log\+\_\+dom}
\begin{DoxyCompactList}\small\item\em The global Eina log file domain. \end{DoxyCompactList}\end{DoxyCompactItemize}


\subsection{Detailed Description}
This group discusses the functions to handle files and directories. 

Functions to handle files and directories.

These functions make it easier to do a number of file and directory operations such as getting the list of files in a directory, spliting paths, and finding out file size and type.

\begin{DoxyWarning}{Warning}
All functions in this group are {\bfseries blocking}, which means they may take a long time to return, use them carefully.
\end{DoxyWarning}
See an example \hyperlink{eina_file_example_01_page}{here}.

This module performs internal housekeeping and utility tasks for Eina\+\_\+\+File. It also provides the underlying data types for things like file handles, file maps and file iterators. 

\subsection{Macro Definition Documentation}
\hypertarget{group__Eina__File__Group_ga307eb3ab937eca910a4905ca61edb1bc}{}\index{File@{File}!E\+I\+N\+A\+\_\+\+P\+A\+T\+H\+\_\+\+S\+E\+P\+\_\+\+C@{E\+I\+N\+A\+\_\+\+P\+A\+T\+H\+\_\+\+S\+E\+P\+\_\+\+C}}
\index{E\+I\+N\+A\+\_\+\+P\+A\+T\+H\+\_\+\+S\+E\+P\+\_\+\+C@{E\+I\+N\+A\+\_\+\+P\+A\+T\+H\+\_\+\+S\+E\+P\+\_\+\+C}!File@{File}}
\subsubsection[{E\+I\+N\+A\+\_\+\+P\+A\+T\+H\+\_\+\+S\+E\+P\+\_\+\+C}]{\setlength{\rightskip}{0pt plus 5cm}\#define E\+I\+N\+A\+\_\+\+P\+A\+T\+H\+\_\+\+S\+E\+P\+\_\+\+C~\textquotesingle{}/\textquotesingle{}}\label{group__Eina__File__Group_ga307eb3ab937eca910a4905ca61edb1bc}


The constant defined the path separator as the character \textquotesingle{}\textbackslash{}\textquotesingle{} on Windows and \textquotesingle{}/\textquotesingle{} otherwise. 

\begin{DoxySince}{Since}
1.\+16 
\end{DoxySince}


Referenced by eina\+\_\+module\+\_\+symbol\+\_\+path\+\_\+get(), and eina\+\_\+prefix\+\_\+new().

\hypertarget{group__Eina__File__Group_ga616ef146444c4337f8ef1d3cf96904a7}{}\index{File@{File}!E\+I\+N\+A\+\_\+\+P\+A\+T\+H\+\_\+\+S\+E\+P\+\_\+\+S@{E\+I\+N\+A\+\_\+\+P\+A\+T\+H\+\_\+\+S\+E\+P\+\_\+\+S}}
\index{E\+I\+N\+A\+\_\+\+P\+A\+T\+H\+\_\+\+S\+E\+P\+\_\+\+S@{E\+I\+N\+A\+\_\+\+P\+A\+T\+H\+\_\+\+S\+E\+P\+\_\+\+S}!File@{File}}
\subsubsection[{E\+I\+N\+A\+\_\+\+P\+A\+T\+H\+\_\+\+S\+E\+P\+\_\+\+S}]{\setlength{\rightskip}{0pt plus 5cm}\#define E\+I\+N\+A\+\_\+\+P\+A\+T\+H\+\_\+\+S\+E\+P\+\_\+\+S~\char`\"{}/\char`\"{}}\label{group__Eina__File__Group_ga616ef146444c4337f8ef1d3cf96904a7}


The constant defined the path separator as the string \char`\"{}\textbackslash{}\char`\"{} on Windows and \char`\"{}/\char`\"{} otherwise. 

\begin{DoxySince}{Since}
1.\+16 
\end{DoxySince}


Referenced by eina\+\_\+prefix\+\_\+new().

\hypertarget{group__Eina__File__Group_gab0472249546b833441c01dd278932bb0}{}\index{File@{File}!E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+D\+I\+R\+\_\+\+L\+I\+S\+T\+\_\+\+C\+B@{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+D\+I\+R\+\_\+\+L\+I\+S\+T\+\_\+\+C\+B}}
\index{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+D\+I\+R\+\_\+\+L\+I\+S\+T\+\_\+\+C\+B@{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+D\+I\+R\+\_\+\+L\+I\+S\+T\+\_\+\+C\+B}!File@{File}}
\subsubsection[{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+D\+I\+R\+\_\+\+L\+I\+S\+T\+\_\+\+C\+B}]{\setlength{\rightskip}{0pt plus 5cm}\#define E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+D\+I\+R\+\_\+\+L\+I\+S\+T\+\_\+\+C\+B(
\begin{DoxyParamCaption}
\item[{}]{function}
\end{DoxyParamCaption}
)~(({\bf Eina\+\_\+\+File\+\_\+\+Dir\+\_\+\+List\+\_\+\+Cb})function)}\label{group__Eina__File__Group_gab0472249546b833441c01dd278932bb0}


The macro to cast to an \hyperlink{group__Eina__File__Group_ga074e73b17381346ada766213d3bb5432}{Eina\+\_\+\+File\+\_\+\+Dir\+\_\+\+List\+\_\+\+Cb}. 


\begin{DoxyParams}{Parameters}
{\em function} & The function to cast\\
\hline
\end{DoxyParams}
This macro casts {\ttfamily function} to \hyperlink{group__Eina__File__Group_ga074e73b17381346ada766213d3bb5432}{Eina\+\_\+\+File\+\_\+\+Dir\+\_\+\+List\+\_\+\+Cb}. 

\subsection{Typedef Documentation}
\hypertarget{group__Eina__File__Group_gab15fe1278f044850fcb24417a47364a8}{}\index{File@{File}!Eina\+\_\+\+Stat@{Eina\+\_\+\+Stat}}
\index{Eina\+\_\+\+Stat@{Eina\+\_\+\+Stat}!File@{File}}
\subsubsection[{Eina\+\_\+\+Stat}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Eina\+\_\+\+Stat}}\label{group__Eina__File__Group_gab15fe1278f044850fcb24417a47364a8}


A type for \hyperlink{struct__Eina__Stat}{\+\_\+\+Eina\+\_\+\+Stat}. 

\begin{DoxySince}{Since}
1.\+2 
\end{DoxySince}
\hypertarget{group__Eina__File__Group_ga074e73b17381346ada766213d3bb5432}{}\index{File@{File}!Eina\+\_\+\+File\+\_\+\+Dir\+\_\+\+List\+\_\+\+Cb@{Eina\+\_\+\+File\+\_\+\+Dir\+\_\+\+List\+\_\+\+Cb}}
\index{Eina\+\_\+\+File\+\_\+\+Dir\+\_\+\+List\+\_\+\+Cb@{Eina\+\_\+\+File\+\_\+\+Dir\+\_\+\+List\+\_\+\+Cb}!File@{File}}
\subsubsection[{Eina\+\_\+\+File\+\_\+\+Dir\+\_\+\+List\+\_\+\+Cb}]{\setlength{\rightskip}{0pt plus 5cm}Eina\+\_\+\+File\+\_\+\+Dir\+\_\+\+List\+\_\+\+Cb}\label{group__Eina__File__Group_ga074e73b17381346ada766213d3bb5432}


Type for a callback to be called when iterating over the files of a directory. 


\begin{DoxyParams}{Parameters}
{\em name} & The file name E\+X\+C\+L\+U\+D\+I\+N\+G the path \\
\hline
{\em path} & The path passed to \hyperlink{group__Eina__File__Group_ga186dc8dd1a166a8972189f78bbee15ea}{eina\+\_\+file\+\_\+dir\+\_\+list()} \\
\hline
{\em data} & The data passed to \hyperlink{group__Eina__File__Group_ga186dc8dd1a166a8972189f78bbee15ea}{eina\+\_\+file\+\_\+dir\+\_\+list()} \\
\hline
\end{DoxyParams}
\hypertarget{group__Eina__File__Group_gaa08a39ec2e9abfa703d15822a074f521}{}\index{File@{File}!Eina\+\_\+\+File\+\_\+\+Copy\+\_\+\+Progress@{Eina\+\_\+\+File\+\_\+\+Copy\+\_\+\+Progress}}
\index{Eina\+\_\+\+File\+\_\+\+Copy\+\_\+\+Progress@{Eina\+\_\+\+File\+\_\+\+Copy\+\_\+\+Progress}!File@{File}}
\subsubsection[{Eina\+\_\+\+File\+\_\+\+Copy\+\_\+\+Progress}]{\setlength{\rightskip}{0pt plus 5cm}Eina\+\_\+\+File\+\_\+\+Copy\+\_\+\+Progress}\label{group__Eina__File__Group_gaa08a39ec2e9abfa703d15822a074f521}


Type for a callback to report file copy progress. 

This function is used to report progress during \hyperlink{group__Eina__File__Group_ga90159e5c99bfaa036ca9f695f713ffa7}{eina\+\_\+file\+\_\+copy()}, where {\ttfamily done} is the bytes already copied and {\ttfamily size} is the total file size.

\begin{DoxyNote}{Note}
If it returns \hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{E\+I\+N\+A\+\_\+\+F\+A\+L\+S\+E}, it will stop the copy. 
\end{DoxyNote}


\subsection{Enumeration Type Documentation}
\hypertarget{group__Eina__File__Group_ga0b7b2db79f9a05b07273fb3428d46cd8}{}\index{File@{File}!Eina\+\_\+\+File\+\_\+\+Type@{Eina\+\_\+\+File\+\_\+\+Type}}
\index{Eina\+\_\+\+File\+\_\+\+Type@{Eina\+\_\+\+File\+\_\+\+Type}!File@{File}}
\subsubsection[{Eina\+\_\+\+File\+\_\+\+Type}]{\setlength{\rightskip}{0pt plus 5cm}enum {\bf Eina\+\_\+\+File\+\_\+\+Type}}\label{group__Eina__File__Group_ga0b7b2db79f9a05b07273fb3428d46cd8}


Type for enumeration of a file type. 

This type is used in \hyperlink{group__Eina__File__Group_ga8e8779c9f28937a642dbe1be86760646}{Eina\+\_\+\+File\+\_\+\+Direct\+\_\+\+Info}. \begin{Desc}
\item[Enumerator]\par
\begin{description}
\index{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+U\+N\+K\+N\+O\+W\+N@{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+U\+N\+K\+N\+O\+W\+N}!File@{File}}\index{File@{File}!E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+U\+N\+K\+N\+O\+W\+N@{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+U\+N\+K\+N\+O\+W\+N}}\item[{\em 
\hypertarget{group__Eina__File__Group_gga0b7b2db79f9a05b07273fb3428d46cd8aa271a0f3cd77f21c405a7e2636c4b064}{}E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+U\+N\+K\+N\+O\+W\+N\label{group__Eina__File__Group_gga0b7b2db79f9a05b07273fb3428d46cd8aa271a0f3cd77f21c405a7e2636c4b064}
}]Unknown file type. \index{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+F\+I\+F\+O@{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+F\+I\+F\+O}!File@{File}}\index{File@{File}!E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+F\+I\+F\+O@{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+F\+I\+F\+O}}\item[{\em 
\hypertarget{group__Eina__File__Group_gga0b7b2db79f9a05b07273fb3428d46cd8aeffdbcaeae950a9c786736495c9e6ae6}{}E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+F\+I\+F\+O\label{group__Eina__File__Group_gga0b7b2db79f9a05b07273fb3428d46cd8aeffdbcaeae950a9c786736495c9e6ae6}
}]Named pipe (F\+I\+F\+O) type (unused on Windows) \index{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+C\+H\+R@{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+C\+H\+R}!File@{File}}\index{File@{File}!E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+C\+H\+R@{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+C\+H\+R}}\item[{\em 
\hypertarget{group__Eina__File__Group_gga0b7b2db79f9a05b07273fb3428d46cd8a3c0a5d44c060edb31c813aa04a025d2a}{}E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+C\+H\+R\label{group__Eina__File__Group_gga0b7b2db79f9a05b07273fb3428d46cd8a3c0a5d44c060edb31c813aa04a025d2a}
}]Character device type (unused on Windows) \index{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+D\+I\+R@{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+D\+I\+R}!File@{File}}\index{File@{File}!E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+D\+I\+R@{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+D\+I\+R}}\item[{\em 
\hypertarget{group__Eina__File__Group_gga0b7b2db79f9a05b07273fb3428d46cd8a0b8844f30974a2fa27af9ba78bcfaa53}{}E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+D\+I\+R\label{group__Eina__File__Group_gga0b7b2db79f9a05b07273fb3428d46cd8a0b8844f30974a2fa27af9ba78bcfaa53}
}]Directory type. \index{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+B\+L\+K@{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+B\+L\+K}!File@{File}}\index{File@{File}!E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+B\+L\+K@{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+B\+L\+K}}\item[{\em 
\hypertarget{group__Eina__File__Group_gga0b7b2db79f9a05b07273fb3428d46cd8a4e8e6ab5ad07461bf2e97981d0c6f745}{}E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+B\+L\+K\label{group__Eina__File__Group_gga0b7b2db79f9a05b07273fb3428d46cd8a4e8e6ab5ad07461bf2e97981d0c6f745}
}]Block device type (unused on Windows) \index{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+R\+E\+G@{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+R\+E\+G}!File@{File}}\index{File@{File}!E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+R\+E\+G@{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+R\+E\+G}}\item[{\em 
\hypertarget{group__Eina__File__Group_gga0b7b2db79f9a05b07273fb3428d46cd8ae5c8a949a0de3a8fc46dcf02a57df381}{}E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+R\+E\+G\label{group__Eina__File__Group_gga0b7b2db79f9a05b07273fb3428d46cd8ae5c8a949a0de3a8fc46dcf02a57df381}
}]Regular file type. \index{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+L\+N\+K@{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+L\+N\+K}!File@{File}}\index{File@{File}!E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+L\+N\+K@{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+L\+N\+K}}\item[{\em 
\hypertarget{group__Eina__File__Group_gga0b7b2db79f9a05b07273fb3428d46cd8abcfb23817258fffca146c9c43df45862}{}E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+L\+N\+K\label{group__Eina__File__Group_gga0b7b2db79f9a05b07273fb3428d46cd8abcfb23817258fffca146c9c43df45862}
}]Symbolic link type. \index{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+S\+O\+C\+K@{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+S\+O\+C\+K}!File@{File}}\index{File@{File}!E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+S\+O\+C\+K@{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+S\+O\+C\+K}}\item[{\em 
\hypertarget{group__Eina__File__Group_gga0b7b2db79f9a05b07273fb3428d46cd8a7b2507d72b963615be2bef550d98c188}{}E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+S\+O\+C\+K\label{group__Eina__File__Group_gga0b7b2db79f9a05b07273fb3428d46cd8a7b2507d72b963615be2bef550d98c188}
}]U\+N\+I\+X domain socket type (unused on Windows) \index{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+W\+H\+T@{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+W\+H\+T}!File@{File}}\index{File@{File}!E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+W\+H\+T@{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+W\+H\+T}}\item[{\em 
\hypertarget{group__Eina__File__Group_gga0b7b2db79f9a05b07273fb3428d46cd8af0980697fe8cbfc60a19f1f22b39634f}{}E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+W\+H\+T\label{group__Eina__File__Group_gga0b7b2db79f9a05b07273fb3428d46cd8af0980697fe8cbfc60a19f1f22b39634f}
}]Whiteout file type (unused on Windows) \end{description}
\end{Desc}
\hypertarget{group__Eina__File__Group_ga2788825dfdd797282112148f2f65ec7a}{}\index{File@{File}!Eina\+\_\+\+File\+\_\+\+Populate@{Eina\+\_\+\+File\+\_\+\+Populate}}
\index{Eina\+\_\+\+File\+\_\+\+Populate@{Eina\+\_\+\+File\+\_\+\+Populate}!File@{File}}
\subsubsection[{Eina\+\_\+\+File\+\_\+\+Populate}]{\setlength{\rightskip}{0pt plus 5cm}enum {\bf Eina\+\_\+\+File\+\_\+\+Populate}}\label{group__Eina__File__Group_ga2788825dfdd797282112148f2f65ec7a}


Type for enumeration of a file access type. 

This type is used in \hyperlink{group__Eina__File__Group_ga8e8779c9f28937a642dbe1be86760646}{Eina\+\_\+\+File\+\_\+\+Direct\+\_\+\+Info}. \begin{Desc}
\item[Enumerator]\par
\begin{description}
\index{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+R\+A\+N\+D\+O\+M@{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+R\+A\+N\+D\+O\+M}!File@{File}}\index{File@{File}!E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+R\+A\+N\+D\+O\+M@{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+R\+A\+N\+D\+O\+M}}\item[{\em 
\hypertarget{group__Eina__File__Group_gga2788825dfdd797282112148f2f65ec7aae9b963a3ffd3a5f885c86db4673eabd3}{}E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+R\+A\+N\+D\+O\+M\label{group__Eina__File__Group_gga2788825dfdd797282112148f2f65ec7aae9b963a3ffd3a5f885c86db4673eabd3}
}]Advise random memory access to the mapped memory. \index{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+S\+E\+Q\+U\+E\+N\+T\+I\+A\+L@{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+S\+E\+Q\+U\+E\+N\+T\+I\+A\+L}!File@{File}}\index{File@{File}!E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+S\+E\+Q\+U\+E\+N\+T\+I\+A\+L@{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+S\+E\+Q\+U\+E\+N\+T\+I\+A\+L}}\item[{\em 
\hypertarget{group__Eina__File__Group_gga2788825dfdd797282112148f2f65ec7aabb92031c2d448a1659117121866229b2}{}E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+S\+E\+Q\+U\+E\+N\+T\+I\+A\+L\label{group__Eina__File__Group_gga2788825dfdd797282112148f2f65ec7aabb92031c2d448a1659117121866229b2}
}]Advise sequential memory access to the mapped memory. \index{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+W\+I\+L\+L\+N\+E\+E\+D@{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+W\+I\+L\+L\+N\+E\+E\+D}!File@{File}}\index{File@{File}!E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+W\+I\+L\+L\+N\+E\+E\+D@{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+W\+I\+L\+L\+N\+E\+E\+D}}\item[{\em 
\hypertarget{group__Eina__File__Group_gga2788825dfdd797282112148f2f65ec7aab049b3550f67cdd35ea15d5839800186}{}E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+W\+I\+L\+L\+N\+E\+E\+D\label{group__Eina__File__Group_gga2788825dfdd797282112148f2f65ec7aab049b3550f67cdd35ea15d5839800186}
}]Advise need for all the mapped memory. \index{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+P\+O\+P\+U\+L\+A\+T\+E@{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+P\+O\+P\+U\+L\+A\+T\+E}!File@{File}}\index{File@{File}!E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+P\+O\+P\+U\+L\+A\+T\+E@{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+P\+O\+P\+U\+L\+A\+T\+E}}\item[{\em 
\hypertarget{group__Eina__File__Group_gga2788825dfdd797282112148f2f65ec7aa6c05201c80772a294c16800d7ca46a1d}{}E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+P\+O\+P\+U\+L\+A\+T\+E\label{group__Eina__File__Group_gga2788825dfdd797282112148f2f65ec7aa6c05201c80772a294c16800d7ca46a1d}
}]Request for all the mapped memory. \index{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+D\+O\+N\+T\+N\+E\+E\+D@{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+D\+O\+N\+T\+N\+E\+E\+D}!File@{File}}\index{File@{File}!E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+D\+O\+N\+T\+N\+E\+E\+D@{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+D\+O\+N\+T\+N\+E\+E\+D}}\item[{\em 
\hypertarget{group__Eina__File__Group_gga2788825dfdd797282112148f2f65ec7aabcd9246f7fbbbd2df5eeec7f3913558c}{}E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+D\+O\+N\+T\+N\+E\+E\+D\label{group__Eina__File__Group_gga2788825dfdd797282112148f2f65ec7aabcd9246f7fbbbd2df5eeec7f3913558c}
}]Indicate that the memory is no longer needed. This may result in the memory being removed from any caches if applicable. \begin{DoxySince}{Since}
1.\+8 
\end{DoxySince}
\index{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+R\+E\+M\+O\+V\+E@{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+R\+E\+M\+O\+V\+E}!File@{File}}\index{File@{File}!E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+R\+E\+M\+O\+V\+E@{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+R\+E\+M\+O\+V\+E}}\item[{\em 
\hypertarget{group__Eina__File__Group_gga2788825dfdd797282112148f2f65ec7aa4786137330071feac6aafa0dcfc56519}{}E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+R\+E\+M\+O\+V\+E\label{group__Eina__File__Group_gga2788825dfdd797282112148f2f65ec7aa4786137330071feac6aafa0dcfc56519}
}]This memory is to be released and any content will be lost. Subsequent accesses will succeed but return fresh memory as if accessed for the first time. This may not suceed if the filesystem does not support it. \begin{DoxySince}{Since}
1.\+8 
\end{DoxySince}
\end{description}
\end{Desc}


\subsection{Function Documentation}
\hypertarget{group__Eina__File__Group_ga186dc8dd1a166a8972189f78bbee15ea}{}\index{File@{File}!eina\+\_\+file\+\_\+dir\+\_\+list@{eina\+\_\+file\+\_\+dir\+\_\+list}}
\index{eina\+\_\+file\+\_\+dir\+\_\+list@{eina\+\_\+file\+\_\+dir\+\_\+list}!File@{File}}
\subsubsection[{eina\+\_\+file\+\_\+dir\+\_\+list(const char $\ast$dir, Eina\+\_\+\+Bool recursive, Eina\+\_\+\+File\+\_\+\+Dir\+\_\+\+List\+\_\+\+Cb cb, void $\ast$data) E\+I\+N\+A\+\_\+\+A\+R\+G\+\_\+\+N\+O\+N\+N\+U\+L\+L(1}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\+A\+P\+I} {\bf Eina\+\_\+\+Bool} eina\+\_\+file\+\_\+dir\+\_\+list (
\begin{DoxyParamCaption}
\item[{const char $\ast$}]{dir, }
\item[{{\bf Eina\+\_\+\+Bool}}]{recursive, }
\item[{{\bf Eina\+\_\+\+File\+\_\+\+Dir\+\_\+\+List\+\_\+\+Cb}}]{cb, }
\item[{void $\ast$}]{data}
\end{DoxyParamCaption}
)}\label{group__Eina__File__Group_ga186dc8dd1a166a8972189f78bbee15ea}


Lists all the files on the directory by calling the function for every file found. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em dir} & The directory name \\
\hline
\mbox{\tt in}  & {\em recursive} & Iterate recursively in the directory \\
\hline
\mbox{\tt in}  & {\em cb} & The callback to be called \\
\hline
\mbox{\tt in}  & {\em data} & The data to pass to the callback \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{E\+I\+N\+A\+\_\+\+T\+R\+U\+E} on success, otherwise \hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{E\+I\+N\+A\+\_\+\+F\+A\+L\+S\+E}
\end{DoxyReturn}
This function calls {\ttfamily cb} for each file that is in {\ttfamily dir}. To have {\ttfamily cb} called on the files that are in subdirectories of {\ttfamily dir}, {\ttfamily recursive} should be \hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{E\+I\+N\+A\+\_\+\+T\+R\+U\+E}. In other words, if {\ttfamily recursive} is \hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{E\+I\+N\+A\+\_\+\+F\+A\+L\+S\+E}, only direct children of {\ttfamily dir} are operated on, if {\ttfamily recursive} is \hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{E\+I\+N\+A\+\_\+\+T\+R\+U\+E} the entire tree of files that is below {\ttfamily dir} is operated on.

If {\ttfamily cb} or {\ttfamily dir} is {\ttfamily N\+U\+L\+L} or if {\ttfamily dir} is a string of size 0, or if {\ttfamily dir} cannot be opened, this function returns \hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{E\+I\+N\+A\+\_\+\+F\+A\+L\+S\+E} immediately. Otherwise, it returns \hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{E\+I\+N\+A\+\_\+\+T\+R\+U\+E}. \begin{Desc}
\item[Examples\+: ]\par
\hyperlink{eina_file_01_8c-example}{eina\+\_\+file\+\_\+01.\+c}.\end{Desc}


Referenced by eina\+\_\+module\+\_\+arch\+\_\+list\+\_\+get(), and eina\+\_\+module\+\_\+list\+\_\+get().

\hypertarget{group__Eina__File__Group_ga8f157fabca35a981c0e253fdb3130385}{}\index{File@{File}!eina\+\_\+file\+\_\+split@{eina\+\_\+file\+\_\+split}}
\index{eina\+\_\+file\+\_\+split@{eina\+\_\+file\+\_\+split}!File@{File}}
\subsubsection[{eina\+\_\+file\+\_\+split(char $\ast$path) E\+I\+N\+A\+\_\+\+W\+A\+R\+N\+\_\+\+U\+N\+U\+S\+E\+D\+\_\+\+R\+E\+S\+U\+L\+T E\+I\+N\+A\+\_\+\+A\+R\+G\+\_\+\+N\+O\+N\+N\+U\+L\+L(1) E\+I\+N\+A\+\_\+\+M\+A\+L\+L\+O\+C}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\+A\+P\+I} {\bf Eina\+\_\+\+Bool} {\bf E\+A\+P\+I} {\bf Eina\+\_\+\+Array}$\ast$ eina\+\_\+file\+\_\+split (
\begin{DoxyParamCaption}
\item[{char $\ast$}]{path}
\end{DoxyParamCaption}
)}\label{group__Eina__File__Group_ga8f157fabca35a981c0e253fdb3130385}


Splits a path according to the delimiter of the filesystem. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em path} & The path to split \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
An array of the parts of the path to split
\end{DoxyReturn}
This function splits {\ttfamily path} according to the delimiter of the used filesystem. If {\ttfamily path} is {\ttfamily N\+U\+L\+L} or if the array cannot be created, {\ttfamily N\+U\+L\+L} is returned, otherwise an array with each part of {\ttfamily path} is returned. 

References eina\+\_\+array\+\_\+new(), and eina\+\_\+array\+\_\+push().

\hypertarget{group__Eina__File__Group_ga8c4fabb379b865a4ec134a5c4436be2a}{}\index{File@{File}!eina\+\_\+file\+\_\+ls@{eina\+\_\+file\+\_\+ls}}
\index{eina\+\_\+file\+\_\+ls@{eina\+\_\+file\+\_\+ls}!File@{File}}
\subsubsection[{eina\+\_\+file\+\_\+ls(const char $\ast$dir) E\+I\+N\+A\+\_\+\+W\+A\+R\+N\+\_\+\+U\+N\+U\+S\+E\+D\+\_\+\+R\+E\+S\+U\+L\+T E\+I\+N\+A\+\_\+\+A\+R\+G\+\_\+\+N\+O\+N\+N\+U\+L\+L(1) E\+I\+N\+A\+\_\+\+M\+A\+L\+L\+O\+C}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\+A\+P\+I} {\bf Eina\+\_\+\+Iterator}$\ast$ eina\+\_\+file\+\_\+ls (
\begin{DoxyParamCaption}
\item[{const char $\ast$}]{dir}
\end{DoxyParamCaption}
)}\label{group__Eina__File__Group_ga8c4fabb379b865a4ec134a5c4436be2a}


Gets an iterator to list the content of a directory. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em dir} & The name of the directory to list \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
An \hyperlink{group__Eina__Iterator__Group_ga15b975bb881d955249ce13d4ebc96948}{Eina\+\_\+\+Iterator} that walks over the files and directories in {\ttfamily dir}. On failure, it returns {\ttfamily N\+U\+L\+L}.
\end{DoxyReturn}
This returns an iterator for shared strings, the name of each file in {\ttfamily dir} is only fetched when advancing the iterator, which means there is very little cost associated with creating the list and stopping halfway through it.

\begin{DoxyNote}{Note}
The iterator hands the user a stringshared value with the full path. The user must free the string using \hyperlink{group__Eina__Stringshare__Group_ga4453d2aff2b325c7b45048f30df9b1f5}{eina\+\_\+stringshare\+\_\+del()} on it.

The container for the iterator is of type D\+I\+R$\ast$. 

The iterator walks over \textquotesingle{}.\textquotesingle{} and \textquotesingle{}..\textquotesingle{} without returning them.
\end{DoxyNote}
\begin{DoxySeeAlso}{See also}
\hyperlink{group__Eina__File__Group_gab20cc163550854f917960f7971c45ca6}{eina\+\_\+file\+\_\+direct\+\_\+ls()} 
\end{DoxySeeAlso}


References closedir(), E\+I\+N\+A\+\_\+\+M\+A\+G\+I\+C\+\_\+\+S\+E\+T, E\+I\+N\+A\+\_\+\+U\+N\+L\+I\+K\+E\+L\+Y, F\+U\+N\+C\+\_\+\+I\+T\+E\+R\+A\+T\+O\+R\+\_\+\+F\+R\+E\+E, F\+U\+N\+C\+\_\+\+I\+T\+E\+R\+A\+T\+O\+R\+\_\+\+G\+E\+T\+\_\+\+C\+O\+N\+T\+A\+I\+N\+E\+R, F\+U\+N\+C\+\_\+\+I\+T\+E\+R\+A\+T\+O\+R\+\_\+\+N\+E\+X\+T, and opendir().

\hypertarget{group__Eina__File__Group_ga21d5e94767ae9932751649ce09a2f98f}{}\index{File@{File}!eina\+\_\+file\+\_\+stat\+\_\+ls@{eina\+\_\+file\+\_\+stat\+\_\+ls}}
\index{eina\+\_\+file\+\_\+stat\+\_\+ls@{eina\+\_\+file\+\_\+stat\+\_\+ls}!File@{File}}
\subsubsection[{eina\+\_\+file\+\_\+stat\+\_\+ls(const char $\ast$dir) E\+I\+N\+A\+\_\+\+W\+A\+R\+N\+\_\+\+U\+N\+U\+S\+E\+D\+\_\+\+R\+E\+S\+U\+L\+T E\+I\+N\+A\+\_\+\+A\+R\+G\+\_\+\+N\+O\+N\+N\+U\+L\+L(1) E\+I\+N\+A\+\_\+\+M\+A\+L\+L\+O\+C}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\+A\+P\+I} {\bf Eina\+\_\+\+Iterator}$\ast$ eina\+\_\+file\+\_\+stat\+\_\+ls (
\begin{DoxyParamCaption}
\item[{const char $\ast$}]{dir}
\end{DoxyParamCaption}
)}\label{group__Eina__File__Group_ga21d5e94767ae9932751649ce09a2f98f}


Gets an iterator to list the content of a directory, with direct information. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em dir} & The name of the directory to list\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
An \hyperlink{group__Eina__Iterator__Group_ga15b975bb881d955249ce13d4ebc96948}{Eina\+\_\+\+Iterator} that walks over the files and directories in {\ttfamily dir}. On failure, it returns {\ttfamily N\+U\+L\+L}.
\end{DoxyReturn}
This returns an iterator for \hyperlink{group__Eina__File__Group_ga8e8779c9f28937a642dbe1be86760646}{Eina\+\_\+\+File\+\_\+\+Direct\+\_\+\+Info}, the name of each file in {\ttfamily dir} is only fetched when advancing the iterator, which means there is cost associated with creating the list and stopping halfway through it.

\begin{DoxyWarning}{Warning}
The \hyperlink{group__Eina__File__Group_ga8e8779c9f28937a642dbe1be86760646}{Eina\+\_\+\+File\+\_\+\+Direct\+\_\+\+Info} returned by the iterator {\bfseries must not} be modified in any way. 

When the iterator is advanced or deleted the \hyperlink{group__Eina__File__Group_ga8e8779c9f28937a642dbe1be86760646}{Eina\+\_\+\+File\+\_\+\+Direct\+\_\+\+Info} returned is no longer valid.
\end{DoxyWarning}
\begin{DoxyNote}{Note}
The container for the iterator is of type D\+I\+R$\ast$. 

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

The difference between this function and \hyperlink{group__Eina__File__Group_gab20cc163550854f917960f7971c45ca6}{eina\+\_\+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__Eina__File__Group_gab20cc163550854f917960f7971c45ca6}{eina\+\_\+file\+\_\+direct\+\_\+ls()} 
\end{DoxySeeAlso}


References closedir(), eina\+\_\+file\+\_\+direct\+\_\+ls(), E\+I\+N\+A\+\_\+\+M\+A\+G\+I\+C\+\_\+\+S\+E\+T, E\+I\+N\+A\+\_\+\+P\+A\+T\+H\+\_\+\+M\+A\+X, E\+I\+N\+A\+\_\+\+U\+N\+L\+I\+K\+E\+L\+Y, F\+U\+N\+C\+\_\+\+I\+T\+E\+R\+A\+T\+O\+R\+\_\+\+F\+R\+E\+E, F\+U\+N\+C\+\_\+\+I\+T\+E\+R\+A\+T\+O\+R\+\_\+\+G\+E\+T\+\_\+\+C\+O\+N\+T\+A\+I\+N\+E\+R, F\+U\+N\+C\+\_\+\+I\+T\+E\+R\+A\+T\+O\+R\+\_\+\+N\+E\+X\+T, and opendir().

\hypertarget{group__Eina__File__Group_ga48cc0e04ab40c51160cda615c871e1f0}{}\index{File@{File}!eina\+\_\+file\+\_\+statat@{eina\+\_\+file\+\_\+statat}}
\index{eina\+\_\+file\+\_\+statat@{eina\+\_\+file\+\_\+statat}!File@{File}}
\subsubsection[{eina\+\_\+file\+\_\+statat(void $\ast$container, Eina\+\_\+\+File\+\_\+\+Direct\+\_\+\+Info $\ast$info, Eina\+\_\+\+Stat $\ast$buf) E\+I\+N\+A\+\_\+\+W\+A\+R\+N\+\_\+\+U\+N\+U\+S\+E\+D\+\_\+\+R\+E\+S\+U\+L\+T E\+I\+N\+A\+\_\+\+A\+R\+G\+\_\+\+N\+O\+N\+N\+U\+L\+L(1}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\+A\+P\+I} int eina\+\_\+file\+\_\+statat (
\begin{DoxyParamCaption}
\item[{void $\ast$}]{container, }
\item[{{\bf Eina\+\_\+\+File\+\_\+\+Direct\+\_\+\+Info} $\ast$}]{info, }
\item[{{\bf Eina\+\_\+\+Stat} $\ast$}]{buf}
\end{DoxyParamCaption}
)}\label{group__Eina__File__Group_ga48cc0e04ab40c51160cda615c871e1f0}


Uses information provided by \hyperlink{group__Eina__Iterator__Group_ga15b975bb881d955249ce13d4ebc96948}{Eina\+\_\+\+Iterator} of \hyperlink{group__Eina__File__Group_ga21d5e94767ae9932751649ce09a2f98f}{eina\+\_\+file\+\_\+stat\+\_\+ls()} or \hyperlink{group__Eina__File__Group_gab20cc163550854f917960f7971c45ca6}{eina\+\_\+file\+\_\+direct\+\_\+ls()} to call stat in the most efficient way on your system. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em container} & The container returned by \hyperlink{group__Eina__Iterator__Group_ga15b975bb881d955249ce13d4ebc96948}{Eina\+\_\+\+Iterator} using \hyperlink{group__Eina__Iterator__Group_ga5583ab703b156f74f0c2a74875c95cc2}{eina\+\_\+iterator\+\_\+container\+\_\+get()} \\
\hline
\mbox{\tt in}  & {\em info} & The content of the current \hyperlink{group__Eina__File__Group_ga8e8779c9f28937a642dbe1be86760646}{Eina\+\_\+\+File\+\_\+\+Direct\+\_\+\+Info} provided by \hyperlink{group__Eina__Iterator__Group_ga15b975bb881d955249ce13d4ebc96948}{Eina\+\_\+\+Iterator} \\
\hline
\mbox{\tt in}  & {\em buf} & The location put the result of the stat \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
{\ttfamily 0} is returnedon success, otherwise {\ttfamily -\/1} is returned on error and errno is set appropriately
\end{DoxyReturn}
This function calls fstatat or stat depending on what your system supports. This makes it efficient and simple to use on your side without complex detection already done inside Eina on what the system can do.

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

\hyperlink{group__Eina__File__Group_ga21d5e94767ae9932751649ce09a2f98f}{eina\+\_\+file\+\_\+stat\+\_\+ls()}
\end{DoxySeeAlso}
\begin{DoxySince}{Since}
1.\+2 
\end{DoxySince}
\hypertarget{group__Eina__File__Group_gafe29831e515ea3e8431d3a6b06577a26}{}\index{File@{File}!eina\+\_\+file\+\_\+mkstemp@{eina\+\_\+file\+\_\+mkstemp}}
\index{eina\+\_\+file\+\_\+mkstemp@{eina\+\_\+file\+\_\+mkstemp}!File@{File}}
\subsubsection[{eina\+\_\+file\+\_\+mkstemp(const char $\ast$templatename, Eina\+\_\+\+Tmpstr $\ast$$\ast$path)}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\+A\+P\+I} int {\bf E\+A\+P\+I} int eina\+\_\+file\+\_\+mkstemp (
\begin{DoxyParamCaption}
\item[{const char $\ast$}]{templatename, }
\item[{{\bf Eina\+\_\+\+Tmpstr} $\ast$$\ast$}]{path}
\end{DoxyParamCaption}
)}\label{group__Eina__File__Group_gafe29831e515ea3e8431d3a6b06577a26}


Generates and creates a uniquely named temporary file from template. 

Generated file is opened with the open(2) O\+\_\+\+E\+X\+C\+L flag.


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em templatename} & This is a string. It must contain the six characters \textquotesingle{}X\+X\+X\+X\+X\+X\textquotesingle{} at the end or directly followed by an extension as in \textquotesingle{}prefix\+X\+X\+X\+X\+X\+X.\+ext\textquotesingle{}. \\
\hline
\mbox{\tt out}  & {\em path} & Where to put the name of the created file. If not {\ttfamily N\+U\+L\+L} should be released by \hyperlink{group__Eina__Stringshare__Group_gaa84ec3cc6c63bc67355aa3cbaa26189f}{eina\+\_\+tmpstr\+\_\+del()}. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
On success {\ttfamily file} descriptor of the temporary file is returned, On error {\ttfamily -\/1} is returned, in which case {\ttfamily errno} is set appropriately.
\end{DoxyReturn}
This function calls \hyperlink{group__Evil__Stdlib__Group_gab62e7adedbeaf115d479d057e1c7b795}{mkstemp()}, generates a unique temporary filename from template, creates and opens the file, and returns an open file descriptor for the file.

\begin{DoxyNote}{Note}
If a filename extension was specified in {\ttfamily templatename}, then the new {\ttfamily path} will also contain this extension (since 1.\+10).
\end{DoxyNote}
\begin{DoxySeeAlso}{See also}
\hyperlink{group__Eina__File__Group_gae9dc80c6e1e50e38db8f019f3755fe0a}{eina\+\_\+file\+\_\+mkdtemp()} 
\end{DoxySeeAlso}
\begin{DoxySince}{Since}
1.\+8 
\end{DoxySince}


References eina\+\_\+tmpstr\+\_\+add(), mkstemp(), and mkstemps().

\hypertarget{group__Eina__File__Group_gae9dc80c6e1e50e38db8f019f3755fe0a}{}\index{File@{File}!eina\+\_\+file\+\_\+mkdtemp@{eina\+\_\+file\+\_\+mkdtemp}}
\index{eina\+\_\+file\+\_\+mkdtemp@{eina\+\_\+file\+\_\+mkdtemp}!File@{File}}
\subsubsection[{eina\+\_\+file\+\_\+mkdtemp(const char $\ast$templatename, Eina\+\_\+\+Tmpstr $\ast$$\ast$path)}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\+A\+P\+I} {\bf Eina\+\_\+\+Bool} eina\+\_\+file\+\_\+mkdtemp (
\begin{DoxyParamCaption}
\item[{const char $\ast$}]{templatename, }
\item[{{\bf Eina\+\_\+\+Tmpstr} $\ast$$\ast$}]{path}
\end{DoxyParamCaption}
)}\label{group__Eina__File__Group_gae9dc80c6e1e50e38db8f019f3755fe0a}


Generates and creates a uniquely named temporary directory from template. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em templatename} & This is a string. The last six characters of {\ttfamily templatename} must be X\+X\+X\+X\+X\+X. \\
\hline
\mbox{\tt out}  & {\em path} & Where to put the name of the created directory. If not {\ttfamily N\+U\+L\+L} should be released by \hyperlink{group__Eina__Stringshare__Group_gaa84ec3cc6c63bc67355aa3cbaa26189f}{eina\+\_\+tmpstr\+\_\+del()}. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
On success {\ttfamily E\+I\+N\+A\+\_\+\+T\+R\+U\+E} is returned, On error {\ttfamily E\+I\+N\+A\+\_\+\+F\+A\+L\+S\+E} is returned, in which case {\ttfamily errno} is set appropriately.
\end{DoxyReturn}
This function calls \hyperlink{group__Evil__Stdlib__Group_ga1251526bfc32a1b8a5263bfa352254e2}{mkdtemp()}. The directory is then created with permissions 0700.

\begin{DoxySeeAlso}{See also}
\hyperlink{group__Eina__File__Group_gafe29831e515ea3e8431d3a6b06577a26}{eina\+\_\+file\+\_\+mkstemp()} 
\end{DoxySeeAlso}
\begin{DoxySince}{Since}
1.\+8 
\end{DoxySince}


References E\+I\+N\+A\+\_\+\+F\+A\+L\+S\+E, eina\+\_\+tmpstr\+\_\+add(), E\+I\+N\+A\+\_\+\+T\+R\+U\+E, and mkdtemp().

\hypertarget{group__Eina__File__Group_gab20cc163550854f917960f7971c45ca6}{}\index{File@{File}!eina\+\_\+file\+\_\+direct\+\_\+ls@{eina\+\_\+file\+\_\+direct\+\_\+ls}}
\index{eina\+\_\+file\+\_\+direct\+\_\+ls@{eina\+\_\+file\+\_\+direct\+\_\+ls}!File@{File}}
\subsubsection[{eina\+\_\+file\+\_\+direct\+\_\+ls(const char $\ast$dir) E\+I\+N\+A\+\_\+\+W\+A\+R\+N\+\_\+\+U\+N\+U\+S\+E\+D\+\_\+\+R\+E\+S\+U\+L\+T E\+I\+N\+A\+\_\+\+A\+R\+G\+\_\+\+N\+O\+N\+N\+U\+L\+L(1) E\+I\+N\+A\+\_\+\+M\+A\+L\+L\+O\+C}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\+A\+P\+I} {\bf Eina\+\_\+\+Iterator}$\ast$ eina\+\_\+file\+\_\+direct\+\_\+ls (
\begin{DoxyParamCaption}
\item[{const char $\ast$}]{dir}
\end{DoxyParamCaption}
)}\label{group__Eina__File__Group_gab20cc163550854f917960f7971c45ca6}


Gets an iterator to list the content of a directory, with direct information. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em dir} & The name of the directory to list\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
An Eina\+\_\+\+Iterator that walks over the files and directories in {\ttfamily dir}. On failure, it returns {\ttfamily N\+U\+L\+L}.
\end{DoxyReturn}
This returns an iterator for \hyperlink{group__Eina__File__Group_ga8e8779c9f28937a642dbe1be86760646}{Eina\+\_\+\+File\+\_\+\+Direct\+\_\+\+Info}, the name of each file in {\ttfamily dir} is only fetched when advancing the iterator, which means there is cost associated with creating the list and stopping halfway through 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\+W\+N. 

The \hyperlink{group__Eina__File__Group_ga8e8779c9f28937a642dbe1be86760646}{Eina\+\_\+\+File\+\_\+\+Direct\+\_\+\+Info} returned by the iterator {\bfseries must not} be modified in any way. 

When the iterator is advanced or deleted the \hyperlink{group__Eina__File__Group_ga8e8779c9f28937a642dbe1be86760646}{Eina\+\_\+\+File\+\_\+\+Direct\+\_\+\+Info} returned is no longer valid.
\end{DoxyWarning}
\begin{DoxyNote}{Note}
The container for the iterator is of type D\+I\+R$\ast$. 

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__Eina__File__Group_ga8c4fabb379b865a4ec134a5c4436be2a}{eina\+\_\+file\+\_\+ls()} 
\end{DoxySeeAlso}


References closedir(), E\+I\+N\+A\+\_\+\+M\+A\+G\+I\+C\+\_\+\+S\+E\+T, E\+I\+N\+A\+\_\+\+P\+A\+T\+H\+\_\+\+M\+A\+X, E\+I\+N\+A\+\_\+\+U\+N\+L\+I\+K\+E\+L\+Y, F\+U\+N\+C\+\_\+\+I\+T\+E\+R\+A\+T\+O\+R\+\_\+\+F\+R\+E\+E, F\+U\+N\+C\+\_\+\+I\+T\+E\+R\+A\+T\+O\+R\+\_\+\+G\+E\+T\+\_\+\+C\+O\+N\+T\+A\+I\+N\+E\+R, F\+U\+N\+C\+\_\+\+I\+T\+E\+R\+A\+T\+O\+R\+\_\+\+N\+E\+X\+T, and opendir().



Referenced by ecore\+\_\+file\+\_\+dir\+\_\+is\+\_\+empty(), ecore\+\_\+file\+\_\+ls(), ecore\+\_\+file\+\_\+recursive\+\_\+rm(), edje\+\_\+available\+\_\+modules\+\_\+get(), and eina\+\_\+file\+\_\+stat\+\_\+ls().

\hypertarget{group__Eina__File__Group_ga7596f37d3a8a548f7223c29c55111c83}{}\index{File@{File}!eina\+\_\+file\+\_\+path\+\_\+sanitize@{eina\+\_\+file\+\_\+path\+\_\+sanitize}}
\index{eina\+\_\+file\+\_\+path\+\_\+sanitize@{eina\+\_\+file\+\_\+path\+\_\+sanitize}!File@{File}}
\subsubsection[{eina\+\_\+file\+\_\+path\+\_\+sanitize(const char $\ast$path)}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\+A\+P\+I} char$\ast$ eina\+\_\+file\+\_\+path\+\_\+sanitize (
\begin{DoxyParamCaption}
\item[{const char $\ast$}]{path}
\end{DoxyParamCaption}
)}\label{group__Eina__File__Group_ga7596f37d3a8a548f7223c29c55111c83}


Sanitizes the file path. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em path} & The path to sanitize\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
An allocated string with the sanitized path
\end{DoxyReturn}
This function takes care of adding the current working directory if its a relative path and also removes all \textquotesingle{}..\textquotesingle{} and \textquotesingle{}//\textquotesingle{} references in the original path.

\begin{DoxySince}{Since}
1.\+1 
\end{DoxySince}


References eina\+\_\+file\+\_\+current\+\_\+directory\+\_\+get(), eina\+\_\+file\+\_\+path\+\_\+relative(), eina\+\_\+tmpstr\+\_\+del(), and eina\+\_\+tmpstr\+\_\+len().



Referenced by efreet\+\_\+desktop\+\_\+new(), efreet\+\_\+desktop\+\_\+uncached\+\_\+new(), efreet\+\_\+icon\+\_\+deprecated\+\_\+user\+\_\+dir\+\_\+get(), efreet\+\_\+icon\+\_\+user\+\_\+dir\+\_\+get(), eina\+\_\+file\+\_\+open(), elua\+\_\+state\+\_\+dirs\+\_\+fill(), elua\+\_\+state\+\_\+dirs\+\_\+set(), and elua\+\_\+state\+\_\+include\+\_\+path\+\_\+add().

\hypertarget{group__Eina__File__Group_ga90159e5c99bfaa036ca9f695f713ffa7}{}\index{File@{File}!eina\+\_\+file\+\_\+copy@{eina\+\_\+file\+\_\+copy}}
\index{eina\+\_\+file\+\_\+copy@{eina\+\_\+file\+\_\+copy}!File@{File}}
\subsubsection[{eina\+\_\+file\+\_\+copy(const char $\ast$src, const char $\ast$dst, Eina\+\_\+\+File\+\_\+\+Copy\+\_\+\+Flags flags, Eina\+\_\+\+File\+\_\+\+Copy\+\_\+\+Progress cb, const void $\ast$cb\+\_\+data) E\+I\+N\+A\+\_\+\+A\+R\+G\+\_\+\+N\+O\+N\+N\+U\+L\+L(1}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\+A\+P\+I} {\bf Eina\+\_\+\+Bool} eina\+\_\+file\+\_\+copy (
\begin{DoxyParamCaption}
\item[{const char $\ast$}]{src, }
\item[{const char $\ast$}]{dst, }
\item[{{\bf Eina\+\_\+\+File\+\_\+\+Copy\+\_\+\+Flags}}]{flags, }
\item[{{\bf Eina\+\_\+\+File\+\_\+\+Copy\+\_\+\+Progress}}]{cb, }
\item[{const void $\ast$}]{cb\+\_\+data}
\end{DoxyParamCaption}
)}\label{group__Eina__File__Group_ga90159e5c99bfaa036ca9f695f713ffa7}


Copy one file to another using the fastest possible way and report progress. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em src} & The source file. \\
\hline
\mbox{\tt in}  & {\em dst} & The destination file. \\
\hline
\mbox{\tt in}  & {\em flags} & Controls what is copied (data is always copied). \\
\hline
\mbox{\tt in}  & {\em cb} & If it is provided will be called with file copy progress information. \\
\hline
\mbox{\tt in}  & {\em cb\+\_\+data} & Context data to provide to {\ttfamily cb} during copy. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{E\+I\+N\+A\+\_\+\+T\+R\+U\+E} on success, \hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{E\+I\+N\+A\+\_\+\+F\+A\+L\+S\+E} otherwise (and {\ttfamily dst} will be deleted)
\end{DoxyReturn}
This function tries to splice if it is available. It is blocked until the whole file is copied or it fails.

\begin{DoxyNote}{Note}
During the progress it may call back {\ttfamily cb} with the progress summary. 
\end{DoxyNote}
\hypertarget{group__Eina__File__Group_ga787592b7325fe0174c324d6a4dbd86da}{}\index{File@{File}!eina\+\_\+file\+\_\+open@{eina\+\_\+file\+\_\+open}}
\index{eina\+\_\+file\+\_\+open@{eina\+\_\+file\+\_\+open}!File@{File}}
\subsubsection[{eina\+\_\+file\+\_\+open(const char $\ast$name, Eina\+\_\+\+Bool shared) E\+I\+N\+A\+\_\+\+W\+A\+R\+N\+\_\+\+U\+N\+U\+S\+E\+D\+\_\+\+R\+E\+S\+U\+L\+T E\+I\+N\+A\+\_\+\+A\+R\+G\+\_\+\+N\+O\+N\+N\+U\+L\+L(1) E\+I\+N\+A\+\_\+\+M\+A\+L\+L\+O\+C}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\+A\+P\+I} {\bf Eina\+\_\+\+Bool} {\bf E\+A\+P\+I} {\bf Eina\+\_\+\+File}$\ast$ eina\+\_\+file\+\_\+open (
\begin{DoxyParamCaption}
\item[{const char $\ast$}]{name, }
\item[{{\bf Eina\+\_\+\+Bool}}]{shared}
\end{DoxyParamCaption}
)}\label{group__Eina__File__Group_ga787592b7325fe0174c324d6a4dbd86da}


Gets a read-\/only handler to a file. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em name} & The filename to open \\
\hline
\mbox{\tt in}  & {\em shared} & Requested a shm\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
An \hyperlink{group__Eina__File__Group_ga20697123547cbc937c6c9dd845af0403}{Eina\+\_\+\+File} handle to the file
\end{DoxyReturn}
This opens a file in the read-\/only mode. {\ttfamily name} should be an absolute path. An \hyperlink{group__Eina__File__Group_ga20697123547cbc937c6c9dd845af0403}{Eina\+\_\+\+File} handle can be shared among multiple instances if {\ttfamily shared} is \hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{E\+I\+N\+A\+\_\+\+T\+R\+U\+E}, otherwise.

\begin{DoxySince}{Since}
1.\+1 
\end{DoxySince}


References \+\_\+eina\+\_\+file\+\_\+cache, \+\_\+eina\+\_\+file\+\_\+lock\+\_\+cache, \+\_\+\+Eina\+\_\+\+File\+::delete\+\_\+me, eina\+\_\+file\+\_\+clean\+\_\+close(), eina\+\_\+file\+\_\+map\+\_\+key\+\_\+cmp(), eina\+\_\+file\+\_\+map\+\_\+key\+\_\+hash(), eina\+\_\+file\+\_\+map\+\_\+key\+\_\+length(), eina\+\_\+file\+\_\+path\+\_\+sanitize(), E\+I\+N\+A\+\_\+\+F\+R\+E\+E\+\_\+\+C\+B, eina\+\_\+hash\+\_\+del(), eina\+\_\+hash\+\_\+direct\+\_\+add(), eina\+\_\+hash\+\_\+find(), eina\+\_\+hash\+\_\+new(), eina\+\_\+hash\+\_\+pointer\+\_\+new(), E\+I\+N\+A\+\_\+\+K\+E\+Y\+\_\+\+C\+M\+P, E\+I\+N\+A\+\_\+\+K\+E\+Y\+\_\+\+H\+A\+S\+H, E\+I\+N\+A\+\_\+\+K\+E\+Y\+\_\+\+L\+E\+N\+G\+T\+H, eina\+\_\+lock\+\_\+new(), eina\+\_\+lock\+\_\+release(), eina\+\_\+lock\+\_\+take(), E\+I\+N\+A\+\_\+\+M\+A\+G\+I\+C\+\_\+\+S\+E\+T, E\+I\+N\+A\+\_\+\+T\+R\+U\+E, E\+R\+R, fcntl(), \+\_\+\+Eina\+\_\+\+File\+::fd, \+\_\+\+Eina\+\_\+\+File\+::filename, \+\_\+\+Eina\+\_\+\+File\+::global\+\_\+map, \+\_\+\+Eina\+\_\+\+File\+::inode, \+\_\+\+Eina\+\_\+\+File\+::length, \+\_\+\+Eina\+\_\+\+File\+::lock, \+\_\+\+Eina\+\_\+\+File\+::map, \+\_\+\+Eina\+\_\+\+File\+::mtime, \+\_\+\+Eina\+\_\+\+File\+::refcount, \+\_\+\+Eina\+\_\+\+File\+::rmap, \+\_\+\+Eina\+\_\+\+File\+::shared, and W\+R\+N.



Referenced by edje\+\_\+file\+\_\+collection\+\_\+list(), edje\+\_\+file\+\_\+data\+\_\+get(), edje\+\_\+file\+\_\+group\+\_\+exists(), eet\+\_\+identity\+\_\+open(), and eet\+\_\+open().

\hypertarget{group__Eina__File__Group_ga928baf177014f57317e89aab09e2ecaf}{}\index{File@{File}!eina\+\_\+file\+\_\+virtualize@{eina\+\_\+file\+\_\+virtualize}}
\index{eina\+\_\+file\+\_\+virtualize@{eina\+\_\+file\+\_\+virtualize}!File@{File}}
\subsubsection[{eina\+\_\+file\+\_\+virtualize(const char $\ast$virtual\+\_\+name, const void $\ast$data, unsigned long long length, Eina\+\_\+\+Bool copy) E\+I\+N\+A\+\_\+\+W\+A\+R\+N\+\_\+\+U\+N\+U\+S\+E\+D\+\_\+\+R\+E\+S\+U\+L\+T E\+I\+N\+A\+\_\+\+A\+R\+G\+\_\+\+N\+O\+N\+N\+U\+L\+L(1)}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\+A\+P\+I} {\bf Eina\+\_\+\+File}$\ast$ eina\+\_\+file\+\_\+virtualize (
\begin{DoxyParamCaption}
\item[{const char $\ast$}]{virtual\+\_\+name, }
\item[{const void $\ast$}]{data, }
\item[{unsigned long long}]{length, }
\item[{{\bf Eina\+\_\+\+Bool}}]{copy}
\end{DoxyParamCaption}
)}\label{group__Eina__File__Group_ga928baf177014f57317e89aab09e2ecaf}


Create a virtual file from a memory pointer. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em virtual\+\_\+name} & A virtual name for Eina\+\_\+\+File, if {\ttfamily N\+U\+L\+L}, a generated one will be given \\
\hline
\mbox{\tt in}  & {\em data} & The memory pointer to take data from \\
\hline
\mbox{\tt in}  & {\em length} & The length of the data in memory \\
\hline
\mbox{\tt in}  & {\em copy} & \hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{E\+I\+N\+A\+\_\+\+T\+R\+U\+E} if the data must be copied \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
\hyperlink{group__Eina__File__Group_ga20697123547cbc937c6c9dd845af0403}{Eina\+\_\+\+File} handle to the file
\end{DoxyReturn}
\begin{DoxySince}{Since}
1.\+8 
\end{DoxySince}


References eina\+\_\+file\+\_\+map\+\_\+key\+\_\+cmp(), eina\+\_\+file\+\_\+map\+\_\+key\+\_\+hash(), eina\+\_\+file\+\_\+map\+\_\+key\+\_\+length(), E\+I\+N\+A\+\_\+\+F\+R\+E\+E\+\_\+\+C\+B, eina\+\_\+hash\+\_\+new(), eina\+\_\+hash\+\_\+pointer\+\_\+new(), E\+I\+N\+A\+\_\+\+K\+E\+Y\+\_\+\+C\+M\+P, E\+I\+N\+A\+\_\+\+K\+E\+Y\+\_\+\+H\+A\+S\+H, E\+I\+N\+A\+\_\+\+K\+E\+Y\+\_\+\+L\+E\+N\+G\+T\+H, eina\+\_\+lock\+\_\+new(), E\+I\+N\+A\+\_\+\+T\+R\+U\+E, \+\_\+\+Eina\+\_\+\+File\+::fd, \+\_\+\+Eina\+\_\+\+File\+::filename, \+\_\+\+Eina\+\_\+\+File\+::global\+\_\+map, \+\_\+\+Eina\+\_\+\+File\+::length, \+\_\+\+Eina\+\_\+\+File\+::lock, \+\_\+\+Eina\+\_\+\+File\+::map, \+\_\+\+Eina\+\_\+\+File\+::mtime, \+\_\+\+Eina\+\_\+\+File\+::refcount, and \+\_\+\+Eina\+\_\+\+File\+::rmap.



Referenced by evas\+\_\+object\+\_\+image\+\_\+memfile\+\_\+set().

\hypertarget{group__Eina__File__Group_ga4b15c2ec6fcd45ce8ecd1f9a5c8aa4ee}{}\index{File@{File}!eina\+\_\+file\+\_\+virtual@{eina\+\_\+file\+\_\+virtual}}
\index{eina\+\_\+file\+\_\+virtual@{eina\+\_\+file\+\_\+virtual}!File@{File}}
\subsubsection[{eina\+\_\+file\+\_\+virtual(\+Eina\+\_\+\+File $\ast$file) E\+I\+N\+A\+\_\+\+W\+A\+R\+N\+\_\+\+U\+N\+U\+S\+E\+D\+\_\+\+R\+E\+S\+U\+L\+T E\+I\+N\+A\+\_\+\+A\+R\+G\+\_\+\+N\+O\+N\+N\+U\+L\+L(1)}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\+A\+P\+I} {\bf Eina\+\_\+\+Bool} eina\+\_\+file\+\_\+virtual (
\begin{DoxyParamCaption}
\item[{{\bf Eina\+\_\+\+File} $\ast$}]{file}
\end{DoxyParamCaption}
)}\label{group__Eina__File__Group_ga4b15c2ec6fcd45ce8ecd1f9a5c8aa4ee}


Tells if a file is a real file or only exist in memory. 


\begin{DoxyParams}{Parameters}
{\em file} & The file to test \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{E\+I\+N\+A\+\_\+\+T\+R\+U\+E} if the file is a virtual file
\end{DoxyReturn}
\begin{DoxySince}{Since}
1.\+8 
\end{DoxySince}


References E\+I\+N\+A\+\_\+\+F\+A\+L\+S\+E.

\hypertarget{group__Eina__File__Group_gac118af0ab5f22ec27954057223cb1ec1}{}\index{File@{File}!eina\+\_\+file\+\_\+refresh@{eina\+\_\+file\+\_\+refresh}}
\index{eina\+\_\+file\+\_\+refresh@{eina\+\_\+file\+\_\+refresh}!File@{File}}
\subsubsection[{eina\+\_\+file\+\_\+refresh(\+Eina\+\_\+\+File $\ast$file)}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\+A\+P\+I} {\bf Eina\+\_\+\+Bool} eina\+\_\+file\+\_\+refresh (
\begin{DoxyParamCaption}
\item[{{\bf Eina\+\_\+\+File} $\ast$}]{file}
\end{DoxyParamCaption}
)}\label{group__Eina__File__Group_gac118af0ab5f22ec27954057223cb1ec1}


Refreshes file information. 


\begin{DoxyParams}{Parameters}
{\em file} & The file to refresh \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{E\+I\+N\+A\+\_\+\+T\+R\+U\+E} if the file has changed
\end{DoxyReturn}
All current map continue to exist. You need to manually delete and recreate them to have the new correct mapping.

\begin{DoxySince}{Since}
1.\+8 
\end{DoxySince}


References E\+I\+N\+A\+\_\+\+F\+A\+L\+S\+E, eina\+\_\+file\+\_\+flush(), E\+I\+N\+A\+\_\+\+T\+R\+U\+E, \+\_\+\+Eina\+\_\+\+File\+::fd, \+\_\+\+Eina\+\_\+\+File\+::filename, \+\_\+\+Eina\+\_\+\+File\+::inode, \+\_\+\+Eina\+\_\+\+File\+::length, and \+\_\+\+Eina\+\_\+\+File\+::mtime.

\hypertarget{group__Eina__File__Group_ga88bb67c6691a7f134f0414fd3c1df680}{}\index{File@{File}!eina\+\_\+file\+\_\+dup@{eina\+\_\+file\+\_\+dup}}
\index{eina\+\_\+file\+\_\+dup@{eina\+\_\+file\+\_\+dup}!File@{File}}
\subsubsection[{eina\+\_\+file\+\_\+dup(const Eina\+\_\+\+File $\ast$file)}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\+A\+P\+I} {\bf Eina\+\_\+\+File}$\ast$ eina\+\_\+file\+\_\+dup (
\begin{DoxyParamCaption}
\item[{const {\bf Eina\+\_\+\+File} $\ast$}]{file}
\end{DoxyParamCaption}
)}\label{group__Eina__File__Group_ga88bb67c6691a7f134f0414fd3c1df680}


Duplicates a read-\/only handler of a previously open file. 


\begin{DoxyParams}{Parameters}
{\em file} & To duplicate a reference to \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
\hyperlink{group__Eina__File__Group_ga20697123547cbc937c6c9dd845af0403}{Eina\+\_\+\+File} handle of the duplicated file
\end{DoxyReturn}
\begin{DoxyNote}{Note}
Opens a file in read-\/only mode.
\end{DoxyNote}
\begin{DoxySince}{Since}
1.\+8 
\end{DoxySince}


References eina\+\_\+lock\+\_\+release(), eina\+\_\+lock\+\_\+take(), \+\_\+\+Eina\+\_\+\+File\+::lock, and \+\_\+\+Eina\+\_\+\+File\+::refcount.



Referenced by eet\+\_\+mmap().

\hypertarget{group__Eina__File__Group_ga715ced39d0806964baab10fe30e7bd37}{}\index{File@{File}!eina\+\_\+file\+\_\+close@{eina\+\_\+file\+\_\+close}}
\index{eina\+\_\+file\+\_\+close@{eina\+\_\+file\+\_\+close}!File@{File}}
\subsubsection[{eina\+\_\+file\+\_\+close(\+Eina\+\_\+\+File $\ast$file)}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\+A\+P\+I} void eina\+\_\+file\+\_\+close (
\begin{DoxyParamCaption}
\item[{{\bf Eina\+\_\+\+File} $\ast$}]{file}
\end{DoxyParamCaption}
)}\label{group__Eina__File__Group_ga715ced39d0806964baab10fe30e7bd37}


Unrefs the file handler. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em file} & The file handler to unref\\
\hline
\end{DoxyParams}
This decrements the file\textquotesingle{}s reference count and if it reaches zero it closes the file.

\begin{DoxySince}{Since}
1.\+1 
\end{DoxySince}


References \+\_\+eina\+\_\+file\+\_\+cache, \+\_\+eina\+\_\+file\+\_\+lock\+\_\+cache, E\+I\+N\+A\+\_\+\+F\+A\+L\+S\+E, eina\+\_\+file\+\_\+clean\+\_\+close(), eina\+\_\+hash\+\_\+del\+\_\+by\+\_\+key\+\_\+hash(), eina\+\_\+hash\+\_\+djb2(), eina\+\_\+hash\+\_\+find\+\_\+by\+\_\+hash(), eina\+\_\+lock\+\_\+release(), eina\+\_\+lock\+\_\+take(), E\+I\+N\+A\+\_\+\+T\+R\+U\+E, \+\_\+\+Eina\+\_\+\+File\+::filename, \+\_\+\+Eina\+\_\+\+File\+::lock, and \+\_\+\+Eina\+\_\+\+File\+::refcount.



Referenced by edje\+\_\+file\+\_\+collection\+\_\+list(), edje\+\_\+file\+\_\+data\+\_\+get(), edje\+\_\+file\+\_\+group\+\_\+exists(), eet\+\_\+identity\+\_\+open(), eet\+\_\+open(), elua\+\_\+io\+\_\+loadfile(), emile\+\_\+image\+\_\+close(), and evas\+\_\+object\+\_\+image\+\_\+memfile\+\_\+set().

\hypertarget{group__Eina__File__Group_ga4970b74fb3b9fe5a8e53bccbb3283711}{}\index{File@{File}!eina\+\_\+file\+\_\+size\+\_\+get@{eina\+\_\+file\+\_\+size\+\_\+get}}
\index{eina\+\_\+file\+\_\+size\+\_\+get@{eina\+\_\+file\+\_\+size\+\_\+get}!File@{File}}
\subsubsection[{eina\+\_\+file\+\_\+size\+\_\+get(const Eina\+\_\+\+File $\ast$file)}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\+A\+P\+I} size\+\_\+t eina\+\_\+file\+\_\+size\+\_\+get (
\begin{DoxyParamCaption}
\item[{const {\bf Eina\+\_\+\+File} $\ast$}]{file}
\end{DoxyParamCaption}
)}\label{group__Eina__File__Group_ga4970b74fb3b9fe5a8e53bccbb3283711}


Gets the file size at open time. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em file} & The file handler to request the size from \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The length of the file
\end{DoxyReturn}
\begin{DoxySince}{Since}
1.\+1 
\end{DoxySince}


References \+\_\+\+Eina\+\_\+\+File\+::length.



Referenced by eet\+\_\+identity\+\_\+open(), eet\+\_\+mmap(), eet\+\_\+open(), eio\+\_\+file\+\_\+map\+\_\+all(), and elua\+\_\+io\+\_\+loadfile().

\hypertarget{group__Eina__File__Group_ga24f150a021d8be9d9b99cb1a0d7d8fcd}{}\index{File@{File}!eina\+\_\+file\+\_\+mtime\+\_\+get@{eina\+\_\+file\+\_\+mtime\+\_\+get}}
\index{eina\+\_\+file\+\_\+mtime\+\_\+get@{eina\+\_\+file\+\_\+mtime\+\_\+get}!File@{File}}
\subsubsection[{eina\+\_\+file\+\_\+mtime\+\_\+get(const Eina\+\_\+\+File $\ast$file)}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\+A\+P\+I} time\+\_\+t eina\+\_\+file\+\_\+mtime\+\_\+get (
\begin{DoxyParamCaption}
\item[{const {\bf Eina\+\_\+\+File} $\ast$}]{file}
\end{DoxyParamCaption}
)}\label{group__Eina__File__Group_ga24f150a021d8be9d9b99cb1a0d7d8fcd}


Gets the last modification time of an open file. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em file} & The file handler to request the modification time from \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The last modification time
\end{DoxyReturn}
\begin{DoxySince}{Since}
1.\+1 
\end{DoxySince}


References \+\_\+\+Eina\+\_\+\+File\+::mtime.

\hypertarget{group__Eina__File__Group_ga1a53f3fdef3aa6fb265effe86c2f7a92}{}\index{File@{File}!eina\+\_\+file\+\_\+filename\+\_\+get@{eina\+\_\+file\+\_\+filename\+\_\+get}}
\index{eina\+\_\+file\+\_\+filename\+\_\+get@{eina\+\_\+file\+\_\+filename\+\_\+get}!File@{File}}
\subsubsection[{eina\+\_\+file\+\_\+filename\+\_\+get(const Eina\+\_\+\+File $\ast$file)}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\+A\+P\+I} const char$\ast$ eina\+\_\+file\+\_\+filename\+\_\+get (
\begin{DoxyParamCaption}
\item[{const {\bf Eina\+\_\+\+File} $\ast$}]{file}
\end{DoxyParamCaption}
)}\label{group__Eina__File__Group_ga1a53f3fdef3aa6fb265effe86c2f7a92}


Gets the filename of an open file. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em file} & The file handler to request the name from \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The stringshared filename of the file
\end{DoxyReturn}
\begin{DoxySince}{Since}
1.\+1 
\end{DoxySince}


References \+\_\+\+Eina\+\_\+\+File\+::filename.



Referenced by edje\+\_\+mmap\+\_\+group\+\_\+exists(), and eet\+\_\+mmap().

\hypertarget{group__Eina__File__Group_gac352732de27c1d327dfc997b807e8704}{}\index{File@{File}!eina\+\_\+file\+\_\+xattr\+\_\+get@{eina\+\_\+file\+\_\+xattr\+\_\+get}}
\index{eina\+\_\+file\+\_\+xattr\+\_\+get@{eina\+\_\+file\+\_\+xattr\+\_\+get}!File@{File}}
\subsubsection[{eina\+\_\+file\+\_\+xattr\+\_\+get(\+Eina\+\_\+\+File $\ast$file)}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\+A\+P\+I} {\bf Eina\+\_\+\+Iterator}$\ast$ eina\+\_\+file\+\_\+xattr\+\_\+get (
\begin{DoxyParamCaption}
\item[{{\bf Eina\+\_\+\+File} $\ast$}]{file}
\end{DoxyParamCaption}
)}\label{group__Eina__File__Group_gac352732de27c1d327dfc997b807e8704}


Gets the extended attribute of an open file. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em file} & The file handler to request the extended attribute from \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
An iterator
\end{DoxyReturn}
\begin{DoxyNote}{Note}
The iterator lists all the extended attribute names without allocating them, so you need to copy them yourself if needed.
\end{DoxyNote}
\begin{DoxySince}{Since}
1.\+2 
\end{DoxySince}


References eina\+\_\+xattr\+\_\+fd\+\_\+ls(), and \+\_\+\+Eina\+\_\+\+File\+::fd.

\hypertarget{group__Eina__File__Group_ga734fe96e84273f8d649e3795c0dfd5d1}{}\index{File@{File}!eina\+\_\+file\+\_\+xattr\+\_\+value\+\_\+get@{eina\+\_\+file\+\_\+xattr\+\_\+value\+\_\+get}}
\index{eina\+\_\+file\+\_\+xattr\+\_\+value\+\_\+get@{eina\+\_\+file\+\_\+xattr\+\_\+value\+\_\+get}!File@{File}}
\subsubsection[{eina\+\_\+file\+\_\+xattr\+\_\+value\+\_\+get(\+Eina\+\_\+\+File $\ast$file)}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\+A\+P\+I} {\bf Eina\+\_\+\+Iterator}$\ast$ eina\+\_\+file\+\_\+xattr\+\_\+value\+\_\+get (
\begin{DoxyParamCaption}
\item[{{\bf Eina\+\_\+\+File} $\ast$}]{file}
\end{DoxyParamCaption}
)}\label{group__Eina__File__Group_ga734fe96e84273f8d649e3795c0dfd5d1}


Gets the extended attribute of an open file. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em file} & The file handler to request the extended attribute from \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
An iterator
\end{DoxyReturn}
\begin{DoxyNote}{Note}
The iterator lists all the extended attribute names without allocating them, so you need to copy them yourself if needed. It returns the Eina\+\_\+\+Xattr structure.
\end{DoxyNote}
\begin{DoxySince}{Since}
1.\+2 
\end{DoxySince}


References eina\+\_\+xattr\+\_\+value\+\_\+fd\+\_\+ls(), and \+\_\+\+Eina\+\_\+\+File\+::fd.

\hypertarget{group__Eina__File__Group_ga880f977c352766672d54991421835e7d}{}\index{File@{File}!eina\+\_\+file\+\_\+map\+\_\+all@{eina\+\_\+file\+\_\+map\+\_\+all}}
\index{eina\+\_\+file\+\_\+map\+\_\+all@{eina\+\_\+file\+\_\+map\+\_\+all}!File@{File}}
\subsubsection[{eina\+\_\+file\+\_\+map\+\_\+all(\+Eina\+\_\+\+File $\ast$file, Eina\+\_\+\+File\+\_\+\+Populate rule)}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\+A\+P\+I} void$\ast$ eina\+\_\+file\+\_\+map\+\_\+all (
\begin{DoxyParamCaption}
\item[{{\bf Eina\+\_\+\+File} $\ast$}]{file, }
\item[{{\bf Eina\+\_\+\+File\+\_\+\+Populate}}]{rule}
\end{DoxyParamCaption}
)}\label{group__Eina__File__Group_ga880f977c352766672d54991421835e7d}


Maps all the files to a buffer. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em file} & The file handler to map in the memory \\
\hline
\mbox{\tt in}  & {\em rule} & The rule to apply to the mapped memory \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
A pointer to a buffer that maps all the file content ~\newline
 {\ttfamily N\+U\+L\+L} if it fails
\end{DoxyReturn}
\begin{DoxySince}{Since}
1.\+1 
\end{DoxySince}


References E\+I\+N\+A\+\_\+\+F\+A\+L\+S\+E, E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+P\+O\+P\+U\+L\+A\+T\+E, eina\+\_\+file\+\_\+virtual\+\_\+map\+\_\+all(), eina\+\_\+lock\+\_\+release(), eina\+\_\+lock\+\_\+take(), eina\+\_\+mmap\+\_\+safety\+\_\+enabled\+\_\+set(), E\+I\+N\+A\+\_\+\+T\+R\+U\+E, \+\_\+\+Eina\+\_\+\+File\+::fd, \+\_\+\+Eina\+\_\+\+File\+::global\+\_\+map, \+\_\+\+Eina\+\_\+\+File\+::global\+\_\+refcount, \+\_\+\+Eina\+\_\+\+File\+::length, \+\_\+\+Eina\+\_\+\+File\+::lock, and mmap().



Referenced by eet\+\_\+identity\+\_\+open(), eet\+\_\+mmap(), eet\+\_\+open(), eina\+\_\+file\+\_\+map\+\_\+lines(), eina\+\_\+file\+\_\+map\+\_\+new(), and elua\+\_\+io\+\_\+loadfile().

\hypertarget{group__Eina__File__Group_ga8a9f5b50c7a12340421da059501660be}{}\index{File@{File}!eina\+\_\+file\+\_\+map\+\_\+new@{eina\+\_\+file\+\_\+map\+\_\+new}}
\index{eina\+\_\+file\+\_\+map\+\_\+new@{eina\+\_\+file\+\_\+map\+\_\+new}!File@{File}}
\subsubsection[{eina\+\_\+file\+\_\+map\+\_\+new(\+Eina\+\_\+\+File $\ast$file, Eina\+\_\+\+File\+\_\+\+Populate rule, unsigned long int offset, unsigned long int length)}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\+A\+P\+I} void$\ast$ eina\+\_\+file\+\_\+map\+\_\+new (
\begin{DoxyParamCaption}
\item[{{\bf Eina\+\_\+\+File} $\ast$}]{file, }
\item[{{\bf Eina\+\_\+\+File\+\_\+\+Populate}}]{rule, }
\item[{unsigned long int}]{offset, }
\item[{unsigned long int}]{length}
\end{DoxyParamCaption}
)}\label{group__Eina__File__Group_ga8a9f5b50c7a12340421da059501660be}


Maps a part of the file. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em file} & The file handler to map in the memory \\
\hline
\mbox{\tt in}  & {\em rule} & The rule to apply to the mapped memory \\
\hline
\mbox{\tt in}  & {\em offset} & The offset inside the file \\
\hline
\mbox{\tt in}  & {\em length} & The length of the memory to map \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
A valid pointer to the system memory with {\ttfamily length} valid bytes in it ~\newline
 And {\ttfamily N\+U\+L\+L} if not inside the file or anything else goes wrong.
\end{DoxyReturn}
\begin{DoxyNote}{Note}
This does handle reference counting so it can share the same memory area.
\end{DoxyNote}
\begin{DoxySince}{Since}
1.\+1 
\end{DoxySince}


References E\+I\+N\+A\+\_\+\+F\+A\+L\+S\+E, eina\+\_\+file\+\_\+map\+\_\+all(), E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+P\+O\+P\+U\+L\+A\+T\+E, eina\+\_\+file\+\_\+virtual\+\_\+map\+\_\+new(), eina\+\_\+hash\+\_\+add(), eina\+\_\+hash\+\_\+direct\+\_\+add(), eina\+\_\+hash\+\_\+find(), eina\+\_\+lock\+\_\+release(), eina\+\_\+lock\+\_\+take(), eina\+\_\+mmap\+\_\+safety\+\_\+enabled\+\_\+set(), E\+I\+N\+A\+\_\+\+T\+R\+U\+E, \+\_\+\+Eina\+\_\+\+File\+::fd, \+\_\+\+Eina\+\_\+\+File\+\_\+\+Map\+::hugetlb, \+\_\+\+Eina\+\_\+\+File\+::length, \+\_\+\+Eina\+\_\+\+File\+\_\+\+Map\+::length, \+\_\+\+Eina\+\_\+\+File\+::lock, \+\_\+\+Eina\+\_\+\+File\+::map, \+\_\+\+Eina\+\_\+\+File\+\_\+\+Map\+::map, mmap(), \+\_\+\+Eina\+\_\+\+File\+\_\+\+Map\+::offset, \+\_\+\+Eina\+\_\+\+File\+\_\+\+Map\+::refcount, and \+\_\+\+Eina\+\_\+\+File\+::rmap.

\hypertarget{group__Eina__File__Group_ga60541f5c98e55f38d792d9f92d2d544f}{}\index{File@{File}!eina\+\_\+file\+\_\+map\+\_\+free@{eina\+\_\+file\+\_\+map\+\_\+free}}
\index{eina\+\_\+file\+\_\+map\+\_\+free@{eina\+\_\+file\+\_\+map\+\_\+free}!File@{File}}
\subsubsection[{eina\+\_\+file\+\_\+map\+\_\+free(\+Eina\+\_\+\+File $\ast$file, void $\ast$map)}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\+A\+P\+I} void eina\+\_\+file\+\_\+map\+\_\+free (
\begin{DoxyParamCaption}
\item[{{\bf Eina\+\_\+\+File} $\ast$}]{file, }
\item[{void $\ast$}]{map}
\end{DoxyParamCaption}
)}\label{group__Eina__File__Group_ga60541f5c98e55f38d792d9f92d2d544f}


Unrefs and unmaps memory if possible. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em file} & The file handler to unmap memory from \\
\hline
\mbox{\tt in}  & {\em map} & The memory map to unref and unmap\\
\hline
\end{DoxyParams}
\begin{DoxySince}{Since}
1.\+1 
\end{DoxySince}


References eina\+\_\+file\+\_\+common\+\_\+map\+\_\+free(), eina\+\_\+file\+\_\+virtual\+\_\+map\+\_\+free(), eina\+\_\+lock\+\_\+release(), eina\+\_\+lock\+\_\+take(), \+\_\+\+Eina\+\_\+\+File\+::global\+\_\+map, \+\_\+\+Eina\+\_\+\+File\+::global\+\_\+refcount, \+\_\+\+Eina\+\_\+\+File\+::length, \+\_\+\+Eina\+\_\+\+File\+::lock, and munmap().



Referenced by eet\+\_\+identity\+\_\+open(), and elua\+\_\+io\+\_\+loadfile().

\hypertarget{group__Eina__File__Group_ga61d232dbd4b05d5134ea93ef00884550}{}\index{File@{File}!eina\+\_\+file\+\_\+map\+\_\+populate@{eina\+\_\+file\+\_\+map\+\_\+populate}}
\index{eina\+\_\+file\+\_\+map\+\_\+populate@{eina\+\_\+file\+\_\+map\+\_\+populate}!File@{File}}
\subsubsection[{eina\+\_\+file\+\_\+map\+\_\+populate(\+Eina\+\_\+\+File $\ast$file, Eina\+\_\+\+File\+\_\+\+Populate rule, const void $\ast$map, unsigned long int offset, unsigned long int length)}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\+A\+P\+I} void eina\+\_\+file\+\_\+map\+\_\+populate (
\begin{DoxyParamCaption}
\item[{{\bf Eina\+\_\+\+File} $\ast$}]{file, }
\item[{{\bf Eina\+\_\+\+File\+\_\+\+Populate}}]{rule, }
\item[{const void $\ast$}]{map, }
\item[{unsigned long int}]{offset, }
\item[{unsigned long int}]{length}
\end{DoxyParamCaption}
)}\label{group__Eina__File__Group_ga61d232dbd4b05d5134ea93ef00884550}


Ask the O\+S to populate or otherwise pages of memory in file mapping. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em file} & The file handle from which the map comes \\
\hline
\mbox{\tt in}  & {\em rule} & The rule to apply to the mapped memory \\
\hline
\mbox{\tt in}  & {\em map} & Memory that was mapped inside of which the memory range is \\
\hline
\mbox{\tt in}  & {\em offset} & The offset in bytes from the start of the map address \\
\hline
\mbox{\tt in}  & {\em } & \\
\hline
\end{DoxyParams}


References eina\+\_\+hash\+\_\+find(), eina\+\_\+lock\+\_\+release(), eina\+\_\+lock\+\_\+take(), \+\_\+\+Eina\+\_\+\+File\+\_\+\+Map\+::hugetlb, \+\_\+\+Eina\+\_\+\+File\+::lock, \+\_\+\+Eina\+\_\+\+File\+\_\+\+Map\+::map, and \+\_\+\+Eina\+\_\+\+File\+::rmap.

\hypertarget{group__Eina__File__Group_gadc4d521fb8a14d51d85f2d11caaec54d}{}\index{File@{File}!eina\+\_\+file\+\_\+map\+\_\+lines@{eina\+\_\+file\+\_\+map\+\_\+lines}}
\index{eina\+\_\+file\+\_\+map\+\_\+lines@{eina\+\_\+file\+\_\+map\+\_\+lines}!File@{File}}
\subsubsection[{eina\+\_\+file\+\_\+map\+\_\+lines(\+Eina\+\_\+\+File $\ast$file)}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\+A\+P\+I} {\bf Eina\+\_\+\+Iterator}$\ast$ eina\+\_\+file\+\_\+map\+\_\+lines (
\begin{DoxyParamCaption}
\item[{{\bf Eina\+\_\+\+File} $\ast$}]{file}
\end{DoxyParamCaption}
)}\label{group__Eina__File__Group_gadc4d521fb8a14d51d85f2d11caaec54d}


Maps line by line in the memory efficiently using an \hyperlink{group__Eina__Iterator__Group_ga15b975bb881d955249ce13d4ebc96948}{Eina\+\_\+\+Iterator}. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em file} & The file to run over \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
An Eina\+\_\+\+Iterator that produces \hyperlink{group__Eina__File__Group_ga2c5c3fdefe5df8c774d5623b7a6e7047}{Eina\+\_\+\+File\+\_\+\+Line}
\end{DoxyReturn}
This function returns an iterator that acts like fgets without useless memcpy. Be aware that once eina\+\_\+iterator\+\_\+next has been called, nothing can guarantee that the memory is still going to be mapped.

\begin{DoxySince}{Since}
1.\+3 
\end{DoxySince}


References \+\_\+\+Eina\+\_\+\+Lines\+\_\+\+Iterator\+::boundary, \+\_\+\+Eina\+\_\+\+Lines\+\_\+\+Iterator\+::current, eina\+\_\+file\+\_\+map\+\_\+all(), E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+S\+E\+Q\+U\+E\+N\+T\+I\+A\+L, eina\+\_\+lock\+\_\+release(), eina\+\_\+lock\+\_\+take(), E\+I\+N\+A\+\_\+\+M\+A\+G\+I\+C\+\_\+\+S\+E\+T, \+\_\+\+Eina\+\_\+\+Lines\+\_\+\+Iterator\+::end, \+\_\+\+Eina\+\_\+\+File\+\_\+\+Line\+::end, \+\_\+\+Eina\+\_\+\+Lines\+\_\+\+Iterator\+::fp, \+\_\+\+Eina\+\_\+\+Iterator\+::free, F\+U\+N\+C\+\_\+\+I\+T\+E\+R\+A\+T\+O\+R\+\_\+\+F\+R\+E\+E, F\+U\+N\+C\+\_\+\+I\+T\+E\+R\+A\+T\+O\+R\+\_\+\+G\+E\+T\+\_\+\+C\+O\+N\+T\+A\+I\+N\+E\+R, F\+U\+N\+C\+\_\+\+I\+T\+E\+R\+A\+T\+O\+R\+\_\+\+N\+E\+X\+T, \+\_\+\+Eina\+\_\+\+Iterator\+::get\+\_\+container, \+\_\+\+Eina\+\_\+\+File\+\_\+\+Line\+::index, \+\_\+\+Eina\+\_\+\+Lines\+\_\+\+Iterator\+::iterator, \+\_\+\+Eina\+\_\+\+File\+::length, \+\_\+\+Eina\+\_\+\+File\+\_\+\+Line\+::length, \+\_\+\+Eina\+\_\+\+File\+::lock, \+\_\+\+Eina\+\_\+\+Lines\+\_\+\+Iterator\+::map, \+\_\+\+Eina\+\_\+\+Iterator\+::next, \+\_\+\+Eina\+\_\+\+File\+::refcount, \+\_\+\+Eina\+\_\+\+File\+\_\+\+Line\+::start, and \+\_\+\+Eina\+\_\+\+Iterator\+::version.

\hypertarget{group__Eina__File__Group_ga123564d305287ee8c08b2c88c7d78a47}{}\index{File@{File}!eina\+\_\+file\+\_\+map\+\_\+faulted@{eina\+\_\+file\+\_\+map\+\_\+faulted}}
\index{eina\+\_\+file\+\_\+map\+\_\+faulted@{eina\+\_\+file\+\_\+map\+\_\+faulted}!File@{File}}
\subsubsection[{eina\+\_\+file\+\_\+map\+\_\+faulted(\+Eina\+\_\+\+File $\ast$file, void $\ast$map)}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\+A\+P\+I} {\bf Eina\+\_\+\+Bool} eina\+\_\+file\+\_\+map\+\_\+faulted (
\begin{DoxyParamCaption}
\item[{{\bf Eina\+\_\+\+File} $\ast$}]{file, }
\item[{void $\ast$}]{map}
\end{DoxyParamCaption}
)}\label{group__Eina__File__Group_ga123564d305287ee8c08b2c88c7d78a47}


Tells whether there has been an I\+O error during the life of a mmaped file,. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em file} & The file handler to the mmaped file \\
\hline
\mbox{\tt in}  & {\em map} & The memory map to check if an error occurred on it \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{E\+I\+N\+A\+\_\+\+T\+R\+U\+E} if there has been an I\+O error, otherwise \hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{E\+I\+N\+A\+\_\+\+F\+A\+L\+S\+E}
\end{DoxyReturn}
\begin{DoxySince}{Since}
1.\+2 
\end{DoxySince}


References \+\_\+\+Eina\+\_\+\+File\+::dead\+\_\+map, E\+I\+N\+A\+\_\+\+F\+A\+L\+S\+E, eina\+\_\+hash\+\_\+find(), E\+I\+N\+A\+\_\+\+L\+I\+S\+T\+\_\+\+F\+O\+R\+E\+A\+C\+H, eina\+\_\+lock\+\_\+release(), eina\+\_\+lock\+\_\+take(), \+\_\+\+Eina\+\_\+\+File\+\_\+\+Map\+::faulty, \+\_\+\+Eina\+\_\+\+File\+::global\+\_\+faulty, \+\_\+\+Eina\+\_\+\+File\+::global\+\_\+map, \+\_\+\+Eina\+\_\+\+File\+::lock, \+\_\+\+Eina\+\_\+\+File\+\_\+\+Map\+::map, and \+\_\+\+Eina\+\_\+\+File\+::rmap.

\hypertarget{group__Eina__File__Group_ga3eb6309933f0a698eda7cf41ed21fb5e}{}\index{File@{File}!eina\+\_\+file\+\_\+path\+\_\+relative@{eina\+\_\+file\+\_\+path\+\_\+relative}}
\index{eina\+\_\+file\+\_\+path\+\_\+relative@{eina\+\_\+file\+\_\+path\+\_\+relative}!File@{File}}
\subsubsection[{eina\+\_\+file\+\_\+path\+\_\+relative(const char $\ast$path)}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Eina\+\_\+\+Bool} eina\+\_\+file\+\_\+path\+\_\+relative (
\begin{DoxyParamCaption}
\item[{const char $\ast$}]{path}
\end{DoxyParamCaption}
)}\label{group__Eina__File__Group_ga3eb6309933f0a698eda7cf41ed21fb5e}


Determines if a path is relative or absolute. 

The implementation simply chekcs if the fist char in the path is \textquotesingle{}/\textquotesingle{}. If it is not, the path is considered relative.


\begin{DoxyParams}{Parameters}
{\em path} & The path to check.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
E\+I\+N\+A\+\_\+\+T\+R\+U\+E if the path is relative, E\+I\+N\+A\+\_\+\+F\+A\+L\+S\+E otherwise. 
\end{DoxyReturn}


References E\+I\+N\+A\+\_\+\+F\+A\+L\+S\+E, E\+I\+N\+A\+\_\+\+T\+R\+U\+E, and evil\+\_\+path\+\_\+is\+\_\+absolute().



Referenced by eina\+\_\+file\+\_\+path\+\_\+sanitize().

\hypertarget{group__Eina__File__Group_gafa8822e14b74df94568fd2c0a7c19198}{}\index{File@{File}!eina\+\_\+file\+\_\+current\+\_\+directory\+\_\+get@{eina\+\_\+file\+\_\+current\+\_\+directory\+\_\+get}}
\index{eina\+\_\+file\+\_\+current\+\_\+directory\+\_\+get@{eina\+\_\+file\+\_\+current\+\_\+directory\+\_\+get}!File@{File}}
\subsubsection[{eina\+\_\+file\+\_\+current\+\_\+directory\+\_\+get(const char $\ast$path, size\+\_\+t len)}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Eina\+\_\+\+Tmpstr}$\ast$ eina\+\_\+file\+\_\+current\+\_\+directory\+\_\+get (
\begin{DoxyParamCaption}
\item[{const char $\ast$}]{path, }
\item[{size\+\_\+t}]{len}
\end{DoxyParamCaption}
)}\label{group__Eina__File__Group_gafa8822e14b74df94568fd2c0a7c19198}


Gets the current directory and optionally appends a path to it. 

If a string was passed in via the {\ttfamily path} parameter, it will be appended to the current working directory. Presumably, this will be a relative path.


\begin{DoxyParams}{Parameters}
{\em path} & The path to append to the current directory. \\
\hline
{\em len} & The length of {\ttfamily path}.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
A pointer to a string that contains the absolute path to the current working directory plus any path you send in. 
\end{DoxyReturn}


References alloca(), eina\+\_\+tmpstr\+\_\+add\+\_\+length(), and getcwd.



Referenced by eina\+\_\+file\+\_\+path\+\_\+sanitize().

\hypertarget{group__Eina__File__Group_gaf4d25f9df108b8246e0ce7c32f035e33}{}\index{File@{File}!eina\+\_\+file\+\_\+cleanup@{eina\+\_\+file\+\_\+cleanup}}
\index{eina\+\_\+file\+\_\+cleanup@{eina\+\_\+file\+\_\+cleanup}!File@{File}}
\subsubsection[{eina\+\_\+file\+\_\+cleanup(\+Eina\+\_\+\+Tmpstr $\ast$path)}]{\setlength{\rightskip}{0pt plus 5cm}char$\ast$ eina\+\_\+file\+\_\+cleanup (
\begin{DoxyParamCaption}
\item[{{\bf Eina\+\_\+\+Tmpstr} $\ast$}]{path}
\end{DoxyParamCaption}
)}\label{group__Eina__File__Group_gaf4d25f9df108b8246e0ce7c32f035e33}


Cleans up Eina after a file is no longer needed. 


\begin{DoxyParams}{Parameters}
{\em path} & The path of the file.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
On success, it will return the {\ttfamily path} string. If {\ttfamily path} is {\ttfamily N\+U\+L\+L}, it will return and empty string. 
\end{DoxyReturn}


References eina\+\_\+tmpstr\+\_\+del().

\hypertarget{group__Eina__File__Group_ga9360f0d850bb1bf8bf40027985f4ed42}{}\index{File@{File}!eina\+\_\+file\+\_\+clean\+\_\+close@{eina\+\_\+file\+\_\+clean\+\_\+close}}
\index{eina\+\_\+file\+\_\+clean\+\_\+close@{eina\+\_\+file\+\_\+clean\+\_\+close}!File@{File}}
\subsubsection[{eina\+\_\+file\+\_\+clean\+\_\+close(\+Eina\+\_\+\+File $\ast$file)}]{\setlength{\rightskip}{0pt plus 5cm}void eina\+\_\+file\+\_\+clean\+\_\+close (
\begin{DoxyParamCaption}
\item[{{\bf Eina\+\_\+\+File} $\ast$}]{file}
\end{DoxyParamCaption}
)}\label{group__Eina__File__Group_ga9360f0d850bb1bf8bf40027985f4ed42}


Closes and cleans up after an Eina file. 


\begin{DoxyParams}{Parameters}
{\em file} & The path of the file. \\
\hline
\end{DoxyParams}


References eina\+\_\+file\+\_\+real\+\_\+close(), eina\+\_\+hash\+\_\+free(), E\+I\+N\+A\+\_\+\+M\+A\+G\+I\+C\+\_\+\+S\+E\+T, \+\_\+\+Eina\+\_\+\+File\+::map, and \+\_\+\+Eina\+\_\+\+File\+::rmap.



Referenced by eina\+\_\+file\+\_\+close(), and eina\+\_\+file\+\_\+open().

\hypertarget{group__Eina__File__Group_ga6960f0b4d94996a4beb965a684d92dea}{}\index{File@{File}!eina\+\_\+file\+\_\+real\+\_\+close@{eina\+\_\+file\+\_\+real\+\_\+close}}
\index{eina\+\_\+file\+\_\+real\+\_\+close@{eina\+\_\+file\+\_\+real\+\_\+close}!File@{File}}
\subsubsection[{eina\+\_\+file\+\_\+real\+\_\+close(\+Eina\+\_\+\+File $\ast$file)}]{\setlength{\rightskip}{0pt plus 5cm}void eina\+\_\+file\+\_\+real\+\_\+close (
\begin{DoxyParamCaption}
\item[{{\bf Eina\+\_\+\+File} $\ast$}]{file}
\end{DoxyParamCaption}
)}\label{group__Eina__File__Group_ga6960f0b4d94996a4beb965a684d92dea}


Closes a file from the O\+S perspective. 


\begin{DoxyParams}{Parameters}
{\em file} & The path of the file. \\
\hline
\end{DoxyParams}


Referenced by eina\+\_\+file\+\_\+clean\+\_\+close().

\hypertarget{group__Eina__File__Group_ga64a3123b8e0b9698d30611bacd548b9e}{}\index{File@{File}!eina\+\_\+file\+\_\+flush@{eina\+\_\+file\+\_\+flush}}
\index{eina\+\_\+file\+\_\+flush@{eina\+\_\+file\+\_\+flush}!File@{File}}
\subsubsection[{eina\+\_\+file\+\_\+flush(\+Eina\+\_\+\+File $\ast$file, unsigned long int length)}]{\setlength{\rightskip}{0pt plus 5cm}void eina\+\_\+file\+\_\+flush (
\begin{DoxyParamCaption}
\item[{{\bf Eina\+\_\+\+File} $\ast$}]{file, }
\item[{unsigned long int}]{length}
\end{DoxyParamCaption}
)}\label{group__Eina__File__Group_ga64a3123b8e0b9698d30611bacd548b9e}


Resets the internal housekeeping structures after a file has changed. 

Despite the name, this routine does not write anything to disk. It invalidates the memory maps for the file. If the file has shrunk, it also adds any mapped regions past the end of the file to the dead\+\_\+map.


\begin{DoxyParams}{Parameters}
{\em file} & The file. \\
\hline
{\em length} & The current length of the file after the change. \\
\hline
\end{DoxyParams}


References \+\_\+\+Eina\+\_\+\+File\+::dead\+\_\+map, eina\+\_\+hash\+\_\+del(), eina\+\_\+hash\+\_\+iterator\+\_\+data\+\_\+new(), E\+I\+N\+A\+\_\+\+I\+T\+E\+R\+A\+T\+O\+R\+\_\+\+F\+O\+R\+E\+A\+C\+H, eina\+\_\+iterator\+\_\+free(), eina\+\_\+list\+\_\+append(), E\+I\+N\+A\+\_\+\+L\+I\+S\+T\+\_\+\+F\+O\+R\+E\+A\+C\+H, eina\+\_\+list\+\_\+merge(), eina\+\_\+lock\+\_\+release(), eina\+\_\+lock\+\_\+take(), \+\_\+\+Eina\+\_\+\+File\+::global\+\_\+map, \+\_\+\+Eina\+\_\+\+File\+::global\+\_\+refcount, \+\_\+\+Eina\+\_\+\+File\+::length, \+\_\+\+Eina\+\_\+\+File\+\_\+\+Map\+::length, \+\_\+\+Eina\+\_\+\+File\+::lock, \+\_\+\+Eina\+\_\+\+File\+::map, \+\_\+\+Eina\+\_\+\+File\+\_\+\+Map\+::map, \+\_\+\+Eina\+\_\+\+File\+\_\+\+Map\+::offset, \+\_\+\+Eina\+\_\+\+File\+::refcount, \+\_\+\+Eina\+\_\+\+File\+\_\+\+Map\+::refcount, and \+\_\+\+Eina\+\_\+\+File\+::rmap.



Referenced by eina\+\_\+file\+\_\+refresh().

\hypertarget{group__Eina__File__Group_ga7fc3c176abeb346004562e5ddfdf6e0f}{}\index{File@{File}!eina\+\_\+file\+\_\+common\+\_\+map\+\_\+free@{eina\+\_\+file\+\_\+common\+\_\+map\+\_\+free}}
\index{eina\+\_\+file\+\_\+common\+\_\+map\+\_\+free@{eina\+\_\+file\+\_\+common\+\_\+map\+\_\+free}!File@{File}}
\subsubsection[{eina\+\_\+file\+\_\+common\+\_\+map\+\_\+free(\+Eina\+\_\+\+File $\ast$file, void $\ast$map, void($\ast$free\+\_\+func)(\+Eina\+\_\+\+File\+\_\+\+Map $\ast$map))}]{\setlength{\rightskip}{0pt plus 5cm}void eina\+\_\+file\+\_\+common\+\_\+map\+\_\+free (
\begin{DoxyParamCaption}
\item[{{\bf Eina\+\_\+\+File} $\ast$}]{file, }
\item[{void $\ast$}]{map, }
\item[{void($\ast$)({\bf Eina\+\_\+\+File\+\_\+\+Map} $\ast$map)}]{free\+\_\+func}
\end{DoxyParamCaption}
)}\label{group__Eina__File__Group_ga7fc3c176abeb346004562e5ddfdf6e0f}


Removes a mapped region from the file and frees the resources. 

This routine will remove a previously mapped region from the internal Eina File housekeeping and free the resources associated with it. In the case where the map is part of the dead\+\_\+map, {\ttfamily free\+\_\+func} will be called to handle the actual deallocation.


\begin{DoxyParams}{Parameters}
{\em file} & The file. \\
\hline
{\em map} & The memory mapped region that is to be freed. \\
\hline
{\em free\+\_\+func} & A pointer to a function that will be called to free up the resources used by the map. \\
\hline
\end{DoxyParams}


References \+\_\+\+Eina\+\_\+\+File\+::dead\+\_\+map, E\+I\+N\+A\+\_\+\+F\+A\+L\+S\+E, eina\+\_\+hash\+\_\+del(), eina\+\_\+hash\+\_\+find(), E\+I\+N\+A\+\_\+\+L\+I\+S\+T\+\_\+\+F\+O\+R\+E\+A\+C\+H, eina\+\_\+list\+\_\+remove\+\_\+list(), E\+I\+N\+A\+\_\+\+T\+R\+U\+E, \+\_\+\+Eina\+\_\+\+File\+\_\+\+Map\+::length, \+\_\+\+Eina\+\_\+\+File\+::map, \+\_\+\+Eina\+\_\+\+File\+\_\+\+Map\+::map, \+\_\+\+Eina\+\_\+\+File\+\_\+\+Map\+::offset, \+\_\+\+Eina\+\_\+\+File\+\_\+\+Map\+::refcount, and \+\_\+\+Eina\+\_\+\+File\+::rmap.



Referenced by eina\+\_\+file\+\_\+map\+\_\+free().

\hypertarget{group__Eina__File__Group_ga7fb3d5e5399d49c2fb3599dd7d29b689}{}\index{File@{File}!eina\+\_\+file\+\_\+virtual\+\_\+map\+\_\+all@{eina\+\_\+file\+\_\+virtual\+\_\+map\+\_\+all}}
\index{eina\+\_\+file\+\_\+virtual\+\_\+map\+\_\+all@{eina\+\_\+file\+\_\+virtual\+\_\+map\+\_\+all}!File@{File}}
\subsubsection[{eina\+\_\+file\+\_\+virtual\+\_\+map\+\_\+all(\+Eina\+\_\+\+File $\ast$file)}]{\setlength{\rightskip}{0pt plus 5cm}void$\ast$ eina\+\_\+file\+\_\+virtual\+\_\+map\+\_\+all (
\begin{DoxyParamCaption}
\item[{{\bf Eina\+\_\+\+File} $\ast$}]{file}
\end{DoxyParamCaption}
)}\label{group__Eina__File__Group_ga7fb3d5e5399d49c2fb3599dd7d29b689}


Map the entire contents fo a virtual file to a buffer. 


\begin{DoxyParams}{Parameters}
{\em file} & The virtual file to map in memory \\
\hline
\end{DoxyParams}


References eina\+\_\+lock\+\_\+release(), eina\+\_\+lock\+\_\+take(), \+\_\+\+Eina\+\_\+\+File\+::global\+\_\+map, \+\_\+\+Eina\+\_\+\+File\+::global\+\_\+refcount, and \+\_\+\+Eina\+\_\+\+File\+::lock.



Referenced by eina\+\_\+file\+\_\+map\+\_\+all().

\hypertarget{group__Eina__File__Group_ga08bc51d32fd60da6f1bbfb530a0feb0d}{}\index{File@{File}!eina\+\_\+file\+\_\+virtual\+\_\+map\+\_\+new@{eina\+\_\+file\+\_\+virtual\+\_\+map\+\_\+new}}
\index{eina\+\_\+file\+\_\+virtual\+\_\+map\+\_\+new@{eina\+\_\+file\+\_\+virtual\+\_\+map\+\_\+new}!File@{File}}
\subsubsection[{eina\+\_\+file\+\_\+virtual\+\_\+map\+\_\+new(\+Eina\+\_\+\+File $\ast$file, unsigned long int offset, unsigned long int length)}]{\setlength{\rightskip}{0pt plus 5cm}void$\ast$ eina\+\_\+file\+\_\+virtual\+\_\+map\+\_\+new (
\begin{DoxyParamCaption}
\item[{{\bf Eina\+\_\+\+File} $\ast$}]{file, }
\item[{unsigned long int}]{offset, }
\item[{unsigned long int}]{length}
\end{DoxyParamCaption}
)}\label{group__Eina__File__Group_ga08bc51d32fd60da6f1bbfb530a0feb0d}


Map a part of a virtual file to a buffer. 


\begin{DoxyParams}{Parameters}
{\em file} & The virtual file to map in memory \\
\hline
{\em offset} & The offset inside the file to start mapping \\
\hline
{\em length} & The length of the region to map \\
\hline
\end{DoxyParams}


References eina\+\_\+hash\+\_\+add(), eina\+\_\+hash\+\_\+direct\+\_\+add(), eina\+\_\+hash\+\_\+find(), eina\+\_\+lock\+\_\+release(), eina\+\_\+lock\+\_\+take(), \+\_\+\+Eina\+\_\+\+File\+::global\+\_\+map, \+\_\+\+Eina\+\_\+\+File\+\_\+\+Map\+::length, \+\_\+\+Eina\+\_\+\+File\+::lock, \+\_\+\+Eina\+\_\+\+File\+::map, \+\_\+\+Eina\+\_\+\+File\+\_\+\+Map\+::map, \+\_\+\+Eina\+\_\+\+File\+\_\+\+Map\+::offset, \+\_\+\+Eina\+\_\+\+File\+\_\+\+Map\+::refcount, and \+\_\+\+Eina\+\_\+\+File\+::rmap.



Referenced by eina\+\_\+file\+\_\+map\+\_\+new().

\hypertarget{group__Eina__File__Group_ga105fa4c85c984190da9c5f22b509fd15}{}\index{File@{File}!eina\+\_\+file\+\_\+virtual\+\_\+map\+\_\+free@{eina\+\_\+file\+\_\+virtual\+\_\+map\+\_\+free}}
\index{eina\+\_\+file\+\_\+virtual\+\_\+map\+\_\+free@{eina\+\_\+file\+\_\+virtual\+\_\+map\+\_\+free}!File@{File}}
\subsubsection[{eina\+\_\+file\+\_\+virtual\+\_\+map\+\_\+free(\+Eina\+\_\+\+File $\ast$file, void $\ast$map)}]{\setlength{\rightskip}{0pt plus 5cm}void eina\+\_\+file\+\_\+virtual\+\_\+map\+\_\+free (
\begin{DoxyParamCaption}
\item[{{\bf Eina\+\_\+\+File} $\ast$}]{file, }
\item[{void $\ast$}]{map}
\end{DoxyParamCaption}
)}\label{group__Eina__File__Group_ga105fa4c85c984190da9c5f22b509fd15}


Unref and unmap memory if possible. 


\begin{DoxyParams}{Parameters}
{\em file} & The file handler to unmap memory from. \\
\hline
{\em map} & Memory map to unref and unmap. \\
\hline
\end{DoxyParams}


References eina\+\_\+hash\+\_\+del(), eina\+\_\+hash\+\_\+find(), eina\+\_\+lock\+\_\+release(), eina\+\_\+lock\+\_\+take(), \+\_\+\+Eina\+\_\+\+File\+::global\+\_\+map, \+\_\+\+Eina\+\_\+\+File\+::global\+\_\+refcount, \+\_\+\+Eina\+\_\+\+File\+\_\+\+Map\+::length, \+\_\+\+Eina\+\_\+\+File\+::lock, \+\_\+\+Eina\+\_\+\+File\+::map, \+\_\+\+Eina\+\_\+\+File\+\_\+\+Map\+::offset, \+\_\+\+Eina\+\_\+\+File\+\_\+\+Map\+::refcount, and \+\_\+\+Eina\+\_\+\+File\+::rmap.



Referenced by eina\+\_\+file\+\_\+map\+\_\+free().

\hypertarget{group__Eina__File__Group_ga448a87e4666e16adb3d4289c210c549e}{}\index{File@{File}!eina\+\_\+file\+\_\+map\+\_\+key\+\_\+length@{eina\+\_\+file\+\_\+map\+\_\+key\+\_\+length}}
\index{eina\+\_\+file\+\_\+map\+\_\+key\+\_\+length@{eina\+\_\+file\+\_\+map\+\_\+key\+\_\+length}!File@{File}}
\subsubsection[{eina\+\_\+file\+\_\+map\+\_\+key\+\_\+length(const void $\ast$key)}]{\setlength{\rightskip}{0pt plus 5cm}unsigned int eina\+\_\+file\+\_\+map\+\_\+key\+\_\+length (
\begin{DoxyParamCaption}
\item[{const void $\ast$}]{key}
\end{DoxyParamCaption}
)}\label{group__Eina__File__Group_ga448a87e4666e16adb3d4289c210c549e}


Get the length of a map key. 

\begin{DoxyWarning}{Warning}
This function is not yet implemented. At present it ony returns 
\begin{DoxyCode}
1 sizeof (unsigned long int) * 2 
\end{DoxyCode}

\end{DoxyWarning}

\begin{DoxyParams}{Parameters}
{\em key} & The key for which length will be calcualted.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The length of the key. 
\end{DoxyReturn}


Referenced by eina\+\_\+file\+\_\+open(), and eina\+\_\+file\+\_\+virtualize().

\hypertarget{group__Eina__File__Group_ga279f49595634c5825f579f98b8c58780}{}\index{File@{File}!eina\+\_\+file\+\_\+map\+\_\+key\+\_\+cmp@{eina\+\_\+file\+\_\+map\+\_\+key\+\_\+cmp}}
\index{eina\+\_\+file\+\_\+map\+\_\+key\+\_\+cmp@{eina\+\_\+file\+\_\+map\+\_\+key\+\_\+cmp}!File@{File}}
\subsubsection[{eina\+\_\+file\+\_\+map\+\_\+key\+\_\+cmp(const unsigned long long int $\ast$key1, int key1\+\_\+length, const unsigned long long int $\ast$key2, int key2\+\_\+length)}]{\setlength{\rightskip}{0pt plus 5cm}int eina\+\_\+file\+\_\+map\+\_\+key\+\_\+cmp (
\begin{DoxyParamCaption}
\item[{const unsigned long long int $\ast$}]{key1, }
\item[{int}]{key1\+\_\+length, }
\item[{const unsigned long long int $\ast$}]{key2, }
\item[{int}]{key2\+\_\+length}
\end{DoxyParamCaption}
)}\label{group__Eina__File__Group_ga279f49595634c5825f579f98b8c58780}


Compares two map keys. 

The implementation assumes that {\ttfamily key1} and {\ttfamily key2} are both pointers to an array with 2 elements, as is the case with the Eina file map keys.


\begin{DoxyParams}{Parameters}
{\em key1} & The first key. \\
\hline
{\em key1\+\_\+length} & The length of the first key. \\
\hline
{\em key2} & The second key. \\
\hline
{\em key2\+\_\+length} & The length of the second key.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
Positive number if Key1 $>$ Key2, else a negative number. Will return zero if both elements of the key are exactly the same. 
\end{DoxyReturn}


Referenced by eina\+\_\+file\+\_\+open(), and eina\+\_\+file\+\_\+virtualize().

\hypertarget{group__Eina__File__Group_ga61afa15fd0c3f3938179b041c1bc7226}{}\index{File@{File}!eina\+\_\+file\+\_\+map\+\_\+key\+\_\+hash@{eina\+\_\+file\+\_\+map\+\_\+key\+\_\+hash}}
\index{eina\+\_\+file\+\_\+map\+\_\+key\+\_\+hash@{eina\+\_\+file\+\_\+map\+\_\+key\+\_\+hash}!File@{File}}
\subsubsection[{eina\+\_\+file\+\_\+map\+\_\+key\+\_\+hash(const unsigned long long int $\ast$key, int key\+\_\+length)}]{\setlength{\rightskip}{0pt plus 5cm}int eina\+\_\+file\+\_\+map\+\_\+key\+\_\+hash (
\begin{DoxyParamCaption}
\item[{const unsigned long long int $\ast$}]{key, }
\item[{int}]{key\+\_\+length}
\end{DoxyParamCaption}
)}\label{group__Eina__File__Group_ga61afa15fd0c3f3938179b041c1bc7226}


Creates a hash from a map key. 


\begin{DoxyParams}{Parameters}
{\em key} & A pointer to the key. \\
\hline
{\em key\+\_\+length} & The length of the key.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
A key hash. 
\end{DoxyReturn}


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



Referenced by eina\+\_\+file\+\_\+open(), and eina\+\_\+file\+\_\+virtualize().



\subsection{Variable Documentation}
\hypertarget{group__Eina__File__Group_ga566b1dffb98a71425706508ba19e12ea}{}\index{File@{File}!\+\_\+eina\+\_\+file\+\_\+cache@{\+\_\+eina\+\_\+file\+\_\+cache}}
\index{\+\_\+eina\+\_\+file\+\_\+cache@{\+\_\+eina\+\_\+file\+\_\+cache}!File@{File}}
\subsubsection[{\+\_\+eina\+\_\+file\+\_\+cache}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Eina\+\_\+\+Hash}$\ast$ \+\_\+eina\+\_\+file\+\_\+cache}\label{group__Eina__File__Group_ga566b1dffb98a71425706508ba19e12ea}


A pointer to the global Eina file cache. 



Referenced by eina\+\_\+file\+\_\+close(), and eina\+\_\+file\+\_\+open().

\hypertarget{group__Eina__File__Group_ga863d6a4b22af7faa9fa7596f93906e4b}{}\index{File@{File}!\+\_\+eina\+\_\+file\+\_\+log\+\_\+dom@{\+\_\+eina\+\_\+file\+\_\+log\+\_\+dom}}
\index{\+\_\+eina\+\_\+file\+\_\+log\+\_\+dom@{\+\_\+eina\+\_\+file\+\_\+log\+\_\+dom}!File@{File}}
\subsubsection[{\+\_\+eina\+\_\+file\+\_\+log\+\_\+dom}]{\setlength{\rightskip}{0pt plus 5cm}int \+\_\+eina\+\_\+file\+\_\+log\+\_\+dom}\label{group__Eina__File__Group_ga863d6a4b22af7faa9fa7596f93906e4b}


The global Eina log file domain. 

