[ecore] merged svn latest code (svn54830)
[profile/ivi/ecore.git] / src / lib / ecore_file / Ecore_File.h
1 #ifndef ECORE_FILE_H
2 #define ECORE_FILE_H
3
4 /*
5  * TODO:
6  * - More events, move/rename of directory file
7  */
8
9 #include <Eina.h>
10
11 #ifdef EAPI
12 # undef EAPI
13 #endif
14
15 #ifdef _WIN32
16 # ifdef EFL_ECORE_FILE_BUILD
17 #  ifdef DLL_EXPORT
18 #   define EAPI __declspec(dllexport)
19 #  else
20 #   define EAPI
21 #  endif /* ! DLL_EXPORT */
22 # else
23 #  define EAPI __declspec(dllimport)
24 # endif /* ! EFL_ECORE_FILE_BUILD */
25 #else
26 # ifdef __GNUC__
27 #  if __GNUC__ >= 4
28 #   define EAPI __attribute__ ((visibility("default")))
29 #  else
30 #   define EAPI
31 #  endif
32 # else
33 #  define EAPI
34 # endif
35 #endif /* ! _WIN32 */
36
37 /**
38  * @file Ecore_File.h
39  * @brief Files utility functions
40  */
41
42 #ifdef __cplusplus
43 extern "C" {
44 #endif
45
46 /**
47  * @defgroup Ecore_File_Group Ecore_File - Files and direcotries convenience functions
48  *
49  * @{
50  */
51
52 /**
53  * @typedef Ecore_File_Monitor
54  * Abstract type used when monitoring a directory.
55  */
56 typedef struct _Ecore_File_Monitor       Ecore_File_Monitor;
57
58 /**
59  * @typedef Ecore_File_Download_Job
60  * Abstract type used when aborting a download.
61  */
62 typedef struct _Ecore_File_Download_Job  Ecore_File_Download_Job;
63
64 /**
65  * @typedef Ecore_File_Event
66  * The event type returned when a file or directory is monitored.
67  */
68 typedef enum _Ecore_File_Event
69 {
70    ECORE_FILE_EVENT_NONE,              /**< No event. */
71    ECORE_FILE_EVENT_CREATED_FILE,      /**< Created file event. */
72    ECORE_FILE_EVENT_CREATED_DIRECTORY, /**< Created directory event. */
73    ECORE_FILE_EVENT_DELETED_FILE,      /**< Deleted file event. */
74    ECORE_FILE_EVENT_DELETED_DIRECTORY, /**< Deleted directory event. */
75    ECORE_FILE_EVENT_DELETED_SELF,      /**< Deleted monitored directory event. */
76    ECORE_FILE_EVENT_MODIFIED           /**< Modified file or directory event. */
77 } Ecore_File_Event;
78
79 /**
80  * @typedef Ecore_File_Monitor_Cb
81  * Callback type used when a monitored directory has changes.
82  */
83 typedef void (*Ecore_File_Monitor_Cb)(void *data, Ecore_File_Monitor *em, Ecore_File_Event event, const char *path);
84
85 /**
86  * @typedef Ecore_File_Download_Completion_Cb
87  * Callback type used when a download is finished.
88  */
89 typedef void (*Ecore_File_Download_Completion_Cb)(void *data, const char *file, int status);
90
91 /**
92  * @typedef Ecore_File_Download_Progress_Cb
93  * Callback type used when a download is finished.
94  */
95 typedef int (*Ecore_File_Download_Progress_Cb)(void *data,
96                                                const char *file,
97                                                long int dltotal,
98                                                long int dlnow,
99                                                long int ultotal,
100                                                long int ulnow);
101
102 /* File operations */
103
104 EAPI int            ecore_file_init         (void);
105 EAPI int            ecore_file_shutdown     (void);
106 EAPI long long      ecore_file_mod_time     (const char *file);
107 EAPI long long      ecore_file_size         (const char *file);
108 EAPI Eina_Bool      ecore_file_exists       (const char *file);
109 EAPI Eina_Bool      ecore_file_is_dir       (const char *file);
110 EAPI Eina_Bool      ecore_file_mkdir        (const char *dir);
111 EAPI int            ecore_file_mkdirs       (const char **dirs);
112 EAPI int            ecore_file_mksubdirs    (const char *base, const char **subdirs);
113 EAPI Eina_Bool      ecore_file_rmdir        (const char *dir);
114 EAPI Eina_Bool      ecore_file_recursive_rm (const char *dir);
115 EAPI Eina_Bool      ecore_file_mkpath       (const char *path);
116 EAPI int            ecore_file_mkpaths      (const char **paths);
117 EAPI Eina_Bool      ecore_file_cp           (const char *src, const char *dst);
118 EAPI Eina_Bool      ecore_file_mv           (const char *src, const char *dst);
119 EAPI Eina_Bool      ecore_file_symlink      (const char *src, const char *dest);
120 EAPI char          *ecore_file_realpath     (const char *file);
121 EAPI Eina_Bool      ecore_file_unlink       (const char *file);
122 EAPI Eina_Bool      ecore_file_remove       (const char *file);
123 EAPI const char    *ecore_file_file_get     (const char *path);
124 EAPI char          *ecore_file_dir_get      (const char *path);
125 EAPI Eina_Bool      ecore_file_can_read     (const char *file);
126 EAPI Eina_Bool      ecore_file_can_write    (const char *file);
127 EAPI Eina_Bool      ecore_file_can_exec     (const char *file);
128 EAPI char          *ecore_file_readlink     (const char *link);
129 EAPI Eina_List     *ecore_file_ls           (const char *dir);
130 EAPI Eina_Iterator *ecore_file_ls_iterator  (const char *dir);
131 EAPI char          *ecore_file_app_exe_get  (const char *app);
132 EAPI char          *ecore_file_escape_name  (const char *filename);
133 EAPI char          *ecore_file_strip_ext    (const char *file);
134 EAPI int            ecore_file_dir_is_empty (const char *dir);
135
136 /* Monitoring */
137
138 EAPI Ecore_File_Monitor *ecore_file_monitor_add(const char *path,
139                                                 Ecore_File_Monitor_Cb func,
140                                                 void *data);
141 EAPI void                ecore_file_monitor_del(Ecore_File_Monitor *ecore_file_monitor);
142 EAPI const char         *ecore_file_monitor_path_get(Ecore_File_Monitor *ecore_file_monitor);
143
144 /* Path */
145
146 EAPI Eina_Bool  ecore_file_path_dir_exists(const char *in_dir);
147 EAPI Eina_Bool  ecore_file_app_installed(const char *exe);
148 EAPI Eina_List *ecore_file_app_list(void);
149
150 /* Download */
151
152 EAPI Eina_Bool ecore_file_download(const char *url,
153                                    const char *dst,
154                                    Ecore_File_Download_Completion_Cb completion_cb,
155                                    Ecore_File_Download_Progress_Cb progress_cb,
156                                    void *data,
157                                    Ecore_File_Download_Job **job_ret);
158 EAPI void      ecore_file_download_abort_all(void);
159 EAPI void      ecore_file_download_abort(Ecore_File_Download_Job *job);
160 EAPI Eina_Bool ecore_file_download_protocol_available(const char *protocol);
161
162 /**
163  * @}
164  */
165
166 #ifdef __cplusplus
167 }
168 #endif
169
170 #endif