equal
deleted
inserted
replaced
45 "Recognizes options cmd_shell, cmd_redirect_stderr, cmd_header and cmd_header_inline\n" \ |
45 "Recognizes options cmd_shell, cmd_redirect_stderr, cmd_header and cmd_header_inline\n" \ |
46 "Provides command /cmd" ) |
46 "Provides command /cmd" ) |
47 |
47 |
48 static module_info_t info_cmd_experimental = { |
48 static module_info_t info_cmd_experimental = { |
49 .branch = "experimental", |
49 .branch = "experimental", |
50 .api = 15, |
50 #ifndef HAVE_CMD_ID |
|
51 .api = 20, |
|
52 #else |
|
53 .api = 23, |
|
54 #endif |
51 .version = PROJECT_VERSION, |
55 .version = PROJECT_VERSION, |
52 .description = DESCRIPTION, |
56 .description = DESCRIPTION, |
53 .requires = NULL, |
57 .requires = NULL, |
54 .init = mcmd_init, |
58 .init = mcmd_init, |
55 .uninit = mcmd_uninit, |
59 .uninit = mcmd_uninit, |
73 gchar *subject; |
77 gchar *subject; |
74 guint seq; |
78 guint seq; |
75 guint source; |
79 guint source; |
76 GIOChannel *channel; |
80 GIOChannel *channel; |
77 } cmd_cb_t; |
81 } cmd_cb_t; |
|
82 |
|
83 #ifdef HAVE_CMD_ID |
|
84 static gpointer mcmd_cmid = NULL; |
|
85 #endif |
78 |
86 |
79 static GSList *cmd_channels = NULL; |
87 static GSList *cmd_channels = NULL; |
80 |
88 |
81 static gboolean is_room (const gchar *jid) |
89 static gboolean is_room (const gchar *jid) |
82 { |
90 { |
332 } |
340 } |
333 } |
341 } |
334 |
342 |
335 static void mcmd_init (void) |
343 static void mcmd_init (void) |
336 { |
344 { |
|
345 #ifndef HAVE_CMD_ID |
337 cmd_add ("cmd", "", 0, 0, do_cmd, NULL); |
346 cmd_add ("cmd", "", 0, 0, do_cmd, NULL); |
|
347 #else |
|
348 mcmd_cmid = cmd_add ("cmd", "", 0, 0, do_cmd, NULL); |
|
349 #endif |
338 } |
350 } |
339 |
351 |
340 static void mcmd_uninit (void) |
352 static void mcmd_uninit (void) |
341 { |
353 { |
342 GSList *sel; |
354 GSList *sel; |
343 |
355 |
|
356 #ifndef HAVE_CMD_ID |
344 cmd_del ("cmd"); |
357 cmd_del ("cmd"); |
|
358 #else |
|
359 if (mcmd_cmid) |
|
360 cmd_del (mcmd_cmid); |
|
361 #endif |
345 |
362 |
346 for (sel = cmd_channels; sel; sel = sel->next) { |
363 for (sel = cmd_channels; sel; sel = sel->next) { |
347 cmd_cb_t *cb = (cmd_cb_t *) sel->data; |
364 cmd_cb_t *cb = (cmd_cb_t *) sel->data; |
348 if (cb->source) |
365 if (cb->source) |
349 g_source_remove (cb->source); |
366 g_source_remove (cb->source); |