\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 \mbox{\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 \mbox{\hyperlink{struct__Eina__Stat}{\+\_\+\+Eina\+\_\+\+Stat}}
\begin{DoxyCompactList}\small\item\em The structure to store some file statistics. \end{DoxyCompactList}\item 
struct \mbox{\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 \mbox{\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 \mbox{\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 \mbox{\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 
\mbox{\Hypertarget{group__Eina__File__Group_ga868d33cdb2c1a17ad3d76efc6bbbd5e0}\label{group__Eina__File__Group_ga868d33cdb2c1a17ad3d76efc6bbbd5e0}} 
\#define \mbox{\hyperlink{group__Eina__File__Group_ga868d33cdb2c1a17ad3d76efc6bbbd5e0}{E\+I\+N\+A\+\_\+\+P\+A\+T\+H\+\_\+\+M\+AX}}~8192
\begin{DoxyCompactList}\small\item\em Definition for the constant defined as the highest value for P\+A\+T\+H\+\_\+\+M\+AX. \end{DoxyCompactList}\item 
\#define \mbox{\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 \mbox{\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 \mbox{\hyperlink{group__Eina__File__Group_gab0472249546b833441c01dd278932bb0}{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+D\+I\+R\+\_\+\+L\+I\+S\+T\+\_\+\+CB}}(function)~((\mbox{\hyperlink{group__Eina__File__Group_ga074e73b17381346ada766213d3bb5432}{Eina\+\_\+\+File\+\_\+\+Dir\+\_\+\+List\+\_\+\+Cb}})function)
\begin{DoxyCompactList}\small\item\em The macro to cast to an \mbox{\hyperlink{group__Eina__File__Group_ga074e73b17381346ada766213d3bb5432}{Eina\+\_\+\+File\+\_\+\+Dir\+\_\+\+List\+\_\+\+Cb}}. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{group__Eina__File__Group_gaedcc484fea6c2dc20b7f48664ce42dd6}\label{group__Eina__File__Group_gaedcc484fea6c2dc20b7f48664ce42dd6}} 
\#define \mbox{\hyperlink{group__Eina__File__Group_gaedcc484fea6c2dc20b7f48664ce42dd6}{E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+C\+O\+L\+O\+R\+\_\+\+D\+E\+F\+A\+U\+LT}}~E\+I\+N\+A\+\_\+\+C\+O\+L\+O\+R\+\_\+\+C\+Y\+AN
\begin{DoxyCompactList}\small\item\em Set the color for Eina log entries. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{group__Eina__File__Group_ga24e93be9c5baa3aeab7021b64e290672}\label{group__Eina__File__Group_ga24e93be9c5baa3aeab7021b64e290672}} 
\#define \mbox{\hyperlink{group__Eina__File__Group_ga24e93be9c5baa3aeab7021b64e290672}{E\+RR}}(...)~\mbox{\hyperlink{group__Eina__Log__Group_ga698d954a5fc2d120a553277361d68047}{E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+D\+O\+M\+\_\+\+E\+RR}}(\mbox{\hyperlink{group__Eina__File__Group_ga863d6a4b22af7faa9fa7596f93906e4b}{\+\_\+eina\+\_\+file\+\_\+log\+\_\+dom}}, \+\_\+\+\_\+\+V\+A\+\_\+\+A\+R\+G\+S\+\_\+\+\_\+)
\begin{DoxyCompactList}\small\item\em Macro for logging Eina errors. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{group__Eina__File__Group_gaacd9cddd6a93af1a7d53ebc48901e051}\label{group__Eina__File__Group_gaacd9cddd6a93af1a7d53ebc48901e051}} 
\#define \mbox{\hyperlink{group__Eina__File__Group_gaacd9cddd6a93af1a7d53ebc48901e051}{W\+RN}}(...)~\mbox{\hyperlink{group__Eina__Log__Group_ga5073ce1fbcc1f6ea8d0670aac2ecce70}{E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+D\+O\+M\+\_\+\+W\+A\+RN}}(\mbox{\hyperlink{group__Eina__File__Group_ga863d6a4b22af7faa9fa7596f93906e4b}{\+\_\+eina\+\_\+file\+\_\+log\+\_\+dom}}, \+\_\+\+\_\+\+V\+A\+\_\+\+A\+R\+G\+S\+\_\+\+\_\+)
\begin{DoxyCompactList}\small\item\em Macro for logging Eina warnings. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{group__Eina__File__Group_gaa0bb6435252613b1a74175af3d60045f}\label{group__Eina__File__Group_gaa0bb6435252613b1a74175af3d60045f}} 
\#define \mbox{\hyperlink{group__Eina__File__Group_gaa0bb6435252613b1a74175af3d60045f}{I\+NF}}(...)~\mbox{\hyperlink{group__Eina__Log__Group_ga782f84a4805166d2707cb4d59217c64e}{E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+D\+O\+M\+\_\+\+I\+N\+FO}}(\mbox{\hyperlink{group__Eina__File__Group_ga863d6a4b22af7faa9fa7596f93906e4b}{\+\_\+eina\+\_\+file\+\_\+log\+\_\+dom}}, \+\_\+\+\_\+\+V\+A\+\_\+\+A\+R\+G\+S\+\_\+\+\_\+)
\begin{DoxyCompactList}\small\item\em Macro for logging Eina info messages. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{group__Eina__File__Group_gae8924623ca601364965e3d88fb7f40fa}\label{group__Eina__File__Group_gae8924623ca601364965e3d88fb7f40fa}} 
\#define \mbox{\hyperlink{group__Eina__File__Group_gae8924623ca601364965e3d88fb7f40fa}{D\+BG}}(...)~\mbox{\hyperlink{group__Eina__Log__Group_ga4423c9d7bdc95555cf045b66e21e1f5c}{E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+D\+O\+M\+\_\+\+D\+BG}}(\mbox{\hyperlink{group__Eina__File__Group_ga863d6a4b22af7faa9fa7596f93906e4b}{\+\_\+eina\+\_\+file\+\_\+log\+\_\+dom}}, \+\_\+\+\_\+\+V\+A\+\_\+\+A\+R\+G\+S\+\_\+\+\_\+)
\begin{DoxyCompactList}\small\item\em Macro for logging Eina debug messages. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Typedefs}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{group__Eina__File__Group_ga8e8779c9f28937a642dbe1be86760646}\label{group__Eina__File__Group_ga8e8779c9f28937a642dbe1be86760646}} 
typedef struct \mbox{\hyperlink{struct__Eina__File__Direct__Info}{\+\_\+\+Eina\+\_\+\+File\+\_\+\+Direct\+\_\+\+Info}} \mbox{\hyperlink{group__Eina__File__Group_ga8e8779c9f28937a642dbe1be86760646}{Eina\+\_\+\+File\+\_\+\+Direct\+\_\+\+Info}}
\begin{DoxyCompactList}\small\item\em A type for \mbox{\hyperlink{struct__Eina__File__Direct__Info}{\+\_\+\+Eina\+\_\+\+File\+\_\+\+Direct\+\_\+\+Info}}. \end{DoxyCompactList}\item 
typedef struct \mbox{\hyperlink{struct__Eina__Stat}{\+\_\+\+Eina\+\_\+\+Stat}} \mbox{\hyperlink{group__Eina__File__Group_gab15fe1278f044850fcb24417a47364a8}{Eina\+\_\+\+Stat}}
\begin{DoxyCompactList}\small\item\em A type for \mbox{\hyperlink{struct__Eina__Stat}{\+\_\+\+Eina\+\_\+\+Stat}}. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{group__Eina__File__Group_ga2c5c3fdefe5df8c774d5623b7a6e7047}\label{group__Eina__File__Group_ga2c5c3fdefe5df8c774d5623b7a6e7047}} 
typedef struct \mbox{\hyperlink{struct__Eina__File__Line}{\+\_\+\+Eina\+\_\+\+File\+\_\+\+Line}} \mbox{\hyperlink{group__Eina__File__Group_ga2c5c3fdefe5df8c774d5623b7a6e7047}{Eina\+\_\+\+File\+\_\+\+Line}}
\begin{DoxyCompactList}\small\item\em A type for \mbox{\hyperlink{struct__Eina__File__Line}{\+\_\+\+Eina\+\_\+\+File\+\_\+\+Line}}. \end{DoxyCompactList}\item 
typedef void($\ast$ \mbox{\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 
\mbox{\Hypertarget{group__Eina__File__Group_ga20697123547cbc937c6c9dd845af0403}\label{group__Eina__File__Group_ga20697123547cbc937c6c9dd845af0403}} 
typedef struct \mbox{\hyperlink{struct__Eina__File}{\+\_\+\+Eina\+\_\+\+File}} \mbox{\hyperlink{group__Eina__File__Group_ga20697123547cbc937c6c9dd845af0403}{Eina\+\_\+\+File}}
\begin{DoxyCompactList}\small\item\em A file handle. \end{DoxyCompactList}\item 
typedef \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}}($\ast$ \mbox{\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 
\mbox{\Hypertarget{group__Eina__File__Group_gaa386401312fe1dd48e84637fa7a728b6}\label{group__Eina__File__Group_gaa386401312fe1dd48e84637fa7a728b6}} 
typedef struct \mbox{\hyperlink{struct__Eina__File__Map}{\+\_\+\+Eina\+\_\+\+File\+\_\+\+Map}} \mbox{\hyperlink{group__Eina__File__Group_gaa386401312fe1dd48e84637fa7a728b6}{Eina\+\_\+\+File\+\_\+\+Map}}
\begin{DoxyCompactList}\small\item\em Type definition for an Eina File Map. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{group__Eina__File__Group_ga08145d0302c44aca3c5a4d1bc6d2b0ca}\label{group__Eina__File__Group_ga08145d0302c44aca3c5a4d1bc6d2b0ca}} 
typedef struct \mbox{\hyperlink{struct__Eina__Lines__Iterator}{\+\_\+\+Eina\+\_\+\+Lines\+\_\+\+Iterator}} \mbox{\hyperlink{group__Eina__File__Group_ga08145d0302c44aca3c5a4d1bc6d2b0ca}{Eina\+\_\+\+Lines\+\_\+\+Iterator}}
\begin{DoxyCompactList}\small\item\em Type definition for an Eina Lines Iterator. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Enumerations}
\begin{DoxyCompactItemize}
\item 
enum \mbox{\hyperlink{group__Eina__File__Group_ga0b7b2db79f9a05b07273fb3428d46cd8}{Eina\+\_\+\+File\+\_\+\+Type}} \{ \newline
\mbox{\hyperlink{group__Eina__File__Group_gga0b7b2db79f9a05b07273fb3428d46cd8aa271a0f3cd77f21c405a7e2636c4b064}{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+U\+N\+K\+N\+O\+WN}}, 
\newline
\mbox{\hyperlink{group__Eina__File__Group_gga0b7b2db79f9a05b07273fb3428d46cd8aeffdbcaeae950a9c786736495c9e6ae6}{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+F\+I\+FO}}, 
\newline
\mbox{\hyperlink{group__Eina__File__Group_gga0b7b2db79f9a05b07273fb3428d46cd8a3c0a5d44c060edb31c813aa04a025d2a}{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+C\+HR}}, 
\newline
\mbox{\hyperlink{group__Eina__File__Group_gga0b7b2db79f9a05b07273fb3428d46cd8a0b8844f30974a2fa27af9ba78bcfaa53}{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+D\+IR}}, 
\newline
\mbox{\hyperlink{group__Eina__File__Group_gga0b7b2db79f9a05b07273fb3428d46cd8a4e8e6ab5ad07461bf2e97981d0c6f745}{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+B\+LK}}, 
\newline
\mbox{\hyperlink{group__Eina__File__Group_gga0b7b2db79f9a05b07273fb3428d46cd8ae5c8a949a0de3a8fc46dcf02a57df381}{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+R\+EG}}, 
\newline
\mbox{\hyperlink{group__Eina__File__Group_gga0b7b2db79f9a05b07273fb3428d46cd8abcfb23817258fffca146c9c43df45862}{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+L\+NK}}, 
\newline
\mbox{\hyperlink{group__Eina__File__Group_gga0b7b2db79f9a05b07273fb3428d46cd8a7b2507d72b963615be2bef550d98c188}{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+S\+O\+CK}}, 
\newline
\mbox{\hyperlink{group__Eina__File__Group_gga0b7b2db79f9a05b07273fb3428d46cd8af0980697fe8cbfc60a19f1f22b39634f}{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+W\+HT}}
 \}
\begin{DoxyCompactList}\small\item\em Type for enumeration of a file type. \end{DoxyCompactList}\item 
enum \mbox{\hyperlink{group__Eina__File__Group_ga2788825dfdd797282112148f2f65ec7a}{Eina\+\_\+\+File\+\_\+\+Populate}} \{ \newline
\mbox{\hyperlink{group__Eina__File__Group_gga2788825dfdd797282112148f2f65ec7aae9b963a3ffd3a5f885c86db4673eabd3}{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+R\+A\+N\+D\+OM}}, 
\newline
\mbox{\hyperlink{group__Eina__File__Group_gga2788825dfdd797282112148f2f65ec7aabb92031c2d448a1659117121866229b2}{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+S\+E\+Q\+U\+E\+N\+T\+I\+AL}}, 
\newline
\mbox{\hyperlink{group__Eina__File__Group_gga2788825dfdd797282112148f2f65ec7aab049b3550f67cdd35ea15d5839800186}{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+W\+I\+L\+L\+N\+E\+ED}}, 
\newline
\mbox{\hyperlink{group__Eina__File__Group_gga2788825dfdd797282112148f2f65ec7aa6c05201c80772a294c16800d7ca46a1d}{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+P\+O\+P\+U\+L\+A\+TE}}, 
\newline
\mbox{\hyperlink{group__Eina__File__Group_gga2788825dfdd797282112148f2f65ec7aabcd9246f7fbbbd2df5eeec7f3913558c}{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+D\+O\+N\+T\+N\+E\+ED}}, 
\newline
\mbox{\hyperlink{group__Eina__File__Group_gga2788825dfdd797282112148f2f65ec7aa4786137330071feac6aafa0dcfc56519}{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+R\+E\+M\+O\+VE}}
 \}
