cmd.c
changeset 20 d5748ae53a17
parent 19 4524cdff923f
child 21 29491118c0dd
equal deleted inserted replaced
19:4524cdff923f 20:d5748ae53a17
    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);