forked from enlightenment/efl
efreet: listen for changes recursivly
SVN revision: 48036
This commit is contained in:
parent
1488a1889d
commit
80e3b951fa
|
@ -12,6 +12,7 @@
|
||||||
#include <sys/file.h>
|
#include <sys/file.h>
|
||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
#include <sys/mman.h>
|
#include <sys/mman.h>
|
||||||
|
#include <dirent.h>
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
# include <winsock2.h>
|
# include <winsock2.h>
|
||||||
|
@ -139,6 +140,7 @@ static void efreet_desktop_update_cache_job(void *data);
|
||||||
static int efreet_desktop_exe_cb(void *data, int type, void *event);
|
static int efreet_desktop_exe_cb(void *data, int type, void *event);
|
||||||
|
|
||||||
static void efreet_desktop_changes_listen(void);
|
static void efreet_desktop_changes_listen(void);
|
||||||
|
static void efreet_desktop_changes_listen_recursive(const char *path);
|
||||||
static void efreet_desktop_changes_cb(void *data, Ecore_File_Monitor *em,
|
static void efreet_desktop_changes_cb(void *data, Ecore_File_Monitor *em,
|
||||||
Ecore_File_Event event, const char *path);
|
Ecore_File_Event event, const char *path);
|
||||||
|
|
||||||
|
@ -1521,11 +1523,7 @@ efreet_desktop_changes_listen(void)
|
||||||
|
|
||||||
EINA_LIST_FREE(dirs, path)
|
EINA_LIST_FREE(dirs, path)
|
||||||
{
|
{
|
||||||
/* TODO: recursive */
|
efreet_desktop_changes_listen_recursive(path);
|
||||||
eina_hash_add(change_monitors, path,
|
|
||||||
ecore_file_monitor_add(path,
|
|
||||||
efreet_desktop_changes_cb,
|
|
||||||
NULL));
|
|
||||||
eina_stringshare_del(path);
|
eina_stringshare_del(path);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1557,6 +1555,30 @@ error:
|
||||||
if (dirsfd > 0) close(dirsfd);
|
if (dirsfd > 0) close(dirsfd);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
efreet_desktop_changes_listen_recursive(const char *path)
|
||||||
|
{
|
||||||
|
char buf[PATH_MAX];
|
||||||
|
DIR *files;
|
||||||
|
struct dirent *file;
|
||||||
|
|
||||||
|
eina_hash_add(change_monitors, path,
|
||||||
|
ecore_file_monitor_add(path,
|
||||||
|
efreet_desktop_changes_cb,
|
||||||
|
NULL));
|
||||||
|
|
||||||
|
files = opendir(path);
|
||||||
|
while ((file = readdir(files)))
|
||||||
|
{
|
||||||
|
if (!file) break;
|
||||||
|
if (!strcmp(file->d_name, ".") || !strcmp(file->d_name, "..")) continue;
|
||||||
|
|
||||||
|
snprintf(buf, sizeof(buf), "%s/%s", path, file->d_name);
|
||||||
|
if (ecore_file_is_dir(buf)) efreet_desktop_changes_listen_recursive(buf);
|
||||||
|
}
|
||||||
|
closedir(files);
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
efreet_desktop_changes_cb(void *data __UNUSED__, Ecore_File_Monitor *em __UNUSED__,
|
efreet_desktop_changes_cb(void *data __UNUSED__, Ecore_File_Monitor *em __UNUSED__,
|
||||||
Ecore_File_Event event, const char *path)
|
Ecore_File_Event event, const char *path)
|
||||||
|
|
Loading…
Reference in New Issue