[ekg2-commit] r3910 - in trunk: ekg plugins/feed plugins/gg plugins/gtk plugins/jabber plugins/jogger plugins/ncurses plugins/perl/common plugins/perl/irc plugins/python plugins/readline plugins/xmsg: trunk/ekg/commands.c trunk/ekg/ekg.c trunk/ekg/plugins.c trunk/ekg/plugins.h trunk/ekg/sessions.c trunk/ekg/sessions.h trunk/ekg/stuff.c trunk/ekg/windows.c trunk/plugins/feed/rss.c trunk/plugins/gg/pubdir.c trunk/plugins/gtk/completion.c trunk/plugins/jabber/commands.c trunk/plugins/jabber/jabber.c trunk/plugins/jabber/jabber_dcc.c trunk/plugins/jogger/jogger.c trunk/plugins/ncurses/completion.c trunk/plugins/ncurses/contacts.c trunk/plugins/perl/common/Session.xs trunk/plugins/perl/irc/Server.xs trunk/plugins/python/python-ekg.c trunk/plugins/readline/readline-completion.c trunk/plugins/xmsg/xmsg.c
SVN commit
svn w toxygen.net
Nie, 16 Mar 2008, 10:28:16 CET
Author: peres
Date: 2008-03-16 10:28:15 +0100 (Sun, 16 Mar 2008)
New Revision: 3910
Modified:
trunk/ekg/commands.c
trunk/ekg/ekg.c
trunk/ekg/plugins.c
trunk/ekg/plugins.h
trunk/ekg/sessions.c
trunk/ekg/sessions.h
trunk/ekg/stuff.c
trunk/ekg/windows.c
trunk/plugins/feed/rss.c
trunk/plugins/gg/pubdir.c
trunk/plugins/gtk/completion.c
trunk/plugins/jabber/commands.c
trunk/plugins/jabber/jabber.c
trunk/plugins/jabber/jabber_dcc.c
trunk/plugins/jogger/jogger.c
trunk/plugins/ncurses/completion.c
trunk/plugins/ncurses/contacts.c
trunk/plugins/perl/common/Session.xs
trunk/plugins/perl/irc/Server.xs
trunk/plugins/python/python-ekg.c
trunk/plugins/readline/readline-completion.c
trunk/plugins/xmsg/xmsg.c
Log:
Sessions into lists3.
Modified: trunk/ekg/commands.c
===================================================================
--- trunk/ekg/commands.c 2008-03-16 00:19:48 UTC (rev 3909)
+++ trunk/ekg/commands.c 2008-03-16 09:28:15 UTC (rev 3910)
@@ -802,15 +802,14 @@
next_is_for = 1;
if (for_all) {
- list_t l;
+ session_t *s;
if (!sessions) {
printq("session_list_empty");
return -2;
}
- for (l = sessions; l; l = l->next) {
- session_t *s = l->data;
+ for (s = sessions; s; s = s->next) {
char *for_command;
if (!s || !s->uid)
@@ -1828,15 +1827,13 @@
static COMMAND(cmd_quit)
{
char *reason;
- list_t l;
+ session_t *s;
reason = xstrdup(params[0]);
query_emit_id(NULL, QUITTING, &reason);
xfree(reason);
- for (l = sessions; l; l = l->next) {
- session_t *s = l->data;
-
+ for (s = sessions; s; s = s->next) {
if (params[0])
command_exec_format(NULL, s, 3, ("/disconnect %s"), params[0]);
else
@@ -2811,9 +2808,10 @@
int binding_quick_list(int a, int b)
{
string_t list = string_init(NULL);
- list_t l, sl;
- for (sl = sessions; sl; sl = sl->next) {
- session_t *s = sl->data;
+ list_t l;
+ session_t *s;
+
+ for (s = sessions; s; s = s->next) {
for (l = s->userlist; l; l = l->next) {
userlist_t *u = l->data;
const char *format;
Modified: trunk/ekg/ekg.c
===================================================================
--- trunk/ekg/ekg.c 2008-03-16 00:19:48 UTC (rev 3909)
+++ trunk/ekg/ekg.c 2008-03-16 09:28:15 UTC (rev 3910)
@@ -129,7 +129,6 @@
void ekg_loop() {
struct timeval tv;
struct timeval stv;
- list_t l;
fd_set rd, wd;
int ret, maxfd, status;
pid_t pid;
@@ -177,46 +176,48 @@
}
}
- /* sprawdź autoawaye różnych sesji */
- for (l = sessions; l; l = l->next) {
- session_t *s = l->data;
- int tmp;
+ { /* XXX: maybe make this some kind of idler? */
+ session_t *s;
- if (!s->connected || (s->status < EKG_STATUS_AWAY)) /* lowest autostatus is autoxa, so from xa and lower ones
- we can't go further */
- continue;
+ /* sprawdź autoawaye różnych sesji */
+ for (s = sessions; s; s = s->next) {
+ int tmp;
- do {
- if ((s->status == EKG_STATUS_AWAY) || (tmp = session_int_get(s, "auto_away")) < 1 || !s->activity)
- break;
+ if (!s->connected || (s->status < EKG_STATUS_AWAY)) /* lowest autostatus is autoxa, so from xa and lower ones
+ we can't go further */
+ continue;
- if (tv.tv_sec - s->activity > tmp)
- command_exec(NULL, s, ("/_autoaway"), 0);
- } while (0);
+ do {
+ if ((s->status == EKG_STATUS_AWAY) || (tmp = session_int_get(s, "auto_away")) < 1 || !s->activity)
+ break;
- do {
- if ((tmp = session_int_get(s, "auto_xa")) < 1 || !s->activity)
- break;
+ if (tv.tv_sec - s->activity > tmp)
+ command_exec(NULL, s, ("/_autoaway"), 0);
+ } while (0);
- if (tv.tv_sec - s->activity > tmp)
- command_exec(NULL, s, ("/_autoxa"), 0);
- } while (0);
- }
+ do {
+ if ((tmp = session_int_get(s, "auto_xa")) < 1 || !s->activity)
+ break;
- /* sprawdź scroll timeouty */
- /* XXX: nie tworzyć variabla globalnego! */
- for (l = sessions; l; l = l->next) {
- session_t *s = l->data;
- int tmp;
+ if (tv.tv_sec - s->activity > tmp)
+ command_exec(NULL, s, ("/_autoxa"), 0);
+ } while (0);
+ }
- if (!s->connected)
- continue;
+ /* sprawdź scroll timeouty */
+ /* XXX: nie tworzyć variabla globalnego! */
+ for (s = sessions; s; s = s->next) {
+ int tmp;
- if (!(tmp = session_int_get(s, "scroll_long_desc")) || tmp == -1)
- continue;
+ if (!s->connected)
+ continue;
- if (tv.tv_sec - s->scroll_last > tmp)
- command_exec(NULL, s, ("/_autoscroll"), 0);
+ if (!(tmp = session_int_get(s, "scroll_long_desc")) || tmp == -1)
+ continue;
+
+ if (tv.tv_sec - s->scroll_last > tmp)
+ command_exec(NULL, s, ("/_autoscroll"), 0);
+ }
}
/* auto save */
@@ -415,14 +416,9 @@
}
if (w->fd == 0) {
- list_t session_list;
- for (
- session_list = sessions;
- session_list;
- session_list = session_list->next)
+ session_t *s;
+ for (s = sessions; s; s = s->next)
{
- session_t *s = session_list->data;
-
if (!s->connected || !s->autoaway)
continue;
@@ -698,7 +694,6 @@
#else
WSADATA wsaData;
#endif
- list_t l;
#ifndef NO_POSIX_SYSTEM
/* zostaw po sobie core */
@@ -985,39 +980,40 @@
config_postread();
- /* status window takes first session if not setted before*/
+ /* status window takes first session if not set before*/
if (!session_current && sessions)
- session_current = (session_t*) sessions->data;
+ session_current = sessions;
if (session_current != window_current->session)
window_current->session = session_current;
metacontact_read(); /* read the metacontacts info */
- /* wylosuj opisy i zmień stany klientów */
- for (l = sessions; l; l = l->next) {
- session_t *s = l->data;
- const char *cmd = NULL;
+ {
+ session_t *s;
- if (new_status)
- session_status_set(s, new_status);
+ /* wylosuj opisy i zmień stany klientów */
+ for (s = sessions; s; s = s->next) {
+ const char *cmd = NULL;
- if (new_descr)
- session_descr_set(s, new_descr);
+ if (new_status)
+ session_status_set(s, new_status);
- cmd = ekg_status_string(s->status, 1);
+ if (new_descr)
+ session_descr_set(s, new_descr);
- command_exec_format(NULL, s, 2, ("/%s %s"), cmd, (new_descr) ? new_descr : "");
- }
+ cmd = ekg_status_string(s->status, 1);
- /* po zainicjowaniu protokołów, połącz się automagicznie ze
- * wszystkim, co chce się automagicznie łączyć. */
- for (l = sessions; l; l = l->next) {
- session_t *s = l->data;
+ command_exec_format(NULL, s, 2, ("/%s %s"), cmd, (new_descr) ? new_descr : "");
+ }
- if (auto_connect && session_int_get(s, "auto_connect") == 1)
- command_exec(NULL, s, ("/connect"), 0);
- }
+ /* po zainicjowaniu protokołów, połącz się automagicznie ze
+ * wszystkim, co chce się automagicznie łączyć. */
+ for (s = sessions; s; s = s->next) {
+ if (auto_connect && session_int_get(s, "auto_connect") == 1)
+ command_exec(NULL, s, ("/connect"), 0);
+ }
+ }
if (config_auto_save)
last_save = time(NULL);
Modified: trunk/ekg/plugins.c
===================================================================
--- trunk/ekg/plugins.c 2008-03-16 00:19:48 UTC (rev 3909)
+++ trunk/ekg/plugins.c 2008-03-16 09:28:15 UTC (rev 3910)
@@ -509,8 +509,6 @@
* ekg2 do SEGV.
*/
- list_t l;
-
if (!p)
return -1;
@@ -553,13 +551,16 @@
}
}
- for (l = sessions; l; ) {
- session_t *s = l->data;
+ {
+ session_t *s;
- l = l->next;
+ for (s = sessions; s; ) {
+ session_t *next = s->next;
- if (s->plugin == p)
- session_remove(s->uid);
+ if (s->plugin == p)
+ session_remove(s->uid);
+ s = next;
+ }
}
{
Modified: trunk/ekg/plugins.h
===================================================================
--- trunk/ekg/plugins.h 2008-03-16 00:19:48 UTC (rev 3909)
+++ trunk/ekg/plugins.h 2008-03-16 09:28:15 UTC (rev 3910)
@@ -26,7 +26,7 @@
#include "dynstuff.h"
#include "sessions.h"
-#define EKG_ABI_VER 3894
+#define EKG_ABI_VER 3910
#define EXPORT __attribute__ ((visibility("default")))
Modified: trunk/ekg/sessions.c
===================================================================
--- trunk/ekg/sessions.c 2008-03-16 00:19:48 UTC (rev 3909)
+++ trunk/ekg/sessions.c 2008-03-16 09:28:15 UTC (rev 3910)
@@ -49,7 +49,7 @@
#include "queries.h"
-list_t sessions = NULL;
+session_t *sessions = NULL;
session_t *session_current = NULL;
/**
@@ -68,9 +68,10 @@
*/
session_t *session_find_ptr(session_t *s) {
- list_t l;
- for (l = sessions; l; l = l->next) {
- if (l->data == s)
+ session_t *sl;
+
+ for (sl = sessions; sl; sl = sl->next) {
+ if (sl == s)
return s;
}
@@ -91,14 +92,12 @@
session_t *session_find(const char *uid)
{
- list_t l;
+ session_t *s;
if (!uid)
return NULL;
- for (l = sessions; l; l = l->next) {
- session_t *s = l->data;
-
+ for (s = sessions; s; s = s->next) {
if (!xstrcasecmp(s->uid, uid) || (s->alias && !xstrcasecmp(s->alias, uid)))
return s;
}
@@ -161,7 +160,7 @@
s->lock_fd = -1;
#endif
- LIST_ADD_SORTED(&sessions, s, session_compare);
+ LIST_ADD_SORTED2(&sessions, s, session_compare);
/* XXX, wywalic sprawdzanie czy juz jest sesja? w koncu jak dodajemy sesje.. to moze chcemy sie od razu na nia przelaczyc? */
if (!window_current->session && (window_current->id == 0 || window_current->id == 1)) {
@@ -222,6 +221,31 @@
return s;
}
+static LIST_FREE_ITEM(session_free_item, session_t *) {
+ list_t l;
+
+/* free _global_ session variables */
+ array_free_count(data->values, data->global_vars_count);
+
+/* free _local_ session variables */
+ for (l = data->local_vars; l; l = l->next) {
+ session_param_t *v = l->data;
+
+ xfree(v->key);
+ xfree(v->value);
+ }
+ list_destroy(data->local_vars, 1);
+
+ xfree(data->alias);
+ xfree(data->uid);
+ xfree(data->descr);
+ xfree(data->password);
+ xfree(data->last_descr);
+
+ /* free memory like sessions_free() do */
+ userlist_free(data);
+}
+
/**
* session_remove()
*
@@ -254,8 +278,8 @@
int session_remove(const char *uid)
{
session_t *s;
- char *tmp;
list_t l;
+ char *tmp;
int count;
if (!(s = session_find(uid)))
@@ -263,7 +287,7 @@
if (s == session_current)
session_current = NULL;
- count = list_count(sessions);
+ count = LIST_COUNT2(sessions);
for (l = windows; l; l = l->next) {
window_t *w = l->data;
@@ -321,28 +345,7 @@
query_emit_id(NULL, SESSION_REMOVED, &tmp);
xfree(tmp);
-/* free _global_ session variables */
- array_free_count(s->values, s->global_vars_count);
-
-/* free _local_ session variables */
- for (l = s->local_vars; l; l = l->next) {
- session_param_t *v = l->data;
-
- xfree(v->key);
- xfree(v->value);
- }
- list_destroy(s->local_vars, 1);
-
- xfree(s->alias);
- xfree(s->uid);
- xfree(s->descr);
- xfree(s->password);
- xfree(s->last_descr);
-
- /* free memory like sessions_free() do */
- userlist_free(s);
-
- list_remove(&sessions, s, 1);
+ LIST_REMOVE2(&sessions, s, session_free_item);
return 0;
}
@@ -754,13 +757,10 @@
plugin_t *p;
if (!in_autoexec) {
- list_t l;
+ session_t *sf;
- for (l = sessions; l; l = l->next) {
- session_t *s = l->data;
-
- command_exec(NULL, s, ("/disconnect"), 1);
- }
+ for (sf = sessions; sf; sf = sf->next)
+ command_exec(NULL, sf, ("/disconnect"), 1);
sessions_free();
debug(" flushed sessions\n");
}
@@ -833,7 +833,7 @@
return -1;
for (p = plugins; p; p = p->next) {
- list_t ls;
+ session_t *s;
const char *tmp;
if (p->pclass != PLUGIN_PROTOCOL) continue; /* skip no protocol plugins */
@@ -849,8 +849,7 @@
continue;
}
- for (ls = sessions; ls; ls = ls->next) {
- session_t *s = ls->data;
+ for (s = sessions; s; s = s->next) {
int i;
if (s->plugin != p)
@@ -999,11 +998,7 @@
session_t *s;
if (!params[0] || match_arg(params[0], 'l', ("list"), 2)) {
- list_t l;
-
- for (l = sessions; l; l = l->next) {
- session_t *s = l->data;
-
+ for (s = sessions; s; s = s->next) {
const char *descr = (s->connected) ? s->descr : NULL;
const int status = (s->connected) ? s->status : EKG_STATUS_NA;
char *tmp;
@@ -1025,10 +1020,7 @@
}
if (!xstrcasecmp(params[0], "--dump")) {
- list_t l;
-
- for (l = sessions; l; l = l->next) {
- session_t *s = l->data;
+ for (s = sessions; s; s = s->next) {
plugin_t *p = s->plugin;
list_t lp;
int i;
@@ -1462,7 +1454,7 @@
* zwalnia wszystkie dostępne sesje
*/
void sessions_free() {
- list_t old_sessions;
+ session_t *s;
list_t l;
if (!sessions)
@@ -1498,38 +1490,15 @@
/* it's sessions, not 'l' because we emit SESSION_REMOVED, which might want to search over sessions list...
* This bug was really time-wasting ;(
*/
- for (old_sessions = sessions; sessions; sessions = sessions->next) {
- session_t *s = sessions->data;
- list_t lp;
-
- if (!s)
- continue;
-
+/* mg: I modified it so it'll first emit all the events, and then start to free everything
+ * That shouldn't be a problem, should it? */
+ for (s = sessions; s; s = s->next)
query_emit_id(s->plugin, SESSION_REMOVED, &(s->uid)); /* it notify only that plugin here, to free internal data.
* ui-plugin already removed.. other plugins @ quit.
* shouldn't be aware about it. too...
* XXX, think about it?
*/
- /* free _global_ variables */
- array_free_count(s->values, s->global_vars_count);
- /* free _local_ variables */
- for (lp = s->local_vars; lp; lp = lp->next) {
- session_param_t *v = lp->data;
-
- xfree(v->key);
- xfree(v->value);
- }
- list_destroy(s->local_vars, 1);
-
- xfree(s->alias);
- xfree(s->uid);
- xfree(s->descr);
- xfree(s->password);
- xfree(s->last_descr);
- userlist_free(s);
- }
-
for (l = windows; l; l = l->next) {
window_t *w = l->data;
@@ -1539,7 +1508,7 @@
w->session = NULL;
}
- list_destroy(old_sessions, 1);
+ LIST_DESTROY2(sessions, session_free_item);
sessions = NULL;
session_current = NULL;
window_current->session = NULL;
@@ -1678,14 +1647,12 @@
* It should cleanup old locks and reinit new, if needed.
*/
void changed_session_locks(const char *varname) {
- list_t l;
+ session_t *s;
#ifdef HAVE_FLOCK
if (config_session_locks != 1) {
/* unlock all files, close fds */
- for (l = sessions; l; l = l->next) {
- session_t *s = l->data;
-
+ for (s = sessions; s; s = s->next) {
if (s->lock_fd != -1) {
flock(s->lock_fd, LOCK_UN);
close(s->lock_fd);
@@ -1697,9 +1664,7 @@
if (!config_session_locks) {
/* unlink all lockfiles */
- for (l = sessions; l; l = l->next) {
- session_t *s = l->data;
-
+ for (s = sessions; s; s = s->next) {
if (s->connected) { /* don't break locks of other copy of ekg2 */
const char *path = prepare_pathf("%s-lock", session_uid_get(s));
if (path)
@@ -1708,9 +1673,7 @@
}
} else {
/* lock all connected sessions */
- for (l = sessions; l; l = l->next) {
- session_t *s = l->data;
-
+ for (s = sessions; s; s = s->next) {
if (s->connected
#ifdef HAVE_FLOCK
&& ((config_session_locks != 1) || (s->lock_fd == -1))
Modified: trunk/ekg/sessions.h
===================================================================
--- trunk/ekg/sessions.h 2008-03-16 00:19:48 UTC (rev 3909)
+++ trunk/ekg/sessions.h 2008-03-16 09:28:15 UTC (rev 3910)
@@ -103,7 +103,9 @@
/**
* session_t contains all information about session
*/
-typedef struct {
+typedef struct session {
+ struct session *next;
+
/* public: */
void *plugin; /**< protocol plugin owing session */
char *uid; /**< user ID */
@@ -137,7 +139,7 @@
} session_t;
#ifndef EKG2_WIN32_NOFUNCTION
-extern list_t sessions;
+extern session_t *sessions;
extern session_t *session_current;
Modified: trunk/ekg/stuff.c
===================================================================
--- trunk/ekg/stuff.c 2008-03-16 00:19:48 UTC (rev 3909)
+++ trunk/ekg/stuff.c 2008-03-16 09:28:15 UTC (rev 3910)
@@ -644,16 +644,15 @@
*/
void changed_display_blinking(const char *var)
{
- list_t sl;
+ session_t *s;
/* wyłączamy wszystkie blinkające uid'y */
- for (sl = sessions; sl; sl = sl->next) {
+ for (s = sessions; s; s = s->next) {
list_t l;
- session_t *s = sl->data;
for (l = s->userlist; l; l = l->next) {
userlist_t *u = l->data;
- u->blink = 0;;
+ u->blink = 0;
}
}
}
@@ -790,7 +789,7 @@
{
struct conference c, *cf;
char **nicks;
- list_t l, sl;
+ list_t l;
int i, count;
char **p;
@@ -807,12 +806,12 @@
/* grupy zamieniamy na niki */
for (i = 0; nicks[i]; i++) {
if (nicks[i][0] == '@') {
+ session_t *s;
char *gname = xstrdup(nicks[i] + 1);
int first = 0;
int nig = 0; /* nicks in group */
- for (sl = sessions; sl; sl = sl->next) {
- session_t *s = sl->data;
+ for (s = sessions; s; s = s->next) {
for (l = s->userlist; l; l = l->next) {
userlist_t *u = l->data;
list_t m;
Modified: trunk/ekg/windows.c
===================================================================
--- trunk/ekg/windows.c 2008-03-16 00:19:48 UTC (rev 3909)
+++ trunk/ekg/windows.c 2008-03-16 09:28:15 UTC (rev 3910)
@@ -124,10 +124,8 @@
return NULL;
if (xstrncmp(target, "__", 2)) {
- list_t sl;
- for (sl = sessions; sl; sl = sl->next) {
- session_t *s = sl->data;
-
+ session_t *s;
+ for (s = sessions; s; s = s->next) {
/* if sessions mishmash, and it wasn't NULL session, skip this session */
if (session != s && session)
continue;
@@ -631,7 +629,7 @@
w->session = window_current->session;
if (!w->session && sessions)
- w->session = (session_t*) sessions->data;
+ w->session = sessions;
if (!w->floating)
window_switch(w->id);
@@ -898,7 +896,7 @@
*/
int window_session_cycle(window_t *w) {
- list_t l;
+ session_t *s;
session_t *new_session = NULL;
int once = 0;
char *uid;
@@ -926,12 +924,10 @@
}
- /* find sessions->(...next..)->data == w->session */
- for (l = sessions; l; l = l->next) {
- session_t *s = l->data;
-
+ /* find sessions->(...next..) == w->session */
+ for (s = sessions; s; s = s->next) {
if (w->session == s) {
- l = l->next;
+ s = s->next;
break;
}
}
@@ -940,26 +936,24 @@
uid = w->target;
again:
- if (l) {
- list_t k;
+ if (s) {
+ session_t *k;
- for (k = l; k; k = k->next) {
- session_t *s = k->data;
-
- if (s == w->session)
+ for (k = s; k; k = k->next) {
+ if (k == w->session)
break;
once = 1;
- if (config_window_session_allow == 2 || !w->target || (config_window_session_allow != 0 && get_uid(s, uid))) {
- new_session = s;
+ if (config_window_session_allow == 2 || !w->target || (config_window_session_allow != 0 && get_uid(k, uid))) {
+ new_session = k;
break;
}
}
}
- if (!new_session && l != sessions) {
- l = sessions;
+ if (!new_session && s != sessions) {
+ s = sessions;
goto again;
}
Modified: trunk/plugins/feed/rss.c
===================================================================
--- trunk/plugins/feed/rss.c 2008-03-16 00:19:48 UTC (rev 3909)
+++ trunk/plugins/feed/rss.c 2008-03-16 09:28:15 UTC (rev 3910)
@@ -137,31 +137,27 @@
}
static void rss_set_statusdescr(const char *uid, int status, char *descr) {
- list_t l;
- for (l = sessions; l; l = l->next) {
- session_t *s = l->data;
+ session_t *s;
+ for (s = sessions; s; s = s->next) {
if (!xstrncmp(s->uid, "rss:", 4))
feed_set_statusdescr(userlist_find(s, uid), status, descr);
}
}
static void rss_set_status(const char *uid, int status) {
- list_t l;
+ session_t *s;
- for (l = sessions; l; l = l->next) {
- session_t *s = l->data;
-
+ for (s = sessions; s; s = s->next) {
if (!xstrncmp(s->uid, "rss:", 4))
feed_set_status(userlist_find(s, uid), status);
}
}
static void rss_set_descr(const char *uid, char *descr) {
- list_t l;
- for (l = sessions; l; l = l->next) {
- session_t *s = l->data;
+ session_t *s;
+ for (s = sessions; s; s = s->next) {
if (!xstrncmp(s->uid, "rss:", 4))
feed_set_descr(userlist_find(s, uid), descr);
}
Modified: trunk/plugins/gg/pubdir.c
===================================================================
--- trunk/plugins/gg/pubdir.c 2008-03-16 00:19:48 UTC (rev 3909)
+++ trunk/plugins/gg/pubdir.c 2008-03-16 09:28:15 UTC (rev 3910)
@@ -258,7 +258,7 @@
static WATCHER(gg_handle_passwd) {
struct gg_http *h = data;
struct gg_pubdir *p = NULL;
- list_t l;
+ session_t *s;
if (type == 2) {
debug("[gg] gg_handle_passwd() timeout\n");
@@ -296,8 +296,7 @@
print("passwd");
fail:
- for (l = sessions; l; l = l->next) {
- session_t *s = l->data;
+ for (s = sessions; s; s = s->next) {
gg_private_t *g;
list_t m;
Modified: trunk/plugins/gtk/completion.c
===================================================================
--- trunk/plugins/gtk/completion.c 2008-03-16 00:19:48 UTC (rev 3909)
+++ trunk/plugins/gtk/completion.c 2008-03-16 09:28:15 UTC (rev 3910)
@@ -579,10 +579,9 @@
static void sessions_generator(const char *text, int len)
{
- list_t l;
+ session_t *v;
- for (l = sessions; l; l = l->next) {
- session_t *v = l->data;
+ for (v = sessions; v; v = v->next) {
if (*text == '-') {
if (!xstrncasecmp(text + 1, v->uid, len - 1))
array_add_check(&completions, saprintf("-%s", v->uid), 1);
Modified: trunk/plugins/jabber/commands.c
===================================================================
--- trunk/plugins/jabber/commands.c 2008-03-16 00:19:48 UTC (rev 3909)
+++ trunk/plugins/jabber/commands.c 2008-03-16 09:28:15 UTC (rev 3910)
@@ -1505,7 +1505,6 @@
}
if (match_arg(params[0], 'p', ("put"), 2)) { /* put */
- list_t l;
const char *id;
if (!(id = jabber_iq_reg(session, "private_", NULL, "query", "jabber:iq:private"))) {
@@ -1520,6 +1519,7 @@
/* Synchronize config (?) */
if (config) {
plugin_t *p;
+ session_t *s;
for (p = plugins; p; p = p->next) {
variable_t *v;
@@ -1560,8 +1560,7 @@
}
}
}
- for (l = sessions; l; l = l->next) {
- session_t *s = l->data;
+ for (s = sessions; s; s = s->next) {
plugin_t *pl = s->plugin;
int i;
Modified: trunk/plugins/jabber/jabber.c
===================================================================
--- trunk/plugins/jabber/jabber.c 2008-03-16 00:19:48 UTC (rev 3909)
+++ trunk/plugins/jabber/jabber.c 2008-03-16 09:28:15 UTC (rev 3910)
@@ -1486,13 +1486,11 @@
*/
static QUERY(jabber_pgp_postinit) {
- list_t l;
+ session_t *s;
session_postinit = 1;
- for (l = sessions; l; l = l->next) {
- session_t *s = l->data;
-
+ for (s = sessions; s; s = s->next) {
/* check if it's jabber_plugin session [DON'T DO IT ON TLEN SESSIONS] */
if (s && s->plugin == &jabber_plugin && !jabber_private(s)->istlen)
jabber_gpg_changed(s, NULL);
Modified: trunk/plugins/jabber/jabber_dcc.c
===================================================================
--- trunk/plugins/jabber/jabber_dcc.c 2008-03-16 00:19:48 UTC (rev 3909)
+++ trunk/plugins/jabber/jabber_dcc.c 2008-03-16 09:28:15 UTC (rev 3910)
@@ -220,7 +220,7 @@
jabber_dcc_t *p = D->priv;
char *this_sha1;
- list_t k;
+ session_t *s;
if (xstrncmp(D->uid, "xmpp:", 5)) continue; /* we skip not jabber dccs */
@@ -228,8 +228,7 @@
if (p->sfd != -1) { debug_error("[%s:%d] p->sfd != -1, already associated ?\n", __FILE__, __LINE__); continue; } /* we skip associated dccs */
if (p->protocol != JABBER_DCC_PROTOCOL_BYTESTREAMS) continue; /* we skip not BYTESTREAMS dccs */
- for (k = sessions; k; k = k->next) {
- session_t *s = k->data;
+ for (s = sessions; s; s = s->next) {
jabber_private_t *j = s->priv;
char *fulluid;
Modified: trunk/plugins/jogger/jogger.c
===================================================================
--- trunk/plugins/jogger/jogger.c 2008-03-16 00:19:48 UTC (rev 3909)
+++ trunk/plugins/jogger/jogger.c 2008-03-16 09:28:15 UTC (rev 3910)
@@ -55,11 +55,9 @@
* @return Session pointer or NULL if none match.
*/
session_t *jogger_session_find_uid(session_t *s, const char *uid) {
- list_t l;
+ session_t *js;
- for (l = sessions; l; l = l->next) {
- session_t *js = l->data;
-
+ for (js = sessions; js; js = js->next) {
if (js->plugin == &jogger_plugin) {
const char *jsw = session_get(js, "used_session");
@@ -112,14 +110,12 @@
const char *suid = *(va_arg(ap, const char **));
session_t *s = session_find(suid);
- list_t l;
+ session_t *js;
if (!s)
return 0;
- for (l = sessions; l; l = l->next) {
- session_t *js = l->data;
-
+ for (js = sessions; js; js = js->next) {
if (js->plugin == &jogger_plugin) {
const char *jsw = session_get(js, "used_session");
@@ -210,16 +206,14 @@
}
static QUERY(jogger_postconfig) {
- list_t l;
+ session_t *js;
void *p = ekg_convert_string_init("UTF-8", NULL, NULL);
jogger_localize_texts(p);
jogger_localize_headers(p);
ekg_convert_string_destroy(p);
- for (l = sessions; l; l = l->next) {
- session_t *js = l->data;
-
+ for (js = sessions; js; js = js->next) {
if ((js->plugin == &jogger_plugin) && !session_int_get(js, "userlist_keep"))
userlist_free(js);
}
Modified: trunk/plugins/ncurses/completion.c
===================================================================
--- trunk/plugins/ncurses/completion.c 2008-03-16 00:19:48 UTC (rev 3909)
+++ trunk/plugins/ncurses/completion.c 2008-03-16 09:28:15 UTC (rev 3910)
@@ -580,10 +580,9 @@
static void sessions_generator(const char *text, int len)
{
- list_t l;
+ session_t *v;
- for (l = sessions; l; l = l->next) {
- session_t *v = l->data;
+ for (v = sessions; v; v = v->next) {
if (*text == '-') {
if (!xstrncasecmp(text + 1, v->uid, len - 1))
array_add_check(&completions, saprintf("-%s", v->uid), 1);
Modified: trunk/plugins/ncurses/contacts.c
===================================================================
--- trunk/plugins/ncurses/contacts.c 2008-03-16 00:19:48 UTC (rev 3909)
+++ trunk/plugins/ncurses/contacts.c 2008-03-16 09:28:15 UTC (rev 3910)
@@ -229,9 +229,9 @@
if (all == 1) {
list_t l;
+ session_t *s;
- for (l = sessions; l; l = l->next) {
- session_t *s = l->data;
+ for (s = sessions; s; s = s->next) {
list_t lp;
if (!s->userlist)
Modified: trunk/plugins/perl/common/Session.xs
===================================================================
--- trunk/plugins/perl/common/Session.xs 2008-03-16 00:19:48 UTC (rev 3909)
+++ trunk/plugins/perl/common/Session.xs 2008-03-16 09:28:15 UTC (rev 3910)
@@ -5,10 +5,10 @@
void sessions()
PREINIT:
- list_t l;
+ session_t *s;
PPCODE:
- for (l = sessions; l; l = l->next) {
- XPUSHs(sv_2mortal(bless_session( (session_t *) l->data)));
+ for (s = sessions; s; s = s->next) {
+ XPUSHs(sv_2mortal(bless_session( s )));
}
Ekg2::Session session_add(char *name)
Modified: trunk/plugins/perl/irc/Server.xs
===================================================================
--- trunk/plugins/perl/irc/Server.xs 2008-03-16 00:19:48 UTC (rev 3909)
+++ trunk/plugins/perl/irc/Server.xs 2008-03-16 09:28:15 UTC (rev 3910)
@@ -5,11 +5,11 @@
void servers()
PREINIT:
- list_t l;
+ session_t *s;
PPCODE:
- for (l = sessions; l; l = l->next) {
- if (!xstrncasecmp( session_uid_get( (session_t *) l->data), IRC4, 4)) {
- XPUSHs(sv_2mortal(bless_server( (session_t *) l->data)));
+ for (s = sessions; s; s = s->next) {
+ if (!xstrncasecmp( session_uid_get( s ), IRC4, 4)) {
+ XPUSHs(sv_2mortal(bless_server( s )));
}
}
Modified: trunk/plugins/python/python-ekg.c
===================================================================
--- trunk/plugins/python/python-ekg.c 2008-03-16 00:19:48 UTC (rev 3909)
+++ trunk/plugins/python/python-ekg.c 2008-03-16 09:28:15 UTC (rev 3910)
@@ -117,7 +117,7 @@
ekg_windowObj *pywindow;
if (!w->session && sessions) {
- w->session = (session_t*) sessions->data;
+ w->session = sessions;
}
pywindow = PyObject_New(ekg_windowObj, &ekg_window_type);
pywindow->w = w;
@@ -472,15 +472,14 @@
PyObject *ekg_cmd_sessions(PyObject * self, PyObject * pyargs)
{
PyObject *list;
- list_t l;
- int len = list_count(sessions);
+ session_t *s;
+ int len = LIST_COUNT2(sessions);
list = PyList_New(len);
len = 0;
- for (l = sessions; l; l = l->next) {
- session_t *p = l->data;
- PyList_SetItem(list, len, python_build_session(p->uid));
+ for (s = sessions; s; s = s->next) {
+ PyList_SetItem(list, len, python_build_session(s->uid));
len++;
}
Py_INCREF(list);
Modified: trunk/plugins/readline/readline-completion.c
===================================================================
--- trunk/plugins/readline/readline-completion.c 2008-03-16 00:19:48 UTC (rev 3909)
+++ trunk/plugins/readline/readline-completion.c 2008-03-16 09:28:15 UTC (rev 3910)
@@ -76,7 +76,7 @@
GENERATOR(sessions_var) {
static int len;
- static list_t el;
+ static session_t *el;
#warning "GENERATOR: sessions_var TODO"
return NULL;
@@ -452,16 +452,15 @@
}
GENERATOR(session) {
- static list_t l;
+ static session_t *s;
static int len;
if (!state) {
- l = sessions;
+ s = sessions;
len = xstrlen(text);
}
- while (l) {
- session_t *s = l->data;
+ while (s) {
if (*text == '-') {
if (!xstrncasecmp(text+1, s->uid, len-1))
return saprintf("-%s", s->uid);
@@ -473,7 +472,7 @@
if (!xstrncasecmp(text, s->alias, len))
return xstrdup(s->alias);
}
- }
+ } /* XXX: shouldn't we iterate or do sth here? I think can get into deadlock */
return NULL;
}
Modified: trunk/plugins/xmsg/xmsg.c
===================================================================
--- trunk/plugins/xmsg/xmsg.c 2008-03-16 00:19:48 UTC (rev 3909)
+++ trunk/plugins/xmsg/xmsg.c 2008-03-16 09:28:15 UTC (rev 3910)
@@ -432,12 +432,9 @@
xerrn("inotify read() failed");
for (evp = ev; n > 0; n -= (evp->len + sizeof(struct inotify_event)), evp = (void*) evp + (evp->len + sizeof(struct inotify_event))) {
- list_t sp;
- session_t *s = NULL;
+ session_t *s;
- for (sp = sessions; sp; sp = sp->next) {
- s = sp->data;
-
+ for (s = sessions; s; s = s->next) {
if (s && (s->priv == (void*) (long int) evp->wd) && !xstrncasecmp(session_uid_get(s), "xmsg:", 5))
break;
}
@@ -452,9 +449,7 @@
c++;
if ((evp->mask & IN_Q_OVERFLOW) || ((config_maxinotifycount > 0) && c >= config_maxinotifycount)) {
- for (sp = sessions; sp; sp = sp->next) {
- s = sp->data;
-
+ for (s = sessions; s; s = s->next) {
if (s && !xstrncasecmp(session_uid_get(s), "xmsg:", 5)) {
const int i = session_int_get(s, "oneshot_resume_timer");
if (!timer_remove_session(s, "o"))
@@ -480,12 +475,9 @@
static QUERY(xmsg_handle_sigusr)
{
- list_t sp;
session_t *s;
- for (sp = sessions; sp; sp = sp->next) {
- s = sp->data;
-
+ for (s = sessions; s; s = s->next) {
if (!timer_remove_session(s, "o"))
xdebug("old oneshot resume timer removed");
if (s && !xstrncasecmp(session_uid_get(s), "xmsg:", 5))
Więcej informacji o liście dyskusyjnej ekg2-commit