Tizen 2.0 Release
[apps/core/preloaded/myfiles.git] / src / include / mf-fs-util.h
1 /*
2  * Copyright 2013         Samsung Electronics Co., Ltd
3  *
4  * Licensed under the Flora License, Version 1.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *  http://floralicense.org/license/
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17
18
19
20 #ifndef _MYFILE_FILESYSTEM_UTIL_H_
21 #define _MYFILE_FILESYSTEM_UTIL_H_
22
23 #include <stdio.h>
24 #include <stdbool.h>
25 #include <string.h>
26 #include <stdlib.h>
27 #include <dirent.h>
28 #include <sys/stat.h>
29 #include <unistd.h>
30 #include <sys/types.h>
31 #include <sys/stat.h>
32 #include <linux/fs.h>
33 #include <Eina.h>
34
35 #include <unicode/udat.h>
36 #include <unicode/ustring.h>
37 #include <unicode/uloc.h>
38 #include <unicode/ucal.h>
39 #include <unicode/udatpg.h>
40 #include <unicode/utmscale.h>
41 #include <media_content.h>
42
43 #include "mf-dlog.h"
44
45 /*      File system related value definition    */
46 #define MYFILE_FILE_NAME_LEN_MAX        255     /*charactor based, use g_utf8_strlen to check length*/
47 #define MYFILE_FILE_PATH_LEN_MAX        4096    /*charactor based, use g_utf8_strlen to check length*/
48 #define MYFILE_REPORT_SIZE                      16384
49
50 #define MYFILE_FOLDER_SIZE                      0;
51
52 /*      File system related String definition   */
53 #define PHONE_FOLDER            "/opt/usr/media"
54 #define MEMORY_FOLDER           "/opt/storage/sdcard"
55 #define PHONE_PARENT            "/opt/usr"
56 #define PHONE_NAME              "media"
57 #define STORAGE_PARENT          "/opt/storage"
58 #define MMC_NAME                "sdcard"
59
60 #ifdef MYFILE_USB_OTG
61 #define OTG_FOLDER              "/opt/storage/usb"
62 #define OTG_NAME                "usb"
63 #endif
64 #define DEBUG_FOLDER            "SLP_debug"
65
66 #define MYFILE_NAME_PATTERN     "[\\:;*\"<>|?/]"
67
68 /*      File system define default folder       */
69
70 #define DEFAULT_FOLDER_CAMERA_SHOTS             "Camera shots"
71 #define DEFAULT_FOLDER_DOWNLOADS                "Downloads"
72
73 #define DEFAULT_FOLDER_IMAGE                    "Images"
74 #define SUB_FODER_WALLPAPER                     "Wallpapers"
75
76 #define DEFAULT_FOLDER_VIDEO                    "Videos"
77
78 #define DEFAULT_FOLDER_MUSIC                    "Music"
79 #define SUB_FODER_FM                            "FM radio"
80 #define SUB_FODER_VOICE_RECORD                  "Voice recorder"
81
82 #define DEFAULT_FOLDER_ALERTS_AND_RINGTONES     "Alerts and ringtones"
83 #define SUB_FODER_ALERTS                        "Alerts"
84 #define SUB_FODER_RINGTONES                     "Ringtones"
85
86 #define DEFAULT_FOLDER_BOOKMARK "Bookmark"
87 #define DEFAULT_FOLDER_RSS      "RSS"
88
89 #ifndef ICON_PATH
90 #define ICON_PATH "/usr/apps/org.tizen.myfile/res/images"
91 #endif
92
93 #ifndef DEFAULT_ICON
94 #define DEFAULT_ICON ICON_PATH"/myfile_icon_etc.png"
95 #endif
96
97 #define MF_ICON_FOLDER                  ICON_PATH"/myfile_icon_folder.png"
98 #define MF_ICON_FOLDER_OPEN             ICON_PATH"/myfile_icon_folder_open.png"
99 #define MF_ICON_IMAGE                   ICON_PATH"/myfile_icon_images.png"
100 #define MF_ICON_VIDEO                   ICON_PATH"/myfile_icon_video.png"
101 #define MF_ICON_MUSIC                   ICON_PATH"/myfile_icon_music.png"
102 #define MF_ICON_SOUND                   ICON_PATH"/myfile_icon_music.png"
103 #define MF_ICON_PDF                     ICON_PATH"/myfile_icon_pdf.png"
104 #define MF_ICON_DOC                     ICON_PATH"/myfile_icon_word.png"
105 #define MF_ICON_PPT                     ICON_PATH"/myfile_icon_ppt.png"
106 #define MF_ICON_EXCEL                   ICON_PATH"/myfile_icon_excel.png"
107 #define MF_ICON_VOICE                   ICON_PATH"/myfile_icon_music.png"
108 #define MF_ICON_HTML                    ICON_PATH"/myfile_icon_html.png"
109 #define MF_ICON_FLASH                   ICON_PATH"/myfile_icon_swf.png"
110 #define MF_ICON_TXT                     ICON_PATH"/myfile_icon_text.png"
111 #define MF_ICON_VCONTACT                ICON_PATH"/myfile_icon_svg.png"
112 #define MF_ICON_VCALENDAR               ICON_PATH"/myfile_icon_svg.png"
113 #define MF_ICON_VNOTE                   ICON_PATH"/myfile_icon_text.png"
114 #define MF_ICON_RSS                     ICON_PATH"/myfile_icon_rss.png"
115 #define MF_ICON_JAVA                    ICON_PATH"/myfile_icon_java.png"
116 #define MF_ICON_MEMORY_SUB              ICON_PATH"/myfile_icon_mmc_sub.png"
117 #define MF_ICON_MUSIC_PLAY              ICON_PATH"/myfile_icon_control_play.png"
118 #define MF_ICON_MUSIC_PAUSE             ICON_PATH"/myfile_icon_control_pause.png"
119 #define MF_ICON_PHONE                   ICON_PATH"/myfile_icon_phone.png"
120 #define MF_ICON_MEMORY                  ICON_PATH"/myfile_icon_mmc.png"
121 #define MF_ICON_EXTERNAL_DEVICE         ICON_PATH"/myfile_icon_USB.png"
122 #define MF_ICON_VIDEO_PLAY              ICON_PATH"/myfile_icon_video_play.png"
123 #define MF_ICON_ENTRY_FOLDER            ICON_PATH"/myfile_icon_entry_folder.png"
124 #define MF_ICON_ENTRY_FOLDER_PRESS      ICON_PATH"/myfile_icon_entry_folder_press.png"
125
126
127 #define MF_ICON_THUMBNAIL_EXCEL         ICON_PATH"/myfile_thumbnail_icon_excel.png"
128 #define MF_ICON_THUMBNAIL_FOLDER        ICON_PATH"/myfile_thumbnail_icon_folder.png"
129 #define MF_ICON_THUMBNAIL_FOLDER_OPEN   ICON_PATH"/myfile_thumbnail_icon_folder_open.png"
130 #define MF_ICON_THUMBNAIL_HTML          ICON_PATH"/myfile_thumbnail_icon_html.png"
131 #define MF_ICON_THUMBNAIL_MUSIC         ICON_PATH"/myfile_thumbnail_icon_music.png"
132 #define MF_ICON_THUMBNAIL_PDF           ICON_PATH"/myfile_thumbnail_icon_pdf.png"
133 #define MF_ICON_THUMBNAIL_PPT           ICON_PATH"/myfile_thumbnail_icon_ppt.png"
134 #define MF_ICON_THUMBNAIL_RINGTONE      ICON_PATH"/myfile_thumbnail_icon_ring tone.png"
135 #define MF_ICON_THUMBNAIL_RSS           ICON_PATH"/myfile_thumbnail_icon_rss.png"
136 #define MF_ICON_THUMBNAIL_FLASH         ICON_PATH"/myfile_thumbnail_icon_swf.png"
137 #define MF_ICON_THUMBNAIL_TXT           ICON_PATH"/myfile_thumbnail_icon_text.png"
138 #define MF_ICON_THUMBNAIL_VIDEO         ICON_PATH"/myfile_thumbnail_icon_video.png"
139 #define MF_ICON_THUMBNAIL_DOC           ICON_PATH"/myfile_thumbnail_icon_word.png"
140 #define MF_ICON_THUMBNAIL_VIDEO_PLAY    ICON_PATH"/myfile_thumbnail_icon_video_play.png"
141 #define MF_ICON_THUMBNAIL_UNKOWN        ICON_PATH"/myfile_thumbnail_icon_unkown.png"
142
143 #define MF_ICON_ITEM_PHONE              ICON_PATH"/U01_1st_icon_phone.png"
144 #define MF_ICON_ITEM_MMC                ICON_PATH"/U01_1st_icon_memory_card.png"
145 #define MF_ICON_ITEM_OTG                ICON_PATH"/U01_1st_icon_external_storage.png"
146 #define MF_ICON_ITEM_DB                 ICON_PATH"/U01_1st_icon_dropbox.png"
147
148 typedef enum _SORT_OPTION fsSortOption;
149
150 enum _SORT_OPTION {
151         MYFILE_SORT_BY_NONE = 0,                 /**< Sort by default */
152         MYFILE_SORT_BY_NAME_A2Z,                 /**< Sort by file name ascending */
153         MYFILE_SORT_BY_SIZE_S2L,                 /**< Sort by file size ascending */
154         MYFILE_SORT_BY_DATE_O2R,                 /**< Sort by file date ascending */
155         MYFILE_SORT_BY_TYPE_A2Z,                                 /**< Sort by file type ascending */
156         MYFILE_SORT_BY_NAME_Z2A,                 /**< Sort by file name descending */
157         MYFILE_SORT_BY_SIZE_L2S,                 /**< Sort by file size descending */
158         MYFILE_SORT_BY_DATE_R2O,                 /**< Sort by file date descending */
159         MYFILE_SORT_BY_TYPE_Z2A,                                 /**< Sort by file type descending */
160         MYFILE_SORT_BY_MAX
161 } ;
162
163 typedef enum _mf_extension_state_e mf_extension_state_e;
164
165 enum _mf_extension_state_e {
166         MF_EXTENSION_NONE = 0,
167         MF_EXTENSION_SHOW,
168         MF_EXTENSION_HIDE,
169         MF_EXTENSION_MAX
170 } ;
171
172 typedef enum _FILE_TYPE fsFileType;
173
174 enum _FILE_TYPE {
175         FILE_TYPE_NONE = 0,
176         FILE_TYPE_DIR,                     /**< Folder category */
177         FILE_TYPE_FILE,                    /**< File category */
178         FILE_TYPE_IMAGE,           /**< Image category */
179         FILE_TYPE_VIDEO,           /**< Video category */
180         FILE_TYPE_MUSIC,           /**< Music category */
181         FILE_TYPE_SOUND,           /**< Sound category */
182         FILE_TYPE_PDF,             /**< Pdf category */
183         FILE_TYPE_DOC,             /**< Word category */
184         FILE_TYPE_PPT,             /**< Powerpoint category */
185         FILE_TYPE_EXCEL,           /**< Excel category */
186         FILE_TYPE_VOICE,           /**< Voice category */
187         FILE_TYPE_HTML,            /**< Html category */
188         FILE_TYPE_FLASH,           /**< Flash category */
189         FILE_TYPE_GAME,            /**< Game category */
190         FILE_TYPE_APP,             /**< Application category */
191         FILE_TYPE_THEME,           /**< Theme category */
192         FILE_TYPE_TXT,             /**< Txt category */
193         FILE_TYPE_VCONTACT,        /**< Vcontact category */
194         FILE_TYPE_VCALENDAR,       /**< Vcalendar category */
195         FILE_TYPE_VNOTE,           /**< Vnote category */
196         FILE_TYPE_VBOOKMARK,       /**< Vbookmark category */
197         FILE_TYPE_VIDEO_PROJECT,   /**< Video editor project category */
198         FILE_TYPE_RADIO_RECORDED,  /**< radio recorded clips category */
199         FILE_TYPE_MOVIE_MAKER,     /**< Movie maker project category */
200         FILE_TYPE_SVG,             /**< Svg category */
201         FILE_TYPE_RSS,             /**< Rss reader file, *.opml */
202         FILE_TYPE_CERTIFICATION,   /**< certification file, *.pem */
203         FILE_TYPE_JAVA,            /**< java file, *.jad, *.jar */
204         FILE_TYPE_WGT,             /**< wrt , *.wgt, *.wgt */
205         FILE_TYPE_DRM,                          /**< drm file , *.dcf */
206         FILE_TYPE_ETC,             /**< Other files category */
207         FILE_TYPE_MAX
208 } ;
209
210 typedef enum _STORAGE MF_STORAGE;
211
212 enum _STORAGE {
213         MYFILE_NONE = 0x00,
214         MYFILE_PHONE = 0x01,
215         MYFILE_MMC = 0x02,
216         MYFILE_OTG = 0x04,
217         MYFILE_MAX = 0xFF
218 };
219
220
221 typedef enum _SIZE_TYPE MF_SIZE_TYPE;
222 enum _SIZE_TYPE {
223         SIZE_BYTE = 0,
224         SIZE_KB,
225         SIZE_MB,
226         SIZE_GB
227 };
228
229 typedef enum __MF_SORT_BY_PRIORITY_SEQUENCE MF_SORT_BY_PRIORITY_SEQUENCE;
230 enum __MF_SORT_BY_PRIORITY_SEQUENCE {
231         MF_SORT_BY_PRIORITY_TYPE_A2Z,
232         MF_SORT_BY_PRIORITY_TYPE_Z2A,
233         MF_SORT_BY_PRIORITY_DATE_O2R,
234         MF_SORT_BY_PRIORITY_DATE_R2O,
235         MF_SORT_BY_PRIORITY_SIZE_S2L,
236         MF_SORT_BY_PRIORITY_SIZE_L2S,
237 };
238
239 /*      File operation error check options definition           */
240 #define MF_ERROR_CHECK_SRC_ARG_VALID            0x0001
241 #define MF_ERROR_CHECK_DST_ARG_VALID            0x0002
242 #define MF_ERROR_CHECK_SRC_EXIST                        0x0004
243 #define MF_ERROR_CHECK_DST_EXIST                        0x0008
244 #define MF_ERROR_CHECK_SRC_PATH_VALID           0x0010
245 #define MF_ERROR_CHECK_DST_PATH_VALID           0x0020
246 #define MF_ERROR_CHECK_SRC_PARENT_DIR_EXIST     0x0040
247 #define MF_ERROR_CHECK_DST_PARENT_DIR_EXIST     0x0080
248 #define MF_ERROR_CHECK_DUPLICATED                       0x0100
249
250 /*      File system error definition    */
251 #define MF_ERROR_MASKL16       0xFFFF
252
253 #define MF_ERROR_SET(X)        (X & MF_ERROR_MASKL16)
254
255 #define MID_CONTENTS_MGR_ERROR  0
256
257 #define MYFILE_ERR_NONE   (MID_CONTENTS_MGR_ERROR - MF_ERROR_SET(0x00))    /**< No error */
258
259 /*1-10*/
260 #define MYFILE_ERR_SRC_ARG_INVALID              (MID_CONTENTS_MGR_ERROR - MF_ERROR_SET(0x01))   /**< invalid src argument */
261 #define MYFILE_ERR_DST_ARG_INVALID              (MID_CONTENTS_MGR_ERROR - MF_ERROR_SET(0x02))   /**< invalid dst argument */
262 #define MYFILE_ERR_FILE_DELETE_FAIL             (MID_CONTENTS_MGR_ERROR - MF_ERROR_SET(0x03))   /**< exception of delete file */
263 #define MYFILE_ERR_FILE_MOVE_FAIL               (MID_CONTENTS_MGR_ERROR - MF_ERROR_SET(0x04))   /**< exception of move file */
264 #define MYFILE_ERR_FILE_COPY_FAIL               (MID_CONTENTS_MGR_ERROR - MF_ERROR_SET(0x05))   /**< exception of copy file */
265 #define MYFILE_ERR_FILE_WRITE_FAIL              (MID_CONTENTS_MGR_ERROR - MF_ERROR_SET(0x06))   /**< exception of read file */
266 #define MYFILE_ERR_RENAME_FAIL                  (MID_CONTENTS_MGR_ERROR - MF_ERROR_SET(0x07))    /**< exception of rename file */
267 #define MYFILE_ERR_FILE_NOT_FOUND               (MID_CONTENTS_MGR_ERROR - MF_ERROR_SET(0x08))   /**< exception of file doesn't exist*/
268 #define MYFILE_ERR_DIR_OPEN_FAIL                (MID_CONTENTS_MGR_ERROR - MF_ERROR_SET(0x09))   /**< exception of dir open*/
269 #define MYFILE_ERR_DIR_CREATE_FAIL              (MID_CONTENTS_MGR_ERROR - MF_ERROR_SET(0x0a))   /**< exception of create dir */
270
271 /*11-20*/
272 #define MYFILE_ERR_DIR_DELETE_FAIL              (MID_CONTENTS_MGR_ERROR - MF_ERROR_SET(0x0b))   /**< exception of delete dir */
273 #define MYFILE_ERR_FILE_OPEN_FAIL               (MID_CONTENTS_MGR_ERROR - MF_ERROR_SET(0x0c))    /**< exception of rename dir */
274 #define MYFILE_ERR_DIR_COPY_FAIL                (MID_CONTENTS_MGR_ERROR - MF_ERROR_SET(0x0d))   /**< exception of copy dir */
275 #define MYFILE_ERR_DIR_MOVE_FAIL                (MID_CONTENTS_MGR_ERROR - MF_ERROR_SET(0x0e))   /**< exception of move dir */
276 #define MYFILE_ERR_DIR_FULL                     (MID_CONTENTS_MGR_ERROR - MF_ERROR_SET(0x0f))   /**< exception of dir full */
277 #define MYFILE_ERR_DIR_TOO_DEEP                 (MID_CONTENTS_MGR_ERROR - MF_ERROR_SET(0x10))   /**< exception of too deep dir */
278 #define MYFILE_ERR_DIR_NOT_FOUND                (MID_CONTENTS_MGR_ERROR - MF_ERROR_SET(0x11))   /**< exception of dir doesn't exist*/
279 #define MYFILE_ERR_INVALID_DIR_NAME             (MID_CONTENTS_MGR_ERROR - MF_ERROR_SET(0x12))   /**< exception of invalid dir name */
280 #define MYFILE_ERR_INVALID_DIR_PATH             (MID_CONTENTS_MGR_ERROR - MF_ERROR_SET(0x13))   /**< exception of invalid dir path */
281 #define MYFILE_ERR_INVALID_FILE_NAME            (MID_CONTENTS_MGR_ERROR - MF_ERROR_SET(0x14))   /**< exception of invalid file name */
282
283 /*21-30*/
284 #define MYFILE_ERR_INVALID_FILE_PATH            (MID_CONTENTS_MGR_ERROR - MF_ERROR_SET(0x15))   /**< exception of invalid file path */
285 #define MYFILE_ERR_GET_MEMORY_STATUS_FAIL       (MID_CONTENTS_MGR_ERROR - MF_ERROR_SET(0x16))   /**< exception of statfs */
286 #define MYFILE_ERR_DUPLICATED_NAME              (MID_CONTENTS_MGR_ERROR - MF_ERROR_SET(0x17))    /**< exception of duplicated dir name*/
287 #define MYFILE_ERR_SYSTEM_DIR                   (MID_CONTENTS_MGR_ERROR - MF_ERROR_SET(0x18))   /**< exception of operating on system dir.*/
288 #define MYFILE_ERR_DIR_RECUR                    (MID_CONTENTS_MGR_ERROR - MF_ERROR_SET(0x19))   /**< exception of copy/move a dir to its child */
289 #define MYFILE_ERR_ALLOCATE_MEMORY_FAIL         (MID_CONTENTS_MGR_ERROR - MF_ERROR_SET(0x1a))   /**< exception of memory allocation */
290 #define MYFILE_ERR_OUT_OF_RANGE                 (MID_CONTENTS_MGR_ERROR - MF_ERROR_SET(0x1b))
291 #define MYFILE_ERR_INVALID_PATH                 (MID_CONTENTS_MGR_ERROR - MF_ERROR_SET(0x1c))    /**< invalid path string */
292 #define MYFILE_ERR_ROOT_PATH                    (MID_CONTENTS_MGR_ERROR - MF_ERROR_SET(0x1d))    /**< root path */
293 #define MYFILE_ERR_DCM_ENGINE_APPEND            (MID_CONTENTS_MGR_ERROR - MF_ERROR_SET(0x1e))    /**< fail to append dcm data */
294
295 /*31-40*/
296 #define MYFILE_ERR_NOT_MMF_FILE                 (MID_CONTENTS_MGR_ERROR - MF_ERROR_SET(0x1f))   /**< isn't mmf file */
297 #define MYFILE_ERR_SMAF_PERMISSION_DENY         (MID_CONTENTS_MGR_ERROR - MF_ERROR_SET(0x20))   /**< smaf lock prohibits copy/move from mmc to phone */
298 #define MYFILE_ERR_DRM_PERMISSION_DENY          (MID_CONTENTS_MGR_ERROR - MF_ERROR_SET(0x21))       /**< can't copy/move drm file because of permission */
299 #define MYFILE_ERR_COPY_TO_SRC_DIR              (MID_CONTENTS_MGR_ERROR - MF_ERROR_SET(0x22))       /**< can't copy dir to source place*/
300 #define MYFILE_ERR_COPY_ROOT_DIR                (MID_CONTENTS_MGR_ERROR - MF_ERROR_SET(0x23))       /**< can't copy root dir*/
301 #define MYFILE_ERR_COPY_TO_SRC_FILE             (MID_CONTENTS_MGR_ERROR - MF_ERROR_SET(0x24))       /**< can't copy file to source place*/
302 #define MYFILE_ERR_MOVE_TO_SRC_DIR              (MID_CONTENTS_MGR_ERROR - MF_ERROR_SET(0x25))       /**< can't move dir to source place */
303 #define MYFILE_ERR_MOVE_ROOT_DIR                (MID_CONTENTS_MGR_ERROR - MF_ERROR_SET(0x26))       /**< can't move root dir */
304 #define MYFILE_ERR_MOVE_TO_SRC_FILE             (MID_CONTENTS_MGR_ERROR - MF_ERROR_SET(0x27))       /**< can't move file to source place*/
305 #define MYFILE_ERR_MOVE_FILE_USING              (MID_CONTENTS_MGR_ERROR - MF_ERROR_SET(0x28))       /**< can't move the file is being used*/
306
307 /*41-50*/
308 #define MYFILE_ERR_DELETE_ROOT_DIR              (MID_CONTENTS_MGR_ERROR - MF_ERROR_SET(0x29))       /**< can't delete root dir */
309 #define MYFILE_ERR_DELETE_SYSTEM_DIR            (MID_CONTENTS_MGR_ERROR - MF_ERROR_SET(0x2a))       /**< can't delete system dir */
310 #define MYFILE_ERR_RENAME_ROOT_DIR              (MID_CONTENTS_MGR_ERROR - MF_ERROR_SET(0x2b))       /**< can't rename root dir */
311 #define MYFILE_ERR_RENAME_SYSTEM_DIR            (MID_CONTENTS_MGR_ERROR - MF_ERROR_SET(0x2c))       /**< can't rename system dir */
312 #define MYFILE_ERR_EXCEED_MAX_LENGTH            (MID_CONTENTS_MGR_ERROR - MF_ERROR_SET(0x2d))       /**< length of file/dir path exceeds maximum length*/
313 #define MYFILE_ERR_LOW_MEMORY                   (MID_CONTENTS_MGR_ERROR - MF_ERROR_SET(0x2e))       /**< low memory*/
314 #define MYFILE_ERR_UNKNOWN_ERROR                (MID_CONTENTS_MGR_ERROR - MF_ERROR_SET(0x2f))       /**< unknow error*/
315 #define MYFILE_ERR_WRONG_FILE_TYPE              (MID_CONTENTS_MGR_ERROR - MF_ERROR_SET(0x30))       /**< wrong file type */
316 #define MYFILE_ERR_FILE_IS_BEING_USED           (MID_CONTENTS_MGR_ERROR - MF_ERROR_SET(0x31))       /**< file is being used */
317 #define MYFILE_ERR_SRC_NOT_EXIST                (MID_CONTENTS_MGR_ERROR - MF_ERROR_SET(0x32))   /**< source not found */
318
319 /*51-60*/
320 #define MYFILE_ERR_DST_NOT_EXIST                (MID_CONTENTS_MGR_ERROR - MF_ERROR_SET(0x33))   /**< destination not found */
321 #define MYFILE_ERR_CREATE_TEMP_FAIL             (MID_CONTENTS_MGR_ERROR - MF_ERROR_SET(0x34))   /**< create temp file failed */
322 #define MYFILE_ERR_GET_LOGIC_PATH_FAIL          (MID_CONTENTS_MGR_ERROR - MF_ERROR_SET(0x35))   /**< get logical path failed */
323 #define MYFILE_ERR_STORAGE_TYPE_ERROR           (MID_CONTENTS_MGR_ERROR - MF_ERROR_SET(0x36))   /**< storage type error */
324 #define MYFILE_ERR_EXT_GET_ERROR                (MID_CONTENTS_MGR_ERROR - MF_ERROR_SET(0x37))   /**< get ext type failed */
325 #define MYFILE_ERR_GET_PARENT_PATH_FAIL         (MID_CONTENTS_MGR_ERROR - MF_ERROR_SET(0x38))   /**< get parent path failed */
326 #define MYFILE_ERR_GET_STAT_FAIL                (MID_CONTENTS_MGR_ERROR - MF_ERROR_SET(0x39))   /**< get stat failed */
327 #define MYFILE_ERR_GENERATE_NAME_FAIL           (MID_CONTENTS_MGR_ERROR - MF_ERROR_SET(0x3a))   /**< generate name failed */
328 #define MYFILE_ERR_GET_CATEGORY_FAIL            (MID_CONTENTS_MGR_ERROR - MF_ERROR_SET(0x3b))   /**< get file category failed */
329 #define MYFILE_ERR_GET_VCONF_FAIL               (MID_CONTENTS_MGR_ERROR - MF_ERROR_SET(0x3c))   /**< get vconf value failed */
330
331 /*61-70*/
332 #define MYFILE_ERR_SETTING_RESET_FAIL           (MID_CONTENTS_MGR_ERROR - MF_ERROR_SET(0x3d))   /**< setting item reset  failed */
333 #define MYFILE_ERR_DIR_CLEAR_FAILED             (MID_CONTENTS_MGR_ERROR - MF_ERROR_SET(0x3e))   /**< dir not clearly deleted */
334 #define MYFILE_ERR_SETTING_DELETE_FAILED        (MID_CONTENTS_MGR_ERROR - MF_ERROR_SET(0x3f))   /**< delete setting item failed */
335 #define MYFILE_ERR_GET_THUMBNAIL_FAILED         (MID_CONTENTS_MGR_ERROR - MF_ERROR_SET(0x40))   /**< get file thumbnail failed */
336 #define MYFILE_ERR_CANCEL_PRESSED               (MID_CONTENTS_MGR_ERROR - MF_ERROR_SET(0x41))   /**< cancel pressed while copy/move */
337 #define MYFILE_ERR_ACCESS_MODE                  (MID_CONTENTS_MGR_ERROR - MF_ERROR_SET(0x42))   /**< access mode not satisfied */
338 #define MYFILE_ERR_FILE_READ_FAIL               (MID_CONTENTS_MGR_ERROR - MF_ERROR_SET(0x43))   /**< exception of read file */
339 #define MYFILE_ERR_INVALID_ARG                  (MID_CONTENTS_MGR_ERROR - MF_ERROR_SET(0x44))          /**< argument of function is not valid */
340 #define MYFILE_ERR_NO_FREE_SPACE                (MID_CONTENTS_MGR_ERROR - MF_ERROR_SET(0x45))          /**< get free space failed */
341 #define MYFILE_ERR_GET_NAVI_FAILED              (MID_CONTENTS_MGR_ERROR - MF_ERROR_SET(0x46))          /**< get navigation bar failed */
342
343 /*71-80*/
344 #define MYFILE_ERR_STORAGE_INUSE_REMOVED        (MID_CONTENTS_MGR_ERROR - MF_ERROR_SET(0x47))          /**< get navigation bar failed */
345 #define MYFILE_ERR_VCONF_GET_FAILED             (MID_CONTENTS_MGR_ERROR - MF_ERROR_SET(0x48))          /**< get vconf value failed */
346
347 /*      File system related callback definition */
348 typedef int (*myfile_operation_cb) (const char *current_path,
349                                     const char *destination, int copied_size, FILE * fSource, FILE * fDestination, void *data);
350
351 typedef struct _FS_NODE_INFO fsNodeInfo;
352
353 struct _FS_NODE_INFO {
354         char *path;
355         char *name;
356         UDate date;
357         fsFileType type;
358         char *ext;
359         off_t size;
360 };
361
362
363 int mf_fs_oper_error(const char *src, const char *dst, int check_option);
364 void mf_fs_oper_print_node(fsNodeInfo *pNode);
365 /**********                     File Attribute Related                  **********/
366 int mf_file_attr_get_file_stat(const char *filename, fsNodeInfo **node);
367
368 int mf_file_attr_get_file_category(const char *filepath, fsFileType *category);
369 fsFileType mf_file_attr_get_file_type_by_mime(const char *file_path);
370
371 int mf_file_attr_is_dir(const char *filepath);
372 int mf_file_attr_get_store_type_by_full(const char *filepath, MF_STORAGE *store_type);
373 int mf_file_attr_get_file_ext(const char *filepath, char **file_ext);
374 int mf_file_attr_is_duplicated_name(const char *dir, const char *name);
375 int mf_file_attr_is_valid_name(const char *filename);
376 int mf_file_attr_is_right_dir_path(const char *dir_path);
377 int mf_file_attr_is_right_file_path(const char *file_path);
378 int mf_file_attr_get_parent_path(const char *path, char **parent_path);
379 int mf_file_attr_get_logical_path_by_full(const char *full_path, char **path);
380 void mf_file_attr_get_file_size_info(char **file_size, fsNodeInfo *pNode);
381
382 /**********                     File Operation Related                  **********/
383 int mf_fs_oper_read_dir(const char *path, Eina_List **dir_list, Eina_List **file_list);
384 void mf_fs_oper_sort_list(Eina_List **list, int sort_opt);
385 int mf_fs_oper_create_dir(const char *dir);
386 int mf_fs_oper_rename_file(const char *src, const char *dst);
387 int mf_file_attr_get_file_icon(const char *file_path, int *error_code, int view_type, const char **thumbnail, media_info_h *media_info);
388 const char *mf_file_attr_get_default_icon_by_type(fsFileType ftype);
389 const char *mf_file_attr_get_default_thumbnail_by_type(fsFileType ftype);
390 int mf_file_attr_get_path_level(const char *fullpath, int *level);
391 int mf_file_attr_is_system_dir(char *fullpath, bool *result);
392 int mf_file_attr_is_disk_link(const char *fullpath, bool *result);
393
394 #endif