disco.c
changeset 33 104ecab6a1d5
parent 32 14534d171215
child 34 1a62a570e66b
equal deleted inserted replaced
32:14534d171215 33:104ecab6a1d5
   168 						identity -> reserved = NULL;
   168 						identity -> reserved = NULL;
   169 
   169 
   170 						identities = g_slist_append (identities, identity);
   170 						identities = g_slist_append (identities, identity);
   171 					} else if (!strcasecmp (node->name, "feature"))
   171 					} else if (!strcasecmp (node->name, "feature"))
   172 						features = g_slist_insert_sorted (features, (gpointer) lm_message_node_get_attribute (node, "var"), (GCompareFunc) g_strcmp0);
   172 						features = g_slist_insert_sorted (features, (gpointer) lm_message_node_get_attribute (node, "var"), (GCompareFunc) g_strcmp0);
   173 			
   173 
   174 			// call handler
   174 			// call handler
   175 			cb -> handler (identities, features, cb -> data);
   175 			cb -> handler (identities, features, cb -> data);
   176 
   176 
   177 			{ // free resources
   177 			{ // free resources
   178 				GSList *iel;
   178 				GSList *iel;
   246 						item -> jid  = lm_message_node_get_attribute (node, "jid");
   246 						item -> jid  = lm_message_node_get_attribute (node, "jid");
   247 						item -> node = lm_message_node_get_attribute (node, "node");
   247 						item -> node = lm_message_node_get_attribute (node, "node");
   248 
   248 
   249 						items = g_slist_append (items, item);
   249 						items = g_slist_append (items, item);
   250 					}
   250 					}
   251 			
   251 
   252 			// call handler
   252 			// call handler
   253 			cb -> handler (items, cb -> data);
   253 			cb -> handler (items, cb -> data);
   254 
   254 
   255 			{ // free resources
   255 			{ // free resources
   256 				GSList *iel;
   256 				GSList *iel;
   352 		if (dnode)
   352 		if (dnode)
   353 			lm_message_node_set_attribute (node, "node", dnode);
   353 			lm_message_node_set_attribute (node, "node", dnode);
   354 
   354 
   355 		{
   355 		{
   356 			disco_info_reply_handler_t *cb = g_new (disco_info_reply_handler_t, 1);
   356 			disco_info_reply_handler_t *cb = g_new (disco_info_reply_handler_t, 1);
   357 			
   357 
   358 			lhandler = lm_message_handler_new (disco_info_reply_handler, cb, disco_info_reply_handler_destroy_notify);
   358 			lhandler = lm_message_handler_new (disco_info_reply_handler, cb, disco_info_reply_handler_destroy_notify);
   359 
   359 
   360 			cb -> handler = handler;
   360 			cb -> handler = handler;
   361 			cb -> data    = userdata;
   361 			cb -> data    = userdata;
   362 			cb -> notify  = notify;
   362 			cb -> notify  = notify;
   401 		if (dnode)
   401 		if (dnode)
   402 			lm_message_node_set_attribute (node, "node", dnode);
   402 			lm_message_node_set_attribute (node, "node", dnode);
   403 
   403 
   404 		{
   404 		{
   405 			disco_items_reply_handler_t *cb       = g_new (disco_items_reply_handler_t, 1);
   405 			disco_items_reply_handler_t *cb       = g_new (disco_items_reply_handler_t, 1);
   406 			
   406 
   407 			lhandler = lm_message_handler_new (disco_items_reply_handler, cb, disco_items_reply_handler_destroy_notify);
   407 			lhandler = lm_message_handler_new (disco_items_reply_handler, cb, disco_items_reply_handler_destroy_notify);
   408 
   408 
   409 			cb -> handler = handler;
   409 			cb -> handler = handler;
   410 			cb -> data    = userdata;
   410 			cb -> data    = userdata;
   411 			cb -> notify  = notify;
   411 			cb -> notify  = notify;
   565 		scr_log_print (LPRINT_NORMAL, "Unknown subcomand.");
   565 		scr_log_print (LPRINT_NORMAL, "Unknown subcomand.");
   566 
   566 
   567 	if (info != -1) {
   567 	if (info != -1) {
   568 		char *to    = NULL;
   568 		char *to    = NULL;
   569 		char *dnode = NULL;
   569 		char *dnode = NULL;
   570 		
   570 
   571 		if (args[0] && args[1]) {
   571 		if (args[0] && args[1]) {
   572 			char *p = args[1];
   572 			char *p = args[1];
   573 
   573 
   574 			if (*p == '.') {
   574 			if (*p == '.') {
   575 				if (*(p + 1) == JID_RESOURCE_SEPARATOR) {
   575 				if (*(p + 1) == JID_RESOURCE_SEPARATOR) {
   657 	cmd_del ("disco");
   657 	cmd_del ("disco");
   658 
   658 
   659 	// completion
   659 	// completion
   660 	if (disco_cid)
   660 	if (disco_cid)
   661 		compl_del_category (disco_cid);
   661 		compl_del_category (disco_cid);
   662 	
   662 
   663 	// hook handler
   663 	// hook handler
   664 	hk_del_handler (HOOK_PRE_DISCONNECT, disco_hid);
   664 	hk_del_handler (HOOK_PRE_DISCONNECT, disco_hid);
   665 
   665 
   666 	// unregister handlers
   666 	// unregister handlers
   667 	disco_unregister_handlers ();
   667 	disco_unregister_handlers ();