libpurple/plugins/perl/perl-handlers.c

branch
soc.2013.gobjectification.plugins
changeset 36545
23b59a16c808
parent 34803
e0c884a4419a
equal deleted inserted replaced
36544:1bf8b6ef5aea 36545:23b59a16c808
623 } 623 }
624 624
625 PurpleCmdId 625 PurpleCmdId
626 purple_perl_cmd_register(PurplePlugin *plugin, const gchar *command, 626 purple_perl_cmd_register(PurplePlugin *plugin, const gchar *command,
627 const gchar *args, PurpleCmdPriority priority, 627 const gchar *args, PurpleCmdPriority priority,
628 PurpleCmdFlag flag, const gchar *prpl_id, SV *callback, 628 PurpleCmdFlag flag, const gchar *protocol_id, SV *callback,
629 const gchar *helpstr, SV *data) 629 const gchar *helpstr, SV *data)
630 { 630 {
631 PurplePerlCmdHandler *handler; 631 PurplePerlCmdHandler *handler;
632 632
633 handler = g_new0(PurplePerlCmdHandler, 1); 633 handler = g_new0(PurplePerlCmdHandler, 1);
634 handler->plugin = plugin; 634 handler->plugin = plugin;
635 handler->cmd = g_strdup(command); 635 handler->cmd = g_strdup(command);
636 handler->prpl_id = g_strdup(prpl_id); 636 handler->protocol_id = g_strdup(protocol_id);
637 637
638 if (callback != NULL && callback != &PL_sv_undef) 638 if (callback != NULL && callback != &PL_sv_undef)
639 handler->callback = newSVsv(callback); 639 handler->callback = newSVsv(callback);
640 else 640 else
641 handler->callback = NULL; 641 handler->callback = NULL;
645 else 645 else
646 handler->data = NULL; 646 handler->data = NULL;
647 647
648 cmd_handlers = g_slist_append(cmd_handlers, handler); 648 cmd_handlers = g_slist_append(cmd_handlers, handler);
649 649
650 handler->id = purple_cmd_register(command, args, priority, flag, prpl_id, 650 handler->id = purple_cmd_register(command, args, priority, flag, protocol_id,
651 PURPLE_CMD_FUNC(perl_cmd_cb), helpstr, 651 PURPLE_CMD_FUNC(perl_cmd_cb), helpstr,
652 handler); 652 handler);
653 653
654 return handler->id; 654 return handler->id;
655 } 655 }
665 665
666 if (handler->data != NULL) 666 if (handler->data != NULL)
667 SvREFCNT_dec(handler->data); 667 SvREFCNT_dec(handler->data);
668 668
669 g_free(handler->cmd); 669 g_free(handler->cmd);
670 g_free(handler->prpl_id); 670 g_free(handler->protocol_id);
671 g_free(handler); 671 g_free(handler);
672 } 672 }
673 673
674 void 674 void
675 purple_perl_cmd_clear_for_plugin(PurplePlugin *plugin) 675 purple_perl_cmd_clear_for_plugin(PurplePlugin *plugin)

mercurial