libpurple/protocols/jabber/caps.c

branch
cpw.darkrain42.xmpp.bosh
changeset 24730
3037dfb744ef
parent 24729
7ceae14935f8
child 24731
c0a5e4f2bed5
equal deleted inserted replaced
24729:7ceae14935f8 24730:3037dfb744ef
700 } 700 }
701 } 701 }
702 return info; 702 return info;
703 } 703 }
704 704
705 static gint jabber_caps_xdata_field_compare(gconstpointer a, gconstpointer b) { 705 static gint jabber_caps_xdata_field_compare(gconstpointer a, gconstpointer b)
706 const JabberDataFormField *ac; 706 {
707 const JabberDataFormField *bc; 707 const JabberDataFormField *ac = a;
708 708 const JabberDataFormField *bc = b;
709 ac = a; 709
710 bc = b;
711
712 return strcmp(ac->var, bc->var); 710 return strcmp(ac->var, bc->var);
713 } 711 }
714 712
715 static GList *jabber_caps_xdata_get_fields(const xmlnode *x) { 713 static GList* jabber_caps_xdata_get_fields(const xmlnode *x)
716 GList *fields = 0; 714 {
715 GList *fields = NULL;
717 xmlnode *field; 716 xmlnode *field;
718 xmlnode *value; 717
719 JabberDataFormField *xdatafield; 718 if (!x)
720 719 return NULL;
721 if(!x) return 0; 720
722 721 for (field = xmlnode_get_child(x, "field"); field; field = xmlnode_get_next_twin(field)) {
723 for(field = xmlnode_get_child(x, "field"); field != 0; field = xmlnode_get_next_twin(field)) { 722 xmlnode *value;
724 xdatafield = g_new0(JabberDataFormField, 1); 723 JabberDataFormField *xdatafield = g_new0(JabberDataFormField, 1);
725 xdatafield->var = g_strdup(xmlnode_get_attrib(field, "var")); 724 xdatafield->var = g_strdup(xmlnode_get_attrib(field, "var"));
726 for(value = xmlnode_get_child(field, "value"); value != 0; value = xmlnode_get_next_twin(value)) { 725
726 for (value = xmlnode_get_child(field, "value"); value; value = xmlnode_get_next_twin(value)) {
727 gchar *val = xmlnode_get_data(value); 727 gchar *val = xmlnode_get_data(value);
728 xdatafield->values = g_list_append(xdatafield->values, val); 728 xdatafield->values = g_list_append(xdatafield->values, val);
729 } 729 }
730
730 xdatafield->values = g_list_sort(xdatafield->values, (GCompareFunc)strcmp); 731 xdatafield->values = g_list_sort(xdatafield->values, (GCompareFunc)strcmp);
731 fields = g_list_append(fields, xdatafield); 732 fields = g_list_append(fields, xdatafield);
732 } 733 }
734
733 fields = g_list_sort(fields, jabber_caps_xdata_field_compare); 735 fields = g_list_sort(fields, jabber_caps_xdata_field_compare);
734 return fields; 736 return fields;
735 } 737 }
736 738
737 static GString* 739 static GString*
784 786
785 while (fields) { 787 while (fields) {
786 GList *value; 788 GList *value;
787 JabberDataFormField *field = (JabberDataFormField*)fields->data; 789 JabberDataFormField *field = (JabberDataFormField*)fields->data;
788 790
789 if(strcmp(field->var, "FORM_TYPE")) { 791 if (strcmp(field->var, "FORM_TYPE")) {
790 /* Append the "var" attribute */ 792 /* Append the "var" attribute */
791 verification = jabber_caps_verification_append(verification, field->var); 793 verification = jabber_caps_verification_append(verification, field->var);
792 /* Append <value/> element's cdata */ 794 /* Append <value/> element's cdata */
793 for(value = field->values; value; value = value->next) { 795 for(value = field->values; value; value = value->next) {
794 verification = jabber_caps_verification_append(verification, value->data); 796 verification = jabber_caps_verification_append(verification, value->data);

mercurial