\begin{DoxyCompactList}\small\item\em Type for enumeration of a file access type. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{group__Eina__File__Group_ga64acf75a3d09f9ef5ad04173a628cc32}\label{group__Eina__File__Group_ga64acf75a3d09f9ef5ad04173a628cc32}} 
enum \mbox{\hyperlink{group__Eina__File__Group_ga64acf75a3d09f9ef5ad04173a628cc32}{Eina\+\_\+\+File\+\_\+\+Copy\+\_\+\+Flags}} \{ \newline
{\bfseries E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+C\+O\+P\+Y\+\_\+\+D\+A\+TA} = 0, 
\newline
{\bfseries E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+C\+O\+P\+Y\+\_\+\+P\+E\+R\+M\+I\+S\+S\+I\+ON} = (1 $<$$<$ 0), 
\newline
{\bfseries E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+C\+O\+P\+Y\+\_\+\+X\+A\+T\+TR} = (1 $<$$<$ 1)
 \}
\begin{DoxyCompactList}\small\item\em Enumeration for a flag what to copy from file. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Functions}
\begin{DoxyCompactItemize}
\item 
\mbox{\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+PI}} \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} \mbox{\hyperlink{group__Eina__File__Group_ga186dc8dd1a166a8972189f78bbee15ea}{eina\+\_\+file\+\_\+dir\+\_\+list}} (const char $\ast$dir, \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} recursive, \mbox{\hyperlink{group__Eina__File__Group_ga074e73b17381346ada766213d3bb5432}{Eina\+\_\+\+File\+\_\+\+Dir\+\_\+\+List\+\_\+\+Cb}} cb, void $\ast$data) \mbox{\hyperlink{group__Eina__Types__Group_ga1a066aa3069f7e43279021cc1e378fac}{E\+I\+N\+A\+\_\+\+A\+R\+G\+\_\+\+N\+O\+N\+N\+U\+LL}}(1
\begin{DoxyCompactList}\small\item\em Lists all the files on the directory by calling the function for every file found. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+PI}} \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} \mbox{\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+PI}} \mbox{\hyperlink{group__Eina__Array__Group_ga2a57284ee83a7e767485b7ae2f5df86c}{Eina\+\_\+\+Array}} $\ast$ \mbox{\hyperlink{group__Eina__File__Group_ga8f157fabca35a981c0e253fdb3130385}{eina\+\_\+file\+\_\+split}} (char $\ast$path) \mbox{\hyperlink{group__Eina__Types__Group_ga4ba89e4b58eff707a6cf05ffe0cd4dea}{E\+I\+N\+A\+\_\+\+W\+A\+R\+N\+\_\+\+U\+N\+U\+S\+E\+D\+\_\+\+R\+E\+S\+U\+LT}} \mbox{\hyperlink{group__Eina__Types__Group_ga1a066aa3069f7e43279021cc1e378fac}{E\+I\+N\+A\+\_\+\+A\+R\+G\+\_\+\+N\+O\+N\+N\+U\+LL}}(1) \mbox{\hyperlink{group__Eina__Types__Group_gaabeaa41dd47f4b4d3991b10ba00bc59c}{E\+I\+N\+A\+\_\+\+M\+A\+L\+L\+OC}}
\begin{DoxyCompactList}\small\item\em Splits a path according to the delimiter of the filesystem. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+PI}} \mbox{\hyperlink{group__Eina__Iterator__Group_ga15b975bb881d955249ce13d4ebc96948}{Eina\+\_\+\+Iterator}} $\ast$ \mbox{\hyperlink{group__Eina__File__Group_ga8c4fabb379b865a4ec134a5c4436be2a}{eina\+\_\+file\+\_\+ls}} (const char $\ast$dir) \mbox{\hyperlink{group__Eina__Types__Group_ga4ba89e4b58eff707a6cf05ffe0cd4dea}{E\+I\+N\+A\+\_\+\+W\+A\+R\+N\+\_\+\+U\+N\+U\+S\+E\+D\+\_\+\+R\+E\+S\+U\+LT}} \mbox{\hyperlink{group__Eina__Types__Group_ga1a066aa3069f7e43279021cc1e378fac}{E\+I\+N\+A\+\_\+\+A\+R\+G\+\_\+\+N\+O\+N\+N\+U\+LL}}(1) \mbox{\hyperlink{group__Eina__Types__Group_gaabeaa41dd47f4b4d3991b10ba00bc59c}{E\+I\+N\+A\+\_\+\+M\+A\+L\+L\+OC}}
\begin{DoxyCompactList}\small\item\em Gets an iterator to list the content of a directory. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+PI}} \mbox{\hyperlink{group__Eina__Iterator__Group_ga15b975bb881d955249ce13d4ebc96948}{Eina\+\_\+\+Iterator}} $\ast$ \mbox{\hyperlink{group__Eina__File__Group_ga21d5e94767ae9932751649ce09a2f98f}{eina\+\_\+file\+\_\+stat\+\_\+ls}} (const char $\ast$dir) \mbox{\hyperlink{group__Eina__Types__Group_ga4ba89e4b58eff707a6cf05ffe0cd4dea}{E\+I\+N\+A\+\_\+\+W\+A\+R\+N\+\_\+\+U\+N\+U\+S\+E\+D\+\_\+\+R\+E\+S\+U\+LT}} \mbox{\hyperlink{group__Eina__Types__Group_ga1a066aa3069f7e43279021cc1e378fac}{E\+I\+N\+A\+\_\+\+A\+R\+G\+\_\+\+N\+O\+N\+N\+U\+LL}}(1) \mbox{\hyperlink{group__Eina__Types__Group_gaabeaa41dd47f4b4d3991b10ba00bc59c}{E\+I\+N\+A\+\_\+\+M\+A\+L\+L\+OC}}
\begin{DoxyCompactList}\small\item\em Gets an iterator to list the content of a directory, with direct information. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+PI}} int \mbox{\hyperlink{group__Eina__File__Group_ga48cc0e04ab40c51160cda615c871e1f0}{eina\+\_\+file\+\_\+statat}} (void $\ast$container, \mbox{\hyperlink{group__Eina__File__Group_ga8e8779c9f28937a642dbe1be86760646}{Eina\+\_\+\+File\+\_\+\+Direct\+\_\+\+Info}} $\ast$info, \mbox{\hyperlink{group__Eina__File__Group_gab15fe1278f044850fcb24417a47364a8}{Eina\+\_\+\+Stat}} $\ast$buf) \mbox{\hyperlink{group__Eina__Types__Group_ga4ba89e4b58eff707a6cf05ffe0cd4dea}{E\+I\+N\+A\+\_\+\+W\+A\+R\+N\+\_\+\+U\+N\+U\+S\+E\+D\+\_\+\+R\+E\+S\+U\+LT}} \mbox{\hyperlink{group__Eina__Types__Group_ga1a066aa3069f7e43279021cc1e378fac}{E\+I\+N\+A\+\_\+\+A\+R\+G\+\_\+\+N\+O\+N\+N\+U\+LL}}(1
\begin{DoxyCompactList}\small\item\em Uses information provided by \mbox{\hyperlink{group__Eina__Iterator__Group_ga15b975bb881d955249ce13d4ebc96948}{Eina\+\_\+\+Iterator}} of \mbox{\hyperlink{group__Eina__File__Group_ga21d5e94767ae9932751649ce09a2f98f}{eina\+\_\+file\+\_\+stat\+\_\+ls()}} or \mbox{\hyperlink{group__Eina__File__Group_ga90d5372f6c6ef085760e26cb8c4993c8}{eina\+\_\+file\+\_\+direct\+\_\+ls()}} to call stat in the most efficient way on your system. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+PI}} int \mbox{\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+PI}} int \mbox{\hyperlink{group__Eina__File__Group_ga14fdad8401539305edf575b36d967030}{eina\+\_\+file\+\_\+mkstemp}} (const char $\ast$templatename, \mbox{\hyperlink{group__Eina__Stringshare__Group_gae8d53f367d5da5acfd19af6c235831d5}{Eina\+\_\+\+Tmpstr}} $\ast$$\ast$path) \mbox{\hyperlink{group__Eina__Types__Group_ga1a066aa3069f7e43279021cc1e378fac}{E\+I\+N\+A\+\_\+\+A\+R\+G\+\_\+\+N\+O\+N\+N\+U\+LL}}(1)
\begin{DoxyCompactList}\small\item\em Generates and creates a uniquely named temporary file from a template name. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+PI}} \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} \mbox{\hyperlink{group__Eina__File__Group_gac79707316c9eb4abf2306815b7ace67f}{eina\+\_\+file\+\_\+mkdtemp}} (const char $\ast$templatename, \mbox{\hyperlink{group__Eina__Stringshare__Group_gae8d53f367d5da5acfd19af6c235831d5}{Eina\+\_\+\+Tmpstr}} $\ast$$\ast$path) \mbox{\hyperlink{group__Eina__Types__Group_ga1a066aa3069f7e43279021cc1e378fac}{E\+I\+N\+A\+\_\+\+A\+R\+G\+\_\+\+N\+O\+N\+N\+U\+LL}}(1
\begin{DoxyCompactList}\small\item\em Generates and creates a uniquely named temporary directory from a template name. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+PI}} \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} \mbox{\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+PI}} \mbox{\hyperlink{group__Eina__Iterator__Group_ga15b975bb881d955249ce13d4ebc96948}{Eina\+\_\+\+Iterator}} $\ast$ \mbox{\hyperlink{group__Eina__File__Group_ga90d5372f6c6ef085760e26cb8c4993c8}{eina\+\_\+file\+\_\+direct\+\_\+ls}} (const char $\ast$dir) \mbox{\hyperlink{group__Eina__Types__Group_ga4ba89e4b58eff707a6cf05ffe0cd4dea}{E\+I\+N\+A\+\_\+\+W\+A\+R\+N\+\_\+\+U\+N\+U\+S\+E\+D\+\_\+\+R\+E\+S\+U\+LT}} \mbox{\hyperlink{group__Eina__Types__Group_ga1a066aa3069f7e43279021cc1e378fac}{E\+I\+N\+A\+\_\+\+A\+R\+G\+\_\+\+N\+O\+N\+N\+U\+LL}}(1) \mbox{\hyperlink{group__Eina__Types__Group_gaabeaa41dd47f4b4d3991b10ba00bc59c}{E\+I\+N\+A\+\_\+\+M\+A\+L\+L\+OC}}
\begin{DoxyCompactList}\small\item\em Gets an iterator to list the content of a directory, with direct information. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+PI}} char $\ast$ \mbox{\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 
\mbox{\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+PI}} \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} \mbox{\hyperlink{group__Eina__File__Group_ga90159e5c99bfaa036ca9f695f713ffa7}{eina\+\_\+file\+\_\+copy}} (const char $\ast$src, const char $\ast$dst, \mbox{\hyperlink{group__Eina__File__Group_ga64acf75a3d09f9ef5ad04173a628cc32}{Eina\+\_\+\+File\+\_\+\+Copy\+\_\+\+Flags}} flags, \mbox{\hyperlink{group__Eina__File__Group_gaa08a39ec2e9abfa703d15822a074f521}{Eina\+\_\+\+File\+\_\+\+Copy\+\_\+\+Progress}} cb, const void $\ast$cb\+\_\+data) \mbox{\hyperlink{group__Eina__Types__Group_ga1a066aa3069f7e43279021cc1e378fac}{E\+I\+N\+A\+\_\+\+A\+R\+G\+\_\+\+N\+O\+N\+N\+U\+LL}}(1
\begin{DoxyCompactList}\small\item\em Copies one file to another using the fastest possible way and report progress. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+PI}} \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} \mbox{\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+PI}} \mbox{\hyperlink{group__Eina__File__Group_ga20697123547cbc937c6c9dd845af0403}{Eina\+\_\+\+File}} $\ast$ \mbox{\hyperlink{group__Eina__File__Group_ga787592b7325fe0174c324d6a4dbd86da}{eina\+\_\+file\+\_\+open}} (const char $\ast$name, \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} shared) \mbox{\hyperlink{group__Eina__Types__Group_ga4ba89e4b58eff707a6cf05ffe0cd4dea}{E\+I\+N\+A\+\_\+\+W\+A\+R\+N\+\_\+\+U\+N\+U\+S\+E\+D\+\_\+\+R\+E\+S\+U\+LT}} \mbox{\hyperlink{group__Eina__Types__Group_ga1a066aa3069f7e43279021cc1e378fac}{E\+I\+N\+A\+\_\+\+A\+R\+G\+\_\+\+N\+O\+N\+N\+U\+LL}}(1) \mbox{\hyperlink{group__Eina__Types__Group_gaabeaa41dd47f4b4d3991b10ba00bc59c}{E\+I\+N\+A\+\_\+\+M\+A\+L\+L\+OC}}
\begin{DoxyCompactList}\small\item\em Gets a read-\/only handler to a file. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+PI}} \mbox{\hyperlink{group__Eina__File__Group_ga20697123547cbc937c6c9dd845af0403}{Eina\+\_\+\+File}} $\ast$ \mbox{\hyperlink{group__Eina__File__Group_ga928baf177014f57317e89aab09e2ecaf}{eina\+\_\+file\+\_\+virtualize}} (const char $\ast$virtual\+\_\+name, const void $\ast$data, unsigned long long length, \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} copy) \mbox{\hyperlink{group__Eina__Types__Group_ga4ba89e4b58eff707a6cf05ffe0cd4dea}{E\+I\+N\+A\+\_\+\+W\+A\+R\+N\+\_\+\+U\+N\+U\+S\+E\+D\+\_\+\+R\+E\+S\+U\+LT}} \mbox{\hyperlink{group__Eina__Types__Group_ga1a066aa3069f7e43279021cc1e378fac}{E\+I\+N\+A\+\_\+\+A\+R\+G\+\_\+\+N\+O\+N\+N\+U\+LL}}(1)
\begin{DoxyCompactList}\small\item\em Creates a virtual file from a memory pointer. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+PI}} \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} \mbox{\hyperlink{group__Eina__File__Group_ga4b15c2ec6fcd45ce8ecd1f9a5c8aa4ee}{eina\+\_\+file\+\_\+virtual}} (\mbox{\hyperlink{group__Eina__File__Group_ga20697123547cbc937c6c9dd845af0403}{Eina\+\_\+\+File}} $\ast$file) \mbox{\hyperlink{group__Eina__Types__Group_ga4ba89e4b58eff707a6cf05ffe0cd4dea}{E\+I\+N\+A\+\_\+\+W\+A\+R\+N\+\_\+\+U\+N\+U\+S\+E\+D\+\_\+\+R\+E\+S\+U\+LT}} \mbox{\hyperlink{group__Eina__Types__Group_ga1a066aa3069f7e43279021cc1e378fac}{E\+I\+N\+A\+\_\+\+A\+R\+G\+\_\+\+N\+O\+N\+N\+U\+LL}}(1)
\begin{DoxyCompactList}\small\item\em Tells if a file is a real file or only exists in memory. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+PI}} \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} \mbox{\hyperlink{group__Eina__File__Group_gac118af0ab5f22ec27954057223cb1ec1}{eina\+\_\+file\+\_\+refresh}} (\mbox{\hyperlink{group__Eina__File__Group_ga20697123547cbc937c6c9dd845af0403}{Eina\+\_\+\+File}} $\ast$file)
\begin{DoxyCompactList}\small\item\em Refreshes file information. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+PI}} \mbox{\hyperlink{group__Eina__File__Group_ga20697123547cbc937c6c9dd845af0403}{Eina\+\_\+\+File}} $\ast$ \mbox{\hyperlink{group__Eina__File__Group_ga88bb67c6691a7f134f0414fd3c1df680}{eina\+\_\+file\+\_\+dup}} (const \mbox{\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 
\mbox{\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+PI}} void \mbox{\hyperlink{group__Eina__File__Group_ga715ced39d0806964baab10fe30e7bd37}{eina\+\_\+file\+\_\+close}} (\mbox{\hyperlink{group__Eina__File__Group_ga20697123547cbc937c6c9dd845af0403}{Eina\+\_\+\+File}} $\ast$file)
\begin{DoxyCompactList}\small\item\em Unrefs the file handler. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+PI}} size\+\_\+t \mbox{\hyperlink{group__Eina__File__Group_ga4970b74fb3b9fe5a8e53bccbb3283711}{eina\+\_\+file\+\_\+size\+\_\+get}} (const \mbox{\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 
\mbox{\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+PI}} time\+\_\+t \mbox{\hyperlink{group__Eina__File__Group_ga24f150a021d8be9d9b99cb1a0d7d8fcd}{eina\+\_\+file\+\_\+mtime\+\_\+get}} (const \mbox{\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 
\mbox{\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+PI}} const char $\ast$ \mbox{\hyperlink{group__Eina__File__Group_ga1a53f3fdef3aa6fb265effe86c2f7a92}{eina\+\_\+file\+\_\+filename\+\_\+get}} (const \mbox{\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 
\mbox{\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+PI}} \mbox{\hyperlink{group__Eina__Iterator__Group_ga15b975bb881d955249ce13d4ebc96948}{Eina\+\_\+\+Iterator}} $\ast$ \mbox{\hyperlink{group__Eina__File__Group_gac352732de27c1d327dfc997b807e8704}{eina\+\_\+file\+\_\+xattr\+\_\+get}} (\mbox{\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 
\mbox{\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+PI}} \mbox{\hyperlink{group__Eina__Iterator__Group_ga15b975bb881d955249ce13d4ebc96948}{Eina\+\_\+\+Iterator}} $\ast$ \mbox{\hyperlink{group__Eina__File__Group_ga734fe96e84273f8d649e3795c0dfd5d1}{eina\+\_\+file\+\_\+xattr\+\_\+value\+\_\+get}} (\mbox{\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 
\mbox{\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+PI}} void $\ast$ \mbox{\hyperlink{group__Eina__File__Group_ga880f977c352766672d54991421835e7d}{eina\+\_\+file\+\_\+map\+\_\+all}} (\mbox{\hyperlink{group__Eina__File__Group_ga20697123547cbc937c6c9dd845af0403}{Eina\+\_\+\+File}} $\ast$file, \mbox{\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 
\mbox{\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+PI}} void $\ast$ \mbox{\hyperlink{group__Eina__File__Group_ga8a9f5b50c7a12340421da059501660be}{eina\+\_\+file\+\_\+map\+\_\+new}} (\mbox{\hyperlink{group__Eina__File__Group_ga20697123547cbc937c6c9dd845af0403}{Eina\+\_\+\+File}} $\ast$file, \mbox{\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 
\mbox{\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+PI}} void \mbox{\hyperlink{group__Eina__File__Group_ga60541f5c98e55f38d792d9f92d2d544f}{eina\+\_\+file\+\_\+map\+\_\+free}} (\mbox{\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 
\mbox{\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+PI}} void \mbox{\hyperlink{group__Eina__File__Group_ga61d232dbd4b05d5134ea93ef00884550}{eina\+\_\+file\+\_\+map\+\_\+populate}} (\mbox{\hyperlink{group__Eina__File__Group_ga20697123547cbc937c6c9dd845af0403}{Eina\+\_\+\+File}} $\ast$file, \mbox{\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 Asks the OS to populate or otherwise pages of memory in file mapping. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+PI}} \mbox{\hyperlink{group__Eina__Iterator__Group_ga15b975bb881d955249ce13d4ebc96948}{Eina\+\_\+\+Iterator}} $\ast$ \mbox{\hyperlink{group__Eina__File__Group_gadc4d521fb8a14d51d85f2d11caaec54d}{eina\+\_\+file\+\_\+map\+\_\+lines}} (\mbox{\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 \mbox{\hyperlink{group__Eina__Iterator__Group_ga15b975bb881d955249ce13d4ebc96948}{Eina\+\_\+\+Iterator}}. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+PI}} \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} \mbox{\hyperlink{group__Eina__File__Group_ga123564d305287ee8c08b2c88c7d78a47}{eina\+\_\+file\+\_\+map\+\_\+faulted}} (\mbox{\hyperlink{group__Eina__File__Group_ga20697123547cbc937c6c9dd845af0403}{Eina\+\_\+\+File}} $\ast$file, void $\ast$map)
\begin{DoxyCompactList}\small\item\em Tells whether there has been an IO error during the life of a mmaped file. \end{DoxyCompactList}\item 
static size\+\_\+t \mbox{\hyperlink{group__Eina__File__Group_gadf638f95abe9aa175b6aaa3762bc1b54}{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)
\begin{DoxyCompactList}\small\item\em Joins two paths of known length. \end{DoxyCompactList}\item 
static size\+\_\+t \mbox{\hyperlink{group__Eina__File__Group_gaafc34529ee88ef8b528f62dab8ffe469}{eina\+\_\+file\+\_\+path\+\_\+join}} (char $\ast$dst, size\+\_\+t size, const char $\ast$a, const char $\ast$b)
\begin{DoxyCompactList}\small\item\em Joins two paths of known length. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+PI}} \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} \mbox{\hyperlink{group__Eina__File__Group_gaf2f4a16b6b2524a2d29aeb18785a68a3}{eina\+\_\+file\+\_\+unlink}} (const char $\ast$pathname)
\begin{DoxyCompactList}\small\item\em Unlinks file. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+PI}} \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} \mbox{\hyperlink{group__Eina__File__Group_ga4b892636498d8917d995a652a8bdd6b7}{eina\+\_\+file\+\_\+close\+\_\+on\+\_\+exec}} (int fd, \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} on)
\begin{DoxyCompactList}\small\item\em Make sure a file descriptor will be closed on exec. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} \mbox{\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 
\mbox{\hyperlink{group__Eina__Stringshare__Group_gae8d53f367d5da5acfd19af6c235831d5}{Eina\+\_\+\+Tmpstr}} $\ast$ \mbox{\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$ \mbox{\hyperlink{group__Eina__File__Group_gaf4d25f9df108b8246e0ce7c32f035e33}{eina\+\_\+file\+\_\+cleanup}} (\mbox{\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 \mbox{\hyperlink{group__Eina__File__Group_ga9360f0d850bb1bf8bf40027985f4ed42}{eina\+\_\+file\+\_\+clean\+\_\+close}} (\mbox{\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 \mbox{\hyperlink{group__Eina__File__Group_ga6960f0b4d94996a4beb965a684d92dea}{eina\+\_\+file\+\_\+real\+\_\+close}} (\mbox{\hyperlink{group__Eina__File__Group_ga20697123547cbc937c6c9dd845af0403}{Eina\+\_\+\+File}} $\ast$file)
\begin{DoxyCompactList}\small\item\em Closes a file from the OS perspective. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{group__Eina__File__Group_ga64a3123b8e0b9698d30611bacd548b9e}{eina\+\_\+file\+\_\+flush}} (\mbox{\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 \mbox{\hyperlink{group__Eina__File__Group_ga7fc3c176abeb346004562e5ddfdf6e0f}{eina\+\_\+file\+\_\+common\+\_\+map\+\_\+free}} (\mbox{\hyperlink{group__Eina__File__Group_ga20697123547cbc937c6c9dd845af0403}{Eina\+\_\+\+File}} $\ast$file, void $\ast$map, void($\ast$free\+\_\+func)(\mbox{\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$ \mbox{\hyperlink{group__Eina__File__Group_ga7fb3d5e5399d49c2fb3599dd7d29b689}{eina\+\_\+file\+\_\+virtual\+\_\+map\+\_\+all}} (\mbox{\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$ \mbox{\hyperlink{group__Eina__File__Group_ga08bc51d32fd60da6f1bbfb530a0feb0d}{eina\+\_\+file\+\_\+virtual\+\_\+map\+\_\+new}} (\mbox{\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 \mbox{\hyperlink{group__Eina__File__Group_ga105fa4c85c984190da9c5f22b509fd15}{eina\+\_\+file\+\_\+virtual\+\_\+map\+\_\+free}} (\mbox{\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 \mbox{\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 \mbox{\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 \mbox{\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 
\mbox{\hyperlink{group__Eina__Hash__Group_ga9a89d7d3ee260d3a60572ebf651b07e0}{Eina\+\_\+\+Hash}} $\ast$ \mbox{\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 
\mbox{\Hypertarget{group__Eina__File__Group_ga30e9ea07586b204a15c736af468616d2}\label{group__Eina__File__Group_ga30e9ea07586b204a15c736af468616d2}} 
Eina\+\_\+\+Lock \mbox{\hyperlink{group__Eina__File__Group_ga30e9ea07586b204a15c736af468616d2}{\+\_\+eina\+\_\+file\+\_\+lock\+\_\+cache}}
\begin{DoxyCompactList}\small\item\em The global file lock cache. \end{DoxyCompactList}\item 
int \mbox{\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, splitting 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 \mbox{\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}
\mbox{\Hypertarget{group__Eina__File__Group_ga307eb3ab937eca910a4905ca61edb1bc}\label{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{\texorpdfstring{E\+I\+N\+A\+\_\+\+P\+A\+T\+H\+\_\+\+S\+E\+P\+\_\+C}{EINA\_PATH\_SEP\_C}}
{\footnotesize\ttfamily \#define E\+I\+N\+A\+\_\+\+P\+A\+T\+H\+\_\+\+S\+E\+P\+\_\+C~\textquotesingle{}/\textquotesingle{}}



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}
\mbox{\Hypertarget{group__Eina__File__Group_ga616ef146444c4337f8ef1d3cf96904a7}\label{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{\texorpdfstring{E\+I\+N\+A\+\_\+\+P\+A\+T\+H\+\_\+\+S\+E\+P\+\_\+S}{EINA\_PATH\_SEP\_S}}
{\footnotesize\ttfamily \#define E\+I\+N\+A\+\_\+\+P\+A\+T\+H\+\_\+\+S\+E\+P\+\_\+S~\char`\"{}/\char`\"{}}



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}
\mbox{\Hypertarget{group__Eina__File__Group_gab0472249546b833441c01dd278932bb0}\label{group__Eina__File__Group_gab0472249546b833441c01dd278932bb0}} 
\index{File@{File}!E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+D\+I\+R\+\_\+\+L\+I\+S\+T\+\_\+\+CB@{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+D\+I\+R\+\_\+\+L\+I\+S\+T\+\_\+\+CB}}
\index{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+D\+I\+R\+\_\+\+L\+I\+S\+T\+\_\+\+CB@{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+D\+I\+R\+\_\+\+L\+I\+S\+T\+\_\+\+CB}!File@{File}}
\subsubsection{\texorpdfstring{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+D\+I\+R\+\_\+\+L\+I\+S\+T\+\_\+\+CB}{EINA\_FILE\_DIR\_LIST\_CB}}
{\footnotesize\ttfamily \#define E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+D\+I\+R\+\_\+\+L\+I\+S\+T\+\_\+\+CB(\begin{DoxyParamCaption}\item[{}]{function }\end{DoxyParamCaption})~((\mbox{\hyperlink{group__Eina__File__Group_ga074e73b17381346ada766213d3bb5432}{Eina\+\_\+\+File\+\_\+\+Dir\+\_\+\+List\+\_\+\+Cb}})function)}



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

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


\subsection{Typedef Documentation}
\mbox{\Hypertarget{group__Eina__File__Group_gab15fe1278f044850fcb24417a47364a8}\label{group__Eina__File__Group_gab15fe1278f044850fcb24417a47364a8}} 
\index{File@{File}!Eina\+\_\+\+Stat@{Eina\+\_\+\+Stat}}
\index{Eina\+\_\+\+Stat@{Eina\+\_\+\+Stat}!File@{File}}
\subsubsection{\texorpdfstring{Eina\+\_\+\+Stat}{Eina\_Stat}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Eina__File__Group_gab15fe1278f044850fcb24417a47364a8}{Eina\+\_\+\+Stat}}}



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

\begin{DoxySince}{Since}
1.\+2 
\end{DoxySince}
\mbox{\Hypertarget{group__Eina__File__Group_ga074e73b17381346ada766213d3bb5432}\label{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{\texorpdfstring{Eina\+\_\+\+File\+\_\+\+Dir\+\_\+\+List\+\_\+\+Cb}{Eina\_File\_Dir\_List\_Cb}}
{\footnotesize\ttfamily Eina\+\_\+\+File\+\_\+\+Dir\+\_\+\+List\+\_\+\+Cb}



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\+NG the path \\
\hline
{\em path} & The path passed to \mbox{\hyperlink{group__Eina__File__Group_ga186dc8dd1a166a8972189f78bbee15ea}{eina\+\_\+file\+\_\+dir\+\_\+list()}} \\
\hline
{\em data} & The data passed to \mbox{\hyperlink{group__Eina__File__Group_ga186dc8dd1a166a8972189f78bbee15ea}{eina\+\_\+file\+\_\+dir\+\_\+list()}} \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{group__Eina__File__Group_gaa08a39ec2e9abfa703d15822a074f521}\label{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{\texorpdfstring{Eina\+\_\+\+File\+\_\+\+Copy\+\_\+\+Progress}{Eina\_File\_Copy\_Progress}}
{\footnotesize\ttfamily Eina\+\_\+\+File\+\_\+\+Copy\+\_\+\+Progress}



Type for a callback to report file copy progress. 

This function is used to report progress during \mbox{\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 \mbox{\hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{E\+I\+N\+A\+\_\+\+F\+A\+L\+SE}}, it will stop the copy. 
\end{DoxyNote}


\subsection{Enumeration Type Documentation}
\mbox{\Hypertarget{group__Eina__File__Group_ga0b7b2db79f9a05b07273fb3428d46cd8}\label{group__Eina__File__Group_ga0b7b2db79f9a05b07273fb3428d46cd8}} 
\index{File@{File}!Eina\+\_\+\+File\+\_\+\+Type@{Eina\+\_\+\+File\+\_\+\+Type}}
\index{Eina\+\_\+\+File\+\_\+\+Type@{Eina\+\_\+\+File\+\_\+\+Type}!File@{File}}
\subsubsection{\texorpdfstring{Eina\+\_\+\+File\+\_\+\+Type}{Eina\_File\_Type}}
{\footnotesize\ttfamily enum \mbox{\hyperlink{group__Eina__File__Group_ga0b7b2db79f9a05b07273fb3428d46cd8}{Eina\+\_\+\+File\+\_\+\+Type}}}



Type for enumeration of a file type. 

This type is used in \mbox{\hyperlink{group__Eina__File__Group_ga8e8779c9f28937a642dbe1be86760646}{Eina\+\_\+\+File\+\_\+\+Direct\+\_\+\+Info}}. \begin{DoxyEnumFields}{Enumerator}
\raisebox{\heightof{T}}[0pt][0pt]{\index{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+U\+N\+K\+N\+O\+WN@{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+U\+N\+K\+N\+O\+WN}!File@{File}}\index{File@{File}!E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+U\+N\+K\+N\+O\+WN@{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+U\+N\+K\+N\+O\+WN}}}\mbox{\Hypertarget{group__Eina__File__Group_gga0b7b2db79f9a05b07273fb3428d46cd8aa271a0f3cd77f21c405a7e2636c4b064}\label{group__Eina__File__Group_gga0b7b2db79f9a05b07273fb3428d46cd8aa271a0f3cd77f21c405a7e2636c4b064}} 
E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+U\+N\+K\+N\+O\+WN&Unknown file type. \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+F\+I\+FO@{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+F\+I\+FO}!File@{File}}\index{File@{File}!E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+F\+I\+FO@{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+F\+I\+FO}}}\mbox{\Hypertarget{group__Eina__File__Group_gga0b7b2db79f9a05b07273fb3428d46cd8aeffdbcaeae950a9c786736495c9e6ae6}\label{group__Eina__File__Group_gga0b7b2db79f9a05b07273fb3428d46cd8aeffdbcaeae950a9c786736495c9e6ae6}} 
E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+F\+I\+FO&Named pipe (F\+I\+FO) type (unused on Windows) \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+C\+HR@{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+C\+HR}!File@{File}}\index{File@{File}!E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+C\+HR@{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+C\+HR}}}\mbox{\Hypertarget{group__Eina__File__Group_gga0b7b2db79f9a05b07273fb3428d46cd8a3c0a5d44c060edb31c813aa04a025d2a}\label{group__Eina__File__Group_gga0b7b2db79f9a05b07273fb3428d46cd8a3c0a5d44c060edb31c813aa04a025d2a}} 
E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+C\+HR&Character device type (unused on Windows) \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+D\+IR@{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+D\+IR}!File@{File}}\index{File@{File}!E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+D\+IR@{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+D\+IR}}}\mbox{\Hypertarget{group__Eina__File__Group_gga0b7b2db79f9a05b07273fb3428d46cd8a0b8844f30974a2fa27af9ba78bcfaa53}\label{group__Eina__File__Group_gga0b7b2db79f9a05b07273fb3428d46cd8a0b8844f30974a2fa27af9ba78bcfaa53}} 
E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+D\+IR&Directory type. \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+B\+LK@{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+B\+LK}!File@{File}}\index{File@{File}!E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+B\+LK@{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+B\+LK}}}\mbox{\Hypertarget{group__Eina__File__Group_gga0b7b2db79f9a05b07273fb3428d46cd8a4e8e6ab5ad07461bf2e97981d0c6f745}\label{group__Eina__File__Group_gga0b7b2db79f9a05b07273fb3428d46cd8a4e8e6ab5ad07461bf2e97981d0c6f745}} 
E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+B\+LK&Block device type (unused on Windows) \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+R\+EG@{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+R\+EG}!File@{File}}\index{File@{File}!E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+R\+EG@{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+R\+EG}}}\mbox{\Hypertarget{group__Eina__File__Group_gga0b7b2db79f9a05b07273fb3428d46cd8ae5c8a949a0de3a8fc46dcf02a57df381}\label{group__Eina__File__Group_gga0b7b2db79f9a05b07273fb3428d46cd8ae5c8a949a0de3a8fc46dcf02a57df381}} 
E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+R\+EG&Regular file type. \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+L\+NK@{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+L\+NK}!File@{File}}\index{File@{File}!E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+L\+NK@{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+L\+NK}}}\mbox{\Hypertarget{group__Eina__File__Group_gga0b7b2db79f9a05b07273fb3428d46cd8abcfb23817258fffca146c9c43df45862}\label{group__Eina__File__Group_gga0b7b2db79f9a05b07273fb3428d46cd8abcfb23817258fffca146c9c43df45862}} 
E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+L\+NK&Symbolic link type. \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+S\+O\+CK@{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+S\+O\+CK}!File@{File}}\index{File@{File}!E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+S\+O\+CK@{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+S\+O\+CK}}}\mbox{\Hypertarget{group__Eina__File__Group_gga0b7b2db79f9a05b07273fb3428d46cd8a7b2507d72b963615be2bef550d98c188}\label{group__Eina__File__Group_gga0b7b2db79f9a05b07273fb3428d46cd8a7b2507d72b963615be2bef550d98c188}} 
E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+S\+O\+CK&U\+N\+IX domain socket type (unused on Windows) \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+W\+HT@{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+W\+HT}!File@{File}}\index{File@{File}!E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+W\+HT@{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+W\+HT}}}\mbox{\Hypertarget{group__Eina__File__Group_gga0b7b2db79f9a05b07273fb3428d46cd8af0980697fe8cbfc60a19f1f22b39634f}\label{group__Eina__File__Group_gga0b7b2db79f9a05b07273fb3428d46cd8af0980697fe8cbfc60a19f1f22b39634f}} 
E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+W\+HT&Whiteout file type (unused on Windows) \\
\hline

\end{DoxyEnumFields}
\mbox{\Hypertarget{group__Eina__File__Group_ga2788825dfdd797282112148f2f65ec7a}\label{group__Eina__File__Group_ga2788825dfdd797282112148f2f65ec7a}} 
\index{File@{File}!Eina\+\_\+\+File\+\_\+\+Populate@{Eina\+\_\+\+File\+\_\+\+Populate}}
\index{Eina\+\_\+\+File\+\_\+\+Populate@{Eina\+\_\+\+File\+\_\+\+Populate}!File@{File}}
\subsubsection{\texorpdfstring{Eina\+\_\+\+File\+\_\+\+Populate}{Eina\_File\_Populate}}
{\footnotesize\ttfamily enum \mbox{\hyperlink{group__Eina__File__Group_ga2788825dfdd797282112148f2f65ec7a}{Eina\+\_\+\+File\+\_\+\+Populate}}}



Type for enumeration of a file access type. 

This type is used in \mbox{\hyperlink{group__Eina__File__Group_ga8e8779c9f28937a642dbe1be86760646}{Eina\+\_\+\+File\+\_\+\+Direct\+\_\+\+Info}}. \begin{DoxyEnumFields}{Enumerator}
\raisebox{\heightof{T}}[0pt][0pt]{\index{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+R\+A\+N\+D\+OM@{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+R\+A\+N\+D\+OM}!File@{File}}\index{File@{File}!E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+R\+A\+N\+D\+OM@{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+R\+A\+N\+D\+OM}}}\mbox{\Hypertarget{group__Eina__File__Group_gga2788825dfdd797282112148f2f65ec7aae9b963a3ffd3a5f885c86db4673eabd3}\label{group__Eina__File__Group_gga2788825dfdd797282112148f2f65ec7aae9b963a3ffd3a5f885c86db4673eabd3}} 
E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+R\+A\+N\+D\+OM&Advise random memory access to the mapped memory. \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+S\+E\+Q\+U\+E\+N\+T\+I\+AL@{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+S\+E\+Q\+U\+E\+N\+T\+I\+AL}!File@{File}}\index{File@{File}!E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+S\+E\+Q\+U\+E\+N\+T\+I\+AL@{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+S\+E\+Q\+U\+E\+N\+T\+I\+AL}}}\mbox{\Hypertarget{group__Eina__File__Group_gga2788825dfdd797282112148f2f65ec7aabb92031c2d448a1659117121866229b2}\label{group__Eina__File__Group_gga2788825dfdd797282112148f2f65ec7aabb92031c2d448a1659117121866229b2}} 
E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+S\+E\+Q\+U\+E\+N\+T\+I\+AL&Advise sequential memory access to the mapped memory. \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+W\+I\+L\+L\+N\+E\+ED@{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+W\+I\+L\+L\+N\+E\+ED}!File@{File}}\index{File@{File}!E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+W\+I\+L\+L\+N\+E\+ED@{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+W\+I\+L\+L\+N\+E\+ED}}}\mbox{\Hypertarget{group__Eina__File__Group_gga2788825dfdd797282112148f2f65ec7aab049b3550f67cdd35ea15d5839800186}\label{group__Eina__File__Group_gga2788825dfdd797282112148f2f65ec7aab049b3550f67cdd35ea15d5839800186}} 
E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+W\+I\+L\+L\+N\+E\+ED&Advise need for all the mapped memory. \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+P\+O\+P\+U\+L\+A\+TE@{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+P\+O\+P\+U\+L\+A\+TE}!File@{File}}\index{File@{File}!E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+P\+O\+P\+U\+L\+A\+TE@{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+P\+O\+P\+U\+L\+A\+TE}}}\mbox{\Hypertarget{group__Eina__File__Group_gga2788825dfdd797282112148f2f65ec7aa6c05201c80772a294c16800d7ca46a1d}\label{group__Eina__File__Group_gga2788825dfdd797282112148f2f65ec7aa6c05201c80772a294c16800d7ca46a1d}} 
E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+P\+O\+P\+U\+L\+A\+TE&Request for all the mapped memory. \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+D\+O\+N\+T\+N\+E\+ED@{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+D\+O\+N\+T\+N\+E\+ED}!File@{File}}\index{File@{File}!E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+D\+O\+N\+T\+N\+E\+ED@{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+D\+O\+N\+T\+N\+E\+ED}}}\mbox{\Hypertarget{group__Eina__File__Group_gga2788825dfdd797282112148f2f65ec7aabcd9246f7fbbbd2df5eeec7f3913558c}\label{group__Eina__File__Group_gga2788825dfdd797282112148f2f65ec7aabcd9246f7fbbbd2df5eeec7f3913558c}} 
E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+D\+O\+N\+T\+N\+E\+ED&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}
\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+R\+E\+M\+O\+VE@{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+R\+E\+M\+O\+VE}!File@{File}}\index{File@{File}!E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+R\+E\+M\+O\+VE@{E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+R\+E\+M\+O\+VE}}}\mbox{\Hypertarget{group__Eina__File__Group_gga2788825dfdd797282112148f2f65ec7aa4786137330071feac6aafa0dcfc56519}\label{group__Eina__File__Group_gga2788825dfdd797282112148f2f65ec7aa4786137330071feac6aafa0dcfc56519}} 
E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+R\+E\+M\+O\+VE&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}
\\
\hline

