return rec.list;
}
+#if GLIB_MAJOR_VERSION < 2
+/* glib1 doesn't have g_slist_sort_with_data, so non-standard prefixes won't be sorted correctly */
+int nicklist_compare_glib1(NICK_REC *p1, NICK_REC *p2)
+{
+ return nicklist_compare(p1, p2, NULL);
+}
+#endif
+
/* nick record comparision for sort functions */
-int nicklist_compare(NICK_REC *p1, NICK_REC *p2)
+int nicklist_compare(NICK_REC *p1, NICK_REC *p2, const char *nick_prefix)
{
int status1, status2;
* returns :-)
* -- yath */
- if (p1->op)
+ if (p1->other) {
+ const char *other = (nick_prefix == NULL) ? NULL : strchr(nick_prefix, p1->other);
+ status1 = (other == NULL) ? 5 : 1000 - (other - nick_prefix);
+ } else if (p1->op)
status1 = 4;
else if (p1->halfop)
status1 = 3;
else
status1 = 1;
- if (p2->op)
+ if (p2->other) {
+ const char *other = (nick_prefix == NULL) ? NULL : strchr(nick_prefix, p2->other);
+ status2 = (other == NULL) ? 5 : 1000 - (other - nick_prefix);
+ } else if (p2->op)
status2 = 4;
else if (p2->halfop)
status2 = 3;