2 * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
9 #include "ecore_file_private.h"
12 ECORE_FILE_MONITOR_TYPE_NONE,
14 ECORE_FILE_MONITOR_TYPE_INOTIFY,
16 #ifdef HAVE_NOTIFY_WIN32
17 ECORE_FILE_MONITOR_TYPE_NOTIFY_WIN32,
20 ECORE_FILE_MONITOR_TYPE_POLL
22 } Ecore_File_Monitor_Type;
24 static Ecore_File_Monitor_Type monitor_type = ECORE_FILE_MONITOR_TYPE_NONE;
27 ecore_file_monitor_init(void)
30 monitor_type = ECORE_FILE_MONITOR_TYPE_INOTIFY;
31 if (ecore_file_monitor_inotify_init())
34 #ifdef HAVE_NOTIFY_WIN32
35 monitor_type = ECORE_FILE_MONITOR_TYPE_NOTIFY_WIN32;
36 if (ecore_file_monitor_win32_init())
40 monitor_type = ECORE_FILE_MONITOR_TYPE_POLL;
41 if (ecore_file_monitor_poll_init())
44 monitor_type = ECORE_FILE_MONITOR_TYPE_NONE;
49 ecore_file_monitor_shutdown(void)
53 case ECORE_FILE_MONITOR_TYPE_NONE:
56 case ECORE_FILE_MONITOR_TYPE_INOTIFY:
57 ecore_file_monitor_inotify_shutdown();
60 #ifdef HAVE_NOTIFY_WIN32
61 case ECORE_FILE_MONITOR_TYPE_NOTIFY_WIN32:
62 ecore_file_monitor_win32_shutdown();
66 case ECORE_FILE_MONITOR_TYPE_POLL:
67 ecore_file_monitor_poll_shutdown();
74 * Monitor a path using inotify or polling
75 * @param path The path to monitor
76 * @param func The function to call on changes
77 * @param data The data passed to func
78 * @return An Ecore_File_Monitor pointer or NULL on failure
80 EAPI Ecore_File_Monitor *
81 ecore_file_monitor_add(const char *path,
82 void (*func) (void *data,
83 Ecore_File_Monitor *em,
84 Ecore_File_Event event,
90 case ECORE_FILE_MONITOR_TYPE_NONE:
93 case ECORE_FILE_MONITOR_TYPE_INOTIFY:
94 return ecore_file_monitor_inotify_add(path, func, data);
96 #ifdef HAVE_NOTIFY_WIN32
97 case ECORE_FILE_MONITOR_TYPE_NOTIFY_WIN32:
98 return ecore_file_monitor_win32_add(path, func, data);
101 case ECORE_FILE_MONITOR_TYPE_POLL:
102 return ecore_file_monitor_poll_add(path, func, data);
109 * Stop monitoring a path
110 * @param em The Ecore_File_Monitor to stop
113 ecore_file_monitor_del(Ecore_File_Monitor *em)
115 switch (monitor_type)
117 case ECORE_FILE_MONITOR_TYPE_NONE:
120 case ECORE_FILE_MONITOR_TYPE_INOTIFY:
121 ecore_file_monitor_inotify_del(em);
124 #ifdef HAVE_NOTIFY_WIN32
125 case ECORE_FILE_MONITOR_TYPE_NOTIFY_WIN32:
126 ecore_file_monitor_win32_del(em);
130 case ECORE_FILE_MONITOR_TYPE_POLL:
131 ecore_file_monitor_poll_del(em);
138 * Get the monitored path
139 * @param em The Ecore_File_Monitor to query
140 * @return The path that is monitored by @p em
143 ecore_file_monitor_path_get(Ecore_File_Monitor *em)