\end{DoxyEnumFields}


\subsection{Function Documentation}
\mbox{\Hypertarget{group__Eina__File__Group_ga186dc8dd1a166a8972189f78bbee15ea}\label{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{\texorpdfstring{eina\+\_\+file\+\_\+dir\+\_\+list()}{eina\_file\_dir\_list()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+PI}} \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} eina\+\_\+file\+\_\+dir\+\_\+list (\begin{DoxyParamCaption}\item[{const char $\ast$}]{dir,  }\item[{\mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}}}]{recursive,  }\item[{\mbox{\hyperlink{group__Eina__File__Group_ga074e73b17381346ada766213d3bb5432}{Eina\+\_\+\+File\+\_\+\+Dir\+\_\+\+List\+\_\+\+Cb}}}]{cb,  }\item[{void $\ast$}]{data }\end{DoxyParamCaption})}



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

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 \mbox{\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{E\+I\+N\+A\+\_\+\+T\+R\+UE}}. In other words, if {\ttfamily recursive} is \mbox{\hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{E\+I\+N\+A\+\_\+\+F\+A\+L\+SE}}, only direct children of {\ttfamily dir} are operated on, if {\ttfamily recursive} is \mbox{\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{E\+I\+N\+A\+\_\+\+T\+R\+UE}} the entire tree of files that is below {\ttfamily dir} is operated on.

