mcabber/src/roster.c
changeset 670 2cd0805515a4
parent 669 2b87065270f3
child 678 e175f5d96f04
equal deleted inserted replaced
669:2b87065270f3 670:2cd0805515a4
   205   if (! (a->type & b->type))
   205   if (! (a->type & b->type))
   206     return -1; // arbitrary (but should be != 0, of course)
   206     return -1; // arbitrary (but should be != 0, of course)
   207   return strcasecmp(a->jid, b->jid);
   207   return strcasecmp(a->jid, b->jid);
   208 }
   208 }
   209 
   209 
       
   210 // Comparison function used to search in the roster (compares names and types)
       
   211 static gint roster_compare_name_type(roster *a, roster *b) {
       
   212   if (! (a->type & b->type))
       
   213     return -1; // arbitrary (but should be != 0, of course)
       
   214   return strcasecmp(a->name, b->name);
       
   215 }
       
   216 
   210 // Comparison function used to sort the roster (by name)
   217 // Comparison function used to sort the roster (by name)
   211 static gint roster_compare_name(roster *a, roster *b) {
   218 static gint roster_compare_name(roster *a, roster *b) {
   212   return strcasecmp(a->name, b->name);
   219   return strcasecmp(a->name, b->name);
   213 }
   220 }
   214 
   221 
   232   if (type == jidsearch) {
   239   if (type == jidsearch) {
   233     sample.jid = (gchar*)jidname;
   240     sample.jid = (gchar*)jidname;
   234     comp = (GCompareFunc)&roster_compare_jid_type;
   241     comp = (GCompareFunc)&roster_compare_jid_type;
   235   } else if (type == namesearch) {
   242   } else if (type == namesearch) {
   236     sample.name = (gchar*)jidname;
   243     sample.name = (gchar*)jidname;
   237     comp = (GCompareFunc)&roster_compare_name;
   244     comp = (GCompareFunc)&roster_compare_name_type;
   238   } else
   245   } else
   239     return NULL;    // should not happen
   246     return NULL;    // should not happen
   240 
   247 
   241   while (sl_roster_elt) {
   248   while (sl_roster_elt) {
   242     roster *roster_elt = (roster*)sl_roster_elt->data;
   249     roster *roster_elt = (roster*)sl_roster_elt->data;