X-Git-Url: http://git.silcnet.org/gitweb/?a=blobdiff_plain;f=apps%2Firssi%2Fsrc%2Fcore%2Fnicklist.c;h=4f322bf55a5dd225030d3a473b0b0f3a1e75a2ef;hb=63ca577177f9f5db8e553372a9793b0c85f10715;hp=7b97cb8ef67ebdf25c45ab0cc9767a45b8390418;hpb=60c165f23f8d5553bd8b4fd43366fbf5f24c2832;p=silc.git diff --git a/apps/irssi/src/core/nicklist.c b/apps/irssi/src/core/nicklist.c index 7b97cb8e..4f322bf5 100644 --- a/apps/irssi/src/core/nicklist.c +++ b/apps/irssi/src/core/nicklist.c @@ -356,8 +356,16 @@ GSList *nicklist_get_same_unique(SERVER_REC *server, void *id) 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; @@ -369,7 +377,10 @@ int nicklist_compare(NICK_REC *p1, NICK_REC *p2) * 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; @@ -378,7 +389,10 @@ int nicklist_compare(NICK_REC *p1, NICK_REC *p2) 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;