If {\ttfamily cb} or {\ttfamily dir} is {\ttfamily N\+U\+LL} or if {\ttfamily dir} is a string of size 0, or if {\ttfamily dir} cannot be opened, this function returns \mbox{\hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{E\+I\+N\+A\+\_\+\+F\+A\+L\+SE}} immediately. Otherwise, it returns \mbox{\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{E\+I\+N\+A\+\_\+\+T\+R\+UE}}.


\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}
\mbox{\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{E\+I\+N\+A\+\_\+\+T\+R\+UE}} on success, otherwise \mbox{\hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{E\+I\+N\+A\+\_\+\+F\+A\+L\+SE}} 
\end{DoxyReturn}
\begin{Desc}
\item[Examples\+: ]\par
\mbox{\hyperlink{eina_file_01_8c-example}{eina\+\_\+file\+\_\+01.\+c}}.\end{Desc}
\mbox{\Hypertarget{group__Eina__File__Group_ga8f157fabca35a981c0e253fdb3130385}\label{group__Eina__File__Group_ga8f157fabca35a981c0e253fdb3130385}} 
\index{File@{File}!eina\+\_\+file\+\_\+split@{eina\+\_\+file\+\_\+split}}
\index{eina\+\_\+file\+\_\+split@{eina\+\_\+file\+\_\+split}!File@{File}}
\subsubsection{\texorpdfstring{eina\+\_\+file\+\_\+split()}{eina\_file\_split()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+PI}} \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} \mbox{\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+PI}} \mbox{\hyperlink{group__Eina__Array__Group_ga2a57284ee83a7e767485b7ae2f5df86c}{Eina\+\_\+\+Array}}$\ast$ eina\+\_\+file\+\_\+split (\begin{DoxyParamCaption}\item[{char $\ast$}]{path }\end{DoxyParamCaption})}



