#ifndef _ECORE_DATA_H
# define _ECORE_DATA_H
-#include <Eina.h>
-
#ifdef EAPI
# undef EAPI
#endif
/* we need this for size_t */
#include <stddef.h>
+#include <Eina.h>
+
/**
* @file Ecore_Data.h
* @brief Contains threading, list, hash, debugging and tree functions.
struct _ecore_path_group
{
- Ecore_List *paths;
+ Eina_List *paths;
};
/*
/*
* Get a list of all the available files in a path set
*/
- EAPI Ecore_List * ecore_path_group_available_get(Ecore_Path_Group *group);
+ EAPI Eina_List * ecore_path_group_available_get(Ecore_Path_Group *group);
typedef struct _ecore_plugin Ecore_Plugin;
*/
EAPI void *ecore_plugin_symbol_get(Ecore_Plugin * plugin, const char *symbol_name);
- EAPI Ecore_List *ecore_plugin_available_get(Ecore_Path_Group *group);
+ EAPI Eina_List *ecore_plugin_available_get(Ecore_Path_Group *group);
typedef struct _ecore_heap Ecore_Sheap;
Eina_List *
ecore_getopt_list_free(Eina_List *list)
{
- while (list)
- {
- free(list->data);
- list = eina_list_remove_list(list, list);
- }
+ void *data;
+
+ EINA_LIST_FREE(list, data)
+ free(data);
return NULL;
}
EAPI void
ecore_path_group_del(Ecore_Path_Group *group)
{
- CHECK_PARAM_POINTER("group", group);
+ char *path;
- if (group->paths)
- ecore_list_destroy(group->paths);
+ CHECK_PARAM_POINTER("group", group);
+ EINA_LIST_FREE(group->paths, path)
+ free(path);
free(group);
}
CHECK_PARAM_POINTER("group", group);
CHECK_PARAM_POINTER("path", path);
- if (!group->paths)
- {
- group->paths = ecore_list_new();
- ecore_list_free_cb_set(group->paths, free);
- }
-
- ecore_list_append(group->paths, strdup(path));
+ group->paths = eina_list_append(group->paths, strdup(path));
}
/**
/*
* Find the path in the list of available paths
*/
- ecore_list_first_goto(group->paths);
-
- while ((found = ecore_list_current(group->paths)) && strcmp(found, path))
- ecore_list_next(group->paths);
+ found = eina_list_search_unsorted(group->paths, strcmp, path);
/*
* If the path is found, remove and free it
*/
if (found)
- ecore_list_remove_destroy(group->paths);
+ {
+ group->paths = eina_list_remove(group->paths, found);
+ free(found);
+ }
}
/**
EAPI char *
ecore_path_group_find(Ecore_Path_Group *group, const char *name)
{
+ Eina_List *l;
int r;
char *p;
struct stat st;
/*
* Search the paths of the path group for the specified file name
*/
- ecore_list_first_goto(group->paths);
- p = ecore_list_next(group->paths);
- do
+ EINA_LIST_FOREACH(group->paths, l, p)
{
snprintf(path, PATH_MAX, "%s/%s", p, name);
r = stat(path, &st);
+ if ((r >= 0) && S_ISREG(st.st_mode))
+ break;
}
- while (((r < 0) || !S_ISREG(st.st_mode)) &&
- (p = ecore_list_next(group->paths)));
if (p)
p = strdup(path);
* identified by @p group_id. @c NULL otherwise.
* @ingroup Ecore_Path_Group
*/
-EAPI Ecore_List *
+EAPI Eina_List *
ecore_path_group_available_get(Ecore_Path_Group *group)
{
- Ecore_List *avail = NULL;
+ Eina_List *avail = NULL;
+ Eina_List *l;
char *path;
CHECK_PARAM_POINTER_RETURN("group", group, NULL);
- if (!group->paths || ecore_list_empty_is(group->paths))
+ if (!group->paths || !eina_list_count(group->paths))
return NULL;
- ecore_list_first_goto(group->paths);
-
- while ((path = ecore_list_next(group->paths)) != NULL)
+ EINA_LIST_FOREACH(group->paths, l, path)
{
DIR *dir;
struct stat st;
strncpy(n, d->d_name, l - 2);
*/
- if (!avail)
- avail = ecore_list_new();
-
-/* ecore_list_append(avail, strdup(n));*/
- ecore_list_append(avail, strdup(d->d_name));
+/* avail = eina_list_append(avail, strdup(n));*/
+ avail = eina_list_append(avail, strdup(d->d_name));
}
}
return avail;
}
+
#include "ecore_private.h"
-static Ecore_List *loaded_plugins = NULL;
+static Eina_List *loaded_plugins = NULL;
static Eina_Bool _hash_keys(const Eina_Hash *hash,
const char *key,
/*
* Now add it to the list of the groups loaded plugins
*/
- if (!loaded_plugins)
- loaded_plugins = ecore_list_new();
- ecore_list_append(loaded_plugins, plugin);
+ loaded_plugins = eina_list_append(loaded_plugins, plugin);
FREE(path);
if (!plugin->handle)
return;
- if (ecore_list_goto(loaded_plugins, plugin))
- ecore_list_remove(loaded_plugins);
-
- if (ecore_list_empty_is(loaded_plugins))
- {
- ecore_list_destroy(loaded_plugins);
- loaded_plugins = NULL;
- }
+ loaded_plugins = eina_list_remove(loaded_plugins, plugin);
dlclose(plugin->handle);
* paths identified by @p group_id. @c NULL otherwise.
* @ingroup Ecore_Plugin
*/
-EAPI Ecore_List *
+EAPI Eina_List *
ecore_plugin_available_get(Ecore_Path_Group *group)
{
- Ecore_List *avail = NULL;
+ Eina_List *avail = NULL;
+ Eina_List *l;
Eina_Hash *plugins = NULL;
Eina_Iterator *it = NULL;
char *path;
CHECK_PARAM_POINTER_RETURN("group", group, NULL);
- if (!group->paths || ecore_list_empty_is(group->paths))
+ if (!group->paths || !eina_list_count(group->paths))
return NULL;
- ecore_list_first_goto(group->paths);
plugins = eina_hash_string_superfast_new(NULL);
- while ((path = ecore_list_next(group->paths)) != NULL)
+ EINA_LIST_FOREACH(group->paths, l, path)
{
DIR *dir;
struct stat st;
closedir(dir);
}
- avail = ecore_list_new();
- ecore_list_free_cb_set(avail, free);
-
-
it = eina_hash_iterator_data_new(plugins);
if (it)
{
- eina_iterator_foreach(it, EINA_EACH(_hash_keys), avail);
+ eina_iterator_foreach(it, EINA_EACH(_hash_keys), &avail);
eina_iterator_free(it);
}
static Eina_Bool
_hash_keys(const Eina_Hash *hash __UNUSED__, const char *key, void *list)
{
- ecore_list_append(list, strdup(key));
+ *(Eina_List **)list = eina_list_append(*(Eina_List **)list, key);
return EINA_TRUE;
}
EAPI int ECORE_CON_EVENT_CLIENT_DATA = 0;
EAPI int ECORE_CON_EVENT_SERVER_DATA = 0;
-static Ecore_List *servers = NULL;
+static Eina_List *servers = NULL;
static int init_count = 0;
#define LENGTH_OF_SOCKADDR_UN(s) (strlen((s)->sun_path) + (size_t)(((struct sockaddr_un *)NULL)->sun_path))
ecore_con_dns_init();
ecore_con_info_init();
- servers = ecore_list_new();
-
return init_count;
}
{
if (--init_count != 0) return init_count;
- while (!ecore_list_empty_is(servers))
- _ecore_con_server_free(ecore_list_first_remove(servers));
- ecore_list_destroy(servers);
- servers = NULL;
+ while (servers)
+ _ecore_con_server_free(eina_list_data_get(servers));
ecore_con_info_shutdown();
ecore_con_dns_shutdown();
socket_unix.sun_family = AF_UNIX;
if (type == ECORE_CON_LOCAL_ABSTRACT)
{
-#ifdef HAVE_ABSTRACT_SOCKETS
+#ifdef HAVE_ABSTRACT_SOCKET
/* . is a placeholder */
snprintf(socket_unix.sun_path, sizeof(socket_unix.sun_path), ".%s", name);
/* first char null indicates abstract namespace */
if (!ecore_con_info_udp_listen(svr, _ecore_con_cb_udp_listen, svr)) goto error;
}
- ecore_list_append(servers, svr);
+ servers = eina_list_append(servers, svr);
ECORE_MAGIC_SET(svr, ECORE_MAGIC_CON_SERVER);
return svr;
if (!ecore_con_info_udp_connect(svr, _ecore_con_cb_udp_connect, svr)) goto error;
}
- ecore_list_append(servers, svr);
+ servers = eina_list_append(servers, svr);
ECORE_MAGIC_SET(svr, ECORE_MAGIC_CON_SERVER);
return svr;
ECORE_MAGIC_FAIL(svr, ECORE_MAGIC_CON_SERVER, "ecore_con_server_del");
return NULL;
}
+ if (svr->delete_me) return NULL;
+
data = svr->data;
svr->data = NULL;
svr->delete_me = 1;
else
{
_ecore_con_server_free(svr);
- if (ecore_list_goto(servers, svr)) ecore_list_remove(servers);
}
return data;
}
}
}
if (svr->write_buf) free(svr->write_buf);
- while (svr->clients)
- {
- cl = eina_list_data_get(svr->clients);
- svr->clients = eina_list_remove(svr->clients, cl);
+ EINA_LIST_FREE(svr->clients, cl)
_ecore_con_client_free(cl);
- }
if ((svr->created) && (svr->path) && (svr->ppid == getpid()))
unlink(svr->path);
if (svr->fd >= 0) close(svr->fd);
if (svr->path) free(svr->path);
if (svr->ip) free(svr->ip);
if (svr->fd_handler) ecore_main_fd_handler_del(svr->fd_handler);
+ servers = eina_list_remove(servers, svr);
free(svr);
}
_ecore_con_svr_udp_handler(void *data, Ecore_Fd_Handler *fd_handler)
{
Ecore_Con_Server *svr;
- Ecore_Con_Client *cl;
+ Ecore_Con_Client *cl = NULL;
svr = data;
if (svr->dead) return 1;
char service[NI_MAXSERV];
char hbuf[NI_MAXHOST];
char sbuf[NI_MAXSERV];
- void *tosend;
+ void *tosend = NULL;
int tosend_len;
int canonname_len = 0;
+ int err;
/* FIXME with EINA */
snprintf(service, NI_MAXSERV, "%i", svr->port);
if (result->ai_canonname)
canonname_len = strlen(result->ai_canonname) + 1;
tosend_len = sizeof(Ecore_Con_Info) + result->ai_addrlen + canonname_len;
- tosend = malloc(tosend_len);
+
+ if ((tosend = malloc(tosend_len)));
+ goto on_error;
+ memset(tosend, 0, tosend_len);
container = (Ecore_Con_Info *)tosend;
container->size = tosend_len;
- memset(container->ip, 0, sizeof(container->ip));
- memset(container->service, 0, sizeof(container->service));
memcpy(&container->info, result, sizeof(struct addrinfo));
memcpy(tosend + sizeof(Ecore_Con_Info), result->ai_addr, result->ai_addrlen);
memcpy(container->ip, hbuf, sizeof(container->ip));
memcpy(container->service, sbuf, sizeof(container->service));
}
- write(fd[1], tosend, tosend_len);
+ err = write(fd[1], tosend, tosend_len);
free(tosend);
}
else
- write(fd[1], "", 1);
+ err = write(fd[1], "", 1);
+on_error:
close(fd[1]);
# ifdef __USE_ISOC99
_Exit(0);
static int _ecore_con_url_process_completed_jobs(Ecore_Con_Url *url_con_to_match);
static Ecore_Idler *_fd_idler_handler = NULL;
-static Ecore_List *_url_con_list = NULL;
+static Eina_List *_url_con_list = NULL;
static CURLM *curlm = NULL;
static fd_set _current_fd_set;
static int init_count = 0;
ecore_con_url_init(void)
{
#ifdef HAVE_CURL
+ Ecore_Con_Url *url_con;
+
if (!ECORE_CON_EVENT_URL_DATA)
{
ECORE_CON_EVENT_URL_DATA = ecore_event_type_new();
ECORE_CON_EVENT_URL_PROGRESS = ecore_event_type_new();
}
- if (!_url_con_list)
- {
- _url_con_list = ecore_list_new();
- if (!_url_con_list) return 0;
- }
-
if (!curlm)
{
FD_ZERO(&_current_fd_set);
if (curl_global_init(CURL_GLOBAL_NOTHING))
{
- ecore_list_destroy(_url_con_list);
- _url_con_list = NULL;
+ EINA_LIST_FREE(_url_con_list, url_con)
+ ecore_con_url_destroy(url_con);
return 0;
}
curlm = curl_multi_init();
if (!curlm)
{
- ecore_list_destroy(_url_con_list);
- _url_con_list = NULL;
+ EINA_LIST_FREE(_url_con_list, url_con)
+ ecore_con_url_destroy(url_con);
return 0;
}
}
ecore_con_url_shutdown(void)
{
#ifdef HAVE_CURL
+ Ecore_Con_Url *url_con;
if (!init_count)
return 0;
init_count--;
- if (_url_con_list)
- {
- if (!ecore_list_empty_is(_url_con_list))
- {
- Ecore_Con_Url *url_con;
- while ((url_con = ecore_list_first(_url_con_list)))
- {
+ EINA_LIST_FREE(_url_con_list, url_con)
ecore_con_url_destroy(url_con);
- }
- }
- ecore_list_destroy(_url_con_list);
- _url_con_list = NULL;
- }
if (curlm)
{
{
if (url_con->active)
{
- if (ecore_list_find(_url_con_list, ecore_direct_compare, url_con) == url_con)
- ecore_list_remove(_url_con_list);
+ _url_con_list = eina_list_remove(_url_con_list, url_con);
url_con->active = 0;
curl_multi_remove_handle(curlm, url_con->curl_easy);
static int
_ecore_con_url_suspend_fd_handler(void)
{
+ Eina_List *l;
Ecore_Con_Url *url_con;
int deleted = 0;
if (!_url_con_list)
return 0;
- ecore_list_first_goto(_url_con_list);
- while ((url_con = ecore_list_current(_url_con_list)))
+ EINA_LIST_FOREACH(_url_con_list, l, url_con)
{
if (url_con->active && url_con->fd_handler)
{
url_con->fd_handler = NULL;
deleted++;
}
- ecore_list_next(_url_con_list);
}
return deleted;
static int
_ecore_con_url_restart_fd_handler(void)
{
+ Eina_List *l;
Ecore_Con_Url *url_con;
int activated = 0;
if (!_url_con_list)
return 0;
- ecore_list_first_goto(_url_con_list);
- while ((url_con = ecore_list_current(_url_con_list)))
+ EINA_LIST_FOREACH(_url_con_list, l, url_con)
{
- if (url_con->fd_handler == NULL
- && url_con->fd != -1)
+ if (url_con->fd_handler == NULL && url_con->fd != -1)
{
- url_con->fd_handler = ecore_main_fd_handler_add(url_con->fd,
+ url_con->fd_handler == ecore_main_fd_handler_add(url_con->fd,
url_con->flags,
_ecore_con_url_fd_handler,
NULL, NULL, NULL);
activated++;
}
- ecore_list_next(_url_con_list);
}
return activated;
int still_running;
int completed_immediately = 0;
- ecore_list_append(_url_con_list, url_con);
+ _url_con_list = eina_list_append(_url_con_list, url_con);
url_con->active = 1;
curl_multi_add_handle(curlm, url_con->curl_easy);
static int
_ecore_con_url_process_completed_jobs(Ecore_Con_Url *url_con_to_match)
{
+ Eina_List *l;
Ecore_Con_Url *url_con;
+ Ecore_Con_Event_Url_Complete *e;
CURLMsg *curlmsg;
int n_remaining;
int job_matched = 0;
if (curlmsg->msg != CURLMSG_DONE) continue;
/* find the job which is done */
- ecore_list_first_goto(_url_con_list);
- while ((url_con = ecore_list_current(_url_con_list)))
+ EINA_LIST_FOREACH(_url_con_list, l, url_con)
{
if (curlmsg->easy_handle == url_con->curl_easy)
{
- /* We have found the completed job in our job list */
- if (url_con_to_match && (url_con == url_con_to_match)) {
+ if (url_con_to_match && (url_con == url_con_to_match))
job_matched = 1;
- }
- if (url_con->fd != -1)
+ if(url_con->fd != -1)
{
FD_CLR(url_con->fd, &_current_fd_set);
if (url_con->fd_handler)
url_con->fd = -1;
url_con->fd_handler = NULL;
}
- ecore_list_remove(_url_con_list);
+ _url_con_list = eina_list_remove(_url_con_list, url_con);
url_con->active = 0;
- {
- Ecore_Con_Event_Url_Complete *e;
e = calloc(1, sizeof(Ecore_Con_Event_Url_Complete));
if (e)
{
e->url_con = url_con;
-
e->status = 0;
curl_easy_getinfo(curlmsg->easy_handle, CURLINFO_RESPONSE_CODE, &e->status);
-
_url_complete_push_event(ECORE_CON_EVENT_URL_COMPLETE, e);
}
- }
curl_multi_remove_handle(curlm, url_con->curl_easy);
break;
}
- ecore_list_next(_url_con_list);
}
}
+
return job_matched;
}
}
ecore_ipc_shutdown();
+ ecore_shutdown();
return ret;
}
static int _ecore_evas_fps_debug = 0;
static char *ecore_evas_default_display = "0";
-static Ecore_List *ecore_evas_input_devices = NULL;
+static Eina_List *ecore_evas_input_devices = NULL;
static Ecore_Evas *ecore_evases = NULL;
static Ecore_Event_Handler *ecore_evas_event_handlers[6] = {NULL, NULL, NULL, NULL, NULL, NULL};
static Ecore_Idle_Enterer *ecore_evas_idle_enterer = NULL;
_ecore_evas_fb_lose(void *data __UNUSED__)
{
Ecore_List2 *l;
+ Eina_List *ll;
Ecore_Fb_Input_Device *dev;
for (l = (Ecore_List2 *)ecore_evases; l; l = l->next)
}
if (ecore_evas_input_devices)
{
- ecore_list_first_goto(ecore_evas_input_devices);
- while ((dev = ecore_list_next(ecore_evas_input_devices)))
+ EINA_LIST_FOREACH(ecore_evas_input_devices, ll, dev)
ecore_fb_input_device_listen(dev, 0);
}
}
_ecore_evas_fb_gain(void *data __UNUSED__)
{
Ecore_List2 *l;
+ Eina_List *l;
Ecore_Fb_Input_Device *dev;
for (l = (Ecore_List2 *)ecore_evases; l; l = l->next)
}
if (ecore_evas_input_devices)
{
- ecore_list_first_goto(ecore_evas_input_devices);
- while ((dev = ecore_list_next(ecore_evas_input_devices)))
+ EINA_LIST_FOREACH(ecore_evas_input_devices, ll, dev)
ecore_fb_input_device_listen(dev, 1);
}
}
input_dir = opendir("/dev/input/");
if (!input_dir) return _ecore_evas_init_count;
- ecore_evas_input_devices = ecore_list_new();
while ((input_entry = readdir(input_dir)))
{
char device_path[256];
{
ecore_fb_input_device_axis_size_set(device, w, h);
ecore_fb_input_device_listen(device,1);
- ecore_list_append(ecore_evas_input_devices, device);
+ ecore_evas_input_devices = eina_list_append(ecore_evas_input_devices, device);
if (!mouse_handled)
{
ecore_evas_event_handlers[2] = ecore_event_handler_add(ECORE_FB_EVENT_MOUSE_BUTTON_DOWN, _ecore_evas_event_mouse_button_down, NULL);
else if ((caps & ECORE_FB_INPUT_DEVICE_CAP_KEYS_OR_BUTTONS) && !(caps & ECORE_FB_INPUT_DEVICE_CAP_ABSOLUTE))
{
ecore_fb_input_device_listen(device,1);
- ecore_list_append(ecore_evas_input_devices, device);
+ ecore_evas_input_devices = eina_list_append(ecore_evas_input_devices, device);
if (!keyboard_handled)
{
ecore_evas_event_handlers[0] = ecore_event_handler_add(ECORE_FB_EVENT_KEY_DOWN, _ecore_evas_event_key_down, NULL);
static void
_ecore_evas_fullscreen_set(Ecore_Evas *ee, int on)
{
+ Eina_List *l;
int resized = 0;
if (((ee->prop.fullscreen) && (on)) ||
{
Ecore_Fb_Input_Device *dev;
- ecore_list_first_goto(ecore_evas_input_devices);
- while ((dev = ecore_list_next(ecore_evas_input_devices)))
- ecore_fb_input_device_axis_size_set(dev, ee->w, ee->h);
+ EINA_LIST_FOREACH(ecore_evas_input_devices, l, dev)
+ ecore_fb_input_device_axis_size_set(dev, ee->wn ee->h);
}
if (resized)
{
#define CLICK_THRESHOLD_DEFAULT 0.25
-static Ecore_List *_ecore_fb_li_devices = NULL;
+static Eina_List *_ecore_fb_li_devices = NULL;
static const char *_ecore_fb_li_kbd_syms[128 * 6] =
{
device = calloc(1, sizeof(Ecore_Fb_Input_Device));
if(!device) return NULL;
- if(!_ecore_fb_li_devices)
- _ecore_fb_li_devices = ecore_list_new();
-
if((fd = open(dev, O_RDONLY, O_NONBLOCK)) < 0)
{
fprintf(stderr, "[ecore_fb_li:device_open] %s %s", dev, strerror(errno));
break;
}
}
- ecore_list_append(_ecore_fb_li_devices, device);
+ _ecore_fb_li_devices = eina_list_append(_ecore_fb_li_devices, device);
return device;
error_caps:
/* close the fd */
close(dev->fd);
/* remove the element from the list */
- if(ecore_list_goto(_ecore_fb_li_devices, dev))
- ecore_list_remove(_ecore_fb_li_devices);
+ _ecore_fb_li_devices = eina_list_remove(_ecore_fb_li_devices, dev);
free(dev);
}
EAPI int ecore_file_can_write (const char *file);
EAPI int ecore_file_can_exec (const char *file);
EAPI char *ecore_file_readlink (const char *link);
- EAPI Ecore_List *ecore_file_ls (const char *dir);
+ EAPI Eina_List *ecore_file_ls (const char *dir);
EAPI char *ecore_file_app_exe_get (const char *app);
EAPI char *ecore_file_escape_name (const char *filename);
EAPI char *ecore_file_strip_ext (const char *file);
EAPI int ecore_file_path_dir_exists(const char *in_dir);
EAPI int ecore_file_app_installed(const char *exe);
- EAPI Ecore_List *ecore_file_app_list(void);
+ EAPI Eina_List *ecore_file_app_list(void);
EAPI int ecore_file_download(const char *url, const char *dst,
void (*completion_cb)(void *data,
* For more information see the manual pages of strcoll and setlocale.
* The list will not contain the directory entries for '.' and '..'.
* @param dir The name of the directory to list
- * @return Return an Ecore_List containing all the files in the directory;
+ * @return Return an Eina_List containing all the files in the directory;
* on failure it returns NULL.
*/
-EAPI Ecore_List *
+EAPI Eina_List *
ecore_file_ls(const char *dir)
{
char *f;
DIR *dirp;
struct dirent *dp;
- Ecore_List *list;
+ Eina_List *list = NULL;
dirp = opendir(dir);
if (!dirp) return NULL;
- list = ecore_list_new();
- ecore_list_free_cb_set(list, free);
-
while ((dp = readdir(dirp)))
{
if ((strcmp(dp->d_name, ".")) && (strcmp(dp->d_name, "..")))
{
f = strdup(dp->d_name);
- ecore_list_append(list, f);
+ list = eina_list_append(list, f);
}
}
closedir(dirp);
- ecore_list_sort(list, ECORE_COMPARE_CB(strcoll), ECORE_SORT_MIN);
+ list = eina_list_sort(list, ECORE_SORT_MIN, ECORE_COMPARE_CB(strcoll));
- ecore_list_first_goto(list);
return list;
}
static int init = 0;
static Ecore_Event_Handler *_url_complete_handler = NULL;
static Ecore_Event_Handler *_url_progress_download = NULL;
-static Ecore_List *_job_list;
+static Eina_List *_job_list;
EAPI int
ecore_file_download_init(void)
_url_progress_download = ecore_event_handler_add(ECORE_CON_EVENT_URL_PROGRESS, _ecore_file_download_url_progress_cb, NULL);
#endif
}
- if (!_job_list)
- {
- _job_list = ecore_list_new();
- if (!_job_list) return 0;
- }
return 1;
#else
ecore_event_handler_del(_url_progress_download);
_url_complete_handler = NULL;
_url_progress_download = NULL;
- if (_job_list)
- ecore_list_destroy(_job_list);
- _job_list = NULL;
+ ecore_file_download_abort_all();
}
return ecore_con_url_shutdown();
EAPI void
ecore_file_download_abort_all(void)
{
- if (!ecore_list_empty_is(_job_list))
- {
Ecore_File_Download_Job *job;
- while ((job = ecore_list_first_remove(_job_list)))
- {
+ EINA_LIST_FREE(_job_list, job)
_ecore_file_download_abort(job);
- }
- }
- ecore_list_clear(_job_list);
}
/**
Ecore_Con_Event_Url_Complete *ev = event;
Ecore_File_Download_Job *job;
- job = ecore_list_find(_job_list, _ecore_file_download_url_compare_job, ev->url_con);
+ job = eina_list_search_unsorted(_job_list, _ecore_file_download_url_compare_job, ev->url_con);
if (!ECORE_MAGIC_CHECK(job, ECORE_MAGIC_FILE_DOWNLOAD_JOB)) return 1;
- ecore_list_remove(_job_list);
+ _job_list = eina_list_remove(_job_list, job);
if (job->completion_cb)
job->completion_cb(ecore_con_url_data_get(job->url_con), job->dst, !ev->status);
Ecore_Con_Event_Url_Progress *ev = event;
Ecore_File_Download_Job *job;
- job = ecore_list_find(_job_list, _ecore_file_download_url_compare_job, ev->url_con);
+ job = eina_list_search_unsorted(_job_list, _ecore_file_download_url_compare_job, ev->url_con);
if (!ECORE_MAGIC_CHECK(job, ECORE_MAGIC_FILE_DOWNLOAD_JOB)) return 1;
if (job->progress_cb)
(long int) ev->down.total, (long int) ev->down.now,
(long int) ev->up.total, (long int) ev->up.now) != 0)
{
- ecore_list_remove(_job_list);
+ _job_list = eina_list_remove(_job_list, job);
_ecore_file_download_abort(job);
}
job->completion_cb = completion_cb;
job->progress_cb = progress_cb;
- ecore_list_append(_job_list, job);
+ _job_list = eina_list_append(_job_list, job);
ecore_con_url_send(job->url_con, NULL, 0, NULL);
if (ecore_file_is_dir(em->path))
{
/* Check for subdirs */
- Ecore_List *files;
+ Eina_List *files;
char *file;
files = ecore_file_ls(em->path);
- if (files)
- {
- while ((file = ecore_list_next(files)))
+ EINA_LIST_FREE(files, file)
{
Ecore_File *f;
char buf[PATH_MAX];
f = calloc(1, sizeof(Ecore_File));
if (!f)
+ {
+ free(file);
continue;
+ }
snprintf(buf, sizeof(buf), "%s/%s", em->path, file);
- f->name = strdup(file);
+ f->name = file;
f->mtime = ecore_file_mod_time(buf);
f->is_dir = ecore_file_is_dir(buf);
em->files = _ecore_list2_append(em->files, f);
}
- ecore_list_destroy(files);
- }
}
}
else
/* Check for new files */
if (ECORE_FILE_MONITOR_POLL(em)->mtime < mtime)
{
- Ecore_List *files;
+ Eina_List *files;
+ Eina_List *l;
char *file;
/* Files have been added or removed */
if (files)
{
/* Are we a directory? We should check first, rather than rely on null here*/
- while ((file = ecore_list_next(files)))
+ EINA_LIST_FOREACH(files, l, file)
{
Ecore_File *f;
char buf[PATH_MAX];
f->name = strdup(file);
f->mtime = ecore_file_mod_time(buf);
- f->is_dir = ecore_file_is_dir(buf);
+ f->is_dir = ecore_file_mod_time(buf);
if (f->is_dir)
event = ECORE_FILE_EVENT_CREATED_DIRECTORY;
else
em->func(em->data, em, event, buf);
em->files = _ecore_list2_append(em->files, f);
}
- ecore_list_destroy(files);
+ while (files)
+ {
+ file = eina_list_data_get(files);
+ free(file);
+ files = eina_list_remove_list(files, files);
+ }
}
if (!ecore_file_is_dir(em->path))
#include "ecore_file_private.h"
static int init = 0;
-static Ecore_List *__ecore_file_path_bin = NULL;
+static Eina_List *__ecore_file_path_bin = NULL;
-static Ecore_List *_ecore_file_path_from_env(const char *env);
+static Eina_List *_ecore_file_path_from_env(const char *env);
int
ecore_file_path_init(void)
{
if (++init != 1) return init;
__ecore_file_path_bin = _ecore_file_path_from_env("PATH");
- ecore_list_free_cb_set(__ecore_file_path_bin, free);
return init;
}
int
ecore_file_path_shutdown(void)
{
+ char *dir;
+
if (--init != 0) return init;
- ecore_list_destroy(__ecore_file_path_bin);
- __ecore_file_path_bin = NULL;
+ EINA_LIST_FREE(__ecore_file_path_bin, dir)
+ free(dir);
return init;
}
-Ecore_List *
+Eina_List *
_ecore_file_path_from_env(const char *env)
{
- Ecore_List *path;
+ Eina_List *path = NULL;
char *env_path, *p, *last;
- path = ecore_list_new();
-
env_path = getenv(env);
if (!env_path)
return path;
if (!*p)
{
if (!ecore_file_path_dir_exists(last))
- ecore_list_append(path, strdup(last));
+ path = eina_list_append(path, strdup(last));
last = p + 1;
}
}
if (p > last)
- ecore_list_append(path, strdup(last));
+ path = eina_list_append(path, strdup(last));
free(env_path);
return path;
EAPI int
ecore_file_path_dir_exists(const char *in_dir)
{
+ Eina_List *l;
char *dir;
if (!__ecore_file_path_bin) return 0;
- ecore_list_first_goto(__ecore_file_path_bin);
- while ((dir = ecore_list_next(__ecore_file_path_bin)) != NULL)
+ EINA_LIST_FOREACH(__ecore_file_path_bin, l, dir)
{
- if (!strcmp(dir, in_dir)) return 1;
+ if (strcmp(dir, in_dir))
+ return 1;
}
+
return 0;
}
EAPI int
ecore_file_app_installed(const char *exe)
{
+ Eina_List *l;
char *dir;
char buf[PATH_MAX];
if (!exe) return 0;
if (ecore_file_can_exec(exe)) return 1;
- ecore_list_first_goto(__ecore_file_path_bin);
- while ((dir = ecore_list_next(__ecore_file_path_bin)) != NULL)
+ EINA_LIST_FOREACH(__ecore_file_path_bin, l, dir)
{
snprintf(buf, sizeof(buf), "%s/%s", dir, exe);
- if (ecore_file_can_exec(buf)) return 1;
+ if (ecore_file_can_exec(buf))
+ return 1;
}
+
return 0;
}
/**
* Get a list of all the applications installed on the system
- * @return An Ecore_List containing all the executable files in the system
+ * @return An Eina_List containing all the executable files in the system
*/
-EAPI Ecore_List *
+EAPI Eina_List *
ecore_file_app_list(void)
{
- Ecore_List *list, *files;
+ Eina_List *list = NULL;
+ Eina_List *files;
+ Eina_List *l;
char buf[PATH_MAX], *dir, *exe;
- list = ecore_list_new();
- if (!list) return NULL;
- ecore_list_free_cb_set(list, free);
- ecore_list_first_goto(__ecore_file_path_bin);
- while ((dir = ecore_list_next(__ecore_file_path_bin)) != NULL)
+ EINA_LIST_FOREACH(__ecore_file_path_bin, l, dir)
{
files = ecore_file_ls(dir);
- if (files)
- {
- ecore_list_first_goto(files);
- while ((exe = ecore_list_next(files)) != NULL)
+ EINA_LIST_FREE(files, exe)
{
snprintf(buf, sizeof(buf), "%s/%s", dir, exe);
if ((ecore_file_can_exec(buf)) &&
(!ecore_file_is_dir(buf)))
- ecore_list_append(list, strdup(buf));
- }
- ecore_list_destroy(files);
+ list = eina_list_append(list, strdup(buf));
+ free(exe);
}
}
+
return list;
}
EAPI int ecore_imf_init(void);
EAPI int ecore_imf_shutdown(void);
- EAPI Ecore_List *ecore_imf_context_available_ids_get(void);
- EAPI Ecore_List *ecore_imf_context_available_ids_by_canvas_type_get(const char *canvas_type);
+ EAPI Eina_List *ecore_imf_context_available_ids_get(void);
+ EAPI Eina_List *ecore_imf_context_available_ids_by_canvas_type_get(const char *canvas_type);
EAPI const char *ecore_imf_context_default_id_get(void);
EAPI const char *ecore_imf_context_default_id_by_canvas_type_get(const char *canvas_type);
EAPI const Ecore_IMF_Context_Info *ecore_imf_context_info_by_id_get(const char *id);
/**
* Get the list of the available Input Method Context ids.
*
- * Note that the caller is responsible for freeing the Ecore_List
+ * Note that the caller is responsible for freeing the Eina_List
* when finished with it. There is no need to finish the list strings.
*
- * @return Return an Ecore_List of strings;
+ * @return Return an EIna_List of strings;
* on failure it returns NULL.
* @ingroup Ecore_IMF_Context_Group
*/
-EAPI Ecore_List *
+EAPI Eina_List *
ecore_imf_context_available_ids_get(void)
{
return ecore_imf_module_context_ids_get();
}
-EAPI Ecore_List *
+EAPI Eina_List *
ecore_imf_context_available_ids_by_canvas_type_get(const char *canvas_type)
{
return ecore_imf_module_context_ids_by_canvas_type_get(canvas_type);
ecore_imf_context_default_id_by_canvas_type_get(const char *canvas_type)
{
const char *id;
- Ecore_List *modules;
+ Eina_List *modules;
Ecore_IMF_Module *module;
char *locale;
char *tmp;
id = NULL;
- ecore_list_first_goto(modules);
- while ((module = ecore_list_next(modules)))
+ EINA_LIST_FREE(modules, module)
{
if (canvas_type &&
strcmp(module->info->canvas_type, canvas_type) == 0)
p = q ? q + 1 : NULL;
}
}
- ecore_list_destroy(modules);
free(locale);
return id;
static Eina_Bool
_hash_module_available_get(const Eina_Hash *hash, int *data, void *list)
{
- ecore_list_append(list, data);
+ *(Eina_List**)list = eina_list_append(*(Eina_List**)list, data);
return EINA_TRUE;
}
-Ecore_List *
+Eina_List *
ecore_imf_module_available_get(void)
{
- Ecore_List *values;
+ Eina_List *values = NULL;
Eina_Iterator *it = NULL;
if (!modules) return NULL;
- values = ecore_list_new();
- if (!values) return NULL;
-
it = eina_hash_iterator_data_new(modules);
if (!it)
- {
- ecore_list_destroy(values);
return NULL;
- }
- eina_iterator_foreach(it, EINA_EACH(_hash_module_available_get), values);
+ eina_iterator_foreach(it, EINA_EACH(_hash_module_available_get), &values);
eina_iterator_free(it);
- ecore_list_first_goto(values);
-
return values;
}
static Eina_Bool
_hash_ids_get(const Eina_Hash *hash, const char *key, void *list)
{
- ecore_list_append(list, key);
+ *(Eina_List**)list = eina_list_append(*(Eina_List**)list, key);
return EINA_TRUE;
}
-Ecore_List *
+Eina_List *
ecore_imf_module_context_ids_get(void)
{
- Ecore_List *l = NULL;
+ Eina_List *l = NULL;
Eina_Iterator *it = NULL;
if (!modules) return NULL;
- l = ecore_list_new();
- if (!l) return NULL;
-
it = eina_hash_iterator_key_new(modules);
if (!it)
- {
- ecore_list_destroy(l);
return NULL;
- }
- eina_iterator_foreach(it, EINA_EACH(_hash_ids_get), l);
+ eina_iterator_foreach(it, EINA_EACH(_hash_ids_get), &l);
eina_iterator_free(it);
return l;
Ecore_IMF_Selector *selector = fdata;
if (!strcmp(module->info->canvas_type, selector->toselect))
- ecore_list_append(selector->selected, (void *)module->info->id);
+ selector->selected = eina_list_append(selector->selected, (void *)module->info->id);
return EINA_TRUE;
}
-Ecore_List *
+Eina_List *
ecore_imf_module_context_ids_by_canvas_type_get(const char *canvas_type)
{
Ecore_IMF_Selector selector;
- Ecore_List *values;
+ Eina_List *values = NULL;
Eina_Iterator *it = NULL;
if (!modules) return NULL;
if (!canvas_type)
return ecore_imf_module_context_ids_get();
- values = ecore_list_new();
- if (!values) return NULL;
-
it = eina_hash_iterator_data_new(modules);
if (!it)
- {
- ecore_list_destroy(values);
return NULL;
- }
selector.toselect = canvas_type;
selector.selected = values;
eina_iterator_foreach(it, EINA_EACH(_hash_ids_by_canvas_type_get), &selector);
eina_iterator_free(it);
- ecore_list_first_goto(values);
-
return values;
}
static void
_ecore_imf_module_load_all(void)
{
- Ecore_List *avail;
+ Eina_List *avail;
char *filename;
Ecore_Plugin *plugin;
const Ecore_IMF_Context_Info *info = NULL;
avail = ecore_plugin_available_get(ecore_imf_modules_path);
if (!avail) return;
- ecore_list_first_goto(avail);
- while ((filename = ecore_list_next(avail)))
+ EINA_LIST_FREE(avail, filename)
{
plugin = ecore_plugin_load(ecore_imf_modules_path, filename, NULL);
if (!plugin)
_ecore_imf_module_append(plugin, info, imf_module_create);
}
-
- ecore_list_destroy(avail);
}
static void
Ecore_IMF_Module *module;
if (!modules)
- modules = eina_hash_string_superfast_new(_ecore_imf_module_free);
+ modules = eina_hash_string_superfast_new(EINA_FREE_CB(_ecore_imf_module_free));
module = malloc(sizeof(Ecore_IMF_Module));
module->plugin = plugin;
void ecore_imf_module_init(void);
void ecore_imf_module_shutdown(void);
-Ecore_List *ecore_imf_module_available_get(void);
+Eina_List *ecore_imf_module_available_get(void);
Ecore_IMF_Module *ecore_imf_module_get(const char *ctx_id);
Ecore_IMF_Context *ecore_imf_module_context_create(const char *ctx_id);
-Ecore_List *ecore_imf_module_context_ids_get(void);
-Ecore_List *ecore_imf_module_context_ids_by_canvas_type_get(const char *canvas_type);
+Eina_List *ecore_imf_module_context_ids_get(void);
+Eina_List *ecore_imf_module_context_ids_by_canvas_type_get(const char *canvas_type);
#endif
EAPI void *ecore_ipc_server_del(Ecore_Ipc_Server *svr);
EAPI void *ecore_ipc_server_data_get(Ecore_Ipc_Server *svr);
EAPI int ecore_ipc_server_connected_get(Ecore_Ipc_Server *svr);
- EAPI Ecore_List *ecore_ipc_server_clients_get(Ecore_Ipc_Server *svr);
+ EAPI Eina_List *ecore_ipc_server_clients_get(Ecore_Ipc_Server *svr);
/* FIXME: this needs to become an ipc message */
EAPI int ecore_ipc_server_send(Ecore_Ipc_Server *svr, int major, int minor, int ref, int ref_to, int response, const void *data, int size);
EAPI void ecore_ipc_server_client_limit_set(Ecore_Ipc_Server *svr, int client_limit, char reject_excess_clients);
EAPI int ECORE_IPC_EVENT_SERVER_DATA = 0;
static int init_count = 0;
-static Ecore_Ipc_Server *servers = NULL;
+static Eina_List *servers = NULL;
static Ecore_Event_Handler *handler[6];
/**
if (--init_count != 0) return init_count;
- while (servers) ecore_ipc_server_del(servers);
+ while (servers) ecore_ipc_server_del(eina_list_data_get(servers));
for (i = 0; i < 6; i++)
ecore_event_handler_del(handler[i]);
}
svr->max_buf_size = 32 * 1024;
svr->data = (void *)data;
- svr->client_list = ecore_list_new();
- ecore_list_init(svr->client_list);
- servers = _ecore_list2_append(servers, svr);
+ servers = eina_list_append(servers, svr);
ECORE_MAGIC_SET(svr, ECORE_MAGIC_IPC_SERVER);
return svr;
}
}
svr->max_buf_size = -1;
svr->data = (void *)data;
- servers = _ecore_list2_append(servers, svr);
+ servers = eina_list_append(servers, svr);
ECORE_MAGIC_SET(svr, ECORE_MAGIC_IPC_SERVER);
return svr;
}
"ecore_ipc_server_del");
return NULL;
}
+ if (svr->delete_me) return NULL;
+
data = svr->data;
svr->data = NULL;
svr->delete_me = 1;
if (svr->event_count == 0)
{
- while (svr->clients)
- ecore_ipc_client_del((Ecore_Ipc_Client *)svr->clients);
+ Ecore_Ipc_Client *cl;
+
+ EINA_LIST_FREE(svr->clients, cl)
+ ecore_ipc_client_del(cl);
ecore_con_server_del(svr->server);
- servers = _ecore_list2_remove(servers, svr);
+ servers = eina_list_remove(servers, svr);
+
if (svr->buf) free(svr->buf);
- if (svr->client_list) ecore_list_destroy(svr->client_list);
ECORE_MAGIC_SET(svr, ECORE_MAGIC_NONE);
free(svr);
}
/**
* Retrieves the list of clients for this server.
* @param svr The given IPC server.
- * @return An Ecore_List with the clients.
+ * @return An Eina_List with the clients.
* @ingroup Ecore_IPC_Server_Group
*/
-EAPI Ecore_List *
+EAPI Eina_List *
ecore_ipc_server_clients_get(Ecore_Ipc_Server *svr)
{
if (!ECORE_MAGIC_CHECK(svr, ECORE_MAGIC_IPC_SERVER))
Ecore_Con_Event_Client_Add *e;
e = ev;
- if (!_ecore_list2_find(servers, ecore_con_server_data_get(ecore_con_client_server_get(e->client)))) return 1;
+ if (!eina_list_data_find(servers, ecore_con_server_data_get(ecore_con_client_server_get(e->client)))) return 1;
/* handling code here */
{
Ecore_Ipc_Client *cl;
cl->max_buf_size = 32 * 1024;
ecore_con_client_data_set(cl->client, (void *)cl);
svr->clients = _ecore_list2_append(svr->clients, cl);
- ecore_list_append(svr->client_list, cl);
+ svr->client_list = eina_list_append(svr->client_list, cl);
if (!cl->delete_me)
{
Ecore_Ipc_Event_Client_Add *e2;
Ecore_Con_Event_Client_Del *e;
e = ev;
- if (!_ecore_list2_find(servers, ecore_con_server_data_get(ecore_con_client_server_get(e->client)))) return 1;
+ if (!eina_list_data_find(servers, ecore_con_server_data_get(ecore_con_client_server_get(e->client)))) return 1;
/* handling code here */
{
Ecore_Ipc_Client *cl;
Ecore_Ipc_Server *svr;
svr = ecore_con_server_data_get(ecore_con_client_server_get(e->client));
- ecore_list_goto(svr->client_list, cl);
- ecore_list_remove(svr->client_list);
- ecore_list_first_goto(svr->client_list);
+ svr->client_list = eina_list_remove(svr->client_list, cl);
if (!cl->delete_me)
{
e2 = calloc(1, sizeof(Ecore_Ipc_Event_Client_Del));
Ecore_Con_Event_Server_Add *e;
e = ev;
- if (!_ecore_list2_find(servers, ecore_con_server_data_get(e->server))) return 1;
+ if (!eina_list_data_find(servers, ecore_con_server_data_get(e->server))) return 1;
/* handling code here */
{
Ecore_Ipc_Server *svr;
Ecore_Con_Event_Server_Del *e;
e = ev;
- if (!_ecore_list2_find(servers, ecore_con_server_data_get(e->server))) return 1;
+ if (!eina_list_data_find(servers, ecore_con_server_data_get(e->server))) return 1;
/* handling code here */
{
Ecore_Ipc_Server *svr;
Ecore_Con_Event_Client_Data *e;
e = ev;
- if (!_ecore_list2_find(servers, ecore_con_server_data_get(ecore_con_client_server_get(e->client)))) return 1;
+ if (!eina_list_data_find(servers, ecore_con_server_data_get(ecore_con_client_server_get(e->client)))) return 1;
/* handling code here */
{
Ecore_Ipc_Client *cl;
Ecore_Con_Event_Server_Data *e;
e = ev;
- if (!_ecore_list2_find(servers, ecore_con_server_data_get(e->server))) return 1;
+ if (!eina_list_data_find(servers, ecore_con_server_data_get(e->server))) return 1;
/* handling code here */
{
Ecore_Ipc_Server *svr;
struct _Ecore_Ipc_Client
{
- Ecore_List __list_data;
ECORE_MAGIC;
Ecore_Con_Client *client;
void *data;
struct _Ecore_Ipc_Server
{
- Ecore_List __list_data;
ECORE_MAGIC;
Ecore_Con_Server *server;
- Ecore_Ipc_Client *clients;
- Ecore_List *client_list;
+ Eina_List *clients;
+ Eina_List *client_list;
void *data;
unsigned char *buf;
int buf_size;
* but its code is commented.
*/
-static Ecore_List *_ecore_xcb_cookies = NULL;
+static Eina_List *_ecore_xcb_cookies = NULL;
static void *_ecore_xcb_reply = NULL;
typedef struct _Ecore_Xcb_Data Ecore_Xcb_Data;
int
_ecore_x_reply_init ()
{
- _ecore_xcb_cookies = ecore_list_new();
- if (!_ecore_xcb_cookies)
- return 0;
-
- if (!ecore_list_init(_ecore_xcb_cookies))
- {
- ecore_list_destroy(_ecore_xcb_cookies);
- return 0;
- }
-
- if (!ecore_list_free_cb_set(_ecore_xcb_cookies, ECORE_FREE_CB(free)))
- {
- ecore_list_destroy(_ecore_xcb_cookies);
- return 0;
- }
-
return 1;
}
void
_ecore_x_reply_shutdown ()
{
+ Ecore_Xcb_Data *data;
+
if (_ecore_xcb_reply)
free(_ecore_xcb_reply);
if (!_ecore_xcb_cookies)
return;
- ecore_list_destroy(_ecore_xcb_cookies);
+ EINA_LIST_FREE(_ecore_xcb_cookies, data)
+ free(data);
}
void
data->cookie = cookie;
- if (!ecore_list_append(_ecore_xcb_cookies, data))
+ _ecore_xcb_cookies = eina_list_append(_ecore_xcb_cookies, data);
+ if (!eina_list_data_find(_ecore_xcb_cookies, data))
{
free(data);
return;
if (!_ecore_xcb_cookies)
return 0;
- data = ecore_list_first_remove(_ecore_xcb_cookies);
- if (data)
- {
+ data = eina_list_data_get(_ecore_xcb_cookies);
+ if (!data) return 0;
+
+ _ecore_xcb_cookies = eina_list_remove_list(_ecore_xcb_cookies, _ecore_xcb_cookies);
cookie = data->cookie;
free(data);
return cookie;
- }
-
- return 0;
}
void