5 #include "ecore_file_private.h"
8 ECORE_FILE_MONITOR_TYPE_NONE,
10 ECORE_FILE_MONITOR_TYPE_INOTIFY,
12 #ifdef HAVE_NOTIFY_WIN32
13 ECORE_FILE_MONITOR_TYPE_NOTIFY_WIN32,
16 ECORE_FILE_MONITOR_TYPE_POLL
18 } Ecore_File_Monitor_Type;
20 static Ecore_File_Monitor_Type monitor_type = ECORE_FILE_MONITOR_TYPE_NONE;
23 ecore_file_monitor_init(void)
26 monitor_type = ECORE_FILE_MONITOR_TYPE_INOTIFY;
27 if (ecore_file_monitor_inotify_init())
30 #ifdef HAVE_NOTIFY_WIN32
31 monitor_type = ECORE_FILE_MONITOR_TYPE_NOTIFY_WIN32;
32 if (ecore_file_monitor_win32_init())
36 monitor_type = ECORE_FILE_MONITOR_TYPE_POLL;
37 if (ecore_file_monitor_poll_init())
40 monitor_type = ECORE_FILE_MONITOR_TYPE_NONE;
45 ecore_file_monitor_shutdown(void)
49 case ECORE_FILE_MONITOR_TYPE_NONE:
52 case ECORE_FILE_MONITOR_TYPE_INOTIFY:
53 ecore_file_monitor_inotify_shutdown();
56 #ifdef HAVE_NOTIFY_WIN32
57 case ECORE_FILE_MONITOR_TYPE_NOTIFY_WIN32:
58 ecore_file_monitor_win32_shutdown();
62 case ECORE_FILE_MONITOR_TYPE_POLL:
63 ecore_file_monitor_poll_shutdown();
70 * Monitor a path using inotify or polling
71 * @param path The path to monitor
72 * @param func The function to call on changes
73 * @param data The data passed to func
74 * @return An Ecore_File_Monitor pointer or NULL on failure
76 EAPI Ecore_File_Monitor *
77 ecore_file_monitor_add(const char *path,
78 void (*func) (void *data,
79 Ecore_File_Monitor *em,
80 Ecore_File_Event event,
86 case ECORE_FILE_MONITOR_TYPE_NONE:
89 case ECORE_FILE_MONITOR_TYPE_INOTIFY:
90 return ecore_file_monitor_inotify_add(path, func, data);
92 #ifdef HAVE_NOTIFY_WIN32
93 case ECORE_FILE_MONITOR_TYPE_NOTIFY_WIN32:
94 return ecore_file_monitor_win32_add(path, func, data);
97 case ECORE_FILE_MONITOR_TYPE_POLL:
98 return ecore_file_monitor_poll_add(path, func, data);
105 * Stop monitoring a path
106 * @param em The Ecore_File_Monitor to stop
109 ecore_file_monitor_del(Ecore_File_Monitor *em)
111 switch (monitor_type)
113 case ECORE_FILE_MONITOR_TYPE_NONE:
116 case ECORE_FILE_MONITOR_TYPE_INOTIFY:
117 ecore_file_monitor_inotify_del(em);
120 #ifdef HAVE_NOTIFY_WIN32
121 case ECORE_FILE_MONITOR_TYPE_NOTIFY_WIN32:
122 ecore_file_monitor_win32_del(em);
126 case ECORE_FILE_MONITOR_TYPE_POLL:
127 ecore_file_monitor_poll_del(em);
134 * Get the monitored path
135 * @param em The Ecore_File_Monitor to query
136 * @return The path that is monitored by @p em
139 ecore_file_monitor_path_get(Ecore_File_Monitor *em)