Splits a path according to the delimiter of the filesystem. 

This function splits {\ttfamily path} according to the delimiter of the used filesystem. If {\ttfamily path} is {\ttfamily N\+U\+LL} or if the array cannot be created, {\ttfamily N\+U\+LL} is returned, otherwise an array with each part of {\ttfamily path} is returned.


\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}
\mbox{\Hypertarget{group__Eina__File__Group_ga8c4fabb379b865a4ec134a5c4436be2a}\label{group__Eina__File__Group_ga8c4fabb379b865a4ec134a5c4436be2a}} 
\index{File@{File}!eina\+\_\+file\+\_\+ls@{eina\+\_\+file\+\_\+ls}}
\index{eina\+\_\+file\+\_\+ls@{eina\+\_\+file\+\_\+ls}!File@{File}}
\subsubsection{\texorpdfstring{eina\+\_\+file\+\_\+ls()}{eina\_file\_ls()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+PI}} \mbox{\hyperlink{group__Eina__Iterator__Group_ga15b975bb881d955249ce13d4ebc96948}{Eina\+\_\+\+Iterator}}$\ast$ eina\+\_\+file\+\_\+ls (\begin{DoxyParamCaption}\item[{const char $\ast$}]{dir }\end{DoxyParamCaption})}



Gets an iterator to list the content of a directory. 

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{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em dir} & The name of the directory to list \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
An \mbox{\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\+LL}.
\end{DoxyReturn}
\begin{DoxyNote}{Note}
The iterator hands the user a stringshared value with the full path. The user must free the string using \mbox{\hyperlink{group__Eina__Stringshare__Group_ga495411b0bc85b9c0d59ec7255a025260}{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}
\mbox{\hyperlink{group__Eina__File__Group_ga90d5372f6c6ef085760e26cb8c4993c8}{eina\+\_\+file\+\_\+direct\+\_\+ls()}} 
\end{DoxySeeAlso}
\mbox{\Hypertarget{group__Eina__File__Group_ga21d5e94767ae9932751649ce09a2f98f}\label{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{\texorpdfstring{eina\+\_\+file\+\_\+stat\+\_\+ls()}{eina\_file\_stat\_ls()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+PI}} \mbox{\hyperlink{group__Eina__Iterator__Group_ga15b975bb881d955249ce13d4ebc96948}{Eina\+\_\+\+Iterator}}$\ast$ eina\+\_\+file\+\_\+stat\+\_\+ls (\begin{DoxyParamCaption}\item[{const char $\ast$}]{dir }\end{DoxyParamCaption})}



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

This returns an iterator for \mbox{\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{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em dir} & The name of the directory to list\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
An \mbox{\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\+LL}.
\end{DoxyReturn}
\begin{DoxyWarning}{Warning}
The \mbox{\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 \mbox{\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 \mbox{\hyperlink{group__Eina__File__Group_ga90d5372f6c6ef085760e26cb8c4993c8}{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}
\mbox{\hyperlink{group__Eina__File__Group_ga90d5372f6c6ef085760e26cb8c4993c8}{eina\+\_\+file\+\_\+direct\+\_\+ls()}} 
\end{DoxySeeAlso}


References eina\+\_\+file\+\_\+direct\+\_\+ls().

\mbox{\Hypertarget{group__Eina__File__Group_ga48cc0e04ab40c51160cda615c871e1f0}\label{group__Eina__File__Group_ga48cc0e04ab40c51160cda615c871e1f0}} 
\index{File@{File}!eina\+\_\+file\+\_\+statat@{eina\+\_\+file\+\_\+statat}}
\index{eina\+\_\+file\+\_\+statat@{eina\+\_\+file\+\_\+statat}!File@{File}}
\subsubsection{\texorpdfstring{eina\+\_\+file\+\_\+statat()}{eina\_file\_statat()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+PI}} int eina\+\_\+file\+\_\+statat (\begin{DoxyParamCaption}\item[{void $\ast$}]{container,  }\item[{\mbox{\hyperlink{group__Eina__File__Group_ga8e8779c9f28937a642dbe1be86760646}{Eina\+\_\+\+File\+\_\+\+Direct\+\_\+\+Info}} $\ast$}]{info,  }\item[{\mbox{\hyperlink{group__Eina__File__Group_gab15fe1278f044850fcb24417a47364a8}{Eina\+\_\+\+Stat}} $\ast$}]{buf }\end{DoxyParamCaption})}



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

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{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em container} & The container returned by \mbox{\hyperlink{group__Eina__Iterator__Group_ga15b975bb881d955249ce13d4ebc96948}{Eina\+\_\+\+Iterator}} using \mbox{\hyperlink{group__Eina__Iterator__Group_ga5583ab703b156f74f0c2a74875c95cc2}{eina\+\_\+iterator\+\_\+container\+\_\+get()}} \\
\hline
\mbox{\tt in}  & {\em info} & The content of the current \mbox{\hyperlink{group__Eina__File__Group_ga8e8779c9f28937a642dbe1be86760646}{Eina\+\_\+\+File\+\_\+\+Direct\+\_\+\+Info}} provided by \mbox{\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 returned on success, otherwise {\ttfamily -\/1} is returned on error and errno is set appropriately
\end{DoxyReturn}
\begin{DoxySeeAlso}{See also}
\mbox{\hyperlink{group__Eina__File__Group_ga90d5372f6c6ef085760e26cb8c4993c8}{eina\+\_\+file\+\_\+direct\+\_\+ls()}} 

\mbox{\hyperlink{group__Eina__File__Group_ga21d5e94767ae9932751649ce09a2f98f}{eina\+\_\+file\+\_\+stat\+\_\+ls()}}
\end{DoxySeeAlso}
\begin{DoxySince}{Since}
1.\+2 
\end{DoxySince}
\mbox{\Hypertarget{group__Eina__File__Group_ga14fdad8401539305edf575b36d967030}\label{group__Eina__File__Group_ga14fdad8401539305edf575b36d967030}} 
\index{File@{File}!eina\+\_\+file\+\_\+mkstemp@{eina\+\_\+file\+\_\+mkstemp}}
\index{eina\+\_\+file\+\_\+mkstemp@{eina\+\_\+file\+\_\+mkstemp}!File@{File}}
\subsubsection{\texorpdfstring{eina\+\_\+file\+\_\+mkstemp()}{eina\_file\_mkstemp()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+PI}} int \mbox{\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+PI}} int eina\+\_\+file\+\_\+mkstemp (\begin{DoxyParamCaption}\item[{const char $\ast$}]{templatename,  }\item[{\mbox{\hyperlink{group__Eina__Stringshare__Group_gae8d53f367d5da5acfd19af6c235831d5}{Eina\+\_\+\+Tmpstr}} $\ast$$\ast$}]{path }\end{DoxyParamCaption})}



Generates and creates a uniquely named temporary file from a template name. 

The generated file is opened with the open(2) {\ttfamily O\+\_\+\+E\+X\+CL} flag.

This function calls \mbox{\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{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em templatename} & This is a string. It must contain the six characters \textquotesingle{}X\+X\+X\+X\+XX\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} & The path to the created temporary file, or {\ttfamily N\+U\+LL} in case of failure. It must be released by \mbox{\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}
\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).

If the {\ttfamily templatename} is a simple file name (no relative or absolute path to another directory), then a temporary file will be created inside the system temporary directory (
\end{DoxyNote}
\begin{DoxySeeAlso}{See also}
\mbox{\hyperlink{group__Eina__Tools__Group_ga6f462dce106714a3ba29f63deea61be2}{eina\+\_\+environment\+\_\+tmp\+\_\+get()}}). If the {\ttfamily templatename} contains a directory separator (\textquotesingle{}/\textquotesingle{}, or \textquotesingle{}\textbackslash{}\textquotesingle{} on Windows) then the file will be created inside this directory, which must exist and be writeable. Use ./filename.X\+X\+X\+X\+XX to create files in the current working directory. (since 1.\+17)

\mbox{\hyperlink{group__Eina__File__Group_gac79707316c9eb4abf2306815b7ace67f}{eina\+\_\+file\+\_\+mkdtemp()}} 
\end{DoxySeeAlso}
\begin{DoxySince}{Since}
1.\+8 
\end{DoxySince}
\mbox{\Hypertarget{group__Eina__File__Group_gac79707316c9eb4abf2306815b7ace67f}\label{group__Eina__File__Group_gac79707316c9eb4abf2306815b7ace67f}} 
\index{File@{File}!eina\+\_\+file\+\_\+mkdtemp@{eina\+\_\+file\+\_\+mkdtemp}}
\index{eina\+\_\+file\+\_\+mkdtemp@{eina\+\_\+file\+\_\+mkdtemp}!File@{File}}
\subsubsection{\texorpdfstring{eina\+\_\+file\+\_\+mkdtemp()}{eina\_file\_mkdtemp()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+PI}} \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} eina\+\_\+file\+\_\+mkdtemp (\begin{DoxyParamCaption}\item[{const char $\ast$}]{templatename,  }\item[{\mbox{\hyperlink{group__Eina__Stringshare__Group_gae8d53f367d5da5acfd19af6c235831d5}{Eina\+\_\+\+Tmpstr}} $\ast$$\ast$}]{path }\end{DoxyParamCaption})}



Generates and creates a uniquely named temporary directory from a template name. 

This function calls \mbox{\hyperlink{group__Evil__Stdlib__Group_ga1251526bfc32a1b8a5263bfa352254e2}{mkdtemp()}}. The directory is then created with permissions 0700.


\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\+XX. \\
\hline
\mbox{\tt out}  & {\em path} & The path to the created temporary directory, or {\ttfamily N\+U\+LL} in case of failure. It must be released by \mbox{\hyperlink{group__Eina__Stringshare__Group_gaa84ec3cc6c63bc67355aa3cbaa26189f}{eina\+\_\+tmpstr\+\_\+del()}}. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
On success {\ttfamily E\+I\+N\+A\+\_\+\+T\+R\+UE} is returned, On error {\ttfamily E\+I\+N\+A\+\_\+\+F\+A\+L\+SE} is returned, in which case {\ttfamily errno} is set appropriately.
\end{DoxyReturn}
\begin{DoxyNote}{Note}
If the {\ttfamily templatename} is a simple directory name (no relative or absolute path to another directory), then a temporary directory will be created inside the system temporary directory (
\end{DoxyNote}
\begin{DoxySeeAlso}{See also}
\mbox{\hyperlink{group__Eina__Tools__Group_ga6f462dce106714a3ba29f63deea61be2}{eina\+\_\+environment\+\_\+tmp\+\_\+get()}}). If the {\ttfamily templatename} contains a directory separator (\textquotesingle{}/\textquotesingle{}, or \textquotesingle{}\textbackslash{}\textquotesingle{} on Windows) then the temporary directory will be created inside that other directory, which must exist and be writeable. (since 1.\+17)

\mbox{\hyperlink{group__Eina__File__Group_ga14fdad8401539305edf575b36d967030}{eina\+\_\+file\+\_\+mkstemp()}} 
\end{DoxySeeAlso}
\begin{DoxySince}{Since}
1.\+8 
\end{DoxySince}
\mbox{\Hypertarget{group__Eina__File__Group_ga90d5372f6c6ef085760e26cb8c4993c8}\label{group__Eina__File__Group_ga90d5372f6c6ef085760e26cb8c4993c8}} 
\index{File@{File}!eina\+\_\+file\+\_\+direct\+\_\+ls@{eina\+\_\+file\+\_\+direct\+\_\+ls}}
\index{eina\+\_\+file\+\_\+direct\+\_\+ls@{eina\+\_\+file\+\_\+direct\+\_\+ls}!File@{File}}
\subsubsection{\texorpdfstring{eina\+\_\+file\+\_\+direct\+\_\+ls()}{eina\_file\_direct\_ls()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+PI}} \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} \mbox{\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+PI}} \mbox{\hyperlink{group__Eina__Iterator__Group_ga15b975bb881d955249ce13d4ebc96948}{Eina\+\_\+\+Iterator}}$\ast$ eina\+\_\+file\+\_\+direct\+\_\+ls (\begin{DoxyParamCaption}\item[{const char $\ast$}]{dir }\end{DoxyParamCaption})}



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

