Mercurial > ~mikael > mcabber > hg
annotate mcabber/src/events.c @ 830:80434fde7cfa
Display presence notification timestamps when they exist
These timestamps were used in the roster, but not in the buffer window
message nor in the history logfile. Reported by "ze".
author | Mikael Berthe <mikael@lilotux.net> |
---|---|
date | Wed, 03 May 2006 11:28:41 +0200 |
parents | 80bd7f49075f |
children | 2de8f8ba1f34 |
rev | line source |
---|---|
745
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
1 /* |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
2 * events.c -- Events fonctions |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
3 * |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
4 * Copyright (C) 2006 Mikael Berthe <bmikael@lists.lilotux.net> |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
5 * |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
6 * This program is free software; you can redistribute it and/or modify |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
7 * it under the terms of the GNU General Public License as published by |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
8 * the Free Software Foundation; either version 2 of the License, or (at |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
9 * your option) any later version. |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
10 * |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
11 * This program is distributed in the hope that it will be useful, but |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
12 * WITHOUT ANY WARRANTY; without even the implied warranty of |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
14 * General Public License for more details. |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
15 * |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
16 * You should have received a copy of the GNU General Public License |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
17 * along with this program; if not, write to the Free Software |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
19 * USA |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
20 */ |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
21 |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
22 #include <glib.h> |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
23 #include "events.h" |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
24 #include "logprint.h" |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
25 |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
26 static GSList *evs_list; // Events list |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
27 |
751
4a7271e69694
Avoid reusing events ids
Mikael Berthe <mikael@lilotux.net>
parents:
746
diff
changeset
|
28 static eviqs *evs_find(const char *evid); |
745
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
29 |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
30 // evs_new(type, timeout) |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
31 // Create an events structure. |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
32 eviqs *evs_new(guint8 type, time_t timeout) |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
33 { |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
34 static guint evs_idn; |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
35 eviqs *new_evs; |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
36 time_t now_t; |
751
4a7271e69694
Avoid reusing events ids
Mikael Berthe <mikael@lilotux.net>
parents:
746
diff
changeset
|
37 char *stridn; |
745
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
38 |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
39 if (!++evs_idn) |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
40 evs_idn = 1; |
751
4a7271e69694
Avoid reusing events ids
Mikael Berthe <mikael@lilotux.net>
parents:
746
diff
changeset
|
41 /* Check for wrapping, we shouldn't reuse ids */ |
4a7271e69694
Avoid reusing events ids
Mikael Berthe <mikael@lilotux.net>
parents:
746
diff
changeset
|
42 stridn = g_strdup_printf("%d", evs_idn); |
4a7271e69694
Avoid reusing events ids
Mikael Berthe <mikael@lilotux.net>
parents:
746
diff
changeset
|
43 if (evs_find(stridn)) { |
4a7271e69694
Avoid reusing events ids
Mikael Berthe <mikael@lilotux.net>
parents:
746
diff
changeset
|
44 g_free(stridn); |
4a7271e69694
Avoid reusing events ids
Mikael Berthe <mikael@lilotux.net>
parents:
746
diff
changeset
|
45 // We could try another id but for now giving up should be fine... |
4a7271e69694
Avoid reusing events ids
Mikael Berthe <mikael@lilotux.net>
parents:
746
diff
changeset
|
46 return NULL; |
4a7271e69694
Avoid reusing events ids
Mikael Berthe <mikael@lilotux.net>
parents:
746
diff
changeset
|
47 } |
745
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
48 |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
49 new_evs = g_new0(eviqs, 1); |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
50 time(&now_t); |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
51 new_evs->ts_create = now_t; |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
52 if (timeout) |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
53 new_evs->ts_expire = now_t + timeout; |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
54 new_evs->type = type; |
751
4a7271e69694
Avoid reusing events ids
Mikael Berthe <mikael@lilotux.net>
parents:
746
diff
changeset
|
55 new_evs->id = stridn; |
745
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
56 |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
57 evs_list = g_slist_append(evs_list, new_evs); |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
58 return new_evs; |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
59 } |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
60 |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
61 int evs_del(const char *evid) |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
62 { |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
63 GSList *p; |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
64 eviqs *i; |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
65 |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
66 if (!evid) return 1; |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
67 |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
68 for (p = evs_list; p; p = g_slist_next(p)) { |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
69 i = p->data; |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
70 if (!strcmp(evid, i->id)) |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
71 break; |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
72 } |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
73 if (p) { |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
74 g_free(i->id); |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
75 if (i->xmldata) xmlnode_free(i->xmldata); |
774
46304b773a44
Remove useless checks before g_free() calls
Mikael Berthe <mikael@lilotux.net>
parents:
757
diff
changeset
|
76 g_free(i->data); |
46304b773a44
Remove useless checks before g_free() calls
Mikael Berthe <mikael@lilotux.net>
parents:
757
diff
changeset
|
77 g_free(i->desc); |
745
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
78 g_free(i); |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
79 evs_list = g_slist_remove(evs_list, p->data); |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
80 return 0; // Ok, deleted |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
81 } |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
82 return -1; // Not found |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
83 } |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
84 |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
85 static eviqs *evs_find(const char *evid) |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
86 { |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
87 GSList *p; |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
88 eviqs *i; |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
89 |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
90 if (!evid) return NULL; |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
91 |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
92 for (p = evs_list; p; p = g_slist_next(p)) { |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
93 i = p->data; |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
94 if (!strcmp(evid, i->id)) |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
95 return i; |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
96 } |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
97 return NULL; |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
98 } |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
99 |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
100 // evs_callback(evid, evcontext) |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
101 // Callback processing for the specified event. |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
102 // Return 0 in case of success, -1 if the evid hasn't been found. |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
103 int evs_callback(const char *evid, guint evcontext) |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
104 { |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
105 eviqs *i; |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
106 |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
107 i = evs_find(evid); |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
108 if (!i) return -1; |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
109 |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
110 // IQ processing |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
111 // Note: If xml_result is NULL, this is a timeout |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
112 if (i->callback) |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
113 (*i->callback)(i, evcontext); |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
114 |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
115 evs_del(evid); |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
116 return 0; |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
117 } |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
118 |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
119 void evs_check_timeout(time_t now_t) |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
120 { |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
121 GSList *p; |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
122 eviqs *i; |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
123 |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
124 p = evs_list; |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
125 while (p) { |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
126 i = p->data; |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
127 // We must get next IQ eviqs element now because the current one |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
128 // could be freed. |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
129 p = g_slist_next(p); |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
130 |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
131 if ((!i->ts_expire && now_t > i->ts_create + EVS_MAX_TIMEOUT) || |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
132 (i->ts_expire && now_t > i->ts_expire)) { |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
133 evs_callback(i->id, EVS_CONTEXT_TIMEOUT); |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
134 } |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
135 } |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
136 } |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
137 |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
138 void evs_display_list(void) |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
139 { |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
140 GSList *p; |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
141 eviqs *i; |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
142 |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
143 scr_LogPrint(LPRINT_LOGNORM, "Events list:"); |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
144 for (p = evs_list; p; p = g_slist_next(p)) { |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
145 i = p->data; |
753 | 146 scr_LogPrint(LPRINT_LOGNORM, |
147 "Id: %-3s %s", i->id, (i->desc ? i->desc : "")); | |
745
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
148 } |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
149 scr_LogPrint(LPRINT_LOGNORM, "End of events list."); |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
150 } |
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
151 |
820
80bd7f49075f
Allow '*' in /event command
Mikael Berthe <mikael@lilotux.net>
parents:
774
diff
changeset
|
152 // evs_geteventslist(bool comp) |
757
ae23c8826efb
Improve completion for the "/event" command
Mikael Berthe <mikael@lilotux.net>
parents:
753
diff
changeset
|
153 // Return a singly-linked-list of events ids, for the completion system. |
820
80bd7f49075f
Allow '*' in /event command
Mikael Berthe <mikael@lilotux.net>
parents:
774
diff
changeset
|
154 // If comp is true, the string "list" is added (it's a completion argument). |
757
ae23c8826efb
Improve completion for the "/event" command
Mikael Berthe <mikael@lilotux.net>
parents:
753
diff
changeset
|
155 // Note: the caller should free the list (and data) after use. |
820
80bd7f49075f
Allow '*' in /event command
Mikael Berthe <mikael@lilotux.net>
parents:
774
diff
changeset
|
156 GSList *evs_geteventslist(int compl) |
757
ae23c8826efb
Improve completion for the "/event" command
Mikael Berthe <mikael@lilotux.net>
parents:
753
diff
changeset
|
157 { |
ae23c8826efb
Improve completion for the "/event" command
Mikael Berthe <mikael@lilotux.net>
parents:
753
diff
changeset
|
158 GSList *evidlist = NULL, *p; |
ae23c8826efb
Improve completion for the "/event" command
Mikael Berthe <mikael@lilotux.net>
parents:
753
diff
changeset
|
159 eviqs *i; |
ae23c8826efb
Improve completion for the "/event" command
Mikael Berthe <mikael@lilotux.net>
parents:
753
diff
changeset
|
160 |
ae23c8826efb
Improve completion for the "/event" command
Mikael Berthe <mikael@lilotux.net>
parents:
753
diff
changeset
|
161 for (p = evs_list; p; p = g_slist_next(p)) { |
ae23c8826efb
Improve completion for the "/event" command
Mikael Berthe <mikael@lilotux.net>
parents:
753
diff
changeset
|
162 i = p->data; |
ae23c8826efb
Improve completion for the "/event" command
Mikael Berthe <mikael@lilotux.net>
parents:
753
diff
changeset
|
163 evidlist = g_slist_append(evidlist, g_strdup(i->id)); |
ae23c8826efb
Improve completion for the "/event" command
Mikael Berthe <mikael@lilotux.net>
parents:
753
diff
changeset
|
164 } |
ae23c8826efb
Improve completion for the "/event" command
Mikael Berthe <mikael@lilotux.net>
parents:
753
diff
changeset
|
165 |
820
80bd7f49075f
Allow '*' in /event command
Mikael Berthe <mikael@lilotux.net>
parents:
774
diff
changeset
|
166 if (compl) { |
80bd7f49075f
Allow '*' in /event command
Mikael Berthe <mikael@lilotux.net>
parents:
774
diff
changeset
|
167 // Last item is the "list" subcommand. |
80bd7f49075f
Allow '*' in /event command
Mikael Berthe <mikael@lilotux.net>
parents:
774
diff
changeset
|
168 evidlist = g_slist_append(evidlist, g_strdup("list")); |
80bd7f49075f
Allow '*' in /event command
Mikael Berthe <mikael@lilotux.net>
parents:
774
diff
changeset
|
169 } |
757
ae23c8826efb
Improve completion for the "/event" command
Mikael Berthe <mikael@lilotux.net>
parents:
753
diff
changeset
|
170 return evidlist; |
ae23c8826efb
Improve completion for the "/event" command
Mikael Berthe <mikael@lilotux.net>
parents:
753
diff
changeset
|
171 } |
ae23c8826efb
Improve completion for the "/event" command
Mikael Berthe <mikael@lilotux.net>
parents:
753
diff
changeset
|
172 |
745
413e95f3051a
Introduce user "events" list
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
173 /* vim: set expandtab cindent cinoptions=>2\:2(0: For Vim users... */ |