static void * _load_position_fb() { plugin_t *plugin = calloc(1, sizeof(plugin_t)); plugin->state_file = xasprintf("%s" FBREADER_STATE_FILE, getenv("HOME")); plugin->cache = NULL; plugin->monitor = ecore_file_monitor_add(plugin->state_file, _positions_updated, plugin); return plugin; }
int posix_monitor_add(evfs_client * client, evfs_command * command) { Ecore_List *mon_list = ecore_hash_get(posix_monitor_hash, evfs_command_first_file_get(command)->path); evfs_file_monitor *mon; evfs_file_monitor *old; mon = calloc(1, sizeof(evfs_file_monitor)); mon->client = client; mon->monitor_path = strdup(evfs_command_first_file_get(command)->path); /*Check if we are already monitoring, if not, make a new list of monitors.. */ if (!mon_list) { /*printf("No previous instance, making a new list, monitoring..\n"); */ mon_list = ecore_list_new(); ecore_hash_set(posix_monitor_hash, mon->monitor_path, mon_list); printf("Adding monitor on path '%s'\n", mon->monitor_path); if (! (mon->em = ecore_file_monitor_add(mon->monitor_path, &evfs_file_monitor_fam_handler, mon->monitor_path))) { fprintf(stderr, "EVFS: Error monitoring '%s'\n", mon->monitor_path); } ecore_list_append(mon_list, mon); } else { if (!client_already_monitoring(client, mon_list)) { /*We assume there is something already in the list. This is probably bad a bad assumption */ ecore_list_first_goto(mon_list); old = ecore_list_current(mon_list); /*Make sure we have the ecore ref, so the last monitor can nuke it */ mon->em = old->em; ecore_list_append(mon_list, mon); } else { printf("Oi, dufus, you're already monitoring this object\n"); } } return 0; }
static Eina_Bool volume_timer(void *data) { char buf[4096]; volume_load(); volumes_load_timer = NULL; if (volumes_file_mon) ecore_file_monitor_del(volumes_file_mon); snprintf(buf, sizeof(buf), "%s/volumes", config); volumes_file_mon = ecore_file_monitor_add(buf, volume_file_change, NULL); return EINA_FALSE; }
void jk_monitor_add(MonitorCallback cb, void* data, const char* path) { //ecore_file_init(); //TODO ecore_file_shutdown struct _CbData* cbdata = calloc(1, sizeof *cbdata); cbdata->cb = cb; cbdata->data = data; printf("TODO ERASE data"); Ecore_File_Monitor * efm = ecore_file_monitor_add(path, _monitor_add, cbdata ); }
/** * @internal * @param file File to monitor * @return Returns no value. * @brief Creates a new file monitor if we aren't already monitoring the * given file */ static void efreet_mime_monitor_add(const char *file) { Ecore_File_Monitor *fm = NULL; /* if this is already in our hash then we're already monitoring so no * reason to re-monitor */ if (eina_hash_find(monitors, file)) return; if ((fm = ecore_file_monitor_add(file, efreet_mime_cb_update_file, NULL))) { eina_hash_del(monitors, file, NULL); eina_hash_add(monitors, file, fm); } }
/** * @internal * @return Returns > 0 on success or 0 on failure * @brief Initialize the Desktop parser subsystem */ int efreet_desktop_init(void) { char buf[PATH_MAX]; _efreet_desktop_log_dom = eina_log_domain_register("Efreet_desktop", EFREET_DEFAULT_LOG_COLOR); if (_efreet_desktop_log_dom < 0) { ERROR("Efreet: Could not create a log domain for Efreet_desktop"); return 0; } if (!ecore_file_init()) goto ecore_error; desktop_edd = efreet_desktop_edd_init(); if (!desktop_edd) goto edd_error; efreet_desktop_cache = eina_hash_string_superfast_new(NULL); efreet_desktop_types = NULL; EFREET_DESKTOP_TYPE_APPLICATION = efreet_desktop_type_add("Application", efreet_desktop_application_fields_parse, efreet_desktop_application_fields_save, NULL); EFREET_DESKTOP_TYPE_LINK = efreet_desktop_type_add("Link", efreet_desktop_link_fields_parse, efreet_desktop_link_fields_save, NULL); EFREET_DESKTOP_TYPE_DIRECTORY = efreet_desktop_type_add("Directory", NULL, NULL, NULL); EFREET_EVENT_DESKTOP_CACHE_UPDATE = ecore_event_type_new(); snprintf(buf, sizeof(buf), "%s/.efreet", efreet_home_dir_get()); if (!ecore_file_mkpath(buf)) goto cache_error; if (efreet_cache_update) { efreet_desktop_exe_handler = ecore_event_handler_add(ECORE_EXE_EVENT_DEL, efreet_desktop_exe_cb, NULL); if (!efreet_desktop_exe_handler) goto cache_error; cache_monitor = ecore_file_monitor_add(buf, efreet_desktop_cache_update_cb, NULL); if (!cache_monitor) goto handler_error; efreet_desktop_changes_listen(); ecore_exe_run(PACKAGE_LIB_DIR "/efreet/efreet_desktop_cache_create", NULL); } /* TODO: Defer eet open until we actually need it open. */ cache = eet_open(efreet_desktop_cache_file(), EET_FILE_MODE_READ); return 1; handler_error: if (efreet_desktop_exe_handler) ecore_event_handler_del(efreet_desktop_exe_handler); cache_error: if (efreet_desktop_cache) eina_hash_free(efreet_desktop_cache); edd_error: ecore_file_shutdown(); ecore_error: eina_log_domain_unregister(_efreet_desktop_log_dom); return 0; }