This returns an iterator for \mbox{\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{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\+LL}.
\end{DoxyReturn}
\begin{DoxyWarning}{Warning}
If readdir\+\_\+r doesn\textquotesingle{}t contain file type information, file type is E\+I\+N\+A\+\_\+\+F\+I\+L\+E\+\_\+\+U\+N\+K\+N\+O\+WN. 

The \mbox{\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 \mbox{\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 \mbox{\hyperlink{group__Eina__File__Group_ga21d5e94767ae9932751649ce09a2f98f}{eina\+\_\+file\+\_\+stat\+\_\+ls()}} is that it may not get the file type information however it is likely to be faster.
\end{DoxyNote}
\begin{DoxySeeAlso}{See also}
\mbox{\hyperlink{group__Eina__File__Group_ga8c4fabb379b865a4ec134a5c4436be2a}{eina\+\_\+file\+\_\+ls()}} 
\end{DoxySeeAlso}


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

\mbox{\Hypertarget{group__Eina__File__Group_ga7596f37d3a8a548f7223c29c55111c83}\label{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{\texorpdfstring{eina\+\_\+file\+\_\+path\+\_\+sanitize()}{eina\_file\_path\_sanitize()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+PI}} char$\ast$ eina\+\_\+file\+\_\+path\+\_\+sanitize (\begin{DoxyParamCaption}\item[{const char $\ast$}]{path }\end{DoxyParamCaption})}



Sanitizes the file path. 

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{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}
\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\+\_\+icon\+\_\+deprecated\+\_\+user\+\_\+dir\+\_\+get(), and efreet\+\_\+icon\+\_\+user\+\_\+dir\+\_\+get().

\mbox{\Hypertarget{group__Eina__File__Group_ga90159e5c99bfaa036ca9f695f713ffa7}\label{group__Eina__File__Group_ga90159e5c99bfaa036ca9f695f713ffa7}} 
\index{File@{File}!eina\+\_\+file\+\_\+copy@{eina\+\_\+file\+\_\+copy}}
\index{eina\+\_\+file\+\_\+copy@{eina\+\_\+file\+\_\+copy}!File@{File}}
\subsubsection{\texorpdfstring{eina\+\_\+file\+\_\+copy()}{eina\_file\_copy()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+PI}} \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} eina\+\_\+file\+\_\+copy (\begin{DoxyParamCaption}\item[{const char $\ast$}]{src,  }\item[{const char $\ast$}]{dst,  }\item[{\mbox{\hyperlink{group__Eina__File__Group_ga64acf75a3d09f9ef5ad04173a628cc32}{Eina\+\_\+\+File\+\_\+\+Copy\+\_\+\+Flags}}}]{flags,  }\item[{\mbox{\hyperlink{group__Eina__File__Group_gaa08a39ec2e9abfa703d15822a074f521}{Eina\+\_\+\+File\+\_\+\+Copy\+\_\+\+Progress}}}]{cb,  }\item[{const void $\ast$}]{cb\+\_\+data }\end{DoxyParamCaption})}



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

This function tries to splice if it is available. It is blocked until the whole file is copied or it fails.


\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}
\mbox{\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{E\+I\+N\+A\+\_\+\+T\+R\+UE}} on success, \mbox{\hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{E\+I\+N\+A\+\_\+\+F\+A\+L\+SE}} otherwise (and {\ttfamily dst} will be deleted)
\end{DoxyReturn}
\begin{DoxyNote}{Note}
During the progress it may call back {\ttfamily cb} with the progress summary. 
\end{DoxyNote}
\mbox{\Hypertarget{group__Eina__File__Group_ga787592b7325fe0174c324d6a4dbd86da}\label{group__Eina__File__Group_ga787592b7325fe0174c324d6a4dbd86da}} 
\index{File@{File}!eina\+\_\+file\+\_\+open@{eina\+\_\+file\+\_\+open}}
\index{eina\+\_\+file\+\_\+open@{eina\+\_\+file\+\_\+open}!File@{File}}
\subsubsection{\texorpdfstring{eina\+\_\+file\+\_\+open()}{eina\_file\_open()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+PI}} \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} \mbox{\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+PI}} \mbox{\hyperlink{group__Eina__File__Group_ga20697123547cbc937c6c9dd845af0403}{Eina\+\_\+\+File}}$\ast$ eina\+\_\+file\+\_\+open (\begin{DoxyParamCaption}\item[{const char $\ast$}]{name,  }\item[{\mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}}}]{shared }\end{DoxyParamCaption})}



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

This opens a file in the read-\/only mode. {\ttfamily name} should be an absolute path. An \mbox{\hyperlink{group__Eina__File__Group_ga20697123547cbc937c6c9dd845af0403}{Eina\+\_\+\+File}} handle can be shared among multiple instances if {\ttfamily shared} is \mbox{\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{E\+I\+N\+A\+\_\+\+T\+R\+UE}}, otherwise.


\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 \mbox{\hyperlink{group__Eina__File__Group_ga20697123547cbc937c6c9dd845af0403}{Eina\+\_\+\+File}} handle to the file
\end{DoxyReturn}
\begin{DoxySince}{Since}
1.\+1 
\end{DoxySince}


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

\mbox{\Hypertarget{group__Eina__File__Group_ga928baf177014f57317e89aab09e2ecaf}\label{group__Eina__File__Group_ga928baf177014f57317e89aab09e2ecaf}} 
\index{File@{File}!eina\+\_\+file\+\_\+virtualize@{eina\+\_\+file\+\_\+virtualize}}
\index{eina\+\_\+file\+\_\+virtualize@{eina\+\_\+file\+\_\+virtualize}!File@{File}}
\subsubsection{\texorpdfstring{eina\+\_\+file\+\_\+virtualize()}{eina\_file\_virtualize()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+PI}} \mbox{\hyperlink{group__Eina__File__Group_ga20697123547cbc937c6c9dd845af0403}{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[{\mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}}}]{copy }\end{DoxyParamCaption})}



Creates 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\+LL}, 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} & \mbox{\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{E\+I\+N\+A\+\_\+\+T\+R\+UE}} if the data must be copied \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
\mbox{\hyperlink{group__Eina__File__Group_ga20697123547cbc937c6c9dd845af0403}{Eina\+\_\+\+File}} handle to the file
\end{DoxyReturn}
\begin{DoxySince}{Since}
1.\+8 
\end{DoxySince}


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

\mbox{\Hypertarget{group__Eina__File__Group_ga4b15c2ec6fcd45ce8ecd1f9a5c8aa4ee}\label{group__Eina__File__Group_ga4b15c2ec6fcd45ce8ecd1f9a5c8aa4ee}} 
\index{File@{File}!eina\+\_\+file\+\_\+virtual@{eina\+\_\+file\+\_\+virtual}}
\index{eina\+\_\+file\+\_\+virtual@{eina\+\_\+file\+\_\+virtual}!File@{File}}
\subsubsection{\texorpdfstring{eina\+\_\+file\+\_\+virtual()}{eina\_file\_virtual()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+PI}} \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} eina\+\_\+file\+\_\+virtual (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{group__Eina__File__Group_ga20697123547cbc937c6c9dd845af0403}{Eina\+\_\+\+File}} $\ast$}]{file }\end{DoxyParamCaption})}



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


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


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

\mbox{\Hypertarget{group__Eina__File__Group_gac118af0ab5f22ec27954057223cb1ec1}\label{group__Eina__File__Group_gac118af0ab5f22ec27954057223cb1ec1}} 
\index{File@{File}!eina\+\_\+file\+\_\+refresh@{eina\+\_\+file\+\_\+refresh}}
\index{eina\+\_\+file\+\_\+refresh@{eina\+\_\+file\+\_\+refresh}!File@{File}}
\subsubsection{\texorpdfstring{eina\+\_\+file\+\_\+refresh()}{eina\_file\_refresh()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+PI}} \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} eina\+\_\+file\+\_\+refresh (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{group__Eina__File__Group_ga20697123547cbc937c6c9dd845af0403}{Eina\+\_\+\+File}} $\ast$}]{file }\end{DoxyParamCaption})}



Refreshes file information. 

All current map continue to exist. You need to manually delete and recreate them to have the new correct mapping.


\begin{DoxyParams}{Parameters}
{\em file} & The file to refresh \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
\mbox{\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{E\+I\+N\+A\+\_\+\+T\+R\+UE}} if the file has changed
\end{DoxyReturn}
\begin{DoxySince}{Since}
1.\+8 
\end{DoxySince}


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

\mbox{\Hypertarget{group__Eina__File__Group_ga88bb67c6691a7f134f0414fd3c1df680}\label{group__Eina__File__Group_ga88bb67c6691a7f134f0414fd3c1df680}} 
\index{File@{File}!eina\+\_\+file\+\_\+dup@{eina\+\_\+file\+\_\+dup}}
\index{eina\+\_\+file\+\_\+dup@{eina\+\_\+file\+\_\+dup}!File@{File}}
\subsubsection{\texorpdfstring{eina\+\_\+file\+\_\+dup()}{eina\_file\_dup()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+PI}} \mbox{\hyperlink{group__Eina__File__Group_ga20697123547cbc937c6c9dd845af0403}{Eina\+\_\+\+File}}$\ast$ eina\+\_\+file\+\_\+dup (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{group__Eina__File__Group_ga20697123547cbc937c6c9dd845af0403}{Eina\+\_\+\+File}} $\ast$}]{file }\end{DoxyParamCaption})}



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}
\mbox{\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\+\_\+file\+\_\+virtualize(), eina\+\_\+lock\+\_\+release(), eina\+\_\+lock\+\_\+take(), E\+I\+N\+A\+\_\+\+T\+R\+UE, \+\_\+\+Eina\+\_\+\+File\+::filename, \+\_\+\+Eina\+\_\+\+File\+::global\+\_\+map, \+\_\+\+Eina\+\_\+\+File\+::length, \+\_\+\+Eina\+\_\+\+File\+::lock, and \+\_\+\+Eina\+\_\+\+File\+::refcount.



Referenced by eet\+\_\+mmap(), elm\+\_\+theme\+\_\+extension\+\_\+mmap\+\_\+add(), and elm\+\_\+theme\+\_\+overlay\+\_\+mmap\+\_\+add().

\mbox{\Hypertarget{group__Eina__File__Group_ga715ced39d0806964baab10fe30e7bd37}\label{group__Eina__File__Group_ga715ced39d0806964baab10fe30e7bd37}} 
\index{File@{File}!eina\+\_\+file\+\_\+close@{eina\+\_\+file\+\_\+close}}
\index{eina\+\_\+file\+\_\+close@{eina\+\_\+file\+\_\+close}!File@{File}}
\subsubsection{\texorpdfstring{eina\+\_\+file\+\_\+close()}{eina\_file\_close()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+PI}} void eina\+\_\+file\+\_\+close (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{group__Eina__File__Group_ga20697123547cbc937c6c9dd845af0403}{Eina\+\_\+\+File}} $\ast$}]{file }\end{DoxyParamCaption})}



Unrefs the file handler. 

This decrements the file\textquotesingle{}s reference count and if it reaches zero it closes the file.


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


References \+\_\+eina\+\_\+file\+\_\+cache, \+\_\+eina\+\_\+file\+\_\+lock\+\_\+cache, E\+I\+N\+A\+\_\+\+F\+A\+L\+SE, eina\+\_\+file\+\_\+clean\+\_\+close(), eina\+\_\+hash\+\_\+del\+\_\+by\+\_\+key\+\_\+hash(), eina\+\_\+hash\+\_\+find\+\_\+by\+\_\+hash(), eina\+\_\+hash\+\_\+superfast(), eina\+\_\+lock\+\_\+release(), eina\+\_\+lock\+\_\+take(), E\+I\+N\+A\+\_\+\+T\+R\+UE, \+\_\+\+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(), elm\+\_\+theme\+\_\+flush(), elua\+\_\+io\+\_\+loadfile(), and emile\+\_\+image\+\_\+close().

\mbox{\Hypertarget{group__Eina__File__Group_ga4970b74fb3b9fe5a8e53bccbb3283711}\label{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{\texorpdfstring{eina\+\_\+file\+\_\+size\+\_\+get()}{eina\_file\_size\_get()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+PI}} size\+\_\+t eina\+\_\+file\+\_\+size\+\_\+get (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{group__Eina__File__Group_ga20697123547cbc937c6c9dd845af0403}{Eina\+\_\+\+File}} $\ast$}]{file }\end{DoxyParamCaption})}



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(), and elua\+\_\+io\+\_\+loadfile().

\mbox{\Hypertarget{group__Eina__File__Group_ga24f150a021d8be9d9b99cb1a0d7d8fcd}\label{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{\texorpdfstring{eina\+\_\+file\+\_\+mtime\+\_\+get()}{eina\_file\_mtime\_get()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+PI}} time\+\_\+t eina\+\_\+file\+\_\+mtime\+\_\+get (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{group__Eina__File__Group_ga20697123547cbc937c6c9dd845af0403}{Eina\+\_\+\+File}} $\ast$}]{file }\end{DoxyParamCaption})}



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.

\mbox{\Hypertarget{group__Eina__File__Group_ga1a53f3fdef3aa6fb265effe86c2f7a92}\label{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{\texorpdfstring{eina\+\_\+file\+\_\+filename\+\_\+get()}{eina\_file\_filename\_get()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+PI}} const char$\ast$ eina\+\_\+file\+\_\+filename\+\_\+get (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{group__Eina__File__Group_ga20697123547cbc937c6c9dd845af0403}{Eina\+\_\+\+File}} $\ast$}]{file }\end{DoxyParamCaption})}



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(), eet\+\_\+mmap(), elm\+\_\+theme\+\_\+extension\+\_\+mmap\+\_\+add(), and elm\+\_\+theme\+\_\+overlay\+\_\+mmap\+\_\+add().

\mbox{\Hypertarget{group__Eina__File__Group_gac352732de27c1d327dfc997b807e8704}\label{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{\texorpdfstring{eina\+\_\+file\+\_\+xattr\+\_\+get()}{eina\_file\_xattr\_get()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+PI}} \mbox{\hyperlink{group__Eina__Iterator__Group_ga15b975bb881d955249ce13d4ebc96948}{Eina\+\_\+\+Iterator}}$\ast$ eina\+\_\+file\+\_\+xattr\+\_\+get (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{group__Eina__File__Group_ga20697123547cbc937c6c9dd845af0403}{Eina\+\_\+\+File}} $\ast$}]{file }\end{DoxyParamCaption})}



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}
\mbox{\Hypertarget{group__Eina__File__Group_ga734fe96e84273f8d649e3795c0dfd5d1}\label{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{\texorpdfstring{eina\+\_\+file\+\_\+xattr\+\_\+value\+\_\+get()}{eina\_file\_xattr\_value\_get()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+PI}} \mbox{\hyperlink{group__Eina__Iterator__Group_ga15b975bb881d955249ce13d4ebc96948}{Eina\+\_\+\+Iterator}}$\ast$ eina\+\_\+file\+\_\+xattr\+\_\+value\+\_\+get (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{group__Eina__File__Group_ga20697123547cbc937c6c9dd845af0403}{Eina\+\_\+\+File}} $\ast$}]{file }\end{DoxyParamCaption})}



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}
\mbox{\Hypertarget{group__Eina__File__Group_ga880f977c352766672d54991421835e7d}\label{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{\texorpdfstring{eina\+\_\+file\+\_\+map\+\_\+all()}{eina\_file\_map\_all()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+PI}} void$\ast$ eina\+\_\+file\+\_\+map\+\_\+all (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{group__Eina__File__Group_ga20697123547cbc937c6c9dd845af0403}{Eina\+\_\+\+File}} $\ast$}]{file,  }\item[{\mbox{\hyperlink{group__Eina__File__Group_ga2788825dfdd797282112148f2f65ec7a}{Eina\+\_\+\+File\+\_\+\+Populate}}}]{rule }\end{DoxyParamCaption})}



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\+LL} if it fails
\end{DoxyReturn}
\begin{DoxySince}{Since}
1.\+1 
\end{DoxySince}


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

\mbox{\Hypertarget{group__Eina__File__Group_ga8a9f5b50c7a12340421da059501660be}\label{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{\texorpdfstring{eina\+\_\+file\+\_\+map\+\_\+new()}{eina\_file\_map\_new()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+PI}} void$\ast$ eina\+\_\+file\+\_\+map\+\_\+new (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{group__Eina__File__Group_ga20697123547cbc937c6c9dd845af0403}{Eina\+\_\+\+File}} $\ast$}]{file,  }\item[{\mbox{\hyperlink{group__Eina__File__Group_ga2788825dfdd797282112148f2f65ec7a}{Eina\+\_\+\+File\+\_\+\+Populate}}}]{rule,  }\item[{unsigned long int}]{offset,  }\item[{unsigned long int}]{length }\end{DoxyParamCaption})}



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\+LL} 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}
\mbox{\Hypertarget{group__Eina__File__Group_ga60541f5c98e55f38d792d9f92d2d544f}\label{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{\texorpdfstring{eina\+\_\+file\+\_\+map\+\_\+free()}{eina\_file\_map\_free()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+PI}} void eina\+\_\+file\+\_\+map\+\_\+free (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{group__Eina__File__Group_ga20697123547cbc937c6c9dd845af0403}{Eina\+\_\+\+File}} $\ast$}]{file,  }\item[{void $\ast$}]{map }\end{DoxyParamCaption})}



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}


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

\mbox{\Hypertarget{group__Eina__File__Group_ga61d232dbd4b05d5134ea93ef00884550}\label{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{\texorpdfstring{eina\+\_\+file\+\_\+map\+\_\+populate()}{eina\_file\_map\_populate()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+PI}} void eina\+\_\+file\+\_\+map\+\_\+populate (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{group__Eina__File__Group_ga20697123547cbc937c6c9dd845af0403}{Eina\+\_\+\+File}} $\ast$}]{file,  }\item[{\mbox{\hyperlink{group__Eina__File__Group_ga2788825dfdd797282112148f2f65ec7a}{Eina\+\_\+\+File\+\_\+\+Populate}}}]{rule,  }\item[{const void $\ast$}]{map,  }\item[{unsigned long int}]{offset,  }\item[{unsigned long int}]{length }\end{DoxyParamCaption})}



Asks the OS to populate or otherwise pages of memory in file mapping. 

This advises the operating system as to what to do with the memory mapped to the given {\ttfamily file}. This affects a specific range of memory and may not be honoured if the system chooses to ignore the request.


\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}
\mbox{\Hypertarget{group__Eina__File__Group_gadc4d521fb8a14d51d85f2d11caaec54d}\label{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{\texorpdfstring{eina\+\_\+file\+\_\+map\+\_\+lines()}{eina\_file\_map\_lines()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+PI}} \mbox{\hyperlink{group__Eina__Iterator__Group_ga15b975bb881d955249ce13d4ebc96948}{Eina\+\_\+\+Iterator}}$\ast$ eina\+\_\+file\+\_\+map\+\_\+lines (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{group__Eina__File__Group_ga20697123547cbc937c6c9dd845af0403}{Eina\+\_\+\+File}} $\ast$}]{file }\end{DoxyParamCaption})}



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

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{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em file} & The file to run over \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
An Eina\+\_\+\+Iterator that produces \mbox{\hyperlink{group__Eina__File__Group_ga2c5c3fdefe5df8c774d5623b7a6e7047}{Eina\+\_\+\+File\+\_\+\+Line}}
\end{DoxyReturn}
\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\+AL, eina\+\_\+lock\+\_\+release(), eina\+\_\+lock\+\_\+take(), E\+I\+N\+A\+\_\+\+M\+A\+G\+I\+C\+\_\+\+S\+ET, \+\_\+\+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\+EE, F\+U\+N\+C\+\_\+\+I\+T\+E\+R\+A\+T\+O\+R\+\_\+\+G\+E\+T\+\_\+\+C\+O\+N\+T\+A\+I\+N\+ER, F\+U\+N\+C\+\_\+\+I\+T\+E\+R\+A\+T\+O\+R\+\_\+\+N\+E\+XT, \+\_\+\+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.

\mbox{\Hypertarget{group__Eina__File__Group_ga123564d305287ee8c08b2c88c7d78a47}\label{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{\texorpdfstring{eina\+\_\+file\+\_\+map\+\_\+faulted()}{eina\_file\_map\_faulted()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+PI}} \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} eina\+\_\+file\+\_\+map\+\_\+faulted (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{group__Eina__File__Group_ga20697123547cbc937c6c9dd845af0403}{Eina\+\_\+\+File}} $\ast$}]{file,  }\item[{void $\ast$}]{map }\end{DoxyParamCaption})}



Tells whether there has been an IO 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}
\mbox{\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{E\+I\+N\+A\+\_\+\+T\+R\+UE}} if there has been an IO error, otherwise \mbox{\hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{E\+I\+N\+A\+\_\+\+F\+A\+L\+SE}}
\end{DoxyReturn}
\begin{DoxySince}{Since}
1.\+2 
\end{DoxySince}


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

\mbox{\Hypertarget{group__Eina__File__Group_gadf638f95abe9aa175b6aaa3762bc1b54}\label{group__Eina__File__Group_gadf638f95abe9aa175b6aaa3762bc1b54}} 
\index{File@{File}!eina\+\_\+file\+\_\+path\+\_\+join\+\_\+len@{eina\+\_\+file\+\_\+path\+\_\+join\+\_\+len}}
\index{eina\+\_\+file\+\_\+path\+\_\+join\+\_\+len@{eina\+\_\+file\+\_\+path\+\_\+join\+\_\+len}!File@{File}}
\subsubsection{\texorpdfstring{eina\+\_\+file\+\_\+path\+\_\+join\+\_\+len()}{eina\_file\_path\_join\_len()}}
{\footnotesize\ttfamily static size\+\_\+t eina\+\_\+file\+\_\+path\+\_\+join\+\_\+len (\begin{DoxyParamCaption}\item[{char $\ast$}]{dst,  }\item[{size\+\_\+t}]{size,  }\item[{const char $\ast$}]{a,  }\item[{size\+\_\+t}]{a\+\_\+len,  }\item[{const char $\ast$}]{b,  }\item[{size\+\_\+t}]{b\+\_\+len }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}



Joins two paths of known length. 

This function is similar to \mbox{\hyperlink{group__Eina__String__Group_ga24948e6a270ad2e574dda5b97012cb41}{eina\+\_\+str\+\_\+join\+\_\+len()}}, but the separator is \textquotesingle{}\textbackslash{}\textquotesingle{} on Windows and \textquotesingle{}/\textquotesingle{} otherwise.


\begin{DoxyParams}{Parameters}
{\em dst} & The buffer to store the result. \\
\hline
{\em size} & Size (in byte) of the buffer. \\
\hline
{\em a} & First path to use. \\
\hline
{\em a\+\_\+len} & length of {\ttfamily a}. \\
\hline
{\em b} & Second path to use. \\
\hline
{\em b\+\_\+len} & length of {\ttfamily b}. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The number of characters printed.
\end{DoxyReturn}
\begin{DoxySeeAlso}{See also}
\mbox{\hyperlink{group__Eina__String__Group_ga24948e6a270ad2e574dda5b97012cb41}{eina\+\_\+str\+\_\+join\+\_\+len()}} 

\mbox{\hyperlink{group__Eina__File__Group_gaafc34529ee88ef8b528f62dab8ffe469}{eina\+\_\+file\+\_\+path\+\_\+join()}}
\end{DoxySeeAlso}
\begin{DoxySince}{Since}
1.\+16 
\end{DoxySince}
\mbox{\Hypertarget{group__Eina__File__Group_gaafc34529ee88ef8b528f62dab8ffe469}\label{group__Eina__File__Group_gaafc34529ee88ef8b528f62dab8ffe469}} 
\index{File@{File}!eina\+\_\+file\+\_\+path\+\_\+join@{eina\+\_\+file\+\_\+path\+\_\+join}}
\index{eina\+\_\+file\+\_\+path\+\_\+join@{eina\+\_\+file\+\_\+path\+\_\+join}!File@{File}}
\subsubsection{\texorpdfstring{eina\+\_\+file\+\_\+path\+\_\+join()}{eina\_file\_path\_join()}}
{\footnotesize\ttfamily static size\+\_\+t eina\+\_\+file\+\_\+path\+\_\+join (\begin{DoxyParamCaption}\item[{char $\ast$}]{dst,  }\item[{size\+\_\+t}]{size,  }\item[{const char $\ast$}]{a,  }\item[{const char $\ast$}]{b }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}



Joins two paths of known length. 

This function is similar to \mbox{\hyperlink{group__Eina__File__Group_gadf638f95abe9aa175b6aaa3762bc1b54}{eina\+\_\+file\+\_\+path\+\_\+join\+\_\+len()}}, but will compute the length of {\ttfamily a} and {\ttfamily b} using strlen(). The path separator is \textquotesingle{}\textbackslash{}\textquotesingle{} on Windows and \textquotesingle{}/\textquotesingle{} otherwise.


\begin{DoxyParams}{Parameters}
{\em dst} & The buffer to store the result. \\
\hline
{\em size} & Size (in byte) of the buffer. \\
\hline
{\em a} & First string to use. \\
\hline
{\em b} & Second string to use. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The number of characters printed.
\end{DoxyReturn}
\begin{DoxySeeAlso}{See also}
\mbox{\hyperlink{group__Eina__File__Group_gadf638f95abe9aa175b6aaa3762bc1b54}{eina\+\_\+file\+\_\+path\+\_\+join\+\_\+len()}}
\end{DoxySeeAlso}
\begin{DoxySince}{Since}
1.\+16 
\end{DoxySince}
\mbox{\Hypertarget{group__Eina__File__Group_gaf2f4a16b6b2524a2d29aeb18785a68a3}\label{group__Eina__File__Group_gaf2f4a16b6b2524a2d29aeb18785a68a3}} 
\index{File@{File}!eina\+\_\+file\+\_\+unlink@{eina\+\_\+file\+\_\+unlink}}
\index{eina\+\_\+file\+\_\+unlink@{eina\+\_\+file\+\_\+unlink}!File@{File}}
\subsubsection{\texorpdfstring{eina\+\_\+file\+\_\+unlink()}{eina\_file\_unlink()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+PI}} \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} eina\+\_\+file\+\_\+unlink (\begin{DoxyParamCaption}\item[{const char $\ast$}]{pathname }\end{DoxyParamCaption})}



Unlinks file. 

This function is a wrapper around the unlink() system call. It removes a link to a file.


\begin{DoxyParams}{Parameters}
{\em pathname} & File name to unlink. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
\mbox{\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{E\+I\+N\+A\+\_\+\+T\+R\+UE}} if the unlink was successfull, \mbox{\hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{E\+I\+N\+A\+\_\+\+F\+A\+L\+SE}} otherwise..
\end{DoxyReturn}
\begin{DoxySince}{Since}
1.\+19 
\end{DoxySince}


References \+\_\+eina\+\_\+file\+\_\+cache, E\+I\+N\+A\+\_\+\+F\+A\+L\+SE, eina\+\_\+hash\+\_\+find(), eina\+\_\+stringshare\+\_\+del(), and E\+I\+N\+A\+\_\+\+T\+R\+UE.

\mbox{\Hypertarget{group__Eina__File__Group_ga4b892636498d8917d995a652a8bdd6b7}\label{group__Eina__File__Group_ga4b892636498d8917d995a652a8bdd6b7}} 
\index{File@{File}!eina\+\_\+file\+\_\+close\+\_\+on\+\_\+exec@{eina\+\_\+file\+\_\+close\+\_\+on\+\_\+exec}}
\index{eina\+\_\+file\+\_\+close\+\_\+on\+\_\+exec@{eina\+\_\+file\+\_\+close\+\_\+on\+\_\+exec}!File@{File}}
\subsubsection{\texorpdfstring{eina\+\_\+file\+\_\+close\+\_\+on\+\_\+exec()}{eina\_file\_close\_on\_exec()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+PI}} \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} eina\+\_\+file\+\_\+close\+\_\+on\+\_\+exec (\begin{DoxyParamCaption}\item[{int}]{fd,  }\item[{\mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}}}]{on }\end{DoxyParamCaption})}



Make sure a file descriptor will be closed on exec. 

This function is a wrapper around the fnctl() system call. It makes sure that the fd will be closed whenever exec is called.


\begin{DoxyParams}{Parameters}
{\em fd} & File descriptor to enforce close on exec on. \\
\hline
{\em on} & \mbox{\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{E\+I\+N\+A\+\_\+\+T\+R\+UE}} will turn close on exec on, \mbox{\hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{E\+I\+N\+A\+\_\+\+F\+A\+L\+SE}} will turn it off. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
\mbox{\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{E\+I\+N\+A\+\_\+\+T\+R\+UE}} if it will be closed on exec, \mbox{\hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{E\+I\+N\+A\+\_\+\+F\+A\+L\+SE}} otherwise..
\end{DoxyReturn}
\begin{DoxySince}{Since}
1.\+20 
\end{DoxySince}
\begin{Desc}
\item[Examples\+: ]\par
\mbox{\hyperlink{ecore_fd_handler_gnutls_example_8c-example}{ecore\+\_\+fd\+\_\+handler\+\_\+gnutls\+\_\+example.\+c}}.\end{Desc}


References E\+I\+N\+A\+\_\+\+F\+A\+L\+SE, E\+I\+N\+A\+\_\+\+T\+R\+UE, E\+RR, and fcntl().



Referenced by ecore\+\_\+pipe\+\_\+full\+\_\+add(), and eina\+\_\+mmap\+\_\+safety\+\_\+enabled\+\_\+set().

\mbox{\Hypertarget{group__Eina__File__Group_ga3eb6309933f0a698eda7cf41ed21fb5e}\label{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{\texorpdfstring{eina\+\_\+file\+\_\+path\+\_\+relative()}{eina\_file\_path\_relative()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} eina\+\_\+file\+\_\+path\+\_\+relative (\begin{DoxyParamCaption}\item[{const char $\ast$}]{path }\end{DoxyParamCaption})}



Determines if a path is relative or absolute. 

The implementation simply chekcs if the first 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\+UE if the path is relative, E\+I\+N\+A\+\_\+\+F\+A\+L\+SE otherwise. 
\end{DoxyReturn}


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



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

\mbox{\Hypertarget{group__Eina__File__Group_gafa8822e14b74df94568fd2c0a7c19198}\label{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{\texorpdfstring{eina\+\_\+file\+\_\+current\+\_\+directory\+\_\+get()}{eina\_file\_current\_directory\_get()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Eina__Stringshare__Group_gae8d53f367d5da5acfd19af6c235831d5}{Eina\+\_\+\+Tmpstr}}$\ast$ eina\+\_\+file\+\_\+current\+\_\+directory\+\_\+get (\begin{DoxyParamCaption}\item[{const char $\ast$}]{path,  }\item[{size\+\_\+t}]{len }\end{DoxyParamCaption})}



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(), and eina\+\_\+tmpstr\+\_\+add\+\_\+length().



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

\mbox{\Hypertarget{group__Eina__File__Group_gaf4d25f9df108b8246e0ce7c32f035e33}\label{group__Eina__File__Group_gaf4d25f9df108b8246e0ce7c32f035e33}} 
\index{File@{File}!eina\+\_\+file\+\_\+cleanup@{eina\+\_\+file\+\_\+cleanup}}
\index{eina\+\_\+file\+\_\+cleanup@{eina\+\_\+file\+\_\+cleanup}!File@{File}}
\subsubsection{\texorpdfstring{eina\+\_\+file\+\_\+cleanup()}{eina\_file\_cleanup()}}
{\footnotesize\ttfamily char$\ast$ eina\+\_\+file\+\_\+cleanup (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{group__Eina__Stringshare__Group_gae8d53f367d5da5acfd19af6c235831d5}{Eina\+\_\+\+Tmpstr}} $\ast$}]{path }\end{DoxyParamCaption})}



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\+LL}, it will return and empty string. 
\end{DoxyReturn}


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

\mbox{\Hypertarget{group__Eina__File__Group_ga9360f0d850bb1bf8bf40027985f4ed42}\label{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{\texorpdfstring{eina\+\_\+file\+\_\+clean\+\_\+close()}{eina\_file\_clean\_close()}}
{\footnotesize\ttfamily void eina\+\_\+file\+\_\+clean\+\_\+close (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{group__Eina__File__Group_ga20697123547cbc937c6c9dd845af0403}{Eina\+\_\+\+File}} $\ast$}]{file }\end{DoxyParamCaption})}



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\+ET, eina\+\_\+stringshare\+\_\+del(), \+\_\+\+Eina\+\_\+\+File\+::filename, \+\_\+\+Eina\+\_\+\+File\+::map, and \+\_\+\+Eina\+\_\+\+File\+::rmap.



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

\mbox{\Hypertarget{group__Eina__File__Group_ga6960f0b4d94996a4beb965a684d92dea}\label{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{\texorpdfstring{eina\+\_\+file\+\_\+real\+\_\+close()}{eina\_file\_real\_close()}}
{\footnotesize\ttfamily void eina\+\_\+file\+\_\+real\+\_\+close (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{group__Eina__File__Group_ga20697123547cbc937c6c9dd845af0403}{Eina\+\_\+\+File}} $\ast$}]{file }\end{DoxyParamCaption})}



Closes a file from the OS perspective. 


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


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

\mbox{\Hypertarget{group__Eina__File__Group_ga64a3123b8e0b9698d30611bacd548b9e}\label{group__Eina__File__Group_ga64a3123b8e0b9698d30611bacd548b9e}} 
\index{File@{File}!eina\+\_\+file\+\_\+flush@{eina\+\_\+file\+\_\+flush}}
\index{eina\+\_\+file\+\_\+flush@{eina\+\_\+file\+\_\+flush}!File@{File}}
\subsubsection{\texorpdfstring{eina\+\_\+file\+\_\+flush()}{eina\_file\_flush()}}
{\footnotesize\ttfamily void eina\+\_\+file\+\_\+flush (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{group__Eina__File__Group_ga20697123547cbc937c6c9dd845af0403}{Eina\+\_\+\+File}} $\ast$}]{file,  }\item[{unsigned long int}]{length }\end{DoxyParamCaption})}



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\+CH, eina\+\_\+iterator\+\_\+free(), eina\+\_\+list\+\_\+append(), E\+I\+N\+A\+\_\+\+L\+I\+S\+T\+\_\+\+F\+O\+R\+E\+A\+CH, 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.

\mbox{\Hypertarget{group__Eina__File__Group_ga7fc3c176abeb346004562e5ddfdf6e0f}\label{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{\texorpdfstring{eina\+\_\+file\+\_\+common\+\_\+map\+\_\+free()}{eina\_file\_common\_map\_free()}}
{\footnotesize\ttfamily void eina\+\_\+file\+\_\+common\+\_\+map\+\_\+free (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{group__Eina__File__Group_ga20697123547cbc937c6c9dd845af0403}{Eina\+\_\+\+File}} $\ast$}]{file,  }\item[{void $\ast$}]{map,  }\item[{void($\ast$)(\mbox{\hyperlink{group__Eina__File__Group_gaa386401312fe1dd48e84637fa7a728b6}{Eina\+\_\+\+File\+\_\+\+Map}} $\ast$map)}]{free\+\_\+func }\end{DoxyParamCaption})}



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\+SE, eina\+\_\+hash\+\_\+del(), eina\+\_\+hash\+\_\+find(), E\+I\+N\+A\+\_\+\+L\+I\+S\+T\+\_\+\+F\+O\+R\+E\+A\+CH, eina\+\_\+list\+\_\+remove\+\_\+list(), E\+I\+N\+A\+\_\+\+T\+R\+UE, \+\_\+\+Eina\+\_\+\+File\+\_\+\+Map\+::length, \+\_\+\+Eina\+\_\+\+File\+::map, \+\_\+\+Eina\+\_\+\+File\+\_\+\+Map\+::map, \+\_\+\+Eina\+\_\+\+File\+\_\+\+Map\+::offset, \+\_\+\+Eina\+\_\+\+File\+\_\+\+Map\+::refcount, and \+\_\+\+Eina\+\_\+\+File\+::rmap.

\mbox{\Hypertarget{group__Eina__File__Group_ga7fb3d5e5399d49c2fb3599dd7d29b689}\label{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{\texorpdfstring{eina\+\_\+file\+\_\+virtual\+\_\+map\+\_\+all()}{eina\_file\_virtual\_map\_all()}}
{\footnotesize\ttfamily void$\ast$ eina\+\_\+file\+\_\+virtual\+\_\+map\+\_\+all (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{group__Eina__File__Group_ga20697123547cbc937c6c9dd845af0403}{Eina\+\_\+\+File}} $\ast$}]{file }\end{DoxyParamCaption})}



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.

\mbox{\Hypertarget{group__Eina__File__Group_ga08bc51d32fd60da6f1bbfb530a0feb0d}\label{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{\texorpdfstring{eina\+\_\+file\+\_\+virtual\+\_\+map\+\_\+new()}{eina\_file\_virtual\_map\_new()}}
{\footnotesize\ttfamily void$\ast$ eina\+\_\+file\+\_\+virtual\+\_\+map\+\_\+new (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{group__Eina__File__Group_ga20697123547cbc937c6c9dd845af0403}{Eina\+\_\+\+File}} $\ast$}]{file,  }\item[{unsigned long int}]{offset,  }\item[{unsigned long int}]{length }\end{DoxyParamCaption})}



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.

\mbox{\Hypertarget{group__Eina__File__Group_ga105fa4c85c984190da9c5f22b509fd15}\label{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{\texorpdfstring{eina\+\_\+file\+\_\+virtual\+\_\+map\+\_\+free()}{eina\_file\_virtual\_map\_free()}}
{\footnotesize\ttfamily void eina\+\_\+file\+\_\+virtual\+\_\+map\+\_\+free (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{group__Eina__File__Group_ga20697123547cbc937c6c9dd845af0403}{Eina\+\_\+\+File}} $\ast$}]{file,  }\item[{void $\ast$}]{map }\end{DoxyParamCaption})}



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.

\mbox{\Hypertarget{group__Eina__File__Group_ga448a87e4666e16adb3d4289c210c549e}\label{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{\texorpdfstring{eina\+\_\+file\+\_\+map\+\_\+key\+\_\+length()}{eina\_file\_map\_key\_length()}}
{\footnotesize\ttfamily unsigned int eina\+\_\+file\+\_\+map\+\_\+key\+\_\+length (\begin{DoxyParamCaption}\item[{const void $\ast$}]{key }\end{DoxyParamCaption})}



Get the length of a map key. 

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

\end{DoxyWarning}

\begin{DoxyParams}{Parameters}
{\em key} & The key for which length will be calculated.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The length of the key. 
\end{DoxyReturn}
\mbox{\Hypertarget{group__Eina__File__Group_ga279f49595634c5825f579f98b8c58780}\label{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{\texorpdfstring{eina\+\_\+file\+\_\+map\+\_\+key\+\_\+cmp()}{eina\_file\_map\_key\_cmp()}}
{\footnotesize\ttfamily 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})}



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}
\mbox{\Hypertarget{group__Eina__File__Group_ga61afa15fd0c3f3938179b041c1bc7226}\label{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{\texorpdfstring{eina\+\_\+file\+\_\+map\+\_\+key\+\_\+hash()}{eina\_file\_map\_key\_hash()}}
{\footnotesize\ttfamily int eina\+\_\+file\+\_\+map\+\_\+key\+\_\+hash (\begin{DoxyParamCaption}\item[{const unsigned long long int $\ast$}]{key,  }\item[{int}]{key\+\_\+length }\end{DoxyParamCaption})}



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().



\subsection{Variable Documentation}
\mbox{\Hypertarget{group__Eina__File__Group_ga566b1dffb98a71425706508ba19e12ea}\label{group__Eina__File__Group_ga566b1dffb98a71425706508ba19e12ea}} 
\index{File@{File}!\+\_\+eina\+\_\+file\+\_\+cache@{\+\_\+eina\+\_\+file\+\_\+cache}}
\index{\+\_\+eina\+\_\+file\+\_\+cache@{\+\_\+eina\+\_\+file\+\_\+cache}!File@{File}}
\subsubsection{\texorpdfstring{\+\_\+eina\+\_\+file\+\_\+cache}{\_eina\_file\_cache}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Eina__Hash__Group_ga9a89d7d3ee260d3a60572ebf651b07e0}{Eina\+\_\+\+Hash}}$\ast$ \+\_\+eina\+\_\+file\+\_\+cache}



A pointer to the global Eina file cache. 



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

\mbox{\Hypertarget{group__Eina__File__Group_ga863d6a4b22af7faa9fa7596f93906e4b}\label{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{\texorpdfstring{\+\_\+eina\+\_\+file\+\_\+log\+\_\+dom}{\_eina\_file\_log\_dom}}
{\footnotesize\ttfamily int \+\_\+eina\+\_\+file\+\_\+log\+\_\+dom}



The global Eina log file domain. 

